{"version":3,"file":"ngx-global-phone-input.mjs","sources":["../../../projects/global-phone-input/src/lib/countries-data.ts","../../../projects/global-phone-input/src/lib/global-phone-input.service.ts","../../../projects/global-phone-input/src/lib/global-phone-input.component.ts","../../../projects/global-phone-input/src/lib/global-phone-input.component.html","../../../projects/global-phone-input/src/public-api.ts","../../../projects/global-phone-input/src/ngx-global-phone-input.ts"],"sourcesContent":["    /** Interface for country data - simplified for use with Google libphonenumber */\r\nexport interface Country {\r\n    /** Country name in English */\r\n    name: string;\r\n    /** ISO 3166-1 alpha-2 country code */\r\n    code: string;\r\n    /** International dialing code */\r\n    dialCode: string;\r\n    /** Unicode flag emoji */\r\n    flag: string;\r\n    /** Path to flag image */\r\n    flagImage?: string;\r\n    /** Country name in native language */\r\n    nativeName: string;\r\n}\r\n    /** Comprehensive list of all countries with their telephone data */\r\nexport const COUNTRIES_DATA: Country[] = [\r\n    {\r\n        name: 'United States',\r\n        code: 'US',\r\n        dialCode: '+1',\r\n        flag: '🇺🇸',\r\n        flagImage: 'assets/images/flags/us.png',\r\n        nativeName: 'United States'\r\n    },\r\n    {\r\n        name: 'United Kingdom',\r\n        code: 'GB',\r\n        dialCode: '+44',\r\n        flag: '🇬🇧',\r\n        flagImage: 'assets/images/flags/gb.png',\r\n        nativeName: '+44'\r\n    },\r\n    // A\r\n    {\r\n        name: 'Afghanistan',\r\n        code: 'AF',\r\n        dialCode: '+93',\r\n        flag: '🇦🇫',\r\n        flagImage: 'assets/images/flags/af.png',\r\n        nativeName: 'افغانستان'\r\n    },\r\n    {\r\n        name: 'Albania',\r\n        code: 'AL',\r\n        dialCode: '+355',\r\n        flag: '🇦🇱',\r\n        flagImage: 'assets/images/flags/al.png',\r\n        nativeName: '+355'\r\n    },\r\n    {\r\n        name: 'Algeria',\r\n        code: 'DZ',\r\n        dialCode: '+213',\r\n        flag: '🇩🇿',\r\n        flagImage: 'assets/images/flags/dz.png',\r\n        nativeName: '+213'\r\n    },\r\n    {\r\n        name: 'American Samoa',\r\n        code: 'AS',\r\n        dialCode: '+1684',\r\n        flag: '🇦🇸',\r\n        flagImage: 'assets/images/flags/as.png',\r\n        nativeName: '+1684'\r\n    },\r\n    {\r\n        name: 'Andorra',\r\n        code: 'AD',\r\n        dialCode: '+376',\r\n        flag: '🇦🇩',\r\n        flagImage: 'assets/images/flags/ad.png',\r\n        nativeName: '+376'\r\n    },\r\n    {\r\n        name: 'Angola',\r\n        code: 'AO',\r\n        dialCode: '+244',\r\n        flag: '🇦🇴',\r\n        flagImage: 'assets/images/flags/ao.png',\r\n        nativeName: '+244'\r\n    },\r\n    {\r\n        name: 'Anguilla',\r\n        code: 'AI',\r\n        dialCode: '+1264',\r\n        flag: '🇦🇮',\r\n        flagImage: 'assets/images/flags/ai.png',\r\n        nativeName: '+1264'\r\n    },\r\n    {\r\n        name: 'Antigua and Barbuda',\r\n        code: 'AG',\r\n        dialCode: '+1268',\r\n        flag: '🇦🇬',\r\n        flagImage: 'assets/images/flags/ag.png',\r\n        nativeName: '+1268'\r\n    },\r\n    {\r\n        name: 'Argentina',\r\n        code: 'AR',\r\n        dialCode: '+54',\r\n        flag: '🇦🇷',\r\n        flagImage: 'assets/images/flags/ar.png',\r\n        nativeName: '+54'\r\n    },\r\n    {\r\n        name: 'Armenia',\r\n        code: 'AM',\r\n        dialCode: '+374',\r\n        flag: '🇦🇲',\r\n        flagImage: 'assets/images/flags/am.png',\r\n        nativeName: '+374'\r\n    },\r\n    {\r\n        name: 'Aruba',\r\n        code: 'AW',\r\n        dialCode: '+297',\r\n        flag: '🇦🇼',\r\n        flagImage: 'assets/images/flags/aw.png',\r\n        nativeName: '+297'\r\n    },\r\n    {\r\n        name: 'Australia',\r\n        code: 'AU',\r\n        dialCode: '+61',\r\n        flag: '🇦🇺',\r\n        flagImage: 'assets/images/flags/au.png',\r\n        nativeName: '+61'\r\n    },\r\n    {\r\n        name: 'Austria',\r\n        code: 'AT',\r\n        dialCode: '+43',\r\n        flag: '🇦🇹',\r\n        flagImage: 'assets/images/flags/at.png',\r\n        nativeName: '+43'\r\n    },\r\n    {\r\n        name: 'Azerbaijan',\r\n        code: 'AZ',\r\n        dialCode: '+994',\r\n        flag: '🇦🇿',\r\n        flagImage: 'assets/images/flags/az.png',\r\n        nativeName: '+994'\r\n    },\r\n    // B\r\n    {\r\n        name: 'Bahamas',\r\n        code: 'BS',\r\n        dialCode: '+1242',\r\n        flag: '🇧🇸',\r\n        flagImage: 'assets/images/flags/bs.png',\r\n        nativeName: '+1242'\r\n    },\r\n    {\r\n        name: 'Bahrain',\r\n        code: 'BH',\r\n        dialCode: '+973',\r\n        flag: '🇧🇭',\r\n        flagImage: 'assets/images/flags/bh.png',\r\n        nativeName: '+973'\r\n    },\r\n    {\r\n        name: 'Bangladesh',\r\n        code: 'BD',\r\n        dialCode: '+880',\r\n        flag: '🇧🇩',\r\n        flagImage: 'assets/images/flags/bd.png',\r\n        nativeName: '+880'\r\n    },\r\n    {\r\n        name: 'Barbados',\r\n        code: 'BB',\r\n        dialCode: '+1246',\r\n        flag: '🇧🇧',\r\n        flagImage: 'assets/images/flags/bb.png',\r\n        nativeName: '+1246'\r\n    },\r\n    {\r\n        name: 'Belarus',\r\n        code: 'BY',\r\n        dialCode: '+375',\r\n        flag: '🇧🇾',\r\n        flagImage: 'assets/images/flags/by.png',\r\n        nativeName: '+375'\r\n    },\r\n    {\r\n        name: 'Belgium',\r\n        code: 'BE',\r\n        dialCode: '+32',\r\n        flag: '🇧🇪',\r\n        flagImage: 'assets/images/flags/be.png',\r\n        nativeName: '+32'\r\n    },\r\n    {\r\n        name: 'Belize',\r\n        code: 'BZ',\r\n        dialCode: '+501',\r\n        flag: '🇧🇿',\r\n        flagImage: 'assets/images/flags/bz.png',\r\n        nativeName: '+501'\r\n    },\r\n    {\r\n        name: 'Benin',\r\n        code: 'BJ',\r\n        dialCode: '+229',\r\n        flag: '🇧🇯',\r\n        flagImage: 'assets/images/flags/bj.png',\r\n        nativeName: '+229'\r\n    },\r\n    {\r\n        name: 'Bermuda',\r\n        code: 'BM',\r\n        dialCode: '+1441',\r\n        flag: '🇧🇲',\r\n        flagImage: 'assets/images/flags/bm.png',\r\n        nativeName: '+1441'\r\n    },\r\n    {\r\n        name: 'Bhutan',\r\n        code: 'BT',\r\n        dialCode: '+975',\r\n        flag: '🇧🇹',\r\n        flagImage: 'assets/images/flags/bt.png',\r\n        nativeName: '+975'\r\n    },\r\n    {\r\n        name: 'Bolivia',\r\n        code: 'BO',\r\n        dialCode: '+591',\r\n        flag: '🇧🇴',\r\n        flagImage: 'assets/images/flags/bo.png',\r\n        nativeName: '+591'\r\n    },\r\n    {\r\n        name: 'Bosnia and Herzegovina',\r\n        code: 'BA',\r\n        dialCode: '+387',\r\n        flag: '🇧🇦',\r\n        flagImage: 'assets/images/flags/ba.png',\r\n        nativeName: '+387'\r\n    },\r\n    {\r\n        name: 'Botswana',\r\n        code: 'BW',\r\n        dialCode: '+267',\r\n        flag: '🇧🇼',\r\n        flagImage: 'assets/images/flags/bw.png',\r\n        nativeName: '+267'\r\n    },\r\n    {\r\n        name: 'Brazil',\r\n        code: 'BR',\r\n        dialCode: '+55',\r\n        flag: '🇧🇷',\r\n        flagImage: 'assets/images/flags/br.png',\r\n        nativeName: '+55'\r\n    },\r\n    {\r\n        name: 'British Virgin Islands',\r\n        code: 'VG',\r\n        dialCode: '+1284',\r\n        flag: '🇻🇬',\r\n        flagImage: 'assets/images/flags/vg.png',\r\n        nativeName: 'British Virgin Islands'\r\n    },\r\n    {\r\n        name: 'Brunei',\r\n        code: 'BN',\r\n        dialCode: '+673',\r\n        flag: '🇧🇳',\r\n        flagImage: 'assets/images/flags/bn.png',\r\n        nativeName: '+673'\r\n    },\r\n    {\r\n        name: 'Bulgaria',\r\n        code: 'BG',\r\n        dialCode: '+359',\r\n        flag: '🇧🇬',\r\n        flagImage: 'assets/images/flags/bg.png',\r\n        nativeName: '+359'\r\n    },\r\n    {\r\n        name: 'Burkina Faso',\r\n        code: 'BF',\r\n        dialCode: '+226',\r\n        flag: '🇧🇫',\r\n        flagImage: 'assets/images/flags/bf.png',\r\n        nativeName: '+226'\r\n    },\r\n    {\r\n        name: 'Burundi',\r\n        code: 'BI',\r\n        dialCode: '+257',\r\n        flag: '🇧🇮',\r\n        flagImage: 'assets/images/flags/bi.png',\r\n        nativeName: '+257'\r\n    },\r\n    // C\r\n    {\r\n        name: 'Cambodia',\r\n        code: 'KH',\r\n        dialCode: '+855',\r\n        flag: '🇰🇭',\r\n        flagImage: 'assets/images/flags/kh.png',\r\n        nativeName: '+855'\r\n    },\r\n    {\r\n        name: 'Cameroon',\r\n        code: 'CM',\r\n        dialCode: '+237',\r\n        flag: '🇨🇲',\r\n        flagImage: 'assets/images/flags/cm.png',\r\n        nativeName: '+237'\r\n    },\r\n    {\r\n        name: 'Canada',\r\n        code: 'CA',\r\n        dialCode: '+1',\r\n        flag: '🇨🇦',\r\n        flagImage: 'assets/images/flags/ca.png',\r\n        nativeName: 'Canada'\r\n    },\r\n    {\r\n        name: 'Cape Verde',\r\n        code: 'CV',\r\n        dialCode: '+238',\r\n        flag: '🇨🇻',\r\n        flagImage: 'assets/images/flags/cv.png',\r\n        nativeName: '+238'\r\n    },\r\n    {\r\n        name: 'Cayman Islands',\r\n        code: 'KY',\r\n        dialCode: '+1345',\r\n        flag: '🇰🇾',\r\n        flagImage: 'assets/images/flags/ky.png',\r\n        nativeName: '+1345'\r\n    },\r\n    {\r\n        name: 'Central African Republic',\r\n        code: 'CF',\r\n        dialCode: '+236',\r\n        flag: '🇨🇫',\r\n        flagImage: 'assets/images/flags/cf.png',\r\n        nativeName: '+236'\r\n    },\r\n    {\r\n        name: 'Chad',\r\n        code: 'TD',\r\n        dialCode: '+235',\r\n        flag: '🇹🇩',\r\n        flagImage: 'assets/images/flags/td.png',\r\n        nativeName: '+235'\r\n    },\r\n    {\r\n        name: 'Chile',\r\n        code: 'CL',\r\n        dialCode: '+56',\r\n        flag: '🇨🇱',\r\n        flagImage: 'assets/images/flags/cl.png',\r\n        nativeName: '+56'\r\n    },\r\n    {\r\n        name: 'China',\r\n        code: 'CN',\r\n        dialCode: '+86',\r\n        flag: '🇨🇳',\r\n        flagImage: 'assets/images/flags/cn.png',\r\n        nativeName: '+86'\r\n    },\r\n    {\r\n        name: 'Colombia',\r\n        code: 'CO',\r\n        dialCode: '+57',\r\n        flag: '🇨🇴',\r\n        flagImage: 'assets/images/flags/co.png',\r\n        nativeName: '+57'\r\n    },\r\n    {\r\n        name: 'Comoros',\r\n        code: 'KM',\r\n        dialCode: '+269',\r\n        flag: '🇰🇲',\r\n        flagImage: 'assets/images/flags/km.png',\r\n        nativeName: '+269'\r\n    },\r\n    {\r\n        name: 'Congo',\r\n        code: 'CG',\r\n        dialCode: '+242',\r\n        flag: '🇨🇬',\r\n        flagImage: 'assets/images/flags/cg.png',\r\n        nativeName: '+242'\r\n    },\r\n    {\r\n        name: 'Democratic Republic of the Congo',\r\n        code: 'CD',\r\n        dialCode: '+243',\r\n        flag: '🇨🇩',\r\n        flagImage: 'assets/images/flags/cd.png',\r\n        nativeName: '+243'\r\n    },\r\n    {\r\n        name: 'Cook Islands',\r\n        code: 'CK',\r\n        dialCode: '+682',\r\n        flag: '🇨🇰',\r\n        flagImage: 'assets/images/flags/ck.png',\r\n        nativeName: '+682'\r\n    },\r\n    {\r\n        name: 'Costa Rica',\r\n        code: 'CR',\r\n        dialCode: '+506',\r\n        flag: '🇨🇷',\r\n        flagImage: 'assets/images/flags/cr.png',\r\n        nativeName: '+506'\r\n    },\r\n    {\r\n        name: 'Croatia',\r\n        code: 'HR',\r\n        dialCode: '+385',\r\n        flag: '🇭🇷',\r\n        flagImage: 'assets/images/flags/hr.png',\r\n        nativeName: '+385'\r\n    },\r\n    {\r\n        name: 'Cuba',\r\n        code: 'CU',\r\n        dialCode: '+53',\r\n        flag: '🇨🇺',\r\n        flagImage: 'assets/images/flags/cu.png',\r\n        nativeName: '+53'\r\n    },\r\n    {\r\n        name: 'Cyprus',\r\n        code: 'CY',\r\n        dialCode: '+357',\r\n        flag: '🇨🇾',\r\n        flagImage: 'assets/images/flags/cy.png',\r\n        nativeName: '+357'\r\n    },\r\n    {\r\n        name: 'Czech Republic',\r\n        code: 'CZ',\r\n        dialCode: '+420',\r\n        flag: '🇨🇿',\r\n        flagImage: 'assets/images/flags/cz.png',\r\n        nativeName: '+420'\r\n    },\r\n    // D\r\n    {\r\n        name: 'Denmark',\r\n        code: 'DK',\r\n        dialCode: '+45',\r\n        flag: '🇩🇰',\r\n        flagImage: 'assets/images/flags/dk.png',\r\n        nativeName: '+45'\r\n    },\r\n    {\r\n        name: 'Djibouti',\r\n        code: 'DJ',\r\n        dialCode: '+253',\r\n        flag: '🇩🇯',\r\n        flagImage: 'assets/images/flags/dj.png',\r\n        nativeName: '+253'\r\n    },\r\n    {\r\n        name: 'Dominica',\r\n        code: 'DM',\r\n        dialCode: '+1767',\r\n        flag: '🇩🇲',\r\n        flagImage: 'assets/images/flags/dm.png',\r\n        nativeName: '+1767'\r\n    },\r\n    {\r\n        name: 'Dominican Republic',\r\n        code: 'DO',\r\n        dialCode: '+1809',\r\n        flag: '🇩🇴',\r\n        flagImage: 'assets/images/flags/do.png',\r\n        nativeName: '+1'\r\n    },\r\n    // E\r\n    {\r\n        name: 'Ecuador',\r\n        code: 'EC',\r\n        dialCode: '+593',\r\n        flag: '🇪🇨',\r\n        flagImage: 'assets/images/flags/ec.png',\r\n        nativeName: '+593'\r\n    },\r\n    {\r\n        name: 'Egypt',\r\n        code: 'EG',\r\n        dialCode: '+20',\r\n        flag: '🇪🇬',\r\n        flagImage: 'assets/images/flags/eg.png',\r\n        nativeName: '+20'\r\n    },\r\n    {\r\n        name: 'El Salvador',\r\n        code: 'SV',\r\n        dialCode: '+503',\r\n        flag: '🇸🇻',\r\n        flagImage: 'assets/images/flags/sv.png',\r\n        nativeName: '+503'\r\n    },\r\n    {\r\n        name: 'Equatorial Guinea',\r\n        code: 'GQ',\r\n        dialCode: '+240',\r\n        flag: '🇬🇶',\r\n        flagImage: 'assets/images/flags/gq.png',\r\n        nativeName: '+240'\r\n    },\r\n    {\r\n        name: 'Eritrea',\r\n        code: 'ER',\r\n        dialCode: '+291',\r\n        flag: '🇪🇷',\r\n        flagImage: 'assets/images/flags/er.png',\r\n        nativeName: '+291'\r\n    },\r\n    {\r\n        name: 'Estonia',\r\n        code: 'EE',\r\n        dialCode: '+372',\r\n        flag: '🇪🇪',\r\n        flagImage: 'assets/images/flags/ee.png',\r\n        nativeName: '+372'\r\n    },\r\n    {\r\n        name: 'Ethiopia',\r\n        code: 'ET',\r\n        dialCode: '+251',\r\n        flag: '🇪🇹',\r\n        flagImage: 'assets/images/flags/et.png',\r\n        nativeName: '+251'\r\n    },\r\n    // F\r\n    {\r\n        name: 'Falkland Islands',\r\n        code: 'FK',\r\n        dialCode: '+500',\r\n        flag: '🇫🇰',\r\n        flagImage: 'assets/images/flags/fk.png',\r\n        nativeName: 'Falkland Islands'\r\n    },\r\n    {\r\n        name: 'Faroe Islands',\r\n        code: 'FO',\r\n        dialCode: '+298',\r\n        flag: '🇫🇴',\r\n        flagImage: 'assets/images/flags/fo.png',\r\n        nativeName: '+298'\r\n    },\r\n    {\r\n        name: 'Fiji',\r\n        code: 'FJ',\r\n        dialCode: '+679',\r\n        flag: '🇫🇯',\r\n        flagImage: 'assets/images/flags/fj.png',\r\n        nativeName: '+679'\r\n    },\r\n    {\r\n        name: 'Finland',\r\n        code: 'FI',\r\n        dialCode: '+358',\r\n        flag: '🇫🇮',\r\n        flagImage: 'assets/images/flags/fi.png',\r\n        nativeName: '+358'\r\n    },\r\n    {\r\n        name: 'France',\r\n        code: 'FR',\r\n        dialCode: '+33',\r\n        flag: '🇫🇷',\r\n        flagImage: 'assets/images/flags/fr.png',\r\n        nativeName: '+33'\r\n    },\r\n    {\r\n        name: 'French Guiana',\r\n        code: 'GF',\r\n        dialCode: '+594',\r\n        flag: '🇬🇫',\r\n        flagImage: 'assets/images/flags/gf.png',\r\n        nativeName: '+594'\r\n    },\r\n    {\r\n        name: 'French Polynesia',\r\n        code: 'PF',\r\n        dialCode: '+689',\r\n        flag: '🇵🇫',\r\n        flagImage: 'assets/images/flags/pf.png',\r\n        nativeName: '+689'\r\n    },\r\n    // G\r\n    {\r\n        name: 'Gabon',\r\n        code: 'GA',\r\n        dialCode: '+241',\r\n        flag: '🇬🇦',\r\n        flagImage: 'assets/images/flags/ga.png',\r\n        nativeName: '+241'\r\n    },\r\n    {\r\n        name: 'Gambia',\r\n        code: 'GM',\r\n        dialCode: '+220',\r\n        flag: '🇬🇲',\r\n        flagImage: 'assets/images/flags/gm.png',\r\n        nativeName: '+220'\r\n    },\r\n    {\r\n        name: 'Georgia',\r\n        code: 'GE',\r\n        dialCode: '+995',\r\n        flag: '🇬🇪',\r\n        flagImage: 'assets/images/flags/ge.png',\r\n        nativeName: '+995'\r\n    },\r\n    {\r\n        name: 'Germany',\r\n        code: 'DE',\r\n        dialCode: '+49',\r\n        flag: '🇩🇪',\r\n        flagImage: 'assets/images/flags/de.png',\r\n        nativeName: '+49'\r\n    },\r\n    {\r\n        name: 'Ghana',\r\n        code: 'GH',\r\n        dialCode: '+233',\r\n        flag: '🇬🇭',\r\n        flagImage: 'assets/images/flags/gh.png',\r\n        nativeName: '+233'\r\n    },\r\n    {\r\n        name: 'Gibraltar',\r\n        code: 'GI',\r\n        dialCode: '+350',\r\n        flag: '🇬🇮',\r\n        flagImage: 'assets/images/flags/gi.png',\r\n        nativeName: '+350'\r\n    },\r\n    {\r\n        name: 'Greece',\r\n        code: 'GR',\r\n        dialCode: '+30',\r\n        flag: '🇬🇷',\r\n        flagImage: 'assets/images/flags/gr.png',\r\n        nativeName: '+30'\r\n    },\r\n    {\r\n        name: 'Greenland',\r\n        code: 'GL',\r\n        dialCode: '+299',\r\n        flag: '🇬🇱',\r\n        flagImage: 'assets/images/flags/gl.png',\r\n        nativeName: '+299'\r\n    },\r\n    {\r\n        name: 'Grenada',\r\n        code: 'GD',\r\n        dialCode: '+1473',\r\n        flag: '🇬🇩',\r\n        flagImage: 'assets/images/flags/gd.png',\r\n        nativeName: '+1473'\r\n    },\r\n    {\r\n        name: 'Guadeloupe',\r\n        code: 'GP',\r\n        dialCode: '+590',\r\n        flag: '🇬🇵',\r\n        flagImage: 'assets/images/flags/gp.png',\r\n        nativeName: '+590'\r\n    },\r\n    {\r\n        name: 'Guam',\r\n        code: 'GU',\r\n        dialCode: '+1671',\r\n        flag: '🇬🇺',\r\n        flagImage: 'assets/images/flags/gu.png',\r\n        nativeName: 'Guam'\r\n    },\r\n    {\r\n        name: 'Guatemala',\r\n        code: 'GT',\r\n        dialCode: '+502',\r\n        flag: '🇬🇹',\r\n        flagImage: 'assets/images/flags/gt.png',\r\n        nativeName: '+502'\r\n    },\r\n    {\r\n        name: 'Guernsey',\r\n        code: 'GG',\r\n        dialCode: '+44',\r\n        flag: '🇬🇬',\r\n        flagImage: 'assets/images/flags/gg.png',\r\n        nativeName: '+44'\r\n    },\r\n    {\r\n        name: 'Guinea',\r\n        code: 'GN',\r\n        dialCode: '+224',\r\n        flag: '🇬🇳',\r\n        flagImage: 'assets/images/flags/gn.png',\r\n        nativeName: '+224'\r\n    },\r\n    {\r\n        name: 'Guinea-Bissau',\r\n        code: 'GW',\r\n        dialCode: '+245',\r\n        flag: '🇬🇼',\r\n        flagImage: 'assets/images/flags/gw.png',\r\n        nativeName: '+245'\r\n    },\r\n    {\r\n        name: 'Guyana',\r\n        code: 'GY',\r\n        dialCode: '+592',\r\n        flag: '🇬🇾',\r\n        flagImage: 'assets/images/flags/gy.png',\r\n        nativeName: '+592'\r\n    },\r\n    // H\r\n    {\r\n        name: 'Haiti',\r\n        code: 'HT',\r\n        dialCode: '+509',\r\n        flag: '🇭🇹',\r\n        flagImage: 'assets/images/flags/ht.png',\r\n        nativeName: '+509'\r\n    },\r\n    {\r\n        name: 'Honduras',\r\n        code: 'HN',\r\n        dialCode: '+504',\r\n        flag: '🇭🇳',\r\n        flagImage: 'assets/images/flags/hn.png',\r\n        nativeName: '+504'\r\n    },\r\n    {\r\n        name: 'Hong Kong',\r\n        code: 'HK',\r\n        dialCode: '+852',\r\n        flag: '🇭🇰',\r\n        flagImage: 'assets/images/flags/hk.png',\r\n        nativeName: '+852'\r\n    },\r\n    {\r\n        name: 'Hungary',\r\n        code: 'HU',\r\n        dialCode: '+36',\r\n        flag: '🇭🇺',\r\n        flagImage: 'assets/images/flags/hu.png',\r\n        nativeName: '+36'\r\n    },\r\n    // I\r\n    {\r\n        name: 'Iceland',\r\n        code: 'IS',\r\n        dialCode: '+354',\r\n        flag: '🇮🇸',\r\n        flagImage: 'assets/images/flags/is.png',\r\n        nativeName: '+354'\r\n    },\r\n    {\r\n        name: 'India',\r\n        code: 'IN',\r\n        dialCode: '+91',\r\n        flag: '🇮🇳',\r\n        flagImage: 'assets/images/flags/in.png',\r\n        nativeName: 'भारत'\r\n    },\r\n    {\r\n        name: 'Indonesia',\r\n        code: 'ID',\r\n        dialCode: '+62',\r\n        flag: '🇮🇩',\r\n        flagImage: 'assets/images/flags/id.png',\r\n        nativeName: '+62'\r\n    },\r\n    {\r\n        name: 'Iran',\r\n        code: 'IR',\r\n        dialCode: '+98',\r\n        flag: '🇮🇷',\r\n        flagImage: 'assets/images/flags/ir.png',\r\n        nativeName: '+98'\r\n    },\r\n    {\r\n        name: 'Iraq',\r\n        code: 'IQ',\r\n        dialCode: '+964',\r\n        flag: '🇮🇶',\r\n        flagImage: 'assets/images/flags/iq.png',\r\n        nativeName: '+964'\r\n    },\r\n    {\r\n        name: 'Ireland',\r\n        code: 'IE',\r\n        dialCode: '+353',\r\n        flag: '🇮🇪',\r\n        flagImage: 'assets/images/flags/ie.png',\r\n        nativeName: '+353'\r\n    },\r\n    {\r\n        name: 'Isle of Man',\r\n        code: 'IM',\r\n        dialCode: '+44',\r\n        flag: '🇮🇲',\r\n        flagImage: 'assets/images/flags/im.png',\r\n        nativeName: '+44'\r\n    },\r\n    {\r\n        name: 'Israel',\r\n        code: 'IL',\r\n        dialCode: '+972',\r\n        flag: '🇮🇱',\r\n        flagImage: 'assets/images/flags/il.png',\r\n        nativeName: '+972'\r\n    },\r\n    {\r\n        name: 'Italy',\r\n        code: 'IT',\r\n        dialCode: '+39',\r\n        flag: '🇮🇹',\r\n        flagImage: 'assets/images/flags/it.png',\r\n        nativeName: '+39'\r\n    },\r\n    {\r\n        name: 'Ivory Coast',\r\n        code: 'CI',\r\n        dialCode: '+225',\r\n        flag: '🇨🇮',\r\n        flagImage: 'assets/images/flags/ci.png',\r\n        nativeName: 'Côte d\\'Ivoire'\r\n    },\r\n    // J\r\n    {\r\n        name: 'Jamaica',\r\n        code: 'JM',\r\n        dialCode: '+1876',\r\n        flag: '🇯🇲',\r\n        flagImage: 'assets/images/flags/jm.png',\r\n        nativeName: '+1876'\r\n    },\r\n    {\r\n        name: 'Japan',\r\n        code: 'JP',\r\n        dialCode: '+81',\r\n        flag: '🇯🇵',\r\n        flagImage: 'assets/images/flags/jp.png',\r\n        nativeName: '+81'\r\n    },\r\n    {\r\n        name: 'Jersey',\r\n        code: 'JE',\r\n        dialCode: '+44',\r\n        flag: '🇯🇪',\r\n        flagImage: 'assets/images/flags/je.png',\r\n        nativeName: '+44'\r\n    },\r\n    {\r\n        name: 'Jordan',\r\n        code: 'JO',\r\n        dialCode: '+962',\r\n        flag: '🇯🇴',\r\n        flagImage: 'assets/images/flags/jo.png',\r\n        nativeName: '+962'\r\n    },\r\n    // K\r\n    {\r\n        name: 'Kazakhstan',\r\n        code: 'KZ',\r\n        dialCode: '+7',\r\n        flag: '🇰🇿',\r\n        flagImage: 'assets/images/flags/kz.png',\r\n        nativeName: '+7'\r\n    },\r\n    {\r\n        name: 'Kenya',\r\n        code: 'KE',\r\n        dialCode: '+254',\r\n        flag: '🇰🇪',\r\n        flagImage: 'assets/images/flags/ke.png',\r\n        nativeName: '+254'\r\n    },\r\n    {\r\n        name: 'Kiribati',\r\n        code: 'KI',\r\n        dialCode: '+686',\r\n        flag: '🇰🇮',\r\n        flagImage: 'assets/images/flags/ki.png',\r\n        nativeName: '+686'\r\n    },\r\n    {\r\n        name: 'Kosovo',\r\n        code: 'XK',\r\n        dialCode: '+383',\r\n        flag: '🇽🇰',\r\n        flagImage: '', // No flag image available for Kosovo (XK)\r\n        nativeName: '+383'\r\n    },\r\n    {\r\n        name: 'Kuwait',\r\n        code: 'KW',\r\n        dialCode: '+965',\r\n        flag: '🇰🇼',\r\n        flagImage: 'assets/images/flags/kw.png',\r\n        nativeName: '+965'\r\n    },\r\n    {\r\n        name: 'Kyrgyzstan',\r\n        code: 'KG',\r\n        dialCode: '+996',\r\n        flag: '🇰🇬',\r\n        flagImage: 'assets/images/flags/kg.png',\r\n        nativeName: '+996'\r\n    },\r\n    // L\r\n    {\r\n        name: 'Laos',\r\n        code: 'LA',\r\n        dialCode: '+856',\r\n        flag: '🇱🇦',\r\n        flagImage: 'assets/images/flags/la.png',\r\n        nativeName: '+856'\r\n    },\r\n    {\r\n        name: 'Latvia',\r\n        code: 'LV',\r\n        dialCode: '+371',\r\n        flag: '🇱🇻',\r\n        flagImage: 'assets/images/flags/lv.png',\r\n        nativeName: '+371'\r\n    },\r\n    {\r\n        name: 'Lebanon',\r\n        code: 'LB',\r\n        dialCode: '+961',\r\n        flag: '🇱🇧',\r\n        flagImage: 'assets/images/flags/lb.png',\r\n        nativeName: '+961'\r\n    },\r\n    {\r\n        name: 'Lesotho',\r\n        code: 'LS',\r\n        dialCode: '+266',\r\n        flag: '🇱🇸',\r\n        flagImage: 'assets/images/flags/ls.png',\r\n        nativeName: '+266'\r\n    },\r\n    {\r\n        name: 'Liberia',\r\n        code: 'LR',\r\n        dialCode: '+231',\r\n        flag: '🇱🇷',\r\n        flagImage: 'assets/images/flags/lr.png',\r\n        nativeName: '+231'\r\n    },\r\n    {\r\n        name: 'Libya',\r\n        code: 'LY',\r\n        dialCode: '+218',\r\n        flag: '🇱🇾',\r\n        flagImage: 'assets/images/flags/ly.png',\r\n        nativeName: '+218'\r\n    },\r\n    {\r\n        name: 'Liechtenstein',\r\n        code: 'LI',\r\n        dialCode: '+423',\r\n        flag: '🇱🇮',\r\n        flagImage: 'assets/images/flags/li.png',\r\n        nativeName: '+423'\r\n    },\r\n    {\r\n        name: 'Lithuania',\r\n        code: 'LT',\r\n        dialCode: '+370',\r\n        flag: '🇱🇹',\r\n        flagImage: 'assets/images/flags/lt.png',\r\n        nativeName: '+370'\r\n    },\r\n    {\r\n        name: 'Luxembourg',\r\n        code: 'LU',\r\n        dialCode: '+352',\r\n        flag: '🇱🇺',\r\n        flagImage: 'assets/images/flags/lu.png',\r\n        nativeName: '+352'\r\n    },\r\n    // M\r\n    {\r\n        name: 'Macau',\r\n        code: 'MO',\r\n        dialCode: '+853',\r\n        flag: '🇲🇴',\r\n        flagImage: 'assets/images/flags/mo.png',\r\n        nativeName: '+853'\r\n    },\r\n    {\r\n        name: 'Madagascar',\r\n        code: 'MG',\r\n        dialCode: '+261',\r\n        flag: '🇲🇬',\r\n        flagImage: 'assets/images/flags/mg.png',\r\n        nativeName: '+261'\r\n    },\r\n    {\r\n        name: 'Malawi',\r\n        code: 'MW',\r\n        dialCode: '+265',\r\n        flag: '🇲🇼',\r\n        flagImage: 'assets/images/flags/mw.png',\r\n        nativeName: '+265'\r\n    },\r\n    {\r\n        name: 'Malaysia',\r\n        code: 'MY',\r\n        dialCode: '+60',\r\n        flag: '🇲🇾',\r\n        flagImage: 'assets/images/flags/my.png',\r\n        nativeName: '+60'\r\n    },\r\n    {\r\n        name: 'Maldives',\r\n        code: 'MV',\r\n        dialCode: '+960',\r\n        flag: '🇲🇻',\r\n        flagImage: 'assets/images/flags/mv.png',\r\n        nativeName: '+960'\r\n    },\r\n    {\r\n        name: 'Mali',\r\n        code: 'ML',\r\n        dialCode: '+223',\r\n        flag: '🇲🇱',\r\n        flagImage: 'assets/images/flags/ml.png',\r\n        nativeName: '+223'\r\n    },\r\n    {\r\n        name: 'Malta',\r\n        code: 'MT',\r\n        dialCode: '+356',\r\n        flag: '🇲🇹',\r\n        flagImage: 'assets/images/flags/mt.png',\r\n        nativeName: '+356'\r\n    },\r\n    {\r\n        name: 'Marshall Islands',\r\n        code: 'MH',\r\n        dialCode: '+692',\r\n        flag: '🇲🇭',\r\n        flagImage: 'assets/images/flags/mh.png',\r\n        nativeName: '+692'\r\n    },\r\n    {\r\n        name: 'Martinique',\r\n        code: 'MQ',\r\n        dialCode: '+596',\r\n        flag: '🇲🇶',\r\n        flagImage: 'assets/images/flags/mq.png',\r\n        nativeName: '+596'\r\n    },\r\n    {\r\n        name: 'Mauritania',\r\n        code: 'MR',\r\n        dialCode: '+222',\r\n        flag: '🇲🇷',\r\n        flagImage: 'assets/images/flags/mr.png',\r\n        nativeName: '+222'\r\n    },\r\n    {\r\n        name: 'Mauritius',\r\n        code: 'MU',\r\n        dialCode: '+230',\r\n        flag: '🇲🇺',\r\n        flagImage: 'assets/images/flags/mu.png',\r\n        nativeName: '+230'\r\n    },\r\n    {\r\n        name: 'Mayotte',\r\n        code: 'YT',\r\n        dialCode: '+262',\r\n        flag: '🇾🇹',\r\n        flagImage: 'assets/images/flags/yt.png',\r\n        nativeName: '+262'\r\n    },\r\n    {\r\n        name: 'Mexico',\r\n        code: 'MX',\r\n        dialCode: '+52',\r\n        flag: '🇲🇽',\r\n        flagImage: 'assets/images/flags/mx.png',\r\n        nativeName: '+52'\r\n    },\r\n    {\r\n        name: 'Micronesia',\r\n        code: 'FM',\r\n        dialCode: '+691',\r\n        flag: '🇫🇲',\r\n        flagImage: 'assets/images/flags/fm.png',\r\n        nativeName: '+691'\r\n    },\r\n    {\r\n        name: 'Moldova',\r\n        code: 'MD',\r\n        dialCode: '+373',\r\n        flag: '🇲🇩',\r\n        flagImage: 'assets/images/flags/md.png',\r\n        nativeName: '+373'\r\n    },\r\n    {\r\n        name: 'Monaco',\r\n        code: 'MC',\r\n        dialCode: '+377',\r\n        flag: '🇲🇨',\r\n        flagImage: 'assets/images/flags/mc.png',\r\n        nativeName: '+377'\r\n    },\r\n    {\r\n        name: 'Mongolia',\r\n        code: 'MN',\r\n        dialCode: '+976',\r\n        flag: '🇲🇳',\r\n        flagImage: 'assets/images/flags/mn.png',\r\n        nativeName: '+976'\r\n    },\r\n    {\r\n        name: 'Montenegro',\r\n        code: 'ME',\r\n        dialCode: '+382',\r\n        flag: '🇲🇪',\r\n        flagImage: 'assets/images/flags/me.png',\r\n        nativeName: '+382'\r\n    },\r\n    {\r\n        name: 'Montserrat',\r\n        code: 'MS',\r\n        dialCode: '+1664',\r\n        flag: '🇲🇸',\r\n        flagImage: 'assets/images/flags/ms.png',\r\n        nativeName: '+1664'\r\n    },\r\n    {\r\n        name: 'Morocco',\r\n        code: 'MA',\r\n        dialCode: '+212',\r\n        flag: '🇲🇦',\r\n        flagImage: 'assets/images/flags/ma.png',\r\n        nativeName: '+212'\r\n    },\r\n    {\r\n        name: 'Mozambique',\r\n        code: 'MZ',\r\n        dialCode: '+258',\r\n        flag: '🇲🇿',\r\n        flagImage: 'assets/images/flags/mz.png',\r\n        nativeName: '+258'\r\n    },\r\n    {\r\n        name: 'Myanmar',\r\n        code: 'MM',\r\n        dialCode: '+95',\r\n        flag: '🇲🇲',\r\n        flagImage: 'assets/images/flags/mm.png',\r\n        nativeName: '+95'\r\n    },\r\n    // N\r\n    {\r\n        name: 'Namibia',\r\n        code: 'NA',\r\n        dialCode: '+264',\r\n        flag: '🇳🇦',\r\n        flagImage: 'assets/images/flags/na.png',\r\n        nativeName: '+264'\r\n    },\r\n    {\r\n        name: 'Nauru',\r\n        code: 'NR',\r\n        dialCode: '+674',\r\n        flag: '🇳🇷',\r\n        flagImage: 'assets/images/flags/nr.png',\r\n        nativeName: '+674'\r\n    },\r\n    {\r\n        name: 'Nepal',\r\n        code: 'NP',\r\n        dialCode: '+977',\r\n        flag: '🇳🇵',\r\n        flagImage: 'assets/images/flags/np.png',\r\n        nativeName: '+977'\r\n    },\r\n    {\r\n        name: 'Netherlands',\r\n        code: 'NL',\r\n        dialCode: '+31',\r\n        flag: '🇳🇱',\r\n        flagImage: 'assets/images/flags/nl.png',\r\n        nativeName: '+31'\r\n    },\r\n    {\r\n        name: 'New Caledonia',\r\n        code: 'NC',\r\n        dialCode: '+687',\r\n        flag: '🇳🇨',\r\n        flagImage: 'assets/images/flags/nc.png',\r\n        nativeName: '+687'\r\n    },\r\n    {\r\n        name: 'New Zealand',\r\n        code: 'NZ',\r\n        dialCode: '+64',\r\n        flag: '🇳🇿',\r\n        flagImage: 'assets/images/flags/nz.png',\r\n        nativeName: '+64'\r\n    },\r\n    {\r\n        name: 'Nicaragua',\r\n        code: 'NI',\r\n        dialCode: '+505',\r\n        flag: '🇳🇮',\r\n        flagImage: 'assets/images/flags/ni.png',\r\n        nativeName: '+505'\r\n    },\r\n    {\r\n        name: 'Niger',\r\n        code: 'NE',\r\n        dialCode: '+227',\r\n        flag: '🇳🇪',\r\n        flagImage: 'assets/images/flags/ne.png',\r\n        nativeName: '+227'\r\n    },\r\n    {\r\n        name: 'Nigeria',\r\n        code: 'NG',\r\n        dialCode: '+234',\r\n        flag: '🇳🇬',\r\n        flagImage: 'assets/images/flags/ng.png',\r\n        nativeName: '+234'\r\n    },\r\n    {\r\n        name: 'Niue',\r\n        code: 'NU',\r\n        dialCode: '+683',\r\n        flag: '🇳🇺',\r\n        flagImage: 'assets/images/flags/nu.png',\r\n        nativeName: '+683'\r\n    },\r\n    {\r\n        name: 'Norfolk Island',\r\n        code: 'NF',\r\n        dialCode: '+672',\r\n        flag: '🇳🇫',\r\n        flagImage: 'assets/images/flags/nf.png',\r\n        nativeName: '+672'\r\n    },\r\n    {\r\n        name: 'North Korea',\r\n        code: 'KP',\r\n        dialCode: '+850',\r\n        flag: '🇰🇵',\r\n        flagImage: 'assets/images/flags/kp.png',\r\n        nativeName: '+850'\r\n    },\r\n    {\r\n        name: 'North Macedonia',\r\n        code: 'MK',\r\n        dialCode: '+389',\r\n        flag: '🇲🇰',\r\n        flagImage: 'assets/images/flags/mk.png',\r\n        nativeName: '+389'\r\n    },\r\n    {\r\n        name: 'Northern Mariana Islands',\r\n        code: 'MP',\r\n        dialCode: '+1670',\r\n        flag: '🇲🇵',\r\n        flagImage: 'assets/images/flags/mp.png',\r\n        nativeName: '+1670'\r\n    },\r\n    {\r\n        name: 'Norway',\r\n        code: 'NO',\r\n        dialCode: '+47',\r\n        flag: '🇳🇴',\r\n        flagImage: 'assets/images/flags/no.png',\r\n        nativeName: '+47'\r\n    },\r\n    // O\r\n    {\r\n        name: 'Oman',\r\n        code: 'OM',\r\n        dialCode: '+968',\r\n        flag: '🇴🇲',\r\n        flagImage: 'assets/images/flags/om.png',\r\n        nativeName: '+968'\r\n    },\r\n    // P\r\n    {\r\n        name: 'Pakistan',\r\n        code: 'PK',\r\n        dialCode: '+92',\r\n        flag: '🇵🇰',\r\n        flagImage: 'assets/images/flags/pk.png',\r\n        nativeName: '+92'\r\n    },\r\n    {\r\n        name: 'Palau',\r\n        code: 'PW',\r\n        dialCode: '+680',\r\n        flag: '🇵🇼',\r\n        flagImage: 'assets/images/flags/pw.png',\r\n        nativeName: '+680'\r\n    },\r\n    {\r\n        name: 'Palestine',\r\n        code: 'PS',\r\n        dialCode: '+970',\r\n        flag: '🇵🇸',\r\n        flagImage: 'assets/images/flags/ps.png',\r\n        nativeName: '+970'\r\n    },\r\n    {\r\n        name: 'Panama',\r\n        code: 'PA',\r\n        dialCode: '+507',\r\n        flag: '🇵🇦',\r\n        flagImage: 'assets/images/flags/pa.png',\r\n        nativeName: '+507'\r\n    },\r\n    {\r\n        name: 'Papua New Guinea',\r\n        code: 'PG',\r\n        dialCode: '+675',\r\n        flag: '🇵🇬',\r\n        flagImage: 'assets/images/flags/pg.png',\r\n        nativeName: '+675'\r\n    },\r\n    {\r\n        name: 'Paraguay',\r\n        code: 'PY',\r\n        dialCode: '+595',\r\n        flag: '🇵🇾',\r\n        flagImage: 'assets/images/flags/py.png',\r\n        nativeName: '+595'\r\n    },\r\n    {\r\n        name: 'Peru',\r\n        code: 'PE',\r\n        dialCode: '+51',\r\n        flag: '🇵🇪',\r\n        flagImage: 'assets/images/flags/pe.png',\r\n        nativeName: '+51'\r\n    },\r\n    {\r\n        name: 'Philippines',\r\n        code: 'PH',\r\n        dialCode: '+63',\r\n        flag: '🇵🇭',\r\n        flagImage: 'assets/images/flags/ph.png',\r\n        nativeName: '+63'\r\n    },\r\n    {\r\n        name: 'Pitcairn',\r\n        code: 'PN',\r\n        dialCode: '+64',\r\n        flag: '🇵🇳',\r\n        flagImage: 'assets/images/flags/pn.png',\r\n        nativeName: '+64'\r\n    },\r\n    {\r\n        name: 'Poland',\r\n        code: 'PL',\r\n        dialCode: '+48',\r\n        flag: '🇵🇱',\r\n        flagImage: 'assets/images/flags/pl.png',\r\n        nativeName: '+48'\r\n    },\r\n    {\r\n        name: 'Portugal',\r\n        code: 'PT',\r\n        dialCode: '+351',\r\n        flag: '🇵🇹',\r\n        flagImage: 'assets/images/flags/pt.png',\r\n        nativeName: '+351'\r\n    },\r\n    {\r\n        name: 'Puerto Rico',\r\n        code: 'PR',\r\n        dialCode: '+1',\r\n        flag: '🇵🇷',\r\n        flagImage: 'assets/images/flags/pr.png',\r\n        nativeName: '+1'\r\n    },\r\n    // Q\r\n    {\r\n        name: 'Qatar',\r\n        code: 'QA',\r\n        dialCode: '+974',\r\n        flag: '🇶🇦',\r\n        flagImage: 'assets/images/flags/qa.png',\r\n        nativeName: '+974'\r\n    },\r\n    // R\r\n    {\r\n        name: 'Réunion',\r\n        code: 'RE',\r\n        dialCode: '+262',\r\n        flag: '🇷🇪',\r\n        flagImage: 'assets/images/flags/re.png',\r\n        nativeName: '+262'\r\n    },\r\n    {\r\n        name: 'Romania',\r\n        code: 'RO',\r\n        dialCode: '+40',\r\n        flag: '🇷🇴',\r\n        flagImage: 'assets/images/flags/ro.png',\r\n        nativeName: '+40'\r\n    },\r\n    {\r\n        name: 'Russia',\r\n        code: 'RU',\r\n        dialCode: '+7',\r\n        flag: '🇷🇺',\r\n        flagImage: 'assets/images/flags/ru.png',\r\n        nativeName: '+7'\r\n    },\r\n    {\r\n        name: 'Rwanda',\r\n        code: 'RW',\r\n        dialCode: '+250',\r\n        flag: '🇷🇼',\r\n        flagImage: 'assets/images/flags/rw.png',\r\n        nativeName: '+250'\r\n    },\r\n    // S\r\n    {\r\n        name: 'Saint Helena',\r\n        code: 'SH',\r\n        dialCode: '+290',\r\n        flag: '🇸🇭',\r\n        flagImage: 'assets/images/flags/sh.png',\r\n        nativeName: '+290'\r\n    },\r\n    {\r\n        name: 'Saint Kitts and Nevis',\r\n        code: 'KN',\r\n        dialCode: '+1869',\r\n        flag: '🇰🇳',\r\n        flagImage: 'assets/images/flags/kn.png',\r\n        nativeName: '+1869'\r\n    },\r\n    {\r\n        name: 'Saint Lucia',\r\n        code: 'LC',\r\n        dialCode: '+1758',\r\n        flag: '🇱🇨',\r\n        flagImage: 'assets/images/flags/lc.png',\r\n        nativeName: '+1758'\r\n    },\r\n    {\r\n        name: 'Saint Pierre and Miquelon',\r\n        code: 'PM',\r\n        dialCode: '+508',\r\n        flag: '🇵🇲',\r\n        flagImage: 'assets/images/flags/pm.png',\r\n        nativeName: '+508'\r\n    },\r\n    {\r\n        name: 'Saint Vincent and the Grenadines',\r\n        code: 'VC',\r\n        dialCode: '+1784',\r\n        flag: '🇻🇨',\r\n        flagImage: 'assets/images/flags/vc.png',\r\n        nativeName: '+1784'\r\n    },\r\n    {\r\n        name: 'Samoa',\r\n        code: 'WS',\r\n        dialCode: '+685',\r\n        flag: '🇼🇸',\r\n        flagImage: 'assets/images/flags/ws.png',\r\n        nativeName: '+685'\r\n    },\r\n    {\r\n        name: 'San Marino',\r\n        code: 'SM',\r\n        dialCode: '+378',\r\n        flag: '🇸🇲',\r\n        flagImage: 'assets/images/flags/sm.png',\r\n        nativeName: '+378'\r\n    },\r\n    {\r\n        name: 'São Tomé and Príncipe',\r\n        code: 'ST',\r\n        dialCode: '+239',\r\n        flag: '🇸🇹',\r\n        flagImage: 'assets/images/flags/st.png',\r\n        nativeName: '+239'\r\n    },\r\n    {\r\n        name: 'Saudi Arabia',\r\n        code: 'SA',\r\n        dialCode: '+966',\r\n        flag: '🇸🇦',\r\n        flagImage: 'assets/images/flags/sa.png',\r\n        nativeName: '+966'\r\n    },\r\n    {\r\n        name: 'Senegal',\r\n        code: 'SN',\r\n        dialCode: '+221',\r\n        flag: '🇸🇳',\r\n        flagImage: 'assets/images/flags/sn.png',\r\n        nativeName: '+221'\r\n    },\r\n    {\r\n        name: 'Serbia',\r\n        code: 'RS',\r\n        dialCode: '+381',\r\n        flag: '🇷🇸',\r\n        flagImage: 'assets/images/flags/rs.png',\r\n        nativeName: '+381'\r\n    },\r\n    {\r\n        name: 'Seychelles',\r\n        code: 'SC',\r\n        dialCode: '+248',\r\n        flag: '🇸🇨',\r\n        flagImage: 'assets/images/flags/sc.png',\r\n        nativeName: '+248'\r\n    },\r\n    {\r\n        name: 'Sierra Leone',\r\n        code: 'SL',\r\n        dialCode: '+232',\r\n        flag: '🇸🇱',\r\n        flagImage: 'assets/images/flags/sl.png',\r\n        nativeName: '+232'\r\n    },\r\n    {\r\n        name: 'Singapore',\r\n        code: 'SG',\r\n        dialCode: '+65',\r\n        flag: '🇸🇬',\r\n        flagImage: 'assets/images/flags/sg.png',\r\n        nativeName: '+65'\r\n    },\r\n    {\r\n        name: 'Sint Maarten',\r\n        code: 'SX',\r\n        dialCode: '+1721',\r\n        flag: '🇸🇽',\r\n        flagImage: 'assets/images/flags/sx.png',\r\n        nativeName: '+1721'\r\n    },\r\n    {\r\n        name: 'Slovakia',\r\n        code: 'SK',\r\n        dialCode: '+421',\r\n        flag: '🇸🇰',\r\n        flagImage: 'assets/images/flags/sk.png',\r\n        nativeName: '+421'\r\n    },\r\n    {\r\n        name: 'Slovenia',\r\n        code: 'SI',\r\n        dialCode: '+386',\r\n        flag: '🇸🇮',\r\n        flagImage: 'assets/images/flags/si.png',\r\n        nativeName: '+386'\r\n    },\r\n    {\r\n        name: 'Solomon Islands',\r\n        code: 'SB',\r\n        dialCode: '+677',\r\n        flag: '🇸🇧',\r\n        flagImage: 'assets/images/flags/sb.png',\r\n        nativeName: '+677'\r\n    },\r\n    {\r\n        name: 'Somalia',\r\n        code: 'SO',\r\n        dialCode: '+252',\r\n        flag: '🇸🇴',\r\n        flagImage: 'assets/images/flags/so.png',\r\n        nativeName: '+252'\r\n    },\r\n    {\r\n        name: 'South Africa',\r\n        code: 'ZA',\r\n        dialCode: '+27',\r\n        flag: '🇿🇦',\r\n        flagImage: 'assets/images/flags/za.png',\r\n        nativeName: '+27'\r\n    },\r\n    {\r\n        name: 'South Korea',\r\n        code: 'KR',\r\n        dialCode: '+82',\r\n        flag: '🇰🇷',\r\n        flagImage: 'assets/images/flags/kr.png',\r\n        nativeName: '+82'\r\n    },\r\n    {\r\n        name: 'South Sudan',\r\n        code: 'SS',\r\n        dialCode: '+211',\r\n        flag: '🇸🇸',\r\n        flagImage: 'assets/images/flags/ss.png',\r\n        nativeName: '+211'\r\n    },\r\n    {\r\n        name: 'Spain',\r\n        code: 'ES',\r\n        dialCode: '+34',\r\n        flag: '🇪🇸',\r\n        flagImage: 'assets/images/flags/es.png',\r\n        nativeName: '+34'\r\n    },\r\n    {\r\n        name: 'Sri Lanka',\r\n        code: 'LK',\r\n        dialCode: '+94',\r\n        flag: '🇱🇰',\r\n        flagImage: 'assets/images/flags/lk.png',\r\n        nativeName: '+94'\r\n    },\r\n    {\r\n        name: 'Sudan',\r\n        code: 'SD',\r\n        dialCode: '+249',\r\n        flag: '🇸🇩',\r\n        flagImage: 'assets/images/flags/sd.png',\r\n        nativeName: '+249'\r\n    },\r\n    {\r\n        name: 'Suriname',\r\n        code: 'SR',\r\n        dialCode: '+597',\r\n        flag: '🇸🇷',\r\n        flagImage: 'assets/images/flags/sr.png',\r\n        nativeName: '+597'\r\n    },\r\n    {\r\n        name: 'Svalbard and Jan Mayen',\r\n        code: 'SJ',\r\n        dialCode: '+47',\r\n        flag: '🇸🇯',\r\n        flagImage: 'assets/images/flags/sj.png',\r\n        nativeName: '+47'\r\n    },\r\n    {\r\n        name: 'Swaziland',\r\n        code: 'SZ',\r\n        dialCode: '+268',\r\n        flag: '🇸🇿',\r\n        flagImage: 'assets/images/flags/sz.png',\r\n        nativeName: '+268'\r\n    },\r\n    {\r\n        name: 'Sweden',\r\n        code: 'SE',\r\n        dialCode: '+46',\r\n        flag: '🇸🇪',\r\n        flagImage: 'assets/images/flags/se.png',\r\n        nativeName: '+46'\r\n    },\r\n    {\r\n        name: 'Switzerland',\r\n        code: 'CH',\r\n        dialCode: '+41',\r\n        flag: '🇨🇭',\r\n        flagImage: 'assets/images/flags/ch.png',\r\n        nativeName: '+41'\r\n    },\r\n    {\r\n        name: 'Syria',\r\n        code: 'SY',\r\n        dialCode: '+963',\r\n        flag: '🇸🇾',\r\n        flagImage: 'assets/images/flags/sy.png',\r\n        nativeName: '+963'\r\n    },\r\n    // T\r\n    {\r\n        name: 'Taiwan',\r\n        code: 'TW',\r\n        dialCode: '+886',\r\n        flag: '🇹🇼',\r\n        flagImage: 'assets/images/flags/tw.png',\r\n        nativeName: '+886'\r\n    },\r\n    {\r\n        name: 'Tajikistan',\r\n        code: 'TJ',\r\n        dialCode: '+992',\r\n        flag: '🇹🇯',\r\n        flagImage: 'assets/images/flags/tj.png',\r\n        nativeName: '+992'\r\n    },\r\n    {\r\n        name: 'Tanzania',\r\n        code: 'TZ',\r\n        dialCode: '+255',\r\n        flag: '🇹🇿',\r\n        flagImage: 'assets/images/flags/tz.png',\r\n        nativeName: '+255'\r\n    },\r\n    {\r\n        name: 'Thailand',\r\n        code: 'TH',\r\n        dialCode: '+66',\r\n        flag: '🇹🇭',\r\n        flagImage: 'assets/images/flags/th.png',\r\n        nativeName: '+66'\r\n    },\r\n    {\r\n        name: 'Timor-Leste',\r\n        code: 'TL',\r\n        dialCode: '+670',\r\n        flag: '🇹🇱',\r\n        flagImage: 'assets/images/flags/tl.png',\r\n        nativeName: '+670'\r\n    },\r\n    {\r\n        name: 'Togo',\r\n        code: 'TG',\r\n        dialCode: '+228',\r\n        flag: '🇹🇬',\r\n        flagImage: 'assets/images/flags/tg.png',\r\n        nativeName: '+228'\r\n    },\r\n    {\r\n        name: 'Tokelau',\r\n        code: 'TK',\r\n        dialCode: '+690',\r\n        flag: '🇹🇰',\r\n        flagImage: 'assets/images/flags/tk.png',\r\n        nativeName: '+690'\r\n    },\r\n    {\r\n        name: 'Tonga',\r\n        code: 'TO',\r\n        dialCode: '+676',\r\n        flag: '🇹🇴',\r\n        flagImage: 'assets/images/flags/to.png',\r\n        nativeName: '+676'\r\n    },\r\n    {\r\n        name: 'Trinidad and Tobago',\r\n        code: 'TT',\r\n        dialCode: '+1868',\r\n        flag: '🇹🇹',\r\n        flagImage: 'assets/images/flags/tt.png',\r\n        nativeName: '+1868'\r\n    },\r\n    {\r\n        name: 'Tunisia',\r\n        code: 'TN',\r\n        dialCode: '+216',\r\n        flag: '🇹🇳',\r\n        flagImage: 'assets/images/flags/tn.png',\r\n        nativeName: '+216'\r\n    },\r\n    {\r\n        name: 'Turkey',\r\n        code: 'TR',\r\n        dialCode: '+90',\r\n        flag: '🇹🇷',\r\n        flagImage: 'assets/images/flags/tr.png',\r\n        nativeName: '+90'\r\n    },\r\n    {\r\n        name: 'Turkmenistan',\r\n        code: 'TM',\r\n        dialCode: '+993',\r\n        flag: '🇹🇲',\r\n        flagImage: 'assets/images/flags/tm.png',\r\n        nativeName: '+993'\r\n    },\r\n    {\r\n        name: 'Turks and Caicos Islands',\r\n        code: 'TC',\r\n        dialCode: '+1649',\r\n        flag: '🇹🇨',\r\n        flagImage: 'assets/images/flags/tc.png',\r\n        nativeName: '+1649'\r\n    },\r\n    {\r\n        name: 'Tuvalu',\r\n        code: 'TV',\r\n        dialCode: '+688',\r\n        flag: '🇹🇻',\r\n        flagImage: 'assets/images/flags/tv.png',\r\n        nativeName: '+688'\r\n    },\r\n    // U\r\n    {\r\n        name: 'Uganda',\r\n        code: 'UG',\r\n        dialCode: '+256',\r\n        flag: '🇺🇬',\r\n        flagImage: 'assets/images/flags/ug.png',\r\n        nativeName: '+256'\r\n    },\r\n    {\r\n        name: 'Ukraine',\r\n        code: 'UA',\r\n        dialCode: '+380',\r\n        flag: '🇺🇦',\r\n        flagImage: 'assets/images/flags/ua.png',\r\n        nativeName: '+380'\r\n    },\r\n    {\r\n        name: 'United Arab Emirates',\r\n        code: 'AE',\r\n        dialCode: '+971',\r\n        flag: '🇦🇪',\r\n        flagImage: 'assets/images/flags/ae.png',\r\n        nativeName: '+971'\r\n    },\r\n    // { // Move this in top\r\n    //     name: 'United Kingdom'\r\n    //     code: 'GB'\r\n    //     dialCode: '+44'\r\n    //     flag: '🇬🇧'\r\n    //     flagImage: 'assets/images/flags/gb.png'\r\n    //     nativeName: '+44'\r\n    //\r\n    //\r\n    //\r\n    //\r\n    // },\r\n    // { // Move this in top\r\n    //     name: 'United States'\r\n    //     code: 'US'\r\n    //     dialCode: '+1'\r\n    //     flag: '🇺🇸'\r\n    //     flagImage: 'assets/images/flags/us.png'\r\n    //     nativeName: '+1'\r\n    //\r\n    //\r\n    //\r\n    //\r\n    // },\r\n    {\r\n        name: 'Uruguay',\r\n        code: 'UY',\r\n        dialCode: '+598',\r\n        flag: '🇺🇾',\r\n        flagImage: 'assets/images/flags/uy.png',\r\n        nativeName: '+598'\r\n    },\r\n    {\r\n        name: 'US Virgin Islands',\r\n        code: 'VI',\r\n        dialCode: '+1340',\r\n        flag: '🇻🇮',\r\n        flagImage: 'assets/images/flags/vi.png',\r\n        nativeName: '+1340'\r\n    },\r\n    {\r\n        name: 'Uzbekistan',\r\n        code: 'UZ',\r\n        dialCode: '+998',\r\n        flag: '🇺🇿',\r\n        flagImage: 'assets/images/flags/uz.png',\r\n        nativeName: '+998'\r\n    },\r\n    // V\r\n    {\r\n        name: 'Vanuatu',\r\n        code: 'VU',\r\n        dialCode: '+678',\r\n        flag: '🇻🇺',\r\n        flagImage: 'assets/images/flags/vu.png',\r\n        nativeName: '+678'\r\n    },\r\n    {\r\n        name: 'Vatican City',\r\n        code: 'VA',\r\n        dialCode: '+39',\r\n        flag: '🇻🇦',\r\n        flagImage: 'assets/images/flags/va.png',\r\n        nativeName: '+39'\r\n    },\r\n    {\r\n        name: 'Venezuela',\r\n        code: 'VE',\r\n        dialCode: '+58',\r\n        flag: '🇻🇪',\r\n        flagImage: 'assets/images/flags/ve.png',\r\n        nativeName: '+58'\r\n    },\r\n    {\r\n        name: 'Vietnam',\r\n        code: 'VN',\r\n        dialCode: '+84',\r\n        flag: '🇻🇳',\r\n        flagImage: 'assets/images/flags/vn.png',\r\n        nativeName: '+84'\r\n    },\r\n    // W\r\n    {\r\n        name: 'Wallis and Futuna',\r\n        code: 'WF',\r\n        dialCode: '+681',\r\n        flag: '🇼🇫',\r\n        flagImage: 'assets/images/flags/wf.png',\r\n        nativeName: '+681'\r\n    },\r\n    {\r\n        name: 'Western Sahara',\r\n        code: 'EH',\r\n        dialCode: '+212',\r\n        flag: '🇪🇭',\r\n        flagImage: 'assets/images/flags/eh.png',\r\n        nativeName: '+212'\r\n    },\r\n    // Y\r\n    {\r\n        name: 'Yemen',\r\n        code: 'YE',\r\n        dialCode: '+967',\r\n        flag: '🇾🇪',\r\n        flagImage: 'assets/images/flags/ye.png',\r\n        nativeName: '+967'\r\n    },\r\n    // Z\r\n    {\r\n        name: 'Zambia',\r\n        code: 'ZM',\r\n        dialCode: '+260',\r\n        flag: '🇿🇲',\r\n        flagImage: 'assets/images/flags/zm.png',\r\n        nativeName: '+260'\r\n    },\r\n    {\r\n        name: 'Zimbabwe',\r\n        code: 'ZW',\r\n        dialCode: '+263',\r\n        flag: '🇿🇼',\r\n        flagImage: 'assets/images/flags/zw.png',\r\n        nativeName: '+263'\r\n    }\r\n];\r\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable, of } from 'rxjs';\nimport { catchError, tap } from 'rxjs/operators';\nimport { COUNTRIES_DATA } from './countries-data';\n\n/**\n * Interface for IP geolocation API response\n */\nexport interface GeolocationResponse {\n    ipAddress: string;\n    continentCode: string;\n    continentName: string;\n    countryCode: string;\n    countryName: string;\n    stateProv: string;\n    city: string;\n}\n\n/**\n * Interface for cached geolocation data with expiry\n */\ninterface CachedGeolocationData {\n    data: GeolocationResponse;\n    timestamp: number;\n    expiryDate: number;\n}\n\n/**\n * Service to handle IP-based geolocation detection\n * \n * @export\n * @class GlobalPhoneInputService\n */\n@Injectable({\n    providedIn: 'root'\n})\nexport class GlobalPhoneInputService {\n\n    /** API endpoint for IP geolocation */\n    private readonly API_URL = 'https://api.db-ip.com/v2/free/self';\n    \n    /** Cache key for localStorage */\n    private readonly CACHE_KEY = 'ngx_global_phone_input_country_cache';\n    \n    /** Cache duration in milliseconds (30 days) */\n    private readonly CACHE_DURATION = 30 * 24 * 60 * 60 * 1000;\n\n    /**\n     * Creates an instance of GlobalPhoneInputService\n     * \n     * @param {HttpClient} http - Angular HTTP client\n     * @memberof GlobalPhoneInputService\n     */\n    constructor(private http: HttpClient) {}\n\n    /**\n     * Gets geolocation data from cache or API with automatic caching\n     * \n     * @param {boolean} useCache - Whether to use caching (default: true)\n     * @returns {Observable<GeolocationResponse | null>} Observable with geolocation data or null if failed\n     * @memberof GlobalPhoneInputService\n     */\n    public getCountryData(useCache: boolean = true): Observable<GeolocationResponse | null> {\n        // Check cache first only if caching is enabled\n        if (useCache && this.hasValidCache()) {\n            const cachedData = this.getCachedData();\n            if (cachedData) {\n                // Use setTimeout to make it async even for cached data\n                return new Observable(observer => {\n                    setTimeout(() => {\n                        observer.next(cachedData.data);\n                        observer.complete();\n                    }, 0);\n                });\n            }\n        }\n\n        // Make API call if no valid cache or caching is disabled\n        return this.http.get<GeolocationResponse>(this.API_URL).pipe(\n            tap((data) => {\n                if (data && useCache) {\n                    this.setCachedData(data);\n                }\n            }),\n            catchError((error) => {\n                console.warn('Failed to get geolocation data:', error);\n                return of(null);\n            })\n        );\n    }\n\n    /**\n     * @deprecated Use getCountryData() instead\n     * Gets user's location based on IP address\n     * \n     * @returns {Observable<GeolocationResponse | null>} Observable with geolocation data or null if failed\n     * @memberof GlobalPhoneInputService\n     */\n    public getUserLocation(): Observable<GeolocationResponse | null> {\n        return this.getCountryData();\n    }\n\n    /**\n     * Maps country code to dial code using COUNTRIES_DATA array\n     * \n     * @param {string} countryCode - ISO country code (e.g., 'IN', 'US', 'GB')\n     * @returns {string | null} Dial code if country is found, null otherwise\n     * @memberof GlobalPhoneInputService\n     */\n    public mapCountryCodeToDialCode(countryCode: string): string | null {\n        const country = COUNTRIES_DATA.find(c => c.code === countryCode);\n        return country ? country.dialCode : null;\n    }\n\n    /**\n     * Checks if there is valid cached country data\n     * \n     * @returns {boolean} True if valid cache exists, false otherwise\n     * @memberof GlobalPhoneInputService\n     */\n    public hasValidCache(): boolean {\n        try {\n            const cachedData = this.getCachedData();\n            if (!cachedData) {\n                return false;\n            }\n            \n            const now = Date.now();\n            return now < cachedData.expiryDate;\n        } catch (error) {\n            console.warn('Error checking cache validity:', error);\n            return false;\n        }\n    }\n\n    /**\n     * Clears the cached country data from localStorage\n     * \n     * @memberof GlobalPhoneInputService\n     */\n    public clearCache(): void {\n        try {\n            localStorage.removeItem(this.CACHE_KEY);\n        } catch (error) {\n            console.warn('Error clearing cache:', error);\n        }\n    }\n\n    /**\n     * Gets cached geolocation data from localStorage\n     * \n     * @private\n     * @returns {CachedGeolocationData | null} Cached data or null if not found/invalid\n     * @memberof GlobalPhoneInputService\n     */\n    private getCachedData(): CachedGeolocationData | null {\n        try {\n            const cached = localStorage.getItem(this.CACHE_KEY);\n            if (!cached) {\n                return null;\n            }\n            \n            const parsedData: CachedGeolocationData = JSON.parse(cached);\n            \n            // Validate cache structure\n            if (!parsedData.data || !parsedData.timestamp || !parsedData.expiryDate) {\n                this.clearCache();\n                return null;\n            }\n            \n            return parsedData;\n        } catch (error) {\n            console.warn('Error reading cached data:', error);\n            this.clearCache();\n            return null;\n        }\n    }\n\n    /**\n     * Stores geolocation data in localStorage with expiry timestamp\n     * \n     * @private\n     * @param {GeolocationResponse} data - Geolocation data to cache\n     * @memberof GlobalPhoneInputService\n     */\n    private setCachedData(data: GeolocationResponse): void {\n        try {\n            const now = Date.now();\n            const cachedData: CachedGeolocationData = {\n                data,\n                timestamp: now,\n                expiryDate: now + this.CACHE_DURATION\n            };\n            \n            localStorage.setItem(this.CACHE_KEY, JSON.stringify(cachedData));\n        } catch (error) {\n            console.warn('Error caching country data:', error);\n        }\n    }\n}\n","import { Component, Input, Output, EventEmitter, forwardRef, OnInit, OnDestroy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule, FormControl, ControlValueAccessor, NG_VALUE_ACCESSOR, Validators, AbstractControl, ValidationErrors, NG_VALIDATORS, Validator } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatIconModule } from '@angular/material/icon';\nimport { HttpClientModule } from '@angular/common/http';\nimport { distinctUntilChanged, Subject, takeUntil } from 'rxjs';\nimport * as libphonenumber from 'google-libphonenumber';\nimport { Country, COUNTRIES_DATA } from './countries-data';\nimport { GlobalPhoneInputService } from './global-phone-input.service';\n\n/** \n * Enhanced mobile number validator using Google's libphonenumber library\n * Provides industry-standard validation with comprehensive error detection\n */\nexport function mobileNumberValidator(country: Country | null) {\n    return (control: AbstractControl): ValidationErrors | null => {\n        if (!control.value || !country) {\n            return null;\n        }\n\n        const inputValue = control.value.replace(/\\s+/g, '');\n        let phoneNumberString = inputValue;\n        \n        // Get PhoneNumberUtil instance\n        const phoneUtil = libphonenumber.PhoneNumberUtil.getInstance();\n        \n        try {\n            let phoneNumber: any;\n            \n            // Parse the phone number\n            if (phoneNumberString.startsWith('+')) {\n                // Parse as international number\n                phoneNumber = phoneUtil.parse(phoneNumberString, undefined);\n            } else {\n                // Parse as national number for the selected country\n                phoneNumber = phoneUtil.parse(phoneNumberString, country.code);\n            }\n            \n            // Get the country code from the parsed number\n            const parsedCountryCode = phoneUtil.getRegionCodeForNumber(phoneNumber);\n            \n            // Check if the country matches the selected country\n            if (parsedCountryCode !== country.code) {\n                return { wrongCountry: true };\n            }\n            \n            // Validate the phone number\n            if (!phoneUtil.isValidNumber(phoneNumber)) {\n                return { invalidNumber: true };\n            }\n            \n            // Check if it's a mobile number\n            const numberType = phoneUtil.getNumberType(phoneNumber);\n            if (numberType !== libphonenumber.PhoneNumberType.MOBILE && \n                numberType !== libphonenumber.PhoneNumberType.FIXED_LINE_OR_MOBILE) {\n                return { notMobile: true };\n            }\n            \n            // Additional validation for specific edge cases\n            const nationalNumber = phoneNumber.getNationalNumber().toString();\n            \n            // Check for obviously invalid patterns (all same digits, sequential, etc.)\n            if (isObviouslyInvalid(nationalNumber)) {\n                return { obviouslyInvalid: true };\n            }\n            \n            // Check for possible numbers (less strict validation)\n            if (!phoneUtil.isPossibleNumber(phoneNumber)) {\n                return { impossibleNumber: true };\n            }\n            \n            return null;\n            \n        } catch (error) {\n            // If parsing fails, return parse error\n            return { parseError: true };\n        }\n    };\n}\n\n/**\n * Checks for obviously invalid number patterns\n * \n * @param {string} nationalNumber - The national number to check\n * @returns {boolean} True if the number is obviously invalid\n * @private\n */\nfunction isObviouslyInvalid(nationalNumber: string): boolean {\n    // Check for all same digits (e.g., 1111111111)\n    if (/^(\\d)\\1+$/.test(nationalNumber)) {\n        return true;\n    }\n    \n    // Check for sequential digits (e.g., 1234567890)\n    if (isSequential(nationalNumber)) {\n        return true;\n    }\n    \n    // Check for common test patterns\n    const testPatterns = [\n        /^0+/, // All zeros at start\n        /^123456/, // Common test sequence\n        /^999999/, // Common test pattern\n    ];\n    \n    return testPatterns.some(pattern => pattern.test(nationalNumber));\n}\n\n/**\n * Checks if a number is sequential\n * \n * @param {string} number - The number to check\n * @returns {boolean} True if sequential\n * @private\n */\nfunction isSequential(number: string): boolean {\n    for (let i = 0; i < number.length - 2; i++) {\n        const digit1 = parseInt(number[i]);\n        const digit2 = parseInt(number[i + 1]);\n        const digit3 = parseInt(number[i + 2]);\n        \n        if (digit2 === digit1 + 1 && digit3 === digit2 + 1) {\n            // Found at least 3 sequential digits\n            if (i === 0 && number.length >= 6) {\n                // If it starts with sequential and is long enough, likely invalid\n                return true;\n            }\n        }\n    }\n    return false;\n}\n\n@Component({\n    selector: 'global-phone-input',\n    standalone: true,\n    imports: [\n        CommonModule,\n        ReactiveFormsModule,\n        MatFormFieldModule,\n        MatSelectModule,\n        MatInputModule,\n        MatIconModule,\n        HttpClientModule\n    ],\n    providers: [\n        {\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: forwardRef(() => GlobalPhoneInputComponent),\n            multi: true\n        },\n        {\n          provide: NG_VALIDATORS,\n          useExisting: forwardRef(() => GlobalPhoneInputComponent), // Referencing your component\n          multi: true // Essential for registering multiple validators\n        }\n    ],\n    \n    templateUrl: './global-phone-input.component.html',\n    styleUrls: ['./global-phone-input.component.css']\n})\nexport class GlobalPhoneInputComponent implements OnInit, OnDestroy, ControlValueAccessor, Validator {\n    /** Label for the mobile input field */\n    @Input() public label?: string;\n    \n    /** Whether the field is required */\n    @Input() public required: boolean = false;\n    \n    /** Whether the field is disabled */\n    @Input() public disabled: boolean = false;\n    \n    /** Placeholder text for the mobile input field */\n    @Input() public placeholder?: string;\n    \n    /** Unique identifier for the component instance */\n    @Input() public id?: string;\n    \n    /** Name attribute for the component instance */\n    @Input() public name?: string;\n    \n    /** Whether to use image flags instead of emoji flags */\n    @Input() public useImageFlags: boolean = false;\n    \n    /** Whether to enable country detection caching */\n    @Input() public enableCache: boolean = true;\n    \n    /** Default country dial code (e.g., '+91', '+1', '+44') */\n    @Input() public defaultCountryCode?: string;\n    \n    /** Event emitted when country changes */\n    @Output() public countryChanged = new EventEmitter<Country>();\n    \n    /** Event emitted when mobile number changes */\n    @Output() public mobileChanged = new EventEmitter<string>();\n\n    /** Form controls */\n    public countryControl = new FormControl<Country | null>(null);\n    public mobileControl = new FormControl<string>('');\n\n    /** Currently selected country */\n    public selectedCountry: Country | null = null;\n\n    /** Subject for component destruction */\n    private destroyed$ = new Subject<void>();\n\n    /** Flag to track if country was set programmatically via writeValue */\n    private countrySetProgrammatically: boolean = false;\n\n    /** ControlValueAccessor callbacks */\n    private onChange = (value: string) => {};\n    private onTouched = () => {};\n\n    /** List of all supported countries with their data */\n    public countries: Country[] = COUNTRIES_DATA;\n\n    constructor(\n        private globalPhoneInputService: GlobalPhoneInputService\n    ) {}\n\n    /**\n     * Component initialization\n     *\n     * @memberof GlobalPhoneInputComponent\n     */\n    public ngOnInit(): void {\n        this.setupFormControls();\n        this.detectUserCountry();\n    }\n    \n    /**\n     * Debug method to clear geolocation cache\n     * \n     * @public\n     * @memberof GlobalPhoneInputComponent\n     */\n    public clearGeolocationCache(): void {\n        this.globalPhoneInputService.clearCache();\n    }\n\n    /**\n     * Component cleanup\n     *\n     * @memberof GlobalPhoneInputComponent\n     */\n    public ngOnDestroy(): void {\n        this.destroyed$.next();\n        this.destroyed$.complete();\n    }\n\n     /**\n     * Validator implementation for ControlValueAccessor\n     * Validates the mobile number using Google's libphonenumber\n     * \n     * @param {AbstractControl} control - Form control to validate\n     * @returns {ValidationErrors | null} Validation errors or null if valid\n     * @memberof GlobalPhoneInputComponent\n     */\n    public validate(control: AbstractControl): ValidationErrors | null {\n        // If no value and required, return required error\n        if (!control.value) {\n            return this.required ? { required: true } : null;\n        }\n\n        // If no country selected, can't validate\n        if (!this.selectedCountry) {\n            return { noCountrySelected: true };\n        }\n\n        try {\n            const phoneUtil = libphonenumber.PhoneNumberUtil.getInstance();\n            const fullNumber = this.getFullPhoneNumber();\n            \n            // Parse the phone number\n            const phoneNumber = phoneUtil.parse(fullNumber, this.selectedCountry.code);\n            \n            // Check if the number is valid\n            if (!phoneUtil.isValidNumber(phoneNumber)) {\n                return { invalidNumber: true };\n            }\n            \n            // Check if it's a mobile number\n            const numberType = phoneUtil.getNumberType(phoneNumber);\n            if (numberType !== libphonenumber.PhoneNumberType.MOBILE && \n                numberType !== libphonenumber.PhoneNumberType.FIXED_LINE_OR_MOBILE) {\n                return { notMobile: true };\n            }\n            \n            // Check if number belongs to the selected country\n            const numberRegion = phoneUtil.getRegionCodeForNumber(phoneNumber);\n            if (numberRegion !== this.selectedCountry.code) {\n                return { wrongCountry: true };\n            }\n            \n            return null; // Valid number\n            \n        } catch (error) {\n            // If parsing fails, it's an invalid number format\n            return { parseError: true };\n        }\n    }\n\n    /**\n     * Detects user's country based on IP address and sets as default\n     *\n     * @private\n     * @memberof GlobalPhoneInputComponent\n     */\n    private detectUserCountry(): void {\n        // Don't override if country was already set programmatically\n        if (this.countrySetProgrammatically) {\n            return;\n        }\n        \n        this.performCountryDetection();\n    }\n\n    /**\n     * Detects user's country for writeValue method (cache-first approach)\n     *\n     * @private\n     * @memberof GlobalPhoneInputComponent\n     */\n    private detectUserCountryForWriteValue(): void {\n        this.performCountryDetection();\n    }\n\n    /**\n     * Performs the actual country detection logic (cache-first approach)\n     * Only executes when mobile number field is empty\n     *\n     * @private\n     * @memberof GlobalPhoneInputComponent\n     */\n    private performCountryDetection(): void {\n        this.globalPhoneInputService.getCountryData(this.enableCache)\n            .pipe(takeUntil(this.destroyed$))\n            .subscribe(location => {\n                // Only perform country detection if mobile number field is empty\n                if (location && location.countryCode && !this.mobileControl.value) {\n                    const dialCode = this.globalPhoneInputService.mapCountryCodeToDialCode(location.countryCode);\n                    if (dialCode) {\n                        const detectedCountry = this.countries.find(country => country.dialCode === dialCode);\n                        if (detectedCountry) {\n                            this.selectedCountry = detectedCountry;\n                            this.countryControl.setValue(detectedCountry, { emitEvent: false });\n                            this.updateValidators();\n                            return;\n                        }\n                    }\n                }\n                \n                // Fallback to default country if detection fails or is disabled\n                this.setDefaultCountry();\n            });\n    }\n\n    /**\n     * Sets the default country based on dial code input parameter\n     *\n     * @private\n     * @memberof GlobalPhoneInputComponent\n     */\n    private setDefaultCountry(): void {\n        let defaultCountry: Country | undefined;\n\n        if (this.defaultCountryCode && this.defaultCountryCode.startsWith('+')) {\n            // Find country by dial code\n            defaultCountry = this.countries.find(country => country.dialCode === this.defaultCountryCode);\n        }\n\n        if (defaultCountry) {\n            this.selectedCountry = defaultCountry;\n            this.countryControl.setValue(defaultCountry, { emitEvent: false });\n            this.updateValidators();\n        }\n    }\n\n\n    /**\n     * Initializes the default country selection to India (+91)\n     * @deprecated Use setDefaultCountry() instead\n     *\n     * @private\n     * @memberof GlobalPhoneInputComponent\n     */\n    private initializeDefaultCountry(): void {\n        this.setDefaultCountry();\n    }\n\n    /**\n     * Sets up form controls and their validators\n     *\n     * @private\n     * @memberof GlobalPhoneInputComponent\n     */\n    private setupFormControls(): void {\n        if (this.required) {\n            this.mobileControl.setValidators([Validators.required]);\n        }\n\n        this.mobileControl.valueChanges\n            .pipe(distinctUntilChanged(), takeUntil(this.destroyed$))\n            .subscribe(value => {\n                this.updateValidators();\n                this.mobileChanged.emit(value || '');\n                this.onChange(this.getFullPhoneNumber());\n            });\n\n        this.countryControl.valueChanges\n            .pipe(distinctUntilChanged(), takeUntil(this.destroyed$))\n            .subscribe(country => {\n                if (country) {\n                    this.selectedCountry = country;\n                    this.updateValidators();\n                    this.countryChanged.emit(country);\n                    this.onChange(this.getFullPhoneNumber());\n                }\n            });\n    }\n\n    /**\n     * Updates validators based on selected country\n     *\n     * @private\n     * @memberof GlobalPhoneInputComponent\n     */\n    private updateValidators(): void {\n        const validators = [];\n        \n        if (this.required) {\n            validators.push(Validators.required);\n        }\n        \n        if (this.selectedCountry) {\n            validators.push(mobileNumberValidator(this.selectedCountry));\n        }\n\n        this.mobileControl.setValidators(validators);\n        this.mobileControl.updateValueAndValidity({ emitEvent: false });\n        \n        // Trigger validation display\n        if (this.mobileControl.value) {\n            this.mobileControl.markAsTouched();\n        }\n    }\n\n    /**\n     * Handles country selection change\n     * \n     * @param {Country} country - Selected country\n     * @memberof GlobalPhoneInputComponent\n     */\n    public onCountryChange(country: Country): void {\n        const previousCountry = this.selectedCountry;\n        this.selectedCountry = country;\n        this.updateValidators();\n        \n        // Reset the programmatic flag when user manually changes country\n        this.countrySetProgrammatically = false;\n        \n        // Handle mobile number when country changes\n        if (this.mobileControl.value) {\n            const currentValue = this.mobileControl.value.replace(/\\s+/g, '');\n            let mobileNumber = currentValue;\n            \n            // Extract pure mobile number from current input\n            if (previousCountry) {\n                // Remove previous country's dial code if present\n                if (currentValue.startsWith('+')) {\n                    if (currentValue.startsWith(previousCountry.dialCode)) {\n                        mobileNumber = currentValue.substring(previousCountry.dialCode.length);\n                    } else {\n                        // Check for any dial code pattern and extract number\n                        const dialCodeMatch = currentValue.match(/^\\+\\d{1,4}/);\n                        if (dialCodeMatch) {\n                            mobileNumber = currentValue.substring(dialCodeMatch[0].length);\n                        }\n                    }\n                } else {\n                    // Remove dial code without + if present\n                    const previousDialCodeWithoutPlus = previousCountry.dialCode.substring(1);\n                    if (currentValue.startsWith(previousDialCodeWithoutPlus)) {\n                        mobileNumber = currentValue.substring(previousDialCodeWithoutPlus.length);\n                    }\n                }\n            }\n            \n            // Set the pure mobile number (without any dial code)\n            this.mobileControl.setValue(mobileNumber, { emitEvent: false });\n        }\n        \n        this.countryChanged.emit(country);\n    }\n\n    /**\n     * Handles keypress events to restrict input to numbers and plus sign only\n     * \n     * @param {KeyboardEvent} event - Keyboard event\n     * @memberof GlobalPhoneInputComponent\n     */\n    public onKeyPress(event: KeyboardEvent): void {\n        const char = event.key;\n        const target = event.target as HTMLInputElement;\n        const currentValue = target.value;\n        const cursorPosition = target.selectionStart || 0;\n        \n        // Allow numbers (0-9)\n        if (/[0-9]/.test(char)) {\n            return;\n        }\n        \n        // Allow plus sign at the beginning (position 0) or if cursor is at position 0\n        if (char === '+') {\n            if (cursorPosition === 0) {\n                // If there's already a + at the beginning, prevent duplicate\n                if (currentValue.startsWith('+')) {\n                    event.preventDefault();\n                    return;\n                }\n                return; // Allow + at the beginning\n            } else {\n                event.preventDefault(); // Prevent + anywhere else\n                return;\n            }\n        }\n        \n        // Allow backspace, delete, arrow keys, tab, etc.\n        if (['Backspace', 'Delete', 'ArrowLeft', 'ArrowRight', 'Tab', 'Enter'].includes(char)) {\n            return;\n        }\n        \n        // Prevent spaces, parentheses, and other characters during typing\n        // These will be handled during paste operations\n        if ([' ', '(', ')', '-', '.'].includes(char)) {\n            event.preventDefault();\n            return;\n        }\n        \n        // Prevent all other characters (letters, symbols)\n        event.preventDefault();\n    }\n\n    /**\n     * Handles mobile number input changes\n     * \n     * @param {Event} event - Input event\n     * @memberof GlobalPhoneInputComponent\n     */\n    public onMobileInput(event: Event): void {\n        const target = event.target as HTMLInputElement;\n        let value = target.value;\n        \n        // Sanitize input: remove all non-numeric characters except + at the beginning\n        value = this.sanitizeInput(value);\n        \n        // Update the input field with sanitized value if it changed\n        if (target.value !== value) {\n            target.value = value;\n        }\n        \n        // Handle different input scenarios\n        this.handleInputScenarios(value, target);\n        \n        // Update form control with the final value from the input field\n        const finalValue = target.value;\n        if (this.mobileControl.value !== finalValue) {\n            this.mobileControl.setValue(finalValue, { emitEvent: false });\n        }\n        \n        this.onChange(this.getFullPhoneNumber());\n        this.onTouched();\n    }\n\n    /**\n     * Handles different mobile number input scenarios\n     * \n     * @param {string} value - Input value\n     * @param {HTMLInputElement} target - Input element\n     * @private\n     * @memberof GlobalPhoneInputComponent\n     */\n    private handleInputScenarios(value: string, target: HTMLInputElement): void {\n        if (value.startsWith('+')) {\n            // Scenario 1: Number with + dial code\n            this.handleDialCodeInput(value, target);\n        } else if (this.selectedCountry) {\n            // Scenario 2: Check if number contains dial code without +\n            const dialCodeWithoutPlus = this.selectedCountry.dialCode.substring(1);\n            \n            // Only remove dial code if we have enough digits to be confident it's a duplicate\n            // For India (+91), wait for at least 4 digits total (91 + 2 more digits)\n            // For other countries, wait for dial code + at least 2 more digits\n            let minDigitsRequired = dialCodeWithoutPlus.length + 2;\n            \n            // Special case for India: user typing 919111525164 should wait until 9191 (4 digits)\n            if (this.selectedCountry.code === 'IN') {\n                minDigitsRequired = Math.max(4, dialCodeWithoutPlus.length + 2);\n            }\n            \n            if (value.startsWith(dialCodeWithoutPlus) && \n                value.length >= minDigitsRequired &&\n                value.length > 15) { // Use reasonable max length for international numbers\n                // Extract mobile number part (everything after dial code)\n                const mobileNumber = value.substring(dialCodeWithoutPlus.length);\n                \n                // Additional validation: ensure the remaining number looks like a valid mobile number\n                // (starts with valid mobile number patterns for the country)\n                if (this.isValidMobileNumberStart(mobileNumber)) {\n                    this.mobileControl.setValue(mobileNumber, { emitEvent: false });\n                    target.value = mobileNumber;\n                    \n                    // Set cursor position to end of input\n                    setTimeout(() => {\n                        target.setSelectionRange(mobileNumber.length, mobileNumber.length);\n                    }, 0);\n                }\n            }\n        }\n    }\n\n    /**\n     * Validates if a mobile number starts with valid digits for the selected country\n     * \n     * @param {string} mobileNumber - Mobile number to validate\n     * @returns {boolean} True if the number starts with valid digits\n     * @private\n     * @memberof GlobalPhoneInputComponent\n     */\n    private isValidMobileNumberStart(mobileNumber: string): boolean {\n        if (!this.selectedCountry || !mobileNumber) {\n            return false;\n        }\n        \n        // For India (+91), valid mobile numbers start with 6, 7, 8, or 9\n        if (this.selectedCountry.code === 'IN') {\n            return /^[6-9]/.test(mobileNumber);\n        }\n        \n        // For US/Canada (+1), valid mobile numbers start with 2-9 (area code)\n        if (this.selectedCountry.code === 'US' || this.selectedCountry.code === 'CA') {\n            return /^[2-9]/.test(mobileNumber);\n        }\n        \n        // For other countries, use a more generic validation\n        // Most mobile numbers don't start with 0 or 1\n        return /^[2-9]/.test(mobileNumber);\n    }\n\n    /**\n     * Handles input with dial code (starting with +)\n     * \n     * @param {string} value - Input value with dial code\n     * @param {HTMLInputElement} target - Input element\n     * @private\n     * @memberof GlobalPhoneInputComponent\n     */\n    private handleDialCodeInput(value: string, target: HTMLInputElement): void {\n        // Only process if we have enough characters for a meaningful dial code\n        if (value.length < 2) {\n            return;\n        }\n        \n        // Auto-detect country from dial code\n        this.autoDetectCountry(value);\n        \n        if (this.selectedCountry && value.startsWith(this.selectedCountry.dialCode)) {\n            // For NANP (+1), wait for area code before extracting mobile number\n            if (this.selectedCountry.dialCode === '+1' && value.length < 5) {\n                // Don't extract yet, wait for area code (need at least +1XXX)\n                return;\n            }\n            \n            // Only extract mobile number if we have the complete dial code and sufficient digits\n            if (value.length > this.selectedCountry.dialCode.length) {\n                const mobileNumber = value.substring(this.selectedCountry.dialCode.length);\n                \n                // Prevent infinite loop by checking if the value is different\n                if (target.value !== mobileNumber) {\n                    this.mobileControl.setValue(mobileNumber, { emitEvent: false });\n                    target.value = mobileNumber;\n                    \n                    // Set cursor position to end of input\n                    setTimeout(() => {\n                        target.setSelectionRange(mobileNumber.length, mobileNumber.length);\n                    }, 0);\n                }\n            }\n        }\n    }\n\n    /**\n     * Sanitizes input to allow only numbers and plus sign at the beginning\n     * \n     * @param {string} value - Input value to sanitize\n     * @returns {string} Sanitized value\n     * @private\n     * @memberof GlobalPhoneInputComponent\n     */\n    private sanitizeInput(value: string): string {\n        if (!value) return '';\n        \n        // If starts with +, keep the + and remove all non-numeric characters after it\n        // This handles formats like: +55 (11) 98765-4321, +82 10-1234-5678\n        if (value.startsWith('+')) {\n            return '+' + value.substring(1).replace(/[^0-9]/g, '');\n        }\n        \n        // Otherwise, remove all non-numeric characters\n        // This handles formats like: (11) 98765-4321, 10-1234-5678, 11 98765-4321\n        return value.replace(/[^0-9]/g, '');\n    }\n\n    /**\n     * Gets the appropriate flag for display (emoji or image)\n     * \n     * @param {Country} country - Country object\n     * @returns {string} Flag emoji or image path\n     * @memberof GlobalPhoneInputComponent\n     */\n    public getFlagDisplay(country: Country): string {\n        if (this.useImageFlags && country.flagImage) {\n            return country.flagImage;\n        }\n        return country.flag;\n    }\n\n    /**\n     * Checks if the flag should be displayed as an image\n     * \n     * @param {Country} country - Country object\n     * @returns {boolean} True if flag should be displayed as image\n     * @memberof GlobalPhoneInputComponent\n     */\n    public isImageFlag(country: Country): boolean {\n        return this.useImageFlags && Boolean(country.flagImage);\n    }\n\n    /**\n     * Auto-detects country based on dial code and area code for NANP\n     * \n     * @param {string} value - Phone number with dial code\n     * @private\n     * @memberof GlobalPhoneInputComponent\n     */\n    private autoDetectCountry(value: string): void {\n        // Only attempt detection if we have at least 2 characters (+X)\n        if (value.length < 2) {\n            return;\n        }\n        \n        // Sort countries by dial code length (longest first) to match more specific codes first\n        // This ensures +1340 (US Virgin Islands) is matched before +1 (US)\n        const sortedCountries = [...this.countries].sort((a, b) => b.dialCode.length - a.dialCode.length);\n        \n        // First, try to find an exact match with longer dial codes\n        for (const country of sortedCountries) {\n            if (value.startsWith(country.dialCode) && value.length >= country.dialCode.length) {\n                // For longer dial codes (like +1340), we need exact match\n                if (country.dialCode.length > 2) {\n                    // Only select if we have the complete dial code\n                    if (value.length >= country.dialCode.length) {\n                        if (this.selectedCountry?.dialCode !== country.dialCode) {\n                            this.selectedCountry = country;\n                            this.countryControl.setValue(country, { emitEvent: false });\n                            this.countrySetProgrammatically = true;\n                            \n                            // Extract mobile number without dial code\n                            const mobileNumber = value.substring(country.dialCode.length);\n                            this.mobileControl.setValue(mobileNumber, { emitEvent: false });\n                            \n                            this.updateValidators();\n                            this.countryChanged.emit(country);\n                        }\n                        return; // Found exact match, stop here\n                    }\n                }\n            }\n        }\n        \n        // If no longer dial code matched, handle shorter ones (like +1 for NANP)\n        // Special handling for NANP (+1) - detect US vs Canada by area code\n        if (value.startsWith('+1')) {\n            // Check if this could be a longer dial code (like +1340)\n            // Don't auto-select +1 if the user might be typing a longer code\n            const potentialLongerCodes = sortedCountries.filter(c => \n                c.dialCode.startsWith('+1') && c.dialCode.length > 2\n            );\n            \n            // Check if the current input could match any longer dial codes\n            const couldBeLongerCode = potentialLongerCodes.some(c => \n                c.dialCode.startsWith(value) || value.startsWith(c.dialCode.substring(0, value.length))\n            );\n            \n            if (couldBeLongerCode && value.length < 6) {\n                // Don't auto-select yet, user might be typing a longer dial code\n                return;\n            }\n            \n            if (value.length >= 5) { // Need at least +1XX for area code detection\n                const detectedCountry = this.detectNANPCountry(value);\n                if (detectedCountry && this.selectedCountry?.code !== detectedCountry.code) {\n                    this.selectedCountry = detectedCountry;\n                    this.countryControl.setValue(detectedCountry, { emitEvent: false });\n                    this.countrySetProgrammatically = true;\n                    \n                    // Only extract mobile number if we have sufficient digits for area code detection\n                    if (value.length >= 5) {\n                        const mobileNumber = value.substring(detectedCountry.dialCode.length);\n                        this.mobileControl.setValue(mobileNumber, { emitEvent: false });\n                    }\n                    \n                    this.updateValidators();\n                    this.countryChanged.emit(detectedCountry);\n                }\n            } else if (value.length >= 6) {\n                // Only default to US if we're sure it's not a longer dial code\n                const usCountry = this.countries.find(c => c.code === 'US');\n                if (usCountry && this.selectedCountry?.code !== usCountry.code) {\n                    this.selectedCountry = usCountry;\n                    this.countryControl.setValue(usCountry, { emitEvent: false });\n                    this.countrySetProgrammatically = true;\n                    this.updateValidators();\n                    this.countryChanged.emit(usCountry);\n                }\n            }\n            return;\n        }\n        \n        // Handle other dial codes (non-NANP)\n        for (const country of sortedCountries) {\n            if (value.startsWith(country.dialCode) && value.length >= country.dialCode.length) {\n                if (this.selectedCountry?.dialCode !== country.dialCode) {\n                    this.selectedCountry = country;\n                    this.countryControl.setValue(country, { emitEvent: false });\n                    this.countrySetProgrammatically = true;\n                    \n                    // Extract mobile number without dial code\n                    const mobileNumber = value.substring(country.dialCode.length);\n                    this.mobileControl.setValue(mobileNumber, { emitEvent: false });\n                    \n                    this.updateValidators();\n                    this.countryChanged.emit(country);\n                }\n                break;\n            }\n        }\n    }\n\n    /**\n     * Detects US vs Canada for NANP numbers based on area code\n     * \n     * @param {string} value - Phone number starting with +1\n     * @returns {Country | null} Detected country or null\n     * @private\n     * @memberof GlobalPhoneInputComponent\n     */\n    private detectNANPCountry(value: string): Country | null {\n        // Extract area code (first 3 digits after +1)\n        const numberPart = value.substring(2); // Remove +1\n        const areaCode = numberPart.substring(0, 3);\n        \n        if (areaCode.length !== 3) {\n            // Default to US if area code is incomplete\n            return this.countries.find(c => c.code === 'US') || null;\n        }\n        \n        // Canadian area codes\n        const canadianAreaCodes = [\n            // Alberta\n            '403', '587', '825',\n            // British Columbia\n            '236', '250', '604', '672', '778',\n            // Manitoba\n            '204', '431',\n            // New Brunswick\n            '506',\n            // Newfoundland and Labrador\n            '709',\n            // Northwest Territories\n            '867',\n            // Nova Scotia\n            '782', '902',\n            // Nunavut\n            '867',\n            // Ontario\n            '226', '249', '289', '343', '365', '416', '437', '519', '548', '613', '647', '705', '807', '905',\n            // Prince Edward Island\n            '902',\n            // Quebec\n            '354', '367', '418', '438', '450', '514', '579', '581', '819', '873',\n            // Saskatchewan\n            '306', '639',\n            // Yukon\n            '867'\n        ];\n        \n        if (canadianAreaCodes.includes(areaCode)) {\n            return this.countries.find(c => c.code === 'CA') || null;\n        } else {\n            return this.countries.find(c => c.code === 'US') || null;\n        }\n    }\n\n    /**\n     * Gets the complete phone number with country code\n     *\n     * @returns {string} Complete phone number\n     * @memberof GlobalPhoneInputComponent\n     */\n    public getFullPhoneNumber(): string {\n        if (!this.selectedCountry || !this.mobileControl.value) {\n            return '';\n        }\n        \n        let mobileNumber = this.mobileControl.value.replace(/\\s+/g, '');\n        \n        // Check if mobile number already contains the dial code with +\n        if (mobileNumber.startsWith(this.selectedCountry.dialCode)) {\n            return mobileNumber;\n        }\n        \n        // Check if mobile number starts with dial code without + AND is longer than expected\n        // This prevents treating valid mobile numbers that happen to start with dial code digits\n        // as having duplicate dial codes\n        const dialCodeWithoutPlus = this.selectedCountry.dialCode.substring(1);\n        if (mobileNumber.startsWith(dialCodeWithoutPlus) && \n            mobileNumber.length > 15) { // Use reasonable max length for international numbers\n            // Only remove dial code if the number is longer than expected (indicating duplicate)\n            return this.selectedCountry.dialCode + mobileNumber.substring(dialCodeWithoutPlus.length);\n        }\n        \n        // Otherwise, just prepend the dial code (normal case)\n        return this.selectedCountry.dialCode + mobileNumber;\n    }\n\n    // ControlValueAccessor implementation\n\n    /**\n     * Registers a callback function to call when the value changes (ControlValueAccessor)\n     * \n     * @param {(value: string) => void} fn - Callback function\n     * @memberof GlobalPhoneInputComponent\n     */\n    public registerOnChange(fn: (value: string) => void): void {\n        this.onChange = fn;\n    }\n\n    /**\n     * Registers a callback function to call when the component is touched (ControlValueAccessor)\n     * \n     * @param {() => void} fn - Callback function\n     * @memberof GlobalPhoneInputComponent\n     */\n    public registerOnTouched(fn: () => void): void {\n        this.onTouched = fn;\n    }\n\n    /**\n     * Sets the disabled state of the component (ControlValueAccessor)\n     * \n     * @param {boolean} isDisabled - Whether the component should be disabled\n     * @memberof GlobalPhoneInputComponent\n     */\n    public setDisabledState(isDisabled: boolean): void {\n        if (isDisabled) {\n            this.mobileControl.disable({ emitEvent: false });\n            this.countryControl.disable({ emitEvent: false });\n        } else {\n            this.mobileControl.enable({ emitEvent: false });\n            this.countryControl.enable({ emitEvent: false });\n        }\n    }\n\n    /**\n     * Writes a value to the component (ControlValueAccessor)\n     * \n     * @param {string} value - Value to write\n     * @memberof GlobalPhoneInputComponent\n     */\n    public writeValue(value: string): void {\n        if (value) {\n            // Handle different input formats\n            if (value.startsWith('+')) {\n                // International format with +\n                this.handleInternationalNumber(value);\n            } else if (this.isLikelyInternationalNumber(value)) {\n                // Likely international number without + (from API)\n                this.handleInternationalNumber('+' + value);\n            } else {\n                // Assume it's just the mobile number without country code\n                this.mobileControl.setValue(value, { emitEvent: false });\n                // Don't set programmatic flag for local numbers\n            }\n        } else {\n            this.mobileControl.setValue('', { emitEvent: false });\n            // Reset the programmatic flag when value is cleared\n            this.countrySetProgrammatically = false;\n            // Try to detect country from cache first, then fallback to default\n            this.detectUserCountryForWriteValue();\n        }\n    }\n\n    /**\n     * Checks if a number (without +) is likely an international number\n     * \n     * @param {string} value - Number to check\n     * @returns {boolean} True if likely international\n     * @private\n     * @memberof GlobalPhoneInputComponent\n     */\n    private isLikelyInternationalNumber(value: string): boolean {\n        // Must be numeric and longer than typical mobile numbers (>10 digits)\n        if (!/^\\d+$/.test(value) || value.length <= 10) {\n            return false;\n        }\n        \n        // Check if it starts with any valid country codes using optimized method\n        const commonCountryCodes = this.getSortedDialCodes(true);\n        \n        return commonCountryCodes.some(code => value.startsWith(code));\n    }\n\n    /**\n     * Handles international number format (with +)\n     * \n     * @param {string} value - International number with +\n     * @private\n     * @memberof GlobalPhoneInputComponent\n     */\n    private handleInternationalNumber(value: string): void {\n        // Use existing auto-detection logic\n        this.autoDetectCountry(value);\n        \n        // Check if country was detected and update accordingly\n        if (this.selectedCountry && value.startsWith(this.selectedCountry.dialCode)) {\n            // Mark that country was set programmatically\n            this.countrySetProgrammatically = true;\n            \n            // Extract mobile number part\n            const mobileNumber = value.substring(this.selectedCountry.dialCode.length);\n            this.mobileControl.setValue(mobileNumber, { emitEvent: false });\n        } else {\n            // Try to find matching country manually if auto-detection failed\n            const detectedCountry = this.findCountryByDialCode(value);\n            if (detectedCountry) {\n                this.selectedCountry = detectedCountry;\n                this.countryControl.setValue(detectedCountry, { emitEvent: false });\n                this.updateValidators();\n                this.countryChanged.emit(detectedCountry);\n                \n                // Mark that country was set programmatically\n                this.countrySetProgrammatically = true;\n                \n                // Extract mobile number part\n                const mobileNumber = value.substring(detectedCountry.dialCode.length);\n                this.mobileControl.setValue(mobileNumber, { emitEvent: false });\n            } else {\n                // If no country detected, just set the value as is\n                this.mobileControl.setValue(value, { emitEvent: false });\n            }\n        }\n    }\n\n    /**\n     * Gets dial codes sorted by length (longest first) for better matching\n     * \n     * @param {boolean} removePrefix - Whether to remove '+' prefix from dial codes\n     * @returns {string[]} Sorted dial codes\n     * @private\n     * @memberof GlobalPhoneInputComponent\n     */\n    private getSortedDialCodes(removePrefix: boolean = false): string[] {\n        return COUNTRIES_DATA\n            .map(country => removePrefix ? country.dialCode.replace('+', '') : country.dialCode)\n            .sort((a, b) => b.length - a.length);\n    }\n\n    /**\n     * Finds a country by matching dial code from the beginning of a phone number\n     * \n     * @param {string} phoneNumber - Phone number starting with +\n     * @returns {Country | null} Matching country or null\n     * @private\n     * @memberof GlobalPhoneInputComponent\n     */\n    private findCountryByDialCode(phoneNumber: string): Country | null {\n        if (!phoneNumber.startsWith('+')) {\n            return null;\n        }\n        \n        // Use optimized sorted dial codes for matching\n        const sortedDialCodes = this.getSortedDialCodes();\n        \n        for (const dialCode of sortedDialCodes) {\n            if (phoneNumber.startsWith(dialCode)) {\n                return this.countries.find(country => country.dialCode === dialCode) || null;\n            }\n        }\n        \n        return null;\n    }\n\n\n    /**\n     * Gets formatted phone number using libphonenumber\n     *\n     * @param {PhoneNumberFormat} format - Format type (INTERNATIONAL, NATIONAL, E164, etc.)\n     * @returns {string} Formatted phone number\n     * @memberof GlobalPhoneInputComponent\n     */\n    public getFormattedPhoneNumber(format: any = libphonenumber.PhoneNumberFormat.INTERNATIONAL): string {\n        if (!this.selectedCountry || !this.mobileControl.value) {\n            return '';\n        }\n\n        const phoneUtil = libphonenumber.PhoneNumberUtil.getInstance();\n        \n        try {\n            const phoneNumber = phoneUtil.parse(this.mobileControl.value, this.selectedCountry.code);\n            \n            if (phoneUtil.isValidNumber(phoneNumber)) {\n                return phoneUtil.format(phoneNumber, format);\n            }\n        } catch (error) {\n            // If parsing fails, return the original value\n        }\n        \n        return this.mobileControl.value;\n    }\n\n    /**\n     * Gets E164 format of the phone number (e.g., +447700900123)\n     *\n     * @returns {string} E164 formatted phone number\n     * @memberof GlobalPhoneInputComponent\n     */\n    public getE164PhoneNumber(): string {\n        return this.getFormattedPhoneNumber(libphonenumber.PhoneNumberFormat.E164);\n    }\n\n    /**\n     * Gets national format of the phone number (e.g., 07700 900123)\n     *\n     * @returns {string} National formatted phone number\n     * @memberof GlobalPhoneInputComponent\n     */\n    public getNationalPhoneNumber(): string {\n        return this.getFormattedPhoneNumber(libphonenumber.PhoneNumberFormat.NATIONAL);\n    }\n\n    /**\n     * Gets international format of the phone number (e.g., +44 7700 900123)\n     *\n     * @returns {string} International formatted phone number\n     * @memberof GlobalPhoneInputComponent\n     */\n    public getInternationalPhoneNumber(): string {\n        return this.getFormattedPhoneNumber(libphonenumber.PhoneNumberFormat.INTERNATIONAL);\n    }\n\n    /**\n     * Validates if the current phone number is valid using libphonenumber\n     *\n     * @returns {boolean} True if the phone number is valid\n     * @memberof GlobalPhoneInputComponent\n     */\n    public isPhoneNumberValid(): boolean {\n        if (!this.selectedCountry || !this.mobileControl.value) {\n            return false;\n        }\n\n        const phoneUtil = libphonenumber.PhoneNumberUtil.getInstance();\n        \n        try {\n            const phoneNumber = phoneUtil.parse(this.mobileControl.value, this.selectedCountry.code);\n            return phoneUtil.isValidNumber(phoneNumber);\n        } catch (error) {\n            return false;\n        }\n    }\n\n    /**\n     * Gets the phone number type (MOBILE, FIXED_LINE, etc.)\n     *\n     * @returns {PhoneNumberType | null} Phone number type or null if invalid\n     * @memberof GlobalPhoneInputComponent\n     */\n    public getPhoneNumberType(): any | null {\n        if (!this.selectedCountry || !this.mobileControl.value) {\n            return null;\n        }\n\n        const phoneUtil = libphonenumber.PhoneNumberUtil.getInstance();\n        \n        try {\n            const phoneNumber = phoneUtil.parse(this.mobileControl.value, this.selectedCountry.code);\n            return phoneUtil.getNumberType(phoneNumber);\n        } catch (error) {\n            return null;\n        }\n    }\n\n    /**\n     * Auto-formats the input as user types (optional feature)\n     *\n     * @param {boolean} enable - Whether to enable auto-formatting\n     * @memberof GlobalPhoneInputComponent\n     */\n    public enableAutoFormatting(enable: boolean = true): void {\n        if (enable) {\n            this.mobileControl.valueChanges.pipe(\n                takeUntil(this.destroyed$),\n                distinctUntilChanged()\n            ).subscribe(value => {\n                if (value && this.selectedCountry) {\n                    const formatted = this.getNationalPhoneNumber();\n                    if (formatted !== value) {\n                        this.mobileControl.setValue(formatted, { emitEvent: false });\n                    }\n                }\n            });\n        }\n    }\n}","<div class=\"mobile-number-container\" [attr.id]=\"id\">\r\n    <mat-form-field appearance=\"outline\" floatLabel=\"always\" class=\"pointer-event-none mobile-input\">\r\n        <mat-label>{{ label }}</mat-label>\r\n        <div class=\"input-wrapper d-flex column-gap-1\">\r\n            <div class=\"country-select-wrapper\" (click)=\"$event.stopPropagation()\">\r\n                <mat-select\r\n                    [formControl]=\"countryControl\"\r\n                    panelWidth=\"400px\"\r\n                    [attr.id]=\"id ? id + '-country' : null\"\r\n                    (selectionChange)=\"onCountryChange($event.value)\"\r\n                >\r\n                    <mat-select-trigger>\r\n                        <span *ngIf=\"selectedCountry\" class=\"selected-country-trigger\">\r\n                            <img\r\n                                *ngIf=\"isImageFlag(selectedCountry); else emojiFlag\"\r\n                                [src]=\"getFlagDisplay(selectedCountry)\"\r\n                                [alt]=\"selectedCountry.name + ' flag'\"\r\n                                class=\"flag-image\"\r\n                            />\r\n                            <ng-template #emojiFlag>\r\n                                <span class=\"flag\">{{ getFlagDisplay(selectedCountry) }}</span>\r\n                            </ng-template>\r\n                            <!-- <span class=\"dial-code\">{{ selectedCountry.dialCode }}</span> -->\r\n                        </span>\r\n                        <span *ngIf=\"!selectedCountry\" class=\"placeholder-text\">Select Country</span>\r\n                    </mat-select-trigger>\r\n                    <mat-option *ngFor=\"let country of countries\" [value]=\"country\">\r\n                        <span class=\"country-option\">\r\n                            <img\r\n                                *ngIf=\"isImageFlag(country); else emojiOption\"\r\n                                [src]=\"getFlagDisplay(country)\"\r\n                                [alt]=\"country.name + ' flag'\"\r\n                                class=\"flag-image\"\r\n                            />\r\n                            <ng-template #emojiOption>\r\n                                <span class=\"flag\">{{ getFlagDisplay(country) }}</span>\r\n                            </ng-template>\r\n                            <span class=\"country-name\">{{ country.name }}</span>\r\n                            <span class=\"d-inline-flex align-items-center\">\r\n                                <span class=\"native-name\" *ngIf=\"country.nativeName !== country.name && country.nativeName !== country.dialCode\"\r\n                                    >({{ country.nativeName }})</span\r\n                                >\r\n                                <span class=\"dial-code text-gray\">{{ country.dialCode }}</span>\r\n                            </span>\r\n                        </span>\r\n                    </mat-option>\r\n                </mat-select>\r\n            </div>\r\n            <input\r\n                #mobileInput\r\n                matInput\r\n                type=\"tel\"\r\n                class=\"flex-grow-1\"\r\n                [formControl]=\"mobileControl\"\r\n                [attr.id]=\"id ? id + '-mobile' : null\"\r\n                [name]=\"name || 'mobileNumber'\"\r\n                [placeholder]=\"placeholder || 'Enter mobile number'\"\r\n                (input)=\"onMobileInput($event)\"\r\n                (keypress)=\"onKeyPress($event)\"\r\n                (click)=\"$event.stopPropagation()\"\r\n                autocomplete=\"tel\"\r\n            />\r\n        </div>\r\n        <!-- <mat-error *ngIf=\"mobileControl.hasError('required')\">\r\n            Mobile number is required\r\n        </mat-error>\r\n        <mat-error *ngIf=\"mobileControl.hasError('invalidLength')\">\r\n            Mobile number must be between {{ selectedCountry?.minLength }} and {{ selectedCountry?.maxLength }} digits\r\n        </mat-error>\r\n        <mat-error *ngIf=\"mobileControl.hasError('invalidPattern')\">\r\n            Please enter valid mobile number for {{ selectedCountry?.name }}\r\n        </mat-error> -->\r\n    </mat-form-field>\r\n    <!-- <p class=\"font-12 text-gray\">{{ getFullPhoneNumber() }}</p> -->\r\n    <span class=\"text-danger\" *ngIf=\"mobileControl.hasError('required')\">Mobile number is required</span>\r\n    <span class=\"text-danger\" *ngIf=\"mobileControl.hasError('invalidLength')\">\r\n        Invalid mobile number length for {{ selectedCountry?.name }}\r\n    </span>\r\n    <span class=\"text-danger\" *ngIf=\"mobileControl.hasError('invalidPattern')\">\r\n        Please enter valid mobile number for {{ selectedCountry?.name }}\r\n    </span>\r\n    <span class=\"text-danger\" *ngIf=\"mobileControl.hasError('wrongCountry')\">\r\n        This number belongs to a different country\r\n    </span>\r\n    <span class=\"text-danger\" *ngIf=\"mobileControl.hasError('invalidNumber')\">\r\n        This is not a valid phone number\r\n    </span>\r\n    <span class=\"text-danger\" *ngIf=\"mobileControl.hasError('notMobile')\">\r\n        This is not a mobile phone number\r\n    </span>\r\n    <span class=\"text-danger\" *ngIf=\"mobileControl.hasError('obviouslyInvalid')\">\r\n        This number appears to be invalid (repeated or sequential digits)\r\n    </span>\r\n    <span class=\"text-danger\" *ngIf=\"mobileControl.hasError('impossibleNumber')\">\r\n        This number is not possible for {{ selectedCountry?.name }}\r\n    </span>\r\n    <span class=\"text-danger\" *ngIf=\"mobileControl.hasError('parseError')\">\r\n        Unable to parse this phone number\r\n    </span>\r\n    <span class=\"text-danger\" *ngIf=\"mobileControl.hasError('invalidFormat')\">\r\n        Invalid phone number format\r\n    </span>\r\n</div>\r\n","/*\n * Public API Surface of global-phone-input\n */\n\n// export * from './lib/global-phone-input.service';\nexport * from './lib/global-phone-input.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.GlobalPhoneInputService"],"mappings":";;;;;;;;;;;;;;;;;;;;AAeI;AACG,MAAM,cAAc,GAAc;AACrC,IAAA;AACI,QAAA,IAAI,EAAE,eAAe;AACrB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,eAAe;AAC9B,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,gBAAgB;AACtB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,KAAK;AACpB,KAAA;;AAED,IAAA;AACI,QAAA,IAAI,EAAE,aAAa;AACnB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,WAAW;AAC1B,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,gBAAgB;AACtB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,OAAO;AACjB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,OAAO;AACtB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,OAAO;AACjB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,OAAO;AACtB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,qBAAqB;AAC3B,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,OAAO;AACjB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,OAAO;AACtB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,WAAW;AACjB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,KAAK;AACpB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,WAAW;AACjB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,KAAK;AACpB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,KAAK;AACpB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,YAAY;AAClB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;;AAED,IAAA;AACI,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,OAAO;AACjB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,OAAO;AACtB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,YAAY;AAClB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,OAAO;AACjB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,OAAO;AACtB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,KAAK;AACpB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,OAAO;AACjB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,OAAO;AACtB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,wBAAwB;AAC9B,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,KAAK;AACpB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,wBAAwB;AAC9B,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,OAAO;AACjB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,wBAAwB;AACvC,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,cAAc;AACpB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;;AAED,IAAA;AACI,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,QAAQ;AACvB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,YAAY;AAClB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,gBAAgB;AACtB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,OAAO;AACjB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,OAAO;AACtB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,0BAA0B;AAChC,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,KAAK;AACpB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,KAAK;AACpB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,KAAK;AACpB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,kCAAkC;AACxC,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,cAAc;AACpB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,YAAY;AAClB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,KAAK;AACpB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,gBAAgB;AACtB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;;AAED,IAAA;AACI,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,KAAK;AACpB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,OAAO;AACjB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,OAAO;AACtB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,oBAAoB;AAC1B,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,OAAO;AACjB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,IAAI;AACnB,KAAA;;AAED,IAAA;AACI,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,KAAK;AACpB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,aAAa;AACnB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,mBAAmB;AACzB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;;AAED,IAAA;AACI,QAAA,IAAI,EAAE,kBAAkB;AACxB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,kBAAkB;AACjC,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,eAAe;AACrB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,KAAK;AACpB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,eAAe;AACrB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,kBAAkB;AACxB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;;AAED,IAAA;AACI,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,KAAK;AACpB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,WAAW;AACjB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,KAAK;AACpB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,WAAW;AACjB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,OAAO;AACjB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,OAAO;AACtB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,YAAY;AAClB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,OAAO;AACjB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,WAAW;AACjB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,KAAK;AACpB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,eAAe;AACrB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;;AAED,IAAA;AACI,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,WAAW;AACjB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,KAAK;AACpB,KAAA;;AAED,IAAA;AACI,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,WAAW;AACjB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,KAAK;AACpB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,KAAK;AACpB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,aAAa;AACnB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,KAAK;AACpB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,KAAK;AACpB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,aAAa;AACnB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,gBAAgB;AAC/B,KAAA;;AAED,IAAA;AACI,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,OAAO;AACjB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,OAAO;AACtB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,KAAK;AACpB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,KAAK;AACpB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;;AAED,IAAA;AACI,QAAA,IAAI,EAAE,YAAY;AAClB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,IAAI;AACnB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,EAAE;AACb,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,YAAY;AAClB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;;AAED,IAAA;AACI,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,eAAe;AACrB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,WAAW;AACjB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,YAAY;AAClB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;;AAED,IAAA;AACI,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,YAAY;AAClB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,KAAK;AACpB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,kBAAkB;AACxB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,YAAY;AAClB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,YAAY;AAClB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,WAAW;AACjB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,KAAK;AACpB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,YAAY;AAClB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,YAAY;AAClB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,YAAY;AAClB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,OAAO;AACjB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,OAAO;AACtB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,YAAY;AAClB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,KAAK;AACpB,KAAA;;AAED,IAAA;AACI,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,aAAa;AACnB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,KAAK;AACpB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,eAAe;AACrB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,aAAa;AACnB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,KAAK;AACpB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,WAAW;AACjB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,gBAAgB;AACtB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,aAAa;AACnB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,iBAAiB;AACvB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,0BAA0B;AAChC,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,OAAO;AACjB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,OAAO;AACtB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,KAAK;AACpB,KAAA;;AAED,IAAA;AACI,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;;AAED,IAAA;AACI,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,KAAK;AACpB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,WAAW;AACjB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,kBAAkB;AACxB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,KAAK;AACpB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,aAAa;AACnB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,KAAK;AACpB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,KAAK;AACpB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,KAAK;AACpB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,aAAa;AACnB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,IAAI;AACnB,KAAA;;AAED,IAAA;AACI,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;;AAED,IAAA;AACI,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,KAAK;AACpB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,IAAI;AACnB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;;AAED,IAAA;AACI,QAAA,IAAI,EAAE,cAAc;AACpB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,uBAAuB;AAC7B,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,OAAO;AACjB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,OAAO;AACtB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,aAAa;AACnB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,OAAO;AACjB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,OAAO;AACtB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,2BAA2B;AACjC,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,kCAAkC;AACxC,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,OAAO;AACjB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,OAAO;AACtB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,YAAY;AAClB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,uBAAuB;AAC7B,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,cAAc;AACpB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,YAAY;AAClB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,cAAc;AACpB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,WAAW;AACjB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,KAAK;AACpB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,cAAc;AACpB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,OAAO;AACjB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,OAAO;AACtB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,iBAAiB;AACvB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,cAAc;AACpB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,KAAK;AACpB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,aAAa;AACnB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,KAAK;AACpB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,aAAa;AACnB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,KAAK;AACpB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,WAAW;AACjB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,KAAK;AACpB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,wBAAwB;AAC9B,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,KAAK;AACpB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,WAAW;AACjB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,KAAK;AACpB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,aAAa;AACnB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,KAAK;AACpB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;;AAED,IAAA;AACI,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,YAAY;AAClB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,KAAK;AACpB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,aAAa;AACnB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,qBAAqB;AAC3B,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,OAAO;AACjB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,OAAO;AACtB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,KAAK;AACpB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,cAAc;AACpB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,0BAA0B;AAChC,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,OAAO;AACjB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,OAAO;AACtB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;;AAED,IAAA;AACI,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,sBAAsB;AAC5B,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;;;;;;;;;;;;;;;;;;;;;;;;;AAyBD,IAAA;AACI,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,mBAAmB;AACzB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,OAAO;AACjB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,OAAO;AACtB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,YAAY;AAClB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;;AAED,IAAA;AACI,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,cAAc;AACpB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,KAAK;AACpB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,WAAW;AACjB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,KAAK;AACpB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,KAAK;AACpB,KAAA;;AAED,IAAA;AACI,QAAA,IAAI,EAAE,mBAAmB;AACzB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,gBAAgB;AACtB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;;AAED,IAAA;AACI,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;;AAED,IAAA;AACI,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,4BAA4B;AACvC,QAAA,UAAU,EAAE,MAAM;AACrB,KAAA;CACJ;;ACt4DD;;;;;AAKG;MAIU,uBAAuB,CAAA;AAWhC;;;;;AAKG;AACH,IAAA,WAAA,CAAoB,IAAgB,EAAA;QAAhB,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAY;;QAdnB,IAAO,CAAA,OAAA,GAAG,oCAAoC,CAAC;;QAG/C,IAAS,CAAA,SAAA,GAAG,sCAAsC,CAAC;;QAGnD,IAAc,CAAA,cAAA,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;KAQnB;AAExC;;;;;;AAMG;IACI,cAAc,CAAC,WAAoB,IAAI,EAAA;;AAE1C,QAAA,IAAI,QAAQ,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;AAClC,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;AACxC,YAAA,IAAI,UAAU,EAAE;;AAEZ,gBAAA,OAAO,IAAI,UAAU,CAAC,QAAQ,IAAG;oBAC7B,UAAU,CAAC,MAAK;AACZ,wBAAA,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;wBAC/B,QAAQ,CAAC,QAAQ,EAAE,CAAC;qBACvB,EAAE,CAAC,CAAC,CAAC;AACV,iBAAC,CAAC,CAAC;AACN,aAAA;AACJ,SAAA;;AAGD,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAsB,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CACxD,GAAG,CAAC,CAAC,IAAI,KAAI;YACT,IAAI,IAAI,IAAI,QAAQ,EAAE;AAClB,gBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AAC5B,aAAA;AACL,SAAC,CAAC,EACF,UAAU,CAAC,CAAC,KAAK,KAAI;AACjB,YAAA,OAAO,CAAC,IAAI,CAAC,iCAAiC,EAAE,KAAK,CAAC,CAAC;AACvD,YAAA,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;SACnB,CAAC,CACL,CAAC;KACL;AAED;;;;;;AAMG;IACI,eAAe,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC;KAChC;AAED;;;;;;AAMG;AACI,IAAA,wBAAwB,CAAC,WAAmB,EAAA;AAC/C,QAAA,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;QACjE,OAAO,OAAO,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;KAC5C;AAED;;;;;AAKG;IACI,aAAa,GAAA;QAChB,IAAI;AACA,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YACxC,IAAI,CAAC,UAAU,EAAE;AACb,gBAAA,OAAO,KAAK,CAAC;AAChB,aAAA;AAED,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AACvB,YAAA,OAAO,GAAG,GAAG,UAAU,CAAC,UAAU,CAAC;AACtC,SAAA;AAAC,QAAA,OAAO,KAAK,EAAE;AACZ,YAAA,OAAO,CAAC,IAAI,CAAC,gCAAgC,EAAE,KAAK,CAAC,CAAC;AACtD,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;KACJ;AAED;;;;AAIG;IACI,UAAU,GAAA;QACb,IAAI;AACA,YAAA,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC3C,SAAA;AAAC,QAAA,OAAO,KAAK,EAAE;AACZ,YAAA,OAAO,CAAC,IAAI,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;AAChD,SAAA;KACJ;AAED;;;;;;AAMG;IACK,aAAa,GAAA;QACjB,IAAI;YACA,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACpD,IAAI,CAAC,MAAM,EAAE;AACT,gBAAA,OAAO,IAAI,CAAC;AACf,aAAA;YAED,MAAM,UAAU,GAA0B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;;AAG7D,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE;gBACrE,IAAI,CAAC,UAAU,EAAE,CAAC;AAClB,gBAAA,OAAO,IAAI,CAAC;AACf,aAAA;AAED,YAAA,OAAO,UAAU,CAAC;AACrB,SAAA;AAAC,QAAA,OAAO,KAAK,EAAE;AACZ,YAAA,OAAO,CAAC,IAAI,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;YAClD,IAAI,CAAC,UAAU,EAAE,CAAC;AAClB,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;KACJ;AAED;;;;;;AAMG;AACK,IAAA,aAAa,CAAC,IAAyB,EAAA;QAC3C,IAAI;AACA,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AACvB,YAAA,MAAM,UAAU,GAA0B;gBACtC,IAAI;AACJ,gBAAA,SAAS,EAAE,GAAG;AACd,gBAAA,UAAU,EAAE,GAAG,GAAG,IAAI,CAAC,cAAc;aACxC,CAAC;AAEF,YAAA,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;AACpE,SAAA;AAAC,QAAA,OAAO,KAAK,EAAE;AACZ,YAAA,OAAO,CAAC,IAAI,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;AACtD,SAAA;KACJ;+GAlKQ,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,cAFpB,MAAM,EAAA,CAAA,CAAA,EAAA;;4FAET,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAHnC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE,MAAM;AACrB,iBAAA,CAAA;;;ACvBD;;;AAGG;AACG,SAAU,qBAAqB,CAAC,OAAuB,EAAA;IACzD,OAAO,CAAC,OAAwB,KAA6B;AACzD,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,OAAO,EAAE;AAC5B,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AAED,QAAA,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACrD,IAAI,iBAAiB,GAAG,UAAU,CAAC;;QAGnC,MAAM,SAAS,GAAG,cAAc,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC;QAE/D,IAAI;AACA,YAAA,IAAI,WAAgB,CAAC;;AAGrB,YAAA,IAAI,iBAAiB,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;;gBAEnC,WAAW,GAAG,SAAS,CAAC,KAAK,CAAC,iBAAiB,EAAE,SAAS,CAAC,CAAC;AAC/D,aAAA;AAAM,iBAAA;;gBAEH,WAAW,GAAG,SAAS,CAAC,KAAK,CAAC,iBAAiB,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;AAClE,aAAA;;YAGD,MAAM,iBAAiB,GAAG,SAAS,CAAC,sBAAsB,CAAC,WAAW,CAAC,CAAC;;AAGxE,YAAA,IAAI,iBAAiB,KAAK,OAAO,CAAC,IAAI,EAAE;AACpC,gBAAA,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;AACjC,aAAA;;AAGD,YAAA,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE;AACvC,gBAAA,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;AAClC,aAAA;;YAGD,MAAM,UAAU,GAAG,SAAS,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;AACxD,YAAA,IAAI,UAAU,KAAK,cAAc,CAAC,eAAe,CAAC,MAAM;AACpD,gBAAA,UAAU,KAAK,cAAc,CAAC,eAAe,CAAC,oBAAoB,EAAE;AACpE,gBAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;AAC9B,aAAA;;YAGD,MAAM,cAAc,GAAG,WAAW,CAAC,iBAAiB,EAAE,CAAC,QAAQ,EAAE,CAAC;;AAGlE,YAAA,IAAI,kBAAkB,CAAC,cAAc,CAAC,EAAE;AACpC,gBAAA,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC;AACrC,aAAA;;AAGD,YAAA,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,WAAW,CAAC,EAAE;AAC1C,gBAAA,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC;AACrC,aAAA;AAED,YAAA,OAAO,IAAI,CAAC;AAEf,SAAA;AAAC,QAAA,OAAO,KAAK,EAAE;;AAEZ,YAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;AAC/B,SAAA;AACL,KAAC,CAAC;AACN,CAAC;AAED;;;;;;AAMG;AACH,SAAS,kBAAkB,CAAC,cAAsB,EAAA;;AAE9C,IAAA,IAAI,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE;AAClC,QAAA,OAAO,IAAI,CAAC;AACf,KAAA;;AAGD,IAAA,IAAI,YAAY,CAAC,cAAc,CAAC,EAAE;AAC9B,QAAA,OAAO,IAAI,CAAC;AACf,KAAA;;AAGD,IAAA,MAAM,YAAY,GAAG;QACjB,KAAK;QACL,SAAS;AACT,QAAA,SAAS;KACZ,CAAC;AAEF,IAAA,OAAO,YAAY,CAAC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;AACtE,CAAC;AAED;;;;;;AAMG;AACH,SAAS,YAAY,CAAC,MAAc,EAAA;AAChC,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;QACxC,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACnC,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACvC,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAEvC,IAAI,MAAM,KAAK,MAAM,GAAG,CAAC,IAAI,MAAM,KAAK,MAAM,GAAG,CAAC,EAAE;;YAEhD,IAAI,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE;;AAE/B,gBAAA,OAAO,IAAI,CAAC;AACf,aAAA;AACJ,SAAA;AACJ,KAAA;AACD,IAAA,OAAO,KAAK,CAAC;AACjB,CAAC;MA8BY,yBAAyB,CAAA;AAsDlC,IAAA,WAAA,CACY,uBAAgD,EAAA;QAAhD,IAAuB,CAAA,uBAAA,GAAvB,uBAAuB,CAAyB;;QAlD5C,IAAQ,CAAA,QAAA,GAAY,KAAK,CAAC;;QAG1B,IAAQ,CAAA,QAAA,GAAY,KAAK,CAAC;;QAY1B,IAAa,CAAA,aAAA,GAAY,KAAK,CAAC;;QAG/B,IAAW,CAAA,WAAA,GAAY,IAAI,CAAC;;AAM3B,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAW,CAAC;;AAG7C,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAU,CAAC;;AAGrD,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,WAAW,CAAiB,IAAI,CAAC,CAAC;AACvD,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,WAAW,CAAS,EAAE,CAAC,CAAC;;QAG5C,IAAe,CAAA,eAAA,GAAmB,IAAI,CAAC;;AAGtC,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,OAAO,EAAQ,CAAC;;QAGjC,IAA0B,CAAA,0BAAA,GAAY,KAAK,CAAC;;AAG5C,QAAA,IAAA,CAAA,QAAQ,GAAG,CAAC,KAAa,KAAI,GAAG,CAAC;AACjC,QAAA,IAAA,CAAA,SAAS,GAAG,MAAK,GAAG,CAAC;;QAGtB,IAAS,CAAA,SAAA,GAAc,cAAc,CAAC;KAIzC;AAEJ;;;;AAIG;IACI,QAAQ,GAAA;QACX,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC5B;AAED;;;;;AAKG;IACI,qBAAqB,GAAA;AACxB,QAAA,IAAI,CAAC,uBAAuB,CAAC,UAAU,EAAE,CAAC;KAC7C;AAED;;;;AAIG;IACI,WAAW,GAAA;AACd,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;AACvB,QAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;KAC9B;AAEA;;;;;;;AAOE;AACI,IAAA,QAAQ,CAAC,OAAwB,EAAA;;AAEpC,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;AAChB,YAAA,OAAO,IAAI,CAAC,QAAQ,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;AACpD,SAAA;;AAGD,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;AACvB,YAAA,OAAO,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC;AACtC,SAAA;QAED,IAAI;YACA,MAAM,SAAS,GAAG,cAAc,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC;AAC/D,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;;AAG7C,YAAA,MAAM,WAAW,GAAG,SAAS,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;;AAG3E,YAAA,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE;AACvC,gBAAA,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;AAClC,aAAA;;YAGD,MAAM,UAAU,GAAG,SAAS,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;AACxD,YAAA,IAAI,UAAU,KAAK,cAAc,CAAC,eAAe,CAAC,MAAM;AACpD,gBAAA,UAAU,KAAK,cAAc,CAAC,eAAe,CAAC,oBAAoB,EAAE;AACpE,gBAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;AAC9B,aAAA;;YAGD,MAAM,YAAY,GAAG,SAAS,CAAC,sBAAsB,CAAC,WAAW,CAAC,CAAC;AACnE,YAAA,IAAI,YAAY,KAAK,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE;AAC5C,gBAAA,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;AACjC,aAAA;YAED,OAAO,IAAI,CAAC;AAEf,SAAA;AAAC,QAAA,OAAO,KAAK,EAAE;;AAEZ,YAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;AAC/B,SAAA;KACJ;AAED;;;;;AAKG;IACK,iBAAiB,GAAA;;QAErB,IAAI,IAAI,CAAC,0BAA0B,EAAE;YACjC,OAAO;AACV,SAAA;QAED,IAAI,CAAC,uBAAuB,EAAE,CAAC;KAClC;AAED;;;;;AAKG;IACK,8BAA8B,GAAA;QAClC,IAAI,CAAC,uBAAuB,EAAE,CAAC;KAClC;AAED;;;;;;AAMG;IACK,uBAAuB,GAAA;QAC3B,IAAI,CAAC,uBAAuB,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC;AACxD,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aAChC,SAAS,CAAC,QAAQ,IAAG;;AAElB,YAAA,IAAI,QAAQ,IAAI,QAAQ,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;AAC/D,gBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,uBAAuB,CAAC,wBAAwB,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AAC7F,gBAAA,IAAI,QAAQ,EAAE;AACV,oBAAA,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;AACtF,oBAAA,IAAI,eAAe,EAAE;AACjB,wBAAA,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;AACvC,wBAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,eAAe,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;wBACpE,IAAI,CAAC,gBAAgB,EAAE,CAAC;wBACxB,OAAO;AACV,qBAAA;AACJ,iBAAA;AACJ,aAAA;;YAGD,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC7B,SAAC,CAAC,CAAC;KACV;AAED;;;;;AAKG;IACK,iBAAiB,GAAA;AACrB,QAAA,IAAI,cAAmC,CAAC;AAExC,QAAA,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;;AAEpE,YAAA,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,QAAQ,KAAK,IAAI,CAAC,kBAAkB,CAAC,CAAC;AACjG,SAAA;AAED,QAAA,IAAI,cAAc,EAAE;AAChB,YAAA,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;AACtC,YAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;YACnE,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC3B,SAAA;KACJ;AAGD;;;;;;AAMG;IACK,wBAAwB,GAAA;QAC5B,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC5B;AAED;;;;;AAKG;IACK,iBAAiB,GAAA;QACrB,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC3D,SAAA;QAED,IAAI,CAAC,aAAa,CAAC,YAAY;aAC1B,IAAI,CAAC,oBAAoB,EAAE,EAAE,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aACxD,SAAS,CAAC,KAAK,IAAG;YACf,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACxB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;YACrC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;AAC7C,SAAC,CAAC,CAAC;QAEP,IAAI,CAAC,cAAc,CAAC,YAAY;aAC3B,IAAI,CAAC,oBAAoB,EAAE,EAAE,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aACxD,SAAS,CAAC,OAAO,IAAG;AACjB,YAAA,IAAI,OAAO,EAAE;AACT,gBAAA,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC;gBAC/B,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACxB,gBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAClC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;AAC5C,aAAA;AACL,SAAC,CAAC,CAAC;KACV;AAED;;;;;AAKG;IACK,gBAAgB,GAAA;QACpB,MAAM,UAAU,GAAG,EAAE,CAAC;QAEtB,IAAI,IAAI,CAAC,QAAQ,EAAE;AACf,YAAA,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AACxC,SAAA;QAED,IAAI,IAAI,CAAC,eAAe,EAAE;YACtB,UAAU,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;AAChE,SAAA;AAED,QAAA,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QAC7C,IAAI,CAAC,aAAa,CAAC,sBAAsB,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;;AAGhE,QAAA,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;AAC1B,YAAA,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC;AACtC,SAAA;KACJ;AAED;;;;;AAKG;AACI,IAAA,eAAe,CAAC,OAAgB,EAAA;AACnC,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;AAC7C,QAAA,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC;QAC/B,IAAI,CAAC,gBAAgB,EAAE,CAAC;;AAGxB,QAAA,IAAI,CAAC,0BAA0B,GAAG,KAAK,CAAC;;AAGxC,QAAA,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;AAC1B,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YAClE,IAAI,YAAY,GAAG,YAAY,CAAC;;AAGhC,YAAA,IAAI,eAAe,EAAE;;AAEjB,gBAAA,IAAI,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;oBAC9B,IAAI,YAAY,CAAC,UAAU,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE;wBACnD,YAAY,GAAG,YAAY,CAAC,SAAS,CAAC,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC1E,qBAAA;AAAM,yBAAA;;wBAEH,MAAM,aAAa,GAAG,YAAY,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;AACvD,wBAAA,IAAI,aAAa,EAAE;AACf,4BAAA,YAAY,GAAG,YAAY,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAClE,yBAAA;AACJ,qBAAA;AACJ,iBAAA;AAAM,qBAAA;;oBAEH,MAAM,2BAA2B,GAAG,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC1E,oBAAA,IAAI,YAAY,CAAC,UAAU,CAAC,2BAA2B,CAAC,EAAE;wBACtD,YAAY,GAAG,YAAY,CAAC,SAAS,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAC;AAC7E,qBAAA;AACJ,iBAAA;AACJ,aAAA;;AAGD,YAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;AACnE,SAAA;AAED,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACrC;AAED;;;;;AAKG;AACI,IAAA,UAAU,CAAC,KAAoB,EAAA;AAClC,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC;AACvB,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAA0B,CAAC;AAChD,QAAA,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC;AAClC,QAAA,MAAM,cAAc,GAAG,MAAM,CAAC,cAAc,IAAI,CAAC,CAAC;;AAGlD,QAAA,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACpB,OAAO;AACV,SAAA;;QAGD,IAAI,IAAI,KAAK,GAAG,EAAE;YACd,IAAI,cAAc,KAAK,CAAC,EAAE;;AAEtB,gBAAA,IAAI,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;oBAC9B,KAAK,CAAC,cAAc,EAAE,CAAC;oBACvB,OAAO;AACV,iBAAA;AACD,gBAAA,OAAO;AACV,aAAA;AAAM,iBAAA;AACH,gBAAA,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,OAAO;AACV,aAAA;AACJ,SAAA;;AAGD,QAAA,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;YACnF,OAAO;AACV,SAAA;;;AAID,QAAA,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;YAC1C,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,OAAO;AACV,SAAA;;QAGD,KAAK,CAAC,cAAc,EAAE,CAAC;KAC1B;AAED;;;;;AAKG;AACI,IAAA,aAAa,CAAC,KAAY,EAAA;AAC7B,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAA0B,CAAC;AAChD,QAAA,IAAI,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;;AAGzB,QAAA,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;;AAGlC,QAAA,IAAI,MAAM,CAAC,KAAK,KAAK,KAAK,EAAE;AACxB,YAAA,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;AACxB,SAAA;;AAGD,QAAA,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;;AAGzC,QAAA,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC;AAChC,QAAA,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,KAAK,UAAU,EAAE;AACzC,YAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;AACjE,SAAA;QAED,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;QACzC,IAAI,CAAC,SAAS,EAAE,CAAC;KACpB;AAED;;;;;;;AAOG;IACK,oBAAoB,CAAC,KAAa,EAAE,MAAwB,EAAA;AAChE,QAAA,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;;AAEvB,YAAA,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAC3C,SAAA;aAAM,IAAI,IAAI,CAAC,eAAe,EAAE;;AAE7B,YAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;;;;AAKvE,YAAA,IAAI,iBAAiB,GAAG,mBAAmB,CAAC,MAAM,GAAG,CAAC,CAAC;;AAGvD,YAAA,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,KAAK,IAAI,EAAE;AACpC,gBAAA,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,mBAAmB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACnE,aAAA;AAED,YAAA,IAAI,KAAK,CAAC,UAAU,CAAC,mBAAmB,CAAC;gBACrC,KAAK,CAAC,MAAM,IAAI,iBAAiB;AACjC,gBAAA,KAAK,CAAC,MAAM,GAAG,EAAE,EAAE;;gBAEnB,MAAM,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;;;AAIjE,gBAAA,IAAI,IAAI,CAAC,wBAAwB,CAAC,YAAY,CAAC,EAAE;AAC7C,oBAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;AAChE,oBAAA,MAAM,CAAC,KAAK,GAAG,YAAY,CAAC;;oBAG5B,UAAU,CAAC,MAAK;wBACZ,MAAM,CAAC,iBAAiB,CAAC,YAAY,CAAC,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;qBACtE,EAAE,CAAC,CAAC,CAAC;AACT,iBAAA;AACJ,aAAA;AACJ,SAAA;KACJ;AAED;;;;;;;AAOG;AACK,IAAA,wBAAwB,CAAC,YAAoB,EAAA;AACjD,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,YAAY,EAAE;AACxC,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;;AAGD,QAAA,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,KAAK,IAAI,EAAE;AACpC,YAAA,OAAO,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACtC,SAAA;;AAGD,QAAA,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,KAAK,IAAI,EAAE;AAC1E,YAAA,OAAO,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACtC,SAAA;;;AAID,QAAA,OAAO,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;KACtC;AAED;;;;;;;AAOG;IACK,mBAAmB,CAAC,KAAa,EAAE,MAAwB,EAAA;;AAE/D,QAAA,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YAClB,OAAO;AACV,SAAA;;AAGD,QAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;AAE9B,QAAA,IAAI,IAAI,CAAC,eAAe,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE;;AAEzE,YAAA,IAAI,IAAI,CAAC,eAAe,CAAC,QAAQ,KAAK,IAAI,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;;gBAE5D,OAAO;AACV,aAAA;;YAGD,IAAI,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,MAAM,EAAE;AACrD,gBAAA,MAAM,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;;AAG3E,gBAAA,IAAI,MAAM,CAAC,KAAK,KAAK,YAAY,EAAE;AAC/B,oBAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;AAChE,oBAAA,MAAM,CAAC,KAAK,GAAG,YAAY,CAAC;;oBAG5B,UAAU,CAAC,MAAK;wBACZ,MAAM,CAAC,iBAAiB,CAAC,YAAY,CAAC,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;qBACtE,EAAE,CAAC,CAAC,CAAC;AACT,iBAAA;AACJ,aAAA;AACJ,SAAA;KACJ;AAED;;;;;;;AAOG;AACK,IAAA,aAAa,CAAC,KAAa,EAAA;AAC/B,QAAA,IAAI,CAAC,KAAK;AAAE,YAAA,OAAO,EAAE,CAAC;;;AAItB,QAAA,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AACvB,YAAA,OAAO,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;AAC1D,SAAA;;;QAID,OAAO,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;KACvC;AAED;;;;;;AAMG;AACI,IAAA,cAAc,CAAC,OAAgB,EAAA;AAClC,QAAA,IAAI,IAAI,CAAC,aAAa,IAAI,OAAO,CAAC,SAAS,EAAE;YACzC,OAAO,OAAO,CAAC,SAAS,CAAC;AAC5B,SAAA;QACD,OAAO,OAAO,CAAC,IAAI,CAAC;KACvB;AAED;;;;;;AAMG;AACI,IAAA,WAAW,CAAC,OAAgB,EAAA;QAC/B,OAAO,IAAI,CAAC,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;KAC3D;AAED;;;;;;AAMG;AACK,IAAA,iBAAiB,CAAC,KAAa,EAAA;;AAEnC,QAAA,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YAClB,OAAO;AACV,SAAA;;;AAID,QAAA,MAAM,eAAe,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;;AAGlG,QAAA,KAAK,MAAM,OAAO,IAAI,eAAe,EAAE;AACnC,YAAA,IAAI,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,MAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE;;AAE/E,gBAAA,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;;oBAE7B,IAAI,KAAK,CAAC,MAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE;wBACzC,IAAI,IAAI,CAAC,eAAe,EAAE,QAAQ,KAAK,OAAO,CAAC,QAAQ,EAAE;AACrD,4BAAA,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC;AAC/B,4BAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;AAC5D,4BAAA,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC;;AAGvC,4BAAA,MAAM,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC9D,4BAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;4BAEhE,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACxB,4BAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACrC,yBAAA;AACD,wBAAA,OAAO;AACV,qBAAA;AACJ,iBAAA;AACJ,aAAA;AACJ,SAAA;;;AAID,QAAA,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;;;YAGxB,MAAM,oBAAoB,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,IACjD,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CACvD,CAAC;;AAGF,YAAA,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC,IACjD,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAC1F,CAAC;AAEF,YAAA,IAAI,iBAAiB,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;;gBAEvC,OAAO;AACV,aAAA;AAED,YAAA,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE;gBACnB,MAAM,eAAe,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;gBACtD,IAAI,eAAe,IAAI,IAAI,CAAC,eAAe,EAAE,IAAI,KAAK,eAAe,CAAC,IAAI,EAAE;AACxE,oBAAA,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;AACvC,oBAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,eAAe,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;AACpE,oBAAA,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC;;AAGvC,oBAAA,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE;AACnB,wBAAA,MAAM,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACtE,wBAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;AACnE,qBAAA;oBAED,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACxB,oBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AAC7C,iBAAA;AACJ,aAAA;AAAM,iBAAA,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE;;AAE1B,gBAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;gBAC5D,IAAI,SAAS,IAAI,IAAI,CAAC,eAAe,EAAE,IAAI,KAAK,SAAS,CAAC,IAAI,EAAE;AAC5D,oBAAA,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;AACjC,oBAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;AAC9D,oBAAA,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC;oBACvC,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACxB,oBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACvC,iBAAA;AACJ,aAAA;YACD,OAAO;AACV,SAAA;;AAGD,QAAA,KAAK,MAAM,OAAO,IAAI,eAAe,EAAE;AACnC,YAAA,IAAI,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,MAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE;gBAC/E,IAAI,IAAI,CAAC,eAAe,EAAE,QAAQ,KAAK,OAAO,CAAC,QAAQ,EAAE;AACrD,oBAAA,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC;AAC/B,oBAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;AAC5D,oBAAA,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC;;AAGvC,oBAAA,MAAM,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC9D,oBAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;oBAEhE,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACxB,oBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACrC,iBAAA;gBACD,MAAM;AACT,aAAA;AACJ,SAAA;KACJ;AAED;;;;;;;AAOG;AACK,IAAA,iBAAiB,CAAC,KAAa,EAAA;;QAEnC,MAAM,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QACtC,MAAM,QAAQ,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAE5C,QAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;;AAEvB,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC;AAC5D,SAAA;;AAGD,QAAA,MAAM,iBAAiB,GAAG;;YAEtB,KAAK,EAAE,KAAK,EAAE,KAAK;;AAEnB,YAAA,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;;AAEjC,YAAA,KAAK,EAAE,KAAK;;YAEZ,KAAK;;YAEL,KAAK;;YAEL,KAAK;;AAEL,YAAA,KAAK,EAAE,KAAK;;YAEZ,KAAK;;YAEL,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;;YAEhG,KAAK;;AAEL,YAAA,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;;AAEpE,YAAA,KAAK,EAAE,KAAK;;YAEZ,KAAK;SACR,CAAC;AAEF,QAAA,IAAI,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;AACtC,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC;AAC5D,SAAA;AAAM,aAAA;AACH,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC;AAC5D,SAAA;KACJ;AAED;;;;;AAKG;IACI,kBAAkB,GAAA;QACrB,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;AACpD,YAAA,OAAO,EAAE,CAAC;AACb,SAAA;AAED,QAAA,IAAI,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;;QAGhE,IAAI,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE;AACxD,YAAA,OAAO,YAAY,CAAC;AACvB,SAAA;;;;AAKD,QAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACvE,QAAA,IAAI,YAAY,CAAC,UAAU,CAAC,mBAAmB,CAAC;AAC5C,YAAA,YAAY,CAAC,MAAM,GAAG,EAAE,EAAE;;AAE1B,YAAA,OAAO,IAAI,CAAC,eAAe,CAAC,QAAQ,GAAG,YAAY,CAAC,SAAS,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;AAC7F,SAAA;;AAGD,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,QAAQ,GAAG,YAAY,CAAC;KACvD;;AAID;;;;;AAKG;AACI,IAAA,gBAAgB,CAAC,EAA2B,EAAA;AAC/C,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACtB;AAED;;;;;AAKG;AACI,IAAA,iBAAiB,CAAC,EAAc,EAAA;AACnC,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;KACvB;AAED;;;;;AAKG;AACI,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AACvC,QAAA,IAAI,UAAU,EAAE;YACZ,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;YACjD,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;AACrD,SAAA;AAAM,aAAA;YACH,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;YAChD,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;AACpD,SAAA;KACJ;AAED;;;;;AAKG;AACI,IAAA,UAAU,CAAC,KAAa,EAAA;AAC3B,QAAA,IAAI,KAAK,EAAE;;AAEP,YAAA,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;;AAEvB,gBAAA,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC;AACzC,aAAA;AAAM,iBAAA,IAAI,IAAI,CAAC,2BAA2B,CAAC,KAAK,CAAC,EAAE;;AAEhD,gBAAA,IAAI,CAAC,yBAAyB,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC;AAC/C,aAAA;AAAM,iBAAA;;AAEH,gBAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;;AAE5D,aAAA;AACJ,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;;AAEtD,YAAA,IAAI,CAAC,0BAA0B,GAAG,KAAK,CAAC;;YAExC,IAAI,CAAC,8BAA8B,EAAE,CAAC;AACzC,SAAA;KACJ;AAED;;;;;;;AAOG;AACK,IAAA,2BAA2B,CAAC,KAAa,EAAA;;AAE7C,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,IAAI,EAAE,EAAE;AAC5C,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;;QAGD,MAAM,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;AAEzD,QAAA,OAAO,kBAAkB,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;KAClE;AAED;;;;;;AAMG;AACK,IAAA,yBAAyB,CAAC,KAAa,EAAA;;AAE3C,QAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;;AAG9B,QAAA,IAAI,IAAI,CAAC,eAAe,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE;;AAEzE,YAAA,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC;;AAGvC,YAAA,MAAM,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC3E,YAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;AACnE,SAAA;AAAM,aAAA;;YAEH,MAAM,eAAe,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;AAC1D,YAAA,IAAI,eAAe,EAAE;AACjB,gBAAA,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;AACvC,gBAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,eAAe,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;gBACpE,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACxB,gBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;;AAG1C,gBAAA,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC;;AAGvC,gBAAA,MAAM,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACtE,gBAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;AACnE,aAAA;AAAM,iBAAA;;AAEH,gBAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;AAC5D,aAAA;AACJ,SAAA;KACJ;AAED;;;;;;;AAOG;IACK,kBAAkB,CAAC,eAAwB,KAAK,EAAA;AACpD,QAAA,OAAO,cAAc;aAChB,GAAG,CAAC,OAAO,IAAI,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC;AACnF,aAAA,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;KAC5C;AAED;;;;;;;AAOG;AACK,IAAA,qBAAqB,CAAC,WAAmB,EAAA;AAC7C,QAAA,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AAC9B,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;;AAGD,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAElD,QAAA,KAAK,MAAM,QAAQ,IAAI,eAAe,EAAE;AACpC,YAAA,IAAI,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;AAClC,gBAAA,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC,IAAI,IAAI,CAAC;AAChF,aAAA;AACJ,SAAA;AAED,QAAA,OAAO,IAAI,CAAC;KACf;AAGD;;;;;;AAMG;AACI,IAAA,uBAAuB,CAAC,MAAc,GAAA,cAAc,CAAC,iBAAiB,CAAC,aAAa,EAAA;QACvF,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;AACpD,YAAA,OAAO,EAAE,CAAC;AACb,SAAA;QAED,MAAM,SAAS,GAAG,cAAc,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC;QAE/D,IAAI;AACA,YAAA,MAAM,WAAW,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AAEzF,YAAA,IAAI,SAAS,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE;gBACtC,OAAO,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;AAChD,aAAA;AACJ,SAAA;AAAC,QAAA,OAAO,KAAK,EAAE;;AAEf,SAAA;AAED,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;KACnC;AAED;;;;;AAKG;IACI,kBAAkB,GAAA;QACrB,OAAO,IAAI,CAAC,uBAAuB,CAAC,cAAc,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;KAC9E;AAED;;;;;AAKG;IACI,sBAAsB,GAAA;QACzB,OAAO,IAAI,CAAC,uBAAuB,CAAC,cAAc,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;KAClF;AAED;;;;;AAKG;IACI,2BAA2B,GAAA;QAC9B,OAAO,IAAI,CAAC,uBAAuB,CAAC,cAAc,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;KACvF;AAED;;;;;AAKG;IACI,kBAAkB,GAAA;QACrB,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;AACpD,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;QAED,MAAM,SAAS,GAAG,cAAc,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC;QAE/D,IAAI;AACA,YAAA,MAAM,WAAW,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AACzF,YAAA,OAAO,SAAS,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;AAC/C,SAAA;AAAC,QAAA,OAAO,KAAK,EAAE;AACZ,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;KACJ;AAED;;;;;AAKG;IACI,kBAAkB,GAAA;QACrB,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;AACpD,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;QAED,MAAM,SAAS,GAAG,cAAc,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC;QAE/D,IAAI;AACA,YAAA,MAAM,WAAW,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AACzF,YAAA,OAAO,SAAS,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;AAC/C,SAAA;AAAC,QAAA,OAAO,KAAK,EAAE;AACZ,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;KACJ;AAED;;;;;AAKG;IACI,oBAAoB,CAAC,SAAkB,IAAI,EAAA;AAC9C,QAAA,IAAI,MAAM,EAAE;YACR,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,IAAI,CAChC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,EAC1B,oBAAoB,EAAE,CACzB,CAAC,SAAS,CAAC,KAAK,IAAG;AAChB,gBAAA,IAAI,KAAK,IAAI,IAAI,CAAC,eAAe,EAAE;AAC/B,oBAAA,MAAM,SAAS,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC;oBAChD,IAAI,SAAS,KAAK,KAAK,EAAE;AACrB,wBAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;AAChE,qBAAA;AACJ,iBAAA;AACL,aAAC,CAAC,CAAC;AACN,SAAA;KACJ;+GAriCQ,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,uBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,EAhBvB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,aAAA,EAAA,eAAA,EAAA,WAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,SAAA,EAAA;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,yBAAyB,CAAC;AACxD,gBAAA,KAAK,EAAE,IAAI;AACd,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,aAAa;AACtB,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,yBAAyB,CAAC;gBACxD,KAAK,EAAE,IAAI;AACZ,aAAA;AACJ,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC9JL,6vLAuGA,EAAA,MAAA,EAAA,CAAA,0jBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDoCQ,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,mBAAmB,EACnB,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,kBAAkB,EAClB,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,EACf,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,UAAA,EAAA,YAAA,EAAA,8BAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,cAAc,EACd,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,aAAa,8BACb,gBAAgB,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAkBX,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBA5BrC,SAAS;+BACI,oBAAoB,EAAA,UAAA,EAClB,IAAI,EACP,OAAA,EAAA;wBACL,YAAY;wBACZ,mBAAmB;wBACnB,kBAAkB;wBAClB,eAAe;wBACf,cAAc;wBACd,aAAa;wBACb,gBAAgB;qBACnB,EACU,SAAA,EAAA;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,+BAA+B,CAAC;AACxD,4BAAA,KAAK,EAAE,IAAI;AACd,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,aAAa;AACtB,4BAAA,WAAW,EAAE,UAAU,CAAC,+BAA+B,CAAC;4BACxD,KAAK,EAAE,IAAI;AACZ,yBAAA;AACJ,qBAAA,EAAA,QAAA,EAAA,6vLAAA,EAAA,MAAA,EAAA,CAAA,0jBAAA,CAAA,EAAA,CAAA;2GAOe,KAAK,EAAA,CAAA;sBAApB,KAAK;gBAGU,QAAQ,EAAA,CAAA;sBAAvB,KAAK;gBAGU,QAAQ,EAAA,CAAA;sBAAvB,KAAK;gBAGU,WAAW,EAAA,CAAA;sBAA1B,KAAK;gBAGU,EAAE,EAAA,CAAA;sBAAjB,KAAK;gBAGU,IAAI,EAAA,CAAA;sBAAnB,KAAK;gBAGU,aAAa,EAAA,CAAA;sBAA5B,KAAK;gBAGU,WAAW,EAAA,CAAA;sBAA1B,KAAK;gBAGU,kBAAkB,EAAA,CAAA;sBAAjC,KAAK;gBAGW,cAAc,EAAA,CAAA;sBAA9B,MAAM;gBAGU,aAAa,EAAA,CAAA;sBAA7B,MAAM;;;AEnMX;;AAEG;AAEH;;ACJA;;AAEG;;;;"}