re2js 0.2.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"index.umd.js","sources":["../src/RE2Flags.js","../src/Codepoint.js","../src/UnicodeTables.js","../src/Unicode.js","../src/Utils.js","../src/helpers.js","../src/MatcherInput.js","../src/exceptions.js","../src/Matcher.js","../src/MachineInput.js","../src/Regexp.js","../src/Inst.js","../src/Prog.js","../src/Compiler.js","../src/Simplify.js","../src/CharGroup.js","../src/CharClass.js","../src/Parser.js","../src/Machine.js","../src/RE2.js","../src/index.js"],"sourcesContent":["//// Parser flags.\nclass RE2Flags {\n // Fold case during matching (case-insensitive).\n static FOLD_CASE = 0x01\n // Treat pattern as a literal string instead of a regexp.\n static LITERAL = 0x02\n // Allow character classes like [^a-z] and [[:space:]] to match newline.\n static CLASS_NL = 0x04\n // Allow '.' to match newline.\n static DOT_NL = 0x08\n // Treat ^ and $ as only matching at beginning and end of text, not\n // around embedded newlines. (Perl's default).\n static ONE_LINE = 0x10\n // Make repetition operators default to non-greedy.\n static NON_GREEDY = 0x20\n // allow Perl extensions:\n // non-capturing parens - (?: )\n // non-greedy operators - *? +? ?? {}?\n // flag edits - (?i) (?-i) (?i: )\n // i - FoldCase\n // m - !OneLine\n // s - DotNL\n // U - NonGreedy\n // line ends: \\A \\z\n // \\Q and \\E to disable/enable metacharacters\n // (?P<name>expr) for named captures\n // \\C (any byte) is not supported.\n static PERL_X = 0x40\n // Allow \\p{Han}, \\P{Han} for Unicode group and negation.\n static UNICODE_GROUPS = 0x80\n // Regexp END_TEXT was $, not \\z. Internal use only.\n static WAS_DOLLAR = 0x100\n\n static MATCH_NL = RE2Flags.CLASS_NL | RE2Flags.DOT_NL\n // As close to Perl as possible.\n static PERL = RE2Flags.CLASS_NL | RE2Flags.ONE_LINE | RE2Flags.PERL_X | RE2Flags.UNICODE_GROUPS\n // POSIX syntax.\n static POSIX = 0\n //// Anchors\n static UNANCHORED = 0\n static ANCHOR_START = 1\n static ANCHOR_BOTH = 2\n}\n\nexport { RE2Flags }\n","/**\n * Various constants and helper for unicode codepoints.\n */\nclass Codepoint {\n // codePointAt(0)\n static CODES = new Map([\n ['\\x07', 7],\n ['\\b', 8],\n ['\\t', 9],\n ['\\n', 10],\n ['\\v', 11],\n ['\\f', 12],\n ['\\r', 13],\n [' ', 32],\n ['\"', 34],\n ['$', 36],\n ['&', 38],\n ['(', 40],\n [')', 41],\n ['*', 42],\n ['+', 43],\n ['-', 45],\n ['.', 46],\n ['0', 48],\n ['1', 49],\n ['2', 50],\n ['3', 51],\n ['4', 52],\n ['5', 53],\n ['6', 54],\n ['7', 55],\n ['8', 56],\n ['9', 57],\n [':', 58],\n ['<', 60],\n ['>', 62],\n ['?', 63],\n ['A', 65],\n ['B', 66],\n ['C', 67],\n ['F', 70],\n ['P', 80],\n ['Q', 81],\n ['U', 85],\n ['Z', 90],\n ['[', 91],\n ['\\\\', 92],\n [']', 93],\n ['^', 94],\n ['_', 95],\n ['a', 97],\n ['b', 98],\n ['f', 102],\n ['i', 105],\n ['m', 109],\n ['n', 110],\n ['r', 114],\n ['s', 115],\n ['t', 116],\n ['v', 118],\n ['x', 120],\n ['z', 122],\n ['{', 123],\n ['|', 124],\n ['}', 125]\n ])\n\n // convert unicode codepoint to upper case codepoint\n // return same codepoint, if cannot do it (or codepoint not have upper variation)\n static toUpperCase(codepoint) {\n const s = String.fromCodePoint(codepoint).toUpperCase()\n if (s.length > 1) {\n return codepoint\n }\n const sOrigin = String.fromCodePoint(s.codePointAt(0)).toLowerCase()\n if (sOrigin.length > 1 || sOrigin.codePointAt(0) !== codepoint) {\n return codepoint\n }\n return s.codePointAt(0)\n }\n\n // convert unicode codepoint to lower case codepoint\n // return same codepoint, if cannot do it (or codepoint not have lower variation)\n static toLowerCase(codepoint) {\n const s = String.fromCodePoint(codepoint).toLowerCase()\n if (s.length > 1) {\n return codepoint\n }\n const sOrigin = String.fromCodePoint(s.codePointAt(0)).toUpperCase()\n if (sOrigin.length > 1 || sOrigin.codePointAt(0) !== codepoint) {\n return codepoint\n }\n return s.codePointAt(0)\n }\n}\n\nexport { Codepoint }\n","// GENERATED BY tools/scripts/genUnicodeTable.js; DO NOT EDIT.\n// yarn node ./tools/scripts/genUnicodeTable.js > src/UnicodeTables.js\n\nclass UnicodeTables {\n static CASE_ORBIT = new Map([\n [75, 107],\n [107, 8490],\n [8490, 75],\n [83, 115],\n [115, 383],\n [383, 83],\n [181, 924],\n [924, 956],\n [956, 181],\n [197, 229],\n [229, 8491],\n [8491, 197],\n [452, 453],\n [453, 454],\n [454, 452],\n [455, 456],\n [456, 457],\n [457, 455],\n [458, 459],\n [459, 460],\n [460, 458],\n [497, 498],\n [498, 499],\n [499, 497],\n [837, 921],\n [921, 953],\n [953, 8126],\n [8126, 837],\n [914, 946],\n [946, 976],\n [976, 914],\n [917, 949],\n [949, 1013],\n [1013, 917],\n [920, 952],\n [952, 977],\n [977, 1012],\n [1012, 920],\n [922, 954],\n [954, 1008],\n [1008, 922],\n [928, 960],\n [960, 982],\n [982, 928],\n [929, 961],\n [961, 1009],\n [1009, 929],\n [931, 962],\n [962, 963],\n [963, 931],\n [934, 966],\n [966, 981],\n [981, 934],\n [937, 969],\n [969, 8486],\n [8486, 937],\n [1042, 1074],\n [1074, 7296],\n [7296, 1042],\n [1044, 1076],\n [1076, 7297],\n [7297, 1044],\n [1054, 1086],\n [1086, 7298],\n [7298, 1054],\n [1057, 1089],\n [1089, 7299],\n [7299, 1057],\n [1058, 1090],\n [1090, 7300],\n [7300, 7301],\n [7301, 1058],\n [1066, 1098],\n [1098, 7302],\n [7302, 1066],\n [1122, 1123],\n [1123, 7303],\n [7303, 1122],\n [7304, 42570],\n [42570, 42571],\n [42571, 7304],\n [7776, 7777],\n [7777, 7835],\n [7835, 7776],\n [223, 7838],\n [7838, 223],\n [8064, 8072],\n [8072, 8064],\n [8065, 8073],\n [8073, 8065],\n [8066, 8074],\n [8074, 8066],\n [8067, 8075],\n [8075, 8067],\n [8068, 8076],\n [8076, 8068],\n [8069, 8077],\n [8077, 8069],\n [8070, 8078],\n [8078, 8070],\n [8071, 8079],\n [8079, 8071],\n [8080, 8088],\n [8088, 8080],\n [8081, 8089],\n [8089, 8081],\n [8082, 8090],\n [8090, 8082],\n [8083, 8091],\n [8091, 8083],\n [8084, 8092],\n [8092, 8084],\n [8085, 8093],\n [8093, 8085],\n [8086, 8094],\n [8094, 8086],\n [8087, 8095],\n [8095, 8087],\n [8096, 8104],\n [8104, 8096],\n [8097, 8105],\n [8105, 8097],\n [8098, 8106],\n [8106, 8098],\n [8099, 8107],\n [8107, 8099],\n [8100, 8108],\n [8108, 8100],\n [8101, 8109],\n [8109, 8101],\n [8102, 8110],\n [8110, 8102],\n [8103, 8111],\n [8111, 8103],\n [8115, 8124],\n [8124, 8115],\n [8131, 8140],\n [8140, 8131],\n [8179, 8188],\n [8188, 8179],\n [66560, 66600],\n [66600, 66560],\n [66561, 66601],\n [66601, 66561],\n [66562, 66602],\n [66602, 66562],\n [66563, 66603],\n [66603, 66563],\n [66564, 66604],\n [66604, 66564],\n [66565, 66605],\n [66605, 66565],\n [66566, 66606],\n [66606, 66566],\n [66567, 66607],\n [66607, 66567],\n [66568, 66608],\n [66608, 66568],\n [66569, 66609],\n [66609, 66569],\n [66570, 66610],\n [66610, 66570],\n [66571, 66611],\n [66611, 66571],\n [66572, 66612],\n [66612, 66572],\n [66573, 66613],\n [66613, 66573],\n [66574, 66614],\n [66614, 66574],\n [66575, 66615],\n [66615, 66575],\n [66576, 66616],\n [66616, 66576],\n [66577, 66617],\n [66617, 66577],\n [66578, 66618],\n [66618, 66578],\n [66579, 66619],\n [66619, 66579],\n [66580, 66620],\n [66620, 66580],\n [66581, 66621],\n [66621, 66581],\n [66582, 66622],\n [66622, 66582],\n [66583, 66623],\n [66623, 66583],\n [66584, 66624],\n [66624, 66584],\n [66585, 66625],\n [66625, 66585],\n [66586, 66626],\n [66626, 66586],\n [66587, 66627],\n [66627, 66587],\n [66588, 66628],\n [66628, 66588],\n [66589, 66629],\n [66629, 66589],\n [66590, 66630],\n [66630, 66590],\n [66591, 66631],\n [66631, 66591],\n [66592, 66632],\n [66632, 66592],\n [66593, 66633],\n [66633, 66593],\n [66594, 66634],\n [66634, 66594],\n [66595, 66635],\n [66635, 66595],\n [66596, 66636],\n [66636, 66596],\n [66597, 66637],\n [66637, 66597],\n [66598, 66638],\n [66638, 66598],\n [66599, 66639],\n [66639, 66599],\n [66736, 66776],\n [66776, 66736],\n [66737, 66777],\n [66777, 66737],\n [66738, 66778],\n [66778, 66738],\n [66739, 66779],\n [66779, 66739],\n [66740, 66780],\n [66780, 66740],\n [66741, 66781],\n [66781, 66741],\n [66742, 66782],\n [66782, 66742],\n [66743, 66783],\n [66783, 66743],\n [66744, 66784],\n [66784, 66744],\n [66745, 66785],\n [66785, 66745],\n [66746, 66786],\n [66786, 66746],\n [66747, 66787],\n [66787, 66747],\n [66748, 66788],\n [66788, 66748],\n [66749, 66789],\n [66789, 66749],\n [66750, 66790],\n [66790, 66750],\n [66751, 66791],\n [66791, 66751],\n [66752, 66792],\n [66792, 66752],\n [66753, 66793],\n [66793, 66753],\n [66754, 66794],\n [66794, 66754],\n [66755, 66795],\n [66795, 66755],\n [66756, 66796],\n [66796, 66756],\n [66757, 66797],\n [66797, 66757],\n [66758, 66798],\n [66798, 66758],\n [66759, 66799],\n [66799, 66759],\n [66760, 66800],\n [66800, 66760],\n [66761, 66801],\n [66801, 66761],\n [66762, 66802],\n [66802, 66762],\n [66763, 66803],\n [66803, 66763],\n [66764, 66804],\n [66804, 66764],\n [66765, 66805],\n [66805, 66765],\n [66766, 66806],\n [66806, 66766],\n [66767, 66807],\n [66807, 66767],\n [66768, 66808],\n [66808, 66768],\n [66769, 66809],\n [66809, 66769],\n [66770, 66810],\n [66810, 66770],\n [66771, 66811],\n [66811, 66771],\n [66928, 66967],\n [66967, 66928],\n [66929, 66968],\n [66968, 66929],\n [66930, 66969],\n [66969, 66930],\n [66931, 66970],\n [66970, 66931],\n [66932, 66971],\n [66971, 66932],\n [66933, 66972],\n [66972, 66933],\n [66934, 66973],\n [66973, 66934],\n [66935, 66974],\n [66974, 66935],\n [66936, 66975],\n [66975, 66936],\n [66937, 66976],\n [66976, 66937],\n [66938, 66977],\n [66977, 66938],\n [66940, 66979],\n [66979, 66940],\n [66941, 66980],\n [66980, 66941],\n [66942, 66981],\n [66981, 66942],\n [66943, 66982],\n [66982, 66943],\n [66944, 66983],\n [66983, 66944],\n [66945, 66984],\n [66984, 66945],\n [66946, 66985],\n [66985, 66946],\n [66947, 66986],\n [66986, 66947],\n [66948, 66987],\n [66987, 66948],\n [66949, 66988],\n [66988, 66949],\n [66950, 66989],\n [66989, 66950],\n [66951, 66990],\n [66990, 66951],\n [66952, 66991],\n [66991, 66952],\n [66953, 66992],\n [66992, 66953],\n [66954, 66993],\n [66993, 66954],\n [66956, 66995],\n [66995, 66956],\n [66957, 66996],\n [66996, 66957],\n [66958, 66997],\n [66997, 66958],\n [66959, 66998],\n [66998, 66959],\n [66960, 66999],\n [66999, 66960],\n [66961, 67000],\n [67000, 66961],\n [66962, 67001],\n [67001, 66962],\n [66964, 67003],\n [67003, 66964],\n [66965, 67004],\n [67004, 66965],\n [68736, 68800],\n [68800, 68736],\n [68737, 68801],\n [68801, 68737],\n [68738, 68802],\n [68802, 68738],\n [68739, 68803],\n [68803, 68739],\n [68740, 68804],\n [68804, 68740],\n [68741, 68805],\n [68805, 68741],\n [68742, 68806],\n [68806, 68742],\n [68743, 68807],\n [68807, 68743],\n [68744, 68808],\n [68808, 68744],\n [68745, 68809],\n [68809, 68745],\n [68746, 68810],\n [68810, 68746],\n [68747, 68811],\n [68811, 68747],\n [68748, 68812],\n [68812, 68748],\n [68749, 68813],\n [68813, 68749],\n [68750, 68814],\n [68814, 68750],\n [68751, 68815],\n [68815, 68751],\n [68752, 68816],\n [68816, 68752],\n [68753, 68817],\n [68817, 68753],\n [68754, 68818],\n [68818, 68754],\n [68755, 68819],\n [68819, 68755],\n [68756, 68820],\n [68820, 68756],\n [68757, 68821],\n [68821, 68757],\n [68758, 68822],\n [68822, 68758],\n [68759, 68823],\n [68823, 68759],\n [68760, 68824],\n [68824, 68760],\n [68761, 68825],\n [68825, 68761],\n [68762, 68826],\n [68826, 68762],\n [68763, 68827],\n [68827, 68763],\n [68764, 68828],\n [68828, 68764],\n [68765, 68829],\n [68829, 68765],\n [68766, 68830],\n [68830, 68766],\n [68767, 68831],\n [68831, 68767],\n [68768, 68832],\n [68832, 68768],\n [68769, 68833],\n [68833, 68769],\n [68770, 68834],\n [68834, 68770],\n [68771, 68835],\n [68835, 68771],\n [68772, 68836],\n [68836, 68772],\n [68773, 68837],\n [68837, 68773],\n [68774, 68838],\n [68838, 68774],\n [68775, 68839],\n [68839, 68775],\n [68776, 68840],\n [68840, 68776],\n [68777, 68841],\n [68841, 68777],\n [68778, 68842],\n [68842, 68778],\n [68779, 68843],\n [68843, 68779],\n [68780, 68844],\n [68844, 68780],\n [68781, 68845],\n [68845, 68781],\n [68782, 68846],\n [68846, 68782],\n [68783, 68847],\n [68847, 68783],\n [68784, 68848],\n [68848, 68784],\n [68785, 68849],\n [68849, 68785],\n [68786, 68850],\n [68850, 68786],\n [71840, 71872],\n [71872, 71840],\n [71841, 71873],\n [71873, 71841],\n [71842, 71874],\n [71874, 71842],\n [71843, 71875],\n [71875, 71843],\n [71844, 71876],\n [71876, 71844],\n [71845, 71877],\n [71877, 71845],\n [71846, 71878],\n [71878, 71846],\n [71847, 71879],\n [71879, 71847],\n [71848, 71880],\n [71880, 71848],\n [71849, 71881],\n [71881, 71849],\n [71850, 71882],\n [71882, 71850],\n [71851, 71883],\n [71883, 71851],\n [71852, 71884],\n [71884, 71852],\n [71853, 71885],\n [71885, 71853],\n [71854, 71886],\n [71886, 71854],\n [71855, 71887],\n [71887, 71855],\n [71856, 71888],\n [71888, 71856],\n [71857, 71889],\n [71889, 71857],\n [71858, 71890],\n [71890, 71858],\n [71859, 71891],\n [71891, 71859],\n [71860, 71892],\n [71892, 71860],\n [71861, 71893],\n [71893, 71861],\n [71862, 71894],\n [71894, 71862],\n [71863, 71895],\n [71895, 71863],\n [71864, 71896],\n [71896, 71864],\n [71865, 71897],\n [71897, 71865],\n [71866, 71898],\n [71898, 71866],\n [71867, 71899],\n [71899, 71867],\n [71868, 71900],\n [71900, 71868],\n [71869, 71901],\n [71901, 71869],\n [71870, 71902],\n [71902, 71870],\n [71871, 71903],\n [71903, 71871],\n [93760, 93792],\n [93792, 93760],\n [93761, 93793],\n [93793, 93761],\n [93762, 93794],\n [93794, 93762],\n [93763, 93795],\n [93795, 93763],\n [93764, 93796],\n [93796, 93764],\n [93765, 93797],\n [93797, 93765],\n [93766, 93798],\n [93798, 93766],\n [93767, 93799],\n [93799, 93767],\n [93768, 93800],\n [93800, 93768],\n [93769, 93801],\n [93801, 93769],\n [93770, 93802],\n [93802, 93770],\n [93771, 93803],\n [93803, 93771],\n [93772, 93804],\n [93804, 93772],\n [93773, 93805],\n [93805, 93773],\n [93774, 93806],\n [93806, 93774],\n [93775, 93807],\n [93807, 93775],\n [93776, 93808],\n [93808, 93776],\n [93777, 93809],\n [93809, 93777],\n [93778, 93810],\n [93810, 93778],\n [93779, 93811],\n [93811, 93779],\n [93780, 93812],\n [93812, 93780],\n [93781, 93813],\n [93813, 93781],\n [93782, 93814],\n [93814, 93782],\n [93783, 93815],\n [93815, 93783],\n [93784, 93816],\n [93816, 93784],\n [93785, 93817],\n [93817, 93785],\n [93786, 93818],\n [93818, 93786],\n [93787, 93819],\n [93819, 93787],\n [93788, 93820],\n [93820, 93788],\n [93789, 93821],\n [93821, 93789],\n [93790, 93822],\n [93822, 93790],\n [93791, 93823],\n [93823, 93791],\n [125184, 125218],\n [125218, 125184],\n [125185, 125219],\n [125219, 125185],\n [125186, 125220],\n [125220, 125186],\n [125187, 125221],\n [125221, 125187],\n [125188, 125222],\n [125222, 125188],\n [125189, 125223],\n [125223, 125189],\n [125190, 125224],\n [125224, 125190],\n [125191, 125225],\n [125225, 125191],\n [125192, 125226],\n [125226, 125192],\n [125193, 125227],\n [125227, 125193],\n [125194, 125228],\n [125228, 125194],\n [125195, 125229],\n [125229, 125195],\n [125196, 125230],\n [125230, 125196],\n [125197, 125231],\n [125231, 125197],\n [125198, 125232],\n [125232, 125198],\n [125199, 125233],\n [125233, 125199],\n [125200, 125234],\n [125234, 125200],\n [125201, 125235],\n [125235, 125201],\n [125202, 125236],\n [125236, 125202],\n [125203, 125237],\n [125237, 125203],\n [125204, 125238],\n [125238, 125204],\n [125205, 125239],\n [125239, 125205],\n [125206, 125240],\n [125240, 125206],\n [125207, 125241],\n [125241, 125207],\n [125208, 125242],\n [125242, 125208],\n [125209, 125243],\n [125243, 125209],\n [125210, 125244],\n [125244, 125210],\n [125211, 125245],\n [125245, 125211],\n [125212, 125246],\n [125246, 125212],\n [125213, 125247],\n [125247, 125213],\n [125214, 125248],\n [125248, 125214],\n [125215, 125249],\n [125249, 125215],\n [125216, 125250],\n [125250, 125216],\n [125217, 125251],\n [125251, 125217]\n ])\n static C = [\n [0, 31, 1],\n [127, 159, 1],\n [173, 888, 715],\n [889, 896, 7],\n [897, 899, 1],\n [907, 909, 2],\n [930, 1328, 398],\n [1367, 1368, 1],\n [1419, 1420, 1],\n [1424, 1480, 56],\n [1481, 1487, 1],\n [1515, 1518, 1],\n [1525, 1541, 1],\n [1564, 1757, 193],\n [1806, 1807, 1],\n [1867, 1868, 1],\n [1970, 1983, 1],\n [2043, 2044, 1],\n [2094, 2095, 1],\n [2111, 2140, 29],\n [2141, 2143, 2],\n [2155, 2159, 1],\n [2191, 2199, 1],\n [2274, 2436, 162],\n [2445, 2446, 1],\n [2449, 2450, 1],\n [2473, 2481, 8],\n [2483, 2485, 1],\n [2490, 2491, 1],\n [2501, 2502, 1],\n [2505, 2506, 1],\n [2511, 2518, 1],\n [2520, 2523, 1],\n [2526, 2532, 6],\n [2533, 2559, 26],\n [2560, 2564, 4],\n [2571, 2574, 1],\n [2577, 2578, 1],\n [2601, 2609, 8],\n [2612, 2618, 3],\n [2619, 2621, 2],\n [2627, 2630, 1],\n [2633, 2634, 1],\n [2638, 2640, 1],\n [2642, 2648, 1],\n [2653, 2655, 2],\n [2656, 2661, 1],\n [2679, 2688, 1],\n [2692, 2702, 10],\n [2706, 2729, 23],\n [2737, 2740, 3],\n [2746, 2747, 1],\n [2758, 2766, 4],\n [2767, 2769, 2],\n [2770, 2783, 1],\n [2788, 2789, 1],\n [2802, 2808, 1],\n [2816, 2820, 4],\n [2829, 2830, 1],\n [2833, 2834, 1],\n [2857, 2865, 8],\n [2868, 2874, 6],\n [2875, 2885, 10],\n [2886, 2889, 3],\n [2890, 2894, 4],\n [2895, 2900, 1],\n [2904, 2907, 1],\n [2910, 2916, 6],\n [2917, 2936, 19],\n [2937, 2945, 1],\n [2948, 2955, 7],\n [2956, 2957, 1],\n [2961, 2966, 5],\n [2967, 2968, 1],\n [2971, 2973, 2],\n [2976, 2978, 1],\n [2981, 2983, 1],\n [2987, 2989, 1],\n [3002, 3005, 1],\n [3011, 3013, 1],\n [3017, 3022, 5],\n [3023, 3025, 2],\n [3026, 3030, 1],\n [3032, 3045, 1],\n [3067, 3071, 1],\n [3085, 3089, 4],\n [3113, 3130, 17],\n [3131, 3141, 10],\n [3145, 3150, 5],\n [3151, 3156, 1],\n [3159, 3163, 4],\n [3164, 3166, 2],\n [3167, 3172, 5],\n [3173, 3184, 11],\n [3185, 3190, 1],\n [3213, 3217, 4],\n [3241, 3252, 11],\n [3258, 3259, 1],\n [3269, 3273, 4],\n [3278, 3284, 1],\n [3287, 3292, 1],\n [3295, 3300, 5],\n [3301, 3312, 11],\n [3316, 3327, 1],\n [3341, 3345, 4],\n [3397, 3401, 4],\n [3408, 3411, 1],\n [3428, 3429, 1],\n [3456, 3460, 4],\n [3479, 3481, 1],\n [3506, 3516, 10],\n [3518, 3519, 1],\n [3527, 3529, 1],\n [3531, 3534, 1],\n [3541, 3543, 2],\n [3552, 3557, 1],\n [3568, 3569, 1],\n [3573, 3584, 1],\n [3643, 3646, 1],\n [3676, 3712, 1],\n [3715, 3717, 2],\n [3723, 3748, 25],\n [3750, 3774, 24],\n [3775, 3781, 6],\n [3783, 3791, 8],\n [3802, 3803, 1],\n [3808, 3839, 1],\n [3912, 3949, 37],\n [3950, 3952, 1],\n [3992, 4029, 37],\n [4045, 4059, 14],\n [4060, 4095, 1],\n [4294, 4296, 2],\n [4297, 4300, 1],\n [4302, 4303, 1],\n [4681, 4686, 5],\n [4687, 4695, 8],\n [4697, 4702, 5],\n [4703, 4745, 42],\n [4750, 4751, 1],\n [4785, 4790, 5],\n [4791, 4799, 8],\n [4801, 4806, 5],\n [4807, 4823, 16],\n [4881, 4886, 5],\n [4887, 4955, 68],\n [4956, 4989, 33],\n [4990, 4991, 1],\n [5018, 5023, 1],\n [5110, 5111, 1],\n [5118, 5119, 1],\n [5789, 5791, 1],\n [5881, 5887, 1],\n [5910, 5918, 1],\n [5943, 5951, 1],\n [5972, 5983, 1],\n [5997, 6001, 4],\n [6004, 6015, 1],\n [6110, 6111, 1],\n [6122, 6127, 1],\n [6138, 6143, 1],\n [6158, 6170, 12],\n [6171, 6175, 1],\n [6265, 6271, 1],\n [6315, 6319, 1],\n [6390, 6399, 1],\n [6431, 6444, 13],\n [6445, 6447, 1],\n [6460, 6463, 1],\n [6465, 6467, 1],\n [6510, 6511, 1],\n [6517, 6527, 1],\n [6572, 6575, 1],\n [6602, 6607, 1],\n [6619, 6621, 1],\n [6684, 6685, 1],\n [6751, 6781, 30],\n [6782, 6794, 12],\n [6795, 6799, 1],\n [6810, 6815, 1],\n [6830, 6831, 1],\n [6863, 6911, 1],\n [6989, 6991, 1],\n [7039, 7156, 117],\n [7157, 7163, 1],\n [7224, 7226, 1],\n [7242, 7244, 1],\n [7305, 7311, 1],\n [7355, 7356, 1],\n [7368, 7375, 1],\n [7419, 7423, 1],\n [7958, 7959, 1],\n [7966, 7967, 1],\n [8006, 8007, 1],\n [8014, 8015, 1],\n [8024, 8030, 2],\n [8062, 8063, 1],\n [8117, 8133, 16],\n [8148, 8149, 1],\n [8156, 8176, 20],\n [8177, 8181, 4],\n [8191, 8203, 12],\n [8204, 8207, 1],\n [8234, 8238, 1],\n [8288, 8303, 1],\n [8306, 8307, 1],\n [8335, 8349, 14],\n [8350, 8351, 1],\n [8385, 8399, 1],\n [8433, 8447, 1],\n [8588, 8591, 1],\n [9255, 9279, 1],\n [9291, 9311, 1],\n [11124, 11125, 1],\n [11158, 11508, 350],\n [11509, 11512, 1],\n [11558, 11560, 2],\n [11561, 11564, 1],\n [11566, 11567, 1],\n [11624, 11630, 1],\n [11633, 11646, 1],\n [11671, 11679, 1],\n [11687, 11743, 8],\n [11870, 11903, 1],\n [11930, 12020, 90],\n [12021, 12031, 1],\n [12246, 12271, 1],\n [12352, 12439, 87],\n [12440, 12544, 104],\n [12545, 12548, 1],\n [12592, 12687, 95],\n [12772, 12782, 1],\n [12831, 42125, 29294],\n [42126, 42127, 1],\n [42183, 42191, 1],\n [42540, 42559, 1],\n [42744, 42751, 1],\n [42955, 42959, 1],\n [42962, 42964, 2],\n [42970, 42993, 1],\n [43053, 43055, 1],\n [43066, 43071, 1],\n [43128, 43135, 1],\n [43206, 43213, 1],\n [43226, 43231, 1],\n [43348, 43358, 1],\n [43389, 43391, 1],\n [43470, 43482, 12],\n [43483, 43485, 1],\n [43519, 43575, 56],\n [43576, 43583, 1],\n [43598, 43599, 1],\n [43610, 43611, 1],\n [43715, 43738, 1],\n [43767, 43776, 1],\n [43783, 43784, 1],\n [43791, 43792, 1],\n [43799, 43807, 1],\n [43815, 43823, 8],\n [43884, 43887, 1],\n [44014, 44015, 1],\n [44026, 44031, 1],\n [55204, 55215, 1],\n [55239, 55242, 1],\n [55292, 63743, 1],\n [64110, 64111, 1],\n [64218, 64255, 1],\n [64263, 64274, 1],\n [64280, 64284, 1],\n [64311, 64317, 6],\n [64319, 64325, 3],\n [64451, 64466, 1],\n [64912, 64913, 1],\n [64968, 64974, 1],\n [64976, 65007, 1],\n [65050, 65055, 1],\n [65107, 65127, 20],\n [65132, 65135, 1],\n [65141, 65277, 136],\n [65278, 65280, 1],\n [65471, 65473, 1],\n [65480, 65481, 1],\n [65488, 65489, 1],\n [65496, 65497, 1],\n [65501, 65503, 1],\n [65511, 65519, 8],\n [65520, 65531, 1],\n [65534, 65535, 1],\n [65548, 65575, 27],\n [65595, 65598, 3],\n [65614, 65615, 1],\n [65630, 65663, 1],\n [65787, 65791, 1],\n [65795, 65798, 1],\n [65844, 65846, 1],\n [65935, 65949, 14],\n [65950, 65951, 1],\n [65953, 65999, 1],\n [66046, 66175, 1],\n [66205, 66207, 1],\n [66257, 66271, 1],\n [66300, 66303, 1],\n [66340, 66348, 1],\n [66379, 66383, 1],\n [66427, 66431, 1],\n [66462, 66500, 38],\n [66501, 66503, 1],\n [66518, 66559, 1],\n [66718, 66719, 1],\n [66730, 66735, 1],\n [66772, 66775, 1],\n [66812, 66815, 1],\n [66856, 66863, 1],\n [66916, 66926, 1],\n [66939, 66955, 16],\n [66963, 66966, 3],\n [66978, 66994, 16],\n [67002, 67005, 3],\n [67006, 67071, 1],\n [67383, 67391, 1],\n [67414, 67423, 1],\n [67432, 67455, 1],\n [67462, 67505, 43],\n [67515, 67583, 1],\n [67590, 67591, 1],\n [67593, 67638, 45],\n [67641, 67643, 1],\n [67645, 67646, 1],\n [67670, 67743, 73],\n [67744, 67750, 1],\n [67760, 67807, 1],\n [67827, 67830, 3],\n [67831, 67834, 1],\n [67868, 67870, 1],\n [67898, 67902, 1],\n [67904, 67967, 1],\n [68024, 68027, 1],\n [68048, 68049, 1],\n [68100, 68103, 3],\n [68104, 68107, 1],\n [68116, 68120, 4],\n [68150, 68151, 1],\n [68155, 68158, 1],\n [68169, 68175, 1],\n [68185, 68191, 1],\n [68256, 68287, 1],\n [68327, 68330, 1],\n [68343, 68351, 1],\n [68406, 68408, 1],\n [68438, 68439, 1],\n [68467, 68471, 1],\n [68498, 68504, 1],\n [68509, 68520, 1],\n [68528, 68607, 1],\n [68681, 68735, 1],\n [68787, 68799, 1],\n [68851, 68857, 1],\n [68904, 68911, 1],\n [68922, 69215, 1],\n [69247, 69290, 43],\n [69294, 69295, 1],\n [69298, 69372, 1],\n [69416, 69423, 1],\n [69466, 69487, 1],\n [69514, 69551, 1],\n [69580, 69599, 1],\n [69623, 69631, 1],\n [69710, 69713, 1],\n [69750, 69758, 1],\n [69821, 69827, 6],\n [69828, 69839, 1],\n [69865, 69871, 1],\n [69882, 69887, 1],\n [69941, 69960, 19],\n [69961, 69967, 1],\n [70007, 70015, 1],\n [70112, 70133, 21],\n [70134, 70143, 1],\n [70162, 70210, 48],\n [70211, 70271, 1],\n [70279, 70281, 2],\n [70286, 70302, 16],\n [70314, 70319, 1],\n [70379, 70383, 1],\n [70394, 70399, 1],\n [70404, 70413, 9],\n [70414, 70417, 3],\n [70418, 70441, 23],\n [70449, 70452, 3],\n [70458, 70469, 11],\n [70470, 70473, 3],\n [70474, 70478, 4],\n [70479, 70481, 2],\n [70482, 70486, 1],\n [70488, 70492, 1],\n [70500, 70501, 1],\n [70509, 70511, 1],\n [70517, 70655, 1],\n [70748, 70754, 6],\n [70755, 70783, 1],\n [70856, 70863, 1],\n [70874, 71039, 1],\n [71094, 71095, 1],\n [71134, 71167, 1],\n [71237, 71247, 1],\n [71258, 71263, 1],\n [71277, 71295, 1],\n [71354, 71359, 1],\n [71370, 71423, 1],\n [71451, 71452, 1],\n [71468, 71471, 1],\n [71495, 71679, 1],\n [71740, 71839, 1],\n [71923, 71934, 1],\n [71943, 71944, 1],\n [71946, 71947, 1],\n [71956, 71959, 3],\n [71990, 71993, 3],\n [71994, 72007, 13],\n [72008, 72015, 1],\n [72026, 72095, 1],\n [72104, 72105, 1],\n [72152, 72153, 1],\n [72165, 72191, 1],\n [72264, 72271, 1],\n [72355, 72367, 1],\n [72441, 72447, 1],\n [72458, 72703, 1],\n [72713, 72759, 46],\n [72774, 72783, 1],\n [72813, 72815, 1],\n [72848, 72849, 1],\n [72872, 72887, 15],\n [72888, 72959, 1],\n [72967, 72970, 3],\n [73015, 73017, 1],\n [73019, 73022, 3],\n [73032, 73039, 1],\n [73050, 73055, 1],\n [73062, 73065, 3],\n [73103, 73106, 3],\n [73113, 73119, 1],\n [73130, 73439, 1],\n [73465, 73471, 1],\n [73489, 73531, 42],\n [73532, 73533, 1],\n [73562, 73647, 1],\n [73649, 73663, 1],\n [73714, 73726, 1],\n [74650, 74751, 1],\n [74863, 74869, 6],\n [74870, 74879, 1],\n [75076, 77711, 1],\n [77811, 77823, 1],\n [78896, 78911, 1],\n [78934, 82943, 1],\n [83527, 92159, 1],\n [92729, 92735, 1],\n [92767, 92778, 11],\n [92779, 92781, 1],\n [92863, 92874, 11],\n [92875, 92879, 1],\n [92910, 92911, 1],\n [92918, 92927, 1],\n [92998, 93007, 1],\n [93018, 93026, 8],\n [93048, 93052, 1],\n [93072, 93759, 1],\n [93851, 93951, 1],\n [94027, 94030, 1],\n [94088, 94094, 1],\n [94112, 94175, 1],\n [94181, 94191, 1],\n [94194, 94207, 1],\n [100344, 100351, 1],\n [101590, 101631, 1],\n [101641, 110575, 1],\n [110580, 110588, 8],\n [110591, 110883, 292],\n [110884, 110897, 1],\n [110899, 110927, 1],\n [110931, 110932, 1],\n [110934, 110947, 1],\n [110952, 110959, 1],\n [111356, 113663, 1],\n [113771, 113775, 1],\n [113789, 113791, 1],\n [113801, 113807, 1],\n [113818, 113819, 1],\n [113824, 118527, 1],\n [118574, 118575, 1],\n [118599, 118607, 1],\n [118724, 118783, 1],\n [119030, 119039, 1],\n [119079, 119080, 1],\n [119155, 119162, 1],\n [119275, 119295, 1],\n [119366, 119487, 1],\n [119508, 119519, 1],\n [119540, 119551, 1],\n [119639, 119647, 1],\n [119673, 119807, 1],\n [119893, 119965, 72],\n [119968, 119969, 1],\n [119971, 119972, 1],\n [119975, 119976, 1],\n [119981, 119994, 13],\n [119996, 120004, 8],\n [120070, 120075, 5],\n [120076, 120085, 9],\n [120093, 120122, 29],\n [120127, 120133, 6],\n [120135, 120137, 1],\n [120145, 120486, 341],\n [120487, 120780, 293],\n [120781, 121484, 703],\n [121485, 121498, 1],\n [121504, 121520, 16],\n [121521, 122623, 1],\n [122655, 122660, 1],\n [122667, 122879, 1],\n [122887, 122905, 18],\n [122906, 122914, 8],\n [122917, 122923, 6],\n [122924, 122927, 1],\n [122990, 123022, 1],\n [123024, 123135, 1],\n [123181, 123183, 1],\n [123198, 123199, 1],\n [123210, 123213, 1],\n [123216, 123535, 1],\n [123567, 123583, 1],\n [123642, 123646, 1],\n [123648, 124111, 1],\n [124154, 124895, 1],\n [124903, 124908, 5],\n [124911, 124927, 16],\n [125125, 125126, 1],\n [125143, 125183, 1],\n [125260, 125263, 1],\n [125274, 125277, 1],\n [125280, 126064, 1],\n [126133, 126208, 1],\n [126270, 126463, 1],\n [126468, 126496, 28],\n [126499, 126501, 2],\n [126502, 126504, 2],\n [126515, 126520, 5],\n [126522, 126524, 2],\n [126525, 126529, 1],\n [126531, 126534, 1],\n [126536, 126540, 2],\n [126544, 126547, 3],\n [126549, 126550, 1],\n [126552, 126560, 2],\n [126563, 126565, 2],\n [126566, 126571, 5],\n [126579, 126589, 5],\n [126591, 126602, 11],\n [126620, 126624, 1],\n [126628, 126634, 6],\n [126652, 126703, 1],\n [126706, 126975, 1],\n [127020, 127023, 1],\n [127124, 127135, 1],\n [127151, 127152, 1],\n [127168, 127184, 16],\n [127222, 127231, 1],\n [127406, 127461, 1],\n [127491, 127503, 1],\n [127548, 127551, 1],\n [127561, 127567, 1],\n [127570, 127583, 1],\n [127590, 127743, 1],\n [128728, 128731, 1],\n [128749, 128751, 1],\n [128765, 128767, 1],\n [128887, 128890, 1],\n [128986, 128991, 1],\n [129004, 129007, 1],\n [129009, 129023, 1],\n [129036, 129039, 1],\n [129096, 129103, 1],\n [129114, 129119, 1],\n [129160, 129167, 1],\n [129198, 129199, 1],\n [129202, 129279, 1],\n [129620, 129631, 1],\n [129646, 129647, 1],\n [129661, 129663, 1],\n [129673, 129679, 1],\n [129726, 129734, 8],\n [129735, 129741, 1],\n [129756, 129759, 1],\n [129769, 129775, 1],\n [129785, 129791, 1],\n [129939, 129995, 56],\n [129996, 130031, 1],\n [130042, 131071, 1],\n [173792, 173823, 1],\n [177978, 177983, 1],\n [178206, 178207, 1],\n [183970, 183983, 1],\n [191457, 194559, 1],\n [195102, 196607, 1],\n [201547, 201551, 1],\n [205744, 917759, 1],\n [918000, 1114111, 1]\n ]\n static Cc = [\n [0, 31, 1],\n [127, 159, 1]\n ]\n static Cf = [\n [173, 1536, 1363],\n [1537, 1541, 1],\n [1564, 1757, 193],\n [1807, 2192, 385],\n [2193, 2274, 81],\n [6158, 8203, 2045],\n [8204, 8207, 1],\n [8234, 8238, 1],\n [8288, 8292, 1],\n [8294, 8303, 1],\n [65279, 65529, 250],\n [65530, 65531, 1],\n [69821, 69837, 16],\n [78896, 78911, 1],\n [113824, 113827, 1],\n [119155, 119162, 1],\n [917505, 917536, 31],\n [917537, 917631, 1]\n ]\n static Co = [\n [57344, 63743, 1],\n [983040, 1048573, 1],\n [1048576, 1114109, 1]\n ]\n static Cs = [[55296, 57343, 1]]\n static L = [\n [65, 90, 1],\n [97, 122, 1],\n [170, 181, 11],\n [186, 192, 6],\n [193, 214, 1],\n [216, 246, 1],\n [248, 705, 1],\n [710, 721, 1],\n [736, 740, 1],\n [748, 750, 2],\n [880, 884, 1],\n [886, 887, 1],\n [890, 893, 1],\n [895, 902, 7],\n [904, 906, 1],\n [908, 910, 2],\n [911, 929, 1],\n [931, 1013, 1],\n [1015, 1153, 1],\n [1162, 1327, 1],\n [1329, 1366, 1],\n [1369, 1376, 7],\n [1377, 1416, 1],\n [1488, 1514, 1],\n [1519, 1522, 1],\n [1568, 1610, 1],\n [1646, 1647, 1],\n [1649, 1747, 1],\n [1749, 1765, 16],\n [1766, 1774, 8],\n [1775, 1786, 11],\n [1787, 1788, 1],\n [1791, 1808, 17],\n [1810, 1839, 1],\n [1869, 1957, 1],\n [1969, 1994, 25],\n [1995, 2026, 1],\n [2036, 2037, 1],\n [2042, 2048, 6],\n [2049, 2069, 1],\n [2074, 2084, 10],\n [2088, 2112, 24],\n [2113, 2136, 1],\n [2144, 2154, 1],\n [2160, 2183, 1],\n [2185, 2190, 1],\n [2208, 2249, 1],\n [2308, 2361, 1],\n [2365, 2384, 19],\n [2392, 2401, 1],\n [2417, 2432, 1],\n [2437, 2444, 1],\n [2447, 2448, 1],\n [2451, 2472, 1],\n [2474, 2480, 1],\n [2482, 2486, 4],\n [2487, 2489, 1],\n [2493, 2510, 17],\n [2524, 2525, 1],\n [2527, 2529, 1],\n [2544, 2545, 1],\n [2556, 2565, 9],\n [2566, 2570, 1],\n [2575, 2576, 1],\n [2579, 2600, 1],\n [2602, 2608, 1],\n [2610, 2611, 1],\n [2613, 2614, 1],\n [2616, 2617, 1],\n [2649, 2652, 1],\n [2654, 2674, 20],\n [2675, 2676, 1],\n [2693, 2701, 1],\n [2703, 2705, 1],\n [2707, 2728, 1],\n [2730, 2736, 1],\n [2738, 2739, 1],\n [2741, 2745, 1],\n [2749, 2768, 19],\n [2784, 2785, 1],\n [2809, 2821, 12],\n [2822, 2828, 1],\n [2831, 2832, 1],\n [2835, 2856, 1],\n [2858, 2864, 1],\n [2866, 2867, 1],\n [2869, 2873, 1],\n [2877, 2908, 31],\n [2909, 2911, 2],\n [2912, 2913, 1],\n [2929, 2947, 18],\n [2949, 2954, 1],\n [2958, 2960, 1],\n [2962, 2965, 1],\n [2969, 2970, 1],\n [2972, 2974, 2],\n [2975, 2979, 4],\n [2980, 2984, 4],\n [2985, 2986, 1],\n [2990, 3001, 1],\n [3024, 3077, 53],\n [3078, 3084, 1],\n [3086, 3088, 1],\n [3090, 3112, 1],\n [3114, 3129, 1],\n [3133, 3160, 27],\n [3161, 3162, 1],\n [3165, 3168, 3],\n [3169, 3200, 31],\n [3205, 3212, 1],\n [3214, 3216, 1],\n [3218, 3240, 1],\n [3242, 3251, 1],\n [3253, 3257, 1],\n [3261, 3293, 32],\n [3294, 3296, 2],\n [3297, 3313, 16],\n [3314, 3332, 18],\n [3333, 3340, 1],\n [3342, 3344, 1],\n [3346, 3386, 1],\n [3389, 3406, 17],\n [3412, 3414, 1],\n [3423, 3425, 1],\n [3450, 3455, 1],\n [3461, 3478, 1],\n [3482, 3505, 1],\n [3507, 3515, 1],\n [3517, 3520, 3],\n [3521, 3526, 1],\n [3585, 3632, 1],\n [3634, 3635, 1],\n [3648, 3654, 1],\n [3713, 3714, 1],\n [3716, 3718, 2],\n [3719, 3722, 1],\n [3724, 3747, 1],\n [3749, 3751, 2],\n [3752, 3760, 1],\n [3762, 3763, 1],\n [3773, 3776, 3],\n [3777, 3780, 1],\n [3782, 3804, 22],\n [3805, 3807, 1],\n [3840, 3904, 64],\n [3905, 3911, 1],\n [3913, 3948, 1],\n [3976, 3980, 1],\n [4096, 4138, 1],\n [4159, 4176, 17],\n [4177, 4181, 1],\n [4186, 4189, 1],\n [4193, 4197, 4],\n [4198, 4206, 8],\n [4207, 4208, 1],\n [4213, 4225, 1],\n [4238, 4256, 18],\n [4257, 4293, 1],\n [4295, 4301, 6],\n [4304, 4346, 1],\n [4348, 4680, 1],\n [4682, 4685, 1],\n [4688, 4694, 1],\n [4696, 4698, 2],\n [4699, 4701, 1],\n [4704, 4744, 1],\n [4746, 4749, 1],\n [4752, 4784, 1],\n [4786, 4789, 1],\n [4792, 4798, 1],\n [4800, 4802, 2],\n [4803, 4805, 1],\n [4808, 4822, 1],\n [4824, 4880, 1],\n [4882, 4885, 1],\n [4888, 4954, 1],\n [4992, 5007, 1],\n [5024, 5109, 1],\n [5112, 5117, 1],\n [5121, 5740, 1],\n [5743, 5759, 1],\n [5761, 5786, 1],\n [5792, 5866, 1],\n [5873, 5880, 1],\n [5888, 5905, 1],\n [5919, 5937, 1],\n [5952, 5969, 1],\n [5984, 5996, 1],\n [5998, 6000, 1],\n [6016, 6067, 1],\n [6103, 6108, 5],\n [6176, 6264, 1],\n [6272, 6276, 1],\n [6279, 6312, 1],\n [6314, 6320, 6],\n [6321, 6389, 1],\n [6400, 6430, 1],\n [6480, 6509, 1],\n [6512, 6516, 1],\n [6528, 6571, 1],\n [6576, 6601, 1],\n [6656, 6678, 1],\n [6688, 6740, 1],\n [6823, 6917, 94],\n [6918, 6963, 1],\n [6981, 6988, 1],\n [7043, 7072, 1],\n [7086, 7087, 1],\n [7098, 7141, 1],\n [7168, 7203, 1],\n [7245, 7247, 1],\n [7258, 7293, 1],\n [7296, 7304, 1],\n [7312, 7354, 1],\n [7357, 7359, 1],\n [7401, 7404, 1],\n [7406, 7411, 1],\n [7413, 7414, 1],\n [7418, 7424, 6],\n [7425, 7615, 1],\n [7680, 7957, 1],\n [7960, 7965, 1],\n [7968, 8005, 1],\n [8008, 8013, 1],\n [8016, 8023, 1],\n [8025, 8031, 2],\n [8032, 8061, 1],\n [8064, 8116, 1],\n [8118, 8124, 1],\n [8126, 8130, 4],\n [8131, 8132, 1],\n [8134, 8140, 1],\n [8144, 8147, 1],\n [8150, 8155, 1],\n [8160, 8172, 1],\n [8178, 8180, 1],\n [8182, 8188, 1],\n [8305, 8319, 14],\n [8336, 8348, 1],\n [8450, 8455, 5],\n [8458, 8467, 1],\n [8469, 8473, 4],\n [8474, 8477, 1],\n [8484, 8490, 2],\n [8491, 8493, 1],\n [8495, 8505, 1],\n [8508, 8511, 1],\n [8517, 8521, 1],\n [8526, 8579, 53],\n [8580, 11264, 2684],\n [11265, 11492, 1],\n [11499, 11502, 1],\n [11506, 11507, 1],\n [11520, 11557, 1],\n [11559, 11565, 6],\n [11568, 11623, 1],\n [11631, 11648, 17],\n [11649, 11670, 1],\n [11680, 11686, 1],\n [11688, 11694, 1],\n [11696, 11702, 1],\n [11704, 11710, 1],\n [11712, 11718, 1],\n [11720, 11726, 1],\n [11728, 11734, 1],\n [11736, 11742, 1],\n [11823, 12293, 470],\n [12294, 12337, 43],\n [12338, 12341, 1],\n [12347, 12348, 1],\n [12353, 12438, 1],\n [12445, 12447, 1],\n [12449, 12538, 1],\n [12540, 12543, 1],\n [12549, 12591, 1],\n [12593, 12686, 1],\n [12704, 12735, 1],\n [12784, 12799, 1],\n [13312, 19903, 1],\n [19968, 42124, 1],\n [42192, 42237, 1],\n [42240, 42508, 1],\n [42512, 42527, 1],\n [42538, 42539, 1],\n [42560, 42606, 1],\n [42623, 42653, 1],\n [42656, 42725, 1],\n [42775, 42783, 1],\n [42786, 42888, 1],\n [42891, 42954, 1],\n [42960, 42961, 1],\n [42963, 42965, 2],\n [42966, 42969, 1],\n [42994, 43009, 1],\n [43011, 43013, 1],\n [43015, 43018, 1],\n [43020, 43042, 1],\n [43072, 43123, 1],\n [43138, 43187, 1],\n [43250, 43255, 1],\n [43259, 43261, 2],\n [43262, 43274, 12],\n [43275, 43301, 1],\n [43312, 43334, 1],\n [43360, 43388, 1],\n [43396, 43442, 1],\n [43471, 43488, 17],\n [43489, 43492, 1],\n [43494, 43503, 1],\n [43514, 43518, 1],\n [43520, 43560, 1],\n [43584, 43586, 1],\n [43588, 43595, 1],\n [43616, 43638, 1],\n [43642, 43646, 4],\n [43647, 43695, 1],\n [43697, 43701, 4],\n [43702, 43705, 3],\n [43706, 43709, 1],\n [43712, 43714, 2],\n [43739, 43741, 1],\n [43744, 43754, 1],\n [43762, 43764, 1],\n [43777, 43782, 1],\n [43785, 43790, 1],\n [43793, 43798, 1],\n [43808, 43814, 1],\n [43816, 43822, 1],\n [43824, 43866, 1],\n [43868, 43881, 1],\n [43888, 44002, 1],\n [44032, 55203, 1],\n [55216, 55238, 1],\n [55243, 55291, 1],\n [63744, 64109, 1],\n [64112, 64217, 1],\n [64256, 64262, 1],\n [64275, 64279, 1],\n [64285, 64287, 2],\n [64288, 64296, 1],\n [64298, 64310, 1],\n [64312, 64316, 1],\n [64318, 64320, 2],\n [64321, 64323, 2],\n [64324, 64326, 2],\n [64327, 64433, 1],\n [64467, 64829, 1],\n [64848, 64911, 1],\n [64914, 64967, 1],\n [65008, 65019, 1],\n [65136, 65140, 1],\n [65142, 65276, 1],\n [65313, 65338, 1],\n [65345, 65370, 1],\n [65382, 65470, 1],\n [65474, 65479, 1],\n [65482, 65487, 1],\n [65490, 65495, 1],\n [65498, 65500, 1],\n [65536, 65547, 1],\n [65549, 65574, 1],\n [65576, 65594, 1],\n [65596, 65597, 1],\n [65599, 65613, 1],\n [65616, 65629, 1],\n [65664, 65786, 1],\n [66176, 66204, 1],\n [66208, 66256, 1],\n [66304, 66335, 1],\n [66349, 66368, 1],\n [66370, 66377, 1],\n [66384, 66421, 1],\n [66432, 66461, 1],\n [66464, 66499, 1],\n [66504, 66511, 1],\n [66560, 66717, 1],\n [66736, 66771, 1],\n [66776, 66811, 1],\n [66816, 66855, 1],\n [66864, 66915, 1],\n [66928, 66938, 1],\n [66940, 66954, 1],\n [66956, 66962, 1],\n [66964, 66965, 1],\n [66967, 66977, 1],\n [66979, 66993, 1],\n [66995, 67001, 1],\n [67003, 67004, 1],\n [67072, 67382, 1],\n [67392, 67413, 1],\n [67424, 67431, 1],\n [67456, 67461, 1],\n [67463, 67504, 1],\n [67506, 67514, 1],\n [67584, 67589, 1],\n [67592, 67594, 2],\n [67595, 67637, 1],\n [67639, 67640, 1],\n [67644, 67647, 3],\n [67648, 67669, 1],\n [67680, 67702, 1],\n [67712, 67742, 1],\n [67808, 67826, 1],\n [67828, 67829, 1],\n [67840, 67861, 1],\n [67872, 67897, 1],\n [67968, 68023, 1],\n [68030, 68031, 1],\n [68096, 68112, 16],\n [68113, 68115, 1],\n [68117, 68119, 1],\n [68121, 68149, 1],\n [68192, 68220, 1],\n [68224, 68252, 1],\n [68288, 68295, 1],\n [68297, 68324, 1],\n [68352, 68405, 1],\n [68416, 68437, 1],\n [68448, 68466, 1],\n [68480, 68497, 1],\n [68608, 68680, 1],\n [68736, 68786, 1],\n [68800, 68850, 1],\n [68864, 68899, 1],\n [69248, 69289, 1],\n [69296, 69297, 1],\n [69376, 69404, 1],\n [69415, 69424, 9],\n [69425, 69445, 1],\n [69488, 69505, 1],\n [69552, 69572, 1],\n [69600, 69622, 1],\n [69635, 69687, 1],\n [69745, 69746, 1],\n [69749, 69763, 14],\n [69764, 69807, 1],\n [69840, 69864, 1],\n [69891, 69926, 1],\n [69956, 69959, 3],\n [69968, 70002, 1],\n [70006, 70019, 13],\n [70020, 70066, 1],\n [70081, 70084, 1],\n [70106, 70108, 2],\n [70144, 70161, 1],\n [70163, 70187, 1],\n [70207, 70208, 1],\n [70272, 70278, 1],\n [70280, 70282, 2],\n [70283, 70285, 1],\n [70287, 70301, 1],\n [70303, 70312, 1],\n [70320, 70366, 1],\n [70405, 70412, 1],\n [70415, 70416, 1],\n [70419, 70440, 1],\n [70442, 70448, 1],\n [70450, 70451, 1],\n [70453, 70457, 1],\n [70461, 70480, 19],\n [70493, 70497, 1],\n [70656, 70708, 1],\n [70727, 70730, 1],\n [70751, 70753, 1],\n [70784, 70831, 1],\n [70852, 70853, 1],\n [70855, 71040, 185],\n [71041, 71086, 1],\n [71128, 71131, 1],\n [71168, 71215, 1],\n [71236, 71296, 60],\n [71297, 71338, 1],\n [71352, 71424, 72],\n [71425, 71450, 1],\n [71488, 71494, 1],\n [71680, 71723, 1],\n [71840, 71903, 1],\n [71935, 71942, 1],\n [71945, 71948, 3],\n [71949, 71955, 1],\n [71957, 71958, 1],\n [71960, 71983, 1],\n [71999, 72001, 2],\n [72096, 72103, 1],\n [72106, 72144, 1],\n [72161, 72163, 2],\n [72192, 72203, 11],\n [72204, 72242, 1],\n [72250, 72272, 22],\n [72284, 72329, 1],\n [72349, 72368, 19],\n [72369, 72440, 1],\n [72704, 72712, 1],\n [72714, 72750, 1],\n [72768, 72818, 50],\n [72819, 72847, 1],\n [72960, 72966, 1],\n [72968, 72969, 1],\n [72971, 73008, 1],\n [73030, 73056, 26],\n [73057, 73061, 1],\n [73063, 73064, 1],\n [73066, 73097, 1],\n [73112, 73440, 328],\n [73441, 73458, 1],\n [73474, 73476, 2],\n [73477, 73488, 1],\n [73490, 73523, 1],\n [73648, 73728, 80],\n [73729, 74649, 1],\n [74880, 75075, 1],\n [77712, 77808, 1],\n [77824, 78895, 1],\n [78913, 78918, 1],\n [82944, 83526, 1],\n [92160, 92728, 1],\n [92736, 92766, 1],\n [92784, 92862, 1],\n [92880, 92909, 1],\n [92928, 92975, 1],\n [92992, 92995, 1],\n [93027, 93047, 1],\n [93053, 93071, 1],\n [93760, 93823, 1],\n [93952, 94026, 1],\n [94032, 94099, 67],\n [94100, 94111, 1],\n [94176, 94177, 1],\n [94179, 94208, 29],\n [94209, 100343, 1],\n [100352, 101589, 1],\n [101632, 101640, 1],\n [110576, 110579, 1],\n [110581, 110587, 1],\n [110589, 110590, 1],\n [110592, 110882, 1],\n [110898, 110928, 30],\n [110929, 110930, 1],\n [110933, 110948, 15],\n [110949, 110951, 1],\n [110960, 111355, 1],\n [113664, 113770, 1],\n [113776, 113788, 1],\n [113792, 113800, 1],\n [113808, 113817, 1],\n [119808, 119892, 1],\n [119894, 119964, 1],\n [119966, 119967, 1],\n [119970, 119973, 3],\n [119974, 119977, 3],\n [119978, 119980, 1],\n [119982, 119993, 1],\n [119995, 119997, 2],\n [119998, 120003, 1],\n [120005, 120069, 1],\n [120071, 120074, 1],\n [120077, 120084, 1],\n [120086, 120092, 1],\n [120094, 120121, 1],\n [120123, 120126, 1],\n [120128, 120132, 1],\n [120134, 120138, 4],\n [120139, 120144, 1],\n [120146, 120485, 1],\n [120488, 120512, 1],\n [120514, 120538, 1],\n [120540, 120570, 1],\n [120572, 120596, 1],\n [120598, 120628, 1],\n [120630, 120654, 1],\n [120656, 120686, 1],\n [120688, 120712, 1],\n [120714, 120744, 1],\n [120746, 120770, 1],\n [120772, 120779, 1],\n [122624, 122654, 1],\n [122661, 122666, 1],\n [122928, 122989, 1],\n [123136, 123180, 1],\n [123191, 123197, 1],\n [123214, 123536, 322],\n [123537, 123565, 1],\n [123584, 123627, 1],\n [124112, 124139, 1],\n [124896, 124902, 1],\n [124904, 124907, 1],\n [124909, 124910, 1],\n [124912, 124926, 1],\n [124928, 125124, 1],\n [125184, 125251, 1],\n [125259, 126464, 1205],\n [126465, 126467, 1],\n [126469, 126495, 1],\n [126497, 126498, 1],\n [126500, 126503, 3],\n [126505, 126514, 1],\n [126516, 126519, 1],\n [126521, 126523, 2],\n [126530, 126535, 5],\n [126537, 126541, 2],\n [126542, 126543, 1],\n [126545, 126546, 1],\n [126548, 126551, 3],\n [126553, 126561, 2],\n [126562, 126564, 2],\n [126567, 126570, 1],\n [126572, 126578, 1],\n [126580, 126583, 1],\n [126585, 126588, 1],\n [126590, 126592, 2],\n [126593, 126601, 1],\n [126603, 126619, 1],\n [126625, 126627, 1],\n [126629, 126633, 1],\n [126635, 126651, 1],\n [131072, 173791, 1],\n [173824, 177977, 1],\n [177984, 178205, 1],\n [178208, 183969, 1],\n [183984, 191456, 1],\n [194560, 195101, 1],\n [196608, 201546, 1],\n [201552, 205743, 1]\n ]\n static foldL = [[837, 837, 1]]\n static Ll = [\n [97, 122, 1],\n [181, 223, 42],\n [224, 246, 1],\n [248, 255, 1],\n [257, 311, 2],\n [312, 328, 2],\n [329, 375, 2],\n [378, 382, 2],\n [383, 384, 1],\n [387, 389, 2],\n [392, 396, 4],\n [397, 402, 5],\n [405, 409, 4],\n [410, 411, 1],\n [414, 417, 3],\n [419, 421, 2],\n [424, 426, 2],\n [427, 429, 2],\n [432, 436, 4],\n [438, 441, 3],\n [442, 445, 3],\n [446, 447, 1],\n [454, 460, 3],\n [462, 476, 2],\n [477, 495, 2],\n [496, 499, 3],\n [501, 505, 4],\n [507, 563, 2],\n [564, 569, 1],\n [572, 575, 3],\n [576, 578, 2],\n [583, 591, 2],\n [592, 659, 1],\n [661, 687, 1],\n [881, 883, 2],\n [887, 891, 4],\n [892, 893, 1],\n [912, 940, 28],\n [941, 974, 1],\n [976, 977, 1],\n [981, 983, 1],\n [985, 1007, 2],\n [1008, 1011, 1],\n [1013, 1019, 3],\n [1020, 1072, 52],\n [1073, 1119, 1],\n [1121, 1153, 2],\n [1163, 1215, 2],\n [1218, 1230, 2],\n [1231, 1327, 2],\n [1376, 1416, 1],\n [4304, 4346, 1],\n [4349, 4351, 1],\n [5112, 5117, 1],\n [7296, 7304, 1],\n [7424, 7467, 1],\n [7531, 7543, 1],\n [7545, 7578, 1],\n [7681, 7829, 2],\n [7830, 7837, 1],\n [7839, 7935, 2],\n [7936, 7943, 1],\n [7952, 7957, 1],\n [7968, 7975, 1],\n [7984, 7991, 1],\n [8000, 8005, 1],\n [8016, 8023, 1],\n [8032, 8039, 1],\n [8048, 8061, 1],\n [8064, 8071, 1],\n [8080, 8087, 1],\n [8096, 8103, 1],\n [8112, 8116, 1],\n [8118, 8119, 1],\n [8126, 8130, 4],\n [8131, 8132, 1],\n [8134, 8135, 1],\n [8144, 8147, 1],\n [8150, 8151, 1],\n [8160, 8167, 1],\n [8178, 8180, 1],\n [8182, 8183, 1],\n [8458, 8462, 4],\n [8463, 8467, 4],\n [8495, 8505, 5],\n [8508, 8509, 1],\n [8518, 8521, 1],\n [8526, 8580, 54],\n [11312, 11359, 1],\n [11361, 11365, 4],\n [11366, 11372, 2],\n [11377, 11379, 2],\n [11380, 11382, 2],\n [11383, 11387, 1],\n [11393, 11491, 2],\n [11492, 11500, 8],\n [11502, 11507, 5],\n [11520, 11557, 1],\n [11559, 11565, 6],\n [42561, 42605, 2],\n [42625, 42651, 2],\n [42787, 42799, 2],\n [42800, 42801, 1],\n [42803, 42865, 2],\n [42866, 42872, 1],\n [42874, 42876, 2],\n [42879, 42887, 2],\n [42892, 42894, 2],\n [42897, 42899, 2],\n [42900, 42901, 1],\n [42903, 42921, 2],\n [42927, 42933, 6],\n [42935, 42947, 2],\n [42952, 42954, 2],\n [42961, 42969, 2],\n [42998, 43002, 4],\n [43824, 43866, 1],\n [43872, 43880, 1],\n [43888, 43967, 1],\n [64256, 64262, 1],\n [64275, 64279, 1],\n [65345, 65370, 1],\n [66600, 66639, 1],\n [66776, 66811, 1],\n [66967, 66977, 1],\n [66979, 66993, 1],\n [66995, 67001, 1],\n [67003, 67004, 1],\n [68800, 68850, 1],\n [71872, 71903, 1],\n [93792, 93823, 1],\n [119834, 119859, 1],\n [119886, 119892, 1],\n [119894, 119911, 1],\n [119938, 119963, 1],\n [119990, 119993, 1],\n [119995, 119997, 2],\n [119998, 120003, 1],\n [120005, 120015, 1],\n [120042, 120067, 1],\n [120094, 120119, 1],\n [120146, 120171, 1],\n [120198, 120223, 1],\n [120250, 120275, 1],\n [120302, 120327, 1],\n [120354, 120379, 1],\n [120406, 120431, 1],\n [120458, 120485, 1],\n [120514, 120538, 1],\n [120540, 120545, 1],\n [120572, 120596, 1],\n [120598, 120603, 1],\n [120630, 120654, 1],\n [120656, 120661, 1],\n [120688, 120712, 1],\n [120714, 120719, 1],\n [120746, 120770, 1],\n [120772, 120777, 1],\n [120779, 122624, 1845],\n [122625, 122633, 1],\n [122635, 122654, 1],\n [122661, 122666, 1],\n [125218, 125251, 1]\n ]\n static foldLl = [\n [65, 90, 1],\n [192, 214, 1],\n [216, 222, 1],\n [256, 302, 2],\n [306, 310, 2],\n [313, 327, 2],\n [330, 376, 2],\n [377, 381, 2],\n [385, 386, 1],\n [388, 390, 2],\n [391, 393, 2],\n [394, 395, 1],\n [398, 401, 1],\n [403, 404, 1],\n [406, 408, 1],\n [412, 413, 1],\n [415, 416, 1],\n [418, 422, 2],\n [423, 425, 2],\n [428, 430, 2],\n [431, 433, 2],\n [434, 435, 1],\n [437, 439, 2],\n [440, 444, 4],\n [452, 453, 1],\n [455, 456, 1],\n [458, 459, 1],\n [461, 475, 2],\n [478, 494, 2],\n [497, 498, 1],\n [500, 502, 2],\n [503, 504, 1],\n [506, 562, 2],\n [570, 571, 1],\n [573, 574, 1],\n [577, 579, 2],\n [580, 582, 1],\n [584, 590, 2],\n [837, 880, 43],\n [882, 886, 4],\n [895, 902, 7],\n [904, 906, 1],\n [908, 910, 2],\n [911, 913, 2],\n [914, 929, 1],\n [931, 939, 1],\n [975, 984, 9],\n [986, 1006, 2],\n [1012, 1015, 3],\n [1017, 1018, 1],\n [1021, 1071, 1],\n [1120, 1152, 2],\n [1162, 1216, 2],\n [1217, 1229, 2],\n [1232, 1326, 2],\n [1329, 1366, 1],\n [4256, 4293, 1],\n [4295, 4301, 6],\n [5024, 5109, 1],\n [7312, 7354, 1],\n [7357, 7359, 1],\n [7680, 7828, 2],\n [7838, 7934, 2],\n [7944, 7951, 1],\n [7960, 7965, 1],\n [7976, 7983, 1],\n [7992, 7999, 1],\n [8008, 8013, 1],\n [8025, 8031, 2],\n [8040, 8047, 1],\n [8072, 8079, 1],\n [8088, 8095, 1],\n [8104, 8111, 1],\n [8120, 8124, 1],\n [8136, 8140, 1],\n [8152, 8155, 1],\n [8168, 8172, 1],\n [8184, 8188, 1],\n [8486, 8490, 4],\n [8491, 8498, 7],\n [8579, 11264, 2685],\n [11265, 11311, 1],\n [11360, 11362, 2],\n [11363, 11364, 1],\n [11367, 11373, 2],\n [11374, 11376, 1],\n [11378, 11381, 3],\n [11390, 11392, 1],\n [11394, 11490, 2],\n [11499, 11501, 2],\n [11506, 42560, 31054],\n [42562, 42604, 2],\n [42624, 42650, 2],\n [42786, 42798, 2],\n [42802, 42862, 2],\n [42873, 42877, 2],\n [42878, 42886, 2],\n [42891, 42893, 2],\n [42896, 42898, 2],\n [42902, 42922, 2],\n [42923, 42926, 1],\n [42928, 42932, 1],\n [42934, 42948, 2],\n [42949, 42951, 1],\n [42953, 42960, 7],\n [42966, 42968, 2],\n [42997, 65313, 22316],\n [65314, 65338, 1],\n [66560, 66599, 1],\n [66736, 66771, 1],\n [66928, 66938, 1],\n [66940, 66954, 1],\n [66956, 66962, 1],\n [66964, 66965, 1],\n [68736, 68786, 1],\n [71840, 71871, 1],\n [93760, 93791, 1],\n [125184, 125217, 1]\n ]\n static Lm = [\n [688, 705, 1],\n [710, 721, 1],\n [736, 740, 1],\n [748, 750, 2],\n [884, 890, 6],\n [1369, 1600, 231],\n [1765, 1766, 1],\n [2036, 2037, 1],\n [2042, 2074, 32],\n [2084, 2088, 4],\n [2249, 2417, 168],\n [3654, 3782, 128],\n [4348, 6103, 1755],\n [6211, 6823, 612],\n [7288, 7293, 1],\n [7468, 7530, 1],\n [7544, 7579, 35],\n [7580, 7615, 1],\n [8305, 8319, 14],\n [8336, 8348, 1],\n [11388, 11389, 1],\n [11631, 11823, 192],\n [12293, 12337, 44],\n [12338, 12341, 1],\n [12347, 12445, 98],\n [12446, 12540, 94],\n [12541, 12542, 1],\n [40981, 42232, 1251],\n [42233, 42237, 1],\n [42508, 42623, 115],\n [42652, 42653, 1],\n [42775, 42783, 1],\n [42864, 42888, 24],\n [42994, 42996, 1],\n [43000, 43001, 1],\n [43471, 43494, 23],\n [43632, 43741, 109],\n [43763, 43764, 1],\n [43868, 43871, 1],\n [43881, 65392, 21511],\n [65438, 65439, 1],\n [67456, 67461, 1],\n [67463, 67504, 1],\n [67506, 67514, 1],\n [92992, 92995, 1],\n [94099, 94111, 1],\n [94176, 94177, 1],\n [94179, 110576, 16397],\n [110577, 110579, 1],\n [110581, 110587, 1],\n [110589, 110590, 1],\n [122928, 122989, 1],\n [123191, 123197, 1],\n [124139, 125259, 1120]\n ]\n static Lo = [\n [170, 186, 16],\n [443, 448, 5],\n [449, 451, 1],\n [660, 1488, 828],\n [1489, 1514, 1],\n [1519, 1522, 1],\n [1568, 1599, 1],\n [1601, 1610, 1],\n [1646, 1647, 1],\n [1649, 1747, 1],\n [1749, 1774, 25],\n [1775, 1786, 11],\n [1787, 1788, 1],\n [1791, 1808, 17],\n [1810, 1839, 1],\n [1869, 1957, 1],\n [1969, 1994, 25],\n [1995, 2026, 1],\n [2048, 2069, 1],\n [2112, 2136, 1],\n [2144, 2154, 1],\n [2160, 2183, 1],\n [2185, 2190, 1],\n [2208, 2248, 1],\n [2308, 2361, 1],\n [2365, 2384, 19],\n [2392, 2401, 1],\n [2418, 2432, 1],\n [2437, 2444, 1],\n [2447, 2448, 1],\n [2451, 2472, 1],\n [2474, 2480, 1],\n [2482, 2486, 4],\n [2487, 2489, 1],\n [2493, 2510, 17],\n [2524, 2525, 1],\n [2527, 2529, 1],\n [2544, 2545, 1],\n [2556, 2565, 9],\n [2566, 2570, 1],\n [2575, 2576, 1],\n [2579, 2600, 1],\n [2602, 2608, 1],\n [2610, 2611, 1],\n [2613, 2614, 1],\n [2616, 2617, 1],\n [2649, 2652, 1],\n [2654, 2674, 20],\n [2675, 2676, 1],\n [2693, 2701, 1],\n [2703, 2705, 1],\n [2707, 2728, 1],\n [2730, 2736, 1],\n [2738, 2739, 1],\n [2741, 2745, 1],\n [2749, 2768, 19],\n [2784, 2785, 1],\n [2809, 2821, 12],\n [2822, 2828, 1],\n [2831, 2832, 1],\n [2835, 2856, 1],\n [2858, 2864, 1],\n [2866, 2867, 1],\n [2869, 2873, 1],\n [2877, 2908, 31],\n [2909, 2911, 2],\n [2912, 2913, 1],\n [2929, 2947, 18],\n [2949, 2954, 1],\n [2958, 2960, 1],\n [2962, 2965, 1],\n [2969, 2970, 1],\n [2972, 2974, 2],\n [2975, 2979, 4],\n [2980, 2984, 4],\n [2985, 2986, 1],\n [2990, 3001, 1],\n [3024, 3077, 53],\n [3078, 3084, 1],\n [3086, 3088, 1],\n [3090, 3112, 1],\n [3114, 3129, 1],\n [3133, 3160, 27],\n [3161, 3162, 1],\n [3165, 3168, 3],\n [3169, 3200, 31],\n [3205, 3212, 1],\n [3214, 3216, 1],\n [3218, 3240, 1],\n [3242, 3251, 1],\n [3253, 3257, 1],\n [3261, 3293, 32],\n [3294, 3296, 2],\n [3297, 3313, 16],\n [3314, 3332, 18],\n [3333, 3340, 1],\n [3342, 3344, 1],\n [3346, 3386, 1],\n [3389, 3406, 17],\n [3412, 3414, 1],\n [3423, 3425, 1],\n [3450, 3455, 1],\n [3461, 3478, 1],\n [3482, 3505, 1],\n [3507, 3515, 1],\n [3517, 3520, 3],\n [3521, 3526, 1],\n [3585, 3632, 1],\n [3634, 3635, 1],\n [3648, 3653, 1],\n [3713, 3714, 1],\n [3716, 3718, 2],\n [3719, 3722, 1],\n [3724, 3747, 1],\n [3749, 3751, 2],\n [3752, 3760, 1],\n [3762, 3763, 1],\n [3773, 3776, 3],\n [3777, 3780, 1],\n [3804, 3807, 1],\n [3840, 3904, 64],\n [3905, 3911, 1],\n [3913, 3948, 1],\n [3976, 3980, 1],\n [4096, 4138, 1],\n [4159, 4176, 17],\n [4177, 4181, 1],\n [4186, 4189, 1],\n [4193, 4197, 4],\n [4198, 4206, 8],\n [4207, 4208, 1],\n [4213, 4225, 1],\n [4238, 4352, 114],\n [4353, 4680, 1],\n [4682, 4685, 1],\n [4688, 4694, 1],\n [4696, 4698, 2],\n [4699, 4701, 1],\n [4704, 4744, 1],\n [4746, 4749, 1],\n [4752, 4784, 1],\n [4786, 4789, 1],\n [4792, 4798, 1],\n [4800, 4802, 2],\n [4803, 4805, 1],\n [4808, 4822, 1],\n [4824, 4880, 1],\n [4882, 4885, 1],\n [4888, 4954, 1],\n [4992, 5007, 1],\n [5121, 5740, 1],\n [5743, 5759, 1],\n [5761, 5786, 1],\n [5792, 5866, 1],\n [5873, 5880, 1],\n [5888, 5905, 1],\n [5919, 5937, 1],\n [5952, 5969, 1],\n [5984, 5996, 1],\n [5998, 6000, 1],\n [6016, 6067, 1],\n [6108, 6176, 68],\n [6177, 6210, 1],\n [6212, 6264, 1],\n [6272, 6276, 1],\n [6279, 6312, 1],\n [6314, 6320, 6],\n [6321, 6389, 1],\n [6400, 6430, 1],\n [6480, 6509, 1],\n [6512, 6516, 1],\n [6528, 6571, 1],\n [6576, 6601, 1],\n [6656, 6678, 1],\n [6688, 6740, 1],\n [6917, 6963, 1],\n [6981, 6988, 1],\n [7043, 7072, 1],\n [7086, 7087, 1],\n [7098, 7141, 1],\n [7168, 7203, 1],\n [7245, 7247, 1],\n [7258, 7287, 1],\n [7401, 7404, 1],\n [7406, 7411, 1],\n [7413, 7414, 1],\n [7418, 8501, 1083],\n [8502, 8504, 1],\n [11568, 11623, 1],\n [11648, 11670, 1],\n [11680, 11686, 1],\n [11688, 11694, 1],\n [11696, 11702, 1],\n [11704, 11710, 1],\n [11712, 11718, 1],\n [11720, 11726, 1],\n [11728, 11734, 1],\n [11736, 11742, 1],\n [12294, 12348, 54],\n [12353, 12438, 1],\n [12447, 12449, 2],\n [12450, 12538, 1],\n [12543, 12549, 6],\n [12550, 12591, 1],\n [12593, 12686, 1],\n [12704, 12735, 1],\n [12784, 12799, 1],\n [13312, 19903, 1],\n [19968, 40980, 1],\n [40982, 42124, 1],\n [42192, 42231, 1],\n [42240, 42507, 1],\n [42512, 42527, 1],\n [42538, 42539, 1],\n [42606, 42656, 50],\n [42657, 42725, 1],\n [42895, 42999, 104],\n [43003, 43009, 1],\n [43011, 43013, 1],\n [43015, 43018, 1],\n [43020, 43042, 1],\n [43072, 43123, 1],\n [43138, 43187, 1],\n [43250, 43255, 1],\n [43259, 43261, 2],\n [43262, 43274, 12],\n [43275, 43301, 1],\n [43312, 43334, 1],\n [43360, 43388, 1],\n [43396, 43442, 1],\n [43488, 43492, 1],\n [43495, 43503, 1],\n [43514, 43518, 1],\n [43520, 43560, 1],\n [43584, 43586, 1],\n [43588, 43595, 1],\n [43616, 43631, 1],\n [43633, 43638, 1],\n [43642, 43646, 4],\n [43647, 43695, 1],\n [43697, 43701, 4],\n [43702, 43705, 3],\n [43706, 43709, 1],\n [43712, 43714, 2],\n [43739, 43740, 1],\n [43744, 43754, 1],\n [43762, 43777, 15],\n [43778, 43782, 1],\n [43785, 43790, 1],\n [43793, 43798, 1],\n [43808, 43814, 1],\n [43816, 43822, 1],\n [43968, 44002, 1],\n [44032, 55203, 1],\n [55216, 55238, 1],\n [55243, 55291, 1],\n [63744, 64109, 1],\n [64112, 64217, 1],\n [64285, 64287, 2],\n [64288, 64296, 1],\n [64298, 64310, 1],\n [64312, 64316, 1],\n [64318, 64320, 2],\n [64321, 64323, 2],\n [64324, 64326, 2],\n [64327, 64433, 1],\n [64467, 64829, 1],\n [64848, 64911, 1],\n [64914, 64967, 1],\n [65008, 65019, 1],\n [65136, 65140, 1],\n [65142, 65276, 1],\n [65382, 65391, 1],\n [65393, 65437, 1],\n [65440, 65470, 1],\n [65474, 65479, 1],\n [65482, 65487, 1],\n [65490, 65495, 1],\n [65498, 65500, 1],\n [65536, 65547, 1],\n [65549, 65574, 1],\n [65576, 65594, 1],\n [65596, 65597, 1],\n [65599, 65613, 1],\n [65616, 65629, 1],\n [65664, 65786, 1],\n [66176, 66204, 1],\n [66208, 66256, 1],\n [66304, 66335, 1],\n [66349, 66368, 1],\n [66370, 66377, 1],\n [66384, 66421, 1],\n [66432, 66461, 1],\n [66464, 66499, 1],\n [66504, 66511, 1],\n [66640, 66717, 1],\n [66816, 66855, 1],\n [66864, 66915, 1],\n [67072, 67382, 1],\n [67392, 67413, 1],\n [67424, 67431, 1],\n [67584, 67589, 1],\n [67592, 67594, 2],\n [67595, 67637, 1],\n [67639, 67640, 1],\n [67644, 67647, 3],\n [67648, 67669, 1],\n [67680, 67702, 1],\n [67712, 67742, 1],\n [67808, 67826, 1],\n [67828, 67829, 1],\n [67840, 67861, 1],\n [67872, 67897, 1],\n [67968, 68023, 1],\n [68030, 68031, 1],\n [68096, 68112, 16],\n [68113, 68115, 1],\n [68117, 68119, 1],\n [68121, 68149, 1],\n [68192, 68220, 1],\n [68224, 68252, 1],\n [68288, 68295, 1],\n [68297, 68324, 1],\n [68352, 68405, 1],\n [68416, 68437, 1],\n [68448, 68466, 1],\n [68480, 68497, 1],\n [68608, 68680, 1],\n [68864, 68899, 1],\n [69248, 69289, 1],\n [69296, 69297, 1],\n [69376, 69404, 1],\n [69415, 69424, 9],\n [69425, 69445, 1],\n [69488, 69505, 1],\n [69552, 69572, 1],\n [69600, 69622, 1],\n [69635, 69687, 1],\n [69745, 69746, 1],\n [69749, 69763, 14],\n [69764, 69807, 1],\n [69840, 69864, 1],\n [69891, 69926, 1],\n [69956, 69959, 3],\n [69968, 70002, 1],\n [70006, 70019, 13],\n [70020, 70066, 1],\n [70081, 70084, 1],\n [70106, 70108, 2],\n [70144, 70161, 1],\n [70163, 70187, 1],\n [70207, 70208, 1],\n [70272, 70278, 1],\n [70280, 70282, 2],\n [70283, 70285, 1],\n [70287, 70301, 1],\n [70303, 70312, 1],\n [70320, 70366, 1],\n [70405, 70412, 1],\n [70415, 70416, 1],\n [70419, 70440, 1],\n [70442, 70448, 1],\n [70450, 70451, 1],\n [70453, 70457, 1],\n [70461, 70480, 19],\n [70493, 70497, 1],\n [70656, 70708, 1],\n [70727, 70730, 1],\n [70751, 70753, 1],\n [70784, 70831, 1],\n [70852, 70853, 1],\n [70855, 71040, 185],\n [71041, 71086, 1],\n [71128, 71131, 1],\n [71168, 71215, 1],\n [71236, 71296, 60],\n [71297, 71338, 1],\n [71352, 71424, 72],\n [71425, 71450, 1],\n [71488, 71494, 1],\n [71680, 71723, 1],\n [71935, 71942, 1],\n [71945, 71948, 3],\n [71949, 71955, 1],\n [71957, 71958, 1],\n [71960, 71983, 1],\n [71999, 72001, 2],\n [72096, 72103, 1],\n [72106, 72144, 1],\n [72161, 72163, 2],\n [72192, 72203, 11],\n [72204, 72242, 1],\n [72250, 72272, 22],\n [72284, 72329, 1],\n [72349, 72368, 19],\n [72369, 72440, 1],\n [72704, 72712, 1],\n [72714, 72750, 1],\n [72768, 72818, 50],\n [72819, 72847, 1],\n [72960, 72966, 1],\n [72968, 72969, 1],\n [72971, 73008, 1],\n [73030, 73056, 26],\n [73057, 73061, 1],\n [73063, 73064, 1],\n [73066, 73097, 1],\n [73112, 73440, 328],\n [73441, 73458, 1],\n [73474, 73476, 2],\n [73477, 73488, 1],\n [73490, 73523, 1],\n [73648, 73728, 80],\n [73729, 74649, 1],\n [74880, 75075, 1],\n [77712, 77808, 1],\n [77824, 78895, 1],\n [78913, 78918, 1],\n [82944, 83526, 1],\n [92160, 92728, 1],\n [92736, 92766, 1],\n [92784, 92862, 1],\n [92880, 92909, 1],\n [92928, 92975, 1],\n [93027, 93047, 1],\n [93053, 93071, 1],\n [93952, 94026, 1],\n [94032, 94208, 176],\n [94209, 100343, 1],\n [100352, 101589, 1],\n [101632, 101640, 1],\n [110592, 110882, 1],\n [110898, 110928, 30],\n [110929, 110930, 1],\n [110933, 110948, 15],\n [110949, 110951, 1],\n [110960, 111355, 1],\n [113664, 113770, 1],\n [113776, 113788, 1],\n [113792, 113800, 1],\n [113808, 113817, 1],\n [122634, 123136, 502],\n [123137, 123180, 1],\n [123214, 123536, 322],\n [123537, 123565, 1],\n [123584, 123627, 1],\n [124112, 124138, 1],\n [124896, 124902, 1],\n [124904, 124907, 1],\n [124909, 124910, 1],\n [124912, 124926, 1],\n [124928, 125124, 1],\n [126464, 126467, 1],\n [126469, 126495, 1],\n [126497, 126498, 1],\n [126500, 126503, 3],\n [126505, 126514, 1],\n [126516, 126519, 1],\n [126521, 126523, 2],\n [126530, 126535, 5],\n [126537, 126541, 2],\n [126542, 126543, 1],\n [126545, 126546, 1],\n [126548, 126551, 3],\n [126553, 126561, 2],\n [126562, 126564, 2],\n [126567, 126570, 1],\n [126572, 126578, 1],\n [126580, 126583, 1],\n [126585, 126588, 1],\n [126590, 126592, 2],\n [126593, 126601, 1],\n [126603, 126619, 1],\n [126625, 126627, 1],\n [126629, 126633, 1],\n [126635, 126651, 1],\n [131072, 173791, 1],\n [173824, 177977, 1],\n [177984, 178205, 1],\n [178208, 183969, 1],\n [183984, 191456, 1],\n [194560, 195101, 1],\n [196608, 201546, 1],\n [201552, 205743, 1]\n ]\n static Lt = [\n [453, 459, 3],\n [498, 8072, 7574],\n [8073, 8079, 1],\n [8088, 8095, 1],\n [8104, 8111, 1],\n [8124, 8140, 16],\n [8188, 8188, 1]\n ]\n static foldLt = [\n [452, 454, 2],\n [455, 457, 2],\n [458, 460, 2],\n [497, 499, 2],\n [8064, 8071, 1],\n [8080, 8087, 1],\n [8096, 8103, 1],\n [8115, 8131, 16],\n [8179, 8179, 1]\n ]\n static Lu = [\n [65, 90, 1],\n [192, 214, 1],\n [216, 222, 1],\n [256, 310, 2],\n [313, 327, 2],\n [330, 376, 2],\n [377, 381, 2],\n [385, 386, 1],\n [388, 390, 2],\n [391, 393, 2],\n [394, 395, 1],\n [398, 401, 1],\n [403, 404, 1],\n [406, 408, 1],\n [412, 413, 1],\n [415, 416, 1],\n [418, 422, 2],\n [423, 425, 2],\n [428, 430, 2],\n [431, 433, 2],\n [434, 435, 1],\n [437, 439, 2],\n [440, 444, 4],\n [452, 461, 3],\n [463, 475, 2],\n [478, 494, 2],\n [497, 500, 3],\n [502, 504, 1],\n [506, 562, 2],\n [570, 571, 1],\n [573, 574, 1],\n [577, 579, 2],\n [580, 582, 1],\n [584, 590, 2],\n [880, 882, 2],\n [886, 895, 9],\n [902, 904, 2],\n [905, 906, 1],\n [908, 910, 2],\n [911, 913, 2],\n [914, 929, 1],\n [931, 939, 1],\n [975, 978, 3],\n [979, 980, 1],\n [984, 1006, 2],\n [1012, 1015, 3],\n [1017, 1018, 1],\n [1021, 1071, 1],\n [1120, 1152, 2],\n [1162, 1216, 2],\n [1217, 1229, 2],\n [1232, 1326, 2],\n [1329, 1366, 1],\n [4256, 4293, 1],\n [4295, 4301, 6],\n [5024, 5109, 1],\n [7312, 7354, 1],\n [7357, 7359, 1],\n [7680, 7828, 2],\n [7838, 7934, 2],\n [7944, 7951, 1],\n [7960, 7965, 1],\n [7976, 7983, 1],\n [7992, 7999, 1],\n [8008, 8013, 1],\n [8025, 8031, 2],\n [8040, 8047, 1],\n [8120, 8123, 1],\n [8136, 8139, 1],\n [8152, 8155, 1],\n [8168, 8172, 1],\n [8184, 8187, 1],\n [8450, 8455, 5],\n [8459, 8461, 1],\n [8464, 8466, 1],\n [8469, 8473, 4],\n [8474, 8477, 1],\n [8484, 8490, 2],\n [8491, 8493, 1],\n [8496, 8499, 1],\n [8510, 8511, 1],\n [8517, 8579, 62],\n [11264, 11311, 1],\n [11360, 11362, 2],\n [11363, 11364, 1],\n [11367, 11373, 2],\n [11374, 11376, 1],\n [11378, 11381, 3],\n [11390, 11392, 1],\n [11394, 11490, 2],\n [11499, 11501, 2],\n [11506, 42560, 31054],\n [42562, 42604, 2],\n [42624, 42650, 2],\n [42786, 42798, 2],\n [42802, 42862, 2],\n [42873, 42877, 2],\n [42878, 42886, 2],\n [42891, 42893, 2],\n [42896, 42898, 2],\n [42902, 42922, 2],\n [42923, 42926, 1],\n [42928, 42932, 1],\n [42934, 42948, 2],\n [42949, 42951, 1],\n [42953, 42960, 7],\n [42966, 42968, 2],\n [42997, 65313, 22316],\n [65314, 65338, 1],\n [66560, 66599, 1],\n [66736, 66771, 1],\n [66928, 66938, 1],\n [66940, 66954, 1],\n [66956, 66962, 1],\n [66964, 66965, 1],\n [68736, 68786, 1],\n [71840, 71871, 1],\n [93760, 93791, 1],\n [119808, 119833, 1],\n [119860, 119885, 1],\n [119912, 119937, 1],\n [119964, 119966, 2],\n [119967, 119973, 3],\n [119974, 119977, 3],\n [119978, 119980, 1],\n [119982, 119989, 1],\n [120016, 120041, 1],\n [120068, 120069, 1],\n [120071, 120074, 1],\n [120077, 120084, 1],\n [120086, 120092, 1],\n [120120, 120121, 1],\n [120123, 120126, 1],\n [120128, 120132, 1],\n [120134, 120138, 4],\n [120139, 120144, 1],\n [120172, 120197, 1],\n [120224, 120249, 1],\n [120276, 120301, 1],\n [120328, 120353, 1],\n [120380, 120405, 1],\n [120432, 120457, 1],\n [120488, 120512, 1],\n [120546, 120570, 1],\n [120604, 120628, 1],\n [120662, 120686, 1],\n [120720, 120744, 1],\n [120778, 125184, 4406],\n [125185, 125217, 1]\n ]\n static Upper = this.Lu\n static foldLu = [\n [97, 122, 1],\n [181, 223, 42],\n [224, 246, 1],\n [248, 255, 1],\n [257, 303, 2],\n [307, 311, 2],\n [314, 328, 2],\n [331, 375, 2],\n [378, 382, 2],\n [383, 384, 1],\n [387, 389, 2],\n [392, 396, 4],\n [402, 405, 3],\n [409, 410, 1],\n [414, 417, 3],\n [419, 421, 2],\n [424, 429, 5],\n [432, 436, 4],\n [438, 441, 3],\n [445, 447, 2],\n [453, 454, 1],\n [456, 457, 1],\n [459, 460, 1],\n [462, 476, 2],\n [477, 495, 2],\n [498, 499, 1],\n [501, 505, 4],\n [507, 543, 2],\n [547, 563, 2],\n [572, 575, 3],\n [576, 578, 2],\n [583, 591, 2],\n [592, 596, 1],\n [598, 599, 1],\n [601, 603, 2],\n [604, 608, 4],\n [609, 613, 2],\n [614, 616, 2],\n [617, 620, 1],\n [623, 625, 2],\n [626, 629, 3],\n [637, 640, 3],\n [642, 643, 1],\n [647, 652, 1],\n [658, 669, 11],\n [670, 837, 167],\n [881, 883, 2],\n [887, 891, 4],\n [892, 893, 1],\n [940, 943, 1],\n [945, 974, 1],\n [976, 977, 1],\n [981, 983, 1],\n [985, 1007, 2],\n [1008, 1011, 1],\n [1013, 1019, 3],\n [1072, 1119, 1],\n [1121, 1153, 2],\n [1163, 1215, 2],\n [1218, 1230, 2],\n [1231, 1327, 2],\n [1377, 1414, 1],\n [4304, 4346, 1],\n [4349, 4351, 1],\n [5112, 5117, 1],\n [7296, 7304, 1],\n [7545, 7549, 4],\n [7566, 7681, 115],\n [7683, 7829, 2],\n [7835, 7841, 6],\n [7843, 7935, 2],\n [7936, 7943, 1],\n [7952, 7957, 1],\n [7968, 7975, 1],\n [7984, 7991, 1],\n [8000, 8005, 1],\n [8017, 8023, 2],\n [8032, 8039, 1],\n [8048, 8061, 1],\n [8112, 8113, 1],\n [8126, 8144, 18],\n [8145, 8160, 15],\n [8161, 8165, 4],\n [8526, 8580, 54],\n [11312, 11359, 1],\n [11361, 11365, 4],\n [11366, 11372, 2],\n [11379, 11382, 3],\n [11393, 11491, 2],\n [11500, 11502, 2],\n [11507, 11520, 13],\n [11521, 11557, 1],\n [11559, 11565, 6],\n [42561, 42605, 2],\n [42625, 42651, 2],\n [42787, 42799, 2],\n [42803, 42863, 2],\n [42874, 42876, 2],\n [42879, 42887, 2],\n [42892, 42897, 5],\n [42899, 42900, 1],\n [42903, 42921, 2],\n [42933, 42947, 2],\n [42952, 42954, 2],\n [42961, 42967, 6],\n [42969, 42998, 29],\n [43859, 43888, 29],\n [43889, 43967, 1],\n [65345, 65370, 1],\n [66600, 66639, 1],\n [66776, 66811, 1],\n [66967, 66977, 1],\n [66979, 66993, 1],\n [66995, 67001, 1],\n [67003, 67004, 1],\n [68800, 68850, 1],\n [71872, 71903, 1],\n [93792, 93823, 1],\n [125218, 125251, 1]\n ]\n static M = [\n [768, 879, 1],\n [1155, 1161, 1],\n [1425, 1469, 1],\n [1471, 1473, 2],\n [1474, 1476, 2],\n [1477, 1479, 2],\n [1552, 1562, 1],\n [1611, 1631, 1],\n [1648, 1750, 102],\n [1751, 1756, 1],\n [1759, 1764, 1],\n [1767, 1768, 1],\n [1770, 1773, 1],\n [1809, 1840, 31],\n [1841, 1866, 1],\n [1958, 1968, 1],\n [2027, 2035, 1],\n [2045, 2070, 25],\n [2071, 2073, 1],\n [2075, 2083, 1],\n [2085, 2087, 1],\n [2089, 2093, 1],\n [2137, 2139, 1],\n [2200, 2207, 1],\n [2250, 2273, 1],\n [2275, 2307, 1],\n [2362, 2364, 1],\n [2366, 2383, 1],\n [2385, 2391, 1],\n [2402, 2403, 1],\n [2433, 2435, 1],\n [2492, 2494, 2],\n [2495, 2500, 1],\n [2503, 2504, 1],\n [2507, 2509, 1],\n [2519, 2530, 11],\n [2531, 2558, 27],\n [2561, 2563, 1],\n [2620, 2622, 2],\n [2623, 2626, 1],\n [2631, 2632, 1],\n [2635, 2637, 1],\n [2641, 2672, 31],\n [2673, 2677, 4],\n [2689, 2691, 1],\n [2748, 2750, 2],\n [2751, 2757, 1],\n [2759, 2761, 1],\n [2763, 2765, 1],\n [2786, 2787, 1],\n [2810, 2815, 1],\n [2817, 2819, 1],\n [2876, 2878, 2],\n [2879, 2884, 1],\n [2887, 2888, 1],\n [2891, 2893, 1],\n [2901, 2903, 1],\n [2914, 2915, 1],\n [2946, 3006, 60],\n [3007, 3010, 1],\n [3014, 3016, 1],\n [3018, 3021, 1],\n [3031, 3072, 41],\n [3073, 3076, 1],\n [3132, 3134, 2],\n [3135, 3140, 1],\n [3142, 3144, 1],\n [3146, 3149, 1],\n [3157, 3158, 1],\n [3170, 3171, 1],\n [3201, 3203, 1],\n [3260, 3262, 2],\n [3263, 3268, 1],\n [3270, 3272, 1],\n [3274, 3277, 1],\n [3285, 3286, 1],\n [3298, 3299, 1],\n [3315, 3328, 13],\n [3329, 3331, 1],\n [3387, 3388, 1],\n [3390, 3396, 1],\n [3398, 3400, 1],\n [3402, 3405, 1],\n [3415, 3426, 11],\n [3427, 3457, 30],\n [3458, 3459, 1],\n [3530, 3535, 5],\n [3536, 3540, 1],\n [3542, 3544, 2],\n [3545, 3551, 1],\n [3570, 3571, 1],\n [3633, 3636, 3],\n [3637, 3642, 1],\n [3655, 3662, 1],\n [3761, 3764, 3],\n [3765, 3772, 1],\n [3784, 3790, 1],\n [3864, 3865, 1],\n [3893, 3897, 2],\n [3902, 3903, 1],\n [3953, 3972, 1],\n [3974, 3975, 1],\n [3981, 3991, 1],\n [3993, 4028, 1],\n [4038, 4139, 101],\n [4140, 4158, 1],\n [4182, 4185, 1],\n [4190, 4192, 1],\n [4194, 4196, 1],\n [4199, 4205, 1],\n [4209, 4212, 1],\n [4226, 4237, 1],\n [4239, 4250, 11],\n [4251, 4253, 1],\n [4957, 4959, 1],\n [5906, 5909, 1],\n [5938, 5940, 1],\n [5970, 5971, 1],\n [6002, 6003, 1],\n [6068, 6099, 1],\n [6109, 6155, 46],\n [6156, 6157, 1],\n [6159, 6277, 118],\n [6278, 6313, 35],\n [6432, 6443, 1],\n [6448, 6459, 1],\n [6679, 6683, 1],\n [6741, 6750, 1],\n [6752, 6780, 1],\n [6783, 6832, 49],\n [6833, 6862, 1],\n [6912, 6916, 1],\n [6964, 6980, 1],\n [7019, 7027, 1],\n [7040, 7042, 1],\n [7073, 7085, 1],\n [7142, 7155, 1],\n [7204, 7223, 1],\n [7376, 7378, 1],\n [7380, 7400, 1],\n [7405, 7412, 7],\n [7415, 7417, 1],\n [7616, 7679, 1],\n [8400, 8432, 1],\n [11503, 11505, 1],\n [11647, 11744, 97],\n [11745, 11775, 1],\n [12330, 12335, 1],\n [12441, 12442, 1],\n [42607, 42610, 1],\n [42612, 42621, 1],\n [42654, 42655, 1],\n [42736, 42737, 1],\n [43010, 43014, 4],\n [43019, 43043, 24],\n [43044, 43047, 1],\n [43052, 43136, 84],\n [43137, 43188, 51],\n [43189, 43205, 1],\n [43232, 43249, 1],\n [43263, 43302, 39],\n [43303, 43309, 1],\n [43335, 43347, 1],\n [43392, 43395, 1],\n [43443, 43456, 1],\n [43493, 43561, 68],\n [43562, 43574, 1],\n [43587, 43596, 9],\n [43597, 43643, 46],\n [43644, 43645, 1],\n [43696, 43698, 2],\n [43699, 43700, 1],\n [43703, 43704, 1],\n [43710, 43711, 1],\n [43713, 43755, 42],\n [43756, 43759, 1],\n [43765, 43766, 1],\n [44003, 44010, 1],\n [44012, 44013, 1],\n [64286, 65024, 738],\n [65025, 65039, 1],\n [65056, 65071, 1],\n [66045, 66272, 227],\n [66422, 66426, 1],\n [68097, 68099, 1],\n [68101, 68102, 1],\n [68108, 68111, 1],\n [68152, 68154, 1],\n [68159, 68325, 166],\n [68326, 68900, 574],\n [68901, 68903, 1],\n [69291, 69292, 1],\n [69373, 69375, 1],\n [69446, 69456, 1],\n [69506, 69509, 1],\n [69632, 69634, 1],\n [69688, 69702, 1],\n [69744, 69747, 3],\n [69748, 69759, 11],\n [69760, 69762, 1],\n [69808, 69818, 1],\n [69826, 69888, 62],\n [69889, 69890, 1],\n [69927, 69940, 1],\n [69957, 69958, 1],\n [70003, 70016, 13],\n [70017, 70018, 1],\n [70067, 70080, 1],\n [70089, 70092, 1],\n [70094, 70095, 1],\n [70188, 70199, 1],\n [70206, 70209, 3],\n [70367, 70378, 1],\n [70400, 70403, 1],\n [70459, 70460, 1],\n [70462, 70468, 1],\n [70471, 70472, 1],\n [70475, 70477, 1],\n [70487, 70498, 11],\n [70499, 70502, 3],\n [70503, 70508, 1],\n [70512, 70516, 1],\n [70709, 70726, 1],\n [70750, 70832, 82],\n [70833, 70851, 1],\n [71087, 71093, 1],\n [71096, 71104, 1],\n [71132, 71133, 1],\n [71216, 71232, 1],\n [71339, 71351, 1],\n [71453, 71467, 1],\n [71724, 71738, 1],\n [71984, 71989, 1],\n [71991, 71992, 1],\n [71995, 71998, 1],\n [72000, 72002, 2],\n [72003, 72145, 142],\n [72146, 72151, 1],\n [72154, 72160, 1],\n [72164, 72193, 29],\n [72194, 72202, 1],\n [72243, 72249, 1],\n [72251, 72254, 1],\n [72263, 72273, 10],\n [72274, 72283, 1],\n [72330, 72345, 1],\n [72751, 72758, 1],\n [72760, 72767, 1],\n [72850, 72871, 1],\n [72873, 72886, 1],\n [73009, 73014, 1],\n [73018, 73020, 2],\n [73021, 73023, 2],\n [73024, 73029, 1],\n [73031, 73098, 67],\n [73099, 73102, 1],\n [73104, 73105, 1],\n [73107, 73111, 1],\n [73459, 73462, 1],\n [73472, 73473, 1],\n [73475, 73524, 49],\n [73525, 73530, 1],\n [73534, 73538, 1],\n [78912, 78919, 7],\n [78920, 78933, 1],\n [92912, 92916, 1],\n [92976, 92982, 1],\n [94031, 94033, 2],\n [94034, 94087, 1],\n [94095, 94098, 1],\n [94180, 94192, 12],\n [94193, 113821, 19628],\n [113822, 118528, 4706],\n [118529, 118573, 1],\n [118576, 118598, 1],\n [119141, 119145, 1],\n [119149, 119154, 1],\n [119163, 119170, 1],\n [119173, 119179, 1],\n [119210, 119213, 1],\n [119362, 119364, 1],\n [121344, 121398, 1],\n [121403, 121452, 1],\n [121461, 121476, 15],\n [121499, 121503, 1],\n [121505, 121519, 1],\n [122880, 122886, 1],\n [122888, 122904, 1],\n [122907, 122913, 1],\n [122915, 122916, 1],\n [122918, 122922, 1],\n [123023, 123184, 161],\n [123185, 123190, 1],\n [123566, 123628, 62],\n [123629, 123631, 1],\n [124140, 124143, 1],\n [125136, 125142, 1],\n [125252, 125258, 1],\n [917760, 917999, 1]\n ]\n static foldM = [\n [921, 953, 32],\n [8126, 8126, 1]\n ]\n static Mc = [\n [2307, 2363, 56],\n [2366, 2368, 1],\n [2377, 2380, 1],\n [2382, 2383, 1],\n [2434, 2435, 1],\n [2494, 2496, 1],\n [2503, 2504, 1],\n [2507, 2508, 1],\n [2519, 2563, 44],\n [2622, 2624, 1],\n [2691, 2750, 59],\n [2751, 2752, 1],\n [2761, 2763, 2],\n [2764, 2818, 54],\n [2819, 2878, 59],\n [2880, 2887, 7],\n [2888, 2891, 3],\n [2892, 2903, 11],\n [3006, 3007, 1],\n [3009, 3010, 1],\n [3014, 3016, 1],\n [3018, 3020, 1],\n [3031, 3073, 42],\n [3074, 3075, 1],\n [3137, 3140, 1],\n [3202, 3203, 1],\n [3262, 3264, 2],\n [3265, 3268, 1],\n [3271, 3272, 1],\n [3274, 3275, 1],\n [3285, 3286, 1],\n [3315, 3330, 15],\n [3331, 3390, 59],\n [3391, 3392, 1],\n [3398, 3400, 1],\n [3402, 3404, 1],\n [3415, 3458, 43],\n [3459, 3535, 76],\n [3536, 3537, 1],\n [3544, 3551, 1],\n [3570, 3571, 1],\n [3902, 3903, 1],\n [3967, 4139, 172],\n [4140, 4145, 5],\n [4152, 4155, 3],\n [4156, 4182, 26],\n [4183, 4194, 11],\n [4195, 4196, 1],\n [4199, 4205, 1],\n [4227, 4228, 1],\n [4231, 4236, 1],\n [4239, 4250, 11],\n [4251, 4252, 1],\n [5909, 5940, 31],\n [6070, 6078, 8],\n [6079, 6085, 1],\n [6087, 6088, 1],\n [6435, 6438, 1],\n [6441, 6443, 1],\n [6448, 6449, 1],\n [6451, 6456, 1],\n [6681, 6682, 1],\n [6741, 6743, 2],\n [6753, 6755, 2],\n [6756, 6765, 9],\n [6766, 6770, 1],\n [6916, 6965, 49],\n [6971, 6973, 2],\n [6974, 6977, 1],\n [6979, 6980, 1],\n [7042, 7073, 31],\n [7078, 7079, 1],\n [7082, 7143, 61],\n [7146, 7148, 1],\n [7150, 7154, 4],\n [7155, 7204, 49],\n [7205, 7211, 1],\n [7220, 7221, 1],\n [7393, 7415, 22],\n [12334, 12335, 1],\n [43043, 43044, 1],\n [43047, 43136, 89],\n [43137, 43188, 51],\n [43189, 43203, 1],\n [43346, 43347, 1],\n [43395, 43444, 49],\n [43445, 43450, 5],\n [43451, 43454, 3],\n [43455, 43456, 1],\n [43567, 43568, 1],\n [43571, 43572, 1],\n [43597, 43643, 46],\n [43645, 43755, 110],\n [43758, 43759, 1],\n [43765, 44003, 238],\n [44004, 44006, 2],\n [44007, 44009, 2],\n [44010, 44012, 2],\n [69632, 69634, 2],\n [69762, 69808, 46],\n [69809, 69810, 1],\n [69815, 69816, 1],\n [69932, 69957, 25],\n [69958, 70018, 60],\n [70067, 70069, 1],\n [70079, 70080, 1],\n [70094, 70188, 94],\n [70189, 70190, 1],\n [70194, 70195, 1],\n [70197, 70368, 171],\n [70369, 70370, 1],\n [70402, 70403, 1],\n [70462, 70463, 1],\n [70465, 70468, 1],\n [70471, 70472, 1],\n [70475, 70477, 1],\n [70487, 70498, 11],\n [70499, 70709, 210],\n [70710, 70711, 1],\n [70720, 70721, 1],\n [70725, 70832, 107],\n [70833, 70834, 1],\n [70841, 70843, 2],\n [70844, 70846, 1],\n [70849, 71087, 238],\n [71088, 71089, 1],\n [71096, 71099, 1],\n [71102, 71216, 114],\n [71217, 71218, 1],\n [71227, 71228, 1],\n [71230, 71340, 110],\n [71342, 71343, 1],\n [71350, 71456, 106],\n [71457, 71462, 5],\n [71724, 71726, 1],\n [71736, 71984, 248],\n [71985, 71989, 1],\n [71991, 71992, 1],\n [71997, 72000, 3],\n [72002, 72145, 143],\n [72146, 72147, 1],\n [72156, 72159, 1],\n [72164, 72249, 85],\n [72279, 72280, 1],\n [72343, 72751, 408],\n [72766, 72873, 107],\n [72881, 72884, 3],\n [73098, 73102, 1],\n [73107, 73108, 1],\n [73110, 73461, 351],\n [73462, 73475, 13],\n [73524, 73525, 1],\n [73534, 73535, 1],\n [73537, 94033, 20496],\n [94034, 94087, 1],\n [94192, 94193, 1],\n [119141, 119142, 1],\n [119149, 119154, 1]\n ]\n static Me = [\n [1160, 1161, 1],\n [6846, 8413, 1567],\n [8414, 8416, 1],\n [8418, 8420, 1],\n [42608, 42610, 1]\n ]\n static Mn = [\n [768, 879, 1],\n [1155, 1159, 1],\n [1425, 1469, 1],\n [1471, 1473, 2],\n [1474, 1476, 2],\n [1477, 1479, 2],\n [1552, 1562, 1],\n [1611, 1631, 1],\n [1648, 1750, 102],\n [1751, 1756, 1],\n [1759, 1764, 1],\n [1767, 1768, 1],\n [1770, 1773, 1],\n [1809, 1840, 31],\n [1841, 1866, 1],\n [1958, 1968, 1],\n [2027, 2035, 1],\n [2045, 2070, 25],\n [2071, 2073, 1],\n [2075, 2083, 1],\n [2085, 2087, 1],\n [2089, 2093, 1],\n [2137, 2139, 1],\n [2200, 2207, 1],\n [2250, 2273, 1],\n [2275, 2306, 1],\n [2362, 2364, 2],\n [2369, 2376, 1],\n [2381, 2385, 4],\n [2386, 2391, 1],\n [2402, 2403, 1],\n [2433, 2492, 59],\n [2497, 2500, 1],\n [2509, 2530, 21],\n [2531, 2558, 27],\n [2561, 2562, 1],\n [2620, 2625, 5],\n [2626, 2631, 5],\n [2632, 2635, 3],\n [2636, 2637, 1],\n [2641, 2672, 31],\n [2673, 2677, 4],\n [2689, 2690, 1],\n [2748, 2753, 5],\n [2754, 2757, 1],\n [2759, 2760, 1],\n [2765, 2786, 21],\n [2787, 2810, 23],\n [2811, 2815, 1],\n [2817, 2876, 59],\n [2879, 2881, 2],\n [2882, 2884, 1],\n [2893, 2901, 8],\n [2902, 2914, 12],\n [2915, 2946, 31],\n [3008, 3021, 13],\n [3072, 3076, 4],\n [3132, 3134, 2],\n [3135, 3136, 1],\n [3142, 3144, 1],\n [3146, 3149, 1],\n [3157, 3158, 1],\n [3170, 3171, 1],\n [3201, 3260, 59],\n [3263, 3270, 7],\n [3276, 3277, 1],\n [3298, 3299, 1],\n [3328, 3329, 1],\n [3387, 3388, 1],\n [3393, 3396, 1],\n [3405, 3426, 21],\n [3427, 3457, 30],\n [3530, 3538, 8],\n [3539, 3540, 1],\n [3542, 3633, 91],\n [3636, 3642, 1],\n [3655, 3662, 1],\n [3761, 3764, 3],\n [3765, 3772, 1],\n [3784, 3790, 1],\n [3864, 3865, 1],\n [3893, 3897, 2],\n [3953, 3966, 1],\n [3968, 3972, 1],\n [3974, 3975, 1],\n [3981, 3991, 1],\n [3993, 4028, 1],\n [4038, 4141, 103],\n [4142, 4144, 1],\n [4146, 4151, 1],\n [4153, 4154, 1],\n [4157, 4158, 1],\n [4184, 4185, 1],\n [4190, 4192, 1],\n [4209, 4212, 1],\n [4226, 4229, 3],\n [4230, 4237, 7],\n [4253, 4957, 704],\n [4958, 4959, 1],\n [5906, 5908, 1],\n [5938, 5939, 1],\n [5970, 5971, 1],\n [6002, 6003, 1],\n [6068, 6069, 1],\n [6071, 6077, 1],\n [6086, 6089, 3],\n [6090, 6099, 1],\n [6109, 6155, 46],\n [6156, 6157, 1],\n [6159, 6277, 118],\n [6278, 6313, 35],\n [6432, 6434, 1],\n [6439, 6440, 1],\n [6450, 6457, 7],\n [6458, 6459, 1],\n [6679, 6680, 1],\n [6683, 6742, 59],\n [6744, 6750, 1],\n [6752, 6754, 2],\n [6757, 6764, 1],\n [6771, 6780, 1],\n [6783, 6832, 49],\n [6833, 6845, 1],\n [6847, 6862, 1],\n [6912, 6915, 1],\n [6964, 6966, 2],\n [6967, 6970, 1],\n [6972, 6978, 6],\n [7019, 7027, 1],\n [7040, 7041, 1],\n [7074, 7077, 1],\n [7080, 7081, 1],\n [7083, 7085, 1],\n [7142, 7144, 2],\n [7145, 7149, 4],\n [7151, 7153, 1],\n [7212, 7219, 1],\n [7222, 7223, 1],\n [7376, 7378, 1],\n [7380, 7392, 1],\n [7394, 7400, 1],\n [7405, 7412, 7],\n [7416, 7417, 1],\n [7616, 7679, 1],\n [8400, 8412, 1],\n [8417, 8421, 4],\n [8422, 8432, 1],\n [11503, 11505, 1],\n [11647, 11744, 97],\n [11745, 11775, 1],\n [12330, 12333, 1],\n [12441, 12442, 1],\n [42607, 42612, 5],\n [42613, 42621, 1],\n [42654, 42655, 1],\n [42736, 42737, 1],\n [43010, 43014, 4],\n [43019, 43045, 26],\n [43046, 43052, 6],\n [43204, 43205, 1],\n [43232, 43249, 1],\n [43263, 43302, 39],\n [43303, 43309, 1],\n [43335, 43345, 1],\n [43392, 43394, 1],\n [43443, 43446, 3],\n [43447, 43449, 1],\n [43452, 43453, 1],\n [43493, 43561, 68],\n [43562, 43566, 1],\n [43569, 43570, 1],\n [43573, 43574, 1],\n [43587, 43596, 9],\n [43644, 43696, 52],\n [43698, 43700, 1],\n [43703, 43704, 1],\n [43710, 43711, 1],\n [43713, 43756, 43],\n [43757, 43766, 9],\n [44005, 44008, 3],\n [44013, 64286, 20273],\n [65024, 65039, 1],\n [65056, 65071, 1],\n [66045, 66272, 227],\n [66422, 66426, 1],\n [68097, 68099, 1],\n [68101, 68102, 1],\n [68108, 68111, 1],\n [68152, 68154, 1],\n [68159, 68325, 166],\n [68326, 68900, 574],\n [68901, 68903, 1],\n [69291, 69292, 1],\n [69373, 69375, 1],\n [69446, 69456, 1],\n [69506, 69509, 1],\n [69633, 69688, 55],\n [69689, 69702, 1],\n [69744, 69747, 3],\n [69748, 69759, 11],\n [69760, 69761, 1],\n [69811, 69814, 1],\n [69817, 69818, 1],\n [69826, 69888, 62],\n [69889, 69890, 1],\n [69927, 69931, 1],\n [69933, 69940, 1],\n [70003, 70016, 13],\n [70017, 70070, 53],\n [70071, 70078, 1],\n [70089, 70092, 1],\n [70095, 70191, 96],\n [70192, 70193, 1],\n [70196, 70198, 2],\n [70199, 70206, 7],\n [70209, 70367, 158],\n [70371, 70378, 1],\n [70400, 70401, 1],\n [70459, 70460, 1],\n [70464, 70502, 38],\n [70503, 70508, 1],\n [70512, 70516, 1],\n [70712, 70719, 1],\n [70722, 70724, 1],\n [70726, 70750, 24],\n [70835, 70840, 1],\n [70842, 70847, 5],\n [70848, 70850, 2],\n [70851, 71090, 239],\n [71091, 71093, 1],\n [71100, 71101, 1],\n [71103, 71104, 1],\n [71132, 71133, 1],\n [71219, 71226, 1],\n [71229, 71231, 2],\n [71232, 71339, 107],\n [71341, 71344, 3],\n [71345, 71349, 1],\n [71351, 71453, 102],\n [71454, 71455, 1],\n [71458, 71461, 1],\n [71463, 71467, 1],\n [71727, 71735, 1],\n [71737, 71738, 1],\n [71995, 71996, 1],\n [71998, 72003, 5],\n [72148, 72151, 1],\n [72154, 72155, 1],\n [72160, 72193, 33],\n [72194, 72202, 1],\n [72243, 72248, 1],\n [72251, 72254, 1],\n [72263, 72273, 10],\n [72274, 72278, 1],\n [72281, 72283, 1],\n [72330, 72342, 1],\n [72344, 72345, 1],\n [72752, 72758, 1],\n [72760, 72765, 1],\n [72767, 72850, 83],\n [72851, 72871, 1],\n [72874, 72880, 1],\n [72882, 72883, 1],\n [72885, 72886, 1],\n [73009, 73014, 1],\n [73018, 73020, 2],\n [73021, 73023, 2],\n [73024, 73029, 1],\n [73031, 73104, 73],\n [73105, 73109, 4],\n [73111, 73459, 348],\n [73460, 73472, 12],\n [73473, 73526, 53],\n [73527, 73530, 1],\n [73536, 73538, 2],\n [78912, 78919, 7],\n [78920, 78933, 1],\n [92912, 92916, 1],\n [92976, 92982, 1],\n [94031, 94095, 64],\n [94096, 94098, 1],\n [94180, 113821, 19641],\n [113822, 118528, 4706],\n [118529, 118573, 1],\n [118576, 118598, 1],\n [119143, 119145, 1],\n [119163, 119170, 1],\n [119173, 119179, 1],\n [119210, 119213, 1],\n [119362, 119364, 1],\n [121344, 121398, 1],\n [121403, 121452, 1],\n [121461, 121476, 15],\n [121499, 121503, 1],\n [121505, 121519, 1],\n [122880, 122886, 1],\n [122888, 122904, 1],\n [122907, 122913, 1],\n [122915, 122916, 1],\n [122918, 122922, 1],\n [123023, 123184, 161],\n [123185, 123190, 1],\n [123566, 123628, 62],\n [123629, 123631, 1],\n [124140, 124143, 1],\n [125136, 125142, 1],\n [125252, 125258, 1],\n [917760, 917999, 1]\n ]\n static foldMn = [\n [921, 953, 32],\n [8126, 8126, 1]\n ]\n static N = [\n [48, 57, 1],\n [178, 179, 1],\n [185, 188, 3],\n [189, 190, 1],\n [1632, 1641, 1],\n [1776, 1785, 1],\n [1984, 1993, 1],\n [2406, 2415, 1],\n [2534, 2543, 1],\n [2548, 2553, 1],\n [2662, 2671, 1],\n [2790, 2799, 1],\n [2918, 2927, 1],\n [2930, 2935, 1],\n [3046, 3058, 1],\n [3174, 3183, 1],\n [3192, 3198, 1],\n [3302, 3311, 1],\n [3416, 3422, 1],\n [3430, 3448, 1],\n [3558, 3567, 1],\n [3664, 3673, 1],\n [3792, 3801, 1],\n [3872, 3891, 1],\n [4160, 4169, 1],\n [4240, 4249, 1],\n [4969, 4988, 1],\n [5870, 5872, 1],\n [6112, 6121, 1],\n [6128, 6137, 1],\n [6160, 6169, 1],\n [6470, 6479, 1],\n [6608, 6618, 1],\n [6784, 6793, 1],\n [6800, 6809, 1],\n [6992, 7001, 1],\n [7088, 7097, 1],\n [7232, 7241, 1],\n [7248, 7257, 1],\n [8304, 8308, 4],\n [8309, 8313, 1],\n [8320, 8329, 1],\n [8528, 8578, 1],\n [8581, 8585, 1],\n [9312, 9371, 1],\n [9450, 9471, 1],\n [10102, 10131, 1],\n [11517, 12295, 778],\n [12321, 12329, 1],\n [12344, 12346, 1],\n [12690, 12693, 1],\n [12832, 12841, 1],\n [12872, 12879, 1],\n [12881, 12895, 1],\n [12928, 12937, 1],\n [12977, 12991, 1],\n [42528, 42537, 1],\n [42726, 42735, 1],\n [43056, 43061, 1],\n [43216, 43225, 1],\n [43264, 43273, 1],\n [43472, 43481, 1],\n [43504, 43513, 1],\n [43600, 43609, 1],\n [44016, 44025, 1],\n [65296, 65305, 1],\n [65799, 65843, 1],\n [65856, 65912, 1],\n [65930, 65931, 1],\n [66273, 66299, 1],\n [66336, 66339, 1],\n [66369, 66378, 9],\n [66513, 66517, 1],\n [66720, 66729, 1],\n [67672, 67679, 1],\n [67705, 67711, 1],\n [67751, 67759, 1],\n [67835, 67839, 1],\n [67862, 67867, 1],\n [68028, 68029, 1],\n [68032, 68047, 1],\n [68050, 68095, 1],\n [68160, 68168, 1],\n [68221, 68222, 1],\n [68253, 68255, 1],\n [68331, 68335, 1],\n [68440, 68447, 1],\n [68472, 68479, 1],\n [68521, 68527, 1],\n [68858, 68863, 1],\n [68912, 68921, 1],\n [69216, 69246, 1],\n [69405, 69414, 1],\n [69457, 69460, 1],\n [69573, 69579, 1],\n [69714, 69743, 1],\n [69872, 69881, 1],\n [69942, 69951, 1],\n [70096, 70105, 1],\n [70113, 70132, 1],\n [70384, 70393, 1],\n [70736, 70745, 1],\n [70864, 70873, 1],\n [71248, 71257, 1],\n [71360, 71369, 1],\n [71472, 71483, 1],\n [71904, 71922, 1],\n [72016, 72025, 1],\n [72784, 72812, 1],\n [73040, 73049, 1],\n [73120, 73129, 1],\n [73552, 73561, 1],\n [73664, 73684, 1],\n [74752, 74862, 1],\n [92768, 92777, 1],\n [92864, 92873, 1],\n [93008, 93017, 1],\n [93019, 93025, 1],\n [93824, 93846, 1],\n [119488, 119507, 1],\n [119520, 119539, 1],\n [119648, 119672, 1],\n [120782, 120831, 1],\n [123200, 123209, 1],\n [123632, 123641, 1],\n [124144, 124153, 1],\n [125127, 125135, 1],\n [125264, 125273, 1],\n [126065, 126123, 1],\n [126125, 126127, 1],\n [126129, 126132, 1],\n [126209, 126253, 1],\n [126255, 126269, 1],\n [127232, 127244, 1],\n [130032, 130041, 1]\n ]\n static Nd = [\n [48, 57, 1],\n [1632, 1641, 1],\n [1776, 1785, 1],\n [1984, 1993, 1],\n [2406, 2415, 1],\n [2534, 2543, 1],\n [2662, 2671, 1],\n [2790, 2799, 1],\n [2918, 2927, 1],\n [3046, 3055, 1],\n [3174, 3183, 1],\n [3302, 3311, 1],\n [3430, 3439, 1],\n [3558, 3567, 1],\n [3664, 3673, 1],\n [3792, 3801, 1],\n [3872, 3881, 1],\n [4160, 4169, 1],\n [4240, 4249, 1],\n [6112, 6121, 1],\n [6160, 6169, 1],\n [6470, 6479, 1],\n [6608, 6617, 1],\n [6784, 6793, 1],\n [6800, 6809, 1],\n [6992, 7001, 1],\n [7088, 7097, 1],\n [7232, 7241, 1],\n [7248, 7257, 1],\n [42528, 42537, 1],\n [43216, 43225, 1],\n [43264, 43273, 1],\n [43472, 43481, 1],\n [43504, 43513, 1],\n [43600, 43609, 1],\n [44016, 44025, 1],\n [65296, 65305, 1],\n [66720, 66729, 1],\n [68912, 68921, 1],\n [69734, 69743, 1],\n [69872, 69881, 1],\n [69942, 69951, 1],\n [70096, 70105, 1],\n [70384, 70393, 1],\n [70736, 70745, 1],\n [70864, 70873, 1],\n [71248, 71257, 1],\n [71360, 71369, 1],\n [71472, 71481, 1],\n [71904, 71913, 1],\n [72016, 72025, 1],\n [72784, 72793, 1],\n [73040, 73049, 1],\n [73120, 73129, 1],\n [73552, 73561, 1],\n [92768, 92777, 1],\n [92864, 92873, 1],\n [93008, 93017, 1],\n [120782, 120831, 1],\n [123200, 123209, 1],\n [123632, 123641, 1],\n [124144, 124153, 1],\n [125264, 125273, 1],\n [130032, 130041, 1]\n ]\n static Nl = [\n [5870, 5872, 1],\n [8544, 8578, 1],\n [8581, 8584, 1],\n [12295, 12321, 26],\n [12322, 12329, 1],\n [12344, 12346, 1],\n [42726, 42735, 1],\n [65856, 65908, 1],\n [66369, 66378, 9],\n [66513, 66517, 1],\n [74752, 74862, 1]\n ]\n static No = [\n [178, 179, 1],\n [185, 188, 3],\n [189, 190, 1],\n [2548, 2553, 1],\n [2930, 2935, 1],\n [3056, 3058, 1],\n [3192, 3198, 1],\n [3416, 3422, 1],\n [3440, 3448, 1],\n [3882, 3891, 1],\n [4969, 4988, 1],\n [6128, 6137, 1],\n [6618, 8304, 1686],\n [8308, 8313, 1],\n [8320, 8329, 1],\n [8528, 8543, 1],\n [8585, 9312, 727],\n [9313, 9371, 1],\n [9450, 9471, 1],\n [10102, 10131, 1],\n [11517, 12690, 1173],\n [12691, 12693, 1],\n [12832, 12841, 1],\n [12872, 12879, 1],\n [12881, 12895, 1],\n [12928, 12937, 1],\n [12977, 12991, 1],\n [43056, 43061, 1],\n [65799, 65843, 1],\n [65909, 65912, 1],\n [65930, 65931, 1],\n [66273, 66299, 1],\n [66336, 66339, 1],\n [67672, 67679, 1],\n [67705, 67711, 1],\n [67751, 67759, 1],\n [67835, 67839, 1],\n [67862, 67867, 1],\n [68028, 68029, 1],\n [68032, 68047, 1],\n [68050, 68095, 1],\n [68160, 68168, 1],\n [68221, 68222, 1],\n [68253, 68255, 1],\n [68331, 68335, 1],\n [68440, 68447, 1],\n [68472, 68479, 1],\n [68521, 68527, 1],\n [68858, 68863, 1],\n [69216, 69246, 1],\n [69405, 69414, 1],\n [69457, 69460, 1],\n [69573, 69579, 1],\n [69714, 69733, 1],\n [70113, 70132, 1],\n [71482, 71483, 1],\n [71914, 71922, 1],\n [72794, 72812, 1],\n [73664, 73684, 1],\n [93019, 93025, 1],\n [93824, 93846, 1],\n [119488, 119507, 1],\n [119520, 119539, 1],\n [119648, 119672, 1],\n [125127, 125135, 1],\n [126065, 126123, 1],\n [126125, 126127, 1],\n [126129, 126132, 1],\n [126209, 126253, 1],\n [126255, 126269, 1],\n [127232, 127244, 1]\n ]\n static P = [\n [33, 35, 1],\n [37, 42, 1],\n [44, 47, 1],\n [58, 59, 1],\n [63, 64, 1],\n [91, 93, 1],\n [95, 123, 28],\n [125, 161, 36],\n [167, 171, 4],\n [182, 183, 1],\n [187, 191, 4],\n [894, 903, 9],\n [1370, 1375, 1],\n [1417, 1418, 1],\n [1470, 1472, 2],\n [1475, 1478, 3],\n [1523, 1524, 1],\n [1545, 1546, 1],\n [1548, 1549, 1],\n [1563, 1565, 2],\n [1566, 1567, 1],\n [1642, 1645, 1],\n [1748, 1792, 44],\n [1793, 1805, 1],\n [2039, 2041, 1],\n [2096, 2110, 1],\n [2142, 2404, 262],\n [2405, 2416, 11],\n [2557, 2678, 121],\n [2800, 3191, 391],\n [3204, 3572, 368],\n [3663, 3674, 11],\n [3675, 3844, 169],\n [3845, 3858, 1],\n [3860, 3898, 38],\n [3899, 3901, 1],\n [3973, 4048, 75],\n [4049, 4052, 1],\n [4057, 4058, 1],\n [4170, 4175, 1],\n [4347, 4960, 613],\n [4961, 4968, 1],\n [5120, 5742, 622],\n [5787, 5788, 1],\n [5867, 5869, 1],\n [5941, 5942, 1],\n [6100, 6102, 1],\n [6104, 6106, 1],\n [6144, 6154, 1],\n [6468, 6469, 1],\n [6686, 6687, 1],\n [6816, 6822, 1],\n [6824, 6829, 1],\n [7002, 7008, 1],\n [7037, 7038, 1],\n [7164, 7167, 1],\n [7227, 7231, 1],\n [7294, 7295, 1],\n [7360, 7367, 1],\n [7379, 8208, 829],\n [8209, 8231, 1],\n [8240, 8259, 1],\n [8261, 8273, 1],\n [8275, 8286, 1],\n [8317, 8318, 1],\n [8333, 8334, 1],\n [8968, 8971, 1],\n [9001, 9002, 1],\n [10088, 10101, 1],\n [10181, 10182, 1],\n [10214, 10223, 1],\n [10627, 10648, 1],\n [10712, 10715, 1],\n [10748, 10749, 1],\n [11513, 11516, 1],\n [11518, 11519, 1],\n [11632, 11776, 144],\n [11777, 11822, 1],\n [11824, 11855, 1],\n [11858, 11869, 1],\n [12289, 12291, 1],\n [12296, 12305, 1],\n [12308, 12319, 1],\n [12336, 12349, 13],\n [12448, 12539, 91],\n [42238, 42239, 1],\n [42509, 42511, 1],\n [42611, 42622, 11],\n [42738, 42743, 1],\n [43124, 43127, 1],\n [43214, 43215, 1],\n [43256, 43258, 1],\n [43260, 43310, 50],\n [43311, 43359, 48],\n [43457, 43469, 1],\n [43486, 43487, 1],\n [43612, 43615, 1],\n [43742, 43743, 1],\n [43760, 43761, 1],\n [44011, 64830, 20819],\n [64831, 65040, 209],\n [65041, 65049, 1],\n [65072, 65106, 1],\n [65108, 65121, 1],\n [65123, 65128, 5],\n [65130, 65131, 1],\n [65281, 65283, 1],\n [65285, 65290, 1],\n [65292, 65295, 1],\n [65306, 65307, 1],\n [65311, 65312, 1],\n [65339, 65341, 1],\n [65343, 65371, 28],\n [65373, 65375, 2],\n [65376, 65381, 1],\n [65792, 65794, 1],\n [66463, 66512, 49],\n [66927, 67671, 744],\n [67871, 67903, 32],\n [68176, 68184, 1],\n [68223, 68336, 113],\n [68337, 68342, 1],\n [68409, 68415, 1],\n [68505, 68508, 1],\n [69293, 69461, 168],\n [69462, 69465, 1],\n [69510, 69513, 1],\n [69703, 69709, 1],\n [69819, 69820, 1],\n [69822, 69825, 1],\n [69952, 69955, 1],\n [70004, 70005, 1],\n [70085, 70088, 1],\n [70093, 70107, 14],\n [70109, 70111, 1],\n [70200, 70205, 1],\n [70313, 70731, 418],\n [70732, 70735, 1],\n [70746, 70747, 1],\n [70749, 70854, 105],\n [71105, 71127, 1],\n [71233, 71235, 1],\n [71264, 71276, 1],\n [71353, 71484, 131],\n [71485, 71486, 1],\n [71739, 72004, 265],\n [72005, 72006, 1],\n [72162, 72255, 93],\n [72256, 72262, 1],\n [72346, 72348, 1],\n [72350, 72354, 1],\n [72448, 72457, 1],\n [72769, 72773, 1],\n [72816, 72817, 1],\n [73463, 73464, 1],\n [73539, 73551, 1],\n [73727, 74864, 1137],\n [74865, 74868, 1],\n [77809, 77810, 1],\n [92782, 92783, 1],\n [92917, 92983, 66],\n [92984, 92987, 1],\n [92996, 93847, 851],\n [93848, 93850, 1],\n [94178, 113823, 19645],\n [121479, 121483, 1],\n [125278, 125279, 1]\n ]\n static Pc = [\n [95, 8255, 8160],\n [8256, 8276, 20],\n [65075, 65076, 1],\n [65101, 65103, 1],\n [65343, 65343, 1]\n ]\n static Pd = [\n [45, 1418, 1373],\n [1470, 5120, 3650],\n [6150, 8208, 2058],\n [8209, 8213, 1],\n [11799, 11802, 3],\n [11834, 11835, 1],\n [11840, 11869, 29],\n [12316, 12336, 20],\n [12448, 65073, 52625],\n [65074, 65112, 38],\n [65123, 65293, 170],\n [69293, 69293, 1]\n ]\n static Pe = [\n [41, 93, 52],\n [125, 3899, 3774],\n [3901, 5788, 1887],\n [8262, 8318, 56],\n [8334, 8969, 635],\n [8971, 9002, 31],\n [10089, 10101, 2],\n [10182, 10215, 33],\n [10217, 10223, 2],\n [10628, 10648, 2],\n [10713, 10715, 2],\n [10749, 11811, 1062],\n [11813, 11817, 2],\n [11862, 11868, 2],\n [12297, 12305, 2],\n [12309, 12315, 2],\n [12318, 12319, 1],\n [64830, 65048, 218],\n [65078, 65092, 2],\n [65096, 65114, 18],\n [65116, 65118, 2],\n [65289, 65341, 52],\n [65373, 65379, 3]\n ]\n static Pf = [\n [187, 8217, 8030],\n [8221, 8250, 29],\n [11779, 11781, 2],\n [11786, 11789, 3],\n [11805, 11809, 4]\n ]\n static Pi = [\n [171, 8216, 8045],\n [8219, 8220, 1],\n [8223, 8249, 26],\n [11778, 11780, 2],\n [11785, 11788, 3],\n [11804, 11808, 4]\n ]\n static Po = [\n [33, 35, 1],\n [37, 39, 1],\n [42, 46, 2],\n [47, 58, 11],\n [59, 63, 4],\n [64, 92, 28],\n [161, 167, 6],\n [182, 183, 1],\n [191, 894, 703],\n [903, 1370, 467],\n [1371, 1375, 1],\n [1417, 1472, 55],\n [1475, 1478, 3],\n [1523, 1524, 1],\n [1545, 1546, 1],\n [1548, 1549, 1],\n [1563, 1565, 2],\n [1566, 1567, 1],\n [1642, 1645, 1],\n [1748, 1792, 44],\n [1793, 1805, 1],\n [2039, 2041, 1],\n [2096, 2110, 1],\n [2142, 2404, 262],\n [2405, 2416, 11],\n [2557, 2678, 121],\n [2800, 3191, 391],\n [3204, 3572, 368],\n [3663, 3674, 11],\n [3675, 3844, 169],\n [3845, 3858, 1],\n [3860, 3973, 113],\n [4048, 4052, 1],\n [4057, 4058, 1],\n [4170, 4175, 1],\n [4347, 4960, 613],\n [4961, 4968, 1],\n [5742, 5867, 125],\n [5868, 5869, 1],\n [5941, 5942, 1],\n [6100, 6102, 1],\n [6104, 6106, 1],\n [6144, 6149, 1],\n [6151, 6154, 1],\n [6468, 6469, 1],\n [6686, 6687, 1],\n [6816, 6822, 1],\n [6824, 6829, 1],\n [7002, 7008, 1],\n [7037, 7038, 1],\n [7164, 7167, 1],\n [7227, 7231, 1],\n [7294, 7295, 1],\n [7360, 7367, 1],\n [7379, 8214, 835],\n [8215, 8224, 9],\n [8225, 8231, 1],\n [8240, 8248, 1],\n [8251, 8254, 1],\n [8257, 8259, 1],\n [8263, 8273, 1],\n [8275, 8277, 2],\n [8278, 8286, 1],\n [11513, 11516, 1],\n [11518, 11519, 1],\n [11632, 11776, 144],\n [11777, 11782, 5],\n [11783, 11784, 1],\n [11787, 11790, 3],\n [11791, 11798, 1],\n [11800, 11801, 1],\n [11803, 11806, 3],\n [11807, 11818, 11],\n [11819, 11822, 1],\n [11824, 11833, 1],\n [11836, 11839, 1],\n [11841, 11843, 2],\n [11844, 11855, 1],\n [11858, 11860, 1],\n [12289, 12291, 1],\n [12349, 12539, 190],\n [42238, 42239, 1],\n [42509, 42511, 1],\n [42611, 42622, 11],\n [42738, 42743, 1],\n [43124, 43127, 1],\n [43214, 43215, 1],\n [43256, 43258, 1],\n [43260, 43310, 50],\n [43311, 43359, 48],\n [43457, 43469, 1],\n [43486, 43487, 1],\n [43612, 43615, 1],\n [43742, 43743, 1],\n [43760, 43761, 1],\n [44011, 65040, 21029],\n [65041, 65046, 1],\n [65049, 65072, 23],\n [65093, 65094, 1],\n [65097, 65100, 1],\n [65104, 65106, 1],\n [65108, 65111, 1],\n [65119, 65121, 1],\n [65128, 65130, 2],\n [65131, 65281, 150],\n [65282, 65283, 1],\n [65285, 65287, 1],\n [65290, 65294, 2],\n [65295, 65306, 11],\n [65307, 65311, 4],\n [65312, 65340, 28],\n [65377, 65380, 3],\n [65381, 65792, 411],\n [65793, 65794, 1],\n [66463, 66512, 49],\n [66927, 67671, 744],\n [67871, 67903, 32],\n [68176, 68184, 1],\n [68223, 68336, 113],\n [68337, 68342, 1],\n [68409, 68415, 1],\n [68505, 68508, 1],\n [69461, 69465, 1],\n [69510, 69513, 1],\n [69703, 69709, 1],\n [69819, 69820, 1],\n [69822, 69825, 1],\n [69952, 69955, 1],\n [70004, 70005, 1],\n [70085, 70088, 1],\n [70093, 70107, 14],\n [70109, 70111, 1],\n [70200, 70205, 1],\n [70313, 70731, 418],\n [70732, 70735, 1],\n [70746, 70747, 1],\n [70749, 70854, 105],\n [71105, 71127, 1],\n [71233, 71235, 1],\n [71264, 71276, 1],\n [71353, 71484, 131],\n [71485, 71486, 1],\n [71739, 72004, 265],\n [72005, 72006, 1],\n [72162, 72255, 93],\n [72256, 72262, 1],\n [72346, 72348, 1],\n [72350, 72354, 1],\n [72448, 72457, 1],\n [72769, 72773, 1],\n [72816, 72817, 1],\n [73463, 73464, 1],\n [73539, 73551, 1],\n [73727, 74864, 1137],\n [74865, 74868, 1],\n [77809, 77810, 1],\n [92782, 92783, 1],\n [92917, 92983, 66],\n [92984, 92987, 1],\n [92996, 93847, 851],\n [93848, 93850, 1],\n [94178, 113823, 19645],\n [121479, 121483, 1],\n [125278, 125279, 1]\n ]\n static Ps = [\n [40, 91, 51],\n [123, 3898, 3775],\n [3900, 5787, 1887],\n [8218, 8222, 4],\n [8261, 8317, 56],\n [8333, 8968, 635],\n [8970, 9001, 31],\n [10088, 10100, 2],\n [10181, 10214, 33],\n [10216, 10222, 2],\n [10627, 10647, 2],\n [10712, 10714, 2],\n [10748, 11810, 1062],\n [11812, 11816, 2],\n [11842, 11861, 19],\n [11863, 11867, 2],\n [12296, 12304, 2],\n [12308, 12314, 2],\n [12317, 64831, 52514],\n [65047, 65077, 30],\n [65079, 65091, 2],\n [65095, 65113, 18],\n [65115, 65117, 2],\n [65288, 65339, 51],\n [65371, 65375, 4],\n [65378, 65378, 1]\n ]\n static S = [\n [36, 43, 7],\n [60, 62, 1],\n [94, 96, 2],\n [124, 126, 2],\n [162, 166, 1],\n [168, 169, 1],\n [172, 174, 2],\n [175, 177, 1],\n [180, 184, 4],\n [215, 247, 32],\n [706, 709, 1],\n [722, 735, 1],\n [741, 747, 1],\n [749, 751, 2],\n [752, 767, 1],\n [885, 900, 15],\n [901, 1014, 113],\n [1154, 1421, 267],\n [1422, 1423, 1],\n [1542, 1544, 1],\n [1547, 1550, 3],\n [1551, 1758, 207],\n [1769, 1789, 20],\n [1790, 2038, 248],\n [2046, 2047, 1],\n [2184, 2546, 362],\n [2547, 2554, 7],\n [2555, 2801, 246],\n [2928, 3059, 131],\n [3060, 3066, 1],\n [3199, 3407, 208],\n [3449, 3647, 198],\n [3841, 3843, 1],\n [3859, 3861, 2],\n [3862, 3863, 1],\n [3866, 3871, 1],\n [3892, 3896, 2],\n [4030, 4037, 1],\n [4039, 4044, 1],\n [4046, 4047, 1],\n [4053, 4056, 1],\n [4254, 4255, 1],\n [5008, 5017, 1],\n [5741, 6107, 366],\n [6464, 6622, 158],\n [6623, 6655, 1],\n [7009, 7018, 1],\n [7028, 7036, 1],\n [8125, 8127, 2],\n [8128, 8129, 1],\n [8141, 8143, 1],\n [8157, 8159, 1],\n [8173, 8175, 1],\n [8189, 8190, 1],\n [8260, 8274, 14],\n [8314, 8316, 1],\n [8330, 8332, 1],\n [8352, 8384, 1],\n [8448, 8449, 1],\n [8451, 8454, 1],\n [8456, 8457, 1],\n [8468, 8470, 2],\n [8471, 8472, 1],\n [8478, 8483, 1],\n [8485, 8489, 2],\n [8494, 8506, 12],\n [8507, 8512, 5],\n [8513, 8516, 1],\n [8522, 8525, 1],\n [8527, 8586, 59],\n [8587, 8592, 5],\n [8593, 8967, 1],\n [8972, 9000, 1],\n [9003, 9254, 1],\n [9280, 9290, 1],\n [9372, 9449, 1],\n [9472, 10087, 1],\n [10132, 10180, 1],\n [10183, 10213, 1],\n [10224, 10626, 1],\n [10649, 10711, 1],\n [10716, 10747, 1],\n [10750, 11123, 1],\n [11126, 11157, 1],\n [11159, 11263, 1],\n [11493, 11498, 1],\n [11856, 11857, 1],\n [11904, 11929, 1],\n [11931, 12019, 1],\n [12032, 12245, 1],\n [12272, 12287, 1],\n [12292, 12306, 14],\n [12307, 12320, 13],\n [12342, 12343, 1],\n [12350, 12351, 1],\n [12443, 12444, 1],\n [12688, 12689, 1],\n [12694, 12703, 1],\n [12736, 12771, 1],\n [12783, 12800, 17],\n [12801, 12830, 1],\n [12842, 12871, 1],\n [12880, 12896, 16],\n [12897, 12927, 1],\n [12938, 12976, 1],\n [12992, 13311, 1],\n [19904, 19967, 1],\n [42128, 42182, 1],\n [42752, 42774, 1],\n [42784, 42785, 1],\n [42889, 42890, 1],\n [43048, 43051, 1],\n [43062, 43065, 1],\n [43639, 43641, 1],\n [43867, 43882, 15],\n [43883, 64297, 20414],\n [64434, 64450, 1],\n [64832, 64847, 1],\n [64975, 65020, 45],\n [65021, 65023, 1],\n [65122, 65124, 2],\n [65125, 65126, 1],\n [65129, 65284, 155],\n [65291, 65308, 17],\n [65309, 65310, 1],\n [65342, 65344, 2],\n [65372, 65374, 2],\n [65504, 65510, 1],\n [65512, 65518, 1],\n [65532, 65533, 1],\n [65847, 65855, 1],\n [65913, 65929, 1],\n [65932, 65934, 1],\n [65936, 65948, 1],\n [65952, 66000, 48],\n [66001, 66044, 1],\n [67703, 67704, 1],\n [68296, 71487, 3191],\n [73685, 73713, 1],\n [92988, 92991, 1],\n [92997, 113820, 20823],\n [118608, 118723, 1],\n [118784, 119029, 1],\n [119040, 119078, 1],\n [119081, 119140, 1],\n [119146, 119148, 1],\n [119171, 119172, 1],\n [119180, 119209, 1],\n [119214, 119274, 1],\n [119296, 119361, 1],\n [119365, 119552, 187],\n [119553, 119638, 1],\n [120513, 120539, 26],\n [120571, 120597, 26],\n [120629, 120655, 26],\n [120687, 120713, 26],\n [120745, 120771, 26],\n [120832, 121343, 1],\n [121399, 121402, 1],\n [121453, 121460, 1],\n [121462, 121475, 1],\n [121477, 121478, 1],\n [123215, 123647, 432],\n [126124, 126128, 4],\n [126254, 126704, 450],\n [126705, 126976, 271],\n [126977, 127019, 1],\n [127024, 127123, 1],\n [127136, 127150, 1],\n [127153, 127167, 1],\n [127169, 127183, 1],\n [127185, 127221, 1],\n [127245, 127405, 1],\n [127462, 127490, 1],\n [127504, 127547, 1],\n [127552, 127560, 1],\n [127568, 127569, 1],\n [127584, 127589, 1],\n [127744, 128727, 1],\n [128732, 128748, 1],\n [128752, 128764, 1],\n [128768, 128886, 1],\n [128891, 128985, 1],\n [128992, 129003, 1],\n [129008, 129024, 16],\n [129025, 129035, 1],\n [129040, 129095, 1],\n [129104, 129113, 1],\n [129120, 129159, 1],\n [129168, 129197, 1],\n [129200, 129201, 1],\n [129280, 129619, 1],\n [129632, 129645, 1],\n [129648, 129660, 1],\n [129664, 129672, 1],\n [129680, 129725, 1],\n [129727, 129733, 1],\n [129742, 129755, 1],\n [129760, 129768, 1],\n [129776, 129784, 1],\n [129792, 129938, 1],\n [129940, 129994, 1]\n ]\n static Sc = [\n [36, 162, 126],\n [163, 165, 1],\n [1423, 1547, 124],\n [2046, 2047, 1],\n [2546, 2547, 1],\n [2555, 2801, 246],\n [3065, 3647, 582],\n [6107, 8352, 2245],\n [8353, 8384, 1],\n [43064, 65020, 21956],\n [65129, 65284, 155],\n [65504, 65505, 1],\n [65509, 65510, 1],\n [73693, 73696, 1],\n [123647, 126128, 2481]\n ]\n static Sk = [\n [94, 96, 2],\n [168, 175, 7],\n [180, 184, 4],\n [706, 709, 1],\n [722, 735, 1],\n [741, 747, 1],\n [749, 751, 2],\n [752, 767, 1],\n [885, 900, 15],\n [901, 2184, 1283],\n [8125, 8127, 2],\n [8128, 8129, 1],\n [8141, 8143, 1],\n [8157, 8159, 1],\n [8173, 8175, 1],\n [8189, 8190, 1],\n [12443, 12444, 1],\n [42752, 42774, 1],\n [42784, 42785, 1],\n [42889, 42890, 1],\n [43867, 43882, 15],\n [43883, 64434, 20551],\n [64435, 64450, 1],\n [65342, 65344, 2],\n [65507, 127995, 62488],\n [127996, 127999, 1]\n ]\n static Sm = [\n [43, 60, 17],\n [61, 62, 1],\n [124, 126, 2],\n [172, 177, 5],\n [215, 247, 32],\n [1014, 1542, 528],\n [1543, 1544, 1],\n [8260, 8274, 14],\n [8314, 8316, 1],\n [8330, 8332, 1],\n [8472, 8512, 40],\n [8513, 8516, 1],\n [8523, 8592, 69],\n [8593, 8596, 1],\n [8602, 8603, 1],\n [8608, 8614, 3],\n [8622, 8654, 32],\n [8655, 8658, 3],\n [8660, 8692, 32],\n [8693, 8959, 1],\n [8992, 8993, 1],\n [9084, 9115, 31],\n [9116, 9139, 1],\n [9180, 9185, 1],\n [9655, 9665, 10],\n [9720, 9727, 1],\n [9839, 10176, 337],\n [10177, 10180, 1],\n [10183, 10213, 1],\n [10224, 10239, 1],\n [10496, 10626, 1],\n [10649, 10711, 1],\n [10716, 10747, 1],\n [10750, 11007, 1],\n [11056, 11076, 1],\n [11079, 11084, 1],\n [64297, 65122, 825],\n [65124, 65126, 1],\n [65291, 65308, 17],\n [65309, 65310, 1],\n [65372, 65374, 2],\n [65506, 65513, 7],\n [65514, 65516, 1],\n [120513, 120539, 26],\n [120571, 120597, 26],\n [120629, 120655, 26],\n [120687, 120713, 26],\n [120745, 120771, 26],\n [126704, 126705, 1]\n ]\n static So = [\n [166, 169, 3],\n [174, 176, 2],\n [1154, 1421, 267],\n [1422, 1550, 128],\n [1551, 1758, 207],\n [1769, 1789, 20],\n [1790, 2038, 248],\n [2554, 2928, 374],\n [3059, 3064, 1],\n [3066, 3199, 133],\n [3407, 3449, 42],\n [3841, 3843, 1],\n [3859, 3861, 2],\n [3862, 3863, 1],\n [3866, 3871, 1],\n [3892, 3896, 2],\n [4030, 4037, 1],\n [4039, 4044, 1],\n [4046, 4047, 1],\n [4053, 4056, 1],\n [4254, 4255, 1],\n [5008, 5017, 1],\n [5741, 6464, 723],\n [6622, 6655, 1],\n [7009, 7018, 1],\n [7028, 7036, 1],\n [8448, 8449, 1],\n [8451, 8454, 1],\n [8456, 8457, 1],\n [8468, 8470, 2],\n [8471, 8478, 7],\n [8479, 8483, 1],\n [8485, 8489, 2],\n [8494, 8506, 12],\n [8507, 8522, 15],\n [8524, 8525, 1],\n [8527, 8586, 59],\n [8587, 8597, 10],\n [8598, 8601, 1],\n [8604, 8607, 1],\n [8609, 8610, 1],\n [8612, 8613, 1],\n [8615, 8621, 1],\n [8623, 8653, 1],\n [8656, 8657, 1],\n [8659, 8661, 2],\n [8662, 8691, 1],\n [8960, 8967, 1],\n [8972, 8991, 1],\n [8994, 9000, 1],\n [9003, 9083, 1],\n [9085, 9114, 1],\n [9140, 9179, 1],\n [9186, 9254, 1],\n [9280, 9290, 1],\n [9372, 9449, 1],\n [9472, 9654, 1],\n [9656, 9664, 1],\n [9666, 9719, 1],\n [9728, 9838, 1],\n [9840, 10087, 1],\n [10132, 10175, 1],\n [10240, 10495, 1],\n [11008, 11055, 1],\n [11077, 11078, 1],\n [11085, 11123, 1],\n [11126, 11157, 1],\n [11159, 11263, 1],\n [11493, 11498, 1],\n [11856, 11857, 1],\n [11904, 11929, 1],\n [11931, 12019, 1],\n [12032, 12245, 1],\n [12272, 12287, 1],\n [12292, 12306, 14],\n [12307, 12320, 13],\n [12342, 12343, 1],\n [12350, 12351, 1],\n [12688, 12689, 1],\n [12694, 12703, 1],\n [12736, 12771, 1],\n [12783, 12800, 17],\n [12801, 12830, 1],\n [12842, 12871, 1],\n [12880, 12896, 16],\n [12897, 12927, 1],\n [12938, 12976, 1],\n [12992, 13311, 1],\n [19904, 19967, 1],\n [42128, 42182, 1],\n [43048, 43051, 1],\n [43062, 43063, 1],\n [43065, 43639, 574],\n [43640, 43641, 1],\n [64832, 64847, 1],\n [64975, 65021, 46],\n [65022, 65023, 1],\n [65508, 65512, 4],\n [65517, 65518, 1],\n [65532, 65533, 1],\n [65847, 65855, 1],\n [65913, 65929, 1],\n [65932, 65934, 1],\n [65936, 65948, 1],\n [65952, 66000, 48],\n [66001, 66044, 1],\n [67703, 67704, 1],\n [68296, 71487, 3191],\n [73685, 73692, 1],\n [73697, 73713, 1],\n [92988, 92991, 1],\n [92997, 113820, 20823],\n [118608, 118723, 1],\n [118784, 119029, 1],\n [119040, 119078, 1],\n [119081, 119140, 1],\n [119146, 119148, 1],\n [119171, 119172, 1],\n [119180, 119209, 1],\n [119214, 119274, 1],\n [119296, 119361, 1],\n [119365, 119552, 187],\n [119553, 119638, 1],\n [120832, 121343, 1],\n [121399, 121402, 1],\n [121453, 121460, 1],\n [121462, 121475, 1],\n [121477, 121478, 1],\n [123215, 126124, 2909],\n [126254, 126976, 722],\n [126977, 127019, 1],\n [127024, 127123, 1],\n [127136, 127150, 1],\n [127153, 127167, 1],\n [127169, 127183, 1],\n [127185, 127221, 1],\n [127245, 127405, 1],\n [127462, 127490, 1],\n [127504, 127547, 1],\n [127552, 127560, 1],\n [127568, 127569, 1],\n [127584, 127589, 1],\n [127744, 127994, 1],\n [128000, 128727, 1],\n [128732, 128748, 1],\n [128752, 128764, 1],\n [128768, 128886, 1],\n [128891, 128985, 1],\n [128992, 129003, 1],\n [129008, 129024, 16],\n [129025, 129035, 1],\n [129040, 129095, 1],\n [129104, 129113, 1],\n [129120, 129159, 1],\n [129168, 129197, 1],\n [129200, 129201, 1],\n [129280, 129619, 1],\n [129632, 129645, 1],\n [129648, 129660, 1],\n [129664, 129672, 1],\n [129680, 129725, 1],\n [129727, 129733, 1],\n [129742, 129755, 1],\n [129760, 129768, 1],\n [129776, 129784, 1],\n [129792, 129938, 1],\n [129940, 129994, 1]\n ]\n static Z = [\n [32, 160, 128],\n [5760, 8192, 2432],\n [8193, 8202, 1],\n [8232, 8233, 1],\n [8239, 8287, 48],\n [12288, 12288, 1]\n ]\n static Zl = [[8232, 8232, 1]]\n static Zp = [[8233, 8233, 1]]\n static Zs = [\n [32, 160, 128],\n [5760, 8192, 2432],\n [8193, 8202, 1],\n [8239, 8287, 48],\n [12288, 12288, 1]\n ]\n static Adlam = [\n [125184, 125259, 1],\n [125264, 125273, 1],\n [125278, 125279, 1]\n ]\n static Ahom = [\n [71424, 71450, 1],\n [71453, 71467, 1],\n [71472, 71494, 1]\n ]\n static Anatolian_Hieroglyphs = [[82944, 83526, 1]]\n static Arabic = [\n [1536, 1540, 1],\n [1542, 1547, 1],\n [1549, 1562, 1],\n [1564, 1566, 1],\n [1568, 1599, 1],\n [1601, 1610, 1],\n [1622, 1647, 1],\n [1649, 1756, 1],\n [1758, 1791, 1],\n [1872, 1919, 1],\n [2160, 2190, 1],\n [2192, 2193, 1],\n [2200, 2273, 1],\n [2275, 2303, 1],\n [64336, 64450, 1],\n [64467, 64829, 1],\n [64832, 64911, 1],\n [64914, 64967, 1],\n [64975, 65008, 33],\n [65009, 65023, 1],\n [65136, 65140, 1],\n [65142, 65276, 1],\n [69216, 69246, 1],\n [69373, 69375, 1],\n [126464, 126467, 1],\n [126469, 126495, 1],\n [126497, 126498, 1],\n [126500, 126503, 3],\n [126505, 126514, 1],\n [126516, 126519, 1],\n [126521, 126523, 2],\n [126530, 126535, 5],\n [126537, 126541, 2],\n [126542, 126543, 1],\n [126545, 126546, 1],\n [126548, 126551, 3],\n [126553, 126561, 2],\n [126562, 126564, 2],\n [126567, 126570, 1],\n [126572, 126578, 1],\n [126580, 126583, 1],\n [126585, 126588, 1],\n [126590, 126592, 2],\n [126593, 126601, 1],\n [126603, 126619, 1],\n [126625, 126627, 1],\n [126629, 126633, 1],\n [126635, 126651, 1],\n [126704, 126705, 1]\n ]\n static Armenian = [\n [1329, 1366, 1],\n [1369, 1418, 1],\n [1421, 1423, 1],\n [64275, 64279, 1]\n ]\n static Avestan = [\n [68352, 68405, 1],\n [68409, 68415, 1]\n ]\n static Balinese = [\n [6912, 6988, 1],\n [6992, 7038, 1]\n ]\n static Bamum = [\n [42656, 42743, 1],\n [92160, 92728, 1]\n ]\n static Bassa_Vah = [\n [92880, 92909, 1],\n [92912, 92917, 1]\n ]\n static Batak = [\n [7104, 7155, 1],\n [7164, 7167, 1]\n ]\n static Bengali = [\n [2432, 2435, 1],\n [2437, 2444, 1],\n [2447, 2448, 1],\n [2451, 2472, 1],\n [2474, 2480, 1],\n [2482, 2486, 4],\n [2487, 2489, 1],\n [2492, 2500, 1],\n [2503, 2504, 1],\n [2507, 2510, 1],\n [2519, 2524, 5],\n [2525, 2527, 2],\n [2528, 2531, 1],\n [2534, 2558, 1]\n ]\n static Bhaiksuki = [\n [72704, 72712, 1],\n [72714, 72758, 1],\n [72760, 72773, 1],\n [72784, 72812, 1]\n ]\n static Bopomofo = [\n [746, 747, 1],\n [12549, 12591, 1],\n [12704, 12735, 1]\n ]\n static Brahmi = [\n [69632, 69709, 1],\n [69714, 69749, 1],\n [69759, 69759, 1]\n ]\n static Braille = [[10240, 10495, 1]]\n static Buginese = [\n [6656, 6683, 1],\n [6686, 6687, 1]\n ]\n static Buhid = [[5952, 5971, 1]]\n static Canadian_Aboriginal = [\n [5120, 5759, 1],\n [6320, 6389, 1],\n [72368, 72383, 1]\n ]\n static Carian = [[66208, 66256, 1]]\n static Caucasian_Albanian = [\n [66864, 66915, 1],\n [66927, 66927, 1]\n ]\n static Chakma = [\n [69888, 69940, 1],\n [69942, 69959, 1]\n ]\n static Cham = [\n [43520, 43574, 1],\n [43584, 43597, 1],\n [43600, 43609, 1],\n [43612, 43615, 1]\n ]\n static Cherokee = [\n [5024, 5109, 1],\n [5112, 5117, 1],\n [43888, 43967, 1]\n ]\n static Chorasmian = [[69552, 69579, 1]]\n static Common = [\n [0, 64, 1],\n [91, 96, 1],\n [123, 169, 1],\n [171, 185, 1],\n [187, 191, 1],\n [215, 247, 32],\n [697, 735, 1],\n [741, 745, 1],\n [748, 767, 1],\n [884, 894, 10],\n [901, 903, 2],\n [1541, 1548, 7],\n [1563, 1567, 4],\n [1600, 1757, 157],\n [2274, 2404, 130],\n [2405, 3647, 1242],\n [4053, 4056, 1],\n [4347, 5867, 1520],\n [5868, 5869, 1],\n [5941, 5942, 1],\n [6146, 6147, 1],\n [6149, 7379, 1230],\n [7393, 7401, 8],\n [7402, 7404, 1],\n [7406, 7411, 1],\n [7413, 7415, 1],\n [7418, 8192, 774],\n [8193, 8203, 1],\n [8206, 8292, 1],\n [8294, 8304, 1],\n [8308, 8318, 1],\n [8320, 8334, 1],\n [8352, 8384, 1],\n [8448, 8485, 1],\n [8487, 8489, 1],\n [8492, 8497, 1],\n [8499, 8525, 1],\n [8527, 8543, 1],\n [8585, 8587, 1],\n [8592, 9254, 1],\n [9280, 9290, 1],\n [9312, 10239, 1],\n [10496, 11123, 1],\n [11126, 11157, 1],\n [11159, 11263, 1],\n [11776, 11869, 1],\n [12272, 12292, 1],\n [12294, 12296, 2],\n [12297, 12320, 1],\n [12336, 12343, 1],\n [12348, 12351, 1],\n [12443, 12444, 1],\n [12448, 12539, 91],\n [12540, 12688, 148],\n [12689, 12703, 1],\n [12736, 12771, 1],\n [12783, 12832, 49],\n [12833, 12895, 1],\n [12927, 13007, 1],\n [13055, 13144, 89],\n [13145, 13311, 1],\n [19904, 19967, 1],\n [42752, 42785, 1],\n [42888, 42890, 1],\n [43056, 43065, 1],\n [43310, 43471, 161],\n [43867, 43882, 15],\n [43883, 64830, 20947],\n [64831, 65040, 209],\n [65041, 65049, 1],\n [65072, 65106, 1],\n [65108, 65126, 1],\n [65128, 65131, 1],\n [65279, 65281, 2],\n [65282, 65312, 1],\n [65339, 65344, 1],\n [65371, 65381, 1],\n [65392, 65438, 46],\n [65439, 65504, 65],\n [65505, 65510, 1],\n [65512, 65518, 1],\n [65529, 65533, 1],\n [65792, 65794, 1],\n [65799, 65843, 1],\n [65847, 65855, 1],\n [65936, 65948, 1],\n [66000, 66044, 1],\n [66273, 66299, 1],\n [113824, 113827, 1],\n [118608, 118723, 1],\n [118784, 119029, 1],\n [119040, 119078, 1],\n [119081, 119142, 1],\n [119146, 119162, 1],\n [119171, 119172, 1],\n [119180, 119209, 1],\n [119214, 119274, 1],\n [119488, 119507, 1],\n [119520, 119539, 1],\n [119552, 119638, 1],\n [119648, 119672, 1],\n [119808, 119892, 1],\n [119894, 119964, 1],\n [119966, 119967, 1],\n [119970, 119973, 3],\n [119974, 119977, 3],\n [119978, 119980, 1],\n [119982, 119993, 1],\n [119995, 119997, 2],\n [119998, 120003, 1],\n [120005, 120069, 1],\n [120071, 120074, 1],\n [120077, 120084, 1],\n [120086, 120092, 1],\n [120094, 120121, 1],\n [120123, 120126, 1],\n [120128, 120132, 1],\n [120134, 120138, 4],\n [120139, 120144, 1],\n [120146, 120485, 1],\n [120488, 120779, 1],\n [120782, 120831, 1],\n [126065, 126132, 1],\n [126209, 126269, 1],\n [126976, 127019, 1],\n [127024, 127123, 1],\n [127136, 127150, 1],\n [127153, 127167, 1],\n [127169, 127183, 1],\n [127185, 127221, 1],\n [127232, 127405, 1],\n [127462, 127487, 1],\n [127489, 127490, 1],\n [127504, 127547, 1],\n [127552, 127560, 1],\n [127568, 127569, 1],\n [127584, 127589, 1],\n [127744, 128727, 1],\n [128732, 128748, 1],\n [128752, 128764, 1],\n [128768, 128886, 1],\n [128891, 128985, 1],\n [128992, 129003, 1],\n [129008, 129024, 16],\n [129025, 129035, 1],\n [129040, 129095, 1],\n [129104, 129113, 1],\n [129120, 129159, 1],\n [129168, 129197, 1],\n [129200, 129201, 1],\n [129280, 129619, 1],\n [129632, 129645, 1],\n [129648, 129660, 1],\n [129664, 129672, 1],\n [129680, 129725, 1],\n [129727, 129733, 1],\n [129742, 129755, 1],\n [129760, 129768, 1],\n [129776, 129784, 1],\n [129792, 129938, 1],\n [129940, 129994, 1],\n [130032, 130041, 1],\n [917505, 917536, 31],\n [917537, 917631, 1]\n ]\n static foldCommon = [[924, 956, 32]]\n static Coptic = [\n [994, 1007, 1],\n [11392, 11507, 1],\n [11513, 11519, 1]\n ]\n static Cuneiform = [\n [73728, 74649, 1],\n [74752, 74862, 1],\n [74864, 74868, 1],\n [74880, 75075, 1]\n ]\n static Cypriot = [\n [67584, 67589, 1],\n [67592, 67594, 2],\n [67595, 67637, 1],\n [67639, 67640, 1],\n [67644, 67647, 3]\n ]\n static Cypro_Minoan = [[77712, 77810, 1]]\n static Cyrillic = [\n [1024, 1156, 1],\n [1159, 1327, 1],\n [7296, 7304, 1],\n [7467, 7544, 77],\n [11744, 11775, 1],\n [42560, 42655, 1],\n [65070, 65071, 1],\n [122928, 122989, 1],\n [123023, 123023, 1]\n ]\n static Deseret = [[66560, 66639, 1]]\n static Devanagari = [\n [2304, 2384, 1],\n [2389, 2403, 1],\n [2406, 2431, 1],\n [43232, 43263, 1],\n [72448, 72457, 1]\n ]\n static Dives_Akuru = [\n [71936, 71942, 1],\n [71945, 71948, 3],\n [71949, 71955, 1],\n [71957, 71958, 1],\n [71960, 71989, 1],\n [71991, 71992, 1],\n [71995, 72006, 1],\n [72016, 72025, 1]\n ]\n static Dogra = [[71680, 71739, 1]]\n static Duployan = [\n [113664, 113770, 1],\n [113776, 113788, 1],\n [113792, 113800, 1],\n [113808, 113817, 1],\n [113820, 113823, 1]\n ]\n static Egyptian_Hieroglyphs = [[77824, 78933, 1]]\n static Elbasan = [[66816, 66855, 1]]\n static Elymaic = [[69600, 69622, 1]]\n static Ethiopic = [\n [4608, 4680, 1],\n [4682, 4685, 1],\n [4688, 4694, 1],\n [4696, 4698, 2],\n [4699, 4701, 1],\n [4704, 4744, 1],\n [4746, 4749, 1],\n [4752, 4784, 1],\n [4786, 4789, 1],\n [4792, 4798, 1],\n [4800, 4802, 2],\n [4803, 4805, 1],\n [4808, 4822, 1],\n [4824, 4880, 1],\n [4882, 4885, 1],\n [4888, 4954, 1],\n [4957, 4988, 1],\n [4992, 5017, 1],\n [11648, 11670, 1],\n [11680, 11686, 1],\n [11688, 11694, 1],\n [11696, 11702, 1],\n [11704, 11710, 1],\n [11712, 11718, 1],\n [11720, 11726, 1],\n [11728, 11734, 1],\n [11736, 11742, 1],\n [43777, 43782, 1],\n [43785, 43790, 1],\n [43793, 43798, 1],\n [43808, 43814, 1],\n [43816, 43822, 1],\n [124896, 124902, 1],\n [124904, 124907, 1],\n [124909, 124910, 1],\n [124912, 124926, 1]\n ]\n static Georgian = [\n [4256, 4293, 1],\n [4295, 4301, 6],\n [4304, 4346, 1],\n [4348, 4351, 1],\n [7312, 7354, 1],\n [7357, 7359, 1],\n [11520, 11557, 1],\n [11559, 11565, 6]\n ]\n static Glagolitic = [\n [11264, 11359, 1],\n [122880, 122886, 1],\n [122888, 122904, 1],\n [122907, 122913, 1],\n [122915, 122916, 1],\n [122918, 122922, 1]\n ]\n static Gothic = [[66352, 66378, 1]]\n static Grantha = [\n [70400, 70403, 1],\n [70405, 70412, 1],\n [70415, 70416, 1],\n [70419, 70440, 1],\n [70442, 70448, 1],\n [70450, 70451, 1],\n [70453, 70457, 1],\n [70460, 70468, 1],\n [70471, 70472, 1],\n [70475, 70477, 1],\n [70480, 70487, 7],\n [70493, 70499, 1],\n [70502, 70508, 1],\n [70512, 70516, 1]\n ]\n static Greek = [\n [880, 883, 1],\n [885, 887, 1],\n [890, 893, 1],\n [895, 900, 5],\n [902, 904, 2],\n [905, 906, 1],\n [908, 910, 2],\n [911, 929, 1],\n [931, 993, 1],\n [1008, 1023, 1],\n [7462, 7466, 1],\n [7517, 7521, 1],\n [7526, 7530, 1],\n [7615, 7936, 321],\n [7937, 7957, 1],\n [7960, 7965, 1],\n [7968, 8005, 1],\n [8008, 8013, 1],\n [8016, 8023, 1],\n [8025, 8031, 2],\n [8032, 8061, 1],\n [8064, 8116, 1],\n [8118, 8132, 1],\n [8134, 8147, 1],\n [8150, 8155, 1],\n [8157, 8175, 1],\n [8178, 8180, 1],\n [8182, 8190, 1],\n [8486, 43877, 35391],\n [65856, 65934, 1],\n [65952, 119296, 53344],\n [119297, 119365, 1]\n ]\n static foldGreek = [[181, 837, 656]]\n static Gujarati = [\n [2689, 2691, 1],\n [2693, 2701, 1],\n [2703, 2705, 1],\n [2707, 2728, 1],\n [2730, 2736, 1],\n [2738, 2739, 1],\n [2741, 2745, 1],\n [2748, 2757, 1],\n [2759, 2761, 1],\n [2763, 2765, 1],\n [2768, 2784, 16],\n [2785, 2787, 1],\n [2790, 2801, 1],\n [2809, 2815, 1]\n ]\n static Gunjala_Gondi = [\n [73056, 73061, 1],\n [73063, 73064, 1],\n [73066, 73102, 1],\n [73104, 73105, 1],\n [73107, 73112, 1],\n [73120, 73129, 1]\n ]\n static Gurmukhi = [\n [2561, 2563, 1],\n [2565, 2570, 1],\n [2575, 2576, 1],\n [2579, 2600, 1],\n [2602, 2608, 1],\n [2610, 2611, 1],\n [2613, 2614, 1],\n [2616, 2617, 1],\n [2620, 2622, 2],\n [2623, 2626, 1],\n [2631, 2632, 1],\n [2635, 2637, 1],\n [2641, 2649, 8],\n [2650, 2652, 1],\n [2654, 2662, 8],\n [2663, 2678, 1]\n ]\n static Han = [\n [11904, 11929, 1],\n [11931, 12019, 1],\n [12032, 12245, 1],\n [12293, 12295, 2],\n [12321, 12329, 1],\n [12344, 12347, 1],\n [13312, 19903, 1],\n [19968, 40959, 1],\n [63744, 64109, 1],\n [64112, 64217, 1],\n [94178, 94179, 1],\n [94192, 94193, 1],\n [131072, 173791, 1],\n [173824, 177977, 1],\n [177984, 178205, 1],\n [178208, 183969, 1],\n [183984, 191456, 1],\n [194560, 195101, 1],\n [196608, 201546, 1],\n [201552, 205743, 1]\n ]\n static Hangul = [\n [4352, 4607, 1],\n [12334, 12335, 1],\n [12593, 12686, 1],\n [12800, 12830, 1],\n [12896, 12926, 1],\n [43360, 43388, 1],\n [44032, 55203, 1],\n [55216, 55238, 1],\n [55243, 55291, 1],\n [65440, 65470, 1],\n [65474, 65479, 1],\n [65482, 65487, 1],\n [65490, 65495, 1],\n [65498, 65500, 1]\n ]\n static Hanifi_Rohingya = [\n [68864, 68903, 1],\n [68912, 68921, 1]\n ]\n static Hanunoo = [[5920, 5940, 1]]\n static Hatran = [\n [67808, 67826, 1],\n [67828, 67829, 1],\n [67835, 67839, 1]\n ]\n static Hebrew = [\n [1425, 1479, 1],\n [1488, 1514, 1],\n [1519, 1524, 1],\n [64285, 64310, 1],\n [64312, 64316, 1],\n [64318, 64320, 2],\n [64321, 64323, 2],\n [64324, 64326, 2],\n [64327, 64335, 1]\n ]\n static Hiragana = [\n [12353, 12438, 1],\n [12445, 12447, 1],\n [110593, 110879, 1],\n [110898, 110928, 30],\n [110929, 110930, 1],\n [127488, 127488, 1]\n ]\n static Imperial_Aramaic = [\n [67648, 67669, 1],\n [67671, 67679, 1]\n ]\n static Inherited = [\n [768, 879, 1],\n [1157, 1158, 1],\n [1611, 1621, 1],\n [1648, 2385, 737],\n [2386, 2388, 1],\n [6832, 6862, 1],\n [7376, 7378, 1],\n [7380, 7392, 1],\n [7394, 7400, 1],\n [7405, 7412, 7],\n [7416, 7417, 1],\n [7616, 7679, 1],\n [8204, 8205, 1],\n [8400, 8432, 1],\n [12330, 12333, 1],\n [12441, 12442, 1],\n [65024, 65039, 1],\n [65056, 65069, 1],\n [66045, 66272, 227],\n [70459, 118528, 48069],\n [118529, 118573, 1],\n [118576, 118598, 1],\n [119143, 119145, 1],\n [119163, 119170, 1],\n [119173, 119179, 1],\n [119210, 119213, 1],\n [917760, 917999, 1]\n ]\n static foldInherited = [\n [921, 953, 32],\n [8126, 8126, 1]\n ]\n static Inscriptional_Pahlavi = [\n [68448, 68466, 1],\n [68472, 68479, 1]\n ]\n static Inscriptional_Parthian = [\n [68416, 68437, 1],\n [68440, 68447, 1]\n ]\n static Javanese = [\n [43392, 43469, 1],\n [43472, 43481, 1],\n [43486, 43487, 1]\n ]\n static Kaithi = [\n [69760, 69826, 1],\n [69837, 69837, 1]\n ]\n static Kannada = [\n [3200, 3212, 1],\n [3214, 3216, 1],\n [3218, 3240, 1],\n [3242, 3251, 1],\n [3253, 3257, 1],\n [3260, 3268, 1],\n [3270, 3272, 1],\n [3274, 3277, 1],\n [3285, 3286, 1],\n [3293, 3294, 1],\n [3296, 3299, 1],\n [3302, 3311, 1],\n [3313, 3315, 1]\n ]\n static Katakana = [\n [12449, 12538, 1],\n [12541, 12543, 1],\n [12784, 12799, 1],\n [13008, 13054, 1],\n [13056, 13143, 1],\n [65382, 65391, 1],\n [65393, 65437, 1],\n [110576, 110579, 1],\n [110581, 110587, 1],\n [110589, 110590, 1],\n [110592, 110880, 288],\n [110881, 110882, 1],\n [110933, 110948, 15],\n [110949, 110951, 1]\n ]\n static Kawi = [\n [73472, 73488, 1],\n [73490, 73530, 1],\n [73534, 73561, 1]\n ]\n static Kayah_Li = [\n [43264, 43309, 1],\n [43311, 43311, 1]\n ]\n static Kharoshthi = [\n [68096, 68099, 1],\n [68101, 68102, 1],\n [68108, 68115, 1],\n [68117, 68119, 1],\n [68121, 68149, 1],\n [68152, 68154, 1],\n [68159, 68168, 1],\n [68176, 68184, 1]\n ]\n static Khitan_Small_Script = [\n [94180, 101120, 6940],\n [101121, 101589, 1]\n ]\n static Khmer = [\n [6016, 6109, 1],\n [6112, 6121, 1],\n [6128, 6137, 1],\n [6624, 6655, 1]\n ]\n static Khojki = [\n [70144, 70161, 1],\n [70163, 70209, 1]\n ]\n static Khudawadi = [\n [70320, 70378, 1],\n [70384, 70393, 1]\n ]\n static Lao = [\n [3713, 3714, 1],\n [3716, 3718, 2],\n [3719, 3722, 1],\n [3724, 3747, 1],\n [3749, 3751, 2],\n [3752, 3773, 1],\n [3776, 3780, 1],\n [3782, 3784, 2],\n [3785, 3790, 1],\n [3792, 3801, 1],\n [3804, 3807, 1]\n ]\n static Latin = [\n [65, 90, 1],\n [97, 122, 1],\n [170, 186, 16],\n [192, 214, 1],\n [216, 246, 1],\n [248, 696, 1],\n [736, 740, 1],\n [7424, 7461, 1],\n [7468, 7516, 1],\n [7522, 7525, 1],\n [7531, 7543, 1],\n [7545, 7614, 1],\n [7680, 7935, 1],\n [8305, 8319, 14],\n [8336, 8348, 1],\n [8490, 8491, 1],\n [8498, 8526, 28],\n [8544, 8584, 1],\n [11360, 11391, 1],\n [42786, 42887, 1],\n [42891, 42954, 1],\n [42960, 42961, 1],\n [42963, 42965, 2],\n [42966, 42969, 1],\n [42994, 43007, 1],\n [43824, 43866, 1],\n [43868, 43876, 1],\n [43878, 43881, 1],\n [64256, 64262, 1],\n [65313, 65338, 1],\n [65345, 65370, 1],\n [67456, 67461, 1],\n [67463, 67504, 1],\n [67506, 67514, 1],\n [122624, 122654, 1],\n [122661, 122666, 1]\n ]\n static Lepcha = [\n [7168, 7223, 1],\n [7227, 7241, 1],\n [7245, 7247, 1]\n ]\n static Limbu = [\n [6400, 6430, 1],\n [6432, 6443, 1],\n [6448, 6459, 1],\n [6464, 6468, 4],\n [6469, 6479, 1]\n ]\n static Linear_A = [\n [67072, 67382, 1],\n [67392, 67413, 1],\n [67424, 67431, 1]\n ]\n static Linear_B = [\n [65536, 65547, 1],\n [65549, 65574, 1],\n [65576, 65594, 1],\n [65596, 65597, 1],\n [65599, 65613, 1],\n [65616, 65629, 1],\n [65664, 65786, 1]\n ]\n static Lisu = [\n [42192, 42239, 1],\n [73648, 73648, 1]\n ]\n static Lycian = [[66176, 66204, 1]]\n static Lydian = [\n [67872, 67897, 1],\n [67903, 67903, 1]\n ]\n static Mahajani = [[69968, 70006, 1]]\n static Makasar = [[73440, 73464, 1]]\n static Malayalam = [\n [3328, 3340, 1],\n [3342, 3344, 1],\n [3346, 3396, 1],\n [3398, 3400, 1],\n [3402, 3407, 1],\n [3412, 3427, 1],\n [3430, 3455, 1]\n ]\n static Mandaic = [\n [2112, 2139, 1],\n [2142, 2142, 1]\n ]\n static Manichaean = [\n [68288, 68326, 1],\n [68331, 68342, 1]\n ]\n static Marchen = [\n [72816, 72847, 1],\n [72850, 72871, 1],\n [72873, 72886, 1]\n ]\n static Masaram_Gondi = [\n [72960, 72966, 1],\n [72968, 72969, 1],\n [72971, 73014, 1],\n [73018, 73020, 2],\n [73021, 73023, 2],\n [73024, 73031, 1],\n [73040, 73049, 1]\n ]\n static Medefaidrin = [[93760, 93850, 1]]\n static Meetei_Mayek = [\n [43744, 43766, 1],\n [43968, 44013, 1],\n [44016, 44025, 1]\n ]\n static Mende_Kikakui = [\n [124928, 125124, 1],\n [125127, 125142, 1]\n ]\n static Meroitic_Cursive = [\n [68000, 68023, 1],\n [68028, 68047, 1],\n [68050, 68095, 1]\n ]\n static Meroitic_Hieroglyphs = [[67968, 67999, 1]]\n static Miao = [\n [93952, 94026, 1],\n [94031, 94087, 1],\n [94095, 94111, 1]\n ]\n static Modi = [\n [71168, 71236, 1],\n [71248, 71257, 1]\n ]\n static Mongolian = [\n [6144, 6145, 1],\n [6148, 6150, 2],\n [6151, 6169, 1],\n [6176, 6264, 1],\n [6272, 6314, 1],\n [71264, 71276, 1]\n ]\n static Mro = [\n [92736, 92766, 1],\n [92768, 92777, 1],\n [92782, 92783, 1]\n ]\n static Multani = [\n [70272, 70278, 1],\n [70280, 70282, 2],\n [70283, 70285, 1],\n [70287, 70301, 1],\n [70303, 70313, 1]\n ]\n static Myanmar = [\n [4096, 4255, 1],\n [43488, 43518, 1],\n [43616, 43647, 1]\n ]\n static Nabataean = [\n [67712, 67742, 1],\n [67751, 67759, 1]\n ]\n static Nag_Mundari = [[124112, 124153, 1]]\n static Nandinagari = [\n [72096, 72103, 1],\n [72106, 72151, 1],\n [72154, 72164, 1]\n ]\n static New_Tai_Lue = [\n [6528, 6571, 1],\n [6576, 6601, 1],\n [6608, 6618, 1],\n [6622, 6623, 1]\n ]\n static Newa = [\n [70656, 70747, 1],\n [70749, 70753, 1]\n ]\n static Nko = [\n [1984, 2042, 1],\n [2045, 2047, 1]\n ]\n static Nushu = [\n [94177, 110960, 16783],\n [110961, 111355, 1]\n ]\n static Nyiakeng_Puachue_Hmong = [\n [123136, 123180, 1],\n [123184, 123197, 1],\n [123200, 123209, 1],\n [123214, 123215, 1]\n ]\n static Ogham = [[5760, 5788, 1]]\n static Ol_Chiki = [[7248, 7295, 1]]\n static Old_Hungarian = [\n [68736, 68786, 1],\n [68800, 68850, 1],\n [68858, 68863, 1]\n ]\n static Old_Italic = [\n [66304, 66339, 1],\n [66349, 66351, 1]\n ]\n static Old_North_Arabian = [[68224, 68255, 1]]\n static Old_Permic = [[66384, 66426, 1]]\n static Old_Persian = [\n [66464, 66499, 1],\n [66504, 66517, 1]\n ]\n static Old_Sogdian = [[69376, 69415, 1]]\n static Old_South_Arabian = [[68192, 68223, 1]]\n static Old_Turkic = [[68608, 68680, 1]]\n static Old_Uyghur = [[69488, 69513, 1]]\n static Oriya = [\n [2817, 2819, 1],\n [2821, 2828, 1],\n [2831, 2832, 1],\n [2835, 2856, 1],\n [2858, 2864, 1],\n [2866, 2867, 1],\n [2869, 2873, 1],\n [2876, 2884, 1],\n [2887, 2888, 1],\n [2891, 2893, 1],\n [2901, 2903, 1],\n [2908, 2909, 1],\n [2911, 2915, 1],\n [2918, 2935, 1]\n ]\n static Osage = [\n [66736, 66771, 1],\n [66776, 66811, 1]\n ]\n static Osmanya = [\n [66688, 66717, 1],\n [66720, 66729, 1]\n ]\n static Pahawh_Hmong = [\n [92928, 92997, 1],\n [93008, 93017, 1],\n [93019, 93025, 1],\n [93027, 93047, 1],\n [93053, 93071, 1]\n ]\n static Palmyrene = [[67680, 67711, 1]]\n static Pau_Cin_Hau = [[72384, 72440, 1]]\n static Phags_Pa = [[43072, 43127, 1]]\n static Phoenician = [\n [67840, 67867, 1],\n [67871, 67871, 1]\n ]\n static Psalter_Pahlavi = [\n [68480, 68497, 1],\n [68505, 68508, 1],\n [68521, 68527, 1]\n ]\n static Rejang = [\n [43312, 43347, 1],\n [43359, 43359, 1]\n ]\n static Runic = [\n [5792, 5866, 1],\n [5870, 5880, 1]\n ]\n static Samaritan = [\n [2048, 2093, 1],\n [2096, 2110, 1]\n ]\n static Saurashtra = [\n [43136, 43205, 1],\n [43214, 43225, 1]\n ]\n static Sharada = [[70016, 70111, 1]]\n static Shavian = [[66640, 66687, 1]]\n static Siddham = [\n [71040, 71093, 1],\n [71096, 71133, 1]\n ]\n static SignWriting = [\n [120832, 121483, 1],\n [121499, 121503, 1],\n [121505, 121519, 1]\n ]\n static Sinhala = [\n [3457, 3459, 1],\n [3461, 3478, 1],\n [3482, 3505, 1],\n [3507, 3515, 1],\n [3517, 3520, 3],\n [3521, 3526, 1],\n [3530, 3535, 5],\n [3536, 3540, 1],\n [3542, 3544, 2],\n [3545, 3551, 1],\n [3558, 3567, 1],\n [3570, 3572, 1],\n [70113, 70132, 1]\n ]\n static Sogdian = [[69424, 69465, 1]]\n static Sora_Sompeng = [\n [69840, 69864, 1],\n [69872, 69881, 1]\n ]\n static Soyombo = [[72272, 72354, 1]]\n static Sundanese = [\n [7040, 7103, 1],\n [7360, 7367, 1]\n ]\n static Syloti_Nagri = [[43008, 43052, 1]]\n static Syriac = [\n [1792, 1805, 1],\n [1807, 1866, 1],\n [1869, 1871, 1],\n [2144, 2154, 1]\n ]\n static Tagalog = [\n [5888, 5909, 1],\n [5919, 5919, 1]\n ]\n static Tagbanwa = [\n [5984, 5996, 1],\n [5998, 6000, 1],\n [6002, 6003, 1]\n ]\n static Tai_Le = [\n [6480, 6509, 1],\n [6512, 6516, 1]\n ]\n static Tai_Tham = [\n [6688, 6750, 1],\n [6752, 6780, 1],\n [6783, 6793, 1],\n [6800, 6809, 1],\n [6816, 6829, 1]\n ]\n static Tai_Viet = [\n [43648, 43714, 1],\n [43739, 43743, 1]\n ]\n static Takri = [\n [71296, 71353, 1],\n [71360, 71369, 1]\n ]\n static Tamil = [\n [2946, 2947, 1],\n [2949, 2954, 1],\n [2958, 2960, 1],\n [2962, 2965, 1],\n [2969, 2970, 1],\n [2972, 2974, 2],\n [2975, 2979, 4],\n [2980, 2984, 4],\n [2985, 2986, 1],\n [2990, 3001, 1],\n [3006, 3010, 1],\n [3014, 3016, 1],\n [3018, 3021, 1],\n [3024, 3031, 7],\n [3046, 3066, 1],\n [73664, 73713, 1],\n [73727, 73727, 1]\n ]\n static Tangsa = [\n [92784, 92862, 1],\n [92864, 92873, 1]\n ]\n static Tangut = [\n [94176, 94208, 32],\n [94209, 100343, 1],\n [100352, 101119, 1],\n [101632, 101640, 1]\n ]\n static Telugu = [\n [3072, 3084, 1],\n [3086, 3088, 1],\n [3090, 3112, 1],\n [3114, 3129, 1],\n [3132, 3140, 1],\n [3142, 3144, 1],\n [3146, 3149, 1],\n [3157, 3158, 1],\n [3160, 3162, 1],\n [3165, 3168, 3],\n [3169, 3171, 1],\n [3174, 3183, 1],\n [3191, 3199, 1]\n ]\n static Thaana = [[1920, 1969, 1]]\n static Thai = [\n [3585, 3642, 1],\n [3648, 3675, 1]\n ]\n static Tibetan = [\n [3840, 3911, 1],\n [3913, 3948, 1],\n [3953, 3991, 1],\n [3993, 4028, 1],\n [4030, 4044, 1],\n [4046, 4052, 1],\n [4057, 4058, 1]\n ]\n static Tifinagh = [\n [11568, 11623, 1],\n [11631, 11632, 1],\n [11647, 11647, 1]\n ]\n static Tirhuta = [\n [70784, 70855, 1],\n [70864, 70873, 1]\n ]\n static Toto = [[123536, 123566, 1]]\n static Ugaritic = [\n [66432, 66461, 1],\n [66463, 66463, 1]\n ]\n static Vai = [[42240, 42539, 1]]\n static Vithkuqi = [\n [66928, 66938, 1],\n [66940, 66954, 1],\n [66956, 66962, 1],\n [66964, 66965, 1],\n [66967, 66977, 1],\n [66979, 66993, 1],\n [66995, 67001, 1],\n [67003, 67004, 1]\n ]\n static Wancho = [\n [123584, 123641, 1],\n [123647, 123647, 1]\n ]\n static Warang_Citi = [\n [71840, 71922, 1],\n [71935, 71935, 1]\n ]\n static Yezidi = [\n [69248, 69289, 1],\n [69291, 69293, 1],\n [69296, 69297, 1]\n ]\n static Yi = [\n [40960, 42124, 1],\n [42128, 42182, 1]\n ]\n static Zanabazar_Square = [[72192, 72263, 1]]\n\n static CATEGORIES = new Map([\n ['C', UnicodeTables.C],\n ['Cc', UnicodeTables.Cc],\n ['Cf', UnicodeTables.Cf],\n ['Co', UnicodeTables.Co],\n ['Cs', UnicodeTables.Cs],\n ['L', UnicodeTables.L],\n ['Ll', UnicodeTables.Ll],\n ['Lm', UnicodeTables.Lm],\n ['Lo', UnicodeTables.Lo],\n ['Lt', UnicodeTables.Lt],\n ['Lu', UnicodeTables.Lu],\n ['M', UnicodeTables.M],\n ['Mc', UnicodeTables.Mc],\n ['Me', UnicodeTables.Me],\n ['Mn', UnicodeTables.Mn],\n ['N', UnicodeTables.N],\n ['Nd', UnicodeTables.Nd],\n ['Nl', UnicodeTables.Nl],\n ['No', UnicodeTables.No],\n ['P', UnicodeTables.P],\n ['Pc', UnicodeTables.Pc],\n ['Pd', UnicodeTables.Pd],\n ['Pe', UnicodeTables.Pe],\n ['Pf', UnicodeTables.Pf],\n ['Pi', UnicodeTables.Pi],\n ['Po', UnicodeTables.Po],\n ['Ps', UnicodeTables.Ps],\n ['S', UnicodeTables.S],\n ['Sc', UnicodeTables.Sc],\n ['Sk', UnicodeTables.Sk],\n ['Sm', UnicodeTables.Sm],\n ['So', UnicodeTables.So],\n ['Z', UnicodeTables.Z],\n ['Zl', UnicodeTables.Zl],\n ['Zp', UnicodeTables.Zp],\n ['Zs', UnicodeTables.Zs]\n ])\n\n static SCRIPTS = new Map([\n ['Adlam', UnicodeTables.Adlam],\n ['Ahom', UnicodeTables.Ahom],\n ['Anatolian_Hieroglyphs', UnicodeTables.Anatolian_Hieroglyphs],\n ['Arabic', UnicodeTables.Arabic],\n ['Armenian', UnicodeTables.Armenian],\n ['Avestan', UnicodeTables.Avestan],\n ['Balinese', UnicodeTables.Balinese],\n ['Bamum', UnicodeTables.Bamum],\n ['Bassa_Vah', UnicodeTables.Bassa_Vah],\n ['Batak', UnicodeTables.Batak],\n ['Bengali', UnicodeTables.Bengali],\n ['Bhaiksuki', UnicodeTables.Bhaiksuki],\n ['Bopomofo', UnicodeTables.Bopomofo],\n ['Brahmi', UnicodeTables.Brahmi],\n ['Braille', UnicodeTables.Braille],\n ['Buginese', UnicodeTables.Buginese],\n ['Buhid', UnicodeTables.Buhid],\n ['Canadian_Aboriginal', UnicodeTables.Canadian_Aboriginal],\n ['Carian', UnicodeTables.Carian],\n ['Caucasian_Albanian', UnicodeTables.Caucasian_Albanian],\n ['Chakma', UnicodeTables.Chakma],\n ['Cham', UnicodeTables.Cham],\n ['Cherokee', UnicodeTables.Cherokee],\n ['Chorasmian', UnicodeTables.Chorasmian],\n ['Common', UnicodeTables.Common],\n ['Coptic', UnicodeTables.Coptic],\n ['Cuneiform', UnicodeTables.Cuneiform],\n ['Cypriot', UnicodeTables.Cypriot],\n ['Cypro_Minoan', UnicodeTables.Cypro_Minoan],\n ['Cyrillic', UnicodeTables.Cyrillic],\n ['Deseret', UnicodeTables.Deseret],\n ['Devanagari', UnicodeTables.Devanagari],\n ['Dives_Akuru', UnicodeTables.Dives_Akuru],\n ['Dogra', UnicodeTables.Dogra],\n ['Duployan', UnicodeTables.Duployan],\n ['Egyptian_Hieroglyphs', UnicodeTables.Egyptian_Hieroglyphs],\n ['Elbasan', UnicodeTables.Elbasan],\n ['Elymaic', UnicodeTables.Elymaic],\n ['Ethiopic', UnicodeTables.Ethiopic],\n ['Georgian', UnicodeTables.Georgian],\n ['Glagolitic', UnicodeTables.Glagolitic],\n ['Gothic', UnicodeTables.Gothic],\n ['Grantha', UnicodeTables.Grantha],\n ['Greek', UnicodeTables.Greek],\n ['Gujarati', UnicodeTables.Gujarati],\n ['Gunjala_Gondi', UnicodeTables.Gunjala_Gondi],\n ['Gurmukhi', UnicodeTables.Gurmukhi],\n ['Han', UnicodeTables.Han],\n ['Hangul', UnicodeTables.Hangul],\n ['Hanifi_Rohingya', UnicodeTables.Hanifi_Rohingya],\n ['Hanunoo', UnicodeTables.Hanunoo],\n ['Hatran', UnicodeTables.Hatran],\n ['Hebrew', UnicodeTables.Hebrew],\n ['Hiragana', UnicodeTables.Hiragana],\n ['Imperial_Aramaic', UnicodeTables.Imperial_Aramaic],\n ['Inherited', UnicodeTables.Inherited],\n ['Inscriptional_Pahlavi', UnicodeTables.Inscriptional_Pahlavi],\n ['Inscriptional_Parthian', UnicodeTables.Inscriptional_Parthian],\n ['Javanese', UnicodeTables.Javanese],\n ['Kaithi', UnicodeTables.Kaithi],\n ['Kannada', UnicodeTables.Kannada],\n ['Katakana', UnicodeTables.Katakana],\n ['Kawi', UnicodeTables.Kawi],\n ['Kayah_Li', UnicodeTables.Kayah_Li],\n ['Kharoshthi', UnicodeTables.Kharoshthi],\n ['Khitan_Small_Script', UnicodeTables.Khitan_Small_Script],\n ['Khmer', UnicodeTables.Khmer],\n ['Khojki', UnicodeTables.Khojki],\n ['Khudawadi', UnicodeTables.Khudawadi],\n ['Lao', UnicodeTables.Lao],\n ['Latin', UnicodeTables.Latin],\n ['Lepcha', UnicodeTables.Lepcha],\n ['Limbu', UnicodeTables.Limbu],\n ['Linear_A', UnicodeTables.Linear_A],\n ['Linear_B', UnicodeTables.Linear_B],\n ['Lisu', UnicodeTables.Lisu],\n ['Lycian', UnicodeTables.Lycian],\n ['Lydian', UnicodeTables.Lydian],\n ['Mahajani', UnicodeTables.Mahajani],\n ['Makasar', UnicodeTables.Makasar],\n ['Malayalam', UnicodeTables.Malayalam],\n ['Mandaic', UnicodeTables.Mandaic],\n ['Manichaean', UnicodeTables.Manichaean],\n ['Marchen', UnicodeTables.Marchen],\n ['Masaram_Gondi', UnicodeTables.Masaram_Gondi],\n ['Medefaidrin', UnicodeTables.Medefaidrin],\n ['Meetei_Mayek', UnicodeTables.Meetei_Mayek],\n ['Mende_Kikakui', UnicodeTables.Mende_Kikakui],\n ['Meroitic_Cursive', UnicodeTables.Meroitic_Cursive],\n ['Meroitic_Hieroglyphs', UnicodeTables.Meroitic_Hieroglyphs],\n ['Miao', UnicodeTables.Miao],\n ['Modi', UnicodeTables.Modi],\n ['Mongolian', UnicodeTables.Mongolian],\n ['Mro', UnicodeTables.Mro],\n ['Multani', UnicodeTables.Multani],\n ['Myanmar', UnicodeTables.Myanmar],\n ['Nabataean', UnicodeTables.Nabataean],\n ['Nag_Mundari', UnicodeTables.Nag_Mundari],\n ['Nandinagari', UnicodeTables.Nandinagari],\n ['New_Tai_Lue', UnicodeTables.New_Tai_Lue],\n ['Newa', UnicodeTables.Newa],\n ['Nko', UnicodeTables.Nko],\n ['Nushu', UnicodeTables.Nushu],\n ['Nyiakeng_Puachue_Hmong', UnicodeTables.Nyiakeng_Puachue_Hmong],\n ['Ogham', UnicodeTables.Ogham],\n ['Ol_Chiki', UnicodeTables.Ol_Chiki],\n ['Old_Hungarian', UnicodeTables.Old_Hungarian],\n ['Old_Italic', UnicodeTables.Old_Italic],\n ['Old_North_Arabian', UnicodeTables.Old_North_Arabian],\n ['Old_Permic', UnicodeTables.Old_Permic],\n ['Old_Persian', UnicodeTables.Old_Persian],\n ['Old_Sogdian', UnicodeTables.Old_Sogdian],\n ['Old_South_Arabian', UnicodeTables.Old_South_Arabian],\n ['Old_Turkic', UnicodeTables.Old_Turkic],\n ['Old_Uyghur', UnicodeTables.Old_Uyghur],\n ['Oriya', UnicodeTables.Oriya],\n ['Osage', UnicodeTables.Osage],\n ['Osmanya', UnicodeTables.Osmanya],\n ['Pahawh_Hmong', UnicodeTables.Pahawh_Hmong],\n ['Palmyrene', UnicodeTables.Palmyrene],\n ['Pau_Cin_Hau', UnicodeTables.Pau_Cin_Hau],\n ['Phags_Pa', UnicodeTables.Phags_Pa],\n ['Phoenician', UnicodeTables.Phoenician],\n ['Psalter_Pahlavi', UnicodeTables.Psalter_Pahlavi],\n ['Rejang', UnicodeTables.Rejang],\n ['Runic', UnicodeTables.Runic],\n ['Samaritan', UnicodeTables.Samaritan],\n ['Saurashtra', UnicodeTables.Saurashtra],\n ['Sharada', UnicodeTables.Sharada],\n ['Shavian', UnicodeTables.Shavian],\n ['Siddham', UnicodeTables.Siddham],\n ['SignWriting', UnicodeTables.SignWriting],\n ['Sinhala', UnicodeTables.Sinhala],\n ['Sogdian', UnicodeTables.Sogdian],\n ['Sora_Sompeng', UnicodeTables.Sora_Sompeng],\n ['Soyombo', UnicodeTables.Soyombo],\n ['Sundanese', UnicodeTables.Sundanese],\n ['Syloti_Nagri', UnicodeTables.Syloti_Nagri],\n ['Syriac', UnicodeTables.Syriac],\n ['Tagalog', UnicodeTables.Tagalog],\n ['Tagbanwa', UnicodeTables.Tagbanwa],\n ['Tai_Le', UnicodeTables.Tai_Le],\n ['Tai_Tham', UnicodeTables.Tai_Tham],\n ['Tai_Viet', UnicodeTables.Tai_Viet],\n ['Takri', UnicodeTables.Takri],\n ['Tamil', UnicodeTables.Tamil],\n ['Tangsa', UnicodeTables.Tangsa],\n ['Tangut', UnicodeTables.Tangut],\n ['Telugu', UnicodeTables.Telugu],\n ['Thaana', UnicodeTables.Thaana],\n ['Thai', UnicodeTables.Thai],\n ['Tibetan', UnicodeTables.Tibetan],\n ['Tifinagh', UnicodeTables.Tifinagh],\n ['Tirhuta', UnicodeTables.Tirhuta],\n ['Toto', UnicodeTables.Toto],\n ['Ugaritic', UnicodeTables.Ugaritic],\n ['Vai', UnicodeTables.Vai],\n ['Vithkuqi', UnicodeTables.Vithkuqi],\n ['Wancho', UnicodeTables.Wancho],\n ['Warang_Citi', UnicodeTables.Warang_Citi],\n ['Yezidi', UnicodeTables.Yezidi],\n ['Yi', UnicodeTables.Yi],\n ['Zanabazar_Square', UnicodeTables.Zanabazar_Square]\n ])\n\n static FOLD_CATEGORIES = new Map([\n ['L', UnicodeTables.foldL],\n ['Ll', UnicodeTables.foldLl],\n ['Lt', UnicodeTables.foldLt],\n ['Lu', UnicodeTables.foldLu],\n ['M', UnicodeTables.foldM],\n ['Mn', UnicodeTables.foldMn]\n ])\n\n static FOLD_SCRIPT = new Map([\n ['Common', UnicodeTables.foldCommon],\n ['Greek', UnicodeTables.foldGreek],\n ['Inherited', UnicodeTables.foldInherited]\n ])\n}\n\nexport { UnicodeTables }\n","import { Codepoint } from './Codepoint'\nimport { UnicodeTables } from './UnicodeTables'\n/**\n * Utilities for dealing with Unicode better than JS does.\n */\nclass Unicode {\n // The highest legal rune value.\n static MAX_RUNE = 0x10ffff\n // The highest legal ASCII value.\n static MAX_ASCII = 0x7f\n // The highest legal Latin-1 value.\n static MAX_LATIN1 = 0xff\n // The highest legal Basic Multilingual Plane (BMP) value.\n static MAX_BMP = 0xffff\n // Minimum and maximum runes involved in folding.\n // Checked during test.\n static MIN_FOLD = 0x0041\n static MAX_FOLD = 0x1044f\n\n // is32 uses binary search to test whether rune is in the specified\n // slice of 32-bit ranges.\n static is32(ranges, r) {\n // binary search over ranges\n let lo = 0\n let hi = ranges.length\n while (lo < hi) {\n let m = lo + Math.floor((hi - lo) / 2)\n let range = ranges[m]\n if (range[0] <= r && r <= range[1]) {\n return (r - range[0]) % range[2] === 0\n }\n if (r < range[0]) {\n hi = m\n } else {\n lo = m + 1\n }\n }\n return false\n }\n\n // is tests whether rune is in the specified table of ranges.\n static is(ranges, r) {\n // common case: rune is ASCII or Latin-1, so use linear search.\n if (r <= this.MAX_LATIN1) {\n for (let range of ranges) {\n // range = [lo, hi, stride]\n if (r > range[1]) {\n continue\n }\n if (r < range[0]) {\n return false\n }\n return (r - range[0]) % range[2] === 0\n }\n return false\n }\n return ranges.length > 0 && r >= ranges[0][0] && this.is32(ranges, r)\n }\n\n // isUpper reports whether the rune is an upper case letter.\n static isUpper(r) {\n if (r <= this.MAX_LATIN1) {\n const s = String.fromCodePoint(r)\n return s.toUpperCase() === s && s.toLowerCase() !== s\n }\n return this.is(UnicodeTables.Upper, r)\n }\n\n // isPrint reports whether the rune is printable (Unicode L/M/N/P/S or ' ').\n static isPrint(r) {\n if (r <= this.MAX_LATIN1) {\n return (r >= 0x20 && r < 0x7f) || (r >= 0xa1 && r !== 0xad)\n }\n return (\n this.is(UnicodeTables.L, r) ||\n this.is(UnicodeTables.M, r) ||\n this.is(UnicodeTables.N, r) ||\n this.is(UnicodeTables.P, r) ||\n this.is(UnicodeTables.S, r)\n )\n }\n\n // simpleFold iterates over Unicode code points equivalent under\n // the Unicode-defined simple case folding. Among the code points\n // equivalent to rune (including rune itself), SimpleFold returns the\n // smallest r >= rune if one exists, or else the smallest r >= 0.\n //\n // For example:\n // SimpleFold('A') = 'a'\n // SimpleFold('a') = 'A'\n //\n // SimpleFold('K') = 'k'\n // SimpleFold('k') = '\\u212A' (Kelvin symbol, K)\n // SimpleFold('\\u212A') = 'K'\n //\n // SimpleFold('1') = '1'\n //\n // Derived from Go's unicode.SimpleFold.\n //\n static simpleFold(r) {\n // Consult caseOrbit table for special cases.\n if (UnicodeTables.CASE_ORBIT.has(r)) {\n return UnicodeTables.CASE_ORBIT.get(r)\n }\n\n // No folding specified. This is a one- or two-element\n // equivalence class containing rune and toLower(rune)\n // and toUpper(rune) if they are different from rune.\n const l = Codepoint.toLowerCase(r)\n if (l !== r) {\n return l\n }\n return Codepoint.toUpperCase(r)\n }\n\n // equalsIgnoreCase performs case-insensitive equality comparison\n // on the given runes |r1| and |r2|, with special consideration\n // for the likely scenario where both runes are ASCII characters.\n // -1 is interpreted as the end-of-file mark.\n static equalsIgnoreCase(r1, r2) {\n // Runes already match, or one of them is EOF\n if (r1 < 0 || r2 < 0 || r1 === r2) {\n return true\n }\n\n // Fast path for the common case where both runes are ASCII characters.\n // Coerces both runes to lowercase if applicable.\n if (r1 <= this.MAX_ASCII && r2 <= this.MAX_ASCII) {\n if (Codepoint.CODES.get('A') <= r1 && r1 <= Codepoint.CODES.get('Z')) {\n r1 |= 0x20\n }\n\n if (Codepoint.CODES.get('A') <= r2 && r2 <= Codepoint.CODES.get('Z')) {\n r2 |= 0x20\n }\n\n return r1 === r2\n }\n\n // Fall back to full Unicode case folding otherwise.\n // Invariant: r1 must be non-negative\n for (let r = this.simpleFold(r1); r !== r1; r = this.simpleFold(r)) {\n if (r === r2) {\n return true\n }\n }\n\n return false\n }\n}\n\nexport { Unicode }\n","import { Codepoint } from './Codepoint'\nimport { Unicode } from './Unicode'\n/**\n * Various constants and helper utilities.\n */\nclass Utils {\n static METACHARACTERS = '\\\\.+*?()|[]{}^$'\n\n //// EMPTY_* flags\n static EMPTY_BEGIN_LINE = 0x01\n static EMPTY_END_LINE = 0x02\n static EMPTY_BEGIN_TEXT = 0x04\n static EMPTY_END_TEXT = 0x08\n static EMPTY_WORD_BOUNDARY = 0x10\n static EMPTY_NO_WORD_BOUNDARY = 0x20\n static EMPTY_ALL = -1\n\n static emptyInts() {\n return []\n }\n\n // Returns true iff |c| is an ASCII letter or decimal digit.\n static isalnum(c) {\n return (\n (Codepoint.CODES.get('0') <= c && c <= Codepoint.CODES.get('9')) ||\n (Codepoint.CODES.get('a') <= c && c <= Codepoint.CODES.get('z')) ||\n (Codepoint.CODES.get('A') <= c && c <= Codepoint.CODES.get('Z'))\n )\n }\n\n // If |c| is an ASCII hex digit, returns its value, otherwise -1.\n static unhex(c) {\n if (Codepoint.CODES.get('0') <= c && c <= Codepoint.CODES.get('9')) {\n return c - Codepoint.CODES.get('0')\n }\n if (Codepoint.CODES.get('a') <= c && c <= Codepoint.CODES.get('f')) {\n return c - Codepoint.CODES.get('a') + 10\n }\n if (Codepoint.CODES.get('A') <= c && c <= Codepoint.CODES.get('F')) {\n return c - Codepoint.CODES.get('A') + 10\n }\n return -1\n }\n\n // Appends a RE2 literal to |out| for rune |rune|,\n // with regexp metacharacters escaped.\n static escapeRune(rune) {\n let out = ''\n if (Unicode.isPrint(rune)) {\n if (this.METACHARACTERS.indexOf(String.fromCodePoint(rune)) >= 0) {\n out += '\\\\'\n }\n out += String.fromCodePoint(rune)\n } else {\n switch (rune) {\n case Codepoint.CODES.get('\"'): // '\"'\n out += '\\\\\"'\n break\n case Codepoint.CODES.get('\\\\'): // '\\\\'\n out += '\\\\\\\\'\n break\n case Codepoint.CODES.get('\\t'): // '\\t'\n out += '\\\\t'\n break\n case Codepoint.CODES.get('\\n'): // '\\n'\n out += '\\\\n'\n break\n case Codepoint.CODES.get('\\r'): // '\\r'\n out += '\\\\r'\n break\n case Codepoint.CODES.get('\\b'): // '\\b'\n out += '\\\\b'\n break\n case Codepoint.CODES.get('\\f'): // '\\f'\n out += '\\\\f'\n break\n default: {\n let s = rune.toString(16)\n if (rune < 0x100) {\n out += '\\\\x'\n if (s.length === 1) {\n out += '0'\n }\n out += s\n } else {\n out += `\\\\x{${s}}`\n }\n break\n }\n }\n }\n return out\n }\n\n // Returns the array of runes in the specified Java UTF-16 string.\n static stringToRunes(str) {\n return String(str)\n .split('')\n .map((s) => s.codePointAt(0))\n }\n\n // Returns the Java UTF-16 string containing the single rune |r|.\n static runeToString(r) {\n return String.fromCodePoint(r)\n }\n\n // isWordRune reports whether r is consider a ``word character''\n // during the evaluation of the \\b and \\B zero-width assertions.\n // These assertions are ASCII-only: the word characters are [A-Za-z0-9_].\n static isWordRune(r) {\n return (\n (Codepoint.CODES.get('a') <= r && r <= Codepoint.CODES.get('z')) ||\n (Codepoint.CODES.get('A') <= r && r <= Codepoint.CODES.get('Z')) ||\n (Codepoint.CODES.get('0') <= r && r <= Codepoint.CODES.get('9')) ||\n r === Codepoint.CODES.get('_')\n )\n }\n\n // emptyOpContext returns the zero-width assertions satisfied at the position\n // between the runes r1 and r2, a bitmask of EMPTY_* flags.\n // Passing r1 == -1 indicates that the position is at the beginning of the\n // text.\n // Passing r2 == -1 indicates that the position is at the end of the text.\n // eslint-disable-next-line no-warning-comments\n // TODO(adonovan): move to Machine.\n static emptyOpContext(r1, r2) {\n let op = 0\n if (r1 < 0) {\n op |= this.EMPTY_BEGIN_TEXT | this.EMPTY_BEGIN_LINE\n }\n if (r1 === Codepoint.CODES.get('\\n')) {\n op |= this.EMPTY_BEGIN_LINE\n }\n if (r2 < 0) {\n op |= this.EMPTY_END_TEXT | this.EMPTY_END_LINE\n }\n if (r2 === Codepoint.CODES.get('\\n')) {\n op |= this.EMPTY_END_LINE\n }\n if (this.isWordRune(r1) !== this.isWordRune(r2)) {\n op |= this.EMPTY_WORD_BOUNDARY\n } else {\n op |= this.EMPTY_NO_WORD_BOUNDARY\n }\n return op\n }\n\n /**\n * Returns a string that quotes all regular expression metacharacters inside the argument text;\n * the returned string is a regular expression matching the literal text. For example,\n * {@code quoteMeta(\"[foo]\").equals(\"\\\\[foo\\\\]\")}.\n * @param {string} s\n * @return {string}\n */\n static quoteMeta(str) {\n return str\n .split('') // A char loop is correct because all metacharacters fit in one UTF-16 code.\n .map((s) => {\n if (this.METACHARACTERS.indexOf(s) >= 0) {\n return `\\\\${s}`\n }\n return s\n })\n .join('')\n }\n\n static charCount(codePoint) {\n return codePoint > Unicode.MAX_BMP ? 2 : 1\n }\n\n static stringToUtf8ByteArray(str) {\n if (globalThis.TextEncoder) {\n return Array.from(new TextEncoder().encode(str))\n } else {\n // fallback, if no TextEncoder\n let out = [],\n p = 0\n for (let i = 0; i < str.length; i++) {\n let c = str.charCodeAt(i)\n if (c < 128) {\n out[p++] = c\n } else if (c < 2048) {\n out[p++] = (c >> 6) | 192\n out[p++] = (c & 63) | 128\n } else if (\n (c & 0xfc00) === 0xd800 &&\n i + 1 < str.length &&\n (str.charCodeAt(i + 1) & 0xfc00) === 0xdc00\n ) {\n // Surrogate Pair\n c = 0x10000 + ((c & 0x03ff) << 10) + (str.charCodeAt(++i) & 0x03ff)\n out[p++] = (c >> 18) | 240\n out[p++] = ((c >> 12) & 63) | 128\n out[p++] = ((c >> 6) & 63) | 128\n out[p++] = (c & 63) | 128\n } else {\n out[p++] = (c >> 12) | 224\n out[p++] = ((c >> 6) & 63) | 128\n out[p++] = (c & 63) | 128\n }\n }\n return out\n }\n }\n\n static utf8ByteArrayToString(bytes) {\n if (globalThis.TextDecoder) {\n return new TextDecoder('utf-8').decode(new Uint8Array(bytes))\n } else {\n // fallback, if no TextDecoder\n let out = [],\n pos = 0,\n c = 0\n while (pos < bytes.length) {\n let c1 = bytes[pos++]\n if (c1 < 128) {\n out[c++] = String.fromCharCode(c1)\n } else if (c1 > 191 && c1 < 224) {\n let c2 = bytes[pos++]\n out[c++] = String.fromCharCode(((c1 & 31) << 6) | (c2 & 63))\n } else if (c1 > 239 && c1 < 365) {\n // Surrogate Pair\n let c2 = bytes[pos++]\n let c3 = bytes[pos++]\n let c4 = bytes[pos++]\n let u = (((c1 & 7) << 18) | ((c2 & 63) << 12) | ((c3 & 63) << 6) | (c4 & 63)) - 0x10000\n out[c++] = String.fromCharCode(0xd800 + (u >> 10))\n out[c++] = String.fromCharCode(0xdc00 + (u & 1023))\n } else {\n let c2 = bytes[pos++]\n let c3 = bytes[pos++]\n out[c++] = String.fromCharCode(((c1 & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63))\n }\n }\n return out.join('')\n }\n }\n}\n\nexport { Utils }\n","// helper to create enums\n// example\n// Encoding[(Encoding['UTF_16'] = 0)] = 'UTF_16'\n// Encoding[(Encoding['UTF_8'] = 1)] = 'UTF_8'\nconst createEnum = (values = [], initNum = 0) => {\n const enumObject = {}\n for (let i = 0; i < values.length; i++) {\n const val = values[i]\n const keyVal = initNum + i\n enumObject[val] = keyVal\n enumObject[keyVal] = val\n }\n return Object.freeze(enumObject)\n}\n\nexport { createEnum }\n","import { Utils } from './Utils'\nimport { createEnum } from './helpers'\n\n/**\n * Abstract the representations of input text supplied to Matcher.\n */\nclass MatcherInputBase {\n static Encoding = createEnum(['UTF_16', 'UTF_8'])\n\n getEncoding() {\n throw Error('not implemented')\n }\n\n isUTF8Encoding() {\n return this.getEncoding() === MatcherInputBase.Encoding.UTF_8\n }\n\n isUTF16Encoding() {\n return this.getEncoding() === MatcherInputBase.Encoding.UTF_16\n }\n}\n\nclass Utf8MatcherInput extends MatcherInputBase {\n constructor(bytes = null) {\n super()\n this.bytes = bytes\n }\n\n getEncoding() {\n return MatcherInputBase.Encoding.UTF_8\n }\n\n asCharSequence() {\n return Utils.utf8ByteArrayToString(this.bytes)\n }\n\n asBytes() {\n return this.bytes\n }\n\n length() {\n return this.bytes.length\n }\n}\n\nclass Utf16MatcherInput extends MatcherInputBase {\n constructor(charSequence = null) {\n super()\n this.charSequence = charSequence\n }\n\n getEncoding() {\n return MatcherInputBase.Encoding.UTF_16\n }\n\n asCharSequence() {\n return this.charSequence\n }\n\n asBytes() {\n return this.charSequence\n .toString()\n .split('')\n .map((s) => s.codePointAt(0))\n }\n\n length() {\n return this.charSequence.length\n }\n}\n\nclass MatcherInput {\n /**\n * Return the MatcherInput for UTF_16 encoding.\n */\n static utf16(charSequence) {\n return new Utf16MatcherInput(charSequence)\n }\n\n /**\n * Return the MatcherInput for UTF_8 encoding.\n */\n static utf8(input) {\n if (Array.isArray(input)) {\n return new Utf8MatcherInput(input)\n }\n\n return new Utf8MatcherInput(Utils.stringToUtf8ByteArray(input))\n }\n}\n\nexport { MatcherInput, MatcherInputBase }\n","class RE2JSException extends Error {\n constructor(message) {\n super(message)\n this.name = 'RE2JSException'\n }\n}\n\n/**\n * An exception thrown by the parser if the pattern was invalid.\n */\nclass RE2JSSyntaxException extends RE2JSException {\n constructor(error, input = null) {\n let message = `error parsing regexp: ${error}`\n if (input) {\n message += `: \\`${input}\\``\n }\n\n super(message)\n this.name = 'RE2JSSyntaxException'\n this.message = message\n this.error = error\n this.input = input\n }\n\n /**\n * Retrieves the description of the error.\n */\n getDescription() {\n return this.error\n }\n\n /**\n * Retrieves the erroneous regular-expression pattern.\n */\n getPattern() {\n return this.input\n }\n}\n\n/**\n * An exception thrown by the compiler\n */\nclass RE2JSCompileException extends RE2JSException {\n constructor(message) {\n super(message)\n this.name = 'RE2JSCompileException'\n }\n}\n\n/**\n * An exception thrown by using groups\n */\nclass RE2JSGroupException extends RE2JSException {\n constructor(message) {\n super(message)\n this.name = 'RE2JSGroupException'\n }\n}\n\n/**\n * An exception thrown by flags\n */\nclass RE2JSFlagsException extends RE2JSException {\n constructor(message) {\n super(message)\n this.name = 'RE2JSFlagsException'\n }\n}\n\nexport {\n RE2JSException,\n RE2JSSyntaxException,\n RE2JSCompileException,\n RE2JSGroupException,\n RE2JSFlagsException\n}\n","import { Codepoint } from './Codepoint'\nimport { RE2Flags } from './RE2Flags'\nimport { MatcherInput, MatcherInputBase } from './MatcherInput'\nimport { Utils } from './Utils'\nimport { RE2JSGroupException } from './exceptions'\n\n/**\n * A stateful iterator that interprets a regex {@code RE2JS} on a specific input.\n *\n * <p>\n * Conceptually, a Matcher consists of four parts:\n * <ol>\n * <li>A compiled regular expression {@code RE2JS}, set at construction and fixed for the lifetime\n * of the matcher.</li>\n *\n * <li>The remainder of the input string, set at construction or {@link #reset()} and advanced by\n * each match operation such as {@link #find}, {@link #matches} or {@link #lookingAt}.</li>\n *\n * <li>The current match information, accessible via {@link #start}, {@link #end}, and\n * {@link #group}, and updated by each match operation.</li>\n *\n * <li>The append position, used and advanced by {@link #appendReplacement} and {@link #appendTail}\n * if performing a search and replace from the input to an external {@code StringBuffer}.\n *\n * </ol>\n *\n *\n * @author rsc@google.com (Russ Cox)\n */\nclass Matcher {\n /**\n * Quotes '\\' and '$' in {@code s}, so that the returned string could be used in\n * {@link #appendReplacement} as a literal replacement of {@code s}.\n *\n * @param {string} s the string to be quoted\n * @return {string} the quoted string\n */\n static quoteReplacement(str) {\n if (str.indexOf('\\\\') < 0 && str.indexOf('$') < 0) {\n return str\n }\n\n return str\n .split('')\n .map((s) => {\n const c = s.codePointAt(0)\n if (c === Codepoint.CODES['\\\\'] || c === Codepoint.CODES['$']) {\n return `\\\\${s}`\n }\n return s\n })\n .join('')\n }\n\n constructor(pattern, input) {\n if (pattern === null) {\n throw new Error('pattern is null')\n }\n // The pattern being matched.\n this.patternInput = pattern\n const re2 = this.patternInput.re2()\n // The number of submatches (groups) in the pattern.\n this.patternGroupCount = re2.numberOfCapturingGroups()\n // The group indexes, in [start, end) pairs. Zeroth pair is overall match.\n this.groups = []\n this.namedGroups = re2.namedGroups\n\n if (input instanceof MatcherInputBase) {\n this.resetMatcherInput(input)\n } else if (Array.isArray(input)) {\n this.resetMatcherInput(MatcherInput.utf8(input))\n } else {\n this.resetMatcherInput(MatcherInput.utf16(input))\n }\n }\n\n /** Returns the {@code RE2JS} associated with this {@code Matcher}. */\n pattern() {\n return this.patternInput\n }\n\n /**\n * Resets the {@code Matcher}, rewinding input and discarding any match information.\n *\n * @return the {@code Matcher} itself, for chained method calls\n */\n reset() {\n // The input length in UTF16 codes.\n this.matcherInputLength = this.matcherInput.length()\n // The append position: where the next append should start.\n this.appendPos = 0\n // Is there a current match?\n this.hasMatch = false\n // Have we found the submatches (groups) of the current match?\n // group[0], group[1] are set regardless.\n this.hasGroups = false\n // The anchor flag to use when repeating the match to find subgroups.\n this.anchorFlag = 0\n return this\n }\n\n /**\n * Resets the {@code Matcher} and changes the input.\n *\n */\n resetMatcherInput(input) {\n if (input === null) {\n throw new Error('input is null')\n }\n this.matcherInput = input\n this.reset()\n return this\n }\n\n /**\n * Returns the start of the named group of the most recent match, or -1 if the group was not\n * matched.\n *\n */\n start(group = 0) {\n if (typeof group === 'string') {\n const groupInt = this.namedGroups[group]\n if (!Number.isFinite(groupInt)) {\n throw new RE2JSGroupException(`group '${group}' not found`)\n }\n group = groupInt\n }\n\n this.loadGroup(group)\n return this.groups[2 * group]\n }\n /**\n * Returns the end of the named group of the most recent match, or -1 if the group was not\n * matched.\n *\n */\n end(group = 0) {\n if (typeof group === 'string') {\n const groupInt = this.namedGroups[group]\n if (!Number.isFinite(groupInt)) {\n throw new RE2JSGroupException(`group '${group}' not found`)\n }\n group = groupInt\n }\n\n this.loadGroup(group)\n return this.groups[2 * group + 1]\n }\n\n /**\n * Returns the named group of the most recent match, or {@code null} if the group was not matched.\n *\n */\n group(group = 0) {\n if (typeof group === 'string') {\n const groupInt = this.namedGroups[group]\n if (!Number.isFinite(groupInt)) {\n throw new RE2JSGroupException(`group '${group}' not found`)\n }\n group = groupInt\n }\n\n const start = this.start(group)\n const end = this.end(group)\n if (start < 0 && end < 0) {\n return null\n }\n return this.substring(start, end)\n }\n /**\n * Returns the number of subgroups in this pattern.\n *\n * @return {number} the number of subgroups; the overall match (group 0) does not count\n */\n groupCount() {\n return this.patternGroupCount\n }\n\n /**\n * Helper: finds subgroup information if needed for group.\n * @param {number} group\n * @private\n */\n loadGroup(group) {\n if (group < 0 || group > this.patternGroupCount) {\n throw new RE2JSGroupException(`Group index out of bounds: ${group}`)\n }\n\n if (!this.hasMatch) {\n throw new RE2JSGroupException('perhaps no match attempted')\n }\n\n if (group === 0 || this.hasGroups) {\n return\n }\n\n let end = this.groups[1] + 1\n if (end > this.matcherInputLength) {\n end = this.matcherInputLength\n }\n\n const res = this.patternInput\n .re2()\n .matchMachineInput(\n this.matcherInput,\n this.groups[0],\n end,\n this.anchorFlag,\n 1 + this.patternGroupCount\n )\n\n const ok = res[0]\n if (!ok) {\n throw new RE2JSGroupException('inconsistency in matching group data')\n }\n this.groups = res[1]\n this.hasGroups = true\n }\n\n /**\n * Matches the entire input against the pattern (anchored start and end). If there is a match,\n * {@code matches} sets the match state to describe it.\n *\n * @return {boolean} true if the entire input matches the pattern\n */\n matches() {\n return this.genMatch(0, RE2Flags.ANCHOR_BOTH)\n }\n\n /**\n * Matches the beginning of input against the pattern (anchored start). If there is a match,\n * {@code lookingAt} sets the match state to describe it.\n *\n * @return {boolean} true if the beginning of the input matches the pattern\n */\n lookingAt() {\n return this.genMatch(0, RE2Flags.ANCHOR_START)\n }\n\n /**\n * Matches the input against the pattern (unanchored), starting at a specified position. If there\n * is a match, {@code find} sets the match state to describe it.\n *\n * @param start the input position where the search begins\n * @return true if it finds a match\n * @throws IndexOutOfBoundsException if start is not a valid input position\n */\n find(start = null) {\n if (start !== null) {\n if (start < 0 || start > this.matcherInputLength) {\n throw new RE2JSGroupException(`start index out of bounds: ${start}`)\n }\n this.reset()\n return this.genMatch(start, 0)\n }\n // no start\n start = 0\n if (this.hasMatch) {\n start = this.groups[1]\n if (this.groups[0] === this.groups[1]) {\n start++\n }\n }\n\n return this.genMatch(start, RE2Flags.UNANCHORED)\n }\n\n /**\n * Helper: does match starting at start, with RE2 anchor flag.\n * @param {number} startByte\n * @param {number} anchor\n * @return {boolean}\n * @private\n */\n genMatch(startByte, anchor) {\n const res = this.patternInput\n .re2()\n .matchMachineInput(this.matcherInput, startByte, this.matcherInputLength, anchor, 1)\n\n const ok = res[0]\n if (!ok) {\n return false\n }\n this.groups = res[1]\n this.hasMatch = true\n this.hasGroups = false\n this.anchorFlag = anchor\n return true\n }\n\n /**\n * Helper: return substring for [start, end).\n * @param {number} start\n * @param {number} end\n * @return {string}\n */\n substring(start, end) {\n if (this.matcherInput.isUTF8Encoding()) {\n return Utils.utf8ByteArrayToString(this.matcherInput.asBytes().slice(start, end))\n }\n return this.matcherInput.asCharSequence().substring(start, end).toString()\n }\n\n /**\n * Helper for Pattern: return input length.\n * @return {number}\n */\n inputLength() {\n return this.matcherInputLength\n }\n\n /**\n * Appends to result two strings: the text from the append position up to the beginning of the\n * most recent match, and then the replacement with submatch groups substituted for references of\n * the form {@code $n}, where {@code n} is the group number in decimal. It advances the append\n * position to where the most recent match ended.\n *\n * <p>\n * To embed a literal {@code $}, use \\$ (actually {@code \"\\\\$\"} with string escapes). The escape\n * is only necessary when {@code $} is followed by a digit, but it is always allowed. Only\n * {@code $} and {@code \\} need escaping, but any character can be escaped.\n *\n * <p>\n * The group number {@code n} in {@code $n} is always at least one digit and expands to use more\n * digits as long as the resulting number is a valid group number for this pattern. To cut it off\n * earlier, escape the first digit that should not be used.\n *\n * @param sb the {@link StringBuilder} to append to\n * @param replacement the replacement string\n * @return the {@code Matcher} itself, for chained method calls\n * @throws IllegalStateException if there was no most recent match\n * @throws IndexOutOfBoundsException if replacement refers to an invalid group\n */\n appendReplacement(replacement, perlMode = false) {\n let res = ''\n const s = this.start()\n const e = this.end()\n if (this.appendPos < s) {\n res += this.substring(this.appendPos, s)\n }\n this.appendPos = e\n res += perlMode\n ? this.appendReplacementInternalPerl(replacement)\n : this.appendReplacementInternal(replacement)\n return res\n }\n\n appendReplacementInternal(replacement) {\n let res = ''\n let last = 0\n const m = replacement.length\n\n for (let i = 0; i < m - 1; i++) {\n if (replacement.codePointAt(i) === Codepoint.CODES.get('\\\\')) {\n if (last < i) {\n res += replacement.substring(last, i)\n }\n\n i++\n last = i\n continue\n }\n\n if (replacement.codePointAt(i) === Codepoint.CODES.get('$')) {\n let c = replacement.codePointAt(i + 1)\n\n if (Codepoint.CODES.get('0') <= c && c <= Codepoint.CODES.get('9')) {\n let n = c - Codepoint.CODES.get('0')\n if (last < i) {\n res += replacement.substring(last, i)\n }\n\n for (i += 2; i < m; i++) {\n c = replacement.codePointAt(i)\n if (\n c < Codepoint.CODES.get('0') ||\n c > Codepoint.CODES.get('9') ||\n n * 10 + c - Codepoint.CODES.get('0') > this.patternGroupCount\n ) {\n break\n }\n n = n * 10 + c - Codepoint.CODES.get('0')\n }\n\n if (n > this.patternGroupCount) {\n throw new RE2JSGroupException(`n > number of groups: ${n}`)\n }\n\n const group = this.group(n)\n if (group !== null) {\n res += group\n }\n\n last = i\n i--\n continue\n } else if (c === Codepoint.CODES.get('{')) {\n if (last < i) {\n res += replacement.substring(last, i)\n }\n\n i++\n let j = i + 1\n while (\n j < replacement.length &&\n replacement.codePointAt(j) !== Codepoint.CODES.get('}') &&\n replacement.codePointAt(j) !== Codepoint.CODES.get(' ')\n ) {\n j++\n }\n\n if (j === replacement.length || replacement.codePointAt(j) !== Codepoint.CODES.get('}')) {\n throw new RE2JSGroupException(\"named capture group is missing trailing '}'\")\n }\n\n const groupName = replacement.substring(i + 1, j)\n res += this.group(groupName)\n last = j + 1\n }\n }\n }\n\n if (last < m) {\n res += replacement.substring(last, m)\n }\n\n return res\n }\n\n appendReplacementInternalPerl(replacement) {\n let res = ''\n let last = 0\n const m = replacement.length\n\n for (let i = 0; i < m - 1; i++) {\n if (replacement.codePointAt(i) === Codepoint.CODES.get('$')) {\n let c = replacement.codePointAt(i + 1)\n\n if (Codepoint.CODES.get('$') === c) {\n if (last < i) {\n res += replacement.substring(last, i)\n }\n\n res += '$'\n i++\n last = i + 1\n continue\n } else if (Codepoint.CODES.get('&') === c) {\n if (last < i) {\n res += replacement.substring(last, i)\n }\n\n const group = this.group(0)\n if (group !== null) {\n res += group\n } else {\n res += '$&'\n }\n i++\n last = i + 1\n continue\n } else if (Codepoint.CODES.get('1') <= c && c <= Codepoint.CODES.get('9')) {\n let n = c - Codepoint.CODES.get('0')\n if (last < i) {\n res += replacement.substring(last, i)\n }\n\n for (i += 2; i < m; i++) {\n c = replacement.codePointAt(i)\n if (\n c < Codepoint.CODES.get('0') ||\n c > Codepoint.CODES.get('9') ||\n n * 10 + c - Codepoint.CODES.get('0') > this.patternGroupCount\n ) {\n break\n }\n n = n * 10 + c - Codepoint.CODES.get('0')\n }\n\n if (n > this.patternGroupCount) {\n res += `$${n}`\n last = i\n i--\n continue\n }\n\n const group = this.group(n)\n if (group !== null) {\n res += group\n }\n\n last = i\n i--\n continue\n } else if (c === Codepoint.CODES.get('<')) {\n if (last < i) {\n res += replacement.substring(last, i)\n }\n\n i++\n let j = i + 1\n while (\n j < replacement.length &&\n replacement.codePointAt(j) !== Codepoint.CODES.get('>') &&\n replacement.codePointAt(j) !== Codepoint.CODES.get(' ')\n ) {\n j++\n }\n\n if (j === replacement.length || replacement.codePointAt(j) !== Codepoint.CODES.get('>')) {\n res += replacement.substring(i - 1, j + 1)\n last = j + 1\n continue\n }\n\n const groupName = replacement.substring(i + 1, j)\n if (Object.prototype.hasOwnProperty.call(this.namedGroups, groupName)) {\n res += this.group(groupName)\n } else {\n res += `$<${groupName}>`\n }\n\n last = j + 1\n }\n }\n }\n\n if (last < m) {\n res += replacement.substring(last, m)\n }\n\n return res\n }\n\n /**\n * Return the substring of the input from the append position to the end of the\n * input.\n *\n */\n appendTail() {\n return this.substring(this.appendPos, this.matcherInputLength)\n }\n\n /**\n * Returns the input with all matches replaced by {@code replacement}, interpreted as for\n * {@code appendReplacement}.\n *\n * @param {string} replacement the replacement string\n * @return {string} the input string with the matches replaced\n * @throws IndexOutOfBoundsException if replacement refers to an invalid group and perlMode is false\n */\n replaceAll(replacement, perlMode = false) {\n return this.replace(replacement, true, perlMode)\n }\n\n /**\n * Returns the input with the first match replaced by {@code replacement}, interpreted as for\n * {@code appendReplacement}.\n *\n * @param {string} replacement the replacement string\n * @return {string} the input string with the first match replaced\n * @throws IndexOutOfBoundsException if replacement refers to an invalid group and perlMode is false\n */\n replaceFirst(replacement, perlMode = false) {\n return this.replace(replacement, false, perlMode)\n }\n\n /**\n * Helper: replaceAll/replaceFirst hybrid.\n * @param {string} replacement\n * @param {boolean} all\n * @return {string}\n * @private\n */\n replace(replacement, all, perlMode = false) {\n let res = ''\n\n this.reset()\n while (this.find()) {\n res += this.appendReplacement(replacement, perlMode)\n if (!all) {\n break\n }\n }\n\n res += this.appendTail()\n return res\n }\n}\n\nexport { Matcher }\n","import { Utils } from './Utils'\n/**\n * MachineInput abstracts different representations of the input text supplied to the Machine. It\n * provides one-character lookahead.\n */\nclass MachineInputBase {\n static EOF() {\n return -1 << 3\n }\n\n // can we look ahead without losing info?\n canCheckPrefix() {\n return true\n }\n\n // Returns the end position in the same units as step().\n endPos() {\n return this.end\n }\n}\n\n// An implementation of MachineInput for UTF-8 byte arrays.\n// |pos| and |width| are byte indices.\nclass MachineUTF8Input extends MachineInputBase {\n constructor(bytes, start = 0, end = bytes.length) {\n super()\n this.bytes = bytes\n this.start = start\n this.end = end\n }\n\n // Returns the rune at the specified index; the units are\n // unspecified, but could be UTF-8 byte, UTF-16 char, or rune\n // indices. Returns the width (in the same units) of the rune in\n // the lower 3 bits, and the rune (Unicode code point) in the high\n // bits. Never negative, except for EOF which is represented as -1\n // << 3 | 0.\n step(i) {\n i += this.start\n if (i >= this.end) {\n return MachineInputBase.EOF()\n }\n let x = this.bytes[i++] & 255\n if ((x & 128) === 0) {\n return (x << 3) | 1\n } else if ((x & 224) === 192) {\n x = x & 31\n if (i >= this.end) {\n return MachineInputBase.EOF()\n }\n x = (x << 6) | (this.bytes[i++] & 63)\n return (x << 3) | 2\n } else if ((x & 240) === 224) {\n x = x & 15\n if (i + 1 >= this.end) {\n return MachineInputBase.EOF()\n }\n x = (x << 6) | (this.bytes[i++] & 63)\n x = (x << 6) | (this.bytes[i++] & 63)\n return (x << 3) | 3\n } else {\n x = x & 7\n if (i + 2 >= this.end) {\n return MachineInputBase.EOF()\n }\n x = (x << 6) | (this.bytes[i++] & 63)\n x = (x << 6) | (this.bytes[i++] & 63)\n x = (x << 6) | (this.bytes[i++] & 63)\n return (x << 3) | 4\n }\n }\n\n // Returns the index relative to |pos| at which |re2.prefix| is found\n // in this input stream, or a negative value if not found.\n index(re2, pos) {\n pos += this.start\n const i = this.indexOf(this.bytes, re2.prefixUTF8, pos)\n return i < 0 ? i : i - pos\n }\n\n // Returns a bitmask of EMPTY_* flags.\n context(pos) {\n pos += this.start\n let r1 = -1\n if (pos > this.start && pos <= this.end) {\n let start = pos - 1\n r1 = this.bytes[start--]\n if (r1 >= 128) {\n let lim = pos - 4\n if (lim < this.start) {\n lim = this.start\n }\n while (start >= lim && (this.bytes[start] & 192) === 128) {\n start--\n }\n\n if (start < this.start) {\n start = this.start\n }\n r1 = this.step(start) >> 3\n }\n }\n const r2 = pos < this.end ? this.step(pos) >> 3 : -1\n return Utils.emptyOpContext(r1, r2)\n }\n\n // Returns the index of the first occurrence of array |target| within\n // array |source| after |fromIndex|, or -1 if not found.\n indexOf(source, target, fromIndex = 0) {\n let targetLength = target.length\n if (targetLength === 0) {\n return -1\n }\n\n let sourceLength = source.length\n for (let i = fromIndex; i <= sourceLength - targetLength; i++) {\n for (let j = 0; j < targetLength; j++) {\n if (source[i + j] !== target[j]) {\n break\n } else if (j === targetLength - 1) {\n return i\n }\n }\n }\n\n return -1\n }\n}\n\n// |pos| and |width| are in JS \"char\" units.\nclass MachineUTF16Input extends MachineInputBase {\n constructor(charSequence, start = 0, end = charSequence.length) {\n super()\n this.charSequence = charSequence\n this.start = start\n this.end = end\n }\n\n // Returns the rune at the specified index; the units are\n // unspecified, but could be UTF-8 byte, UTF-16 char, or rune\n // indices. Returns the width (in the same units) of the rune in\n // the lower 3 bits, and the rune (Unicode code point) in the high\n // bits. Never negative, except for EOF which is represented as -1\n // << 3 | 0.\n step(pos) {\n pos += this.start\n if (pos < this.end) {\n const rune = this.charSequence.codePointAt(pos)\n return (rune << 3) | Utils.charCount(rune)\n } else {\n return MachineInputBase.EOF()\n }\n }\n\n // Returns the index relative to |pos| at which |re2.prefix| is found\n // in this input stream, or a negative value if not found.\n index(re2, pos) {\n pos += this.start\n const i = this.charSequence.indexOf(re2.prefix, pos)\n return i < 0 ? i : i - pos\n }\n\n // Returns a bitmask of EMPTY_* flags.\n context(pos) {\n pos += this.start\n const r1 =\n pos > 0 && pos <= this.charSequence.length ? this.charSequence.codePointAt(pos - 1) : -1\n const r2 = pos < this.charSequence.length ? this.charSequence.codePointAt(pos) : -1\n return Utils.emptyOpContext(r1, r2)\n }\n}\n\nclass MachineInput {\n static fromUTF8(bytes, start = 0, end = bytes.length) {\n return new MachineUTF8Input(bytes, start, end)\n }\n\n static fromUTF16(charSequence, start = 0, end = charSequence.length) {\n return new MachineUTF16Input(charSequence, start, end)\n }\n}\n\nexport { MachineInputBase, MachineInput }\n","import { Codepoint } from './Codepoint'\nimport { RE2Flags } from './RE2Flags'\nimport { Unicode } from './Unicode'\nimport { Utils } from './Utils'\nimport { createEnum } from './helpers'\n\n/**\n * Regular expression abstract syntax tree. Produced by parser, used by compiler. NB, this\n * corresponds to {@code syntax.regexp} in the Go implementation; Go's {@code regexp} is called\n * {@code RE2} in Java.\n */\nexport class Regexp {\n static Op = createEnum([\n 'NO_MATCH', // Matches no strings.\n 'EMPTY_MATCH', // Matches empty string.\n 'LITERAL', // Matches runes[] sequence\n 'CHAR_CLASS', // Matches Runes interpreted as range pair list\n 'ANY_CHAR_NOT_NL', // Matches any character except '\\n'\n 'ANY_CHAR', // Matches any character\n 'BEGIN_LINE', // Matches empty string at end of line\n 'END_LINE', // Matches empty string at end of line\n 'BEGIN_TEXT', // Matches empty string at beginning of text\n 'END_TEXT', // Matches empty string at end of text\n 'WORD_BOUNDARY', // Matches word boundary `\\b`\n 'NO_WORD_BOUNDARY', // Matches word non-boundary `\\B`\n 'CAPTURE', // Capturing subexpr with index cap, optional name name\n 'STAR', // Matches subs[0] zero or more times.\n 'PLUS', // Matches subs[0] one or more times.\n 'QUEST', // Matches subs[0] zero or one times.\n 'REPEAT', // Matches subs[0] [min, max] times; max=-1 => no limit.\n 'CONCAT', // Matches concatenation of subs[]\n 'ALTERNATE', // Matches union of subs[]\n // Pseudo ops, used internally by Parser for parsing stack:\n 'LEFT_PAREN',\n 'VERTICAL_BAR'\n ])\n\n static isPseudoOp(op) {\n return op >= Regexp.Op.LEFT_PAREN\n }\n\n static emptySubs() {\n return []\n }\n\n static quoteIfHyphen(rune) {\n if (rune === Codepoint.CODES.get('-')) {\n return '\\\\'\n }\n return ''\n }\n\n static fromRegexp(re) {\n const regex = new Regexp(re.op)\n regex.flags = re.flags\n regex.subs = re.subs\n regex.runes = re.runes\n regex.cap = re.cap\n regex.min = re.min\n regex.max = re.max\n regex.name = re.name\n regex.namedGroups = re.namedGroups\n return regex\n }\n\n constructor(op) {\n this.op = op // operator\n this.flags = 0 // bitmap of parse flags\n // subexpressions, if any. Never null.\n // subs[0] is used as the freelist.\n this.subs = Regexp.emptySubs()\n this.runes = null // matched runes, for LITERAL, CHAR_CLASS\n this.min = 0 // min for REPEAT\n this.max = 0 // max for REPEAT\n this.cap = 0 // capturing index, for CAPTURE\n this.name = null // capturing name, for CAPTURE\n this.namedGroups = {} // map of group name -> capturing index\n }\n\n reinit() {\n this.flags = 0\n this.subs = Regexp.emptySubs()\n this.runes = null\n this.cap = 0\n this.min = 0\n this.max = 0\n this.name = null\n this.namedGroups = {}\n }\n\n toString() {\n return this.appendTo()\n }\n\n // appendTo() appends the Perl syntax for |this| regular expression to out\n appendTo() {\n let out = ''\n switch (this.op) {\n case Regexp.Op.NO_MATCH:\n out += '[^\\\\x00-\\\\x{10FFFF}]'\n break\n case Regexp.Op.EMPTY_MATCH:\n out += '(?:)'\n break\n case Regexp.Op.STAR:\n case Regexp.Op.PLUS:\n case Regexp.Op.QUEST:\n case Regexp.Op.REPEAT: {\n const sub = this.subs[0]\n if (sub.op > Regexp.Op.CAPTURE || (sub.op === Regexp.Op.LITERAL && sub.runes.length > 1)) {\n out += `(?:${sub.appendTo()})`\n } else {\n out += sub.appendTo()\n }\n switch (this.op) {\n case Regexp.Op.STAR:\n out += '*'\n break\n case Regexp.Op.PLUS:\n out += '+'\n break\n case Regexp.Op.QUEST:\n out += '?'\n break\n case Regexp.Op.REPEAT:\n out += `{${this.min}`\n if (this.min !== this.max) {\n out += ','\n if (this.max >= 0) {\n out += this.max\n }\n }\n out += '}'\n break\n }\n if ((this.flags & RE2Flags.NON_GREEDY) !== 0) {\n out += '?'\n }\n break\n }\n\n case Regexp.Op.CONCAT: {\n for (let sub of this.subs) {\n if (sub.op === Regexp.Op.ALTERNATE) {\n out += `(?:${sub.appendTo()})`\n } else {\n out += sub.appendTo()\n }\n }\n break\n }\n\n case Regexp.Op.ALTERNATE: {\n let sep = ''\n for (let sub of this.subs) {\n out += sep\n sep = '|'\n out += sub.appendTo()\n }\n break\n }\n\n case Regexp.Op.LITERAL:\n if ((this.flags & RE2Flags.FOLD_CASE) !== 0) {\n out += '(?i:'\n }\n for (let rune of this.runes) {\n out += Utils.escapeRune(rune)\n }\n if ((this.flags & RE2Flags.FOLD_CASE) !== 0) {\n out += ')'\n }\n break\n case Regexp.Op.ANY_CHAR_NOT_NL:\n out += '(?-s:.)'\n break\n case Regexp.Op.ANY_CHAR:\n out += '(?s:.)'\n break\n case Regexp.Op.CAPTURE:\n if (this.name === null || this.name.length === 0) {\n out += '('\n } else {\n out += `(?P<${this.name}>`\n }\n if (this.subs[0].op !== Regexp.Op.EMPTY_MATCH) {\n out += this.subs[0].appendTo()\n }\n out += ')'\n break\n case Regexp.Op.BEGIN_TEXT:\n out += '\\\\A'\n break\n case Regexp.Op.END_TEXT:\n if ((this.flags & RE2Flags.WAS_DOLLAR) !== 0) {\n out += '(?-m:$)'\n } else {\n out += '\\\\z'\n }\n break\n case Regexp.Op.BEGIN_LINE:\n out += '^'\n break\n case Regexp.Op.END_LINE:\n out += '$'\n break\n case Regexp.Op.WORD_BOUNDARY:\n out += '\\\\b'\n break\n case Regexp.Op.NO_WORD_BOUNDARY:\n out += '\\\\B'\n break\n case Regexp.Op.CHAR_CLASS:\n if (this.runes.length % 2 !== 0) {\n out += '[invalid char class]'\n break\n }\n\n out += '['\n if (this.runes.length === 0) {\n out += '^\\\\x00-\\\\x{10FFFF}'\n } else if (this.runes[0] === 0 && this.runes[this.runes.length - 1] === Unicode.MAX_RUNE) {\n out += '^'\n\n for (let i = 1; i < this.runes.length - 1; i += 2) {\n const lo = this.runes[i] + 1\n const hi = this.runes[i + 1] - 1\n\n out += Regexp.quoteIfHyphen(lo)\n out += Utils.escapeRune(lo)\n if (lo !== hi) {\n out += '-'\n out += Regexp.quoteIfHyphen(hi)\n out += Utils.escapeRune(hi)\n }\n }\n } else {\n for (let i = 0; i < this.runes.length; i += 2) {\n const lo = this.runes[i]\n const hi = this.runes[i + 1]\n out += Regexp.quoteIfHyphen(lo)\n out += Utils.escapeRune(lo)\n if (lo !== hi) {\n out += '-'\n out += Regexp.quoteIfHyphen(hi)\n out += Utils.escapeRune(hi)\n }\n }\n }\n out += ']'\n break\n default:\n out += this.op\n break\n }\n return out\n }\n\n // maxCap() walks the regexp to find the maximum capture index.\n maxCap() {\n let m = 0\n if (this.op === Regexp.Op.CAPTURE) {\n m = this.cap\n }\n if (this.subs !== null) {\n for (let sub of this.subs) {\n const n = sub.maxCap()\n if (m < n) {\n m = n\n }\n }\n }\n return m\n }\n\n // equals() returns true if this and that have identical structure.\n equals(that) {\n if (!(that !== null && that instanceof Regexp)) {\n return false\n }\n if (this.op !== that.op) {\n return false\n }\n switch (this.op) {\n case Regexp.Op.END_TEXT: {\n if ((this.flags & RE2Flags.WAS_DOLLAR) !== (that.flags & RE2Flags.WAS_DOLLAR)) {\n return false\n }\n break\n }\n case Regexp.Op.LITERAL:\n case Regexp.Op.CHAR_CLASS: {\n if (this.runes === null && that.runes === null) {\n break\n }\n if (this.runes === null || that.runes === null) {\n return false\n }\n if (this.runes.length !== that.runes.length) {\n return false\n }\n for (let i = 0; i < this.runes.length; i++) {\n if (this.runes[i] !== that.runes[i]) {\n return false\n }\n }\n break\n }\n case Regexp.Op.ALTERNATE:\n case Regexp.Op.CONCAT: {\n if (this.subs.length !== that.subs.length) {\n return false\n }\n for (let i = 0; i < this.subs.length; ++i) {\n if (!this.subs[i].equals(that.subs[i])) {\n return false\n }\n }\n break\n }\n case Regexp.Op.STAR:\n case Regexp.Op.PLUS:\n case Regexp.Op.QUEST: {\n if (\n (this.flags & RE2Flags.NON_GREEDY) !== (that.flags & RE2Flags.NON_GREEDY) ||\n !this.subs[0].equals(that.subs[0])\n ) {\n return false\n }\n break\n }\n case Regexp.Op.REPEAT: {\n if (\n (this.flags & RE2Flags.NON_GREEDY) !== (that.flags & RE2Flags.NON_GREEDY) ||\n this.min !== that.min ||\n this.max !== that.max ||\n !this.subs[0].equals(that.subs[0])\n ) {\n return false\n }\n break\n }\n case Regexp.Op.CAPTURE: {\n if (\n this.cap !== that.cap ||\n (this.name === null ? that.name !== null : this.name !== that.name) ||\n !this.subs[0].equals(that.subs[0])\n ) {\n return false\n }\n break\n }\n }\n return true\n }\n}\n","import { RE2Flags } from './RE2Flags'\nimport { Utils } from './Utils'\nimport { Unicode } from './Unicode'\n/**\n * A single instruction in the regular expression virtual machine.\n *\n * @see http://swtch.com/~rsc/regexp/regexp2.html\n */\nclass Inst {\n static ALT = 1\n static ALT_MATCH = 2\n static CAPTURE = 3\n static EMPTY_WIDTH = 4\n static FAIL = 5\n static MATCH = 6\n static NOP = 7\n static RUNE = 8\n static RUNE1 = 9\n static RUNE_ANY = 10\n static RUNE_ANY_NOT_NL = 11\n\n static isRuneOp(op) {\n return Inst.RUNE <= op && op <= Inst.RUNE_ANY_NOT_NL\n }\n\n // Returns an RE2 expression matching exactly |runes|.\n static escapeRunes(runes) {\n let out = '\"'\n for (let rune of runes) {\n out += Utils.escapeRune(rune)\n }\n out += '\"'\n return out\n }\n\n constructor(op) {\n this.op = op\n this.out = 0 // all but MATCH, FAIL\n this.arg = 0 // ALT, ALT_MATCH, CAPTURE, EMPTY_WIDTH\n // length==1 => exact match\n // otherwise a list of [lo,hi] pairs. hi is *inclusive*.\n this.runes = null\n }\n\n // MatchRune returns true if the instruction matches (and consumes) r.\n // It should only be called when op == InstRune.\n matchRune(r) {\n // Special case: single-rune slice is from literal string, not char\n // class.\n if (this.runes.length === 1) {\n const r0 = this.runes[0]\n if ((this.arg & RE2Flags.FOLD_CASE) !== 0) {\n return Unicode.equalsIgnoreCase(r0, r)\n }\n return r === r0\n }\n // Peek at the first few pairs.\n // Should handle ASCII well.\n for (let j = 0; j < this.runes.length && j <= 8; j += 2) {\n if (r < this.runes[j]) {\n return false\n }\n if (r <= this.runes[j + 1]) {\n return true\n }\n }\n // Otherwise binary search.\n let lo = 0\n let hi = (this.runes.length / 2) | 0\n while (lo < hi) {\n const m = lo + (((hi - lo) / 2) | 0)\n const c = this.runes[2 * m]\n if (c <= r) {\n if (r <= this.runes[2 * m + 1]) {\n return true\n }\n lo = m + 1\n } else {\n hi = m\n }\n }\n\n return false\n }\n /**\n *\n * @return {string}\n */\n toString() {\n switch (this.op) {\n case Inst.ALT:\n return `alt -> ${this.out}, ${this.arg}`\n case Inst.ALT_MATCH:\n return `altmatch -> ${this.out}, ${this.arg}`\n case Inst.CAPTURE:\n return `cap ${this.arg} -> ${this.out}`\n case Inst.EMPTY_WIDTH:\n return `empty ${this.arg} -> ${this.out}`\n case Inst.MATCH:\n return 'match'\n case Inst.FAIL:\n return 'fail'\n case Inst.NOP:\n return `nop -> ${this.out}`\n case Inst.RUNE:\n if (this.runes === null) {\n return 'rune <null>'\n }\n return [\n 'rune ',\n Inst.escapeRunes(this.runes),\n (this.arg & RE2Flags.FOLD_CASE) !== 0 ? '/i' : '',\n ' -> ',\n this.out\n ].join('')\n case Inst.RUNE1:\n return `rune1 ${Inst.escapeRunes(this.runes)} -> ${this.out}`\n case Inst.RUNE_ANY:\n return `any -> ${this.out}`\n case Inst.RUNE_ANY_NOT_NL:\n return `anynotnl -> ${this.out}`\n default:\n throw new Error('unhandled case in Inst.toString')\n }\n }\n}\n\nexport { Inst }\n","import { RE2Flags } from './RE2Flags'\nimport { Inst } from './Inst'\n/**\n * A Prog is a compiled regular expression program.\n */\nclass Prog {\n constructor() {\n this.inst = []\n this.start = 0 // index of start instruction\n // number of CAPTURE insts in re\n // 2 => implicit ( and ) for whole match $0\n this.numCap = 2\n }\n\n // Returns the instruction at the specified pc.\n // Precondition: pc > 0 && pc < numInst().\n getInst(pc) {\n return this.inst[pc]\n }\n\n // Returns the number of instructions in this program.\n numInst() {\n return this.inst.length\n }\n\n // Adds a new instruction to this program, with operator |op| and |pc| equal\n // to |numInst()|.\n addInst(op) {\n this.inst.push(new Inst(op))\n }\n\n // skipNop() follows any no-op or capturing instructions and returns the\n // resulting instruction.\n skipNop(pc) {\n let i = this.inst[pc]\n\n while (i.op === Inst.NOP || i.op === Inst.CAPTURE) {\n i = this.inst[pc]\n pc = i.out\n }\n\n return i\n }\n\n // prefix() returns a pair of a literal string that all matches for the\n // regexp must start with, and a boolean which is true if the prefix is the\n // entire match. The string is returned by appending to |prefix|.\n prefix() {\n let prefix = ''\n let i = this.skipNop(this.start)\n\n if (!Inst.isRuneOp(i.op) || i.runes.length !== 1) {\n return [i.op === Inst.MATCH, prefix]\n }\n\n while (Inst.isRuneOp(i.op) && i.runes.length === 1 && (i.arg & RE2Flags.FOLD_CASE) === 0) {\n prefix += String.fromCodePoint(i.runes[0])\n i = this.skipNop(i.out)\n }\n\n return [i.op === Inst.MATCH, prefix]\n }\n\n // startCond() returns the leading empty-width conditions that must be true\n // in any match. It returns -1 (all bits set) if no matches are possible.\n startCond() {\n let flag = 0\n let pc = this.start\n loop: for (;;) {\n const i = this.inst[pc]\n switch (i.op) {\n case Inst.EMPTY_WIDTH:\n flag |= i.arg\n break\n case Inst.FAIL:\n return -1\n case Inst.CAPTURE:\n case Inst.NOP:\n break\n default:\n break loop\n }\n pc = i.out\n }\n return flag\n }\n\n // --- Patch list ---\n\n // A patchlist is a list of instruction pointers that need to be filled in\n // (patched). Because the pointers haven't been filled in yet, we can reuse\n // their storage to hold the list. It's kind of sleazy, but works well in\n // practice. See http://swtch.com/~rsc/regexp/regexp1.html for inspiration.\n\n // These aren't really pointers: they're integers, so we can reinterpret them\n // this way without using package unsafe. A value l denotes p.inst[l>>1].out\n // (l&1==0) or .arg (l&1==1). l == 0 denotes the empty list, okay because we\n // start every program with a fail instruction, so we'll never want to point\n // at its output link.\n\n next(l) {\n const i = this.inst[l >> 1]\n if ((l & 1) === 0) {\n return i.out\n }\n return i.arg\n }\n\n patch(l, val) {\n while (l !== 0) {\n const i = this.inst[l >> 1]\n if ((l & 1) === 0) {\n l = i.out\n i.out = val\n } else {\n l = i.arg\n i.arg = val\n }\n }\n }\n\n append(l1, l2) {\n if (l1 === 0) {\n return l2\n }\n\n if (l2 === 0) {\n return l1\n }\n\n let last = l1\n for (;;) {\n const next = this.next(last)\n if (next === 0) {\n break\n }\n last = next\n }\n\n const i = this.inst[last >> 1]\n if ((last & 1) === 0) {\n i.out = l2\n } else {\n i.arg = l2\n }\n\n return l1\n }\n /**\n *\n * @return {string}\n */\n toString() {\n let out = ''\n for (let pc = 0; pc < this.inst.length; pc++) {\n const len = out.length\n out += pc\n if (pc === this.start) {\n out += '*'\n }\n out += ' '.substring(out.length - len)\n out += this.inst[pc]\n out += '\\n'\n }\n return out\n }\n}\n\nexport { Prog }\n","import { Codepoint } from './Codepoint'\nimport { RE2Flags } from './RE2Flags'\nimport { Unicode } from './Unicode'\nimport { Utils } from './Utils'\nimport { Regexp } from './Regexp'\nimport { Inst } from './Inst'\nimport { Prog } from './Prog'\nimport { RE2JSCompileException } from './exceptions'\n\n/**\n * A fragment of a compiled regular expression program.\n *\n * @see http://swtch.com/~rsc/regexp/regexp1.html\n * @class\n */\nclass Frag {\n constructor(i = 0, out = 0, nullable = false) {\n this.i = i // an instruction address (pc).\n this.out = out // a patch list; see explanation in Prog.js\n this.nullable = nullable // whether the fragment can match the empty string\n }\n}\n/**\n * Compiler from {@code Regexp} (RE2 abstract syntax) to {@code RE2} (compiled regular expression).\n *\n * The only entry point is {@link #compileRegexp}.\n */\nclass Compiler {\n static ANY_RUNE_NOT_NL() {\n return [0, Codepoint.CODES.get('\\n') - 1, Codepoint.CODES.get('\\n') + 1, Unicode.MAX_RUNE]\n }\n\n static ANY_RUNE() {\n return [0, Unicode.MAX_RUNE]\n }\n\n static compileRegexp(re) {\n const c = new Compiler()\n const f = c.compile(re)\n c.prog.patch(f.out, c.newInst(Inst.MATCH).i)\n c.prog.start = f.i\n return c.prog\n }\n\n constructor() {\n this.prog = new Prog()\n this.newInst(Inst.FAIL)\n }\n\n newInst(op) {\n this.prog.addInst(op)\n return new Frag(this.prog.numInst() - 1, 0, true)\n }\n\n // Returns a no-op fragment. Sometimes unavoidable.\n nop() {\n const f = this.newInst(Inst.NOP)\n f.out = f.i << 1\n return f\n }\n\n fail() {\n return new Frag()\n }\n\n // Given fragment a, returns (a) capturing as \\n.\n // Given a fragment a, returns a fragment with capturing parens around a.\n cap(arg) {\n const f = this.newInst(Inst.CAPTURE)\n f.out = f.i << 1\n this.prog.getInst(f.i).arg = arg\n if (this.prog.numCap < arg + 1) {\n this.prog.numCap = arg + 1\n }\n return f\n }\n\n // Given fragments a and b, returns ab; a|b\n cat(f1, f2) {\n // concat of failure is failure\n if (f1.i === 0 || f2.i === 0) {\n return this.fail()\n }\n // eslint-disable-next-line no-warning-comments\n // TODO(rsc): elide nop\n this.prog.patch(f1.out, f2.i)\n return new Frag(f1.i, f2.out, f1.nullable && f2.nullable)\n }\n\n // Given fragments for a and b, returns fragment for a|b.\n alt(f1, f2) {\n // alt of failure is other\n if (f1.i === 0) {\n return f2\n }\n if (f2.i === 0) {\n return f1\n }\n const f = this.newInst(Inst.ALT)\n const i = this.prog.getInst(f.i)\n i.out = f1.i\n i.arg = f2.i\n f.out = this.prog.append(f1.out, f2.out)\n f.nullable = f1.nullable || f2.nullable\n return f\n }\n\n // loop returns the fragment for the main loop of a plus or star.\n // For plus, it can be used directly. with f1.i as the entry.\n // For star, it can be used directly when f1 can't match an empty string.\n // (When f1 can match an empty string, f1* must be implemented as (f1+)?\n // to get the priority match order correct.)\n loop(f1, nongreedy) {\n const f = this.newInst(Inst.ALT)\n const i = this.prog.getInst(f.i)\n if (nongreedy) {\n i.arg = f1.i\n f.out = f.i << 1\n } else {\n i.out = f1.i\n f.out = (f.i << 1) | 1\n }\n this.prog.patch(f1.out, f.i)\n return f\n }\n\n // Given a fragment for a, returns a fragment for a? or a?? (if nongreedy)\n quest(f1, nongreedy) {\n const f = this.newInst(Inst.ALT)\n const i = this.prog.getInst(f.i)\n if (nongreedy) {\n i.arg = f1.i\n f.out = f.i << 1\n } else {\n i.out = f1.i\n f.out = (f.i << 1) | 1\n }\n f.out = this.prog.append(f.out, f1.out)\n return f\n }\n\n // Given a fragment a, returns a fragment for a* or a*? (if nongreedy)\n star(f1, nongreedy) {\n if (f1.nullable) {\n return this.quest(this.plus(f1, nongreedy), nongreedy)\n }\n return this.loop(f1, nongreedy)\n }\n\n // Given a fragment for a, returns a fragment for a+ or a+? (if nongreedy)\n plus(f1, nongreedy) {\n return new Frag(f1.i, this.loop(f1, nongreedy).out, f1.nullable)\n }\n\n // op is a bitmask of EMPTY_* flags.\n empty(op) {\n const f = this.newInst(Inst.EMPTY_WIDTH)\n this.prog.getInst(f.i).arg = op\n f.out = f.i << 1\n return f\n }\n\n // flags : parser flags\n rune(runes, flags) {\n const f = this.newInst(Inst.RUNE)\n f.nullable = false\n const i = this.prog.getInst(f.i)\n i.runes = runes\n flags &= RE2Flags.FOLD_CASE\n if (runes.length !== 1 || Unicode.simpleFold(runes[0]) === runes[0]) {\n flags &= ~RE2Flags.FOLD_CASE\n }\n i.arg = flags\n f.out = f.i << 1\n if (\n ((flags & RE2Flags.FOLD_CASE) === 0 && runes.length === 1) ||\n (runes.length === 2 && runes[0] === runes[1])\n ) {\n i.op = Inst.RUNE1\n } else if (runes.length === 2 && runes[0] === 0 && runes[1] === Unicode.MAX_RUNE) {\n i.op = Inst.RUNE_ANY\n } else if (\n runes.length === 4 &&\n runes[0] === 0 &&\n runes[1] === Codepoint.CODES.get('\\n') - 1 &&\n runes[2] === Codepoint.CODES.get('\\n') + 1 &&\n runes[3] === Unicode.MAX_RUNE\n ) {\n i.op = Inst.RUNE_ANY_NOT_NL\n }\n return f\n }\n\n compile(re) {\n switch (re.op) {\n case Regexp.Op.NO_MATCH:\n return this.fail()\n case Regexp.Op.EMPTY_MATCH:\n return this.nop()\n case Regexp.Op.LITERAL:\n if (re.runes.length === 0) {\n return this.nop()\n } else {\n let f = null\n for (let r of re.runes) {\n const f1 = this.rune([r], re.flags)\n f = f === null ? f1 : this.cat(f, f1)\n }\n return f\n }\n case Regexp.Op.CHAR_CLASS:\n return this.rune(re.runes, re.flags)\n case Regexp.Op.ANY_CHAR_NOT_NL:\n return this.rune(Compiler.ANY_RUNE_NOT_NL(), 0)\n case Regexp.Op.ANY_CHAR:\n return this.rune(Compiler.ANY_RUNE(), 0)\n case Regexp.Op.BEGIN_LINE:\n return this.empty(Utils.EMPTY_BEGIN_LINE)\n case Regexp.Op.END_LINE:\n return this.empty(Utils.EMPTY_END_LINE)\n case Regexp.Op.BEGIN_TEXT:\n return this.empty(Utils.EMPTY_BEGIN_TEXT)\n case Regexp.Op.END_TEXT:\n return this.empty(Utils.EMPTY_END_TEXT)\n case Regexp.Op.WORD_BOUNDARY:\n return this.empty(Utils.EMPTY_WORD_BOUNDARY)\n case Regexp.Op.NO_WORD_BOUNDARY:\n return this.empty(Utils.EMPTY_NO_WORD_BOUNDARY)\n case Regexp.Op.CAPTURE: {\n const bra = this.cap(re.cap << 1)\n const sub = this.compile(re.subs[0])\n const ket = this.cap((re.cap << 1) | 1)\n return this.cat(this.cat(bra, sub), ket)\n }\n case Regexp.Op.STAR:\n return this.star(this.compile(re.subs[0]), (re.flags & RE2Flags.NON_GREEDY) !== 0)\n case Regexp.Op.PLUS:\n return this.plus(this.compile(re.subs[0]), (re.flags & RE2Flags.NON_GREEDY) !== 0)\n case Regexp.Op.QUEST:\n return this.quest(this.compile(re.subs[0]), (re.flags & RE2Flags.NON_GREEDY) !== 0)\n case Regexp.Op.CONCAT: {\n if (re.subs.length === 0) {\n return this.nop()\n } else {\n let f = null\n for (let sub of re.subs) {\n const f1 = this.compile(sub)\n f = f === null ? f1 : this.cat(f, f1)\n }\n return f\n }\n }\n case Regexp.Op.ALTERNATE: {\n if (re.subs.length === 0) {\n return this.nop()\n } else {\n let f = null\n for (let sub of re.subs) {\n const f1 = this.compile(sub)\n f = f === null ? f1 : this.alt(f, f1)\n }\n return f\n }\n }\n default:\n throw new RE2JSCompileException('regexp: unhandled case in compile')\n }\n }\n}\n\nexport { Compiler }\n","import { RE2Flags } from './RE2Flags'\nimport { Regexp } from './Regexp'\n\nclass Simplify {\n // Simplify returns a regexp equivalent to re but without counted\n // repetitions and with various other simplifications, such as\n // rewriting /(?:a+)+/ to /a+/. The resulting regexp will execute\n // correctly but its string representation will not produce the same\n // parse tree, because capturing parentheses may have been duplicated\n // or removed. For example, the simplified form for /(x){1,2}/ is\n // /(x)(x)?/ but both parentheses capture as $1. The returned regexp\n // may share structure with or be the original.\n static simplify(re) {\n if (re === null) {\n return null\n }\n\n switch (re.op) {\n case Regexp.Op.CAPTURE:\n case Regexp.Op.CONCAT:\n case Regexp.Op.ALTERNATE: {\n let nre = re\n for (let i = 0; i < re.subs.length; i++) {\n const sub = re.subs[i]\n const nsub = Simplify.simplify(sub)\n if (nre === re && nsub !== sub) {\n nre = Regexp.fromRegexp(re)\n nre.runes = null\n nre.subs = re.subs.slice(0, re.subs.length)\n }\n if (nre !== re) {\n nre.subs[i] = nsub\n }\n }\n return nre\n }\n\n case Regexp.Op.STAR:\n case Regexp.Op.PLUS:\n case Regexp.Op.QUEST: {\n const sub = Simplify.simplify(re.subs[0])\n return Simplify.simplify1(re.op, re.flags, sub, re)\n }\n\n case Regexp.Op.REPEAT: {\n // Special special case: x{0} matches the empty string\n // and doesn't even need to consider x.\n if (re.min === 0 && re.max === 0) {\n return new Regexp(Regexp.Op.EMPTY_MATCH)\n }\n // The fun begins.\n const sub = Simplify.simplify(re.subs[0])\n\n // x{n,} means at least n matches of x.\n if (re.max === -1) {\n // Special case: x{0,} is x*.\n if (re.min === 0) {\n return Simplify.simplify1(Regexp.Op.STAR, re.flags, sub, null)\n }\n // Special case: x{1,} is x+.\n if (re.min === 1) {\n return Simplify.simplify1(Regexp.Op.PLUS, re.flags, sub, null)\n }\n // General case: x{4,} is xxxx+.\n const nre = new Regexp(Regexp.Op.CONCAT)\n const subs = []\n for (let i = 0; i < re.min - 1; i++) {\n subs.push(sub)\n }\n subs.push(Simplify.simplify1(Regexp.Op.PLUS, re.flags, sub, null))\n nre.subs = subs.slice(0)\n return nre\n }\n // Special case x{0} handled above.\n\n // Special case: x{1} is just x.\n if (re.min === 1 && re.max === 1) {\n return sub\n }\n\n // General case: x{n,m} means n copies of x and m copies of x?\n // The machine will do less work if we nest the final m copies,\n // so that x{2,5} = xx(x(x(x)?)?)?\n\n // Build leading prefix: xx.\n let prefixSubs = null\n if (re.min > 0) {\n prefixSubs = []\n for (let i = 0; i < re.min; i++) {\n prefixSubs.push(sub)\n }\n }\n\n // Build and attach suffix: (x(x(x)?)?)?\n if (re.max > re.min) {\n let suffix = Simplify.simplify1(Regexp.Op.QUEST, re.flags, sub, null)\n for (let i = re.min + 1; i < re.max; i++) {\n const nre2 = new Regexp(Regexp.Op.CONCAT)\n nre2.subs = [sub, suffix]\n suffix = Simplify.simplify1(Regexp.Op.QUEST, re.flags, nre2, null)\n }\n\n if (prefixSubs === null) {\n return suffix\n }\n\n prefixSubs.push(suffix)\n }\n\n if (prefixSubs !== null) {\n const prefix = new Regexp(Regexp.Op.CONCAT)\n prefix.subs = prefixSubs.slice(0)\n return prefix\n }\n\n // Some degenerate case like min > max or min < max < 0.\n // Handle as impossible match.\n return new Regexp(Regexp.Op.NO_MATCH)\n }\n }\n return re\n }\n\n // simplify1 implements Simplify for the unary OpStar,\n // OpPlus, and OpQuest operators. It returns the simple regexp\n // equivalent to\n //\n // Regexp{Op: op, Flags: flags, Sub: {sub}}\n //\n // under the assumption that sub is already simple, and\n // without first allocating that structure. If the regexp\n // to be returned turns out to be equivalent to re, simplify1\n // returns re instead.\n //\n // simplify1 is factored out of Simplify because the implementation\n // for other operators generates these unary expressions.\n // Letting them call simplify1 makes sure the expressions they\n // generate are simple.\n static simplify1(op, flags, sub, re) {\n // Special case: repeat the empty string as much as\n // you want, but it's still the empty string.\n if (sub.op === Regexp.Op.EMPTY_MATCH) {\n return sub\n }\n\n // The operators are idempotent if the flags match.\n if (op === sub.op && (flags & RE2Flags.NON_GREEDY) === (sub.flags & RE2Flags.NON_GREEDY)) {\n return sub\n }\n\n if (\n re !== null &&\n re.op === op &&\n (re.flags & RE2Flags.NON_GREEDY) === (flags & RE2Flags.NON_GREEDY) &&\n sub === re.subs[0]\n ) {\n return re\n }\n\n re = new Regexp(op)\n re.flags = flags\n re.subs = [sub]\n return re\n }\n}\n\nexport { Simplify }\n","// GENERATED BY tools/scripts/make_perl_groups.pl; DO NOT EDIT.\n// ./tools/scripts/make_perl_groups.pl > src/CharGroup.js\n\nclass CharGroup {\n constructor(sign, cls) {\n this.sign = sign\n this.cls = cls\n }\n}\n\nconst code1 = [0x30, 0x39]\n\nconst code2 = [0x9, 0xa, 0xc, 0xd, 0x20, 0x20]\n\nconst code3 = [0x30, 0x39, 0x41, 0x5a, 0x5f, 0x5f, 0x61, 0x7a]\n\nconst PERL_GROUPS = new Map([\n ['\\\\d', new CharGroup(+1, code1)],\n ['\\\\D', new CharGroup(-1, code1)],\n ['\\\\s', new CharGroup(+1, code2)],\n ['\\\\S', new CharGroup(-1, code2)],\n ['\\\\w', new CharGroup(+1, code3)],\n ['\\\\W', new CharGroup(-1, code3)]\n])\nconst code4 = [0x30, 0x39, 0x41, 0x5a, 0x61, 0x7a]\n\nconst code5 = [0x41, 0x5a, 0x61, 0x7a]\n\nconst code6 = [0x0, 0x7f]\n\nconst code7 = [0x9, 0x9, 0x20, 0x20]\n\nconst code8 = [0x0, 0x1f, 0x7f, 0x7f]\n\nconst code9 = [0x30, 0x39]\n\nconst code10 = [0x21, 0x7e]\n\nconst code11 = [0x61, 0x7a]\n\nconst code12 = [0x20, 0x7e]\n\nconst code13 = [0x21, 0x2f, 0x3a, 0x40, 0x5b, 0x60, 0x7b, 0x7e]\n\nconst code14 = [0x9, 0xd, 0x20, 0x20]\n\nconst code15 = [0x41, 0x5a]\n\nconst code16 = [0x30, 0x39, 0x41, 0x5a, 0x5f, 0x5f, 0x61, 0x7a]\n\nconst code17 = [0x30, 0x39, 0x41, 0x46, 0x61, 0x66]\n\nconst POSIX_GROUPS = new Map([\n ['[:alnum:]', new CharGroup(+1, code4)],\n ['[:^alnum:]', new CharGroup(-1, code4)],\n ['[:alpha:]', new CharGroup(+1, code5)],\n ['[:^alpha:]', new CharGroup(-1, code5)],\n ['[:ascii:]', new CharGroup(+1, code6)],\n ['[:^ascii:]', new CharGroup(-1, code6)],\n ['[:blank:]', new CharGroup(+1, code7)],\n ['[:^blank:]', new CharGroup(-1, code7)],\n ['[:cntrl:]', new CharGroup(+1, code8)],\n ['[:^cntrl:]', new CharGroup(-1, code8)],\n ['[:digit:]', new CharGroup(+1, code9)],\n ['[:^digit:]', new CharGroup(-1, code9)],\n ['[:graph:]', new CharGroup(+1, code10)],\n ['[:^graph:]', new CharGroup(-1, code10)],\n ['[:lower:]', new CharGroup(+1, code11)],\n ['[:^lower:]', new CharGroup(-1, code11)],\n ['[:print:]', new CharGroup(+1, code12)],\n ['[:^print:]', new CharGroup(-1, code12)],\n ['[:punct:]', new CharGroup(+1, code13)],\n ['[:^punct:]', new CharGroup(-1, code13)],\n ['[:space:]', new CharGroup(+1, code14)],\n ['[:^space:]', new CharGroup(-1, code14)],\n ['[:upper:]', new CharGroup(+1, code15)],\n ['[:^upper:]', new CharGroup(-1, code15)],\n ['[:word:]', new CharGroup(+1, code16)],\n ['[:^word:]', new CharGroup(-1, code16)],\n ['[:xdigit:]', new CharGroup(+1, code17)],\n ['[:^xdigit:]', new CharGroup(-1, code17)]\n])\n\nexport { PERL_GROUPS, POSIX_GROUPS }\n","import { RE2Flags } from './RE2Flags'\nimport { Unicode } from './Unicode'\nimport { Utils } from './Utils'\n/**\n * A \"builder\"-style helper class for manipulating character classes represented as an array of\n * pairs of runes [lo, hi], each denoting an inclusive interval.\n *\n * All methods mutate the internal state and return {@code this}, allowing operations to be chained.\n */\nclass CharClass {\n // Exposed, since useful for debugging CharGroups too.\n static charClassToString(r, len) {\n let result = '['\n for (let i = 0; i < len; i += 2) {\n if (i > 0) {\n result += ' '\n }\n const lo = r[i]\n const hi = r[i + 1]\n if (lo === hi) {\n result += `0x${lo.toString(16)}`\n } else {\n result += `0x${lo.toString(16)}-0x${hi.toString(16)}`\n }\n }\n result += ']'\n return result\n }\n\n // cmp() returns the ordering of the pair (a[i], a[i+1]) relative to\n // (pivotFrom, pivotTo), where the first component of the pair (lo) is\n // ordered naturally and the second component (hi) is in reverse order.\n static cmp(array, i, pivotFrom, pivotTo) {\n const cmp = array[i] - pivotFrom\n return cmp !== 0 ? cmp : pivotTo - array[i + 1]\n }\n\n // qsortIntPair() quicksorts pairs of ints in |array| according to lt().\n // Precondition: |left|, |right|, |this.len| must all be even; |this.len > 1|.\n static qsortIntPair(array, left, right) {\n const pivotIndex = (((left + right) / 2) | 0) & ~1\n const pivotFrom = array[pivotIndex]\n const pivotTo = array[pivotIndex + 1]\n let i = left\n let j = right\n while (i <= j) {\n while (i < right && CharClass.cmp(array, i, pivotFrom, pivotTo) < 0) {\n i += 2\n }\n\n while (j > left && CharClass.cmp(array, j, pivotFrom, pivotTo) > 0) {\n j -= 2\n }\n\n if (i <= j) {\n if (i !== j) {\n let temp = array[i]\n array[i] = array[j]\n array[j] = temp\n temp = array[i + 1]\n array[i + 1] = array[j + 1]\n array[j + 1] = temp\n }\n i += 2\n j -= 2\n }\n }\n\n if (left < j) {\n CharClass.qsortIntPair(array, left, j)\n }\n if (i < right) {\n CharClass.qsortIntPair(array, i, right)\n }\n }\n\n constructor(r = Utils.emptyInts()) {\n this.r = r // inclusive ranges, pairs of [lo,hi]. r.length is even.\n this.len = r.length // prefix of |r| that is defined. Even.\n }\n\n // Returns the character class as an int array. Subsequent CharClass\n // operations may mutate this array, so typically this is the last operation\n // performed on a given CharClass instance.\n toArray() {\n if (this.len === this.r.length) {\n return this.r\n } else {\n return this.r.slice(0, this.len)\n }\n }\n\n // cleanClass() sorts the ranges (pairs of elements) of this CharClass,\n // merges them, and eliminates duplicates.\n cleanClass() {\n if (this.len < 4) {\n return this\n }\n // Sort by lo increasing, hi decreasing to break ties.\n CharClass.qsortIntPair(this.r, 0, this.len - 2)\n // Merge abutting, overlapping.\n let w = 2 // write index\n for (let i = 2; i < this.len; i += 2) {\n {\n const lo = this.r[i]\n const hi = this.r[i + 1]\n if (lo <= this.r[w - 1] + 1) {\n // merge with previous range\n if (hi > this.r[w - 1]) {\n this.r[w - 1] = hi\n }\n continue\n }\n // new disjoint range\n this.r[w] = lo\n this.r[w + 1] = hi\n w += 2\n }\n }\n this.len = w\n return this\n }\n\n // appendLiteral() appends the literal |x| to this CharClass.\n appendLiteral(x, flags) {\n return (flags & RE2Flags.FOLD_CASE) !== 0\n ? this.appendFoldedRange(x, x)\n : this.appendRange(x, x)\n }\n\n // appendRange() appends the range [lo-hi] (inclusive) to this CharClass.\n appendRange(lo, hi) {\n // Expand last range or next to last range if it overlaps or abuts.\n // Checking two ranges helps when appending case-folded\n // alphabets, so that one range can be expanding A-Z and the\n // other expanding a-z.\n if (this.len > 0) {\n for (let i = 2; i <= 4; i += 2) {\n // twice, using i=2, i=4\n if (this.len >= i) {\n const rlo = this.r[this.len - i]\n const rhi = this.r[this.len - i + 1]\n if (lo <= rhi + 1 && rlo <= hi + 1) {\n if (lo < rlo) {\n this.r[this.len - i] = lo\n }\n if (hi > rhi) {\n this.r[this.len - i + 1] = hi\n }\n return this\n }\n }\n }\n }\n\n this.r[this.len++] = lo\n this.r[this.len++] = hi\n return this\n }\n\n // appendFoldedRange() appends the range [lo-hi] and its case\n // folding-equivalent runes to this CharClass.\n appendFoldedRange(lo, hi) {\n // Optimizations.\n if (lo <= Unicode.MIN_FOLD && hi >= Unicode.MAX_FOLD) {\n // Range is full: folding can't add more.\n return this.appendRange(lo, hi)\n }\n if (hi < Unicode.MIN_FOLD || lo > Unicode.MAX_FOLD) {\n // Range is outside folding possibilities.\n return this.appendRange(lo, hi)\n }\n if (lo < Unicode.MIN_FOLD) {\n // [lo, minFold-1] needs no folding.\n this.appendRange(lo, Unicode.MIN_FOLD - 1)\n lo = Unicode.MIN_FOLD\n }\n if (hi > Unicode.MAX_FOLD) {\n // [maxFold+1, hi] needs no folding.\n this.appendRange(Unicode.MAX_FOLD + 1, hi)\n hi = Unicode.MAX_FOLD\n }\n\n // Brute force. Depend on appendRange to coalesce ranges on the fly.\n for (let c = lo; c <= hi; c++) {\n this.appendRange(c, c)\n\n for (let f = Unicode.simpleFold(c); f !== c; f = Unicode.simpleFold(f)) {\n this.appendRange(f, f)\n }\n }\n return this\n }\n\n // appendClass() appends the class |x| to this CharClass.\n // It assumes |x| is clean. Does not mutate |x|.\n appendClass(x) {\n for (let i = 0; i < x.length; i += 2) {\n this.appendRange(x[i], x[i + 1])\n }\n return this\n }\n\n // appendFoldedClass() appends the case folding of the class |x| to this\n // CharClass. Does not mutate |x|.\n appendFoldedClass(x) {\n for (let i = 0; i < x.length; i += 2) {\n this.appendFoldedRange(x[i], x[i + 1])\n }\n return this\n }\n\n // appendNegatedClass() append the negation of the class |x| to this\n // CharClass. It assumes |x| is clean. Does not mutate |x|.\n appendNegatedClass(x) {\n let nextLo = 0\n for (let i = 0; i < x.length; i += 2) {\n const lo = x[i]\n const hi = x[i + 1]\n if (nextLo <= lo - 1) {\n this.appendRange(nextLo, lo - 1)\n }\n nextLo = hi + 1\n }\n if (nextLo <= Unicode.MAX_RUNE) {\n this.appendRange(nextLo, Unicode.MAX_RUNE)\n }\n return this\n }\n\n // appendTable() appends the Unicode range table |table| to this CharClass.\n // Does not mutate |table|.\n appendTable(table) {\n for (let triple of table) {\n const lo = triple[0]\n const hi = triple[1]\n const stride = triple[2]\n if (stride === 1) {\n this.appendRange(lo, hi)\n continue\n }\n for (let c = lo; c <= hi; c += stride) {\n this.appendRange(c, c)\n }\n }\n return this\n }\n\n // appendNegatedTable() returns the result of appending the negation of range\n // table |table| to this CharClass. Does not mutate |table|.\n appendNegatedTable(table) {\n let nextLo = 0\n for (let triple of table) {\n const lo = triple[0]\n const hi = triple[1]\n const stride = triple[2]\n if (stride === 1) {\n if (nextLo <= lo - 1) {\n this.appendRange(nextLo, lo - 1)\n }\n nextLo = hi + 1\n continue\n }\n for (let c = lo; c <= hi; c += stride) {\n if (nextLo <= c - 1) {\n this.appendRange(nextLo, c - 1)\n }\n nextLo = c + 1\n }\n }\n if (nextLo <= Unicode.MAX_RUNE) {\n this.appendRange(nextLo, Unicode.MAX_RUNE)\n }\n return this\n }\n\n // appendTableWithSign() calls append{,Negated}Table depending on sign.\n // Does not mutate |table|.\n appendTableWithSign(table, sign) {\n return sign < 0 ? this.appendNegatedTable(table) : this.appendTable(table)\n }\n\n // negateClass() negates this CharClass, which must already be clean.\n negateClass() {\n let nextLo = 0 // lo end of next class to add\n let w = 0 // write index\n for (let i = 0; i < this.len; i += 2) {\n const lo = this.r[i]\n const hi = this.r[i + 1]\n if (nextLo <= lo - 1) {\n this.r[w] = nextLo\n this.r[w + 1] = lo - 1\n w += 2\n }\n nextLo = hi + 1\n }\n this.len = w\n if (nextLo <= Unicode.MAX_RUNE) {\n this.r[this.len++] = nextLo\n this.r[this.len++] = Unicode.MAX_RUNE\n }\n return this\n }\n\n // appendClassWithSign() calls appendClass() if sign is +1 or\n // appendNegatedClass if sign is -1. Does not mutate |x|.\n appendClassWithSign(x, sign) {\n return sign < 0 ? this.appendNegatedClass(x) : this.appendClass(x)\n }\n\n // appendGroup() appends CharGroup |g| to this CharClass, folding iff\n // |foldCase|. Does not mutate |g|.\n appendGroup(g, foldCase) {\n let cls = g.cls\n if (foldCase) {\n cls = new CharClass().appendFoldedClass(cls).cleanClass().toArray()\n }\n return this.appendClassWithSign(cls, g.sign)\n }\n\n toString() {\n return CharClass.charClassToString(this.r, this.len)\n }\n}\n\nexport { CharClass }\n","import { Codepoint } from './Codepoint'\nimport { RE2Flags } from './RE2Flags'\nimport { Unicode } from './Unicode'\nimport { UnicodeTables } from './UnicodeTables'\nimport { PERL_GROUPS, POSIX_GROUPS } from './CharGroup'\nimport { Utils } from './Utils'\nimport { CharClass } from './CharClass'\nimport { RE2JSSyntaxException } from './exceptions'\nimport { Regexp } from './Regexp'\n\nclass Pair {\n static of(first, second) {\n return new Pair(first, second)\n }\n\n constructor(first, second) {\n this.first = first\n this.second = second\n }\n}\n\n// StringIterator: a stream of runes with an opaque cursor, permitting\n// rewinding. The units of the cursor are not specified beyond the\n// fact that ASCII characters are single width. (Cursor positions\n// could be UTF-8 byte indices, UTF-16 code indices or rune indices.)\n//\n// In particular, be careful with:\n// - skip: only use this to advance over ASCII characters\n// since these always have a width of 1.\n// - skipString: only use this to advance over strings which are\n// known to be at the current position, e.g. due to prior call to\n// lookingAt().\n// Only use pop() to advance over possibly non-ASCII runes.\nclass StringIterator {\n constructor(str) {\n this.str = str\n this.position = 0\n }\n\n // Returns the cursor position. Do not interpret the result!\n pos() {\n return this.position\n }\n\n // Resets the cursor position to a previous value returned by pos().\n rewindTo(pos) {\n this.position = pos\n }\n\n // Returns true unless the stream is exhausted.\n more() {\n return this.position < this.str.length\n }\n\n // Returns the rune at the cursor position.\n // Precondition: |more()|.\n peek() {\n return this.str.codePointAt(this.position)\n }\n\n // Advances the cursor by |n| positions, which must be ASCII runes.\n //\n // (In practise, this is only ever used to skip over regexp\n // metacharacters that are ASCII, so there is no numeric difference\n // between indices into UTF-8 bytes, UTF-16 codes and runes.)\n skip(n) {\n this.position += n\n }\n\n // Advances the cursor by the number of cursor positions in |s|.\n skipString(s) {\n this.position += s.length\n }\n\n // Returns the rune at the cursor position, and advances the cursor\n // past it. Precondition: |more()|.\n pop() {\n const r = this.str.codePointAt(this.position)\n this.position += Utils.charCount(r)\n return r\n }\n\n lookingAt(s) {\n return this.rest().startsWith(s)\n }\n\n // Returns the rest of the pattern as a Java UTF-16 string.\n rest() {\n return this.str.substring(this.position)\n }\n\n // Returns the substring from |beforePos| to the current position.\n // |beforePos| must have been previously returned by |pos()|.\n from(beforePos) {\n return this.str.substring(beforePos, this.position)\n }\n\n toString() {\n return this.rest()\n }\n}\n/**\n * A parser of regular expression patterns.\n *\n * The only public entry point is {@link #parse(String pattern, int flags)}.\n */\nclass Parser {\n // Unexpected error\n static ERR_INTERNAL_ERROR = 'regexp/syntax: internal error'\n\n // Parse errors\n static ERR_INVALID_CHAR_RANGE = 'invalid character class range'\n static ERR_INVALID_ESCAPE = 'invalid escape sequence'\n static ERR_INVALID_NAMED_CAPTURE = 'invalid named capture'\n static ERR_INVALID_PERL_OP = 'invalid or unsupported Perl syntax'\n static ERR_INVALID_REPEAT_OP = 'invalid nested repetition operator'\n static ERR_INVALID_REPEAT_SIZE = 'invalid repeat count'\n static ERR_MISSING_BRACKET = 'missing closing ]'\n static ERR_MISSING_PAREN = 'missing closing )'\n static ERR_MISSING_REPEAT_ARGUMENT = 'missing argument to repetition operator'\n static ERR_TRAILING_BACKSLASH = 'trailing backslash at end of expression'\n static ERR_DUPLICATE_NAMED_CAPTURE = 'duplicate capture group name'\n\n // RangeTables are represented as int[][], a list of triples (start, end,\n // stride).\n static ANY_TABLE() {\n return [[0, Unicode.MAX_RUNE, 1]]\n }\n\n // unicodeTable() returns the Unicode RangeTable identified by name\n // and the table of additional fold-equivalent code points.\n // Returns null if |name| does not identify a Unicode character range.\n static unicodeTable(name) {\n if (name === 'Any') {\n return Pair.of(Parser.ANY_TABLE(), Parser.ANY_TABLE())\n }\n if (UnicodeTables.CATEGORIES.has(name)) {\n return Pair.of(UnicodeTables.CATEGORIES.get(name), UnicodeTables.FOLD_CATEGORIES.get(name))\n }\n if (UnicodeTables.SCRIPTS.has(name)) {\n return Pair.of(UnicodeTables.SCRIPTS.get(name), UnicodeTables.FOLD_SCRIPT.get(name))\n }\n return null\n }\n\n // minFoldRune returns the minimum rune fold-equivalent to r.\n static minFoldRune(r) {\n if (r < Unicode.MIN_FOLD || r > Unicode.MAX_FOLD) {\n return r\n }\n\n let min = r\n const r0 = r\n for (r = Unicode.simpleFold(r); r !== r0; r = Unicode.simpleFold(r)) {\n if (min > r) {\n min = r\n }\n }\n return min\n }\n\n // leadingRegexp returns the leading regexp that re begins with.\n // The regexp refers to storage in re or its children.\n static leadingRegexp(re) {\n if (re.op === Regexp.Op.EMPTY_MATCH) {\n return null\n }\n if (re.op === Regexp.Op.CONCAT && re.subs.length > 0) {\n const sub = re.subs[0]\n if (sub.op === Regexp.Op.EMPTY_MATCH) {\n return null\n }\n return sub\n }\n return re\n }\n\n static literalRegexp(s, flags) {\n const re = new Regexp(Regexp.Op.LITERAL)\n re.flags = flags\n re.runes = Utils.stringToRunes(s)\n return re\n }\n /**\n * Parse regular expression pattern {@code pattern} with mode flags {@code flags}.\n */\n static parse(pattern, flags) {\n return new Parser(pattern, flags).parseInternal()\n }\n\n // parseRepeat parses {min} (max=min) or {min,} (max=-1) or {min,max}.\n // If |t| is not of that form, it returns -1.\n // If |t| has the right form but the values are negative or too big,\n // it returns -2.\n // On success, returns a nonnegative number encoding min/max in the\n // high/low signed halfwords of the result. (Note: min >= 0; max may\n // be -1.)\n //\n // On success, advances |t| beyond the repeat; otherwise |t.pos()| is\n // undefined.\n static parseRepeat(t) {\n const start = t.pos()\n if (!t.more() || !t.lookingAt('{')) {\n return -1\n }\n t.skip(1)\n\n const min = Parser.parseInt(t)\n if (min === -1) {\n return -1\n }\n if (!t.more()) {\n return -1\n }\n\n let max\n if (!t.lookingAt(',')) {\n max = min\n } else {\n t.skip(1)\n if (!t.more()) {\n return -1\n }\n if (t.lookingAt('}')) {\n max = -1\n } else if ((max = Parser.parseInt(t)) === -1) {\n return -1\n }\n }\n\n if (!t.more() || !t.lookingAt('}')) {\n return -1\n }\n t.skip(1)\n if (min < 0 || min > 1000 || max === -2 || max > 1000 || (max >= 0 && min > max)) {\n throw new RE2JSSyntaxException(Parser.ERR_INVALID_REPEAT_SIZE, t.from(start))\n }\n\n return (min << 16) | (max & Unicode.MAX_BMP)\n }\n\n // isValidCaptureName reports whether name\n // is a valid capture name: [A-Za-z0-9_]+.\n // PCRE limits names to 32 bytes.\n // Python rejects names starting with digits.\n // We don't enforce either of those.\n static isValidCaptureName(name) {\n if (name.length === 0) {\n return false\n }\n\n for (let i = 0; i < name.length; i++) {\n const c = name.codePointAt(i)\n if (c !== Codepoint.CODES.get('_') && !Utils.isalnum(c)) {\n return false\n }\n }\n\n return true\n }\n\n // parseInt parses a nonnegative decimal integer.\n // -1 => bad format. -2 => format ok, but integer overflow.\n static parseInt(t) {\n const start = t.pos()\n while (\n t.more() &&\n t.peek() >= Codepoint.CODES.get('0') &&\n t.peek() <= Codepoint.CODES.get('9')\n ) {\n t.skip(1)\n }\n\n const n = t.from(start)\n if (n.length === 0 || (n.length > 1 && n.codePointAt(0) === Codepoint.CODES.get('0'))) {\n return -1\n }\n if (n.length > 8) {\n return -2\n }\n return parseFloat(n, 10)\n }\n\n // can this be represented as a character class?\n // single-rune literal string, char class, ., and .|\\n.\n static isCharClass(re) {\n return (\n (re.op === Regexp.Op.LITERAL && re.runes.length === 1) ||\n re.op === Regexp.Op.CHAR_CLASS ||\n re.op === Regexp.Op.ANY_CHAR_NOT_NL ||\n re.op === Regexp.Op.ANY_CHAR\n )\n }\n\n // does re match r?\n static matchRune(re, r) {\n switch (re.op) {\n case Regexp.Op.LITERAL:\n return re.runes.length === 1 && re.runes[0] === r\n case Regexp.Op.CHAR_CLASS:\n for (let i = 0; i < re.runes.length; i += 2) {\n if (re.runes[i] <= r && r <= re.runes[i + 1]) {\n return true\n }\n }\n return false\n case Regexp.Op.ANY_CHAR_NOT_NL:\n return r !== Codepoint.CODES.get('\\n')\n case Regexp.Op.ANY_CHAR:\n return true\n }\n return false\n }\n\n // mergeCharClass makes dst = dst|src.\n // The caller must ensure that dst.Op >= src.Op,\n // to reduce the amount of copying.\n static mergeCharClass(dst, src) {\n switch (dst.op) {\n case Regexp.Op.ANY_CHAR:\n break\n case Regexp.Op.ANY_CHAR_NOT_NL:\n if (Parser.matchRune(src, Codepoint.CODES.get('\\n'))) {\n dst.op = Regexp.Op.ANY_CHAR\n }\n break\n case Regexp.Op.CHAR_CLASS:\n if (src.op === Regexp.Op.LITERAL) {\n dst.runes = new CharClass(dst.runes).appendLiteral(src.runes[0], src.flags).toArray()\n } else {\n dst.runes = new CharClass(dst.runes).appendClass(src.runes).toArray()\n }\n break\n case Regexp.Op.LITERAL:\n if (src.runes[0] === dst.runes[0] && src.flags === dst.flags) {\n break\n }\n dst.op = Regexp.Op.CHAR_CLASS\n dst.runes = new CharClass()\n .appendLiteral(dst.runes[0], dst.flags)\n .appendLiteral(src.runes[0], src.flags)\n .toArray()\n break\n }\n }\n\n // parseEscape parses an escape sequence at the beginning of s\n // and returns the rune.\n // Pre: t at '\\\\'. Post: after escape.\n static parseEscape(t) {\n const startPos = t.pos()\n t.skip(1) // '\\\\'\n if (!t.more()) {\n throw new RE2JSSyntaxException(Parser.ERR_TRAILING_BACKSLASH)\n }\n let c = t.pop()\n bigswitch: switch (c) {\n case Codepoint.CODES.get('1'):\n case Codepoint.CODES.get('2'):\n case Codepoint.CODES.get('3'):\n case Codepoint.CODES.get('4'):\n case Codepoint.CODES.get('5'):\n case Codepoint.CODES.get('6'):\n case Codepoint.CODES.get('7'): {\n if (\n !t.more() ||\n t.peek() < Codepoint.CODES.get('0') ||\n t.peek() > Codepoint.CODES.get('7')\n ) {\n break\n }\n }\n // eslint-disable-next-line no-fallthrough\n case Codepoint.CODES.get('0'): {\n let r = c - Codepoint.CODES.get('0')\n for (let i = 1; i < 3; i++) {\n if (\n !t.more() ||\n t.peek() < Codepoint.CODES.get('0') ||\n t.peek() > Codepoint.CODES.get('7')\n ) {\n break\n }\n r = r * 8 + t.peek() - Codepoint.CODES.get('0')\n t.skip(1)\n }\n return r\n }\n case Codepoint.CODES.get('x'): {\n if (!t.more()) {\n break\n }\n c = t.pop()\n if (c === Codepoint.CODES.get('{')) {\n let nhex = 0\n let r = 0\n // eslint-disable-next-line no-constant-condition\n while (true) {\n if (!t.more()) {\n break bigswitch\n }\n c = t.pop()\n if (c === Codepoint.CODES.get('}')) {\n break\n }\n const v = Utils.unhex(c)\n if (v < 0) {\n break bigswitch\n }\n r = r * 16 + v\n if (r > Unicode.MAX_RUNE) {\n break bigswitch\n }\n nhex++\n }\n if (nhex === 0) {\n break bigswitch\n }\n return r\n }\n const x = Utils.unhex(c)\n if (!t.more()) {\n break\n }\n c = t.pop()\n const y = Utils.unhex(c)\n if (x < 0 || y < 0) {\n break\n }\n return x * 16 + y\n }\n case Codepoint.CODES.get('a'):\n return Codepoint.CODES.get('\\x07')\n case Codepoint.CODES.get('f'):\n return Codepoint.CODES.get('\\f')\n case Codepoint.CODES.get('n'):\n return Codepoint.CODES.get('\\n')\n case Codepoint.CODES.get('r'):\n return Codepoint.CODES.get('\\r')\n case Codepoint.CODES.get('t'):\n return Codepoint.CODES.get('\\t')\n case Codepoint.CODES.get('v'):\n return Codepoint.CODES.get('\\v')\n default:\n if (!Utils.isalnum(c)) {\n return c\n }\n break\n }\n throw new RE2JSSyntaxException(Parser.ERR_INVALID_ESCAPE, t.from(startPos))\n }\n\n // parseClassChar parses a character class character and returns it.\n // wholeClassPos is the position of the start of the entire class \"[...\".\n // Pre: t at class char; Post: t after it.\n static parseClassChar(t, wholeClassPos) {\n if (!t.more()) {\n throw new RE2JSSyntaxException(Parser.ERR_MISSING_BRACKET, t.from(wholeClassPos))\n }\n if (t.lookingAt('\\\\')) {\n return Parser.parseEscape(t)\n }\n return t.pop()\n }\n\n static concatRunes(x, y) {\n return [...x, ...y]\n }\n\n constructor(wholeRegexp, flags = 0) {\n this.wholeRegexp = wholeRegexp\n // Flags control the behavior of the parser and record information about\n // regexp context.\n this.flags = flags\n // number of capturing groups seen\n this.numCap = 0\n this.namedGroups = {}\n // Stack of parsed expressions.\n this.stack = []\n this.free = null\n }\n\n // Allocate a Regexp, from the free list if possible.\n newRegexp(op) {\n let re = this.free\n if (re !== null && re.subs !== null && re.subs.length > 0) {\n this.free = re.subs[0]\n re.reinit()\n re.op = op\n } else {\n re = new Regexp(op)\n }\n return re\n }\n\n reuse(re) {\n if (re.subs !== null && re.subs.length > 0) {\n re.subs[0] = this.free\n }\n this.free = re\n }\n\n // Parse stack manipulation.\n\n pop() {\n return this.stack.pop()\n }\n\n popToPseudo() {\n const n = this.stack.length\n let i = n\n while (i > 0 && !Regexp.isPseudoOp(this.stack[i - 1].op)) {\n i--\n }\n\n const r = this.stack.slice(i, n)\n this.stack = this.stack.slice(0, i)\n return r\n }\n\n // push pushes the regexp re onto the parse stack and returns the regexp.\n // Returns null for a CHAR_CLASS that can be merged with the top-of-stack.\n push(re) {\n if (re.op === Regexp.Op.CHAR_CLASS && re.runes.length === 2 && re.runes[0] === re.runes[1]) {\n if (this.maybeConcat(re.runes[0], this.flags & ~RE2Flags.FOLD_CASE)) {\n return null\n }\n re.op = Regexp.Op.LITERAL\n re.runes = [re.runes[0]]\n re.flags = this.flags & ~RE2Flags.FOLD_CASE\n } else if (\n (re.op === Regexp.Op.CHAR_CLASS &&\n re.runes.length === 4 &&\n re.runes[0] === re.runes[1] &&\n re.runes[2] === re.runes[3] &&\n Unicode.simpleFold(re.runes[0]) === re.runes[2] &&\n Unicode.simpleFold(re.runes[2]) === re.runes[0]) ||\n (re.op === Regexp.Op.CHAR_CLASS &&\n re.runes.length === 2 &&\n re.runes[0] + 1 === re.runes[1] &&\n Unicode.simpleFold(re.runes[0]) === re.runes[1] &&\n Unicode.simpleFold(re.runes[1]) === re.runes[0])\n ) {\n // Case-insensitive rune like [Aa] or [Δδ].\n if (this.maybeConcat(re.runes[0], this.flags | RE2Flags.FOLD_CASE)) {\n return null\n }\n // Rewrite as (case-insensitive) literal.\n re.op = Regexp.Op.LITERAL\n re.runes = [re.runes[0]]\n re.flags = this.flags | RE2Flags.FOLD_CASE\n } else {\n // Incremental concatenation.\n this.maybeConcat(-1, 0)\n }\n this.stack.push(re)\n return re\n }\n\n // maybeConcat implements incremental concatenation\n // of literal runes into string nodes. The parser calls this\n // before each push, so only the top fragment of the stack\n // might need processing. Since this is called before a push,\n // the topmost literal is no longer subject to operators like *\n // (Otherwise ab* would turn into (ab)*.)\n // If (r >= 0 and there's a node left over, maybeConcat uses it\n // to push r with the given flags.\n // maybeConcat reports whether r was pushed.\n maybeConcat(r, flags) {\n const n = this.stack.length\n if (n < 2) {\n return false\n }\n const re1 = this.stack[n - 1]\n const re2 = this.stack[n - 2]\n if (\n re1.op !== Regexp.Op.LITERAL ||\n re2.op !== Regexp.Op.LITERAL ||\n (re1.flags & RE2Flags.FOLD_CASE) !== (re2.flags & RE2Flags.FOLD_CASE)\n ) {\n return false\n }\n // Push re1 into re2.\n re2.runes = Parser.concatRunes(re2.runes, re1.runes)\n // Reuse re1 if possible.\n if (r >= 0) {\n re1.runes = [r]\n re1.flags = flags\n return true\n }\n this.pop()\n this.reuse(re1)\n return false // did not push r\n }\n\n // newLiteral returns a new LITERAL Regexp with the given flags\n newLiteral(r, flags) {\n const re = this.newRegexp(Regexp.Op.LITERAL)\n re.flags = flags\n if ((flags & RE2Flags.FOLD_CASE) !== 0) {\n r = Parser.minFoldRune(r)\n }\n re.runes = [r]\n return re\n }\n\n // literal pushes a literal regexp for the rune r on the stack\n // and returns that regexp.\n literal(r) {\n this.push(this.newLiteral(r, this.flags))\n }\n\n // op pushes a regexp with the given op onto the stack\n // and returns that regexp.\n op(op) {\n const re = this.newRegexp(op)\n re.flags = this.flags\n return this.push(re)\n }\n\n // repeat replaces the top stack element with itself repeated according to\n // op, min, max. beforePos is the start position of the repetition operator.\n // Pre: t is positioned after the initial repetition operator.\n // Post: t advances past an optional perl-mode '?', or stays put.\n // Or, it fails with RE2JSSyntaxException.\n repeat(op, min, max, beforePos, t, lastRepeatPos) {\n let flags = this.flags\n if ((flags & RE2Flags.PERL_X) !== 0) {\n if (t.more() && t.lookingAt('?')) {\n t.skip(1)\n flags ^= RE2Flags.NON_GREEDY\n }\n if (lastRepeatPos !== -1) {\n // In Perl it is not allowed to stack repetition operators:\n // a** is a syntax error, not a doubled star, and a++ means\n // something else entirely, which we don't support!\n throw new RE2JSSyntaxException(Parser.ERR_INVALID_REPEAT_OP, t.from(lastRepeatPos))\n }\n }\n\n const n = this.stack.length\n if (n === 0) {\n throw new RE2JSSyntaxException(Parser.ERR_MISSING_REPEAT_ARGUMENT, t.from(beforePos))\n }\n\n const sub = this.stack[n - 1]\n if (Regexp.isPseudoOp(sub.op)) {\n throw new RE2JSSyntaxException(Parser.ERR_MISSING_REPEAT_ARGUMENT, t.from(beforePos))\n }\n\n const re = this.newRegexp(op)\n re.min = min\n re.max = max\n re.flags = flags\n re.subs = [sub]\n this.stack[n - 1] = re\n }\n\n // concat replaces the top of the stack (above the topmost '|' or '(') with\n // its concatenation.\n concat() {\n this.maybeConcat(-1, 0)\n const subs = this.popToPseudo()\n if (subs.length === 0) {\n return this.push(this.newRegexp(Regexp.Op.EMPTY_MATCH))\n }\n return this.push(this.collapse(subs, Regexp.Op.CONCAT))\n }\n\n // alternate replaces the top of the stack (above the topmost '(') with its\n // alternation.\n alternate() {\n // Scan down to find pseudo-operator (.\n // There are no | above (.\n const subs = this.popToPseudo()\n // Make sure top class is clean.\n // All the others already are (see swapVerticalBar).\n if (subs.length > 0) {\n this.cleanAlt(subs[subs.length - 1])\n }\n // Empty alternate is special case\n // (shouldn't happen but easy to handle).\n if (subs.length === 0) {\n return this.push(this.newRegexp(Regexp.Op.NO_MATCH))\n }\n return this.push(this.collapse(subs, Regexp.Op.ALTERNATE))\n }\n\n // cleanAlt cleans re for eventual inclusion in an alternation.\n cleanAlt(re) {\n if (re.op === Regexp.Op.CHAR_CLASS) {\n re.runes = new CharClass(re.runes).cleanClass().toArray()\n if (re.runes.length === 2 && re.runes[0] === 0 && re.runes[1] === Unicode.MAX_RUNE) {\n re.runes = null\n re.op = Regexp.Op.ANY_CHAR\n } else if (\n re.runes.length === 4 &&\n re.runes[0] === 0 &&\n re.runes[1] === Codepoint.CODES.get('\\n') - 1 &&\n re.runes[2] === Codepoint.CODES.get('\\n') + 1 &&\n re.runes[3] === Unicode.MAX_RUNE\n ) {\n re.runes = null\n re.op = Regexp.Op.ANY_CHAR_NOT_NL\n }\n }\n }\n\n // collapse returns the result of applying op to subs[start:end].\n // If (sub contains op nodes, they all get hoisted up\n // so that there is never a concat of a concat or an\n // alternate of an alternate.\n collapse(subs, op) {\n if (subs.length === 1) {\n return subs[0]\n }\n // Concatenate subs iff op is same.\n // Compute length in first pass.\n let len = 0\n for (let sub of subs) {\n len += sub.op === op ? sub.subs.length : 1\n }\n let newsubs = new Array(len).fill(null)\n let i = 0\n for (let sub of subs) {\n if (sub.op === op) {\n newsubs.splice(i, sub.subs.length, ...sub.subs)\n i += sub.subs.length\n this.reuse(sub)\n } else {\n newsubs[i++] = sub\n }\n }\n\n let re = this.newRegexp(op)\n re.subs = newsubs\n if (op === Regexp.Op.ALTERNATE) {\n // re.subs = this.factor(re.subs, re.flags)\n re.subs = this.factor(re.subs)\n if (re.subs.length === 1) {\n const old = re\n re = re.subs[0]\n this.reuse(old)\n }\n }\n return re\n }\n\n // factor factors common prefixes from the alternation list sub. It\n // returns a replacement list that reuses the same storage and frees\n // (passes to p.reuse) any removed *Regexps.\n //\n // For example,\n // ABC|ABD|AEF|BCX|BCY\n // simplifies by literal prefix extraction to\n // A(B(C|D)|EF)|BC(X|Y)\n // which simplifies by character class introduction to\n // A(B[CD]|EF)|BC[XY]\n //\n factor(array) {\n if (array.length < 2) {\n return array\n }\n // The following code is subtle, because it's a literal JS\n // translation of code that makes clever use of Go \"slices\".\n // A slice is a triple (array, offset, length), and the Go\n // implementation uses two slices, |sub| and |out| backed by the\n // same array. In JS, we have to be explicit about all of these\n // variables, so:\n //\n // Go JS\n // sub (array, s, lensub)\n // out (array, 0, lenout) // (always a prefix of |array|)\n //\n // In the comments we'll use the logical notation of go slices, e.g. sub[i]\n // even though the JS code will read array[s + i].\n\n let s = 0 // offset of first |sub| within array.\n let lensub = array.length // = len(sub)\n let lenout = 0 // = len(out)\n // Round 1: Factor out common literal prefixes.\n // Note: (str, strlen) and (istr, istrlen) are like Go slices\n // onto a prefix of some Regexp's runes array (hence offset=0).\n let str = null\n let strlen = 0\n let strflags = 0\n let start = 0\n for (let i = 0; i <= lensub; i++) {\n // Invariant: the Regexps that were in sub[0:start] have been\n // used or marked for reuse, and the slice space has been reused\n // for out (len <= start).\n //\n // Invariant: sub[start:i] consists of regexps that all begin\n // with str as modified by strflags.\n let istr = null\n let istrlen = 0\n let iflags = 0\n if (i < lensub) {\n // NB, we inlined Go's leadingString() since Java has no pair return.\n let re = array[s + i]\n if (re.op === Regexp.Op.CONCAT && re.subs.length > 0) {\n re = re.subs[0]\n }\n if (re.op === Regexp.Op.LITERAL) {\n istr = re.runes\n istrlen = re.runes.length\n iflags = re.flags & RE2Flags.FOLD_CASE\n }\n // istr is the leading literal string that re begins with.\n // The string refers to storage in re or its children.\n if (iflags === strflags) {\n let same = 0\n while (same < strlen && same < istrlen && str[same] === istr[same]) {\n same++\n }\n\n if (same > 0) {\n // Matches at least one rune in current range.\n // Keep going around.\n strlen = same\n continue\n }\n }\n }\n // Found end of a run with common leading literal string:\n // sub[start:i] all begin with str[0:strlen], but sub[i]\n // does not even begin with str[0].\n //\n // Factor out common string and append factored expression to out.\n if (i === start) {\n // Nothing to do - run of length 0.\n } else if (i === start + 1) {\n // Just one: don't bother factoring.\n array[lenout++] = array[s + start]\n } else {\n // Construct factored form: prefix(suffix1|suffix2|...)\n const prefix = this.newRegexp(Regexp.Op.LITERAL)\n prefix.flags = strflags\n prefix.runes = str.slice(0, strlen)\n for (let j = start; j < i; j++) {\n array[s + j] = this.removeLeadingString(array[s + j], strlen)\n }\n // Recurse.\n const suffix = this.collapse(array.slice(s + start, s + i), Regexp.Op.ALTERNATE)\n const re = this.newRegexp(Regexp.Op.CONCAT)\n re.subs = [prefix, suffix]\n array[lenout++] = re\n }\n // Prepare for next iteration.\n start = i\n str = istr\n strlen = istrlen\n strflags = iflags\n }\n // In Go: sub = out\n lensub = lenout\n s = 0\n // Round 2: Factor out common complex prefixes,\n // just the first piece of each concatenation,\n // whatever it is. This is good enough a lot of the time.\n start = 0\n lenout = 0\n let first = null\n for (let i = 0; i <= lensub; i++) {\n // Invariant: the Regexps that were in sub[0:start] have been\n // used or marked for reuse, and the slice space has been reused\n // for out (lenout <= start).\n //\n // Invariant: sub[start:i] consists of regexps that all begin with\n // ifirst.\n let ifirst = null\n if (i < lensub) {\n ifirst = Parser.leadingRegexp(array[s + i])\n if (\n first !== null &&\n first.equals(ifirst) &&\n (Parser.isCharClass(first) ||\n (first.op === Regexp.Op.REPEAT &&\n first.min === first.max &&\n Parser.isCharClass(first.subs[0])))\n ) {\n continue\n }\n }\n // Found end of a run with common leading regexp:\n // sub[start:i] all begin with first but sub[i] does not.\n //\n // Factor out common regexp and append factored expression to out.\n if (i === start) {\n // Nothing to do - run of length 0.\n } else if (i === start + 1) {\n // Just one: don't bother factoring.\n array[lenout++] = array[s + start]\n } else {\n // Construct factored form: prefix(suffix1|suffix2|...)\n const prefix = first\n for (let j = start; j < i; j++) {\n const reuse = j !== start // prefix came from sub[start]\n array[s + j] = this.removeLeadingRegexp(array[s + j], reuse)\n }\n // recurse\n const suffix = this.collapse(array.slice(s + start, s + i), Regexp.Op.ALTERNATE)\n const re = this.newRegexp(Regexp.Op.CONCAT)\n re.subs = [prefix, suffix]\n array[lenout++] = re\n }\n // Prepare for next iteration.\n start = i\n first = ifirst\n }\n // In Go: sub = out\n lensub = lenout\n s = 0\n // Round 3: Collapse runs of single literals into character classes.\n start = 0\n lenout = 0\n for (let i = 0; i <= lensub; i++) {\n // Invariant: the Regexps that were in sub[0:start] have been\n // used or marked for reuse, and the slice space has been reused\n // for out (lenout <= start).\n //\n // Invariant: sub[start:i] consists of regexps that are either\n // literal runes or character classes.\n if (i < lensub && Parser.isCharClass(array[s + i])) {\n continue\n }\n // sub[i] is not a char or char class;\n // emit char class for sub[start:i]...\n if (i === start) {\n // Nothing to do - run of length 0.\n } else if (i === start + 1) {\n // Just one: don't bother factoring.\n array[lenout++] = array[s + start]\n } else {\n // Make new char class.\n // Start with most complex regexp in sub[start].\n let max = start\n for (let j = start + 1; j < i; j++) {\n const subMax = array[s + max]\n const subJ = array[s + j]\n if (\n subMax.op < subJ.op ||\n (subMax.op === subJ.op &&\n (subMax.runes !== null ? subMax.runes.length : 0) <\n (subJ.runes !== null ? subJ.runes.length : 0))\n ) {\n max = j\n }\n }\n // swap sub[start], sub[max].\n const tmp = array[s + start]\n array[s + start] = array[s + max]\n array[s + max] = tmp\n for (let j = start + 1; j < i; j++) {\n Parser.mergeCharClass(array[s + start], array[s + j])\n this.reuse(array[s + j])\n }\n this.cleanAlt(array[s + start])\n array[lenout++] = array[s + start]\n }\n // ... and then emit sub[i].\n if (i < lensub) {\n array[lenout++] = array[s + i]\n }\n start = i + 1\n }\n // In Go: sub = out\n lensub = lenout\n s = 0\n // Round 4: Collapse runs of empty matches into a single empty match.\n start = 0\n lenout = 0\n for (let i = 0; i < lensub; ++i) {\n if (\n i + 1 < lensub &&\n array[s + i].op === Regexp.Op.EMPTY_MATCH &&\n array[s + i + 1].op === Regexp.Op.EMPTY_MATCH\n ) {\n continue\n }\n array[lenout++] = array[s + i]\n }\n // In Go: sub = out\n lensub = lenout\n s = 0\n return array.slice(s, lensub)\n }\n\n // removeLeadingString removes the first n leading runes\n // from the beginning of re. It returns the replacement for re.\n removeLeadingString(re, n) {\n if (re.op === Regexp.Op.CONCAT && re.subs.length > 0) {\n // Removing a leading string in a concatenation\n // might simplify the concatenation.\n const sub = this.removeLeadingString(re.subs[0], n)\n re.subs[0] = sub\n if (sub.op === Regexp.Op.EMPTY_MATCH) {\n this.reuse(sub)\n switch (re.subs.length) {\n case 0:\n case 1:\n // Impossible but handle.\n re.op = Regexp.Op.EMPTY_MATCH\n re.subs = null\n break\n case 2: {\n const old = re\n re = re.subs[1]\n this.reuse(old)\n break\n }\n default:\n re.subs = re.subs.slice(1, re.subs.length)\n break\n }\n }\n return re\n }\n if (re.op === Regexp.Op.LITERAL) {\n re.runes = re.runes.slice(n, re.runes.length)\n if (re.runes.length === 0) {\n re.op = Regexp.Op.EMPTY_MATCH\n }\n }\n return re\n }\n\n // removeLeadingRegexp removes the leading regexp in re.\n // It returns the replacement for re.\n // If reuse is true, it passes the removed regexp (if no longer needed) to\n // reuse.\n removeLeadingRegexp(re, reuse) {\n if (re.op === Regexp.Op.CONCAT && re.subs.length > 0) {\n if (reuse) {\n this.reuse(re.subs[0])\n }\n re.subs = re.subs.slice(1, re.subs.length)\n switch (re.subs.length) {\n case 0: {\n re.op = Regexp.Op.EMPTY_MATCH\n re.subs = Regexp.emptySubs()\n break\n }\n case 1: {\n const old = re\n re = re.subs[0]\n this.reuse(old)\n break\n }\n }\n return re\n }\n if (reuse) {\n this.reuse(re)\n }\n return this.newRegexp(Regexp.Op.EMPTY_MATCH)\n }\n\n parseInternal() {\n if ((this.flags & RE2Flags.LITERAL) !== 0) {\n // Trivial parser for literal string.\n return Parser.literalRegexp(this.wholeRegexp, this.flags)\n }\n // Otherwise, must do real work.\n let lastRepeatPos = -1\n let min = -1\n let max = -1\n const t = new StringIterator(this.wholeRegexp)\n while (t.more()) {\n {\n let repeatPos = -1\n bigswitch: switch (t.peek()) {\n case Codepoint.CODES.get('('):\n if ((this.flags & RE2Flags.PERL_X) !== 0 && t.lookingAt('(?')) {\n // Flag changes and non-capturing groups.\n this.parsePerlFlags(t)\n break\n }\n this.op(Regexp.Op.LEFT_PAREN).cap = ++this.numCap\n t.skip(1) // '('\n break\n case Codepoint.CODES.get('|'):\n this.parseVerticalBar() // '|'\n t.skip(1) // '|'\n break\n case Codepoint.CODES.get(')'):\n this.parseRightParen()\n t.skip(1) // ')'\n break\n case Codepoint.CODES.get('^'):\n if ((this.flags & RE2Flags.ONE_LINE) !== 0) {\n this.op(Regexp.Op.BEGIN_TEXT)\n } else {\n this.op(Regexp.Op.BEGIN_LINE)\n }\n t.skip(1) // '^'\n break\n case Codepoint.CODES.get('$'):\n if ((this.flags & RE2Flags.ONE_LINE) !== 0) {\n this.op(Regexp.Op.END_TEXT).flags |= RE2Flags.WAS_DOLLAR\n } else {\n this.op(Regexp.Op.END_LINE)\n }\n t.skip(1) // '$'\n break\n case Codepoint.CODES.get('.'):\n if ((this.flags & RE2Flags.DOT_NL) !== 0) {\n this.op(Regexp.Op.ANY_CHAR)\n } else {\n this.op(Regexp.Op.ANY_CHAR_NOT_NL)\n }\n t.skip(1) // '.'\n break\n case Codepoint.CODES.get('['):\n this.parseClass(t)\n break\n case Codepoint.CODES.get('*'):\n case Codepoint.CODES.get('+'):\n case Codepoint.CODES.get('?'): {\n repeatPos = t.pos()\n let op = null\n switch (t.pop()) {\n case Codepoint.CODES.get('*'):\n op = Regexp.Op.STAR\n break\n case Codepoint.CODES.get('+'):\n op = Regexp.Op.PLUS\n break\n case Codepoint.CODES.get('?'):\n op = Regexp.Op.QUEST\n break\n }\n this.repeat(op, min, max, repeatPos, t, lastRepeatPos)\n // (min and max are now dead.)\n break\n }\n\n case Codepoint.CODES.get('{'): {\n repeatPos = t.pos()\n const minMax = Parser.parseRepeat(t)\n if (minMax < 0) {\n // If the repeat cannot be parsed, { is a literal.\n t.rewindTo(repeatPos)\n this.literal(t.pop()) // '{'\n break\n }\n min = minMax >> 16\n max = ((minMax & Unicode.MAX_BMP) << 16) >> 16\n this.repeat(Regexp.Op.REPEAT, min, max, repeatPos, t, lastRepeatPos)\n break\n }\n\n case Codepoint.CODES.get('\\\\'): {\n const savedPos = t.pos()\n t.skip(1) // '\\\\'\n if ((this.flags & RE2Flags.PERL_X) !== 0 && t.more()) {\n const c = t.pop()\n switch (c) {\n case Codepoint.CODES.get('A'):\n this.op(Regexp.Op.BEGIN_TEXT)\n break bigswitch\n case Codepoint.CODES.get('b'):\n this.op(Regexp.Op.WORD_BOUNDARY)\n break bigswitch\n case Codepoint.CODES.get('B'):\n this.op(Regexp.Op.NO_WORD_BOUNDARY)\n break bigswitch\n case Codepoint.CODES.get('C'):\n // any byte; not supported\n throw new RE2JSSyntaxException(Parser.ERR_INVALID_ESCAPE, '\\\\C')\n case Codepoint.CODES.get('Q'): {\n // \\Q ... \\E: the ... is always literals\n let lit = t.rest()\n const i = lit.indexOf('\\\\E')\n if (i >= 0) {\n lit = lit.substring(0, i)\n }\n t.skipString(lit)\n t.skipString('\\\\E')\n\n let j = 0\n while (j < lit.length) {\n const codepoint = lit.codePointAt(j)\n this.literal(codepoint)\n j += Utils.charCount(codepoint)\n }\n break bigswitch\n }\n\n case Codepoint.CODES.get('z'):\n this.op(Regexp.Op.END_TEXT)\n break bigswitch\n default:\n t.rewindTo(savedPos)\n break\n }\n }\n\n const re = this.newRegexp(Regexp.Op.CHAR_CLASS)\n re.flags = this.flags\n // Look for Unicode character group like \\p{Han}\n if (t.lookingAt('\\\\p') || t.lookingAt('\\\\P')) {\n const cc = new CharClass()\n if (this.parseUnicodeClass(t, cc)) {\n re.runes = cc.toArray()\n this.push(re)\n break bigswitch\n }\n }\n // Perl character class escape.\n const cc = new CharClass()\n if (this.parsePerlClassEscape(t, cc)) {\n re.runes = cc.toArray()\n this.push(re)\n break bigswitch\n }\n t.rewindTo(savedPos)\n this.reuse(re)\n // Ordinary single-character escape.\n this.literal(Parser.parseEscape(t))\n break\n }\n default:\n this.literal(t.pop())\n break\n }\n lastRepeatPos = repeatPos\n }\n }\n\n this.concat()\n if (this.swapVerticalBar()) {\n this.pop() // pop vertical bar\n }\n this.alternate()\n const n = this.stack.length\n if (n !== 1) {\n throw new RE2JSSyntaxException(Parser.ERR_MISSING_PAREN, this.wholeRegexp)\n }\n this.stack[0].namedGroups = this.namedGroups\n return this.stack[0]\n }\n\n // parsePerlFlags parses a Perl flag setting or non-capturing group or both,\n // like (?i) or (?: or (?i:.\n // Pre: t at \"(?\". Post: t after \")\".\n // Sets numCap.\n parsePerlFlags(t) {\n const startPos = t.pos()\n // Check for named captures, first introduced in Python's regexp library.\n // As usual, there are three slightly different syntaxes:\n //\n // (?P<name>expr) the original, introduced by Python\n // (?<name>expr) the .NET alteration, adopted by Perl 5.10\n // (?'name'expr) another .NET alteration, adopted by Perl 5.10\n //\n // Perl 5.10 gave in and implemented the Python version too,\n // but they claim that the last two are the preferred forms.\n // PCRE and languages based on it (specifically, PHP and Ruby)\n // support all three as well. EcmaScript 4 uses only the Python form.\n //\n // In both the open source world (via Code Search) and the\n // Google source tree, (?P<expr>name) is the dominant form,\n // so that's the one we implement. One is enough.\n const s = t.rest()\n if (s.startsWith('(?P<')) {\n // Pull out name.\n const end = s.indexOf('>')\n if (end < 0) {\n throw new RE2JSSyntaxException(Parser.ERR_INVALID_NAMED_CAPTURE, s)\n }\n const name = s.substring(4, end) // \"name\"\n t.skipString(name)\n t.skip(5) // \"(?P<>\"\n if (!Parser.isValidCaptureName(name)) {\n // \"(?P<name>\"\n throw new RE2JSSyntaxException(Parser.ERR_INVALID_NAMED_CAPTURE, s.substring(0, end))\n }\n // Like ordinary capture, but named.\n const re = this.op(Regexp.Op.LEFT_PAREN)\n re.cap = ++this.numCap\n if (this.namedGroups[name]) {\n throw new RE2JSSyntaxException(Parser.ERR_DUPLICATE_NAMED_CAPTURE, name)\n }\n this.namedGroups[name] = this.numCap\n re.name = name\n return\n }\n // Non-capturing group. Might also twiddle Perl flags.\n t.skip(2) // \"(?\"\n\n let flags = this.flags\n let sign = +1\n let sawFlag = false\n loop: while (t.more()) {\n {\n const c = t.pop()\n switch (c) {\n case Codepoint.CODES.get('i'):\n flags |= RE2Flags.FOLD_CASE\n sawFlag = true\n break\n case Codepoint.CODES.get('m'):\n flags &= ~RE2Flags.ONE_LINE\n sawFlag = true\n break\n case Codepoint.CODES.get('s'):\n flags |= RE2Flags.DOT_NL\n sawFlag = true\n break\n case Codepoint.CODES.get('U'):\n flags |= RE2Flags.NON_GREEDY\n sawFlag = true\n break\n // Switch to negation.\n case Codepoint.CODES.get('-'):\n if (sign < 0) {\n break loop\n }\n sign = -1\n // Invert flags so that | above turn into &~ and vice versa.\n // We'll invert flags again before using it below.\n flags = ~flags\n sawFlag = false\n break\n // End of flags, starting group or not.\n case Codepoint.CODES.get(':'):\n case Codepoint.CODES.get(')'):\n if (sign < 0) {\n if (!sawFlag) {\n break loop\n }\n flags = ~flags\n }\n if (c === Codepoint.CODES.get(':')) {\n // Open new group\n this.op(Regexp.Op.LEFT_PAREN)\n }\n this.flags = flags\n return\n default:\n // Flags.\n break loop\n }\n }\n }\n\n throw new RE2JSSyntaxException(Parser.ERR_INVALID_PERL_OP, t.from(startPos))\n }\n\n // parseVerticalBar handles a | in the input.\n parseVerticalBar() {\n this.concat()\n // The concatenation we just parsed is on top of the stack.\n // If it sits above an opVerticalBar, swap it below\n // (things below an opVerticalBar become an alternation).\n // Otherwise, push a new vertical bar.\n if (!this.swapVerticalBar()) {\n this.op(Regexp.Op.VERTICAL_BAR)\n }\n }\n\n // If the top of the stack is an element followed by an opVerticalBar\n // swapVerticalBar swaps the two and returns true.\n // Otherwise it returns false.\n swapVerticalBar() {\n const n = this.stack.length\n // If above and below vertical bar are literal or char class,\n // can merge into a single char class.\n if (\n n >= 3 &&\n this.stack[n - 2].op === Regexp.Op.VERTICAL_BAR &&\n Parser.isCharClass(this.stack[n - 1]) &&\n Parser.isCharClass(this.stack[n - 3])\n ) {\n let re1 = this.stack[n - 1]\n let re3 = this.stack[n - 3]\n // Make re3 the more complex of the two.\n if (re1.op > re3.op) {\n const tmp = re3\n re3 = re1\n re1 = tmp\n this.stack[n - 3] = re3\n }\n Parser.mergeCharClass(re3, re1)\n this.reuse(re1)\n this.pop()\n return true\n }\n if (n >= 2) {\n const re1 = this.stack[n - 1]\n const re2 = this.stack[n - 2]\n if (re2.op === Regexp.Op.VERTICAL_BAR) {\n if (n >= 3) {\n // Now out of reach.\n // Clean opportunistically.\n this.cleanAlt(this.stack[n - 3])\n }\n this.stack[n - 2] = re1\n this.stack[n - 1] = re2\n return true\n }\n }\n return false\n }\n\n // parseRightParen handles a ')' in the input.\n parseRightParen() {\n this.concat()\n if (this.swapVerticalBar()) {\n this.pop() // pop vertical bar\n }\n this.alternate()\n const n = this.stack.length\n if (n < 2) {\n throw new RE2JSSyntaxException(Parser.ERR_INTERNAL_ERROR, 'stack underflow')\n }\n\n const re1 = this.pop()\n const re2 = this.pop()\n if (re2.op !== Regexp.Op.LEFT_PAREN) {\n throw new RE2JSSyntaxException(Parser.ERR_MISSING_PAREN, this.wholeRegexp)\n }\n // Restore flags at time of paren.\n this.flags = re2.flags\n if (re2.cap === 0) {\n // Just for grouping.\n this.push(re1)\n } else {\n re2.op = Regexp.Op.CAPTURE\n re2.subs = [re1]\n this.push(re2)\n }\n }\n\n // parsePerlClassEscape parses a leading Perl character class escape like \\d\n // from the beginning of |t|. If one is present, it appends the characters\n // to cc and returns true. The iterator is advanced past the escape\n // on success, undefined on failure, in which case false is returned.\n parsePerlClassEscape(t, cc) {\n const beforePos = t.pos()\n if (\n (this.flags & RE2Flags.PERL_X) === 0 ||\n !t.more() ||\n t.pop() !== Codepoint.CODES.get('\\\\') ||\n !t.more()\n ) {\n return false\n }\n t.pop() // e.g. advance past 'd' in \"\\\\d\"\n const p = t.from(beforePos)\n const g = PERL_GROUPS.has(p) ? PERL_GROUPS.get(p) : null\n if (g === null) {\n return false\n }\n cc.appendGroup(g, (this.flags & RE2Flags.FOLD_CASE) !== 0)\n return true\n }\n\n // parseNamedClass parses a leading POSIX named character class like\n // [:alnum:] from the beginning of t. If one is present, it appends the\n // characters to cc, advances the iterator, and returns true.\n // Pre: t at \"[:\". Post: t after \":]\".\n // On failure (no class of than name), throws RE2JSSyntaxException.\n // On misparse, returns false; t.pos() is undefined.\n parseNamedClass(t, cc) {\n // (Go precondition check deleted.)\n const cls = t.rest()\n const i = cls.indexOf(':]')\n if (i < 0) {\n return false\n }\n\n const name = cls.substring(0, i + 2) // \"[:alnum:]\"\n t.skipString(name)\n const g = POSIX_GROUPS.has(name) ? POSIX_GROUPS.get(name) : null\n if (g === null) {\n throw new RE2JSSyntaxException(Parser.ERR_INVALID_CHAR_RANGE, name)\n }\n cc.appendGroup(g, (this.flags & RE2Flags.FOLD_CASE) !== 0)\n return true\n }\n\n // parseUnicodeClass() parses a leading Unicode character class like \\p{Han}\n // from the beginning of t. If one is present, it appends the characters to\n // to |cc|, advances |t| and returns true.\n //\n // Returns false if such a pattern is not present or UNICODE_GROUPS\n // flag is not enabled; |t.pos()| is not advanced in this case.\n // Indicates error by throwing RE2JSSyntaxException.\n parseUnicodeClass(t, cc) {\n const startPos = t.pos()\n if (\n (this.flags & RE2Flags.UNICODE_GROUPS) === 0 ||\n (!t.lookingAt('\\\\p') && !t.lookingAt('\\\\P'))\n ) {\n return false\n }\n\n t.skip(1) // '\\\\'\n // Committed to parse or throw exception.\n let sign = +1\n let c = t.pop() // 'p' or 'P'\n if (c === Codepoint.CODES.get('P')) {\n sign = -1\n }\n if (!t.more()) {\n t.rewindTo(startPos)\n throw new RE2JSSyntaxException(Parser.ERR_INVALID_CHAR_RANGE, t.rest())\n }\n\n c = t.pop()\n let name\n\n if (c !== Codepoint.CODES.get('{')) {\n // Single-letter name.\n name = Utils.runeToString(c)\n } else {\n // Name is in braces.\n const rest = t.rest()\n const end = rest.indexOf('}')\n if (end < 0) {\n t.rewindTo(startPos)\n throw new RE2JSSyntaxException(Parser.ERR_INVALID_CHAR_RANGE, t.rest())\n }\n name = rest.substring(0, end) // e.g. \"Han\"\n t.skipString(name)\n t.skip(1)\n // Don't use skip(end) because it assumes UTF-16 coding, and\n // StringIterator doesn't guarantee that.\n }\n // Group can have leading negation too.\n // \\p{^Han} == \\P{Han}, \\P{^Han} == \\p{Han}.\n if (!(name.length === 0) && name.codePointAt(0) === Codepoint.CODES.get('^')) {\n sign = 0 - sign // -sign\n name = name.substring(1)\n }\n\n const pair = Parser.unicodeTable(name)\n if (pair === null) {\n throw new RE2JSSyntaxException(Parser.ERR_INVALID_CHAR_RANGE, t.from(startPos))\n }\n\n const tab = pair.first\n const fold = pair.second // fold-equivalent table\n // Variation of CharClass.appendGroup() for tables.\n if ((this.flags & RE2Flags.FOLD_CASE) === 0 || fold === null) {\n cc.appendTableWithSign(tab, sign)\n } else {\n // Merge and clean tab and fold in a temporary buffer.\n // This is necessary for the negative case and just tidy\n // for the positive case.\n const tmp = new CharClass().appendTable(tab).appendTable(fold).cleanClass().toArray()\n cc.appendClassWithSign(tmp, sign)\n }\n return true\n }\n\n // parseClass parses a character class and pushes it onto the parse stack.\n //\n // NOTES:\n // Pre: at '['; Post: after ']'.\n // Mutates stack. Advances iterator. May throw.\n parseClass(t) {\n const startPos = t.pos()\n t.skip(1) // '['\n const re = this.newRegexp(Regexp.Op.CHAR_CLASS)\n re.flags = this.flags\n const cc = new CharClass()\n let sign = +1\n\n if (t.more() && t.lookingAt('^')) {\n sign = -1\n t.skip(1) // '^'\n // If character class does not match \\n, add it here,\n // so that negation later will do the right thing.\n if ((this.flags & RE2Flags.CLASS_NL) === 0) {\n cc.appendRange(Codepoint.CODES.get('\\n'), Codepoint.CODES.get('\\n'))\n }\n }\n\n let first = true // ']' and '-' are okay as first char in class\n while (!t.more() || t.peek() !== Codepoint.CODES.get(']') || first) {\n // POSIX: - is only okay unescaped as first or last in class.\n // Perl: - is okay anywhere.\n if (t.more() && t.lookingAt('-') && (this.flags & RE2Flags.PERL_X) === 0 && !first) {\n const s = t.rest()\n if (s === '-' || !s.startsWith('-]')) {\n t.rewindTo(startPos)\n throw new RE2JSSyntaxException(Parser.ERR_INVALID_CHAR_RANGE, t.rest())\n }\n }\n\n first = false\n const beforePos = t.pos()\n // Look for POSIX [:alnum:] etc.\n if (t.lookingAt('[:')) {\n if (this.parseNamedClass(t, cc)) {\n continue\n }\n t.rewindTo(beforePos)\n }\n\n // Look for Unicode character group like \\p{Han}.\n if (this.parseUnicodeClass(t, cc)) {\n continue\n }\n\n // Look for Perl character class symbols (extension).\n if (this.parsePerlClassEscape(t, cc)) {\n continue\n }\n t.rewindTo(beforePos)\n\n // Single character or simple range.\n const lo = Parser.parseClassChar(t, startPos)\n let hi = lo\n if (t.more() && t.lookingAt('-')) {\n t.skip(1)\n if (t.more() && t.lookingAt(']')) {\n // [a-] means (a|-) so check for final ].\n t.skip(-1)\n } else {\n hi = Parser.parseClassChar(t, startPos)\n if (hi < lo) {\n throw new RE2JSSyntaxException(Parser.ERR_INVALID_CHAR_RANGE, t.from(beforePos))\n }\n }\n }\n if ((this.flags & RE2Flags.FOLD_CASE) === 0) {\n cc.appendRange(lo, hi)\n } else {\n cc.appendFoldedRange(lo, hi)\n }\n }\n t.skip(1) // ']'\n\n cc.cleanClass()\n if (sign < 0) {\n cc.negateClass()\n }\n re.runes = cc.toArray()\n this.push(re)\n }\n}\n\nexport { Parser }\n","import { Codepoint } from './Codepoint'\nimport { RE2Flags } from './RE2Flags'\nimport { MachineInputBase } from './MachineInput'\nimport { Utils } from './Utils'\nimport { Inst } from './Inst'\n\n// A logical thread in the NFA.\nclass Thread {\n constructor() {\n this.inst = null\n this.cap = []\n }\n}\n\n// A queue is a 'sparse array' holding pending threads of execution. See:\n// research.swtch.com/2008/03/using-uninitialized-memory-for-fun-and.html\nclass Queue {\n constructor() {\n this.sparse = [] // may contain stale but in-bounds values.\n this.densePcs = [] // may contain stale pc in slots >= size\n this.denseThreads = [] // may contain stale Thread in slots >= size\n this.size = 0\n }\n\n contains(pc) {\n const j = this.sparse[pc]\n return j < this.size && this.densePcs[j] === pc\n }\n\n isEmpty() {\n return this.size === 0\n }\n\n add(pc) {\n const j = this.size++\n this.sparse[pc] = j\n this.denseThreads[j] = null\n this.densePcs[j] = pc\n return j\n }\n\n clear() {\n this.sparse = []\n this.densePcs = []\n this.denseThreads = []\n this.size = 0\n }\n\n toString() {\n let out = '{'\n for (let i = 0; i < this.size; i++) {\n if (i !== 0) {\n out += ', '\n }\n out += this.densePcs[i]\n }\n out += '}'\n return out\n }\n}\n// A Machine matches an input string of Unicode characters against an\n// RE2 instance using a simple NFA.\n//\n// Called by RE2.doExecute.\nclass Machine {\n static fromRE2(re2) {\n const m = new Machine()\n m.prog = re2.prog\n m.re2 = re2\n m.q0 = new Queue(m.prog.numInst())\n m.q1 = new Queue(m.prog.numInst())\n m.pool = []\n m.poolSize = 0\n m.matched = false\n m.matchcap = Array(m.prog.numCap < 2 ? 2 : m.prog.numCap).fill(0)\n m.ncap = 0\n return m\n }\n\n static fromMachine(machine) {\n const m = new Machine()\n m.re2 = machine.re2\n m.prog = machine.prog\n m.q0 = machine.q0\n m.q1 = machine.q1\n m.pool = machine.pool\n m.poolSize = machine.poolSize\n m.matched = machine.matched\n m.matchcap = machine.matchcap\n m.ncap = machine.ncap\n return m\n }\n\n // init() reinitializes an existing Machine for re-use on a new input.\n init(ncap) {\n this.ncap = ncap\n if (ncap > this.matchcap.length) {\n this.initNewCap(ncap)\n } else {\n this.resetCap(ncap)\n }\n }\n\n resetCap(ncap) {\n for (let i = 0; i < this.poolSize; i++) {\n const t = this.pool[i]\n t.cap = Array(ncap).fill(0)\n }\n }\n\n initNewCap(ncap) {\n for (let i = 0; i < this.poolSize; i++) {\n const t = this.pool[i]\n t.cap = Array(ncap).fill(0)\n }\n this.matchcap = Array(ncap).fill(0)\n }\n\n submatches() {\n if (this.ncap === 0) {\n return Utils.emptyInts()\n }\n return this.matchcap.slice(0, this.ncap)\n }\n\n // alloc() allocates a new thread with the given instruction.\n // It uses the free pool if possible.\n alloc(inst) {\n let t\n if (this.poolSize > 0) {\n this.poolSize--\n t = this.pool[this.poolSize]\n } else {\n t = new Thread()\n }\n t.inst = inst\n return t\n }\n\n // Frees all threads on the thread queue, returning them to the free pool.\n freeQueue(queue, from = 0) {\n const numberOfThread = queue.size - from\n const requiredPoolLength = this.poolSize + numberOfThread\n if (this.pool.length < requiredPoolLength) {\n this.pool = this.pool.slice(0, Math.max(this.pool.length * 2, requiredPoolLength))\n }\n for (let i = from; i < queue.size; i++) {\n const t = queue.denseThreads[i]\n if (t !== null) {\n this.pool[this.poolSize] = t\n this.poolSize++\n }\n }\n queue.clear()\n }\n\n // freeThread() returns t to the free pool.\n freeThread(t) {\n if (this.pool.length <= this.poolSize) {\n this.pool = this.pool.slice(0, this.pool.length * 2)\n }\n this.pool[this.poolSize] = t\n this.poolSize++\n }\n\n match(input, pos, anchor) {\n const startCond = this.re2.cond\n if (startCond === Utils.EMPTY_ALL) {\n return false\n }\n if ((anchor === RE2Flags.ANCHOR_START || anchor === RE2Flags.ANCHOR_BOTH) && pos !== 0) {\n return false\n }\n this.matched = false\n this.matchcap = Array(this.prog.numCap).fill(-1)\n\n let runq = this.q0\n let nextq = this.q1\n let r = input.step(pos)\n let rune = r >> 3\n let width = r & 7\n let rune1 = -1\n let width1 = 0\n\n if (r !== MachineInputBase.EOF()) {\n r = input.step(pos + width)\n rune1 = r >> 3\n width1 = r & 7\n }\n\n let flag\n if (pos === 0) {\n flag = Utils.emptyOpContext(-1, rune)\n } else {\n flag = input.context(pos)\n }\n // eslint-disable-next-line no-constant-condition\n while (true) {\n if (runq.isEmpty()) {\n if ((startCond & Utils.EMPTY_BEGIN_TEXT) !== 0 && pos !== 0) {\n break\n }\n if (this.matched) {\n break\n }\n if (\n !(this.re2.prefix.length === 0) &&\n rune1 !== this.re2.prefixRune &&\n input.canCheckPrefix()\n ) {\n const advance = input.index(this.re2, pos)\n if (advance < 0) {\n break\n }\n pos += advance\n r = input.step(pos)\n rune = r >> 3\n width = r & 7\n r = input.step(pos + width)\n rune1 = r >> 3\n width1 = r & 7\n }\n }\n if (!this.matched && (pos === 0 || anchor === RE2Flags.UNANCHORED)) {\n if (this.ncap > 0) {\n this.matchcap[0] = pos\n }\n this.add(runq, this.prog.start, pos, this.matchcap, flag, null)\n }\n\n const nextPos = pos + width\n flag = input.context(nextPos)\n this.step(runq, nextq, pos, nextPos, rune, flag, anchor, pos === input.endPos())\n\n if (width === 0) {\n break\n }\n if (this.ncap === 0 && this.matched) {\n break\n }\n\n pos += width\n rune = rune1\n width = width1\n if (rune !== -1) {\n r = input.step(pos + width)\n rune1 = r >> 3\n width1 = r & 7\n }\n const tmpq = runq\n runq = nextq\n nextq = tmpq\n }\n this.freeQueue(nextq)\n return this.matched\n }\n\n step(runq, nextq, pos, nextPos, c, nextCond, anchor, atEnd) {\n const longest = this.re2.longest\n for (let j = 0; j < runq.size; j++) {\n let t = runq.denseThreads[j]\n if (t === null) {\n continue\n }\n if (longest && this.matched && this.ncap > 0 && this.matchcap[0] < t.cap[0]) {\n this.freeThread(t)\n continue\n }\n\n const i = t.inst\n let add = false\n switch (i.op) {\n case Inst.MATCH:\n if (anchor === RE2Flags.ANCHOR_BOTH && !atEnd) {\n break\n }\n if (this.ncap > 0 && (!longest || !this.matched || this.matchcap[1] < pos)) {\n t.cap[1] = pos\n this.matchcap = t.cap.slice(0, this.ncap)\n }\n if (!longest) {\n this.freeQueue(runq, j + 1)\n }\n this.matched = true\n break\n case Inst.RUNE:\n add = i.matchRune(c)\n break\n case Inst.RUNE1:\n add = c === i.runes[0]\n break\n case Inst.RUNE_ANY:\n add = true\n break\n case Inst.RUNE_ANY_NOT_NL:\n add = c !== Codepoint.CODES.get('\\n')\n break\n default:\n throw new Error('bad inst')\n }\n if (add) {\n t = this.add(nextq, i.out, nextPos, t.cap, nextCond, t)\n }\n if (t !== null) {\n this.freeThread(t)\n runq.denseThreads[j] = null\n }\n }\n runq.clear()\n }\n\n add(q, pc, pos, cap, cond, t) {\n if (pc === 0) {\n return t\n }\n if (q.contains(pc)) {\n return t\n }\n\n const d = q.add(pc)\n const inst = this.prog.inst[pc]\n switch (inst.op) {\n case Inst.FAIL:\n break\n case Inst.ALT:\n case Inst.ALT_MATCH:\n t = this.add(q, inst.out, pos, cap, cond, t)\n t = this.add(q, inst.arg, pos, cap, cond, t)\n break\n case Inst.EMPTY_WIDTH:\n if ((inst.arg & ~cond) === 0) {\n t = this.add(q, inst.out, pos, cap, cond, t)\n }\n break\n case Inst.NOP:\n t = this.add(q, inst.out, pos, cap, cond, t)\n break\n case Inst.CAPTURE:\n if (inst.arg < this.ncap) {\n const opos = cap[inst.arg]\n cap[inst.arg] = pos\n this.add(q, inst.out, pos, cap, cond, null)\n cap[inst.arg] = opos\n } else {\n t = this.add(q, inst.out, pos, cap, cond, t)\n }\n break\n case Inst.MATCH:\n case Inst.RUNE:\n case Inst.RUNE1:\n case Inst.RUNE_ANY:\n case Inst.RUNE_ANY_NOT_NL:\n if (t === null) {\n t = this.alloc(inst)\n } else {\n t.inst = inst\n }\n if (this.ncap > 0 && t.cap !== cap) {\n t.cap = cap.slice(0, this.ncap)\n }\n q.denseThreads[d] = t\n t = null\n break\n default:\n throw new Error('unhandled')\n }\n return t\n }\n}\n\nexport { Machine }\n","import { RE2Flags } from './RE2Flags'\nimport { Utils } from './Utils'\nimport { MatcherInput, MatcherInputBase } from './MatcherInput'\nimport { MachineInput } from './MachineInput'\nimport { Compiler } from './Compiler'\nimport { Simplify } from './Simplify'\nimport { Parser } from './Parser'\nimport { Machine } from './Machine'\n\nclass AtomicReference {\n constructor(initialValue) {\n this.value = initialValue\n }\n\n // Returns the current value\n get() {\n return this.value\n }\n\n // Sets to the given value\n set(newValue) {\n this.value = newValue\n }\n\n // Atomically sets to the given value and returns true if the current value == the expected value\n compareAndSet(expect, update) {\n if (this.value === expect) {\n this.value = update\n return true\n }\n return false\n }\n}\n\n/**\n * An RE2 class instance is a compiled representation of an RE2 regular expression, independent of\n * the public Java-like Pattern/Matcher API.\n *\n * <p>\n * This class also contains various implementation helpers for RE2 regular expressions.\n *\n * <p>\n * Use the {@link #quoteMeta(String)} utility function to quote all regular expression\n * metacharacters in an arbitrary string.\n *\n */\nclass RE2 {\n // This is visible for testing.\n static initTest(expr) {\n const re2 = RE2.compile(expr)\n const res = new RE2(re2.expr, re2.prog, re2.numSubexp, re2.longest)\n res.cond = re2.cond\n res.prefix = re2.prefix\n res.prefixUTF8 = re2.prefixUTF8\n res.prefixComplete = re2.prefixComplete\n res.prefixRune = re2.prefixRune\n return res\n }\n\n /**\n * Parses a regular expression and returns, if successful, an {@code RE2} instance that can be\n * used to match against text.\n *\n * <p>\n * When matching against text, the regexp returns a match that begins as early as possible in the\n * input (leftmost), and among those it chooses the one that a backtracking search would have\n * found first. This so-called leftmost-first matching is the same semantics that Perl, Python,\n * and other implementations use, although this package implements it without the expense of\n * backtracking. For POSIX leftmost-longest matching, see {@link #compilePOSIX}.\n */\n static compile(expr) {\n return RE2.compileImpl(expr, RE2Flags.PERL, false)\n }\n\n /**\n * {@code compilePOSIX} is like {@link #compile} but restricts the regular expression to POSIX ERE\n * (egrep) syntax and changes the match semantics to leftmost-longest.\n *\n * <p>\n * That is, when matching against text, the regexp returns a match that begins as early as\n * possible in the input (leftmost), and among those it chooses a match that is as long as\n * possible. This so-called leftmost-longest matching is the same semantics that early regular\n * expression implementations used and that POSIX specifies.\n *\n * <p>\n * However, there can be multiple leftmost-longest matches, with different submatch choices, and\n * here this package diverges from POSIX. Among the possible leftmost-longest matches, this\n * package chooses the one that a backtracking search would have found first, while POSIX\n * specifies that the match be chosen to maximize the length of the first subexpression, then the\n * second, and so on from left to right. The POSIX rule is computationally prohibitive and not\n * even well-defined. See http://swtch.com/~rsc/regexp/regexp2.html#posix\n */\n static compilePOSIX(expr) {\n return RE2.compileImpl(expr, RE2Flags.POSIX, true)\n }\n\n // Exposed to ExecTests.\n static compileImpl(expr, mode, longest) {\n let re = Parser.parse(expr, mode)\n const maxCap = re.maxCap()\n re = Simplify.simplify(re)\n\n const prog = Compiler.compileRegexp(re)\n const re2 = new RE2(expr, prog, maxCap, longest)\n\n const [prefixCompl, prefixStr] = prog.prefix()\n re2.prefixComplete = prefixCompl\n re2.prefix = prefixStr\n re2.prefixUTF8 = Utils.stringToUtf8ByteArray(re2.prefix)\n\n if (re2.prefix.length > 0) {\n re2.prefixRune = re2.prefix.codePointAt(0)\n }\n re2.namedGroups = re.namedGroups\n return re2\n }\n\n /**\n * Returns true iff textual regular expression {@code pattern} matches string {@code s}.\n *\n * <p>\n * More complicated queries need to use {@link #compile} and the full {@code RE2} interface.\n */\n // This is visible for testing.\n static match(pattern, s) {\n return RE2.compile(pattern).match(s)\n }\n\n constructor(expr, prog, numSubexp = 0, longest = 0) {\n this.expr = expr // as passed to Compile\n this.prog = prog // compiled program\n this.numSubexp = numSubexp\n this.longest = longest\n this.cond = prog.startCond() // EMPTY_* bitmask: empty-width conditions\n this.prefix = null // required UTF-16 prefix in unanchored matches\n this.prefixUTF8 = null // required UTF-8 prefix in unanchored matches\n this.prefixComplete = false // true if prefix is the entire regexp\n this.prefixRune = 0 // first rune in prefix\n this.pooled = new AtomicReference() // Cache of machines for running regexp. Forms a Treiber stack.\n }\n\n /**\n * Returns the number of parenthesized subexpressions in this regular expression.\n */\n numberOfCapturingGroups() {\n return this.numSubexp\n }\n\n // get() returns a machine to use for matching |this|. It uses |this|'s\n // machine cache if possible, to avoid unnecessary allocation.\n get() {\n // Pop a machine off the stack if available.\n let head\n\n do {\n head = this.pooled.get()\n } while (head && !this.pooled.compareAndSet(head, head.next))\n\n return head\n }\n\n // Clears the memory associated with this machine.\n reset() {\n this.pooled.set(null)\n }\n\n // put() returns a machine to |this|'s machine cache. There is no attempt to\n // limit the size of the cache, so it will grow to the maximum number of\n // simultaneous matches run using |this|. (The cache empties when |this|\n // gets garbage collected or reset is called.)\n put(m, isNew) {\n // To avoid allocation in the single-thread or uncontended case, reuse a node only if\n // it was the only element in the stack when it was popped, and it's the only element\n // in the stack when it's pushed back after use.\n let head = this.pooled.get()\n do {\n head = this.pooled.get()\n if (!isNew && head) {\n // If an element had a null next pointer and it was previously in the stack, another thread\n // might be trying to pop it out right now, and if it sees the same node now in the\n // stack the pop will succeed, but the new top of the stack will be the stale (null) value\n // of next. Allocate a new Machine so that the CAS will not succeed if this node has been\n // popped and re-pushed.\n m = Machine.fromMachine(m)\n isNew = true\n }\n\n // Without this comparison, TSAN will complain about a race condition:\n // Thread A, B, and C all attempt to do a match on the same pattern.\n //\n // A: Allocates Machine 1; executes match; put machine 1. State is now:\n //\n // pooled -> machine 1 -> null\n //\n // B reads pooled, sees machine 1\n //\n // C reads pooled, sees machine 1\n //\n // B successfully CASes pooled to null\n //\n // B executes match; put machine 1, which involves setting machine1.next to\n // null (even though it's already null); preempted before CAS\n //\n // C resumes, and reads machine1.next in order to execute cas(head, head.next)\n //\n // There is no happens-before relationship between B's redundant null write\n // and C's read, thus triggering TSAN.\n //\n // Not needed for JS code\n if (m.next !== head) {\n m.next = head\n }\n } while (!this.pooled.compareAndSet(head, m))\n }\n\n toString() {\n return this.expr\n }\n\n // doExecute() finds the leftmost match in the input and returns\n // the position of its subexpressions.\n // Derived from exec.go.\n doExecute(input, pos, anchor, ncap) {\n let m = this.get()\n // The Treiber stack cannot reuse nodes, unless the node to be reused has only ever been at\n // the bottom of the stack (i.e., next == null).\n let isNew = false\n if (!m) {\n m = Machine.fromRE2(this)\n isNew = true\n } else if (m.next !== null) {\n m = Machine.fromMachine(m)\n isNew = true\n }\n\n m.init(ncap)\n const cap = m.match(input, pos, anchor) ? m.submatches() : null\n this.put(m, isNew)\n return cap\n }\n\n match(s) {\n return this.doExecute(MachineInput.fromUTF16(s), 0, RE2Flags.UNANCHORED, 0) !== null\n }\n\n /**\n * Matches the regular expression against input starting at position start and ending at position\n * end, with the given anchoring. Records the submatch boundaries in group, which is [start, end)\n * pairs of byte offsets. The number of boundaries needed is inferred from the size of the group\n * array. It is most efficient not to ask for submatch boundaries.\n *\n * @param input the input byte array\n * @param start the beginning position in the input\n * @param end the end position in the input\n * @param anchor the anchoring flag (UNANCHORED, ANCHOR_START, ANCHOR_BOTH)\n * @param group the array to fill with submatch positions\n * @param ngroup the number of array pairs to fill in\n * @return true if a match was found\n */\n matchWithGroup(input, start, end, anchor, ngroup) {\n if (!(input instanceof MatcherInputBase)) {\n input = MatcherInput.utf16(input)\n }\n\n return this.matchMachineInput(input, start, end, anchor, ngroup)\n }\n\n matchMachineInput(input, start, end, anchor, ngroup) {\n if (start > end) {\n return [false, null]\n }\n const machineInput = input.isUTF16Encoding()\n ? MachineInput.fromUTF16(input.asCharSequence(), 0, end)\n : MachineInput.fromUTF8(input.asBytes(), 0, end)\n\n const groupMatch = this.doExecute(machineInput, start, anchor, 2 * ngroup)\n\n if (groupMatch === null) {\n return [false, null]\n }\n return [true, groupMatch]\n }\n\n /**\n * Returns true iff this regexp matches the UTF-8 byte array {@code b}.\n */\n // This is visible for testing.\n matchUTF8(b) {\n return this.doExecute(MachineInput.fromUTF8(b), 0, RE2Flags.UNANCHORED, 0) !== null\n }\n\n /**\n * Returns a copy of {@code src} in which all matches for this regexp have been replaced by\n * {@code repl}. No support is provided for expressions (e.g. {@code \\1} or {@code $1}) in the\n * replacement string.\n */\n // This is visible for testing.\n replaceAll(src, repl) {\n return this.replaceAllFunc(src, () => repl, 2 * src.length + 1)\n }\n\n /**\n * Returns a copy of {@code src} in which only the first match for this regexp has been replaced\n * by {@code repl}. No support is provided for expressions (e.g. {@code \\1} or {@code $1}) in the\n * replacement string.\n */\n // This is visible for testing.\n replaceFirst(src, repl) {\n return this.replaceAllFunc(src, () => repl, 1)\n }\n\n /**\n * Returns a copy of {@code src} in which at most {@code maxReplaces} matches for this regexp have\n * been replaced by the return value of of function {@code repl} (whose first argument is the\n * matched string). No support is provided for expressions (e.g. {@code \\1} or {@code $1}) in the\n * replacement string.\n */\n // This is visible for testing.\n replaceAllFunc(src, replFunc, maxReplaces) {\n let lastMatchEnd = 0\n let searchPos = 0\n let out = ''\n\n const input = MachineInput.fromUTF16(src)\n let numReplaces = 0\n while (searchPos <= src.length) {\n const a = this.doExecute(input, searchPos, RE2Flags.UNANCHORED, 2)\n if (a === null || a.length === 0) {\n break\n }\n out += src.substring(lastMatchEnd, a[0])\n\n if (a[1] > lastMatchEnd || a[0] === 0) {\n out += replFunc(src.substring(a[0], a[1]))\n numReplaces++\n }\n\n lastMatchEnd = a[1]\n const width = input.step(searchPos) & 7\n if (searchPos + width > a[1]) {\n searchPos += width\n } else if (searchPos + 1 > a[1]) {\n searchPos++\n } else {\n searchPos = a[1]\n }\n if (numReplaces >= maxReplaces) {\n break\n }\n }\n\n out += src.substring(lastMatchEnd)\n return out\n }\n\n // The number of capture values in the program may correspond\n // to fewer capturing expressions than are in the regexp.\n // For example, \"(a){0}\" turns into an empty program, so the\n // maximum capture in the program is 0 but we need to return\n // an expression for \\1. Pad returns a with -1s appended as needed;\n // the result may alias a.\n pad(a) {\n if (a === null) {\n return null\n }\n\n let n = (1 + this.numSubexp) * 2\n\n if (a.length < n) {\n let a2 = new Array(n).fill(-1)\n for (let i = 0; i < a.length; i++) {\n a2[i] = a[i]\n }\n a = a2\n }\n return a\n }\n\n // Find matches in input.\n allMatches(input, n, deliverFun = (v) => v) {\n let result = []\n const end = input.endPos()\n if (n < 0) {\n n = end + 1\n }\n\n let pos = 0\n let i = 0\n let prevMatchEnd = -1\n while (i < n && pos <= end) {\n const matches = this.doExecute(input, pos, RE2Flags.UNANCHORED, this.prog.numCap)\n if (matches === null || matches.length === 0) {\n break\n }\n\n let accept = true\n if (matches[1] === pos) {\n if (matches[0] === prevMatchEnd) {\n accept = false\n }\n const r = input.step(pos)\n if (r < 0) {\n pos = end + 1\n } else {\n pos += r & 7\n }\n } else {\n pos = matches[1]\n }\n prevMatchEnd = matches[1]\n\n if (accept) {\n result.push(deliverFun(this.pad(matches)))\n i++\n }\n }\n return result\n }\n\n // Legacy Go-style interface; preserved (package-private) for better\n // test coverage.\n //\n // There are 16 methods of RE2 that match a regular expression and\n // identify the matched text. Their names are matched by this regular\n // expression:\n //\n // find(All)?(UTF8)?(Submatch)?(Index)?\n //\n // If 'All' is present, the routine matches successive non-overlapping\n // matches of the entire expression. Empty matches abutting a\n // preceding match are ignored. The return value is an array\n // containing the successive return values of the corresponding\n // non-All routine. These routines take an extra integer argument, n;\n // if n >= 0, the function returns at most n matches/submatches.\n //\n // If 'UTF8' is present, the argument is a UTF-8 encoded byte[] array;\n // otherwise it is a UTF-16 encoded js string; return values\n // are adjusted as appropriate.\n //\n // If 'Submatch' is present, the return value is an list identifying\n // the successive submatches of the expression. Submatches are\n // matches of parenthesized subexpressions within the regular\n // expression, numbered from left to right in order of opening\n // parenthesis. Submatch 0 is the match of the entire expression,\n // submatch 1 the match of the first parenthesized subexpression, and\n // so on.\n //\n // If 'Index' is present, matches and submatches are identified by\n // byte index pairs within the input string: result[2*n:2*n+1]\n // identifies the indexes of the nth submatch. The pair for n==0\n // identifies the match of the entire expression. If 'Index' is not\n // present, the match is identified by the text of the match/submatch.\n // If an index is negative, it means that subexpression did not match\n // any string in the input.\n\n /**\n * Returns an array holding the text of the leftmost match in {@code b} of this regular\n * expression.\n *\n * <p>\n * A return value of null indicates no match.\n */\n // This is visible for testing.\n findUTF8(b) {\n const a = this.doExecute(MachineInput.fromUTF8(b), 0, RE2Flags.UNANCHORED, 2)\n if (a === null) {\n return null\n }\n return b.slice(a[0], a[1])\n }\n\n /**\n * Returns a two-element array of integers defining the location of the leftmost match in\n * {@code b} of this regular expression. The match itself is at {@code b[loc[0]...loc[1]]}.\n *\n * <p>\n * A return value of null indicates no match.\n */\n // This is visible for testing.\n findUTF8Index(b) {\n const a = this.doExecute(MachineInput.fromUTF8(b), 0, RE2Flags.UNANCHORED, 2)\n if (a === null) {\n return null\n }\n return a.slice(0, 2)\n }\n\n /**\n * Returns a string holding the text of the leftmost match in {@code s} of this regular\n * expression.\n *\n * <p>\n * If there is no match, the return value is an empty string, but it will also be empty if the\n * regular expression successfully matches an empty string. Use {@link #findIndex} or\n * {@link #findSubmatch} if it is necessary to distinguish these cases.\n */\n // This is visible for testing.\n find(s) {\n const a = this.doExecute(MachineInput.fromUTF16(s), 0, RE2Flags.UNANCHORED, 2)\n if (a === null) {\n return ''\n }\n return s.substring(a[0], a[1])\n }\n\n /**\n * Returns a two-element array of integers defining the location of the leftmost match in\n * {@code s} of this regular expression. The match itself is at\n * {@code s.substring(loc[0], loc[1])}.\n *\n * <p>\n * A return value of null indicates no match.\n */\n // This is visible for testing.\n findIndex(s) {\n return this.doExecute(MachineInput.fromUTF16(s), 0, RE2Flags.UNANCHORED, 2)\n }\n\n /**\n * Returns an array of arrays the text of the leftmost match of the regular expression in\n * {@code b} and the matches, if any, of its subexpressions, as defined by the <a\n * href='#submatch'>Submatch</a> description above.\n *\n * <p>\n * A return value of null indicates no match.\n */\n // This is visible for testing.\n findUTF8Submatch(b) {\n const a = this.doExecute(MachineInput.fromUTF8(b), 0, RE2Flags.UNANCHORED, this.prog.numCap)\n if (a === null) {\n return null\n }\n\n const ret = new Array(1 + this.numSubexp).fill(null)\n for (let i = 0; i < ret.length; i++) {\n if (2 * i < a.length && a[2 * i] >= 0) {\n ret[i] = b.slice(a[2 * i], a[2 * i + 1])\n }\n }\n return ret\n }\n\n /**\n * Returns an array holding the index pairs identifying the leftmost match of this regular\n * expression in {@code b} and the matches, if any, of its subexpressions, as defined by the the\n * <a href='#submatch'>Submatch</a> and <a href='#index'>Index</a> descriptions above.\n *\n * <p>\n * A return value of null indicates no match.\n */\n // This is visible for testing.\n findUTF8SubmatchIndex(b) {\n return this.pad(\n this.doExecute(MachineInput.fromUTF8(b), 0, RE2Flags.UNANCHORED, this.prog.numCap)\n )\n }\n\n /**\n * Returns an array of strings holding the text of the leftmost match of the regular expression in\n * {@code s} and the matches, if any, of its subexpressions, as defined by the <a\n * href='#submatch'>Submatch</a> description above.\n *\n * <p>\n * A return value of null indicates no match.\n */\n // This is visible for testing.\n findSubmatch(s) {\n const a = this.doExecute(MachineInput.fromUTF16(s), 0, RE2Flags.UNANCHORED, this.prog.numCap)\n if (a === null) {\n return null\n }\n\n const ret = new Array(1 + this.numSubexp).fill(null)\n for (let i = 0; i < ret.length; i++) {\n if (2 * i < a.length && a[2 * i] >= 0) {\n ret[i] = s.substring(a[2 * i], a[2 * i + 1])\n }\n }\n return ret\n }\n\n /**\n * Returns an array holding the index pairs identifying the leftmost match of this regular\n * expression in {@code s} and the matches, if any, of its subexpressions, as defined by the <a\n * href='#submatch'>Submatch</a> description above.\n *\n * <p>\n * A return value of null indicates no match.\n */\n // This is visible for testing.\n findSubmatchIndex(s) {\n return this.pad(\n this.doExecute(MachineInput.fromUTF16(s), 0, RE2Flags.UNANCHORED, this.prog.numCap)\n )\n }\n\n /**\n * {@code findAllUTF8()} is the <a href='#all'>All</a> version of {@link #findUTF8}; it returns a\n * list of up to {@code n} successive matches of the expression, as defined by the <a\n * href='#all'>All</a> description above.\n *\n * <p>\n * A return value of null indicates no match.\n *\n * TODO(adonovan): think about defining a byte slice view class, like a read-only Go slice backed\n * by |b|.\n */\n // This is visible for testing.\n findAllUTF8(b, n) {\n const result = this.allMatches(MachineInput.fromUTF8(b), n, (match) =>\n b.slice(match[0], match[1])\n )\n if (result.length === 0) {\n return null\n }\n return result\n }\n\n /**\n * {@code findAllUTF8Index} is the <a href='#all'>All</a> version of {@link #findUTF8Index}; it\n * returns a list of up to {@code n} successive matches of the expression, as defined by the <a\n * href='#all'>All</a> description above.\n *\n * <p>\n * A return value of null indicates no match.\n */\n // This is visible for testing.\n findAllUTF8Index(b, n) {\n const result = this.allMatches(MachineInput.fromUTF8(b), n, (match) => match.slice(0, 2))\n if (result.length === 0) {\n return null\n }\n return result\n }\n\n /**\n * {@code findAll} is the <a href='#all'>All</a> version of {@link #find}; it returns a list of up\n * to {@code n} successive matches of the expression, as defined by the <a href='#all'>All</a>\n * description above.\n *\n * <p>\n * A return value of null indicates no match.\n */\n // This is visible for testing.\n findAll(s, n) {\n const result = this.allMatches(MachineInput.fromUTF16(s), n, (match) =>\n s.substring(match[0], match[1])\n )\n if (result.length === 0) {\n return null\n }\n return result\n }\n\n /**\n * {@code findAllIndex} is the <a href='#all'>All</a> version of {@link #findIndex}; it returns a\n * list of up to {@code n} successive matches of the expression, as defined by the <a\n * href='#all'>All</a> description above.\n *\n * <p>\n * A return value of null indicates no match.\n */\n // This is visible for testing.\n findAllIndex(s, n) {\n const result = this.allMatches(MachineInput.fromUTF16(s), n, (match) => match.slice(0, 2))\n if (result.length === 0) {\n return null\n }\n return result\n }\n\n /**\n * {@code findAllUTF8Submatch} is the <a href='#all'>All</a> version of {@link #findUTF8Submatch};\n * it returns a list of up to {@code n} successive matches of the expression, as defined by the <a\n * href='#all'>All</a> description above.\n *\n * <p>\n * A return value of null indicates no match.\n */\n // This is visible for testing.\n findAllUTF8Submatch(b, n) {\n const result = this.allMatches(MachineInput.fromUTF8(b), n, (match) => {\n let slice = new Array((match.length / 2) | 0).fill(null)\n for (let j = 0; j < slice.length; j++) {\n if (match[2 * j] >= 0) {\n slice[j] = b.slice(match[2 * j], match[2 * j + 1])\n }\n }\n return slice\n })\n if (result.length === 0) {\n return null\n }\n return result\n }\n\n /**\n * {@code findAllUTF8SubmatchIndex} is the <a href='#all'>All</a> version of\n * {@link #findUTF8SubmatchIndex}; it returns a list of up to {@code n} successive matches of the\n * expression, as defined by the <a href='#all'>All</a> description above.\n *\n * <p>\n * A return value of null indicates no match.\n */\n // This is visible for testing.\n findAllUTF8SubmatchIndex(b, n) {\n const result = this.allMatches(MachineInput.fromUTF8(b), n)\n if (result.length === 0) {\n return null\n }\n return result\n }\n\n /**\n * {@code findAllSubmatch} is the <a href='#all'>All</a> version of {@link #findSubmatch}; it\n * returns a list of up to {@code n} successive matches of the expression, as defined by the <a\n * href='#all'>All</a> description above.\n *\n * <p>\n * A return value of null indicates no match.\n */\n // This is visible for testing.\n findAllSubmatch(s, n) {\n const result = this.allMatches(MachineInput.fromUTF16(s), n, (match) => {\n let slice = new Array((match.length / 2) | 0).fill(null)\n for (let j = 0; j < slice.length; j++) {\n if (match[2 * j] >= 0) {\n slice[j] = s.substring(match[2 * j], match[2 * j + 1])\n }\n }\n return slice\n })\n if (result.length === 0) {\n return null\n }\n return result\n }\n\n /**\n * {@code findAllSubmatchIndex} is the <a href='#all'>All</a> version of\n * {@link #findSubmatchIndex}; it returns a list of up to {@code n} successive matches of the\n * expression, as defined by the <a href='#all'>All</a> description above.\n *\n * <p>\n * A return value of null indicates no match.\n */\n // This is visible for testing.\n findAllSubmatchIndex(s, n) {\n const result = this.allMatches(MachineInput.fromUTF16(s), n)\n if (result.length === 0) {\n return null\n }\n return result\n }\n}\n\nexport { RE2 }\n","import { RE2Flags } from './RE2Flags'\nimport { MatcherInput } from './MatcherInput'\nimport { Matcher } from './Matcher'\nimport { RE2 } from './RE2'\nimport { Utils } from './Utils'\nimport {\n RE2JSException,\n RE2JSSyntaxException,\n RE2JSCompileException,\n RE2JSGroupException,\n RE2JSFlagsException\n} from './exceptions'\n\n/**\n * A compiled representation of an RE2 regular expression\n *\n * <p>\n * The matching functions take {@code String} arguments instead of the more general Java\n * {@code CharSequence} since the latter doesn't provide UTF-16 decoding.\n *\n *\n * @author rsc@google.com (Russ Cox)\n * @class\n */\nclass RE2JS {\n /**\n * Flag: case insensitive matching.\n */\n static CASE_INSENSITIVE = 1\n /**\n * Flag: dot ({@code .}) matches all characters, including newline.\n */\n static DOTALL = 2\n /**\n * Flag: multiline matching: {@code ^} and {@code $} match at beginning and end of line, not just\n * beginning and end of input.\n */\n static MULTILINE = 4\n /**\n * Flag: Unicode groups (e.g. {@code \\p\\ Greek\\} ) will be syntax errors.\n */\n static DISABLE_UNICODE_GROUPS = 8\n /**\n * Flag: matches longest possible string.\n */\n static LONGEST_MATCH = 16\n\n /**\n * Returns a literal pattern string for the specified string.\n *\n * <p>\n * This method produces a string that can be used to create a <code>RE2JS</code> that would\n * match the string <code>s</code> as if it were a literal pattern.\n * </p>\n * Metacharacters or escape sequences in the input sequence will be given no special meaning.\n *\n * @param {string} str The string to be literalized\n * @return {string} A literal string replacement\n */\n static quote(str) {\n return Utils.quoteMeta(str)\n }\n\n /**\n * Helper: create new RE2JS with given regex and flags. Flregex is the regex with flags applied.\n * @param {string} regex\n * @param {number} flags\n * @return {RE2JS}\n */\n static compile(regex, flags = 0) {\n let fregex = regex\n if ((flags & RE2JS.CASE_INSENSITIVE) !== 0) {\n fregex = `(?i)${fregex}`\n }\n if ((flags & RE2JS.DOTALL) !== 0) {\n fregex = `(?s)${fregex}`\n }\n if ((flags & RE2JS.MULTILINE) !== 0) {\n fregex = `(?m)${fregex}`\n }\n if (\n (flags &\n ~(\n RE2JS.MULTILINE |\n RE2JS.DOTALL |\n RE2JS.CASE_INSENSITIVE |\n RE2JS.DISABLE_UNICODE_GROUPS |\n RE2JS.LONGEST_MATCH\n )) !==\n 0\n ) {\n throw new RE2JSFlagsException(\n 'Flags should only be a combination of MULTILINE, DOTALL, CASE_INSENSITIVE, DISABLE_UNICODE_GROUPS, LONGEST_MATCH'\n )\n }\n\n let re2Flags = RE2Flags.PERL\n if ((flags & RE2JS.DISABLE_UNICODE_GROUPS) !== 0) {\n re2Flags &= ~RE2Flags.UNICODE_GROUPS\n }\n\n const p = new RE2JS(regex, flags)\n // The compiled RE2 regexp.\n p.re2Input = RE2.compileImpl(fregex, re2Flags, (flags & RE2JS.LONGEST_MATCH) !== 0)\n return p\n }\n\n /**\n * Matches a string against a regular expression.\n *\n * @param {string} regex the regular expression\n * @param {*} input the input\n * @return {boolean} true if the regular expression matches the entire input\n * @throws RE2JSSyntaxException if the regular expression is malformed\n */\n static matches(regex, input) {\n return RE2JS.compile(regex).matcher(input).matches()\n }\n\n // This is visible for testing.\n static initTest(pattern, flags, re2) {\n if (pattern == null) {\n throw new Error('pattern is null')\n }\n if (re2 == null) {\n throw new Error('re2 is null')\n }\n const p = new RE2JS(pattern, flags)\n // The compiled RE2 regexp.\n p.re2Input = re2\n return p\n }\n\n constructor(pattern, flags) {\n // The pattern string at construction time.\n this.patternInput = pattern\n // The flags at construction time.\n this.flagsInput = flags\n }\n\n /**\n * Releases memory used by internal caches associated with this pattern. Does not change the\n * observable behaviour. Useful for tests that detect memory leaks via allocation tracking.\n */\n reset() {\n this.re2Input.reset()\n }\n\n /**\n * Returns the flags used in the constructor.\n * @return {number}\n */\n flags() {\n return this.flagsInput\n }\n\n /**\n * Returns the pattern used in the constructor.\n * @return {string}\n */\n pattern() {\n return this.patternInput\n }\n\n re2() {\n return this.re2Input\n }\n\n /**\n * Matches a string against a regular expression.\n *\n * @param {*} input the input\n * @return {boolean} true if the regular expression matches the entire input\n */\n matches(input) {\n return this.matcher(input).matches()\n }\n\n /**\n * Creates a new {@code Matcher} matching the pattern against the input.\n *\n * @param {*} input the input string\n * @return {Matcher}\n */\n matcher(input) {\n if (Array.isArray(input)) {\n input = MatcherInput.utf8(input)\n }\n\n return new Matcher(this, input)\n }\n\n /**\n * Splits input around instances of the regular expression. It returns an array giving the strings\n * that occur before, between, and after instances of the regular expression.\n *\n * <p>\n * If {@code limit <= 0}, there is no limit on the size of the returned array. If\n * {@code limit == 0}, empty strings that would occur at the end of the array are omitted. If\n * {@code limit > 0}, at most limit strings are returned. The final string contains the remainder\n * of the input, possibly including additional matches of the pattern.\n *\n * @param {string} input the input string to be split\n * @param {number} limit the limit\n * @return {java.lang.String[]} the split strings\n */\n split(input, limit = 0) {\n const m = this.matcher(input)\n\n const result = []\n let emptiesSkipped = 0\n let last = 0\n\n while (m.find()) {\n if (last === 0 && m.end() === 0) {\n // Zero-width match at the beginning, skip\n last = m.end()\n continue\n }\n\n if (limit > 0 && result.length === limit - 1) {\n // no more room for matches\n break\n }\n\n if (last === m.start()) {\n // Empty match, may or may not be trailing.\n if (limit === 0) {\n emptiesSkipped += 1\n last = m.end()\n continue\n }\n } else {\n // If emptiesSkipped > 0 then limit == 0 and we have non-trailing empty matches to add before\n // this non-empty match.\n while (emptiesSkipped > 0) {\n result.push('')\n emptiesSkipped -= 1\n }\n }\n\n result.push(m.substring(last, m.start()))\n last = m.end()\n }\n\n if (limit === 0 && last !== m.inputLength()) {\n // Unlimited match, no more delimiters but we have a non-empty input at the end. Catch up any skipped empty\n // matches, then emit the final match.\n while (emptiesSkipped > 0) {\n result.push('')\n emptiesSkipped -= 1\n }\n\n result.push(m.substring(last, m.inputLength()))\n }\n\n if (limit !== 0 || result.length === 0) {\n result.push(m.substring(last, m.inputLength()))\n }\n\n return result\n }\n\n toString() {\n return this.patternInput\n }\n\n /**\n * Returns the number of capturing groups in this matcher's pattern. Group zero denotes the entire\n * pattern and is excluded from this count.\n *\n * @return {number} the number of capturing groups in this pattern\n */\n groupCount() {\n return this.re2Input.numberOfCapturingGroups()\n }\n\n /**\n * Return a map of the capturing groups in this matcher's pattern, where key is the name and value\n * is the index of the group in the pattern.\n * @return {*}\n */\n namedGroups() {\n return this.re2Input.namedGroups\n }\n\n equals(other) {\n if (this === other) {\n return true\n }\n if (other === null || this.constructor !== other.constructor) {\n return false\n }\n\n return this.flagsInput === other.flagsInput && this.patternInput === other.patternInput\n }\n}\n\nexport {\n RE2JS,\n RE2JSException,\n RE2JSSyntaxException,\n RE2JSCompileException,\n RE2JSGroupException,\n RE2JSFlagsException\n}\n"],"names":["RE2Flags","static","CLASS_NL","DOT_NL","ONE_LINE","PERL_X","UNICODE_GROUPS","Codepoint","Map","codepoint","s","String","fromCodePoint","toUpperCase","length","sOrigin","codePointAt","toLowerCase","UnicodeTables","this","Lu","C","Cc","Cf","Co","Cs","L","Ll","Lm","Lo","Lt","M","Mc","Me","Mn","N","Nd","Nl","No","P","Pc","Pd","Pe","Pf","Pi","Po","Ps","S","Sc","Sk","Sm","So","Z","Zl","Zp","Zs","Adlam","Ahom","Anatolian_Hieroglyphs","Arabic","Armenian","Avestan","Balinese","Bamum","Bassa_Vah","Batak","Bengali","Bhaiksuki","Bopomofo","Brahmi","Braille","Buginese","Buhid","Canadian_Aboriginal","Carian","Caucasian_Albanian","Chakma","Cham","Cherokee","Chorasmian","Common","Coptic","Cuneiform","Cypriot","Cypro_Minoan","Cyrillic","Deseret","Devanagari","Dives_Akuru","Dogra","Duployan","Egyptian_Hieroglyphs","Elbasan","Elymaic","Ethiopic","Georgian","Glagolitic","Gothic","Grantha","Greek","Gujarati","Gunjala_Gondi","Gurmukhi","Han","Hangul","Hanifi_Rohingya","Hanunoo","Hatran","Hebrew","Hiragana","Imperial_Aramaic","Inherited","Inscriptional_Pahlavi","Inscriptional_Parthian","Javanese","Kaithi","Kannada","Katakana","Kawi","Kayah_Li","Kharoshthi","Khitan_Small_Script","Khmer","Khojki","Khudawadi","Lao","Latin","Lepcha","Limbu","Linear_A","Linear_B","Lisu","Lycian","Lydian","Mahajani","Makasar","Malayalam","Mandaic","Manichaean","Marchen","Masaram_Gondi","Medefaidrin","Meetei_Mayek","Mende_Kikakui","Meroitic_Cursive","Meroitic_Hieroglyphs","Miao","Modi","Mongolian","Mro","Multani","Myanmar","Nabataean","Nag_Mundari","Nandinagari","New_Tai_Lue","Newa","Nko","Nushu","Nyiakeng_Puachue_Hmong","Ogham","Ol_Chiki","Old_Hungarian","Old_Italic","Old_North_Arabian","Old_Permic","Old_Persian","Old_Sogdian","Old_South_Arabian","Old_Turkic","Old_Uyghur","Oriya","Osage","Osmanya","Pahawh_Hmong","Palmyrene","Pau_Cin_Hau","Phags_Pa","Phoenician","Psalter_Pahlavi","Rejang","Runic","Samaritan","Saurashtra","Sharada","Shavian","Siddham","SignWriting","Sinhala","Sogdian","Sora_Sompeng","Soyombo","Sundanese","Syloti_Nagri","Syriac","Tagalog","Tagbanwa","Tai_Le","Tai_Tham","Tai_Viet","Takri","Tamil","Tangsa","Tangut","Telugu","Thaana","Thai","Tibetan","Tifinagh","Tirhuta","Toto","Ugaritic","Vai","Vithkuqi","Wancho","Warang_Citi","Yezidi","Yi","Zanabazar_Square","foldL","foldLl","foldLt","foldLu","foldM","foldMn","foldCommon","foldGreek","foldInherited","Unicode","ranges","r","lo","hi","m","Math","floor","range","MAX_LATIN1","is32","is","Upper","CASE_ORBIT","has","get","l","r1","r2","MAX_ASCII","CODES","simpleFold","Utils","c","rune","out","isPrint","METACHARACTERS","indexOf","toString","str","split","map","op","EMPTY_BEGIN_TEXT","EMPTY_BEGIN_LINE","EMPTY_END_TEXT","EMPTY_END_LINE","isWordRune","EMPTY_WORD_BOUNDARY","EMPTY_NO_WORD_BOUNDARY","join","codePoint","MAX_BMP","globalThis","TextEncoder","Array","from","encode","p","i","charCodeAt","bytes","TextDecoder","decode","Uint8Array","pos","c1","fromCharCode","c2","u","c3","createEnum","values","arguments","undefined","initNum","enumObject","val","keyVal","Object","freeze","MatcherInputBase","getEncoding","Error","isUTF8Encoding","Encoding","UTF_8","isUTF16Encoding","UTF_16","Utf8MatcherInput","constructor","super","asCharSequence","utf8ByteArrayToString","asBytes","Utf16MatcherInput","charSequence","MatcherInput","input","isArray","stringToUtf8ByteArray","RE2JSException","message","name","RE2JSSyntaxException","error","getDescription","getPattern","RE2JSCompileException","RE2JSGroupException","RE2JSFlagsException","Matcher","pattern","patternInput","re2","patternGroupCount","numberOfCapturingGroups","groups","namedGroups","resetMatcherInput","utf8","utf16","reset","matcherInputLength","matcherInput","appendPos","hasMatch","hasGroups","anchorFlag","start","group","groupInt","Number","isFinite","loadGroup","end","substring","groupCount","res","matchMachineInput","matches","genMatch","ANCHOR_BOTH","lookingAt","ANCHOR_START","find","UNANCHORED","startByte","anchor","slice","inputLength","appendReplacement","replacement","perlMode","e","appendReplacementInternalPerl","appendReplacementInternal","last","n","j","groupName","prototype","hasOwnProperty","call","appendTail","replaceAll","replace","replaceFirst","all","MachineInputBase","canCheckPrefix","endPos","MachineUTF8Input","step","EOF","x","index","prefixUTF8","context","lim","emptyOpContext","source","target","fromIndex","targetLength","sourceLength","MachineUTF16Input","charCount","prefix","MachineInput","Regexp","Op","LEFT_PAREN","re","regex","flags","subs","runes","cap","min","max","emptySubs","reinit","appendTo","NO_MATCH","EMPTY_MATCH","STAR","PLUS","QUEST","REPEAT","sub","CAPTURE","LITERAL","NON_GREEDY","CONCAT","ALTERNATE","sep","FOLD_CASE","escapeRune","ANY_CHAR_NOT_NL","ANY_CHAR","BEGIN_TEXT","END_TEXT","WAS_DOLLAR","BEGIN_LINE","END_LINE","WORD_BOUNDARY","NO_WORD_BOUNDARY","CHAR_CLASS","MAX_RUNE","quoteIfHyphen","maxCap","equals","that","Inst","RUNE","RUNE_ANY_NOT_NL","arg","matchRune","r0","equalsIgnoreCase","ALT","ALT_MATCH","EMPTY_WIDTH","MATCH","FAIL","NOP","escapeRunes","RUNE1","RUNE_ANY","Prog","inst","numCap","getInst","pc","numInst","addInst","push","skipNop","isRuneOp","startCond","flag","loop","next","patch","append","l1","l2","len","Frag","nullable","Compiler","f","compile","prog","newInst","nop","fail","cat","f1","f2","alt","nongreedy","quest","star","plus","empty","ANY_RUNE_NOT_NL","ANY_RUNE","bra","ket","Simplify","nre","nsub","simplify","fromRegexp","simplify1","prefixSubs","suffix","nre2","CharGroup","sign","cls","code1","code2","code3","PERL_GROUPS","code4","code5","code6","code7","code8","code9","code10","code11","code12","code13","code14","code15","code16","code17","POSIX_GROUPS","CharClass","result","array","pivotFrom","pivotTo","cmp","left","right","pivotIndex","temp","qsortIntPair","emptyInts","toArray","cleanClass","w","appendLiteral","appendFoldedRange","appendRange","rlo","rhi","MIN_FOLD","MAX_FOLD","appendClass","appendFoldedClass","appendNegatedClass","nextLo","appendTable","table","triple","stride","appendNegatedTable","appendTableWithSign","negateClass","appendClassWithSign","appendGroup","g","foldCase","charClassToString","Pair","first","second","StringIterator","position","rewindTo","more","peek","skip","skipString","pop","rest","startsWith","beforePos","Parser","of","ANY_TABLE","CATEGORIES","FOLD_CATEGORIES","SCRIPTS","FOLD_SCRIPT","stringToRunes","parseInternal","t","parseInt","ERR_INVALID_REPEAT_SIZE","isalnum","parseFloat","dst","src","startPos","ERR_TRAILING_BACKSLASH","bigswitch","nhex","v","unhex","y","ERR_INVALID_ESCAPE","wholeClassPos","ERR_MISSING_BRACKET","parseEscape","wholeRegexp","stack","free","newRegexp","reuse","popToPseudo","isPseudoOp","maybeConcat","re1","concatRunes","newLiteral","minFoldRune","literal","repeat","lastRepeatPos","ERR_INVALID_REPEAT_OP","ERR_MISSING_REPEAT_ARGUMENT","concat","collapse","alternate","cleanAlt","newsubs","fill","splice","factor","old","lensub","lenout","strlen","strflags","istr","istrlen","iflags","same","removeLeadingString","ifirst","leadingRegexp","isCharClass","removeLeadingRegexp","subMax","subJ","tmp","mergeCharClass","literalRegexp","repeatPos","parsePerlFlags","parseVerticalBar","parseRightParen","parseClass","minMax","parseRepeat","savedPos","lit","cc","parseUnicodeClass","parsePerlClassEscape","swapVerticalBar","ERR_MISSING_PAREN","ERR_INVALID_NAMED_CAPTURE","isValidCaptureName","ERR_DUPLICATE_NAMED_CAPTURE","sawFlag","ERR_INVALID_PERL_OP","VERTICAL_BAR","re3","ERR_INTERNAL_ERROR","parseNamedClass","ERR_INVALID_CHAR_RANGE","runeToString","pair","unicodeTable","tab","fold","parseClassChar","Thread","Queue","sparse","densePcs","denseThreads","size","contains","isEmpty","add","clear","Machine","q0","q1","pool","poolSize","matched","matchcap","ncap","machine","init","initNewCap","resetCap","submatches","alloc","freeQueue","queue","numberOfThread","requiredPoolLength","freeThread","match","cond","EMPTY_ALL","runq","nextq","width","rune1","width1","prefixRune","advance","nextPos","tmpq","nextCond","atEnd","longest","q","d","opos","AtomicReference","initialValue","value","set","newValue","compareAndSet","expect","update","RE2","expr","numSubexp","prefixComplete","compileImpl","PERL","POSIX","mode","parse","compileRegexp","prefixCompl","prefixStr","pooled","head","put","isNew","fromMachine","doExecute","fromRE2","fromUTF16","matchWithGroup","ngroup","machineInput","fromUTF8","groupMatch","matchUTF8","b","repl","replaceAllFunc","replFunc","maxReplaces","lastMatchEnd","searchPos","numReplaces","a","pad","a2","allMatches","deliverFun","prevMatchEnd","accept","findUTF8","findUTF8Index","findIndex","findUTF8Submatch","ret","findUTF8SubmatchIndex","findSubmatch","findSubmatchIndex","findAllUTF8","findAllUTF8Index","findAll","findAllIndex","findAllUTF8Submatch","findAllUTF8SubmatchIndex","findAllSubmatch","findAllSubmatchIndex","RE2JS","quoteMeta","fregex","CASE_INSENSITIVE","DOTALL","MULTILINE","DISABLE_UNICODE_GROUPS","LONGEST_MATCH","re2Flags","re2Input","matcher","flagsInput","limit","emptiesSkipped","other"],"mappings":"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,KAAM,MACP,CAAC,KAAM,MACP,CAAC,KAAM,MACP,CAAC,KAAM,MACP,CAAC,KAAM,MACP,CAAC,KAAM,MACP,CAAC,KAAM,MACP,CAAC,KAAM,MACP,CAAC,KAAM,MACP,CAAC,KAAM,MACP,CAAC,KAAM,MACP,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,MACR,CAAC,KAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,MAAO,OACR,CAAC,OAAQ,QACT,CAAC,OAAQ,QACT,CAAC,OAAQ,QACT,CAAC,OAAQ,QACT,CAAC,OAAQ,QACT,CAAC,OAAQ,QACT,CAAC,OAAQ,QACT,CAAC,OAAQ,QACT,CAAC,OAAQ,QACT,CAAC,OAAQ,QACT,CAAC,OAAQ,QACT,CAAC,OAAQ,QACT,CAAC,OAAQ,QACT,CAAC,OAAQ,QACT,CAAC,OAAQ,QACT,CAAC,OAAQ,QACT,CAAC,OAAQ,QACT,CAAC,OAAQ,QACT,CAAC,OAAQ,QACT,CAAC,OAAQ,QACT,CAAC,OAAQ,QACT,CAAC,OAAQ,QACT,CAAC,OAAQ,QACT,CAAC,OAAQ,QACT,CAAC,OAAQ,QACT,CAAC,OAAQ,QACT,CAAC,OAAQ,QACT,CAAC,OAAQ,QACT,CAAC,OAAQ,QACT,CAAC,OAAQ,QACT,CAAC,OAAQ,QACT,CAAC,OAAQ,QACT,CAAC,OAAQ,QACT,CAAC,OAAQ,QACT,CAAC,OAAQ,QACT,CAAC,OAAQ,QACT,CAAC,OAAQ,QACT,CAAC,OAAQ,QACT,CAAC,OAAQ,QACT,CAAC,OAAQ,QACT,CAAC,OAAQ,QACT,CAAC,OAAQ,QACT,CAAC,OAAQ,QACT,CAAC,OAAQ,QACT,CAAC,OAAQ,QACT,CAAC,OAAQ,QACT,CAAC,OAAQ,QACT,CAAC,OAAQ,QACT,CAAC,OAAQ,QACT,CAAC,OAAQ,QACT,CAAC,OAAQ,QACT,CAAC,OAAQ,QACT,CAAC,OAAQ,QACT,CAAC,OAAQ,QACT,CAAC,OAAQ,QACT,CAAC,OAAQ,QACT,CAAC,OAAQ,QACT,CAAC,OAAQ,QACT,CAAC,OAAQ,QACT,CAAC,OAAQ,QACT,CAAC,OAAQ,QACT,CAAC,OAAQ,QACT,CAAC,OAAQ,QACT,CAAC,OAAQ,QACT,CAAC,OAAQ,QACT,CAAC,OAAQ,QACT,CAAC,OAAQ,QACT,CAAC,OAAQ,UAEXP,SAAW,CACT,CAAC,EAAG,GAAI,GACR,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,KACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,KAAM,KACZ,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,KACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,KACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,KACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,KACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,KACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,OACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,KACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,KACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,IACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,IACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,IACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,KACjB,CAAC,OAAQ,OAAQ,KACjB,CAAC,OAAQ,OAAQ,KACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,IACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,IACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,IACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,IACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,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AM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,IAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,MAAO,MACd,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,KACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,KACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,KACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,OAAQ,GAChB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,IACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,IACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,KACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,MACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,IAEnBA,aAAe,CAAC,CAAC,IAAK,IAAK,IAC3BA,UAAY,CACV,CAAC,GAAI,IAAK,GACV,CAAC,IAAK,IAAK,IACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,IACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,KAAM,GACZ,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,IAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,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AAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,KACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,IAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,MACb,CAAC,KAAM,KAAM,GACb,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,KACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,KACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,C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AAK,GACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,KAAM,GACZ,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,OACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,OACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAA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GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,KACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,KACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,KACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,KACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,KACf,CAAC,MAAO,MAAO,KACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,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KAAM,KAAM,IACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,KACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,KACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,KACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,KACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,KACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,KACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,KACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,KACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,KACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,KACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,KACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,KAAO,GACf,CAAC,MAAO,MAAO,KACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,KACf,CAAC,MAAO,MAAO,KACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,KACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,OACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,IAEnBA,UAAY,CACV,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,MACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,MAAO,MAAO,IAEjBA,UAAY,CACV,CAAC,IAAK,IAAK,GACX,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,KACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,KACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,KACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,KACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,OACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,KACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,KACf,CAAC,MAAO,MAAO,KACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,KACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,KACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,KACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,KACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,KACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,OAAQ,OAChB,CAAC,OAAQ,OAAQ,MACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,IACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,KACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,IACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,IAEnBA,cAAgB,CACd,CAAC,IAAK,IAAK,IACX,CAAC,KAAM,KAAM,IAEfA,SAAW,CACT,CAAC,GAAI,GAAI,GACT,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,GACX,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,KACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,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M,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,KACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,KACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,OACf,CAAC,MAAO,MAAO,KACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAA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,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,KACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,OACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,KACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,KACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,KACf,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,KACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf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AAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,IACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,IACjB,CAAC,OAAQ,OAAQ,IAEnBA,kBAAoB,CAAC,CAAC,IAAK,IAAK,KAChCA,cAAgB,CACd,CAAC,IAAK,KAAM,GACZ,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IAEjBA,iBAAmB,CACjB,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IAEjBA,eAAiB,CACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IAEjBA,oBAAsB,CAAC,CAAC,MAAO,MAAO,IACtCA,gBAAkB,CAChB,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,IAEnBA,eAAiB,CAAC,CAAC,MAAO,MAAO,IACjCA,kBAAoB,CAClB,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IAEjBA,mBAAqB,CACnB,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IAEjBA,aAAe,CAAC,CAAC,MAAO,MAAO,IAC/BA,gBAAkB,CAChB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,IAEnBA,4BAA8B,CAAC,CAAC,MAAO,MAAO,IAC9CA,eAAiB,CAAC,CAAC,MAAO,MAAO,IACjCA,eAAiB,CAAC,CAAC,MAAO,MAAO,IACjCA,gBAAkB,CAChB,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,IAEnBA,gBAAkB,CAChB,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IAEjBA,kBAAoB,CAClB,CAAC,MAAO,MAAO,GACf,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,IAEnBA,cAAgB,CAAC,CAAC,MAAO,MAAO,IAChCA,eAAiB,CACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IAEjBA,aAAe,CACb,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,GACX,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,KACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,MAAO,OACd,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,OAAQ,OAChB,CAAC,OAAQ,OAAQ,IAEnBA,iBAAmB,CAAC,CAAC,IAAK,IAAK,MAC/BA,gBAAkB,CAChB,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IAEfA,qBAAuB,CACrB,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IAEjBA,gBAAkB,CAChB,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IAEfA,WAAa,CACX,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,IAEnBA,cAAgB,CACd,CAAC,KAAM,KAAM,GACb,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IAEjBA,uBAAyB,CACvB,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IAEjBA,eAAiB,CAAC,CAAC,KAAM,KAAM,IAC/BA,cAAgB,CACd,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IAEjBA,cAAgB,CACd,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IAEjBA,gBAAkB,CAChB,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,IACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,IAEnBA,wBAA0B,CACxB,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IAEjBA,iBAAmB,CACjB,CAAC,IAAK,IAAK,GACX,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,KACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,KACf,CAAC,MAAO,OAAQ,OAChB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,IAEnBA,qBAAuB,CACrB,CAAC,IAAK,IAAK,IACX,CAAC,KAAM,KAAM,IAEfA,6BAA+B,CAC7B,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IAEjBA,8BAAgC,CAC9B,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IAEjBA,gBAAkB,CAChB,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IAEjBA,cAAgB,CACd,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IAEjBA,eAAiB,CACf,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IAEfA,gBAAkB,CAChB,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,KACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,IACjB,CAAC,OAAQ,OAAQ,IAEnBA,YAAc,CACZ,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IAEjBA,gBAAkB,CAChB,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IAEjBA,kBAAoB,CAClB,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IAEjBA,2BAA6B,CAC3B,CAAC,MAAO,OAAQ,MAChB,CAAC,OAAQ,OAAQ,IAEnBA,aAAe,CACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IAEfA,cAAgB,CACd,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IAEjBA,iBAAmB,CACjB,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IAEjBA,WAAa,CACX,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IAEfA,aAAe,CACb,CAAC,GAAI,GAAI,GACT,CAAC,GAAI,IAAK,GACV,CAAC,IAAK,IAAK,IACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,GACX,CAAC,IAAK,IAAK,GACX,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IACb,CAAC,KAAM,KAAM,GACb,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,IAEnBA,cAAgB,CACd,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IAEfA,aAAe,CACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IAEfA,gBAAkB,CAChB,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IAEjBA,gBAAkB,CAChB,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IAEjBA,YAAc,CACZ,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IAEjBA,cAAgB,CAAC,CAAC,MAAO,MAAO,IAChCA,cAAgB,CACd,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IAEjBA,gBAAkB,CAAC,CAAC,MAAO,MAAO,IAClCA,eAAiB,CAAC,CAAC,MAAO,MAAO,IACjCA,iBAAmB,CACjB,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IAEfA,eAAiB,CACf,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IAEfA,kBAAoB,CAClB,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IAEjBA,eAAiB,CACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IAEjBA,qBAAuB,CACrB,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IAEjBA,mBAAqB,CAAC,CAAC,MAAO,MAAO,IACrCA,oBAAsB,CACpB,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IAEjBA,qBAAuB,CACrB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,IAEnBA,wBAA0B,CACxB,CAAC,KAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IAEjBA,4BAA8B,CAAC,CAAC,MAAO,MAAO,IAC9CA,YAAc,CACZ,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IAEjBA,YAAc,CACZ,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IAEjBA,iBAAmB,CACjB,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,MAAO,MAAO,IAEjBA,WAAa,CACX,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IAEjBA,eAAiB,CACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IAEjBA,eAAiB,CACf,CAAC,KAAM,KAAM,GACb,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IAEjBA,iBAAmB,CACjB,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IAEjBA,mBAAqB,CAAC,CAAC,OAAQ,OAAQ,IACvCA,mBAAqB,CACnB,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IAEjBA,mBAAqB,CACnB,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IAEfA,YAAc,CACZ,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IAEjBA,WAAa,CACX,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IAEfA,aAAe,CACb,CAAC,MAAO,OAAQ,OAChB,CAAC,OAAQ,OAAQ,IAEnBA,8BAAgC,CAC9B,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,IAEnBA,aAAe,CAAC,CAAC,KAAM,KAAM,IAC7BA,gBAAkB,CAAC,CAAC,KAAM,KAAM,IAChCA,qBAAuB,CACrB,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IAEjBA,kBAAoB,CAClB,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IAEjBA,yBAA2B,CAAC,CAAC,MAAO,MAAO,IAC3CA,kBAAoB,CAAC,CAAC,MAAO,MAAO,IACpCA,mBAAqB,CACnB,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IAEjBA,mBAAqB,CAAC,CAAC,MAAO,MAAO,IACrCA,yBAA2B,CAAC,CAAC,MAAO,MAAO,IAC3CA,kBAAoB,CAAC,CAAC,MAAO,MAAO,IACpCA,kBAAoB,CAAC,CAAC,MAAO,MAAO,IACpCA,aAAe,CACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IAEfA,aAAe,CACb,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IAEjBA,eAAiB,CACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IAEjBA,oBAAsB,CACpB,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IAEjBA,iBAAmB,CAAC,CAAC,MAAO,MAAO,IACnCA,mBAAqB,CAAC,CAAC,MAAO,MAAO,IACrCA,gBAAkB,CAAC,CAAC,MAAO,MAAO,IAClCA,kBAAoB,CAClB,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IAEjBA,uBAAyB,CACvB,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IAEjBA,cAAgB,CACd,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IAEjBA,aAAe,CACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IAEfA,iBAAmB,CACjB,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IAEfA,kBAAoB,CAClB,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IAEjBA,eAAiB,CAAC,CAAC,MAAO,MAAO,IACjCA,eAAiB,CAAC,CAAC,MAAO,MAAO,IACjCA,eAAiB,CACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IAEjBA,mBAAqB,CACnB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,IAEnBA,eAAiB,CACf,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,MAAO,MAAO,IAEjBA,eAAiB,CAAC,CAAC,MAAO,MAAO,IACjCA,oBAAsB,CACpB,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IAEjBA,eAAiB,CAAC,CAAC,MAAO,MAAO,IACjCA,iBAAmB,CACjB,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IAEfA,oBAAsB,CAAC,CAAC,MAAO,MAAO,IACtCA,cAAgB,CACd,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IAEfA,eAAiB,CACf,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IAEfA,gBAAkB,CAChB,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,IAAM,GACb,CAAC,KAAM,KAAM,IAEfA,cAAgB,CACd,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IAEfA,gBAAkB,CAChB,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IAEfA,gBAAkB,CAChB,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IAEjBA,aAAe,CACb,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IAEjBA,aAAe,CACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IAEjBA,cAAgB,CACd,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IAEjBA,cAAgB,CACd,CAAC,MAAO,MAAO,IACf,CAAC,MAAO,OAAQ,GAChB,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,IAEnBA,cAAgB,CACd,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IAEfA,cAAgB,CAAC,CAAC,KAAM,KAAM,IAC9BA,YAAc,CACZ,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IAEfA,eAAiB,CACf,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,GACb,CAAC,KAAM,KAAM,IAEfA,gBAAkB,CAChB,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IAEjBA,eAAiB,CACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IAEjBA,YAAc,CAAC,CAAC,OAAQ,OAAQ,IAChCA,gBAAkB,CAChB,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IAEjBA,WAAa,CAAC,CAAC,MAAO,MAAO,IAC7BA,gBAAkB,CAChB,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IAEjBA,cAAgB,CACd,CAAC,OAAQ,OAAQ,GACjB,CAAC,OAAQ,OAAQ,IAEnBA,mBAAqB,CACnB,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IAEjBA,cAAgB,CACd,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IAEjBA,UAAY,CACV,CAAC,MAAO,MAAO,GACf,CAAC,MAAO,MAAO,IAEjBA,wBAA0B,CAAC,CAAC,MAAO,MAAO,IAE1CA,kBAAoB,IAAIO,IAAI,CAC1B,CAAC,IAAKU,EAAcG,GACpB,CAAC,KAAMH,EAAcI,IACrB,CAAC,KAAMJ,EAAcK,IACrB,CAAC,KAAML,EAAcM,IACrB,CAAC,KAAMN,EAAcO,IACrB,CAAC,IAAKP,EAAcQ,GACpB,CAAC,KAAMR,EAAcS,IACrB,CAAC,KAAMT,EAAcU,IACrB,CAAC,KAAMV,EAAcW,IACrB,CAAC,KAAMX,EAAcY,IACrB,CAAC,KAAMZ,EAAcE,IACrB,CAAC,IAAKF,EAAca,GACpB,CAAC,KAAMb,EAAcc,IACrB,CAAC,KAAMd,EAAce,IACrB,CAAC,KAAMf,EAAcgB,IACrB,CAAC,IAAKhB,EAAciB,GACpB,CAAC,KAAMjB,EAAckB,IACrB,CAAC,KAAMlB,EAAcmB,IACrB,CAAC,KAAMnB,EAAcoB,IACrB,CAAC,IAAKpB,EAAcqB,GACpB,CAAC,KAAMrB,EAAcsB,IACrB,CAAC,KAAMtB,EAAcuB,IACrB,CAAC,KAAMvB,EAAcwB,IACrB,CAAC,KAAMxB,EAAcyB,IACrB,CAAC,KAAMzB,EAAc0B,IACrB,CAAC,KAAM1B,EAAc2B,IACrB,CAAC,KAAM3B,EAAc4B,IACrB,CAAC,IAAK5B,EAAc6B,GACpB,CAAC,KAAM7B,EAAc8B,IACrB,CAAC,KAAM9B,EAAc+B,IACrB,CAAC,KAAM/B,EAAcgC,IACrB,CAAC,KAAMhC,EAAciC,IACrB,CAAC,IAAKjC,EAAckC,GACpB,CAAC,KAAMlC,EAAcmC,IACrB,CAAC,KAAMnC,EAAcoC,IACrB,CAAC,KAAMpC,EAAcqC,MAGvBtD,eAAiB,IAAIO,IAAI,CACvB,CAAC,QAASU,EAAcsC,OACxB,CAAC,OAAQtC,EAAcuC,MACvB,CAAC,wBAAyBvC,EAAcwC,uBACxC,CAAC,SAAUxC,EAAcyC,QACzB,CAAC,WAAYzC,EAAc0C,UAC3B,CAAC,UAAW1C,EAAc2C,SAC1B,CAAC,WAAY3C,EAAc4C,UAC3B,CAAC,QAAS5C,EAAc6C,OACxB,CAAC,YAAa7C,EAAc8C,WAC5B,CAAC,QAAS9C,EAAc+C,OACxB,CAAC,UAAW/C,EAAcgD,SAC1B,CAAC,YAAahD,EAAciD,WAC5B,CAAC,WAAYjD,EAAckD,UAC3B,CAAC,SAAUlD,EAAcmD,QACzB,CAAC,UAAWnD,EAAcoD,SAC1B,CAAC,WAAYpD,EAAcqD,UAC3B,CAAC,QAASrD,EAAcsD,OACxB,CAAC,sBAAuBtD,EAAcuD,qBACtC,CAAC,SAAUvD,EAAcwD,QACzB,CAAC,qBAAsBxD,EAAcyD,oBACrC,CAAC,SAAUzD,EAAc0D,QACzB,CAAC,OAAQ1D,EAAc2D,MACvB,CAAC,WAAY3D,EAAc4D,UAC3B,CAAC,aAAc5D,EAAc6D,YAC7B,CAAC,SAAU7D,EAAc8D,QACzB,CAAC,SAAU9D,EAAc+D,QACzB,CAAC,YAAa/D,EAAcgE,WAC5B,CAAC,UAAWhE,EAAciE,SAC1B,CAAC,eAAgBjE,EAAckE,cAC/B,CAAC,WAAYlE,EAAcmE,UAC3B,CAAC,UAAWnE,EAAcoE,SAC1B,CAAC,aAAcpE,EAAcqE,YAC7B,CAAC,cAAerE,EAAcsE,aAC9B,CAAC,QAAStE,EAAcuE,OACxB,CAAC,WAAYvE,EAAcwE,UAC3B,CAAC,uBAAwBxE,EAAcyE,sBACvC,CAAC,UAAWzE,EAAc0E,SAC1B,CAAC,UAAW1E,EAAc2E,SAC1B,CAAC,WAAY3E,EAAc4E,UAC3B,CAAC,WAAY5E,EAAc6E,UAC3B,CAAC,aAAc7E,EAAc8E,YAC7B,CAAC,SAAU9E,EAAc+E,QACzB,CAAC,UAAW/E,EAAcgF,SAC1B,CAAC,QAAShF,EAAciF,OACxB,CAAC,WAAYjF,EAAckF,UAC3B,CAAC,gBAAiBlF,EAAcmF,eAChC,CAAC,WAAYnF,EAAcoF,UAC3B,CAAC,MAAOpF,EAAcqF,KACtB,CAAC,SAAUrF,EAAcsF,QACzB,CAAC,kBAAmBtF,EAAcuF,iBAClC,CAAC,UAAWvF,EAAcwF,SAC1B,CAAC,SAAUxF,EAAcyF,QACzB,CAAC,SAAUzF,EAAc0F,QACzB,CAAC,WAAY1F,EAAc2F,UAC3B,CAAC,mBAAoB3F,EAAc4F,kBACnC,CAAC,YAAa5F,EAAc6F,WAC5B,CAAC,wBAAyB7F,EAAc8F,uBACxC,CAAC,yBAA0B9F,EAAc+F,wBACzC,CAAC,WAAY/F,EAAcgG,UAC3B,CAAC,SAAUhG,EAAciG,QACzB,CAAC,UAAWjG,EAAckG,SAC1B,CAAC,WAAYlG,EAAcmG,UAC3B,CAAC,OAAQnG,EAAcoG,MACvB,CAAC,WAAYpG,EAAcqG,UAC3B,CAAC,aAAcrG,EAAcsG,YAC7B,CAAC,sBAAuBtG,EAAcuG,qBACtC,CAAC,QAASvG,EAAcwG,OACxB,CAAC,SAAUxG,EAAcyG,QACzB,CAAC,YAAazG,EAAc0G,WAC5B,CAAC,MAAO1G,EAAc2G,KACtB,CAAC,QAAS3G,EAAc4G,OACxB,CAAC,SAAU5G,EAAc6G,QACzB,CAAC,QAAS7G,EAAc8G,OACxB,CAAC,WAAY9G,EAAc+G,UAC3B,CAAC,WAAY/G,EAAcgH,UAC3B,CAAC,OAAQhH,EAAciH,MACvB,CAAC,SAAUjH,EAAckH,QACzB,CAAC,SAAUlH,EAAcmH,QACzB,CAAC,WAAYnH,EAAcoH,UAC3B,CAAC,UAAWpH,EAAcqH,SAC1B,CAAC,YAAarH,EAAcsH,WAC5B,CAAC,UAAWtH,EAAcuH,SAC1B,CAAC,aAAcvH,EAAcwH,YAC7B,CAAC,UAAWxH,EAAcyH,SAC1B,CAAC,gBAAiBzH,EAAc0H,eAChC,CAAC,cAAe1H,EAAc2H,aAC9B,CAAC,eAAgB3H,EAAc4H,cAC/B,CAAC,gBAAiB5H,EAAc6H,eAChC,CAAC,mBAAoB7H,EAAc8H,kBACnC,CAAC,uBAAwB9H,EAAc+H,sBACvC,CAAC,OAAQ/H,EAAcgI,MACvB,CAAC,OAAQhI,EAAciI,MACvB,CAAC,YAAajI,EAAckI,WAC5B,CAAC,MAAOlI,EAAcmI,KACtB,CAAC,UAAWnI,EAAcoI,SAC1B,CAAC,UAAWpI,EAAcqI,SAC1B,CAAC,YAAarI,EAAcsI,WAC5B,CAAC,cAAetI,EAAcuI,aAC9B,CAAC,cAAevI,EAAcwI,aAC9B,CAAC,cAAexI,EAAcyI,aAC9B,CAAC,OAAQzI,EAAc0I,MACvB,CAAC,MAAO1I,EAAc2I,KACtB,CAAC,QAAS3I,EAAc4I,OACxB,CAAC,yBAA0B5I,EAAc6I,wBACzC,CAAC,QAAS7I,EAAc8I,OACxB,CAAC,WAAY9I,EAAc+I,UAC3B,CAAC,gBAAiB/I,EAAcgJ,eAChC,CAAC,aAAchJ,EAAciJ,YAC7B,CAAC,oBAAqBjJ,EAAckJ,mBACpC,CAAC,aAAclJ,EAAcmJ,YAC7B,CAAC,cAAenJ,EAAcoJ,aAC9B,CAAC,cAAepJ,EAAcqJ,aAC9B,CAAC,oBAAqBrJ,EAAcsJ,mBACpC,CAAC,aAActJ,EAAcuJ,YAC7B,CAAC,aAAcvJ,EAAcwJ,YAC7B,CAAC,QAASxJ,EAAcyJ,OACxB,CAAC,QAASzJ,EAAc0J,OACxB,CAAC,UAAW1J,EAAc2J,SAC1B,CAAC,eAAgB3J,EAAc4J,cAC/B,CAAC,YAAa5J,EAAc6J,WAC5B,CAAC,cAAe7J,EAAc8J,aAC9B,CAAC,WAAY9J,EAAc+J,UAC3B,CAAC,aAAc/J,EAAcgK,YAC7B,CAAC,kBAAmBhK,EAAciK,iBAClC,CAAC,SAAUjK,EAAckK,QACzB,CAAC,QAASlK,EAAcmK,OACxB,CAAC,YAAanK,EAAcoK,WAC5B,CAAC,aAAcpK,EAAcqK,YAC7B,CAAC,UAAWrK,EAAcsK,SAC1B,CAAC,UAAWtK,EAAcuK,SAC1B,CAAC,UAAWvK,EAAcwK,SAC1B,CAAC,cAAexK,EAAcyK,aAC9B,CAAC,UAAWzK,EAAc0K,SAC1B,CAAC,UAAW1K,EAAc2K,SAC1B,CAAC,eAAgB3K,EAAc4K,cAC/B,CAAC,UAAW5K,EAAc6K,SAC1B,CAAC,YAAa7K,EAAc8K,WAC5B,CAAC,eAAgB9K,EAAc+K,cAC/B,CAAC,SAAU/K,EAAcgL,QACzB,CAAC,UAAWhL,EAAciL,SAC1B,CAAC,WAAYjL,EAAckL,UAC3B,CAAC,SAAUlL,EAAcmL,QACzB,CAAC,WAAYnL,EAAcoL,UAC3B,CAAC,WAAYpL,EAAcqL,UAC3B,CAAC,QAASrL,EAAcsL,OACxB,CAAC,QAAStL,EAAcuL,OACxB,CAAC,SAAUvL,EAAcwL,QACzB,CAAC,SAAUxL,EAAcyL,QACzB,CAAC,SAAUzL,EAAc0L,QACzB,CAAC,SAAU1L,EAAc2L,QACzB,CAAC,OAAQ3L,EAAc4L,MACvB,CAAC,UAAW5L,EAAc6L,SAC1B,CAAC,WAAY7L,EAAc8L,UAC3B,CAAC,UAAW9L,EAAc+L,SAC1B,CAAC,OAAQ/L,EAAcgM,MACvB,CAAC,WAAYhM,EAAciM,UAC3B,CAAC,MAAOjM,EAAckM,KACtB,CAAC,WAAYlM,EAAcmM,UAC3B,CAAC,SAAUnM,EAAcoM,QACzB,CAAC,cAAepM,EAAcqM,aAC9B,CAAC,SAAUrM,EAAcsM,QACzB,CAAC,KAAMtM,EAAcuM,IACrB,CAAC,mBAAoBvM,EAAcwM,oBAGrCzN,uBAAyB,IAAIO,IAAI,CAC/B,CAAC,IAAKU,EAAcyM,OACpB,CAAC,KAAMzM,EAAc0M,QACrB,CAAC,KAAM1M,EAAc2M,QACrB,CAAC,KAAM3M,EAAc4M,QACrB,CAAC,IAAK5M,EAAc6M,OACpB,CAAC,KAAM7M,EAAc8M,UAGvB/N,mBAAqB,IAAIO,IAAI,CAC3B,CAAC,SAAUU,EAAc+M,YACzB,CAAC,QAAS/M,EAAcgN,WACxB,CAAC,YAAahN,EAAciN,iBCtxMhC,MAAMC,EAEJnO,gBAAkB,QAElBA,iBAAmB,IAEnBA,kBAAoB,IAEpBA,eAAiB,MAGjBA,gBAAkB,GAClBA,gBAAkB,MAIlBA,YAAYoO,EAAQC,GAElB,IAAIC,EAAK,EACLC,EAAKH,EAAOvN,OAChB,KAAOyN,EAAKC,GAAI,CACd,IAAIC,EAAIF,EAAKG,KAAKC,OAAOH,EAAKD,GAAM,GAChCK,EAAQP,EAAOI,GACnB,GAAIG,EAAM,IAAMN,GAAKA,GAAKM,EAAM,GAC9B,OAAQN,EAAIM,EAAM,IAAMA,EAAM,IAAO,EAEnCN,EAAIM,EAAM,GACZJ,EAAKC,EAELF,EAAKE,EAAI,CAEb,CACA,OAAO,CACT,CAGAxO,UAAUoO,EAAQC,GAEhB,GAAIA,GAAKnN,KAAK0N,WAAY,CACxB,IAAK,IAAID,KAASP,EAEhB,KAAIC,EAAIM,EAAM,IAGd,QAAIN,EAAIM,EAAM,MAGNN,EAAIM,EAAM,IAAMA,EAAM,IAAO,EAEvC,OAAO,CACT,CACA,OAAOP,EAAOvN,OAAS,GAAKwN,GAAKD,EAAO,GAAG,IAAMlN,KAAK2N,KAAKT,EAAQC,EACrE,CAGArO,eAAeqO,GACb,GAAIA,GAAKnN,KAAK0N,WAAY,CACxB,MAAMnO,EAAIC,OAAOC,cAAc0N,GAC/B,OAAO5N,EAAEG,gBAAkBH,GAAKA,EAAEO,gBAAkBP,CACtD,CACA,OAAOS,KAAK4N,GAAG7N,EAAc8N,MAAOV,EACtC,CAGArO,eAAeqO,GACb,OAAIA,GAAKnN,KAAK0N,WACJP,GAAK,IAAQA,EAAI,KAAUA,GAAK,KAAc,MAANA,EAGhDnN,KAAK4N,GAAG7N,EAAcQ,EAAG4M,IACzBnN,KAAK4N,GAAG7N,EAAca,EAAGuM,IACzBnN,KAAK4N,GAAG7N,EAAciB,EAAGmM,IACzBnN,KAAK4N,GAAG7N,EAAcqB,EAAG+L,IACzBnN,KAAK4N,GAAG7N,EAAc6B,EAAGuL,EAE7B,CAmBArO,kBAAkBqO,GAEhB,GAAIpN,EAAc+N,WAAWC,IAAIZ,GAC/B,OAAOpN,EAAc+N,WAAWE,IAAIb,GAMtC,MAAMc,EAAI7O,EAAUU,YAAYqN,GAChC,OAAIc,IAAMd,EACDc,EAEF7O,EAAUM,YAAYyN,EAC/B,CAMArO,wBAAwBoP,EAAIC,GAE1B,GAAID,EAAK,GAAKC,EAAK,GAAKD,IAAOC,EAC7B,OAAO,EAKT,GAAID,GAAMlO,KAAKoO,WAAaD,GAAMnO,KAAKoO,UASrC,OARIhP,EAAUiP,MAAML,IAAI,MAAQE,GAAMA,GAAM9O,EAAUiP,MAAML,IAAI,OAC9DE,GAAM,IAGJ9O,EAAUiP,MAAML,IAAI,MAAQG,GAAMA,GAAM/O,EAAUiP,MAAML,IAAI,OAC9DG,GAAM,IAGDD,IAAOC,EAKhB,IAAK,IAAIhB,EAAInN,KAAKsO,WAAWJ,GAAKf,IAAMe,EAAIf,EAAInN,KAAKsO,WAAWnB,GAC9D,GAAIA,IAAMgB,EACR,OAAO,EAIX,OAAO,CACT,EC/IF,MAAMI,EACJzP,sBAAwB,kBAGxBA,wBAA0B,EAC1BA,sBAAwB,EACxBA,wBAA0B,EAC1BA,sBAAwB,EACxBA,2BAA6B,GAC7BA,8BAAgC,GAChCA,kBAAoB,EAEpBA,mBACE,MAAO,EACT,CAGAA,eAAe0P,GACb,OACGpP,EAAUiP,MAAML,IAAI,MAAQQ,GAAKA,GAAKpP,EAAUiP,MAAML,IAAI,MAC1D5O,EAAUiP,MAAML,IAAI,MAAQQ,GAAKA,GAAKpP,EAAUiP,MAAML,IAAI,MAC1D5O,EAAUiP,MAAML,IAAI,MAAQQ,GAAKA,GAAKpP,EAAUiP,MAAML,IAAI,IAE/D,CAGAlP,aAAa0P,GACX,OAAIpP,EAAUiP,MAAML,IAAI,MAAQQ,GAAKA,GAAKpP,EAAUiP,MAAML,IAAI,KACrDQ,EAAIpP,EAAUiP,MAAML,IAAI,KAE7B5O,EAAUiP,MAAML,IAAI,MAAQQ,GAAKA,GAAKpP,EAAUiP,MAAML,IAAI,KACrDQ,EAAIpP,EAAUiP,MAAML,IAAI,KAAO,GAEpC5O,EAAUiP,MAAML,IAAI,MAAQQ,GAAKA,GAAKpP,EAAUiP,MAAML,IAAI,KACrDQ,EAAIpP,EAAUiP,MAAML,IAAI,KAAO,IAEhC,CACV,CAIAlP,kBAAkB2P,GAChB,IAAIC,EAAM,GACV,GAAIzB,EAAQ0B,QAAQF,GACdzO,KAAK4O,eAAeC,QAAQrP,OAAOC,cAAcgP,KAAU,IAC7DC,GAAO,MAETA,GAAOlP,OAAOC,cAAcgP,QAE5B,OAAQA,GACN,KAAKrP,EAAUiP,MAAML,IAAI,KACvBU,GAAO,MACP,MACF,KAAKtP,EAAUiP,MAAML,IAAI,MACvBU,GAAO,OACP,MACF,KAAKtP,EAAUiP,MAAML,IAAI,MACvBU,GAAO,MACP,MACF,KAAKtP,EAAUiP,MAAML,IAAI,MACvBU,GAAO,MACP,MACF,KAAKtP,EAAUiP,MAAML,IAAI,MACvBU,GAAO,MACP,MACF,KAAKtP,EAAUiP,MAAML,IAAI,MACvBU,GAAO,MACP,MACF,KAAKtP,EAAUiP,MAAML,IAAI,MACvBU,GAAO,MACP,MACF,QAAS,CACP,IAAInP,EAAIkP,EAAKK,SAAS,IAClBL,EAAO,KACTC,GAAO,MACU,IAAbnP,EAAEI,SACJ+O,GAAO,KAETA,GAAOnP,GAEPmP,GAAQ,OAAMnP,KAEhB,KACF,EAGJ,OAAOmP,CACT,CAGA5P,qBAAqBiQ,GACnB,OAAOvP,OAAOuP,GACXC,MAAM,IACNC,KAAK1P,GAAMA,EAAEM,YAAY,IAC9B,CAGAf,oBAAoBqO,GAClB,OAAO3N,OAAOC,cAAc0N,EAC9B,CAKArO,kBAAkBqO,GAChB,OACG/N,EAAUiP,MAAML,IAAI,MAAQb,GAAKA,GAAK/N,EAAUiP,MAAML,IAAI,MAC1D5O,EAAUiP,MAAML,IAAI,MAAQb,GAAKA,GAAK/N,EAAUiP,MAAML,IAAI,MAC1D5O,EAAUiP,MAAML,IAAI,MAAQb,GAAKA,GAAK/N,EAAUiP,MAAML,IAAI,MAC3Db,IAAM/N,EAAUiP,MAAML,IAAI,IAE9B,CASAlP,sBAAsBoP,EAAIC,GACxB,IAAIe,EAAK,EAkBT,OAjBIhB,EAAK,IACPgB,GAAMlP,KAAKmP,iBAAmBnP,KAAKoP,kBAEjClB,IAAO9O,EAAUiP,MAAML,IAAI,QAC7BkB,GAAMlP,KAAKoP,kBAETjB,EAAK,IACPe,GAAMlP,KAAKqP,eAAiBrP,KAAKsP,gBAE/BnB,IAAO/O,EAAUiP,MAAML,IAAI,QAC7BkB,GAAMlP,KAAKsP,gBAETtP,KAAKuP,WAAWrB,KAAQlO,KAAKuP,WAAWpB,GAC1Ce,GAAMlP,KAAKwP,oBAEXN,GAAMlP,KAAKyP,uBAENP,CACT,CASApQ,iBAAiBiQ,GACf,OAAOA,EACJC,MAAM,IACNC,KAAK1P,GACAS,KAAK4O,eAAeC,QAAQtP,IAAM,EAC5B,KAAIA,IAEPA,IAERmQ,KAAK,GACV,CAEA5Q,iBAAiB6Q,GACf,OAAOA,EAAY1C,EAAQ2C,QAAU,EAAI,CAC3C,CAEA9Q,6BAA6BiQ,GAC3B,GAAIc,WAAWC,YACb,OAAOC,MAAMC,MAAK,IAAIF,aAAcG,OAAOlB,IACtC,CAEL,IAAIL,EAAM,GACRwB,EAAI,EACN,IAAK,IAAIC,EAAI,EAAGA,EAAIpB,EAAIpP,OAAQwQ,IAAK,CACnC,IAAI3B,EAAIO,EAAIqB,WAAWD,GACnB3B,EAAI,IACNE,EAAIwB,KAAO1B,EACFA,EAAI,MACbE,EAAIwB,KAAQ1B,GAAK,EAAK,IACtBE,EAAIwB,KAAY,GAAJ1B,EAAU,KAEL,QAAZ,MAAJA,IACD2B,EAAI,EAAIpB,EAAIpP,QACyB,QAAZ,MAAxBoP,EAAIqB,WAAWD,EAAI,KAGpB3B,EAAI,QAAgB,KAAJA,IAAe,KAA6B,KAAtBO,EAAIqB,aAAaD,IACvDzB,EAAIwB,KAAQ1B,GAAK,GAAM,IACvBE,EAAIwB,KAAS1B,GAAK,GAAM,GAAM,IAC9BE,EAAIwB,KAAS1B,GAAK,EAAK,GAAM,IAC7BE,EAAIwB,KAAY,GAAJ1B,EAAU,MAEtBE,EAAIwB,KAAQ1B,GAAK,GAAM,IACvBE,EAAIwB,KAAS1B,GAAK,EAAK,GAAM,IAC7BE,EAAIwB,KAAY,GAAJ1B,EAAU,IAE1B,CACA,OAAOE,CACT,CACF,CAEA5P,6BAA6BuR,GAC3B,GAAIR,WAAWS,YACb,OAAO,IAAIA,YAAY,SAASC,OAAO,IAAIC,WAAWH,IACjD,CAEL,IAAI3B,EAAM,GACR+B,EAAM,EACNjC,EAAI,EACN,KAAOiC,EAAMJ,EAAM1Q,QAAQ,CACzB,IAAI+Q,EAAKL,EAAMI,KACf,GAAIC,EAAK,IACPhC,EAAIF,KAAOhP,OAAOmR,aAAaD,QAC1B,GAAIA,EAAK,KAAOA,EAAK,IAAK,CAC/B,IAAIE,EAAKP,EAAMI,KACf/B,EAAIF,KAAOhP,OAAOmR,cAAoB,GAALD,IAAY,EAAW,GAALE,EACpD,MAAM,GAAIF,EAAK,KAAOA,EAAK,IAAK,CAE/B,IAGIG,IAAY,EAALH,IAAW,IAAa,GAH1BL,EAAMI,OAG2B,IAAa,GAF9CJ,EAAMI,OAE+C,EAAW,GADhEJ,EAAMI,MACiE,MAChF/B,EAAIF,KAAOhP,OAAOmR,aAAa,OAAUE,GAAK,KAC9CnC,EAAIF,KAAOhP,OAAOmR,aAAa,OAAc,KAAJE,GAC3C,KAAO,CACL,IAAID,EAAKP,EAAMI,KACXK,EAAKT,EAAMI,KACf/B,EAAIF,KAAOhP,OAAOmR,cAAoB,GAALD,IAAY,IAAa,GAALE,IAAY,EAAW,GAALE,EACzE,CACF,CACA,OAAOpC,EAAIgB,KAAK,GAClB,CACF,ECxOF,MAAMqB,EAAa,WAA8B,IAA7BC,EAAMC,UAAAtR,OAAA,QAAAuR,IAAAD,UAAA,GAAAA,UAAA,GAAG,GAAIE,EAAOF,UAAAtR,OAAA,QAAAuR,IAAAD,UAAA,GAAAA,UAAA,GAAG,EACzC,MAAMG,EAAa,CAAA,EACnB,IAAK,IAAIjB,EAAI,EAAGA,EAAIa,EAAOrR,OAAQwQ,IAAK,CACtC,MAAMkB,EAAML,EAAOb,GACbmB,EAASH,EAAUhB,EACzBiB,EAAWC,GAAOC,EAClBF,EAAWE,GAAUD,CACvB,CACA,OAAOE,OAAOC,OAAOJ,EACvB,ECPA,MAAMK,EACJ3S,gBAAkBiS,EAAW,CAAC,SAAU,UAExCW,cACE,MAAMC,MAAM,kBACd,CAEAC,iBACE,OAAO5R,KAAK0R,gBAAkBD,EAAiBI,SAASC,KAC1D,CAEAC,kBACE,OAAO/R,KAAK0R,gBAAkBD,EAAiBI,SAASG,MAC1D,EAGF,MAAMC,UAAyBR,EAC7BS,cAA0B,IAAd7B,EAAKY,UAAAtR,OAAA,QAAAuR,IAAAD,UAAA,GAAAA,UAAA,GAAG,KAClBkB,QACAnS,KAAKqQ,MAAQA,CACf,CAEAqB,cACE,OAAOD,EAAiBI,SAASC,KACnC,CAEAM,iBACE,OAAO7D,EAAM8D,sBAAsBrS,KAAKqQ,MAC1C,CAEAiC,UACE,OAAOtS,KAAKqQ,KACd,CAEA1Q,SACE,OAAOK,KAAKqQ,MAAM1Q,MACpB,EAGF,MAAM4S,UAA0Bd,EAC9BS,cAAiC,IAArBM,EAAYvB,UAAAtR,OAAA,QAAAuR,IAAAD,UAAA,GAAAA,UAAA,GAAG,KACzBkB,QACAnS,KAAKwS,aAAeA,CACtB,CAEAd,cACE,OAAOD,EAAiBI,SAASG,MACnC,CAEAI,iBACE,OAAOpS,KAAKwS,YACd,CAEAF,UACE,OAAOtS,KAAKwS,aACT1D,WACAE,MAAM,IACNC,KAAK1P,GAAMA,EAAEM,YAAY,IAC9B,CAEAF,SACE,OAAOK,KAAKwS,aAAa7S,MAC3B,EAGF,MAAM8S,EAIJ3T,aAAa0T,GACX,OAAO,IAAID,EAAkBC,EAC/B,CAKA1T,YAAY4T,GACV,OAAI3C,MAAM4C,QAAQD,GACT,IAAIT,EAAiBS,GAGvB,IAAIT,EAAiB1D,EAAMqE,sBAAsBF,GAC1D,ECxFF,MAAMG,UAAuBlB,MAC3BO,YAAYY,GACVX,MAAMW,GACN9S,KAAK+S,KAAO,gBACd,EAMF,MAAMC,UAA6BH,EACjCX,YAAYe,GAAqB,IAAdP,EAAKzB,UAAAtR,OAAA,QAAAuR,IAAAD,UAAA,GAAAA,UAAA,GAAG,KACrB6B,EAAW,yBAAwBG,IACnCP,IACFI,GAAY,OAAMJ,OAGpBP,MAAMW,GACN9S,KAAK+S,KAAO,uBACZ/S,KAAK8S,QAAUA,EACf9S,KAAKiT,MAAQA,EACbjT,KAAK0S,MAAQA,CACf,CAKAQ,iBACE,OAAOlT,KAAKiT,KACd,CAKAE,aACE,OAAOnT,KAAK0S,KACd,EAMF,MAAMU,UAA8BP,EAClCX,YAAYY,GACVX,MAAMW,GACN9S,KAAK+S,KAAO,uBACd,EAMF,MAAMM,UAA4BR,EAChCX,YAAYY,GACVX,MAAMW,GACN9S,KAAK+S,KAAO,qBACd,EAMF,MAAMO,UAA4BT,EAChCX,YAAYY,GACVX,MAAMW,GACN9S,KAAK+S,KAAO,qBACd,ECrCF,MAAMQ,EAQJzU,wBAAwBiQ,GACtB,OAAIA,EAAIF,QAAQ,MAAQ,GAAKE,EAAIF,QAAQ,KAAO,EACvCE,EAGFA,EACJC,MAAM,IACNC,KAAK1P,IACJ,MAAMiP,EAAIjP,EAAEM,YAAY,GACxB,OAAI2O,IAAMpP,EAAUiP,MAAM,OAASG,IAAMpP,EAAUiP,MAAS,EAClD,KAAI9O,IAEPA,CAAC,IAETmQ,KAAK,GACV,CAEAwC,YAAYsB,EAASd,GACnB,GAAgB,OAAZc,EACF,MAAM,IAAI7B,MAAM,mBAGlB3R,KAAKyT,aAAeD,EACpB,MAAME,EAAM1T,KAAKyT,aAAaC,MAE9B1T,KAAK2T,kBAAoBD,EAAIE,0BAE7B5T,KAAK6T,OAAS,GACd7T,KAAK8T,YAAcJ,EAAII,YAEnBpB,aAAiBjB,EACnBzR,KAAK+T,kBAAkBrB,GACd3C,MAAM4C,QAAQD,GACvB1S,KAAK+T,kBAAkBtB,EAAauB,KAAKtB,IAEzC1S,KAAK+T,kBAAkBtB,EAAawB,MAAMvB,GAE9C,CAGAc,UACE,OAAOxT,KAAKyT,YACd,CAOAS,QAYE,OAVAlU,KAAKmU,mBAAqBnU,KAAKoU,aAAazU,SAE5CK,KAAKqU,UAAY,EAEjBrU,KAAKsU,UAAW,EAGhBtU,KAAKuU,WAAY,EAEjBvU,KAAKwU,WAAa,EACXxU,IACT,CAMA+T,kBAAkBrB,GAChB,GAAc,OAAVA,EACF,MAAM,IAAIf,MAAM,iBAIlB,OAFA3R,KAAKoU,aAAe1B,EACpB1S,KAAKkU,QACElU,IACT,CAOAyU,QAAiB,IAAXC,EAAKzD,UAAAtR,OAAA,QAAAuR,IAAAD,UAAA,GAAAA,UAAA,GAAG,EACZ,GAAqB,iBAAVyD,EAAoB,CAC7B,MAAMC,EAAW3U,KAAK8T,YAAYY,GAClC,IAAKE,OAAOC,SAASF,GACnB,MAAM,IAAItB,EAAqB,UAASqB,gBAE1CA,EAAQC,CACV,CAGA,OADA3U,KAAK8U,UAAUJ,GACR1U,KAAK6T,OAAO,EAAIa,EACzB,CAMAK,MAAe,IAAXL,EAAKzD,UAAAtR,OAAA,QAAAuR,IAAAD,UAAA,GAAAA,UAAA,GAAG,EACV,GAAqB,iBAAVyD,EAAoB,CAC7B,MAAMC,EAAW3U,KAAK8T,YAAYY,GAClC,IAAKE,OAAOC,SAASF,GACnB,MAAM,IAAItB,EAAqB,UAASqB,gBAE1CA,EAAQC,CACV,CAGA,OADA3U,KAAK8U,UAAUJ,GACR1U,KAAK6T,OAAO,EAAIa,EAAQ,EACjC,CAMAA,QAAiB,IAAXA,EAAKzD,UAAAtR,OAAA,QAAAuR,IAAAD,UAAA,GAAAA,UAAA,GAAG,EACZ,GAAqB,iBAAVyD,EAAoB,CAC7B,MAAMC,EAAW3U,KAAK8T,YAAYY,GAClC,IAAKE,OAAOC,SAASF,GACnB,MAAM,IAAItB,EAAqB,UAASqB,gBAE1CA,EAAQC,CACV,CAEA,MAAMF,EAAQzU,KAAKyU,MAAMC,GACnBK,EAAM/U,KAAK+U,IAAIL,GACrB,OAAID,EAAQ,GAAKM,EAAM,EACd,KAEF/U,KAAKgV,UAAUP,EAAOM,EAC/B,CAMAE,aACE,OAAOjV,KAAK2T,iBACd,CAOAmB,UAAUJ,GACR,GAAIA,EAAQ,GAAKA,EAAQ1U,KAAK2T,kBAC5B,MAAM,IAAIN,EAAqB,8BAA6BqB,KAG9D,IAAK1U,KAAKsU,SACR,MAAM,IAAIjB,EAAoB,8BAGhC,GAAc,IAAVqB,GAAe1U,KAAKuU,UACtB,OAGF,IAAIQ,EAAM/U,KAAK6T,OAAO,GAAK,EACvBkB,EAAM/U,KAAKmU,qBACbY,EAAM/U,KAAKmU,oBAGb,MAAMe,EAAMlV,KAAKyT,aACdC,MACAyB,kBACCnV,KAAKoU,aACLpU,KAAK6T,OAAO,GACZkB,EACA/U,KAAKwU,WACL,EAAIxU,KAAK2T,mBAIb,IADWuB,EAAI,GAEb,MAAM,IAAI7B,EAAoB,wCAEhCrT,KAAK6T,OAASqB,EAAI,GAClBlV,KAAKuU,WAAY,CACnB,CAQAa,UACE,OAAOpV,KAAKqV,SAAS,EAAGxW,EAASyW,YACnC,CAQAC,YACE,OAAOvV,KAAKqV,SAAS,EAAGxW,EAAS2W,aACnC,CAUAC,OAAmB,IAAdhB,EAAKxD,UAAAtR,OAAA,QAAAuR,IAAAD,UAAA,GAAAA,UAAA,GAAG,KACX,GAAc,OAAVwD,EAAgB,CAClB,GAAIA,EAAQ,GAAKA,EAAQzU,KAAKmU,mBAC5B,MAAM,IAAId,EAAqB,8BAA6BoB,KAG9D,OADAzU,KAAKkU,QACElU,KAAKqV,SAASZ,EAAO,EAC9B,CAUA,OARAA,EAAQ,EACJzU,KAAKsU,WACPG,EAAQzU,KAAK6T,OAAO,GAChB7T,KAAK6T,OAAO,KAAO7T,KAAK6T,OAAO,IACjCY,KAIGzU,KAAKqV,SAASZ,EAAO5V,EAAS6W,WACvC,CASAL,SAASM,EAAWC,GAClB,MAAMV,EAAMlV,KAAKyT,aACdC,MACAyB,kBAAkBnV,KAAKoU,aAAcuB,EAAW3V,KAAKmU,mBAAoByB,EAAQ,GAGpF,QADWV,EAAI,KAIflV,KAAK6T,OAASqB,EAAI,GAClBlV,KAAKsU,UAAW,EAChBtU,KAAKuU,WAAY,EACjBvU,KAAKwU,WAAaoB,GACX,EACT,CAQAZ,UAAUP,EAAOM,GACf,OAAI/U,KAAKoU,aAAaxC,iBACbrD,EAAM8D,sBAAsBrS,KAAKoU,aAAa9B,UAAUuD,MAAMpB,EAAOM,IAEvE/U,KAAKoU,aAAahC,iBAAiB4C,UAAUP,EAAOM,GAAKjG,UAClE,CAMAgH,cACE,OAAO9V,KAAKmU,kBACd,CAwBA4B,kBAAkBC,GAA+B,IAAlBC,EAAQhF,UAAAtR,OAAA,QAAAuR,IAAAD,UAAA,IAAAA,UAAA,GACjCiE,EAAM,GACV,MAAM3V,EAAIS,KAAKyU,QACTyB,EAAIlW,KAAK+U,MAQf,OAPI/U,KAAKqU,UAAY9U,IACnB2V,GAAOlV,KAAKgV,UAAUhV,KAAKqU,UAAW9U,IAExCS,KAAKqU,UAAY6B,EACjBhB,GAAOe,EACHjW,KAAKmW,8BAA8BH,GACnChW,KAAKoW,0BAA0BJ,GAC5Bd,CACT,CAEAkB,0BAA0BJ,GACxB,IAAId,EAAM,GACNmB,EAAO,EACX,MAAM/I,EAAI0I,EAAYrW,OAEtB,IAAK,IAAIwQ,EAAI,EAAGA,EAAI7C,EAAI,EAAG6C,IACzB,GAAI6F,EAAYnW,YAAYsQ,KAAO/Q,EAAUiP,MAAML,IAAI,OAUvD,GAAIgI,EAAYnW,YAAYsQ,KAAO/Q,EAAUiP,MAAML,IAAI,KAAM,CAC3D,IAAIQ,EAAIwH,EAAYnW,YAAYsQ,EAAI,GAEpC,GAAI/Q,EAAUiP,MAAML,IAAI,MAAQQ,GAAKA,GAAKpP,EAAUiP,MAAML,IAAI,KAAM,CAClE,IAAIsI,EAAI9H,EAAIpP,EAAUiP,MAAML,IAAI,KAKhC,IAJIqI,EAAOlG,IACT+E,GAAOc,EAAYhB,UAAUqB,EAAMlG,IAGhCA,GAAK,EAAGA,EAAI7C,IACfkB,EAAIwH,EAAYnW,YAAYsQ,KAE1B3B,EAAIpP,EAAUiP,MAAML,IAAI,MACxBQ,EAAIpP,EAAUiP,MAAML,IAAI,MACpB,GAAJsI,EAAS9H,EAAIpP,EAAUiP,MAAML,IAAI,KAAOhO,KAAK2T,oBAL7BxD,IASlBmG,EAAQ,GAAJA,EAAS9H,EAAIpP,EAAUiP,MAAML,IAAI,KAGvC,GAAIsI,EAAItW,KAAK2T,kBACX,MAAM,IAAIN,EAAqB,yBAAwBiD,KAGzD,MAAM5B,EAAQ1U,KAAK0U,MAAM4B,GACX,OAAV5B,IACFQ,GAAOR,GAGT2B,EAAOlG,EACPA,IACA,QACF,CAAO,GAAI3B,IAAMpP,EAAUiP,MAAML,IAAI,KAAM,CACrCqI,EAAOlG,IACT+E,GAAOc,EAAYhB,UAAUqB,EAAMlG,IAGrCA,IACA,IAAIoG,EAAIpG,EAAI,EACZ,KACEoG,EAAIP,EAAYrW,QAChBqW,EAAYnW,YAAY0W,KAAOnX,EAAUiP,MAAML,IAAI,MACnDgI,EAAYnW,YAAY0W,KAAOnX,EAAUiP,MAAML,IAAI,MAEnDuI,IAGF,GAAIA,IAAMP,EAAYrW,QAAUqW,EAAYnW,YAAY0W,KAAOnX,EAAUiP,MAAML,IAAI,KACjF,MAAM,IAAIqF,EAAoB,+CAGhC,MAAMmD,EAAYR,EAAYhB,UAAU7E,EAAI,EAAGoG,GAC/CrB,GAAOlV,KAAK0U,MAAM8B,GAClBH,EAAOE,EAAI,CACb,CACF,OAjEMF,EAAOlG,IACT+E,GAAOc,EAAYhB,UAAUqB,EAAMlG,IAGrCA,IACAkG,EAAOlG,EAmEX,OAJIkG,EAAO/I,IACT4H,GAAOc,EAAYhB,UAAUqB,EAAM/I,IAG9B4H,CACT,CAEAiB,8BAA8BH,GAC5B,IAAId,EAAM,GACNmB,EAAO,EACX,MAAM/I,EAAI0I,EAAYrW,OAEtB,IAAK,IAAIwQ,EAAI,EAAGA,EAAI7C,EAAI,EAAG6C,IACzB,GAAI6F,EAAYnW,YAAYsQ,KAAO/Q,EAAUiP,MAAML,IAAI,KAAM,CAC3D,IAAIQ,EAAIwH,EAAYnW,YAAYsQ,EAAI,GAEpC,GAAI/Q,EAAUiP,MAAML,IAAI,OAASQ,EAAG,CAC9B6H,EAAOlG,IACT+E,GAAOc,EAAYhB,UAAUqB,EAAMlG,IAGrC+E,GAAO,IACP/E,IACAkG,EAAOlG,EAAI,EACX,QACF,CAAO,GAAI/Q,EAAUiP,MAAML,IAAI,OAASQ,EAAG,CACrC6H,EAAOlG,IACT+E,GAAOc,EAAYhB,UAAUqB,EAAMlG,IAGrC,MAAMuE,EAAQ1U,KAAK0U,MAAM,GAEvBQ,GADY,OAAVR,EACKA,EAEA,KAETvE,IACAkG,EAAOlG,EAAI,EACX,QACD,CAAM,GAAI/Q,EAAUiP,MAAML,IAAI,MAAQQ,GAAKA,GAAKpP,EAAUiP,MAAML,IAAI,KAAM,CACzE,IAAIsI,EAAI9H,EAAIpP,EAAUiP,MAAML,IAAI,KAKhC,IAJIqI,EAAOlG,IACT+E,GAAOc,EAAYhB,UAAUqB,EAAMlG,IAGhCA,GAAK,EAAGA,EAAI7C,IACfkB,EAAIwH,EAAYnW,YAAYsQ,KAE1B3B,EAAIpP,EAAUiP,MAAML,IAAI,MACxBQ,EAAIpP,EAAUiP,MAAML,IAAI,MACpB,GAAJsI,EAAS9H,EAAIpP,EAAUiP,MAAML,IAAI,KAAOhO,KAAK2T,oBAL7BxD,IASlBmG,EAAQ,GAAJA,EAAS9H,EAAIpP,EAAUiP,MAAML,IAAI,KAGvC,GAAIsI,EAAItW,KAAK2T,kBAAmB,CAC9BuB,GAAQ,IAAGoB,IACXD,EAAOlG,EACPA,IACA,QACF,CAEA,MAAMuE,EAAQ1U,KAAK0U,MAAM4B,GACX,OAAV5B,IACFQ,GAAOR,GAGT2B,EAAOlG,EACPA,IACA,QACF,CAAO,GAAI3B,IAAMpP,EAAUiP,MAAML,IAAI,KAAM,CACrCqI,EAAOlG,IACT+E,GAAOc,EAAYhB,UAAUqB,EAAMlG,IAGrCA,IACA,IAAIoG,EAAIpG,EAAI,EACZ,KACEoG,EAAIP,EAAYrW,QAChBqW,EAAYnW,YAAY0W,KAAOnX,EAAUiP,MAAML,IAAI,MACnDgI,EAAYnW,YAAY0W,KAAOnX,EAAUiP,MAAML,IAAI,MAEnDuI,IAGF,GAAIA,IAAMP,EAAYrW,QAAUqW,EAAYnW,YAAY0W,KAAOnX,EAAUiP,MAAML,IAAI,KAAM,CACvFkH,GAAOc,EAAYhB,UAAU7E,EAAI,EAAGoG,EAAI,GACxCF,EAAOE,EAAI,EACX,QACF,CAEA,MAAMC,EAAYR,EAAYhB,UAAU7E,EAAI,EAAGoG,GAC3ChF,OAAOkF,UAAUC,eAAeC,KAAK3W,KAAK8T,YAAa0C,GACzDtB,GAAOlV,KAAK0U,MAAM8B,GAElBtB,GAAQ,KAAIsB,KAGdH,EAAOE,EAAI,CACb,CACF,CAOF,OAJIF,EAAO/I,IACT4H,GAAOc,EAAYhB,UAAUqB,EAAM/I,IAG9B4H,CACT,CAOA0B,aACE,OAAO5W,KAAKgV,UAAUhV,KAAKqU,UAAWrU,KAAKmU,mBAC7C,CAUA0C,WAAWb,GAA+B,IAAlBC,EAAQhF,UAAAtR,OAAA,QAAAuR,IAAAD,UAAA,IAAAA,UAAA,GAC9B,OAAOjR,KAAK8W,QAAQd,GAAa,EAAMC,EACzC,CAUAc,aAAaf,GAA+B,IAAlBC,EAAQhF,UAAAtR,OAAA,QAAAuR,IAAAD,UAAA,IAAAA,UAAA,GAChC,OAAOjR,KAAK8W,QAAQd,GAAa,EAAOC,EAC1C,CASAa,QAAQd,EAAagB,GAAuB,IAAlBf,EAAQhF,UAAAtR,OAAA,QAAAuR,IAAAD,UAAA,IAAAA,UAAA,GAC5BiE,EAAM,GAGV,IADAlV,KAAKkU,QACElU,KAAKyV,SACVP,GAAOlV,KAAK+V,kBAAkBC,EAAaC,GACtCe,KAMP,OADA9B,GAAOlV,KAAK4W,aACL1B,CACT,ECtkBF,MAAM+B,EACJnY,aACE,OAAO,CACT,CAGAoY,iBACE,OAAO,CACT,CAGAC,SACE,OAAOnX,KAAK+U,GACd,EAKF,MAAMqC,UAAyBH,EAC7B/E,YAAY7B,GAAsC,IAA/BoE,EAAKxD,UAAAtR,OAAA,QAAAuR,IAAAD,UAAA,GAAAA,UAAA,GAAG,EAAG8D,EAAG9D,UAAAtR,OAAAsR,QAAAC,IAAAD,UAAAC,GAAAD,UAAGZ,GAAAA,EAAM1Q,OACxCwS,QACAnS,KAAKqQ,MAAQA,EACbrQ,KAAKyU,MAAQA,EACbzU,KAAK+U,IAAMA,CACb,CAQAsC,KAAKlH,GAEH,IADAA,GAAKnQ,KAAKyU,QACDzU,KAAK+U,IACZ,OAAOkC,EAAiBK,MAE1B,IAAIC,EAAsB,IAAlBvX,KAAKqQ,MAAMF,KACnB,OAAkB,IAAT,IAAJoH,GACKA,GAAK,EAAK,EACK,MAAT,IAAJA,IACVA,GAAQ,GACJpH,GAAKnQ,KAAK+U,IACLkC,EAAiBK,OAE1BC,EAAKA,GAAK,EAAwB,GAAlBvX,KAAKqQ,MAAMF,KACnBoH,GAAK,EAAK,IACK,MAAT,IAAJA,IACVA,GAAQ,GACJpH,EAAI,GAAKnQ,KAAK+U,IACTkC,EAAiBK,OAE1BC,EAAKA,GAAK,EAAwB,GAAlBvX,KAAKqQ,MAAMF,KAC3BoH,EAAKA,GAAK,EAAwB,GAAlBvX,KAAKqQ,MAAMF,KACnBoH,GAAK,EAAK,KAElBA,GAAQ,EACJpH,EAAI,GAAKnQ,KAAK+U,IACTkC,EAAiBK,OAE1BC,EAAKA,GAAK,EAAwB,GAAlBvX,KAAKqQ,MAAMF,KAC3BoH,EAAKA,GAAK,EAAwB,GAAlBvX,KAAKqQ,MAAMF,KAC3BoH,EAAKA,GAAK,EAAwB,GAAlBvX,KAAKqQ,MAAMF,KACnBoH,GAAK,EAAK,GAEtB,CAIAC,MAAM9D,EAAKjD,GACTA,GAAOzQ,KAAKyU,MACZ,MAAMtE,EAAInQ,KAAK6O,QAAQ7O,KAAKqQ,MAAOqD,EAAI+D,WAAYhH,GACnD,OAAON,EAAI,EAAIA,EAAIA,EAAIM,CACzB,CAGAiH,QAAQjH,GAEN,IAAIvC,GAAM,EACV,IAFAuC,GAAOzQ,KAAKyU,OAEFzU,KAAKyU,OAAShE,GAAOzQ,KAAK+U,IAAK,CACvC,IAAIN,EAAQhE,EAAM,EAElB,GADAvC,EAAKlO,KAAKqQ,MAAMoE,KACZvG,GAAM,IAAK,CACb,IAAIyJ,EAAMlH,EAAM,EAIhB,IAHIkH,EAAM3X,KAAKyU,QACbkD,EAAM3X,KAAKyU,OAENA,GAASkD,GAAqC,MAAT,IAApB3X,KAAKqQ,MAAMoE,KACjCA,IAGEA,EAAQzU,KAAKyU,QACfA,EAAQzU,KAAKyU,OAEfvG,EAAKlO,KAAKqX,KAAK5C,IAAU,CAC3B,CACF,CACA,MAAMtG,EAAKsC,EAAMzQ,KAAK+U,IAAM/U,KAAKqX,KAAK5G,IAAQ,GAAK,EACnD,OAAOlC,EAAMqJ,eAAe1J,EAAIC,EAClC,CAIAU,QAAQgJ,EAAQC,GAAuB,IAAfC,EAAS9G,UAAAtR,OAAA,QAAAuR,IAAAD,UAAA,GAAAA,UAAA,GAAG,EAC9B+G,EAAeF,EAAOnY,OAC1B,GAAqB,IAAjBqY,EACF,OAAQ,EAGV,IAAIC,EAAeJ,EAAOlY,OAC1B,IAAK,IAAIwQ,EAAI4H,EAAW5H,GAAK8H,EAAeD,EAAc7H,IACxD,IAAK,IAAIoG,EAAI,EAAGA,EAAIyB,GACdH,EAAO1H,EAAIoG,KAAOuB,EAAOvB,GADGA,IAGzB,GAAIA,IAAMyB,EAAe,EAC9B,OAAO7H,EAKb,OAAQ,CACV,EAIF,MAAM+H,UAA0BjB,EAC9B/E,YAAYM,GAAoD,IAAtCiC,EAAKxD,UAAAtR,OAAA,QAAAuR,IAAAD,UAAA,GAAAA,UAAA,GAAG,EAAG8D,EAAG9D,UAAAtR,OAAAsR,QAAAC,IAAAD,UAAAC,GAAAD,UAAGuB,GAAAA,EAAa7S,OACtDwS,QACAnS,KAAKwS,aAAeA,EACpBxS,KAAKyU,MAAQA,EACbzU,KAAK+U,IAAMA,CACb,CAQAsC,KAAK5G,GAEH,IADAA,GAAOzQ,KAAKyU,OACFzU,KAAK+U,IAAK,CAClB,MAAMtG,EAAOzO,KAAKwS,aAAa3S,YAAY4Q,GAC3C,OAAQhC,GAAQ,EAAKF,EAAM4J,UAAU1J,EACvC,CACE,OAAOwI,EAAiBK,KAE5B,CAIAE,MAAM9D,EAAKjD,GACTA,GAAOzQ,KAAKyU,MACZ,MAAMtE,EAAInQ,KAAKwS,aAAa3D,QAAQ6E,EAAI0E,OAAQ3H,GAChD,OAAON,EAAI,EAAIA,EAAIA,EAAIM,CACzB,CAGAiH,QAAQjH,GAEN,MAAMvC,GADNuC,GAAOzQ,KAAKyU,OAEJ,GAAKhE,GAAOzQ,KAAKwS,aAAa7S,OAASK,KAAKwS,aAAa3S,YAAY4Q,EAAM,IAAM,EACnFtC,EAAKsC,EAAMzQ,KAAKwS,aAAa7S,OAASK,KAAKwS,aAAa3S,YAAY4Q,IAAQ,EAClF,OAAOlC,EAAMqJ,eAAe1J,EAAIC,EAClC,EAGF,MAAMkK,EACJvZ,gBAAgBuR,GAAsC,IAA/BoE,EAAKxD,UAAAtR,OAAA,QAAAuR,IAAAD,UAAA,GAAAA,UAAA,GAAG,EAAG8D,EAAG9D,UAAAtR,OAAAsR,QAAAC,IAAAD,UAAAC,GAAAD,UAAGZ,GAAAA,EAAM1Q,OAC5C,OAAO,IAAIyX,EAAiB/G,EAAOoE,EAAOM,EAC5C,CAEAjW,iBAAiB0T,GAAoD,IAAtCiC,EAAKxD,UAAAtR,OAAA,QAAAuR,IAAAD,UAAA,GAAAA,UAAA,GAAG,EAAG8D,EAAG9D,UAAAtR,OAAAsR,QAAAC,IAAAD,UAAAC,GAAAD,UAAGuB,GAAAA,EAAa7S,OAC3D,OAAO,IAAIuY,EAAkB1F,EAAciC,EAAOM,EACpD,ECxKK,MAAMuD,EACXxZ,UAAYiS,EAAW,CACrB,WACA,cACA,UACA,aACA,kBACA,WACA,aACA,WACA,aACA,WACA,gBACA,mBACA,UACA,OACA,OACA,QACA,SACA,SACA,YAEA,aACA,iBAGFjS,kBAAkBoQ,GAChB,OAAOA,GAAMoJ,EAAOC,GAAGC,UACzB,CAEA1Z,mBACE,MAAO,EACT,CAEAA,qBAAqB2P,GACnB,OAAIA,IAASrP,EAAUiP,MAAML,IAAI,KACxB,KAEF,EACT,CAEAlP,kBAAkB2Z,GAChB,MAAMC,EAAQ,IAAIJ,EAAOG,EAAGvJ,IAS5B,OARAwJ,EAAMC,MAAQF,EAAGE,MACjBD,EAAME,KAAOH,EAAGG,KAChBF,EAAMG,MAAQJ,EAAGI,MACjBH,EAAMI,IAAML,EAAGK,IACfJ,EAAMK,IAAMN,EAAGM,IACfL,EAAMM,IAAMP,EAAGO,IACfN,EAAM3F,KAAO0F,EAAG1F,KAChB2F,EAAM5E,YAAc2E,EAAG3E,YAChB4E,CACT,CAEAxG,YAAYhD,GACVlP,KAAKkP,GAAKA,EACVlP,KAAK2Y,MAAQ,EAGb3Y,KAAK4Y,KAAON,EAAOW,YACnBjZ,KAAK6Y,MAAQ,KACb7Y,KAAK+Y,IAAM,EACX/Y,KAAKgZ,IAAM,EACXhZ,KAAK8Y,IAAM,EACX9Y,KAAK+S,KAAO,KACZ/S,KAAK8T,YAAc,EACrB,CAEAoF,SACElZ,KAAK2Y,MAAQ,EACb3Y,KAAK4Y,KAAON,EAAOW,YACnBjZ,KAAK6Y,MAAQ,KACb7Y,KAAK8Y,IAAM,EACX9Y,KAAK+Y,IAAM,EACX/Y,KAAKgZ,IAAM,EACXhZ,KAAK+S,KAAO,KACZ/S,KAAK8T,YAAc,EACrB,CAEAhF,WACE,OAAO9O,KAAKmZ,UACd,CAGAA,WACE,IAAIzK,EAAM,GACV,OAAQ1O,KAAKkP,IACX,KAAKoJ,EAAOC,GAAGa,SACb1K,GAAO,uBACP,MACF,KAAK4J,EAAOC,GAAGc,YACb3K,GAAO,OACP,MACF,KAAK4J,EAAOC,GAAGe,KACf,KAAKhB,EAAOC,GAAGgB,KACf,KAAKjB,EAAOC,GAAGiB,MACf,KAAKlB,EAAOC,GAAGkB,OAAQ,CACrB,MAAMC,EAAM1Z,KAAK4Y,KAAK,GAMtB,OALIc,EAAIxK,GAAKoJ,EAAOC,GAAGoB,SAAYD,EAAIxK,KAAOoJ,EAAOC,GAAGqB,SAAWF,EAAIb,MAAMlZ,OAAS,EACpF+O,GAAQ,MAAKgL,EAAIP,cAEjBzK,GAAOgL,EAAIP,WAELnZ,KAAKkP,IACX,KAAKoJ,EAAOC,GAAGe,KACb5K,GAAO,IACP,MACF,KAAK4J,EAAOC,GAAGgB,KACb7K,GAAO,IACP,MACF,KAAK4J,EAAOC,GAAGiB,MACb9K,GAAO,IACP,MACF,KAAK4J,EAAOC,GAAGkB,OACb/K,GAAQ,IAAG1O,KAAK+Y,MACZ/Y,KAAK+Y,MAAQ/Y,KAAKgZ,MACpBtK,GAAO,IACH1O,KAAKgZ,KAAO,IACdtK,GAAO1O,KAAKgZ,MAGhBtK,GAAO,IAGgC,IAAtC1O,KAAK2Y,MAAQ9Z,EAASgb,cACzBnL,GAAO,KAET,KACF,CAEA,KAAK4J,EAAOC,GAAGuB,OACb,IAAK,IAAIJ,KAAO1Z,KAAK4Y,KACfc,EAAIxK,KAAOoJ,EAAOC,GAAGwB,UACvBrL,GAAQ,MAAKgL,EAAIP,cAEjBzK,GAAOgL,EAAIP,WAGf,MAGF,KAAKb,EAAOC,GAAGwB,UAAW,CACxB,IAAIC,EAAM,GACV,IAAK,IAAIN,KAAO1Z,KAAK4Y,KACnBlK,GAAOsL,EACPA,EAAM,IACNtL,GAAOgL,EAAIP,WAEb,KACF,CAEA,KAAKb,EAAOC,GAAGqB,QAC6B,IAArC5Z,KAAK2Y,MAAQ9Z,EAASob,aACzBvL,GAAO,QAET,IAAK,IAAID,KAAQzO,KAAK6Y,MACpBnK,GAAOH,EAAM2L,WAAWzL,GAEgB,IAArCzO,KAAK2Y,MAAQ9Z,EAASob,aACzBvL,GAAO,KAET,MACF,KAAK4J,EAAOC,GAAG4B,gBACbzL,GAAO,UACP,MACF,KAAK4J,EAAOC,GAAG6B,SACb1L,GAAO,SACP,MACF,KAAK4J,EAAOC,GAAGoB,QACK,OAAd3Z,KAAK+S,MAAsC,IAArB/S,KAAK+S,KAAKpT,OAClC+O,GAAO,IAEPA,GAAQ,OAAM1O,KAAK+S,QAEjB/S,KAAK4Y,KAAK,GAAG1J,KAAOoJ,EAAOC,GAAGc,cAChC3K,GAAO1O,KAAK4Y,KAAK,GAAGO,YAEtBzK,GAAO,IACP,MACF,KAAK4J,EAAOC,GAAG8B,WACb3L,GAAO,MACP,MACF,KAAK4J,EAAOC,GAAG+B,SAC8B,IAAtCta,KAAK2Y,MAAQ9Z,EAAS0b,YACzB7L,GAAO,UAEPA,GAAO,MAET,MACF,KAAK4J,EAAOC,GAAGiC,WACb9L,GAAO,IACP,MACF,KAAK4J,EAAOC,GAAGkC,SACb/L,GAAO,IACP,MACF,KAAK4J,EAAOC,GAAGmC,cACbhM,GAAO,MACP,MACF,KAAK4J,EAAOC,GAAGoC,iBACbjM,GAAO,MACP,MACF,KAAK4J,EAAOC,GAAGqC,WACb,GAAI5a,KAAK6Y,MAAMlZ,OAAS,GAAM,EAAG,CAC/B+O,GAAO,uBACP,KACF,CAGA,GADAA,GAAO,IACmB,IAAtB1O,KAAK6Y,MAAMlZ,OACb+O,GAAO,0BACF,GAAsB,IAAlB1O,KAAK6Y,MAAM,IAAY7Y,KAAK6Y,MAAM7Y,KAAK6Y,MAAMlZ,OAAS,KAAOsN,EAAQ4N,SAAU,CACxFnM,GAAO,IAEP,IAAK,IAAIyB,EAAI,EAAGA,EAAInQ,KAAK6Y,MAAMlZ,OAAS,EAAGwQ,GAAK,EAAG,CACjD,MAAM/C,EAAKpN,KAAK6Y,MAAM1I,GAAK,EACrB9C,EAAKrN,KAAK6Y,MAAM1I,EAAI,GAAK,EAE/BzB,GAAO4J,EAAOwC,cAAc1N,GAC5BsB,GAAOH,EAAM2L,WAAW9M,GACpBA,IAAOC,IACTqB,GAAO,IACPA,GAAO4J,EAAOwC,cAAczN,GAC5BqB,GAAOH,EAAM2L,WAAW7M,GAE5B,CACF,MACE,IAAK,IAAI8C,EAAI,EAAGA,EAAInQ,KAAK6Y,MAAMlZ,OAAQwQ,GAAK,EAAG,CAC7C,MAAM/C,EAAKpN,KAAK6Y,MAAM1I,GAChB9C,EAAKrN,KAAK6Y,MAAM1I,EAAI,GAC1BzB,GAAO4J,EAAOwC,cAAc1N,GAC5BsB,GAAOH,EAAM2L,WAAW9M,GACpBA,IAAOC,IACTqB,GAAO,IACPA,GAAO4J,EAAOwC,cAAczN,GAC5BqB,GAAOH,EAAM2L,WAAW7M,GAE5B,CAEFqB,GAAO,IACP,MACF,QACEA,GAAO1O,KAAKkP,GAGhB,OAAOR,CACT,CAGAqM,SACE,IAAIzN,EAAI,EAIR,GAHItN,KAAKkP,KAAOoJ,EAAOC,GAAGoB,UACxBrM,EAAItN,KAAK8Y,KAEO,OAAd9Y,KAAK4Y,KACP,IAAK,IAAIc,KAAO1Z,KAAK4Y,KAAM,CACzB,MAAMtC,EAAIoD,EAAIqB,SACVzN,EAAIgJ,IACNhJ,EAAIgJ,EAER,CAEF,OAAOhJ,CACT,CAGA0N,OAAOC,GACL,KAAe,OAATA,GAAiBA,aAAgB3C,GACrC,OAAO,EAET,GAAItY,KAAKkP,KAAO+L,EAAK/L,GACnB,OAAO,EAET,OAAQlP,KAAKkP,IACX,KAAKoJ,EAAOC,GAAG+B,SACb,IAAKta,KAAK2Y,MAAQ9Z,EAAS0b,cAAiBU,EAAKtC,MAAQ9Z,EAAS0b,YAChE,OAAO,EAET,MAEF,KAAKjC,EAAOC,GAAGqB,QACf,KAAKtB,EAAOC,GAAGqC,WACb,GAAmB,OAAf5a,KAAK6Y,OAAiC,OAAfoC,EAAKpC,MAC9B,MAEF,GAAmB,OAAf7Y,KAAK6Y,OAAiC,OAAfoC,EAAKpC,MAC9B,OAAO,EAET,GAAI7Y,KAAK6Y,MAAMlZ,SAAWsb,EAAKpC,MAAMlZ,OACnC,OAAO,EAET,IAAK,IAAIwQ,EAAI,EAAGA,EAAInQ,KAAK6Y,MAAMlZ,OAAQwQ,IACrC,GAAInQ,KAAK6Y,MAAM1I,KAAO8K,EAAKpC,MAAM1I,GAC/B,OAAO,EAGX,MAEF,KAAKmI,EAAOC,GAAGwB,UACf,KAAKzB,EAAOC,GAAGuB,OACb,GAAI9Z,KAAK4Y,KAAKjZ,SAAWsb,EAAKrC,KAAKjZ,OACjC,OAAO,EAET,IAAK,IAAIwQ,EAAI,EAAGA,EAAInQ,KAAK4Y,KAAKjZ,SAAUwQ,EACtC,IAAKnQ,KAAK4Y,KAAKzI,GAAG6K,OAAOC,EAAKrC,KAAKzI,IACjC,OAAO,EAGX,MAEF,KAAKmI,EAAOC,GAAGe,KACf,KAAKhB,EAAOC,GAAGgB,KACf,KAAKjB,EAAOC,GAAGiB,MACb,IACGxZ,KAAK2Y,MAAQ9Z,EAASgb,cAAiBoB,EAAKtC,MAAQ9Z,EAASgb,cAC7D7Z,KAAK4Y,KAAK,GAAGoC,OAAOC,EAAKrC,KAAK,IAE/B,OAAO,EAET,MAEF,KAAKN,EAAOC,GAAGkB,OACb,IACGzZ,KAAK2Y,MAAQ9Z,EAASgb,cAAiBoB,EAAKtC,MAAQ9Z,EAASgb,aAC9D7Z,KAAK+Y,MAAQkC,EAAKlC,KAClB/Y,KAAKgZ,MAAQiC,EAAKjC,MACjBhZ,KAAK4Y,KAAK,GAAGoC,OAAOC,EAAKrC,KAAK,IAE/B,OAAO,EAET,MAEF,KAAKN,EAAOC,GAAGoB,QACb,GACE3Z,KAAK8Y,MAAQmC,EAAKnC,MACH,OAAd9Y,KAAK+S,KAA8B,OAAdkI,EAAKlI,KAAgB/S,KAAK+S,OAASkI,EAAKlI,QAC7D/S,KAAK4Y,KAAK,GAAGoC,OAAOC,EAAKrC,KAAK,IAE/B,OAAO,EAKb,OAAO,CACT,EC1VF,MAAMsC,EACJpc,WAAa,EACbA,iBAAmB,EACnBA,eAAiB,EACjBA,mBAAqB,EACrBA,YAAc,EACdA,aAAe,EACfA,WAAa,EACbA,YAAc,EACdA,aAAe,EACfA,gBAAkB,GAClBA,uBAAyB,GAEzBA,gBAAgBoQ,GACd,OAAOgM,EAAKC,MAAQjM,GAAMA,GAAMgM,EAAKE,eACvC,CAGAtc,mBAAmB+Z,GACjB,IAAInK,EAAM,IACV,IAAK,IAAID,KAAQoK,EACfnK,GAAOH,EAAM2L,WAAWzL,GAG1B,OADAC,GAAO,IACAA,CACT,CAEAwD,YAAYhD,GACVlP,KAAKkP,GAAKA,EACVlP,KAAK0O,IAAM,EACX1O,KAAKqb,IAAM,EAGXrb,KAAK6Y,MAAQ,IACf,CAIAyC,UAAUnO,GAGR,GAA0B,IAAtBnN,KAAK6Y,MAAMlZ,OAAc,CAC3B,MAAM4b,EAAKvb,KAAK6Y,MAAM,GACtB,OAAwC,IAAnC7Y,KAAKqb,IAAMxc,EAASob,WAChBhN,EAAQuO,iBAAiBD,EAAIpO,GAE/BA,IAAMoO,CACf,CAGA,IAAK,IAAIhF,EAAI,EAAGA,EAAIvW,KAAK6Y,MAAMlZ,QAAU4W,GAAK,EAAGA,GAAK,EAAG,CACvD,GAAIpJ,EAAInN,KAAK6Y,MAAMtC,GACjB,OAAO,EAET,GAAIpJ,GAAKnN,KAAK6Y,MAAMtC,EAAI,GACtB,OAAO,CAEX,CAEA,IAAInJ,EAAK,EACLC,EAAMrN,KAAK6Y,MAAMlZ,OAAS,EAAK,EACnC,KAAOyN,EAAKC,GAAI,CACd,MAAMC,EAAIF,IAAQC,EAAKD,GAAM,EAAK,GAElC,GADUpN,KAAK6Y,MAAM,EAAIvL,IAChBH,EAAG,CACV,GAAIA,GAAKnN,KAAK6Y,MAAM,EAAIvL,EAAI,GAC1B,OAAO,EAETF,EAAKE,EAAI,CACX,MACED,EAAKC,CAET,CAEA,OAAO,CACT,CAKAwB,WACE,OAAQ9O,KAAKkP,IACX,KAAKgM,EAAKO,IACR,MAAQ,UAASzb,KAAK0O,QAAQ1O,KAAKqb,MACrC,KAAKH,EAAKQ,UACR,MAAQ,eAAc1b,KAAK0O,QAAQ1O,KAAKqb,MAC1C,KAAKH,EAAKvB,QACR,MAAQ,OAAM3Z,KAAKqb,UAAUrb,KAAK0O,MACpC,KAAKwM,EAAKS,YACR,MAAQ,SAAQ3b,KAAKqb,UAAUrb,KAAK0O,MACtC,KAAKwM,EAAKU,MACR,MAAO,QACT,KAAKV,EAAKW,KACR,MAAO,OACT,KAAKX,EAAKY,IACR,MAAQ,UAAS9b,KAAK0O,MACxB,KAAKwM,EAAKC,KACR,OAAmB,OAAfnb,KAAK6Y,MACA,cAEF,CACL,QACAqC,EAAKa,YAAY/b,KAAK6Y,OACc,IAAnC7Y,KAAKqb,IAAMxc,EAASob,WAAmB,KAAO,GAC/C,OACAja,KAAK0O,KACLgB,KAAK,IACT,KAAKwL,EAAKc,MACR,MAAQ,SAAQd,EAAKa,YAAY/b,KAAK6Y,aAAa7Y,KAAK0O,MAC1D,KAAKwM,EAAKe,SACR,MAAQ,UAASjc,KAAK0O,MACxB,KAAKwM,EAAKE,gBACR,MAAQ,eAAcpb,KAAK0O,MAC7B,QACE,MAAM,IAAIiD,MAAM,mCAEtB,ECvHF,MAAMuK,EACJhK,cACElS,KAAKmc,KAAO,GACZnc,KAAKyU,MAAQ,EAGbzU,KAAKoc,OAAS,CAChB,CAIAC,QAAQC,GACN,OAAOtc,KAAKmc,KAAKG,EACnB,CAGAC,UACE,OAAOvc,KAAKmc,KAAKxc,MACnB,CAIA6c,QAAQtN,GACNlP,KAAKmc,KAAKM,KAAK,IAAIvB,EAAKhM,GAC1B,CAIAwN,QAAQJ,GACN,IAAInM,EAAInQ,KAAKmc,KAAKG,GAElB,KAAOnM,EAAEjB,KAAOgM,EAAKY,KAAO3L,EAAEjB,KAAOgM,EAAKvB,SACxCxJ,EAAInQ,KAAKmc,KAAKG,GACdA,EAAKnM,EAAEzB,IAGT,OAAOyB,CACT,CAKAiI,SACE,IAAIA,EAAS,GACTjI,EAAInQ,KAAK0c,QAAQ1c,KAAKyU,OAE1B,IAAKyG,EAAKyB,SAASxM,EAAEjB,KAA0B,IAAnBiB,EAAE0I,MAAMlZ,OAClC,MAAO,CAACwQ,EAAEjB,KAAOgM,EAAKU,MAAOxD,GAG/B,KAAO8C,EAAKyB,SAASxM,EAAEjB,KAA0B,IAAnBiB,EAAE0I,MAAMlZ,QAAiD,IAAhCwQ,EAAEkL,IAAMxc,EAASob,YACtE7B,GAAU5Y,OAAOC,cAAc0Q,EAAE0I,MAAM,IACvC1I,EAAInQ,KAAK0c,QAAQvM,EAAEzB,KAGrB,MAAO,CAACyB,EAAEjB,KAAOgM,EAAKU,MAAOxD,EAC/B,CAIAwE,YACE,IAAIC,EAAO,EACPP,EAAKtc,KAAKyU,MACdqI,EAAM,OAAS,CACb,MAAM3M,EAAInQ,KAAKmc,KAAKG,GACpB,OAAQnM,EAAEjB,IACR,KAAKgM,EAAKS,YACRkB,GAAQ1M,EAAEkL,IACV,MACF,KAAKH,EAAKW,KACR,OAAQ,EACV,KAAKX,EAAKvB,QACV,KAAKuB,EAAKY,IACR,MACF,QACE,MAAMgB,EAEVR,EAAKnM,EAAEzB,GACT,CACA,OAAOmO,CACT,CAeAE,KAAK9O,GACH,MAAMkC,EAAInQ,KAAKmc,KAAKlO,GAAK,GACzB,OAAgB,IAAP,EAAJA,GACIkC,EAAEzB,IAEJyB,EAAEkL,GACX,CAEA2B,MAAM/O,EAAGoD,GACP,KAAa,IAANpD,GAAS,CACd,MAAMkC,EAAInQ,KAAKmc,KAAKlO,GAAK,GACT,IAAP,EAAJA,IACHA,EAAIkC,EAAEzB,IACNyB,EAAEzB,IAAM2C,IAERpD,EAAIkC,EAAEkL,IACNlL,EAAEkL,IAAMhK,EAEZ,CACF,CAEA4L,OAAOC,EAAIC,GACT,GAAW,IAAPD,EACF,OAAOC,EAGT,GAAW,IAAPA,EACF,OAAOD,EAGT,IAAI7G,EAAO6G,EACX,OAAS,CACP,MAAMH,EAAO/c,KAAK+c,KAAK1G,GACvB,GAAa,IAAT0G,EACF,MAEF1G,EAAO0G,CACT,CAEA,MAAM5M,EAAInQ,KAAKmc,KAAK9F,GAAQ,GAO5B,OANmB,IAAP,EAAPA,GACHlG,EAAEzB,IAAMyO,EAERhN,EAAEkL,IAAM8B,EAGHD,CACT,CAKApO,WACE,IAAIJ,EAAM,GACV,IAAK,IAAI4N,EAAK,EAAGA,EAAKtc,KAAKmc,KAAKxc,OAAQ2c,IAAM,CAC5C,MAAMc,EAAM1O,EAAI/O,OAChB+O,GAAO4N,EACHA,IAAOtc,KAAKyU,QACd/F,GAAO,KAETA,GAAO,WAAWsG,UAAUtG,EAAI/O,OAASyd,GACzC1O,GAAO1O,KAAKmc,KAAKG,GACjB5N,GAAO,IACT,CACA,OAAOA,CACT,ECtJF,MAAM2O,EACJnL,cAA8C,IAAlC/B,EAACc,UAAAtR,OAAA,QAAAuR,IAAAD,UAAA,GAAAA,UAAA,GAAG,EAAGvC,EAAGuC,UAAAtR,OAAA,QAAAuR,IAAAD,UAAA,GAAAA,UAAA,GAAG,EAAGqM,EAAQrM,UAAAtR,OAAA,QAAAuR,IAAAD,UAAA,IAAAA,UAAA,GAClCjR,KAAKmQ,EAAIA,EACTnQ,KAAK0O,IAAMA,EACX1O,KAAKsd,SAAWA,CAClB,EAOF,MAAMC,EACJze,yBACE,MAAO,CAAC,EAAGM,EAAUiP,MAAML,IAAI,MAAQ,EAAG5O,EAAUiP,MAAML,IAAI,MAAQ,EAAGf,EAAQ4N,SACnF,CAEA/b,kBACE,MAAO,CAAC,EAAGmO,EAAQ4N,SACrB,CAEA/b,qBAAqB2Z,GACnB,MAAMjK,EAAI,IAAI+O,EACRC,EAAIhP,EAAEiP,QAAQhF,GAGpB,OAFAjK,EAAEkP,KAAKV,MAAMQ,EAAE9O,IAAKF,EAAEmP,QAAQzC,EAAKU,OAAOzL,GAC1C3B,EAAEkP,KAAKjJ,MAAQ+I,EAAErN,EACV3B,EAAEkP,IACX,CAEAxL,cACElS,KAAK0d,KAAO,IAAIxB,EAChBlc,KAAK2d,QAAQzC,EAAKW,KACpB,CAEA8B,QAAQzO,GAEN,OADAlP,KAAK0d,KAAKlB,QAAQtN,GACX,IAAImO,EAAKrd,KAAK0d,KAAKnB,UAAY,EAAG,GAAG,EAC9C,CAGAqB,MACE,MAAMJ,EAAIxd,KAAK2d,QAAQzC,EAAKY,KAE5B,OADA0B,EAAE9O,IAAM8O,EAAErN,GAAK,EACRqN,CACT,CAEAK,OACE,OAAO,IAAIR,CACb,CAIAvE,IAAIuC,GACF,MAAMmC,EAAIxd,KAAK2d,QAAQzC,EAAKvB,SAM5B,OALA6D,EAAE9O,IAAM8O,EAAErN,GAAK,EACfnQ,KAAK0d,KAAKrB,QAAQmB,EAAErN,GAAGkL,IAAMA,EACzBrb,KAAK0d,KAAKtB,OAASf,EAAM,IAC3Brb,KAAK0d,KAAKtB,OAASf,EAAM,GAEpBmC,CACT,CAGAM,IAAIC,EAAIC,GAEN,OAAa,IAATD,EAAG5N,GAAoB,IAAT6N,EAAG7N,EACZnQ,KAAK6d,QAId7d,KAAK0d,KAAKV,MAAMe,EAAGrP,IAAKsP,EAAG7N,GACpB,IAAIkN,EAAKU,EAAG5N,EAAG6N,EAAGtP,IAAKqP,EAAGT,UAAYU,EAAGV,UAClD,CAGAW,IAAIF,EAAIC,GAEN,GAAa,IAATD,EAAG5N,EACL,OAAO6N,EAET,GAAa,IAATA,EAAG7N,EACL,OAAO4N,EAET,MAAMP,EAAIxd,KAAK2d,QAAQzC,EAAKO,KACtBtL,EAAInQ,KAAK0d,KAAKrB,QAAQmB,EAAErN,GAK9B,OAJAA,EAAEzB,IAAMqP,EAAG5N,EACXA,EAAEkL,IAAM2C,EAAG7N,EACXqN,EAAE9O,IAAM1O,KAAK0d,KAAKT,OAAOc,EAAGrP,IAAKsP,EAAGtP,KACpC8O,EAAEF,SAAWS,EAAGT,UAAYU,EAAGV,SACxBE,CACT,CAOAV,KAAKiB,EAAIG,GACP,MAAMV,EAAIxd,KAAK2d,QAAQzC,EAAKO,KACtBtL,EAAInQ,KAAK0d,KAAKrB,QAAQmB,EAAErN,GAS9B,OARI+N,GACF/N,EAAEkL,IAAM0C,EAAG5N,EACXqN,EAAE9O,IAAM8O,EAAErN,GAAK,IAEfA,EAAEzB,IAAMqP,EAAG5N,EACXqN,EAAE9O,IAAO8O,EAAErN,GAAK,EAAK,GAEvBnQ,KAAK0d,KAAKV,MAAMe,EAAGrP,IAAK8O,EAAErN,GACnBqN,CACT,CAGAW,MAAMJ,EAAIG,GACR,MAAMV,EAAIxd,KAAK2d,QAAQzC,EAAKO,KACtBtL,EAAInQ,KAAK0d,KAAKrB,QAAQmB,EAAErN,GAS9B,OARI+N,GACF/N,EAAEkL,IAAM0C,EAAG5N,EACXqN,EAAE9O,IAAM8O,EAAErN,GAAK,IAEfA,EAAEzB,IAAMqP,EAAG5N,EACXqN,EAAE9O,IAAO8O,EAAErN,GAAK,EAAK,GAEvBqN,EAAE9O,IAAM1O,KAAK0d,KAAKT,OAAOO,EAAE9O,IAAKqP,EAAGrP,KAC5B8O,CACT,CAGAY,KAAKL,EAAIG,GACP,OAAIH,EAAGT,SACEtd,KAAKme,MAAMne,KAAKqe,KAAKN,EAAIG,GAAYA,GAEvCle,KAAK8c,KAAKiB,EAAIG,EACvB,CAGAG,KAAKN,EAAIG,GACP,OAAO,IAAIb,EAAKU,EAAG5N,EAAGnQ,KAAK8c,KAAKiB,EAAIG,GAAWxP,IAAKqP,EAAGT,SACzD,CAGAgB,MAAMpP,GACJ,MAAMsO,EAAIxd,KAAK2d,QAAQzC,EAAKS,aAG5B,OAFA3b,KAAK0d,KAAKrB,QAAQmB,EAAErN,GAAGkL,IAAMnM,EAC7BsO,EAAE9O,IAAM8O,EAAErN,GAAK,EACRqN,CACT,CAGA/O,KAAKoK,EAAOF,GACV,MAAM6E,EAAIxd,KAAK2d,QAAQzC,EAAKC,MAC5BqC,EAAEF,UAAW,EACb,MAAMnN,EAAInQ,KAAK0d,KAAKrB,QAAQmB,EAAErN,GAwB9B,OAvBAA,EAAE0I,MAAQA,EACVF,GAAS9Z,EAASob,UACG,IAAjBpB,EAAMlZ,QAAgBsN,EAAQqB,WAAWuK,EAAM,MAAQA,EAAM,KAC/DF,IAAU9Z,EAASob,WAErB9J,EAAEkL,IAAM1C,EACR6E,EAAE9O,IAAM8O,EAAErN,GAAK,EAEqB,IAAhCwI,EAAQ9Z,EAASob,YAAqC,IAAjBpB,EAAMlZ,QAC3B,IAAjBkZ,EAAMlZ,QAAgBkZ,EAAM,KAAOA,EAAM,GAE1C1I,EAAEjB,GAAKgM,EAAKc,MACc,IAAjBnD,EAAMlZ,QAA6B,IAAbkZ,EAAM,IAAYA,EAAM,KAAO5L,EAAQ4N,SACtE1K,EAAEjB,GAAKgM,EAAKe,SAEK,IAAjBpD,EAAMlZ,QACO,IAAbkZ,EAAM,IACNA,EAAM,KAAOzZ,EAAUiP,MAAML,IAAI,MAAQ,GACzC6K,EAAM,KAAOzZ,EAAUiP,MAAML,IAAI,MAAQ,GACzC6K,EAAM,KAAO5L,EAAQ4N,WAErB1K,EAAEjB,GAAKgM,EAAKE,iBAEPoC,CACT,CAEAC,QAAQhF,GACN,OAAQA,EAAGvJ,IACT,KAAKoJ,EAAOC,GAAGa,SACb,OAAOpZ,KAAK6d,OACd,KAAKvF,EAAOC,GAAGc,YACb,OAAOrZ,KAAK4d,MACd,KAAKtF,EAAOC,GAAGqB,QACb,GAAwB,IAApBnB,EAAGI,MAAMlZ,OACX,OAAOK,KAAK4d,MACP,CACL,IAAIJ,EAAI,KACR,IAAK,IAAIrQ,KAAKsL,EAAGI,MAAO,CACtB,MAAMkF,EAAK/d,KAAKyO,KAAK,CAACtB,GAAIsL,EAAGE,OAC7B6E,EAAU,OAANA,EAAaO,EAAK/d,KAAK8d,IAAIN,EAAGO,EACpC,CACA,OAAOP,CACT,CACF,KAAKlF,EAAOC,GAAGqC,WACb,OAAO5a,KAAKyO,KAAKgK,EAAGI,MAAOJ,EAAGE,OAChC,KAAKL,EAAOC,GAAG4B,gBACb,OAAOna,KAAKyO,KAAK8O,EAASgB,kBAAmB,GAC/C,KAAKjG,EAAOC,GAAG6B,SACb,OAAOpa,KAAKyO,KAAK8O,EAASiB,WAAY,GACxC,KAAKlG,EAAOC,GAAGiC,WACb,OAAOxa,KAAKse,MAAM/P,EAAMa,kBAC1B,KAAKkJ,EAAOC,GAAGkC,SACb,OAAOza,KAAKse,MAAM/P,EAAMe,gBAC1B,KAAKgJ,EAAOC,GAAG8B,WACb,OAAOra,KAAKse,MAAM/P,EAAMY,kBAC1B,KAAKmJ,EAAOC,GAAG+B,SACb,OAAOta,KAAKse,MAAM/P,EAAMc,gBAC1B,KAAKiJ,EAAOC,GAAGmC,cACb,OAAO1a,KAAKse,MAAM/P,EAAMiB,qBAC1B,KAAK8I,EAAOC,GAAGoC,iBACb,OAAO3a,KAAKse,MAAM/P,EAAMkB,wBAC1B,KAAK6I,EAAOC,GAAGoB,QAAS,CACtB,MAAM8E,EAAMze,KAAK8Y,IAAIL,EAAGK,KAAO,GACzBY,EAAM1Z,KAAKyd,QAAQhF,EAAGG,KAAK,IAC3B8F,EAAM1e,KAAK8Y,IAAKL,EAAGK,KAAO,EAAK,GACrC,OAAO9Y,KAAK8d,IAAI9d,KAAK8d,IAAIW,EAAK/E,GAAMgF,EACtC,CACA,KAAKpG,EAAOC,GAAGe,KACb,OAAOtZ,KAAKoe,KAAKpe,KAAKyd,QAAQhF,EAAGG,KAAK,IAA0C,IAApCH,EAAGE,MAAQ9Z,EAASgb,aAClE,KAAKvB,EAAOC,GAAGgB,KACb,OAAOvZ,KAAKqe,KAAKre,KAAKyd,QAAQhF,EAAGG,KAAK,IAA0C,IAApCH,EAAGE,MAAQ9Z,EAASgb,aAClE,KAAKvB,EAAOC,GAAGiB,MACb,OAAOxZ,KAAKme,MAAMne,KAAKyd,QAAQhF,EAAGG,KAAK,IAA0C,IAApCH,EAAGE,MAAQ9Z,EAASgb,aACnE,KAAKvB,EAAOC,GAAGuB,OACb,GAAuB,IAAnBrB,EAAGG,KAAKjZ,OACV,OAAOK,KAAK4d,MACP,CACL,IAAIJ,EAAI,KACR,IAAK,IAAI9D,KAAOjB,EAAGG,KAAM,CACvB,MAAMmF,EAAK/d,KAAKyd,QAAQ/D,GACxB8D,EAAU,OAANA,EAAaO,EAAK/d,KAAK8d,IAAIN,EAAGO,EACpC,CACA,OAAOP,CACT,CAEF,KAAKlF,EAAOC,GAAGwB,UACb,GAAuB,IAAnBtB,EAAGG,KAAKjZ,OACV,OAAOK,KAAK4d,MACP,CACL,IAAIJ,EAAI,KACR,IAAK,IAAI9D,KAAOjB,EAAGG,KAAM,CACvB,MAAMmF,EAAK/d,KAAKyd,QAAQ/D,GACxB8D,EAAU,OAANA,EAAaO,EAAK/d,KAAKie,IAAIT,EAAGO,EACpC,CACA,OAAOP,CACT,CAEF,QACE,MAAM,IAAIpK,EAAsB,qCAEtC,ECxQF,MAAMuL,EASJ7f,gBAAgB2Z,GACd,GAAW,OAAPA,EACF,OAAO,KAGT,OAAQA,EAAGvJ,IACT,KAAKoJ,EAAOC,GAAGoB,QACf,KAAKrB,EAAOC,GAAGuB,OACf,KAAKxB,EAAOC,GAAGwB,UAAW,CACxB,IAAI6E,EAAMnG,EACV,IAAK,IAAItI,EAAI,EAAGA,EAAIsI,EAAGG,KAAKjZ,OAAQwQ,IAAK,CACvC,MAAMuJ,EAAMjB,EAAGG,KAAKzI,GACd0O,EAAOF,EAASG,SAASpF,GAC3BkF,IAAQnG,GAAMoG,IAASnF,IACzBkF,EAAMtG,EAAOyG,WAAWtG,GACxBmG,EAAI/F,MAAQ,KACZ+F,EAAIhG,KAAOH,EAAGG,KAAK/C,MAAM,EAAG4C,EAAGG,KAAKjZ,SAElCif,IAAQnG,IACVmG,EAAIhG,KAAKzI,GAAK0O,EAElB,CACA,OAAOD,CACT,CAEA,KAAKtG,EAAOC,GAAGe,KACf,KAAKhB,EAAOC,GAAGgB,KACf,KAAKjB,EAAOC,GAAGiB,MAAO,CACpB,MAAME,EAAMiF,EAASG,SAASrG,EAAGG,KAAK,IACtC,OAAO+F,EAASK,UAAUvG,EAAGvJ,GAAIuJ,EAAGE,MAAOe,EAAKjB,EAClD,CAEA,KAAKH,EAAOC,GAAGkB,OAAQ,CAGrB,GAAe,IAAXhB,EAAGM,KAAwB,IAAXN,EAAGO,IACrB,OAAO,IAAIV,EAAOA,EAAOC,GAAGc,aAG9B,MAAMK,EAAMiF,EAASG,SAASrG,EAAGG,KAAK,IAGtC,IAAgB,IAAZH,EAAGO,IAAY,CAEjB,GAAe,IAAXP,EAAGM,IACL,OAAO4F,EAASK,UAAU1G,EAAOC,GAAGe,KAAMb,EAAGE,MAAOe,EAAK,MAG3D,GAAe,IAAXjB,EAAGM,IACL,OAAO4F,EAASK,UAAU1G,EAAOC,GAAGgB,KAAMd,EAAGE,MAAOe,EAAK,MAG3D,MAAMkF,EAAM,IAAItG,EAAOA,EAAOC,GAAGuB,QAC3BlB,EAAO,GACb,IAAK,IAAIzI,EAAI,EAAGA,EAAIsI,EAAGM,IAAM,EAAG5I,IAC9ByI,EAAK6D,KAAK/C,GAIZ,OAFAd,EAAK6D,KAAKkC,EAASK,UAAU1G,EAAOC,GAAGgB,KAAMd,EAAGE,MAAOe,EAAK,OAC5DkF,EAAIhG,KAAOA,EAAK/C,MAAM,GACf+I,CACT,CAIA,GAAe,IAAXnG,EAAGM,KAAwB,IAAXN,EAAGO,IACrB,OAAOU,EAQT,IAAIuF,EAAa,KACjB,GAAIxG,EAAGM,IAAM,EAAG,CACdkG,EAAa,GACb,IAAK,IAAI9O,EAAI,EAAGA,EAAIsI,EAAGM,IAAK5I,IAC1B8O,EAAWxC,KAAK/C,EAEpB,CAGA,GAAIjB,EAAGO,IAAMP,EAAGM,IAAK,CACnB,IAAImG,EAASP,EAASK,UAAU1G,EAAOC,GAAGiB,MAAOf,EAAGE,MAAOe,EAAK,MAChE,IAAK,IAAIvJ,EAAIsI,EAAGM,IAAM,EAAG5I,EAAIsI,EAAGO,IAAK7I,IAAK,CACxC,MAAMgP,EAAO,IAAI7G,EAAOA,EAAOC,GAAGuB,QAClCqF,EAAKvG,KAAO,CAACc,EAAKwF,GAClBA,EAASP,EAASK,UAAU1G,EAAOC,GAAGiB,MAAOf,EAAGE,MAAOwG,EAAM,KAC/D,CAEA,GAAmB,OAAfF,EACF,OAAOC,EAGTD,EAAWxC,KAAKyC,EAClB,CAEA,GAAmB,OAAfD,EAAqB,CACvB,MAAM7G,EAAS,IAAIE,EAAOA,EAAOC,GAAGuB,QAEpC,OADA1B,EAAOQ,KAAOqG,EAAWpJ,MAAM,GACxBuC,CACT,CAIA,OAAO,IAAIE,EAAOA,EAAOC,GAAGa,SAC9B,EAEF,OAAOX,CACT,CAiBA3Z,iBAAiBoQ,EAAIyJ,EAAOe,EAAKjB,GAG/B,OAAIiB,EAAIxK,KAAOoJ,EAAOC,GAAGc,aAKrBnK,IAAOwK,EAAIxK,KAAOyJ,EAAQ9Z,EAASgb,cAAiBH,EAAIf,MAAQ9Z,EAASgb,YAJpEH,GASA,OAAPjB,GACAA,EAAGvJ,KAAOA,IACTuJ,EAAGE,MAAQ9Z,EAASgb,cAAiBlB,EAAQ9Z,EAASgb,aACvDH,IAAQjB,EAAGG,KAAK,MAKlBH,EAAK,IAAIH,EAAOpJ,IACbyJ,MAAQA,EACXF,EAAGG,KAAO,CAACc,IALFjB,EAOX,EChKF,MAAM2G,EACJlN,YAAYmN,EAAMC,GAChBtf,KAAKqf,KAAOA,EACZrf,KAAKsf,IAAMA,CACb,EAGF,MAAMC,EAAQ,CAAC,GAAM,IAEfC,EAAQ,CAAC,EAAK,GAAK,GAAK,GAAK,GAAM,IAEnCC,EAAQ,CAAC,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,KAEnDC,EAAc,IAAIrgB,IAAI,CAC1B,CAAC,MAAO,IAAI+f,EAAU,EAAIG,IAC1B,CAAC,MAAO,IAAIH,GAAW,EAAGG,IAC1B,CAAC,MAAO,IAAIH,EAAU,EAAII,IAC1B,CAAC,MAAO,IAAIJ,GAAW,EAAGI,IAC1B,CAAC,MAAO,IAAIJ,EAAU,EAAIK,IAC1B,CAAC,MAAO,IAAIL,GAAW,EAAGK,MAEtBE,EAAQ,CAAC,GAAM,GAAM,GAAM,GAAM,GAAM,KAEvCC,EAAQ,CAAC,GAAM,GAAM,GAAM,KAE3BC,EAAQ,CAAC,EAAK,KAEdC,EAAQ,CAAC,EAAK,EAAK,GAAM,IAEzBC,EAAQ,CAAC,EAAK,GAAM,IAAM,KAE1BC,EAAQ,CAAC,GAAM,IAEfC,EAAS,CAAC,GAAM,KAEhBC,EAAS,CAAC,GAAM,KAEhBC,EAAS,CAAC,GAAM,KAEhBC,EAAS,CAAC,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,IAAM,KAEpDC,EAAS,CAAC,EAAK,GAAK,GAAM,IAE1BC,EAAS,CAAC,GAAM,IAEhBC,EAAS,CAAC,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,KAEpDC,EAAS,CAAC,GAAM,GAAM,GAAM,GAAM,GAAM,KAExCC,EAAe,IAAIphB,IAAI,CAC3B,CAAC,YAAa,IAAI+f,EAAU,EAAIO,IAChC,CAAC,aAAc,IAAIP,GAAW,EAAGO,IACjC,CAAC,YAAa,IAAIP,EAAU,EAAIQ,IAChC,CAAC,aAAc,IAAIR,GAAW,EAAGQ,IACjC,CAAC,YAAa,IAAIR,EAAU,EAAIS,IAChC,CAAC,aAAc,IAAIT,GAAW,EAAGS,IACjC,CAAC,YAAa,IAAIT,EAAU,EAAIU,IAChC,CAAC,aAAc,IAAIV,GAAW,EAAGU,IACjC,CAAC,YAAa,IAAIV,EAAU,EAAIW,IAChC,CAAC,aAAc,IAAIX,GAAW,EAAGW,IACjC,CAAC,YAAa,IAAIX,EAAU,EAAIY,IAChC,CAAC,aAAc,IAAIZ,GAAW,EAAGY,IACjC,CAAC,YAAa,IAAIZ,EAAU,EAAIa,IAChC,CAAC,aAAc,IAAIb,GAAW,EAAGa,IACjC,CAAC,YAAa,IAAIb,EAAU,EAAIc,IAChC,CAAC,aAAc,IAAId,GAAW,EAAGc,IACjC,CAAC,YAAa,IAAId,EAAU,EAAIe,IAChC,CAAC,aAAc,IAAIf,GAAW,EAAGe,IACjC,CAAC,YAAa,IAAIf,EAAU,EAAIgB,IAChC,CAAC,aAAc,IAAIhB,GAAW,EAAGgB,IACjC,CAAC,YAAa,IAAIhB,EAAU,EAAIiB,IAChC,CAAC,aAAc,IAAIjB,GAAW,EAAGiB,IACjC,CAAC,YAAa,IAAIjB,EAAU,EAAIkB,IAChC,CAAC,aAAc,IAAIlB,GAAW,EAAGkB,IACjC,CAAC,WAAY,IAAIlB,EAAU,EAAImB,IAC/B,CAAC,YAAa,IAAInB,GAAW,EAAGmB,IAChC,CAAC,aAAc,IAAInB,EAAU,EAAIoB,IACjC,CAAC,cAAe,IAAIpB,GAAW,EAAGoB,MCvEpC,MAAME,EAEJ5hB,yBAAyBqO,EAAGiQ,GAC1B,IAAIuD,EAAS,IACb,IAAK,IAAIxQ,EAAI,EAAGA,EAAIiN,EAAKjN,GAAK,EAAG,CAC3BA,EAAI,IACNwQ,GAAU,KAEZ,MAAMvT,EAAKD,EAAEgD,GACP9C,EAAKF,EAAEgD,EAAI,GAEfwQ,GADEvT,IAAOC,EACE,KAAID,EAAG0B,SAAS,MAEhB,KAAI1B,EAAG0B,SAAS,SAASzB,EAAGyB,SAAS,KAEpD,CAEA,OADA6R,GAAU,IACHA,CACT,CAKA7hB,WAAW8hB,EAAOzQ,EAAG0Q,EAAWC,GAC9B,MAAMC,EAAMH,EAAMzQ,GAAK0Q,EACvB,OAAe,IAARE,EAAYA,EAAMD,EAAUF,EAAMzQ,EAAI,EAC/C,CAIArR,oBAAoB8hB,EAAOI,EAAMC,GAC/B,MAAMC,GAA0C,IAA1BF,EAAOC,GAAS,EAAK,GACrCJ,EAAYD,EAAMM,GAClBJ,EAAUF,EAAMM,EAAa,GACnC,IAAI/Q,EAAI6Q,EACJzK,EAAI0K,EACR,KAAO9Q,GAAKoG,GAAG,CACb,KAAOpG,EAAI8Q,GAASP,EAAUK,IAAIH,EAAOzQ,EAAG0Q,EAAWC,GAAW,GAChE3Q,GAAK,EAGP,KAAOoG,EAAIyK,GAAQN,EAAUK,IAAIH,EAAOrK,EAAGsK,EAAWC,GAAW,GAC/DvK,GAAK,EAGP,GAAIpG,GAAKoG,EAAG,CACV,GAAIpG,IAAMoG,EAAG,CACX,IAAI4K,EAAOP,EAAMzQ,GACjByQ,EAAMzQ,GAAKyQ,EAAMrK,GACjBqK,EAAMrK,GAAK4K,EACXA,EAAOP,EAAMzQ,EAAI,GACjByQ,EAAMzQ,EAAI,GAAKyQ,EAAMrK,EAAI,GACzBqK,EAAMrK,EAAI,GAAK4K,CACjB,CACAhR,GAAK,EACLoG,GAAK,CACP,CACF,CAEIyK,EAAOzK,GACTmK,EAAUU,aAAaR,EAAOI,EAAMzK,GAElCpG,EAAI8Q,GACNP,EAAUU,aAAaR,EAAOzQ,EAAG8Q,EAErC,CAEA/O,cAAmC,IAAvB/E,EAAC8D,UAAAtR,eAAAuR,IAAAD,UAAA,GAAAA,UAAG1C,GAAAA,EAAM8S,YACpBrhB,KAAKmN,EAAIA,EACTnN,KAAKod,IAAMjQ,EAAExN,MACf,CAKA2hB,UACE,OAAIthB,KAAKod,MAAQpd,KAAKmN,EAAExN,OACfK,KAAKmN,EAELnN,KAAKmN,EAAE0I,MAAM,EAAG7V,KAAKod,IAEhC,CAIAmE,aACE,GAAIvhB,KAAKod,IAAM,EACb,OAAOpd,KAGT0gB,EAAUU,aAAaphB,KAAKmN,EAAG,EAAGnN,KAAKod,IAAM,GAE7C,IAAIoE,EAAI,EACR,IAAK,IAAIrR,EAAI,EAAGA,EAAInQ,KAAKod,IAAKjN,GAAK,EACjC,CACE,MAAM/C,EAAKpN,KAAKmN,EAAEgD,GACZ9C,EAAKrN,KAAKmN,EAAEgD,EAAI,GACtB,GAAI/C,GAAMpN,KAAKmN,EAAEqU,EAAI,GAAK,EAAG,CAEvBnU,EAAKrN,KAAKmN,EAAEqU,EAAI,KAClBxhB,KAAKmN,EAAEqU,EAAI,GAAKnU,GAElB,QACF,CAEArN,KAAKmN,EAAEqU,GAAKpU,EACZpN,KAAKmN,EAAEqU,EAAI,GAAKnU,EAChBmU,GAAK,CACP,CAGF,OADAxhB,KAAKod,IAAMoE,EACJxhB,IACT,CAGAyhB,cAAclK,EAAGoB,GACf,OAAwC,IAAhCA,EAAQ9Z,EAASob,WACrBja,KAAK0hB,kBAAkBnK,EAAGA,GAC1BvX,KAAK2hB,YAAYpK,EAAGA,EAC1B,CAGAoK,YAAYvU,EAAIC,GAKd,GAAIrN,KAAKod,IAAM,EACb,IAAK,IAAIjN,EAAI,EAAGA,GAAK,EAAGA,GAAK,EAE3B,GAAInQ,KAAKod,KAAOjN,EAAG,CACjB,MAAMyR,EAAM5hB,KAAKmN,EAAEnN,KAAKod,IAAMjN,GACxB0R,EAAM7hB,KAAKmN,EAAEnN,KAAKod,IAAMjN,EAAI,GAClC,GAAI/C,GAAMyU,EAAM,GAAKD,GAAOvU,EAAK,EAO/B,OANID,EAAKwU,IACP5hB,KAAKmN,EAAEnN,KAAKod,IAAMjN,GAAK/C,GAErBC,EAAKwU,IACP7hB,KAAKmN,EAAEnN,KAAKod,IAAMjN,EAAI,GAAK9C,GAEtBrN,IAEX,CAMJ,OAFAA,KAAKmN,EAAEnN,KAAKod,OAAShQ,EACrBpN,KAAKmN,EAAEnN,KAAKod,OAAS/P,EACdrN,IACT,CAIA0hB,kBAAkBtU,EAAIC,GAEpB,GAAID,GAAMH,EAAQ6U,UAAYzU,GAAMJ,EAAQ8U,SAE1C,OAAO/hB,KAAK2hB,YAAYvU,EAAIC,GAE9B,GAAIA,EAAKJ,EAAQ6U,UAAY1U,EAAKH,EAAQ8U,SAExC,OAAO/hB,KAAK2hB,YAAYvU,EAAIC,GAE1BD,EAAKH,EAAQ6U,WAEf9hB,KAAK2hB,YAAYvU,EAAIH,EAAQ6U,SAAW,GACxC1U,EAAKH,EAAQ6U,UAEXzU,EAAKJ,EAAQ8U,WAEf/hB,KAAK2hB,YAAY1U,EAAQ8U,SAAW,EAAG1U,GACvCA,EAAKJ,EAAQ8U,UAIf,IAAK,IAAIvT,EAAIpB,EAAIoB,GAAKnB,EAAImB,IAAK,CAC7BxO,KAAK2hB,YAAYnT,EAAGA,GAEpB,IAAK,IAAIgP,EAAIvQ,EAAQqB,WAAWE,GAAIgP,IAAMhP,EAAGgP,EAAIvQ,EAAQqB,WAAWkP,GAClExd,KAAK2hB,YAAYnE,EAAGA,EAExB,CACA,OAAOxd,IACT,CAIAgiB,YAAYzK,GACV,IAAK,IAAIpH,EAAI,EAAGA,EAAIoH,EAAE5X,OAAQwQ,GAAK,EACjCnQ,KAAK2hB,YAAYpK,EAAEpH,GAAIoH,EAAEpH,EAAI,IAE/B,OAAOnQ,IACT,CAIAiiB,kBAAkB1K,GAChB,IAAK,IAAIpH,EAAI,EAAGA,EAAIoH,EAAE5X,OAAQwQ,GAAK,EACjCnQ,KAAK0hB,kBAAkBnK,EAAEpH,GAAIoH,EAAEpH,EAAI,IAErC,OAAOnQ,IACT,CAIAkiB,mBAAmB3K,GACjB,IAAI4K,EAAS,EACb,IAAK,IAAIhS,EAAI,EAAGA,EAAIoH,EAAE5X,OAAQwQ,GAAK,EAAG,CACpC,MAAM/C,EAAKmK,EAAEpH,GACP9C,EAAKkK,EAAEpH,EAAI,GACbgS,GAAU/U,EAAK,GACjBpN,KAAK2hB,YAAYQ,EAAQ/U,EAAK,GAEhC+U,EAAS9U,EAAK,CAChB,CAIA,OAHI8U,GAAUlV,EAAQ4N,UACpB7a,KAAK2hB,YAAYQ,EAAQlV,EAAQ4N,UAE5B7a,IACT,CAIAoiB,YAAYC,GACV,IAAK,IAAIC,KAAUD,EAAO,CACxB,MAAMjV,EAAKkV,EAAO,GACZjV,EAAKiV,EAAO,GACZC,EAASD,EAAO,GACtB,GAAe,IAAXC,EAIJ,IAAK,IAAI/T,EAAIpB,EAAIoB,GAAKnB,EAAImB,GAAK+T,EAC7BviB,KAAK2hB,YAAYnT,EAAGA,QAJpBxO,KAAK2hB,YAAYvU,EAAIC,EAMzB,CACA,OAAOrN,IACT,CAIAwiB,mBAAmBH,GACjB,IAAIF,EAAS,EACb,IAAK,IAAIG,KAAUD,EAAO,CACxB,MAAMjV,EAAKkV,EAAO,GACZjV,EAAKiV,EAAO,GACZC,EAASD,EAAO,GACtB,GAAe,IAAXC,EAOJ,IAAK,IAAI/T,EAAIpB,EAAIoB,GAAKnB,EAAImB,GAAK+T,EACzBJ,GAAU3T,EAAI,GAChBxO,KAAK2hB,YAAYQ,EAAQ3T,EAAI,GAE/B2T,EAAS3T,EAAI,OAVT2T,GAAU/U,EAAK,GACjBpN,KAAK2hB,YAAYQ,EAAQ/U,EAAK,GAEhC+U,EAAS9U,EAAK,CASlB,CAIA,OAHI8U,GAAUlV,EAAQ4N,UACpB7a,KAAK2hB,YAAYQ,EAAQlV,EAAQ4N,UAE5B7a,IACT,CAIAyiB,oBAAoBJ,EAAOhD,GACzB,OAAOA,EAAO,EAAIrf,KAAKwiB,mBAAmBH,GAASriB,KAAKoiB,YAAYC,EACtE,CAGAK,cACE,IAAIP,EAAS,EACTX,EAAI,EACR,IAAK,IAAIrR,EAAI,EAAGA,EAAInQ,KAAKod,IAAKjN,GAAK,EAAG,CACpC,MAAM/C,EAAKpN,KAAKmN,EAAEgD,GACZ9C,EAAKrN,KAAKmN,EAAEgD,EAAI,GAClBgS,GAAU/U,EAAK,IACjBpN,KAAKmN,EAAEqU,GAAKW,EACZniB,KAAKmN,EAAEqU,EAAI,GAAKpU,EAAK,EACrBoU,GAAK,GAEPW,EAAS9U,EAAK,CAChB,CAMA,OALArN,KAAKod,IAAMoE,EACPW,GAAUlV,EAAQ4N,WACpB7a,KAAKmN,EAAEnN,KAAKod,OAAS+E,EACrBniB,KAAKmN,EAAEnN,KAAKod,OAASnQ,EAAQ4N,UAExB7a,IACT,CAIA2iB,oBAAoBpL,EAAG8H,GACrB,OAAOA,EAAO,EAAIrf,KAAKkiB,mBAAmB3K,GAAKvX,KAAKgiB,YAAYzK,EAClE,CAIAqL,YAAYC,EAAGC,GACb,IAAIxD,EAAMuD,EAAEvD,IAIZ,OAHIwD,IACFxD,GAAM,IAAIoB,GAAYuB,kBAAkB3C,GAAKiC,aAAaD,WAErDthB,KAAK2iB,oBAAoBrD,EAAKuD,EAAExD,KACzC,CAEAvQ,WACE,OAAO4R,EAAUqC,kBAAkB/iB,KAAKmN,EAAGnN,KAAKod,IAClD,ECxTF,MAAM4F,EACJlkB,UAAUmkB,EAAOC,GACf,OAAO,IAAIF,EAAKC,EAAOC,EACzB,CAEAhR,YAAY+Q,EAAOC,GACjBljB,KAAKijB,MAAQA,EACbjjB,KAAKkjB,OAASA,CAChB,EAeF,MAAMC,EACJjR,YAAYnD,GACV/O,KAAK+O,IAAMA,EACX/O,KAAKojB,SAAW,CAClB,CAGA3S,MACE,OAAOzQ,KAAKojB,QACd,CAGAC,SAAS5S,GACPzQ,KAAKojB,SAAW3S,CAClB,CAGA6S,OACE,OAAOtjB,KAAKojB,SAAWpjB,KAAK+O,IAAIpP,MAClC,CAIA4jB,OACE,OAAOvjB,KAAK+O,IAAIlP,YAAYG,KAAKojB,SACnC,CAOAI,KAAKlN,GACHtW,KAAKojB,UAAY9M,CACnB,CAGAmN,WAAWlkB,GACTS,KAAKojB,UAAY7jB,EAAEI,MACrB,CAIA+jB,MACE,MAAMvW,EAAInN,KAAK+O,IAAIlP,YAAYG,KAAKojB,UAEpC,OADApjB,KAAKojB,UAAY7U,EAAM4J,UAAUhL,GAC1BA,CACT,CAEAoI,UAAUhW,GACR,OAAOS,KAAK2jB,OAAOC,WAAWrkB,EAChC,CAGAokB,OACE,OAAO3jB,KAAK+O,IAAIiG,UAAUhV,KAAKojB,SACjC,CAIApT,KAAK6T,GACH,OAAO7jB,KAAK+O,IAAIiG,UAAU6O,EAAW7jB,KAAKojB,SAC5C,CAEAtU,WACE,OAAO9O,KAAK2jB,MACd,EAOF,MAAMG,EAEJhlB,0BAA4B,gCAG5BA,8BAAgC,gCAChCA,0BAA4B,0BAC5BA,iCAAmC,wBACnCA,2BAA6B,qCAC7BA,6BAA+B,qCAC/BA,+BAAiC,uBACjCA,2BAA6B,oBAC7BA,yBAA2B,oBAC3BA,mCAAqC,0CACrCA,8BAAgC,0CAChCA,mCAAqC,+BAIrCA,mBACE,MAAO,CAAC,CAAC,EAAGmO,EAAQ4N,SAAU,GAChC,CAKA/b,oBAAoBiU,GAClB,MAAa,QAATA,EACKiQ,EAAKe,GAAGD,EAAOE,YAAaF,EAAOE,aAExCjkB,EAAckkB,WAAWlW,IAAIgF,GACxBiQ,EAAKe,GAAGhkB,EAAckkB,WAAWjW,IAAI+E,GAAOhT,EAAcmkB,gBAAgBlW,IAAI+E,IAEnFhT,EAAcokB,QAAQpW,IAAIgF,GACrBiQ,EAAKe,GAAGhkB,EAAcokB,QAAQnW,IAAI+E,GAAOhT,EAAcqkB,YAAYpW,IAAI+E,IAEzE,IACT,CAGAjU,mBAAmBqO,GACjB,GAAIA,EAAIF,EAAQ6U,UAAY3U,EAAIF,EAAQ8U,SACtC,OAAO5U,EAGT,IAAI4L,EAAM5L,EACV,MAAMoO,EAAKpO,EACX,IAAKA,EAAIF,EAAQqB,WAAWnB,GAAIA,IAAMoO,EAAIpO,EAAIF,EAAQqB,WAAWnB,GAC3D4L,EAAM5L,IACR4L,EAAM5L,GAGV,OAAO4L,CACT,CAIAja,qBAAqB2Z,GACnB,GAAIA,EAAGvJ,KAAOoJ,EAAOC,GAAGc,YACtB,OAAO,KAET,GAAIZ,EAAGvJ,KAAOoJ,EAAOC,GAAGuB,QAAUrB,EAAGG,KAAKjZ,OAAS,EAAG,CACpD,MAAM+Z,EAAMjB,EAAGG,KAAK,GACpB,OAAIc,EAAIxK,KAAOoJ,EAAOC,GAAGc,YAChB,KAEFK,CACT,CACA,OAAOjB,CACT,CAEA3Z,qBAAqBS,EAAGoZ,GACtB,MAAMF,EAAK,IAAIH,EAAOA,EAAOC,GAAGqB,SAGhC,OAFAnB,EAAGE,MAAQA,EACXF,EAAGI,MAAQtK,EAAM8V,cAAc9kB,GACxBkZ,CACT,CAIA3Z,aAAa0U,EAASmF,GACpB,OAAO,IAAImL,EAAOtQ,EAASmF,GAAO2L,eACpC,CAYAxlB,mBAAmBylB,GACjB,MAAM9P,EAAQ8P,EAAE9T,MAChB,IAAK8T,EAAEjB,SAAWiB,EAAEhP,UAAU,KAC5B,OAAQ,EAEVgP,EAAEf,KAAK,GAEP,MAAMzK,EAAM+K,EAAOU,SAASD,GAC5B,IAAa,IAATxL,EACF,OAAQ,EAEV,IAAKwL,EAAEjB,OACL,OAAQ,EAGV,IAAItK,EACJ,GAAKuL,EAAEhP,UAAU,KAEV,CAEL,GADAgP,EAAEf,KAAK,IACFe,EAAEjB,OACL,OAAQ,EAEV,GAAIiB,EAAEhP,UAAU,KACdyD,GAAO,OACF,IAAoC,KAA/BA,EAAM8K,EAAOU,SAASD,IAChC,OAAQ,CAEZ,MAXEvL,EAAMD,EAaR,IAAKwL,EAAEjB,SAAWiB,EAAEhP,UAAU,KAC5B,OAAQ,EAGV,GADAgP,EAAEf,KAAK,GACHzK,EAAM,GAAKA,EAAM,MAAiB,IAATC,GAAcA,EAAM,KAASA,GAAO,GAAKD,EAAMC,EAC1E,MAAM,IAAIhG,EAAqB8Q,EAAOW,wBAAyBF,EAAEvU,KAAKyE,IAGxE,OAAQsE,GAAO,GAAOC,EAAM/L,EAAQ2C,OACtC,CAOA9Q,0BAA0BiU,GACxB,GAAoB,IAAhBA,EAAKpT,OACP,OAAO,EAGT,IAAK,IAAIwQ,EAAI,EAAGA,EAAI4C,EAAKpT,OAAQwQ,IAAK,CACpC,MAAM3B,EAAIuE,EAAKlT,YAAYsQ,GAC3B,GAAI3B,IAAMpP,EAAUiP,MAAML,IAAI,OAASO,EAAMmW,QAAQlW,GACnD,OAAO,CAEX,CAEA,OAAO,CACT,CAIA1P,gBAAgBylB,GACd,MAAM9P,EAAQ8P,EAAE9T,MAChB,KACE8T,EAAEjB,QACFiB,EAAEhB,QAAUnkB,EAAUiP,MAAML,IAAI,MAChCuW,EAAEhB,QAAUnkB,EAAUiP,MAAML,IAAI,MAEhCuW,EAAEf,KAAK,GAGT,MAAMlN,EAAIiO,EAAEvU,KAAKyE,GACjB,OAAiB,IAAb6B,EAAE3W,QAAiB2W,EAAE3W,OAAS,GAAK2W,EAAEzW,YAAY,KAAOT,EAAUiP,MAAML,IAAI,MACtE,EAENsI,EAAE3W,OAAS,GACL,EAEHglB,WAAWrO,EAAG,GACvB,CAIAxX,mBAAmB2Z,GACjB,OACGA,EAAGvJ,KAAOoJ,EAAOC,GAAGqB,SAA+B,IAApBnB,EAAGI,MAAMlZ,QACzC8Y,EAAGvJ,KAAOoJ,EAAOC,GAAGqC,YACpBnC,EAAGvJ,KAAOoJ,EAAOC,GAAG4B,iBACpB1B,EAAGvJ,KAAOoJ,EAAOC,GAAG6B,QAExB,CAGAtb,iBAAiB2Z,EAAItL,GACnB,OAAQsL,EAAGvJ,IACT,KAAKoJ,EAAOC,GAAGqB,QACb,OAA2B,IAApBnB,EAAGI,MAAMlZ,QAAgB8Y,EAAGI,MAAM,KAAO1L,EAClD,KAAKmL,EAAOC,GAAGqC,WACb,IAAK,IAAIzK,EAAI,EAAGA,EAAIsI,EAAGI,MAAMlZ,OAAQwQ,GAAK,EACxC,GAAIsI,EAAGI,MAAM1I,IAAMhD,GAAKA,GAAKsL,EAAGI,MAAM1I,EAAI,GACxC,OAAO,EAGX,OAAO,EACT,KAAKmI,EAAOC,GAAG4B,gBACb,OAAOhN,IAAM/N,EAAUiP,MAAML,IAAI,MACnC,KAAKsK,EAAOC,GAAG6B,SACb,OAAO,EAEX,OAAO,CACT,CAKAtb,sBAAsB8lB,EAAKC,GACzB,OAAQD,EAAI1V,IACV,KAAKoJ,EAAOC,GAAG6B,SACb,MACF,KAAK9B,EAAOC,GAAG4B,gBACT2J,EAAOxI,UAAUuJ,EAAKzlB,EAAUiP,MAAML,IAAI,SAC5C4W,EAAI1V,GAAKoJ,EAAOC,GAAG6B,UAErB,MACF,KAAK9B,EAAOC,GAAGqC,WACTiK,EAAI3V,KAAOoJ,EAAOC,GAAGqB,QACvBgL,EAAI/L,MAAQ,IAAI6H,EAAUkE,EAAI/L,OAAO4I,cAAcoD,EAAIhM,MAAM,GAAIgM,EAAIlM,OAAO2I,UAE5EsD,EAAI/L,MAAQ,IAAI6H,EAAUkE,EAAI/L,OAAOmJ,YAAY6C,EAAIhM,OAAOyI,UAE9D,MACF,KAAKhJ,EAAOC,GAAGqB,QACb,GAAIiL,EAAIhM,MAAM,KAAO+L,EAAI/L,MAAM,IAAMgM,EAAIlM,QAAUiM,EAAIjM,MACrD,MAEFiM,EAAI1V,GAAKoJ,EAAOC,GAAGqC,WACnBgK,EAAI/L,OAAQ,IAAI6H,GACbe,cAAcmD,EAAI/L,MAAM,GAAI+L,EAAIjM,OAChC8I,cAAcoD,EAAIhM,MAAM,GAAIgM,EAAIlM,OAChC2I,UAGT,CAKAxiB,mBAAmBylB,GACjB,MAAMO,EAAWP,EAAE9T,MAEnB,GADA8T,EAAEf,KAAK,IACFe,EAAEjB,OACL,MAAM,IAAItQ,EAAqB8Q,EAAOiB,wBAExC,IAAIvW,EAAI+V,EAAEb,MACVsB,EAAW,OAAQxW,GACjB,KAAKpP,EAAUiP,MAAML,IAAI,KACzB,KAAK5O,EAAUiP,MAAML,IAAI,KACzB,KAAK5O,EAAUiP,MAAML,IAAI,KACzB,KAAK5O,EAAUiP,MAAML,IAAI,KACzB,KAAK5O,EAAUiP,MAAML,IAAI,KACzB,KAAK5O,EAAUiP,MAAML,IAAI,KACzB,KAAK5O,EAAUiP,MAAML,IAAI,KACvB,IACGuW,EAAEjB,QACHiB,EAAEhB,OAASnkB,EAAUiP,MAAML,IAAI,MAC/BuW,EAAEhB,OAASnkB,EAAUiP,MAAML,IAAI,KAE/B,MAIJ,KAAK5O,EAAUiP,MAAML,IAAI,KAAM,CAC7B,IAAIb,EAAIqB,EAAIpP,EAAUiP,MAAML,IAAI,KAChC,IAAK,IAAImC,EAAI,EAAGA,EAAI,MAEfoU,EAAEjB,QACHiB,EAAEhB,OAASnkB,EAAUiP,MAAML,IAAI,MAC/BuW,EAAEhB,OAASnkB,EAAUiP,MAAML,IAAI,MAJZmC,IAQrBhD,EAAQ,EAAJA,EAAQoX,EAAEhB,OAASnkB,EAAUiP,MAAML,IAAI,KAC3CuW,EAAEf,KAAK,GAET,OAAOrW,CACT,CACA,KAAK/N,EAAUiP,MAAML,IAAI,KAAM,CAC7B,IAAKuW,EAAEjB,OACL,MAGF,GADA9U,EAAI+V,EAAEb,MACFlV,IAAMpP,EAAUiP,MAAML,IAAI,KAAM,CAClC,IAAIiX,EAAO,EACP9X,EAAI,EAER,OAAa,CACX,IAAKoX,EAAEjB,OACL,MAAM0B,EAGR,GADAxW,EAAI+V,EAAEb,MACFlV,IAAMpP,EAAUiP,MAAML,IAAI,KAC5B,MAEF,MAAMkX,EAAI3W,EAAM4W,MAAM3W,GACtB,GAAI0W,EAAI,EACN,MAAMF,EAGR,GADA7X,EAAQ,GAAJA,EAAS+X,EACT/X,EAAIF,EAAQ4N,SACd,MAAMmK,EAERC,GACF,CACA,GAAa,IAATA,EACF,MAAMD,EAER,OAAO7X,CACT,CACA,MAAMoK,EAAIhJ,EAAM4W,MAAM3W,GACtB,IAAK+V,EAAEjB,OACL,MAEF9U,EAAI+V,EAAEb,MACN,MAAM0B,EAAI7W,EAAM4W,MAAM3W,GACtB,GAAI+I,EAAI,GAAK6N,EAAI,EACf,MAEF,OAAW,GAAJ7N,EAAS6N,CAClB,CACA,KAAKhmB,EAAUiP,MAAML,IAAI,KACvB,OAAO5O,EAAUiP,MAAML,IAAI,KAC7B,KAAK5O,EAAUiP,MAAML,IAAI,KACvB,OAAO5O,EAAUiP,MAAML,IAAI,MAC7B,KAAK5O,EAAUiP,MAAML,IAAI,KACvB,OAAO5O,EAAUiP,MAAML,IAAI,MAC7B,KAAK5O,EAAUiP,MAAML,IAAI,KACvB,OAAO5O,EAAUiP,MAAML,IAAI,MAC7B,KAAK5O,EAAUiP,MAAML,IAAI,KACvB,OAAO5O,EAAUiP,MAAML,IAAI,MAC7B,KAAK5O,EAAUiP,MAAML,IAAI,KACvB,OAAO5O,EAAUiP,MAAML,IAAI,MAC7B,QACE,IAAKO,EAAMmW,QAAQlW,GACjB,OAAOA,EAIb,MAAM,IAAIwE,EAAqB8Q,EAAOuB,mBAAoBd,EAAEvU,KAAK8U,GACnE,CAKAhmB,sBAAsBylB,EAAGe,GACvB,IAAKf,EAAEjB,OACL,MAAM,IAAItQ,EAAqB8Q,EAAOyB,oBAAqBhB,EAAEvU,KAAKsV,IAEpE,OAAIf,EAAEhP,UAAU,MACPuO,EAAO0B,YAAYjB,GAErBA,EAAEb,KACX,CAEA5kB,mBAAmByY,EAAG6N,GACpB,MAAO,IAAI7N,KAAM6N,EACnB,CAEAlT,YAAYuT,GAAwB,IAAX9M,EAAK1H,UAAAtR,OAAA,QAAAuR,IAAAD,UAAA,GAAAA,UAAA,GAAG,EAC/BjR,KAAKylB,YAAcA,EAGnBzlB,KAAK2Y,MAAQA,EAEb3Y,KAAKoc,OAAS,EACdpc,KAAK8T,YAAc,GAEnB9T,KAAK0lB,MAAQ,GACb1lB,KAAK2lB,KAAO,IACd,CAGAC,UAAU1W,GACR,IAAIuJ,EAAKzY,KAAK2lB,KAQd,OAPW,OAAPlN,GAA2B,OAAZA,EAAGG,MAAiBH,EAAGG,KAAKjZ,OAAS,GACtDK,KAAK2lB,KAAOlN,EAAGG,KAAK,GACpBH,EAAGS,SACHT,EAAGvJ,GAAKA,GAERuJ,EAAK,IAAIH,EAAOpJ,GAEXuJ,CACT,CAEAoN,MAAMpN,GACY,OAAZA,EAAGG,MAAiBH,EAAGG,KAAKjZ,OAAS,IACvC8Y,EAAGG,KAAK,GAAK5Y,KAAK2lB,MAEpB3lB,KAAK2lB,KAAOlN,CACd,CAIAiL,MACE,OAAO1jB,KAAK0lB,MAAMhC,KACpB,CAEAoC,cACE,MAAMxP,EAAItW,KAAK0lB,MAAM/lB,OACrB,IAAIwQ,EAAImG,EACR,KAAOnG,EAAI,IAAMmI,EAAOyN,WAAW/lB,KAAK0lB,MAAMvV,EAAI,GAAGjB,KACnDiB,IAGF,MAAMhD,EAAInN,KAAK0lB,MAAM7P,MAAM1F,EAAGmG,GAE9B,OADAtW,KAAK0lB,MAAQ1lB,KAAK0lB,MAAM7P,MAAM,EAAG1F,GAC1BhD,CACT,CAIAsP,KAAKhE,GACH,GAAIA,EAAGvJ,KAAOoJ,EAAOC,GAAGqC,YAAkC,IAApBnC,EAAGI,MAAMlZ,QAAgB8Y,EAAGI,MAAM,KAAOJ,EAAGI,MAAM,GAAI,CAC1F,GAAI7Y,KAAKgmB,YAAYvN,EAAGI,MAAM,GAAI7Y,KAAK2Y,OAAS9Z,EAASob,WACvD,OAAO,KAETxB,EAAGvJ,GAAKoJ,EAAOC,GAAGqB,QAClBnB,EAAGI,MAAQ,CAACJ,EAAGI,MAAM,IACrBJ,EAAGE,MAAQ3Y,KAAK2Y,OAAS9Z,EAASob,SACpC,MAAO,GACJxB,EAAGvJ,KAAOoJ,EAAOC,GAAGqC,YACC,IAApBnC,EAAGI,MAAMlZ,QACT8Y,EAAGI,MAAM,KAAOJ,EAAGI,MAAM,IACzBJ,EAAGI,MAAM,KAAOJ,EAAGI,MAAM,IACzB5L,EAAQqB,WAAWmK,EAAGI,MAAM,MAAQJ,EAAGI,MAAM,IAC7C5L,EAAQqB,WAAWmK,EAAGI,MAAM,MAAQJ,EAAGI,MAAM,IAC9CJ,EAAGvJ,KAAOoJ,EAAOC,GAAGqC,YACC,IAApBnC,EAAGI,MAAMlZ,QACT8Y,EAAGI,MAAM,GAAK,IAAMJ,EAAGI,MAAM,IAC7B5L,EAAQqB,WAAWmK,EAAGI,MAAM,MAAQJ,EAAGI,MAAM,IAC7C5L,EAAQqB,WAAWmK,EAAGI,MAAM,MAAQJ,EAAGI,MAAM,GAC/C,CAEA,GAAI7Y,KAAKgmB,YAAYvN,EAAGI,MAAM,GAAI7Y,KAAK2Y,MAAQ9Z,EAASob,WACtD,OAAO,KAGTxB,EAAGvJ,GAAKoJ,EAAOC,GAAGqB,QAClBnB,EAAGI,MAAQ,CAACJ,EAAGI,MAAM,IACrBJ,EAAGE,MAAQ3Y,KAAK2Y,MAAQ9Z,EAASob,SACnC,MAEEja,KAAKgmB,aAAa,EAAG,GAGvB,OADAhmB,KAAK0lB,MAAMjJ,KAAKhE,GACTA,CACT,CAWAuN,YAAY7Y,EAAGwL,GACb,MAAMrC,EAAItW,KAAK0lB,MAAM/lB,OACrB,GAAI2W,EAAI,EACN,OAAO,EAET,MAAM2P,EAAMjmB,KAAK0lB,MAAMpP,EAAI,GACrB5C,EAAM1T,KAAK0lB,MAAMpP,EAAI,GAC3B,OACE2P,EAAI/W,KAAOoJ,EAAOC,GAAGqB,SACrBlG,EAAIxE,KAAOoJ,EAAOC,GAAGqB,UACpBqM,EAAItN,MAAQ9Z,EAASob,aAAgBvG,EAAIiF,MAAQ9Z,EAASob,aAK7DvG,EAAImF,MAAQiL,EAAOoC,YAAYxS,EAAImF,MAAOoN,EAAIpN,OAE1C1L,GAAK,GACP8Y,EAAIpN,MAAQ,CAAC1L,GACb8Y,EAAItN,MAAQA,GACL,IAET3Y,KAAK0jB,MACL1jB,KAAK6lB,MAAMI,IACJ,GACT,CAGAE,WAAWhZ,EAAGwL,GACZ,MAAMF,EAAKzY,KAAK4lB,UAAUtN,EAAOC,GAAGqB,SAMpC,OALAnB,EAAGE,MAAQA,EAC0B,IAAhCA,EAAQ9Z,EAASob,aACpB9M,EAAI2W,EAAOsC,YAAYjZ,IAEzBsL,EAAGI,MAAQ,CAAC1L,GACLsL,CACT,CAIA4N,QAAQlZ,GACNnN,KAAKyc,KAAKzc,KAAKmmB,WAAWhZ,EAAGnN,KAAK2Y,OACpC,CAIAzJ,GAAGA,GACD,MAAMuJ,EAAKzY,KAAK4lB,UAAU1W,GAE1B,OADAuJ,EAAGE,MAAQ3Y,KAAK2Y,MACT3Y,KAAKyc,KAAKhE,EACnB,CAOA6N,OAAOpX,EAAI6J,EAAKC,EAAK6K,EAAWU,EAAGgC,GACjC,IAAI5N,EAAQ3Y,KAAK2Y,MACjB,GAAkC,IAA7BA,EAAQ9Z,EAASK,UAChBqlB,EAAEjB,QAAUiB,EAAEhP,UAAU,OAC1BgP,EAAEf,KAAK,GACP7K,GAAS9Z,EAASgb,aAEG,IAAnB0M,GAIF,MAAM,IAAIvT,EAAqB8Q,EAAO0C,sBAAuBjC,EAAEvU,KAAKuW,IAIxE,MAAMjQ,EAAItW,KAAK0lB,MAAM/lB,OACrB,GAAU,IAAN2W,EACF,MAAM,IAAItD,EAAqB8Q,EAAO2C,4BAA6BlC,EAAEvU,KAAK6T,IAG5E,MAAMnK,EAAM1Z,KAAK0lB,MAAMpP,EAAI,GAC3B,GAAIgC,EAAOyN,WAAWrM,EAAIxK,IACxB,MAAM,IAAI8D,EAAqB8Q,EAAO2C,4BAA6BlC,EAAEvU,KAAK6T,IAG5E,MAAMpL,EAAKzY,KAAK4lB,UAAU1W,GAC1BuJ,EAAGM,IAAMA,EACTN,EAAGO,IAAMA,EACTP,EAAGE,MAAQA,EACXF,EAAGG,KAAO,CAACc,GACX1Z,KAAK0lB,MAAMpP,EAAI,GAAKmC,CACtB,CAIAiO,SACE1mB,KAAKgmB,aAAa,EAAG,GACrB,MAAMpN,EAAO5Y,KAAK8lB,cAClB,OAAoB,IAAhBlN,EAAKjZ,OACAK,KAAKyc,KAAKzc,KAAK4lB,UAAUtN,EAAOC,GAAGc,cAErCrZ,KAAKyc,KAAKzc,KAAK2mB,SAAS/N,EAAMN,EAAOC,GAAGuB,QACjD,CAIA8M,YAGE,MAAMhO,EAAO5Y,KAAK8lB,cAQlB,OALIlN,EAAKjZ,OAAS,GAChBK,KAAK6mB,SAASjO,EAAKA,EAAKjZ,OAAS,IAIf,IAAhBiZ,EAAKjZ,OACAK,KAAKyc,KAAKzc,KAAK4lB,UAAUtN,EAAOC,GAAGa,WAErCpZ,KAAKyc,KAAKzc,KAAK2mB,SAAS/N,EAAMN,EAAOC,GAAGwB,WACjD,CAGA8M,SAASpO,GACHA,EAAGvJ,KAAOoJ,EAAOC,GAAGqC,aACtBnC,EAAGI,MAAQ,IAAI6H,EAAUjI,EAAGI,OAAO0I,aAAaD,UACxB,IAApB7I,EAAGI,MAAMlZ,QAAgC,IAAhB8Y,EAAGI,MAAM,IAAYJ,EAAGI,MAAM,KAAO5L,EAAQ4N,UACxEpC,EAAGI,MAAQ,KACXJ,EAAGvJ,GAAKoJ,EAAOC,GAAG6B,UAEE,IAApB3B,EAAGI,MAAMlZ,QACO,IAAhB8Y,EAAGI,MAAM,IACTJ,EAAGI,MAAM,KAAOzZ,EAAUiP,MAAML,IAAI,MAAQ,GAC5CyK,EAAGI,MAAM,KAAOzZ,EAAUiP,MAAML,IAAI,MAAQ,GAC5CyK,EAAGI,MAAM,KAAO5L,EAAQ4N,WAExBpC,EAAGI,MAAQ,KACXJ,EAAGvJ,GAAKoJ,EAAOC,GAAG4B,iBAGxB,CAMAwM,SAAS/N,EAAM1J,GACb,GAAoB,IAAhB0J,EAAKjZ,OACP,OAAOiZ,EAAK,GAId,IAAIwE,EAAM,EACV,IAAK,IAAI1D,KAAOd,EACdwE,GAAO1D,EAAIxK,KAAOA,EAAKwK,EAAId,KAAKjZ,OAAS,EAE3C,IAAImnB,EAAU,IAAI/W,MAAMqN,GAAK2J,KAAK,MAC9B5W,EAAI,EACR,IAAK,IAAIuJ,KAAOd,EACVc,EAAIxK,KAAOA,GACb4X,EAAQE,OAAO7W,EAAGuJ,EAAId,KAAKjZ,UAAW+Z,EAAId,MAC1CzI,GAAKuJ,EAAId,KAAKjZ,OACdK,KAAK6lB,MAAMnM,IAEXoN,EAAQ3W,KAAOuJ,EAInB,IAAIjB,EAAKzY,KAAK4lB,UAAU1W,GAExB,GADAuJ,EAAGG,KAAOkO,EACN5X,IAAOoJ,EAAOC,GAAGwB,YAEnBtB,EAAGG,KAAO5Y,KAAKinB,OAAOxO,EAAGG,MACF,IAAnBH,EAAGG,KAAKjZ,QAAc,CACxB,MAAMunB,EAAMzO,EACZA,EAAKA,EAAGG,KAAK,GACb5Y,KAAK6lB,MAAMqB,EACb,CAEF,OAAOzO,CACT,CAaAwO,OAAOrG,GACL,GAAIA,EAAMjhB,OAAS,EACjB,OAAOihB,EAgBT,IAAIrhB,EAAI,EACJ4nB,EAASvG,EAAMjhB,OACfynB,EAAS,EAITrY,EAAM,KACNsY,EAAS,EACTC,EAAW,EACX7S,EAAQ,EACZ,IAAK,IAAItE,EAAI,EAAGA,GAAKgX,EAAQhX,IAAK,CAOhC,IAAIoX,EAAO,KACPC,EAAU,EACVC,EAAS,EACb,GAAItX,EAAIgX,EAAQ,CAEd,IAAI1O,EAAKmI,EAAMrhB,EAAI4Q,GAWnB,GAVIsI,EAAGvJ,KAAOoJ,EAAOC,GAAGuB,QAAUrB,EAAGG,KAAKjZ,OAAS,IACjD8Y,EAAKA,EAAGG,KAAK,IAEXH,EAAGvJ,KAAOoJ,EAAOC,GAAGqB,UACtB2N,EAAO9O,EAAGI,MACV2O,EAAU/O,EAAGI,MAAMlZ,OACnB8nB,EAAShP,EAAGE,MAAQ9Z,EAASob,WAI3BwN,IAAWH,EAAU,CACvB,IAAII,EAAO,EACX,KAAOA,EAAOL,GAAUK,EAAOF,GAAWzY,EAAI2Y,KAAUH,EAAKG,IAC3DA,IAGF,GAAIA,EAAO,EAAG,CAGZL,EAASK,EACT,QACF,CACF,CACF,CAMA,GAAIvX,IAAMsE,QAEH,GAAItE,IAAMsE,EAAQ,EAEvBmM,EAAMwG,KAAYxG,EAAMrhB,EAAIkV,OACvB,CAEL,MAAM2D,EAASpY,KAAK4lB,UAAUtN,EAAOC,GAAGqB,SACxCxB,EAAOO,MAAQ2O,EACflP,EAAOS,MAAQ9J,EAAI8G,MAAM,EAAGwR,GAC5B,IAAK,IAAI9Q,EAAI9B,EAAO8B,EAAIpG,EAAGoG,IACzBqK,EAAMrhB,EAAIgX,GAAKvW,KAAK2nB,oBAAoB/G,EAAMrhB,EAAIgX,GAAI8Q,GAGxD,MAAMnI,EAASlf,KAAK2mB,SAAS/F,EAAM/K,MAAMtW,EAAIkV,EAAOlV,EAAI4Q,GAAImI,EAAOC,GAAGwB,WAChEtB,EAAKzY,KAAK4lB,UAAUtN,EAAOC,GAAGuB,QACpCrB,EAAGG,KAAO,CAACR,EAAQ8G,GACnB0B,EAAMwG,KAAY3O,CACpB,CAEAhE,EAAQtE,EACRpB,EAAMwY,EACNF,EAASG,EACTF,EAAWG,CACb,CAEAN,EAASC,EACT7nB,EAAI,EAIJkV,EAAQ,EACR2S,EAAS,EACT,IAAInE,EAAQ,KACZ,IAAK,IAAI9S,EAAI,EAAGA,GAAKgX,EAAQhX,IAAK,CAOhC,IAAIyX,EAAS,KACb,KAAIzX,EAAIgX,IACNS,EAAS9D,EAAO+D,cAAcjH,EAAMrhB,EAAI4Q,IAE5B,OAAV8S,GACAA,EAAMjI,OAAO4M,KACZ9D,EAAOgE,YAAY7E,IACjBA,EAAM/T,KAAOoJ,EAAOC,GAAGkB,QACtBwJ,EAAMlK,MAAQkK,EAAMjK,KACpB8K,EAAOgE,YAAY7E,EAAMrK,KAAK,OARtC,CAiBA,GAAIzI,IAAMsE,QAEH,GAAItE,IAAMsE,EAAQ,EAEvBmM,EAAMwG,KAAYxG,EAAMrhB,EAAIkV,OACvB,CAEL,MAAM2D,EAAS6K,EACf,IAAK,IAAI1M,EAAI9B,EAAO8B,EAAIpG,EAAGoG,IAAK,CAC9B,MAAMsP,EAAQtP,IAAM9B,EACpBmM,EAAMrhB,EAAIgX,GAAKvW,KAAK+nB,oBAAoBnH,EAAMrhB,EAAIgX,GAAIsP,EACxD,CAEA,MAAM3G,EAASlf,KAAK2mB,SAAS/F,EAAM/K,MAAMtW,EAAIkV,EAAOlV,EAAI4Q,GAAImI,EAAOC,GAAGwB,WAChEtB,EAAKzY,KAAK4lB,UAAUtN,EAAOC,GAAGuB,QACpCrB,EAAGG,KAAO,CAACR,EAAQ8G,GACnB0B,EAAMwG,KAAY3O,CACpB,CAEAhE,EAAQtE,EACR8S,EAAQ2E,CAzBR,CA0BF,CAEAT,EAASC,EACT7nB,EAAI,EAEJkV,EAAQ,EACR2S,EAAS,EACT,IAAK,IAAIjX,EAAI,EAAGA,GAAKgX,EAAQhX,IAO3B,KAAIA,EAAIgX,GAAUrD,EAAOgE,YAAYlH,EAAMrhB,EAAI4Q,KAA/C,CAKA,GAAIA,IAAMsE,QAEH,GAAItE,IAAMsE,EAAQ,EAEvBmM,EAAMwG,KAAYxG,EAAMrhB,EAAIkV,OACvB,CAGL,IAAIuE,EAAMvE,EACV,IAAK,IAAI8B,EAAI9B,EAAQ,EAAG8B,EAAIpG,EAAGoG,IAAK,CAClC,MAAMyR,EAASpH,EAAMrhB,EAAIyZ,GACnBiP,EAAOrH,EAAMrhB,EAAIgX,IAErByR,EAAO9Y,GAAK+Y,EAAK/Y,IAChB8Y,EAAO9Y,KAAO+Y,EAAK/Y,KACA,OAAjB8Y,EAAOnP,MAAiBmP,EAAOnP,MAAMlZ,OAAS,IAC7B,OAAfsoB,EAAKpP,MAAiBoP,EAAKpP,MAAMlZ,OAAS,MAE/CqZ,EAAMzC,EAEV,CAEA,MAAM2R,EAAMtH,EAAMrhB,EAAIkV,GACtBmM,EAAMrhB,EAAIkV,GAASmM,EAAMrhB,EAAIyZ,GAC7B4H,EAAMrhB,EAAIyZ,GAAOkP,EACjB,IAAK,IAAI3R,EAAI9B,EAAQ,EAAG8B,EAAIpG,EAAGoG,IAC7BuN,EAAOqE,eAAevH,EAAMrhB,EAAIkV,GAAQmM,EAAMrhB,EAAIgX,IAClDvW,KAAK6lB,MAAMjF,EAAMrhB,EAAIgX,IAEvBvW,KAAK6mB,SAASjG,EAAMrhB,EAAIkV,IACxBmM,EAAMwG,KAAYxG,EAAMrhB,EAAIkV,EAC9B,CAEItE,EAAIgX,IACNvG,EAAMwG,KAAYxG,EAAMrhB,EAAI4Q,IAE9BsE,EAAQtE,EAAI,CAvCZ,CA0CFgX,EAASC,EACT7nB,EAAI,EAEJkV,EAAQ,EACR2S,EAAS,EACT,IAAK,IAAIjX,EAAI,EAAGA,EAAIgX,IAAUhX,EAE1BA,EAAI,EAAIgX,GACRvG,EAAMrhB,EAAI4Q,GAAGjB,KAAOoJ,EAAOC,GAAGc,aAC9BuH,EAAMrhB,EAAI4Q,EAAI,GAAGjB,KAAOoJ,EAAOC,GAAGc,cAIpCuH,EAAMwG,KAAYxG,EAAMrhB,EAAI4Q,IAK9B,OAFAgX,EAASC,EACT7nB,EAAI,EACGqhB,EAAM/K,MAAMtW,EAAG4nB,EACxB,CAIAQ,oBAAoBlP,EAAInC,GACtB,GAAImC,EAAGvJ,KAAOoJ,EAAOC,GAAGuB,QAAUrB,EAAGG,KAAKjZ,OAAS,EAAG,CAGpD,MAAM+Z,EAAM1Z,KAAK2nB,oBAAoBlP,EAAGG,KAAK,GAAItC,GAEjD,GADAmC,EAAGG,KAAK,GAAKc,EACTA,EAAIxK,KAAOoJ,EAAOC,GAAGc,YAEvB,OADArZ,KAAK6lB,MAAMnM,GACHjB,EAAGG,KAAKjZ,QACd,KAAK,EACL,KAAK,EAEH8Y,EAAGvJ,GAAKoJ,EAAOC,GAAGc,YAClBZ,EAAGG,KAAO,KACV,MACF,KAAK,EAAG,CACN,MAAMsO,EAAMzO,EACZA,EAAKA,EAAGG,KAAK,GACb5Y,KAAK6lB,MAAMqB,GACX,KACF,CACA,QACEzO,EAAGG,KAAOH,EAAGG,KAAK/C,MAAM,EAAG4C,EAAGG,KAAKjZ,QAIzC,OAAO8Y,CACT,CAOA,OANIA,EAAGvJ,KAAOoJ,EAAOC,GAAGqB,UACtBnB,EAAGI,MAAQJ,EAAGI,MAAMhD,MAAMS,EAAGmC,EAAGI,MAAMlZ,QACd,IAApB8Y,EAAGI,MAAMlZ,SACX8Y,EAAGvJ,GAAKoJ,EAAOC,GAAGc,cAGfZ,CACT,CAMAsP,oBAAoBtP,EAAIoN,GACtB,GAAIpN,EAAGvJ,KAAOoJ,EAAOC,GAAGuB,QAAUrB,EAAGG,KAAKjZ,OAAS,EAAG,CAKpD,OAJIkmB,GACF7lB,KAAK6lB,MAAMpN,EAAGG,KAAK,IAErBH,EAAGG,KAAOH,EAAGG,KAAK/C,MAAM,EAAG4C,EAAGG,KAAKjZ,QAC3B8Y,EAAGG,KAAKjZ,QACd,KAAK,EACH8Y,EAAGvJ,GAAKoJ,EAAOC,GAAGc,YAClBZ,EAAGG,KAAON,EAAOW,YACjB,MAEF,KAAK,EAAG,CACN,MAAMiO,EAAMzO,EACZA,EAAKA,EAAGG,KAAK,GACb5Y,KAAK6lB,MAAMqB,GACX,KACF,EAEF,OAAOzO,CACT,CAIA,OAHIoN,GACF7lB,KAAK6lB,MAAMpN,GAENzY,KAAK4lB,UAAUtN,EAAOC,GAAGc,YAClC,CAEAiL,gBACE,GAAwC,IAAnCtkB,KAAK2Y,MAAQ9Z,EAAS+a,SAEzB,OAAOkK,EAAOsE,cAAcpoB,KAAKylB,YAAazlB,KAAK2Y,OAGrD,IAAI4N,GAAiB,EACjBxN,GAAO,EACPC,GAAO,EACX,MAAMuL,EAAI,IAAIpB,EAAenjB,KAAKylB,aAClC,KAAOlB,EAAEjB,QACP,CACE,IAAI+E,GAAa,EACjBrD,EAAW,OAAQT,EAAEhB,QACnB,KAAKnkB,EAAUiP,MAAML,IAAI,KACvB,GAAuC,IAAlChO,KAAK2Y,MAAQ9Z,EAASK,SAAiBqlB,EAAEhP,UAAU,MAAO,CAE7DvV,KAAKsoB,eAAe/D,GACpB,KACF,CACAvkB,KAAKkP,GAAGoJ,EAAOC,GAAGC,YAAYM,MAAQ9Y,KAAKoc,OAC3CmI,EAAEf,KAAK,GACP,MACF,KAAKpkB,EAAUiP,MAAML,IAAI,KACvBhO,KAAKuoB,mBACLhE,EAAEf,KAAK,GACP,MACF,KAAKpkB,EAAUiP,MAAML,IAAI,KACvBhO,KAAKwoB,kBACLjE,EAAEf,KAAK,GACP,MACF,KAAKpkB,EAAUiP,MAAML,IAAI,KACkB,IAApChO,KAAK2Y,MAAQ9Z,EAASI,UACzBe,KAAKkP,GAAGoJ,EAAOC,GAAG8B,YAElBra,KAAKkP,GAAGoJ,EAAOC,GAAGiC,YAEpB+J,EAAEf,KAAK,GACP,MACF,KAAKpkB,EAAUiP,MAAML,IAAI,KACkB,IAApChO,KAAK2Y,MAAQ9Z,EAASI,UACzBe,KAAKkP,GAAGoJ,EAAOC,GAAG+B,UAAU3B,OAAS9Z,EAAS0b,WAE9Cva,KAAKkP,GAAGoJ,EAAOC,GAAGkC,UAEpB8J,EAAEf,KAAK,GACP,MACF,KAAKpkB,EAAUiP,MAAML,IAAI,KACgB,IAAlChO,KAAK2Y,MAAQ9Z,EAASG,QACzBgB,KAAKkP,GAAGoJ,EAAOC,GAAG6B,UAElBpa,KAAKkP,GAAGoJ,EAAOC,GAAG4B,iBAEpBoK,EAAEf,KAAK,GACP,MACF,KAAKpkB,EAAUiP,MAAML,IAAI,KACvBhO,KAAKyoB,WAAWlE,GAChB,MACF,KAAKnlB,EAAUiP,MAAML,IAAI,KACzB,KAAK5O,EAAUiP,MAAML,IAAI,KACzB,KAAK5O,EAAUiP,MAAML,IAAI,KAAM,CAC7Bqa,EAAY9D,EAAE9T,MACd,IAAIvB,EAAK,KACT,OAAQqV,EAAEb,OACR,KAAKtkB,EAAUiP,MAAML,IAAI,KACvBkB,EAAKoJ,EAAOC,GAAGe,KACf,MACF,KAAKla,EAAUiP,MAAML,IAAI,KACvBkB,EAAKoJ,EAAOC,GAAGgB,KACf,MACF,KAAKna,EAAUiP,MAAML,IAAI,KACvBkB,EAAKoJ,EAAOC,GAAGiB,MAGnBxZ,KAAKsmB,OAAOpX,EAAI6J,EAAKC,EAAKqP,EAAW9D,EAAGgC,GAExC,KACF,CAEA,KAAKnnB,EAAUiP,MAAML,IAAI,KAAM,CAC7Bqa,EAAY9D,EAAE9T,MACd,MAAMiY,EAAS5E,EAAO6E,YAAYpE,GAClC,GAAImE,EAAS,EAAG,CAEdnE,EAAElB,SAASgF,GACXroB,KAAKqmB,QAAQ9B,EAAEb,OACf,KACF,CACA3K,EAAM2P,GAAU,GAChB1P,GAAQ0P,EAASzb,EAAQ2C,UAAY,IAAO,GAC5C5P,KAAKsmB,OAAOhO,EAAOC,GAAGkB,OAAQV,EAAKC,EAAKqP,EAAW9D,EAAGgC,GACtD,KACF,CAEA,KAAKnnB,EAAUiP,MAAML,IAAI,MAAO,CAC9B,MAAM4a,EAAWrE,EAAE9T,MAEnB,GADA8T,EAAEf,KAAK,GACgC,IAAlCxjB,KAAK2Y,MAAQ9Z,EAASK,SAAiBqlB,EAAEjB,OAAQ,CAEpD,OADUiB,EAAEb,OAEV,KAAKtkB,EAAUiP,MAAML,IAAI,KACvBhO,KAAKkP,GAAGoJ,EAAOC,GAAG8B,YAClB,MAAM2K,EACR,KAAK5lB,EAAUiP,MAAML,IAAI,KACvBhO,KAAKkP,GAAGoJ,EAAOC,GAAGmC,eAClB,MAAMsK,EACR,KAAK5lB,EAAUiP,MAAML,IAAI,KACvBhO,KAAKkP,GAAGoJ,EAAOC,GAAGoC,kBAClB,MAAMqK,EACR,KAAK5lB,EAAUiP,MAAML,IAAI,KAEvB,MAAM,IAAIgF,EAAqB8Q,EAAOuB,mBAAoB,OAC5D,KAAKjmB,EAAUiP,MAAML,IAAI,KAAM,CAE7B,IAAI6a,EAAMtE,EAAEZ,OACZ,MAAMxT,EAAI0Y,EAAIha,QAAQ,OAClBsB,GAAK,IACP0Y,EAAMA,EAAI7T,UAAU,EAAG7E,IAEzBoU,EAAEd,WAAWoF,GACbtE,EAAEd,WAAW,OAEb,IAAIlN,EAAI,EACR,KAAOA,EAAIsS,EAAIlpB,QAAQ,CACrB,MAAML,EAAYupB,EAAIhpB,YAAY0W,GAClCvW,KAAKqmB,QAAQ/mB,GACbiX,GAAKhI,EAAM4J,UAAU7Y,EACvB,CACA,MAAM0lB,CACR,CAEA,KAAK5lB,EAAUiP,MAAML,IAAI,KACvBhO,KAAKkP,GAAGoJ,EAAOC,GAAG+B,UAClB,MAAM0K,EACR,QACET,EAAElB,SAASuF,GAGjB,CAEA,MAAMnQ,EAAKzY,KAAK4lB,UAAUtN,EAAOC,GAAGqC,YAGpC,GAFAnC,EAAGE,MAAQ3Y,KAAK2Y,MAEZ4L,EAAEhP,UAAU,QAAUgP,EAAEhP,UAAU,OAAQ,CAC5C,MAAMuT,EAAK,IAAIpI,EACf,GAAI1gB,KAAK+oB,kBAAkBxE,EAAGuE,GAAK,CACjCrQ,EAAGI,MAAQiQ,EAAGxH,UACdthB,KAAKyc,KAAKhE,GACV,MAAMuM,CACR,CACF,CAEA,MAAM8D,EAAK,IAAIpI,EACf,GAAI1gB,KAAKgpB,qBAAqBzE,EAAGuE,GAAK,CACpCrQ,EAAGI,MAAQiQ,EAAGxH,UACdthB,KAAKyc,KAAKhE,GACV,MAAMuM,CACR,CACAT,EAAElB,SAASuF,GACX5oB,KAAK6lB,MAAMpN,GAEXzY,KAAKqmB,QAAQvC,EAAO0B,YAAYjB,IAChC,KACF,CACA,QACEvkB,KAAKqmB,QAAQ9B,EAAEb,OAGnB6C,EAAgB8B,CAClB,CAGFroB,KAAK0mB,SACD1mB,KAAKipB,mBACPjpB,KAAK0jB,MAEP1jB,KAAK4mB,YAEL,GAAU,IADA5mB,KAAK0lB,MAAM/lB,OAEnB,MAAM,IAAIqT,EAAqB8Q,EAAOoF,kBAAmBlpB,KAAKylB,aAGhE,OADAzlB,KAAK0lB,MAAM,GAAG5R,YAAc9T,KAAK8T,YAC1B9T,KAAK0lB,MAAM,EACpB,CAMA4C,eAAe/D,GACb,MAAMO,EAAWP,EAAE9T,MAgBblR,EAAIglB,EAAEZ,OACZ,GAAIpkB,EAAEqkB,WAAW,QAAS,CAExB,MAAM7O,EAAMxV,EAAEsP,QAAQ,KACtB,GAAIkG,EAAM,EACR,MAAM,IAAI/B,EAAqB8Q,EAAOqF,0BAA2B5pB,GAEnE,MAAMwT,EAAOxT,EAAEyV,UAAU,EAAGD,GAG5B,GAFAwP,EAAEd,WAAW1Q,GACbwR,EAAEf,KAAK,IACFM,EAAOsF,mBAAmBrW,GAE7B,MAAM,IAAIC,EAAqB8Q,EAAOqF,0BAA2B5pB,EAAEyV,UAAU,EAAGD,IAGlF,MAAM0D,EAAKzY,KAAKkP,GAAGoJ,EAAOC,GAAGC,YAE7B,GADAC,EAAGK,MAAQ9Y,KAAKoc,OACZpc,KAAK8T,YAAYf,GACnB,MAAM,IAAIC,EAAqB8Q,EAAOuF,4BAA6BtW,GAIrE,OAFA/S,KAAK8T,YAAYf,GAAQ/S,KAAKoc,YAC9B3D,EAAG1F,KAAOA,EAEZ,CAEAwR,EAAEf,KAAK,GAEP,IAAI7K,EAAQ3Y,KAAK2Y,MACb0G,EAAO,EACPiK,GAAU,EACdxM,EAAM,KAAOyH,EAAEjB,QACb,CACE,MAAM9U,EAAI+V,EAAEb,MACZ,OAAQlV,GACN,KAAKpP,EAAUiP,MAAML,IAAI,KACvB2K,GAAS9Z,EAASob,UAClBqP,GAAU,EACV,MACF,KAAKlqB,EAAUiP,MAAML,IAAI,KACvB2K,IAAU9Z,EAASI,SACnBqqB,GAAU,EACV,MACF,KAAKlqB,EAAUiP,MAAML,IAAI,KACvB2K,GAAS9Z,EAASG,OAClBsqB,GAAU,EACV,MACF,KAAKlqB,EAAUiP,MAAML,IAAI,KACvB2K,GAAS9Z,EAASgb,WAClByP,GAAU,EACV,MAEF,KAAKlqB,EAAUiP,MAAML,IAAI,KACvB,GAAIqR,EAAO,EACT,MAAMvC,EAERuC,GAAQ,EAGR1G,GAASA,EACT2Q,GAAU,EACV,MAEF,KAAKlqB,EAAUiP,MAAML,IAAI,KACzB,KAAK5O,EAAUiP,MAAML,IAAI,KACvB,GAAIqR,EAAO,EAAG,CACZ,IAAKiK,EACH,MAAMxM,EAERnE,GAASA,CACX,CAMA,OALInK,IAAMpP,EAAUiP,MAAML,IAAI,MAE5BhO,KAAKkP,GAAGoJ,EAAOC,GAAGC,iBAEpBxY,KAAK2Y,MAAQA,GAEf,QAEE,MAAMmE,EAEZ,CAGF,MAAM,IAAI9J,EAAqB8Q,EAAOyF,oBAAqBhF,EAAEvU,KAAK8U,GACpE,CAGAyD,mBACEvoB,KAAK0mB,SAKA1mB,KAAKipB,mBACRjpB,KAAKkP,GAAGoJ,EAAOC,GAAGiR,aAEtB,CAKAP,kBACE,MAAM3S,EAAItW,KAAK0lB,MAAM/lB,OAGrB,GACE2W,GAAK,GACLtW,KAAK0lB,MAAMpP,EAAI,GAAGpH,KAAOoJ,EAAOC,GAAGiR,cACnC1F,EAAOgE,YAAY9nB,KAAK0lB,MAAMpP,EAAI,KAClCwN,EAAOgE,YAAY9nB,KAAK0lB,MAAMpP,EAAI,IAClC,CACA,IAAI2P,EAAMjmB,KAAK0lB,MAAMpP,EAAI,GACrBmT,EAAMzpB,KAAK0lB,MAAMpP,EAAI,GAEzB,GAAI2P,EAAI/W,GAAKua,EAAIva,GAAI,CACnB,MAAMgZ,EAAMuB,EACZA,EAAMxD,EACNA,EAAMiC,EACNloB,KAAK0lB,MAAMpP,EAAI,GAAKmT,CACtB,CAIA,OAHA3F,EAAOqE,eAAesB,EAAKxD,GAC3BjmB,KAAK6lB,MAAMI,GACXjmB,KAAK0jB,OACE,CACT,CACA,GAAIpN,GAAK,EAAG,CACV,MAAM2P,EAAMjmB,KAAK0lB,MAAMpP,EAAI,GACrB5C,EAAM1T,KAAK0lB,MAAMpP,EAAI,GAC3B,GAAI5C,EAAIxE,KAAOoJ,EAAOC,GAAGiR,aAQvB,OAPIlT,GAAK,GAGPtW,KAAK6mB,SAAS7mB,KAAK0lB,MAAMpP,EAAI,IAE/BtW,KAAK0lB,MAAMpP,EAAI,GAAK2P,EACpBjmB,KAAK0lB,MAAMpP,EAAI,GAAK5C,GACb,CAEX,CACA,OAAO,CACT,CAGA8U,kBACExoB,KAAK0mB,SACD1mB,KAAKipB,mBACPjpB,KAAK0jB,MAEP1jB,KAAK4mB,YAEL,GADU5mB,KAAK0lB,MAAM/lB,OACb,EACN,MAAM,IAAIqT,EAAqB8Q,EAAO4F,mBAAoB,mBAG5D,MAAMzD,EAAMjmB,KAAK0jB,MACXhQ,EAAM1T,KAAK0jB,MACjB,GAAIhQ,EAAIxE,KAAOoJ,EAAOC,GAAGC,WACvB,MAAM,IAAIxF,EAAqB8Q,EAAOoF,kBAAmBlpB,KAAKylB,aAGhEzlB,KAAK2Y,MAAQjF,EAAIiF,MACD,IAAZjF,EAAIoF,IAEN9Y,KAAKyc,KAAKwJ,IAEVvS,EAAIxE,GAAKoJ,EAAOC,GAAGoB,QACnBjG,EAAIkF,KAAO,CAACqN,GACZjmB,KAAKyc,KAAK/I,GAEd,CAMAsV,qBAAqBzE,EAAGuE,GACtB,MAAMjF,EAAYU,EAAE9T,MACpB,GACqC,IAAlCzQ,KAAK2Y,MAAQ9Z,EAASK,UACtBqlB,EAAEjB,QACHiB,EAAEb,QAAUtkB,EAAUiP,MAAML,IAAI,QAC/BuW,EAAEjB,OAEH,OAAO,EAETiB,EAAEb,MACF,MAAMxT,EAAIqU,EAAEvU,KAAK6T,GACXhB,EAAInD,EAAY3R,IAAImC,GAAKwP,EAAY1R,IAAIkC,GAAK,KACpD,OAAU,OAAN2S,IAGJiG,EAAGlG,YAAYC,EAAyC,IAArC7iB,KAAK2Y,MAAQ9Z,EAASob,aAClC,EACT,CAQA0P,gBAAgBpF,EAAGuE,GAEjB,MAAMxJ,EAAMiF,EAAEZ,OACRxT,EAAImP,EAAIzQ,QAAQ,MACtB,GAAIsB,EAAI,EACN,OAAO,EAGT,MAAM4C,EAAOuM,EAAItK,UAAU,EAAG7E,EAAI,GAClCoU,EAAEd,WAAW1Q,GACb,MAAM8P,EAAIpC,EAAa1S,IAAIgF,GAAQ0N,EAAazS,IAAI+E,GAAQ,KAC5D,GAAU,OAAN8P,EACF,MAAM,IAAI7P,EAAqB8Q,EAAO8F,uBAAwB7W,GAGhE,OADA+V,EAAGlG,YAAYC,EAAyC,IAArC7iB,KAAK2Y,MAAQ9Z,EAASob,aAClC,CACT,CASA8O,kBAAkBxE,EAAGuE,GACnB,MAAMhE,EAAWP,EAAE9T,MACnB,GAC6C,IAA1CzQ,KAAK2Y,MAAQ9Z,EAASM,kBACrBolB,EAAEhP,UAAU,SAAWgP,EAAEhP,UAAU,OAErC,OAAO,EAGTgP,EAAEf,KAAK,GAEP,IAWIzQ,EAXAsM,EAAO,EACP7Q,EAAI+V,EAAEb,MAIV,GAHIlV,IAAMpP,EAAUiP,MAAML,IAAI,OAC5BqR,GAAQ,IAELkF,EAAEjB,OAEL,MADAiB,EAAElB,SAASyB,GACL,IAAI9R,EAAqB8Q,EAAO8F,uBAAwBrF,EAAEZ,QAMlE,GAHAnV,EAAI+V,EAAEb,MAGFlV,IAAMpP,EAAUiP,MAAML,IAAI,KAE5B+E,EAAOxE,EAAMsb,aAAarb,OACrB,CAEL,MAAMmV,EAAOY,EAAEZ,OACT5O,EAAM4O,EAAK9U,QAAQ,KACzB,GAAIkG,EAAM,EAER,MADAwP,EAAElB,SAASyB,GACL,IAAI9R,EAAqB8Q,EAAO8F,uBAAwBrF,EAAEZ,QAElE5Q,EAAO4Q,EAAK3O,UAAU,EAAGD,GACzBwP,EAAEd,WAAW1Q,GACbwR,EAAEf,KAAK,EAGT,CAGsB,IAAhBzQ,EAAKpT,QAAiBoT,EAAKlT,YAAY,KAAOT,EAAUiP,MAAML,IAAI,OACtEqR,EAAO,EAAIA,EACXtM,EAAOA,EAAKiC,UAAU,IAGxB,MAAM8U,EAAOhG,EAAOiG,aAAahX,GACjC,GAAa,OAAT+W,EACF,MAAM,IAAI9W,EAAqB8Q,EAAO8F,uBAAwBrF,EAAEvU,KAAK8U,IAGvE,MAAMkF,EAAMF,EAAK7G,MACXgH,EAAOH,EAAK5G,OAElB,GAA0C,IAArCljB,KAAK2Y,MAAQ9Z,EAASob,YAA6B,OAATgQ,EAC7CnB,EAAGrG,oBAAoBuH,EAAK3K,OACvB,CAIL,MAAM6I,GAAM,IAAIxH,GAAY0B,YAAY4H,GAAK5H,YAAY6H,GAAM1I,aAAaD,UAC5EwH,EAAGnG,oBAAoBuF,EAAK7I,EAC9B,CACA,OAAO,CACT,CAOAoJ,WAAWlE,GACT,MAAMO,EAAWP,EAAE9T,MACnB8T,EAAEf,KAAK,GACP,MAAM/K,EAAKzY,KAAK4lB,UAAUtN,EAAOC,GAAGqC,YACpCnC,EAAGE,MAAQ3Y,KAAK2Y,MAChB,MAAMmQ,EAAK,IAAIpI,EACf,IAAIrB,EAAO,EAEPkF,EAAEjB,QAAUiB,EAAEhP,UAAU,OAC1B8J,GAAQ,EACRkF,EAAEf,KAAK,GAGkC,IAApCxjB,KAAK2Y,MAAQ9Z,EAASE,WACzB+pB,EAAGnH,YAAYviB,EAAUiP,MAAML,IAAI,MAAO5O,EAAUiP,MAAML,IAAI,QAIlE,IAAIiV,GAAQ,EACZ,MAAQsB,EAAEjB,QAAUiB,EAAEhB,SAAWnkB,EAAUiP,MAAML,IAAI,MAAQiV,GAAO,CAGlE,GAAIsB,EAAEjB,QAAUiB,EAAEhP,UAAU,MAA2C,IAAlCvV,KAAK2Y,MAAQ9Z,EAASK,UAAkB+jB,EAAO,CAClF,MAAM1jB,EAAIglB,EAAEZ,OACZ,GAAU,MAANpkB,IAAcA,EAAEqkB,WAAW,MAE7B,MADAW,EAAElB,SAASyB,GACL,IAAI9R,EAAqB8Q,EAAO8F,uBAAwBrF,EAAEZ,OAEpE,CAEAV,GAAQ,EACR,MAAMY,EAAYU,EAAE9T,MAEpB,GAAI8T,EAAEhP,UAAU,MAAO,CACrB,GAAIvV,KAAK2pB,gBAAgBpF,EAAGuE,GAC1B,SAEFvE,EAAElB,SAASQ,EACb,CAGA,GAAI7jB,KAAK+oB,kBAAkBxE,EAAGuE,GAC5B,SAIF,GAAI9oB,KAAKgpB,qBAAqBzE,EAAGuE,GAC/B,SAEFvE,EAAElB,SAASQ,GAGX,MAAMzW,EAAK0W,EAAOoG,eAAe3F,EAAGO,GACpC,IAAIzX,EAAKD,EACT,GAAImX,EAAEjB,QAAUiB,EAAEhP,UAAU,KAE1B,GADAgP,EAAEf,KAAK,GACHe,EAAEjB,QAAUiB,EAAEhP,UAAU,KAE1BgP,EAAEf,MAAM,QAGR,GADAnW,EAAKyW,EAAOoG,eAAe3F,EAAGO,GAC1BzX,EAAKD,EACP,MAAM,IAAI4F,EAAqB8Q,EAAO8F,uBAAwBrF,EAAEvU,KAAK6T,IAIjC,IAArC7jB,KAAK2Y,MAAQ9Z,EAASob,WACzB6O,EAAGnH,YAAYvU,EAAIC,GAEnByb,EAAGpH,kBAAkBtU,EAAIC,EAE7B,CACAkX,EAAEf,KAAK,GAEPsF,EAAGvH,aACClC,EAAO,GACTyJ,EAAGpG,cAELjK,EAAGI,MAAQiQ,EAAGxH,UACdthB,KAAKyc,KAAKhE,EACZ,ECpmDF,MAAM0R,EACJjY,cACElS,KAAKmc,KAAO,KACZnc,KAAK8Y,IAAM,EACb,EAKF,MAAMsR,EACJlY,cACElS,KAAKqqB,OAAS,GACdrqB,KAAKsqB,SAAW,GAChBtqB,KAAKuqB,aAAe,GACpBvqB,KAAKwqB,KAAO,CACd,CAEAC,SAASnO,GACP,MAAM/F,EAAIvW,KAAKqqB,OAAO/N,GACtB,OAAO/F,EAAIvW,KAAKwqB,MAAQxqB,KAAKsqB,SAAS/T,KAAO+F,CAC/C,CAEAoO,UACE,OAAqB,IAAd1qB,KAAKwqB,IACd,CAEAG,IAAIrO,GACF,MAAM/F,EAAIvW,KAAKwqB,OAIf,OAHAxqB,KAAKqqB,OAAO/N,GAAM/F,EAClBvW,KAAKuqB,aAAahU,GAAK,KACvBvW,KAAKsqB,SAAS/T,GAAK+F,EACZ/F,CACT,CAEAqU,QACE5qB,KAAKqqB,OAAS,GACdrqB,KAAKsqB,SAAW,GAChBtqB,KAAKuqB,aAAe,GACpBvqB,KAAKwqB,KAAO,CACd,CAEA1b,WACE,IAAIJ,EAAM,IACV,IAAK,IAAIyB,EAAI,EAAGA,EAAInQ,KAAKwqB,KAAMra,IACnB,IAANA,IACFzB,GAAO,MAETA,GAAO1O,KAAKsqB,SAASna,GAGvB,OADAzB,GAAO,IACAA,CACT,EAMF,MAAMmc,EACJ/rB,eAAe4U,GACb,MAAMpG,EAAI,IAAIud,EAUd,OATAvd,EAAEoQ,KAAOhK,EAAIgK,KACbpQ,EAAEoG,IAAMA,EACRpG,EAAEwd,GAAK,IAAIV,EAAM9c,EAAEoQ,KAAKnB,WACxBjP,EAAEyd,GAAK,IAAIX,EAAM9c,EAAEoQ,KAAKnB,WACxBjP,EAAE0d,KAAO,GACT1d,EAAE2d,SAAW,EACb3d,EAAE4d,SAAU,EACZ5d,EAAE6d,SAAWpb,MAAMzC,EAAEoQ,KAAKtB,OAAS,EAAI,EAAI9O,EAAEoQ,KAAKtB,QAAQ2K,KAAK,GAC/DzZ,EAAE8d,KAAO,EACF9d,CACT,CAEAxO,mBAAmBusB,GACjB,MAAM/d,EAAI,IAAIud,EAUd,OATAvd,EAAEoG,IAAM2X,EAAQ3X,IAChBpG,EAAEoQ,KAAO2N,EAAQ3N,KACjBpQ,EAAEwd,GAAKO,EAAQP,GACfxd,EAAEyd,GAAKM,EAAQN,GACfzd,EAAE0d,KAAOK,EAAQL,KACjB1d,EAAE2d,SAAWI,EAAQJ,SACrB3d,EAAE4d,QAAUG,EAAQH,QACpB5d,EAAE6d,SAAWE,EAAQF,SACrB7d,EAAE8d,KAAOC,EAAQD,KACV9d,CACT,CAGAge,KAAKF,GACHprB,KAAKorB,KAAOA,EACRA,EAAOprB,KAAKmrB,SAASxrB,OACvBK,KAAKurB,WAAWH,GAEhBprB,KAAKwrB,SAASJ,EAElB,CAEAI,SAASJ,GACP,IAAK,IAAIjb,EAAI,EAAGA,EAAInQ,KAAKirB,SAAU9a,IAAK,CAC5BnQ,KAAKgrB,KAAK7a,GAClB2I,IAAM/I,MAAMqb,GAAMrE,KAAK,EAC3B,CACF,CAEAwE,WAAWH,GACT,IAAK,IAAIjb,EAAI,EAAGA,EAAInQ,KAAKirB,SAAU9a,IAAK,CAC5BnQ,KAAKgrB,KAAK7a,GAClB2I,IAAM/I,MAAMqb,GAAMrE,KAAK,EAC3B,CACA/mB,KAAKmrB,SAAWpb,MAAMqb,GAAMrE,KAAK,EACnC,CAEA0E,aACE,OAAkB,IAAdzrB,KAAKorB,KACA7c,EAAM8S,YAERrhB,KAAKmrB,SAAStV,MAAM,EAAG7V,KAAKorB,KACrC,CAIAM,MAAMvP,GACJ,IAAIoI,EAQJ,OAPIvkB,KAAKirB,SAAW,GAClBjrB,KAAKirB,WACL1G,EAAIvkB,KAAKgrB,KAAKhrB,KAAKirB,WAEnB1G,EAAI,IAAI4F,EAEV5F,EAAEpI,KAAOA,EACFoI,CACT,CAGAoH,UAAUC,GAAiB,IAAV5b,EAAIiB,UAAAtR,OAAA,QAAAuR,IAAAD,UAAA,GAAAA,UAAA,GAAG,EACtB,MAAM4a,EAAiBD,EAAMpB,KAAOxa,EAC9B8b,EAAqB9rB,KAAKirB,SAAWY,EACvC7rB,KAAKgrB,KAAKrrB,OAASmsB,IACrB9rB,KAAKgrB,KAAOhrB,KAAKgrB,KAAKnV,MAAM,EAAGtI,KAAKyL,IAAuB,EAAnBhZ,KAAKgrB,KAAKrrB,OAAYmsB,KAEhE,IAAK,IAAI3b,EAAIH,EAAMG,EAAIyb,EAAMpB,KAAMra,IAAK,CACtC,MAAMoU,EAAIqH,EAAMrB,aAAapa,GACnB,OAANoU,IACFvkB,KAAKgrB,KAAKhrB,KAAKirB,UAAY1G,EAC3BvkB,KAAKirB,WAET,CACAW,EAAMhB,OACR,CAGAmB,WAAWxH,GACLvkB,KAAKgrB,KAAKrrB,QAAUK,KAAKirB,WAC3BjrB,KAAKgrB,KAAOhrB,KAAKgrB,KAAKnV,MAAM,EAAsB,EAAnB7V,KAAKgrB,KAAKrrB,SAE3CK,KAAKgrB,KAAKhrB,KAAKirB,UAAY1G,EAC3BvkB,KAAKirB,UACP,CAEAe,MAAMtZ,EAAOjC,EAAKmF,GAChB,MAAMgH,EAAY5c,KAAK0T,IAAIuY,KAC3B,GAAIrP,IAAcrO,EAAM2d,UACtB,OAAO,EAET,IAAKtW,IAAW/W,EAAS2W,cAAgBI,IAAW/W,EAASyW,cAAwB,IAAR7E,EAC3E,OAAO,EAETzQ,KAAKkrB,SAAU,EACflrB,KAAKmrB,SAAWpb,MAAM/P,KAAK0d,KAAKtB,QAAQ2K,MAAM,GAE9C,IAcIlK,EAdAsP,EAAOnsB,KAAK8qB,GACZsB,EAAQpsB,KAAK+qB,GACb5d,EAAIuF,EAAM2E,KAAK5G,GACfhC,EAAOtB,GAAK,EACZkf,EAAY,EAAJlf,EACRmf,GAAS,EACTC,EAAS,EAeb,IAbIpf,IAAM8J,EAAiBK,QACzBnK,EAAIuF,EAAM2E,KAAK5G,EAAM4b,GACrBC,EAAQnf,GAAK,EACbof,EAAa,EAAJpf,GAKT0P,EADU,IAARpM,EACKlC,EAAMqJ,gBAAgB,EAAGnJ,GAEzBiE,EAAMgF,QAAQjH,KAGV,CACX,GAAI0b,EAAKzB,UAAW,CAClB,GAA6C,IAAxC9N,EAAYrO,EAAMY,mBAAmC,IAARsB,EAChD,MAEF,GAAIzQ,KAAKkrB,QACP,MAEF,GAC+B,IAA3BlrB,KAAK0T,IAAI0E,OAAOzY,QAClB2sB,IAAUtsB,KAAK0T,IAAI8Y,YACnB9Z,EAAMwE,iBACN,CACA,MAAMuV,EAAU/Z,EAAM8E,MAAMxX,KAAK0T,IAAKjD,GACtC,GAAIgc,EAAU,EACZ,MAEFhc,GAAOgc,EACPtf,EAAIuF,EAAM2E,KAAK5G,GACfhC,EAAOtB,GAAK,EACZkf,EAAY,EAAJlf,EACRA,EAAIuF,EAAM2E,KAAK5G,EAAM4b,GACrBC,EAAQnf,GAAK,EACbof,EAAa,EAAJpf,CACX,CACF,CACKnN,KAAKkrB,SAAoB,IAARza,GAAamF,IAAW/W,EAAS6W,aACjD1V,KAAKorB,KAAO,IACdprB,KAAKmrB,SAAS,GAAK1a,GAErBzQ,KAAK2qB,IAAIwB,EAAMnsB,KAAK0d,KAAKjJ,MAAOhE,EAAKzQ,KAAKmrB,SAAUtO,EAAM,OAG5D,MAAM6P,EAAUjc,EAAM4b,EAItB,GAHAxP,EAAOnK,EAAMgF,QAAQgV,GACrB1sB,KAAKqX,KAAK8U,EAAMC,EAAO3b,EAAKic,EAASje,EAAMoO,EAAMjH,EAAQnF,IAAQiC,EAAMyE,UAEzD,IAAVkV,EACF,MAEF,GAAkB,IAAdrsB,KAAKorB,MAAcprB,KAAKkrB,QAC1B,MAGFza,GAAO4b,EACP5d,EAAO6d,EACPD,EAAQE,GACM,IAAV9d,IACFtB,EAAIuF,EAAM2E,KAAK5G,EAAM4b,GACrBC,EAAQnf,GAAK,EACbof,EAAa,EAAJpf,GAEX,MAAMwf,EAAOR,EACbA,EAAOC,EACPA,EAAQO,CACV,CAEA,OADA3sB,KAAK2rB,UAAUS,GACRpsB,KAAKkrB,OACd,CAEA7T,KAAK8U,EAAMC,EAAO3b,EAAKic,EAASle,EAAGoe,EAAUhX,EAAQiX,GACnD,MAAMC,EAAU9sB,KAAK0T,IAAIoZ,QACzB,IAAK,IAAIvW,EAAI,EAAGA,EAAI4V,EAAK3B,KAAMjU,IAAK,CAClC,IAAIgO,EAAI4H,EAAK5B,aAAahU,GAC1B,GAAU,OAANgO,EACF,SAEF,GAAIuI,GAAW9sB,KAAKkrB,SAAWlrB,KAAKorB,KAAO,GAAKprB,KAAKmrB,SAAS,GAAK5G,EAAEzL,IAAI,GAAI,CAC3E9Y,KAAK+rB,WAAWxH,GAChB,QACF,CAEA,MAAMpU,EAAIoU,EAAEpI,KACZ,IAAIwO,GAAM,EACV,OAAQxa,EAAEjB,IACR,KAAKgM,EAAKU,MACR,GAAIhG,IAAW/W,EAASyW,cAAgBuX,EACtC,MAEE7sB,KAAKorB,KAAO,KAAO0B,IAAY9sB,KAAKkrB,SAAWlrB,KAAKmrB,SAAS,GAAK1a,KACpE8T,EAAEzL,IAAI,GAAKrI,EACXzQ,KAAKmrB,SAAW5G,EAAEzL,IAAIjD,MAAM,EAAG7V,KAAKorB,OAEjC0B,GACH9sB,KAAK2rB,UAAUQ,EAAM5V,EAAI,GAE3BvW,KAAKkrB,SAAU,EACf,MACF,KAAKhQ,EAAKC,KACRwP,EAAMxa,EAAEmL,UAAU9M,GAClB,MACF,KAAK0M,EAAKc,MACR2O,EAAMnc,IAAM2B,EAAE0I,MAAM,GACpB,MACF,KAAKqC,EAAKe,SACR0O,GAAM,EACN,MACF,KAAKzP,EAAKE,gBACRuP,EAAMnc,IAAMpP,EAAUiP,MAAML,IAAI,MAChC,MACF,QACE,MAAM,IAAI2D,MAAM,YAEhBgZ,IACFpG,EAAIvkB,KAAK2qB,IAAIyB,EAAOjc,EAAEzB,IAAKge,EAASnI,EAAEzL,IAAK8T,EAAUrI,IAE7C,OAANA,IACFvkB,KAAK+rB,WAAWxH,GAChB4H,EAAK5B,aAAahU,GAAK,KAE3B,CACA4V,EAAKvB,OACP,CAEAD,IAAIoC,EAAGzQ,EAAI7L,EAAKqI,EAAKmT,EAAM1H,GACzB,GAAW,IAAPjI,EACF,OAAOiI,EAET,GAAIwI,EAAEtC,SAASnO,GACb,OAAOiI,EAGT,MAAMyI,EAAID,EAAEpC,IAAIrO,GACVH,EAAOnc,KAAK0d,KAAKvB,KAAKG,GAC5B,OAAQH,EAAKjN,IACX,KAAKgM,EAAKW,KACR,MACF,KAAKX,EAAKO,IACV,KAAKP,EAAKQ,UACR6I,EAAIvkB,KAAK2qB,IAAIoC,EAAG5Q,EAAKzN,IAAK+B,EAAKqI,EAAKmT,EAAM1H,GAC1CA,EAAIvkB,KAAK2qB,IAAIoC,EAAG5Q,EAAKd,IAAK5K,EAAKqI,EAAKmT,EAAM1H,GAC1C,MACF,KAAKrJ,EAAKS,YACmB,IAAtBQ,EAAKd,KAAO4Q,KACf1H,EAAIvkB,KAAK2qB,IAAIoC,EAAG5Q,EAAKzN,IAAK+B,EAAKqI,EAAKmT,EAAM1H,IAE5C,MACF,KAAKrJ,EAAKY,IACRyI,EAAIvkB,KAAK2qB,IAAIoC,EAAG5Q,EAAKzN,IAAK+B,EAAKqI,EAAKmT,EAAM1H,GAC1C,MACF,KAAKrJ,EAAKvB,QACR,GAAIwC,EAAKd,IAAMrb,KAAKorB,KAAM,CACxB,MAAM6B,EAAOnU,EAAIqD,EAAKd,KACtBvC,EAAIqD,EAAKd,KAAO5K,EAChBzQ,KAAK2qB,IAAIoC,EAAG5Q,EAAKzN,IAAK+B,EAAKqI,EAAKmT,EAAM,MACtCnT,EAAIqD,EAAKd,KAAO4R,CAClB,MACE1I,EAAIvkB,KAAK2qB,IAAIoC,EAAG5Q,EAAKzN,IAAK+B,EAAKqI,EAAKmT,EAAM1H,GAE5C,MACF,KAAKrJ,EAAKU,MACV,KAAKV,EAAKC,KACV,KAAKD,EAAKc,MACV,KAAKd,EAAKe,SACV,KAAKf,EAAKE,gBACE,OAANmJ,EACFA,EAAIvkB,KAAK0rB,MAAMvP,GAEfoI,EAAEpI,KAAOA,EAEPnc,KAAKorB,KAAO,GAAK7G,EAAEzL,MAAQA,IAC7ByL,EAAEzL,IAAMA,EAAIjD,MAAM,EAAG7V,KAAKorB,OAE5B2B,EAAExC,aAAayC,GAAKzI,EACpBA,EAAI,KACJ,MACF,QACE,MAAM,IAAI5S,MAAM,aAEpB,OAAO4S,CACT,ECtWF,MAAM2I,GACJhb,YAAYib,GACVntB,KAAKotB,MAAQD,CACf,CAGAnf,MACE,OAAOhO,KAAKotB,KACd,CAGAC,IAAIC,GACFttB,KAAKotB,MAAQE,CACf,CAGAC,cAAcC,EAAQC,GACpB,OAAIztB,KAAKotB,QAAUI,IACjBxtB,KAAKotB,MAAQK,GACN,EAGX,EAeF,MAAMC,GAEJ5uB,gBAAgB6uB,GACd,MAAMja,EAAMga,GAAIjQ,QAAQkQ,GAClBzY,EAAM,IAAIwY,GAAIha,EAAIia,KAAMja,EAAIgK,KAAMhK,EAAIka,UAAWla,EAAIoZ,SAM3D,OALA5X,EAAI+W,KAAOvY,EAAIuY,KACf/W,EAAIkD,OAAS1E,EAAI0E,OACjBlD,EAAIuC,WAAa/D,EAAI+D,WACrBvC,EAAI2Y,eAAiBna,EAAIma,eACzB3Y,EAAIsX,WAAa9Y,EAAI8Y,WACdtX,CACT,CAaApW,eAAe6uB,GACb,OAAOD,GAAII,YAAYH,EAAM9uB,EAASkvB,MAAM,EAC9C,CAoBAjvB,oBAAoB6uB,GAClB,OAAOD,GAAII,YAAYH,EAAM9uB,EAASmvB,OAAO,EAC/C,CAGAlvB,mBAAmB6uB,EAAMM,EAAMnB,GAC7B,IAAIrU,EAAKqL,EAAOoK,MAAMP,EAAMM,GAC5B,MAAMlT,EAAStC,EAAGsC,SAClBtC,EAAKkG,EAASG,SAASrG,GAEvB,MAAMiF,EAAOH,EAAS4Q,cAAc1V,GAC9B/E,EAAM,IAAIga,GAAIC,EAAMjQ,EAAM3C,EAAQ+R,IAEjCsB,EAAaC,GAAa3Q,EAAKtF,SAStC,OARA1E,EAAIma,eAAiBO,EACrB1a,EAAI0E,OAASiW,EACb3a,EAAI+D,WAAalJ,EAAMqE,sBAAsBc,EAAI0E,QAE7C1E,EAAI0E,OAAOzY,OAAS,IACtB+T,EAAI8Y,WAAa9Y,EAAI0E,OAAOvY,YAAY,IAE1C6T,EAAII,YAAc2E,EAAG3E,YACdJ,CACT,CASA5U,aAAa0U,EAASjU,GACpB,OAAOmuB,GAAIjQ,QAAQjK,GAASwY,MAAMzsB,EACpC,CAEA2S,YAAYyb,EAAMjQ,GAAkC,IAA5BkQ,EAAS3c,UAAAtR,OAAA,QAAAuR,IAAAD,UAAA,GAAAA,UAAA,GAAG,EAAG6b,EAAO7b,UAAAtR,OAAA,QAAAuR,IAAAD,UAAA,GAAAA,UAAA,GAAG,EAC/CjR,KAAK2tB,KAAOA,EACZ3tB,KAAK0d,KAAOA,EACZ1d,KAAK4tB,UAAYA,EACjB5tB,KAAK8sB,QAAUA,EACf9sB,KAAKisB,KAAOvO,EAAKd,YACjB5c,KAAKoY,OAAS,KACdpY,KAAKyX,WAAa,KAClBzX,KAAK6tB,gBAAiB,EACtB7tB,KAAKwsB,WAAa,EAClBxsB,KAAKsuB,OAAS,IAAIpB,EACpB,CAKAtZ,0BACE,OAAO5T,KAAK4tB,SACd,CAIA5f,MAEE,IAAIugB,EAEJ,GACEA,EAAOvuB,KAAKsuB,OAAOtgB,YACZugB,IAASvuB,KAAKsuB,OAAOf,cAAcgB,EAAMA,EAAKxR,OAEvD,OAAOwR,CACT,CAGAra,QACElU,KAAKsuB,OAAOjB,IAAI,KAClB,CAMAmB,IAAIlhB,EAAGmhB,GAIL,IAAIF,EAAOvuB,KAAKsuB,OAAOtgB,MACvB,GACEugB,EAAOvuB,KAAKsuB,OAAOtgB,OACdygB,GAASF,IAMZjhB,EAAIud,EAAQ6D,YAAYphB,GACxBmhB,GAAQ,GAyBNnhB,EAAEyP,OAASwR,IACbjhB,EAAEyP,KAAOwR,UAEHvuB,KAAKsuB,OAAOf,cAAcgB,EAAMjhB,GAC5C,CAEAwB,WACE,OAAO9O,KAAK2tB,IACd,CAKAgB,UAAUjc,EAAOjC,EAAKmF,EAAQwV,GAC5B,IAAI9d,EAAItN,KAAKgO,MAGTygB,GAAQ,EACPnhB,EAGiB,OAAXA,EAAEyP,OACXzP,EAAIud,EAAQ6D,YAAYphB,GACxBmhB,GAAQ,IAJRnhB,EAAIud,EAAQ+D,QAAQ5uB,MACpByuB,GAAQ,GAMVnhB,EAAEge,KAAKF,GACP,MAAMtS,EAAMxL,EAAE0e,MAAMtZ,EAAOjC,EAAKmF,GAAUtI,EAAEme,aAAe,KAE3D,OADAzrB,KAAKwuB,IAAIlhB,EAAGmhB,GACL3V,CACT,CAEAkT,MAAMzsB,GACJ,OAAgF,OAAzES,KAAK2uB,UAAUtW,EAAawW,UAAUtvB,GAAI,EAAGV,EAAS6W,WAAY,EAC3E,CAgBAoZ,eAAepc,EAAO+B,EAAOM,EAAKa,EAAQmZ,GAKxC,OAJMrc,aAAiBjB,IACrBiB,EAAQD,EAAawB,MAAMvB,IAGtB1S,KAAKmV,kBAAkBzC,EAAO+B,EAAOM,EAAKa,EAAQmZ,EAC3D,CAEA5Z,kBAAkBzC,EAAO+B,EAAOM,EAAKa,EAAQmZ,GAC3C,GAAIta,EAAQM,EACV,MAAO,EAAC,EAAO,MAEjB,MAAMia,EAAetc,EAAMX,kBACvBsG,EAAawW,UAAUnc,EAAMN,iBAAkB,EAAG2C,GAClDsD,EAAa4W,SAASvc,EAAMJ,UAAW,EAAGyC,GAExCma,EAAalvB,KAAK2uB,UAAUK,EAAcva,EAAOmB,EAAQ,EAAImZ,GAEnE,OAAmB,OAAfG,EACK,EAAC,EAAO,MAEV,EAAC,EAAMA,EAChB,CAMAC,UAAUC,GACR,OAA+E,OAAxEpvB,KAAK2uB,UAAUtW,EAAa4W,SAASG,GAAI,EAAGvwB,EAAS6W,WAAY,EAC1E,CAQAmB,WAAWgO,EAAKwK,GACd,OAAOrvB,KAAKsvB,eAAezK,GAAK,IAAMwK,GAAM,EAAIxK,EAAIllB,OAAS,EAC/D,CAQAoX,aAAa8N,EAAKwK,GAChB,OAAOrvB,KAAKsvB,eAAezK,GAAK,IAAMwK,GAAM,EAC9C,CASAC,eAAezK,EAAK0K,EAAUC,GAC5B,IAAIC,EAAe,EACfC,EAAY,EACZhhB,EAAM,GAEV,MAAMgE,EAAQ2F,EAAawW,UAAUhK,GACrC,IAAI8K,EAAc,EAClB,KAAOD,GAAa7K,EAAIllB,QAAQ,CAC9B,MAAMiwB,EAAI5vB,KAAK2uB,UAAUjc,EAAOgd,EAAW7wB,EAAS6W,WAAY,GAChE,GAAU,OAANka,GAA2B,IAAbA,EAAEjwB,OAClB,MAEF+O,GAAOmW,EAAI7P,UAAUya,EAAcG,EAAE,KAEjCA,EAAE,GAAKH,GAAyB,IAATG,EAAE,MAC3BlhB,GAAO6gB,EAAS1K,EAAI7P,UAAU4a,EAAE,GAAIA,EAAE,KACtCD,KAGFF,EAAeG,EAAE,GACjB,MAAMvD,EAAgC,EAAxB3Z,EAAM2E,KAAKqY,GAQzB,GAPIA,EAAYrD,EAAQuD,EAAE,GACxBF,GAAarD,EACJqD,EAAY,EAAIE,EAAE,GAC3BF,IAEAA,EAAYE,EAAE,GAEZD,GAAeH,EACjB,KAEJ,CAGA,OADA9gB,GAAOmW,EAAI7P,UAAUya,GACd/gB,CACT,CAQAmhB,IAAID,GACF,GAAU,OAANA,EACF,OAAO,KAGT,IAAItZ,EAA2B,GAAtB,EAAItW,KAAK4tB,WAElB,GAAIgC,EAAEjwB,OAAS2W,EAAG,CAChB,IAAIwZ,EAAK,IAAI/f,MAAMuG,GAAGyQ,MAAM,GAC5B,IAAK,IAAI5W,EAAI,EAAGA,EAAIyf,EAAEjwB,OAAQwQ,IAC5B2f,EAAG3f,GAAKyf,EAAEzf,GAEZyf,EAAIE,CACN,CACA,OAAOF,CACT,CAGAG,WAAWrd,EAAO4D,GAA0B,IAAvB0Z,EAAU/e,UAAAtR,OAAAsR,QAAAC,IAAAD,UAAAC,GAAAD,UAAIiU,GAAAA,GAAMA,EACnCvE,EAAS,GACb,MAAM5L,EAAMrC,EAAMyE,SACdb,EAAI,IACNA,EAAIvB,EAAM,GAGZ,IAAItE,EAAM,EACNN,EAAI,EACJ8f,GAAgB,EACpB,KAAO9f,EAAImG,GAAK7F,GAAOsE,GAAK,CAC1B,MAAMK,EAAUpV,KAAK2uB,UAAUjc,EAAOjC,EAAK5R,EAAS6W,WAAY1V,KAAK0d,KAAKtB,QAC1E,GAAgB,OAAZhH,GAAuC,IAAnBA,EAAQzV,OAC9B,MAGF,IAAIuwB,GAAS,EACb,GAAI9a,EAAQ,KAAO3E,EAAK,CAClB2E,EAAQ,KAAO6a,IACjBC,GAAS,GAEX,MAAM/iB,EAAIuF,EAAM2E,KAAK5G,GACjBtD,EAAI,EACNsD,EAAMsE,EAAM,EAEZtE,GAAW,EAAJtD,CAEX,MACEsD,EAAM2E,EAAQ,GAEhB6a,EAAe7a,EAAQ,GAEnB8a,IACFvP,EAAOlE,KAAKuT,EAAWhwB,KAAK6vB,IAAIza,KAChCjF,IAEJ,CACA,OAAOwQ,CACT,CA8CAwP,SAASf,GACP,MAAMQ,EAAI5vB,KAAK2uB,UAAUtW,EAAa4W,SAASG,GAAI,EAAGvwB,EAAS6W,WAAY,GAC3E,OAAU,OAANka,EACK,KAEFR,EAAEvZ,MAAM+Z,EAAE,GAAIA,EAAE,GACzB,CAUAQ,cAAchB,GACZ,MAAMQ,EAAI5vB,KAAK2uB,UAAUtW,EAAa4W,SAASG,GAAI,EAAGvwB,EAAS6W,WAAY,GAC3E,OAAU,OAANka,EACK,KAEFA,EAAE/Z,MAAM,EAAG,EACpB,CAYAJ,KAAKlW,GACH,MAAMqwB,EAAI5vB,KAAK2uB,UAAUtW,EAAawW,UAAUtvB,GAAI,EAAGV,EAAS6W,WAAY,GAC5E,OAAU,OAANka,EACK,GAEFrwB,EAAEyV,UAAU4a,EAAE,GAAIA,EAAE,GAC7B,CAWAS,UAAU9wB,GACR,OAAOS,KAAK2uB,UAAUtW,EAAawW,UAAUtvB,GAAI,EAAGV,EAAS6W,WAAY,EAC3E,CAWA4a,iBAAiBlB,GACf,MAAMQ,EAAI5vB,KAAK2uB,UAAUtW,EAAa4W,SAASG,GAAI,EAAGvwB,EAAS6W,WAAY1V,KAAK0d,KAAKtB,QACrF,GAAU,OAANwT,EACF,OAAO,KAGT,MAAMW,EAAM,IAAIxgB,MAAM,EAAI/P,KAAK4tB,WAAW7G,KAAK,MAC/C,IAAK,IAAI5W,EAAI,EAAGA,EAAIogB,EAAI5wB,OAAQwQ,IAC1B,EAAIA,EAAIyf,EAAEjwB,QAAUiwB,EAAE,EAAIzf,IAAM,IAClCogB,EAAIpgB,GAAKif,EAAEvZ,MAAM+Z,EAAE,EAAIzf,GAAIyf,EAAE,EAAIzf,EAAI,KAGzC,OAAOogB,CACT,CAWAC,sBAAsBpB,GACpB,OAAOpvB,KAAK6vB,IACV7vB,KAAK2uB,UAAUtW,EAAa4W,SAASG,GAAI,EAAGvwB,EAAS6W,WAAY1V,KAAK0d,KAAKtB,QAE/E,CAWAqU,aAAalxB,GACX,MAAMqwB,EAAI5vB,KAAK2uB,UAAUtW,EAAawW,UAAUtvB,GAAI,EAAGV,EAAS6W,WAAY1V,KAAK0d,KAAKtB,QACtF,GAAU,OAANwT,EACF,OAAO,KAGT,MAAMW,EAAM,IAAIxgB,MAAM,EAAI/P,KAAK4tB,WAAW7G,KAAK,MAC/C,IAAK,IAAI5W,EAAI,EAAGA,EAAIogB,EAAI5wB,OAAQwQ,IAC1B,EAAIA,EAAIyf,EAAEjwB,QAAUiwB,EAAE,EAAIzf,IAAM,IAClCogB,EAAIpgB,GAAK5Q,EAAEyV,UAAU4a,EAAE,EAAIzf,GAAIyf,EAAE,EAAIzf,EAAI,KAG7C,OAAOogB,CACT,CAWAG,kBAAkBnxB,GAChB,OAAOS,KAAK6vB,IACV7vB,KAAK2uB,UAAUtW,EAAawW,UAAUtvB,GAAI,EAAGV,EAAS6W,WAAY1V,KAAK0d,KAAKtB,QAEhF,CAcAuU,YAAYvB,EAAG9Y,GACb,MAAMqK,EAAS3gB,KAAK+vB,WAAW1X,EAAa4W,SAASG,GAAI9Y,GAAI0V,GAC3DoD,EAAEvZ,MAAMmW,EAAM,GAAIA,EAAM,MAE1B,OAAsB,IAAlBrL,EAAOhhB,OACF,KAEFghB,CACT,CAWAiQ,iBAAiBxB,EAAG9Y,GAClB,MAAMqK,EAAS3gB,KAAK+vB,WAAW1X,EAAa4W,SAASG,GAAI9Y,GAAI0V,GAAUA,EAAMnW,MAAM,EAAG,KACtF,OAAsB,IAAlB8K,EAAOhhB,OACF,KAEFghB,CACT,CAWAkQ,QAAQtxB,EAAG+W,GACT,MAAMqK,EAAS3gB,KAAK+vB,WAAW1X,EAAawW,UAAUtvB,GAAI+W,GAAI0V,GAC5DzsB,EAAEyV,UAAUgX,EAAM,GAAIA,EAAM,MAE9B,OAAsB,IAAlBrL,EAAOhhB,OACF,KAEFghB,CACT,CAWAmQ,aAAavxB,EAAG+W,GACd,MAAMqK,EAAS3gB,KAAK+vB,WAAW1X,EAAawW,UAAUtvB,GAAI+W,GAAI0V,GAAUA,EAAMnW,MAAM,EAAG,KACvF,OAAsB,IAAlB8K,EAAOhhB,OACF,KAEFghB,CACT,CAWAoQ,oBAAoB3B,EAAG9Y,GACrB,MAAMqK,EAAS3gB,KAAK+vB,WAAW1X,EAAa4W,SAASG,GAAI9Y,GAAI0V,IAC3D,IAAInW,EAAQ,IAAI9F,MAAOic,EAAMrsB,OAAS,EAAK,GAAGonB,KAAK,MACnD,IAAK,IAAIxQ,EAAI,EAAGA,EAAIV,EAAMlW,OAAQ4W,IAC5ByV,EAAM,EAAIzV,IAAM,IAClBV,EAAMU,GAAK6Y,EAAEvZ,MAAMmW,EAAM,EAAIzV,GAAIyV,EAAM,EAAIzV,EAAI,KAGnD,OAAOV,CAAK,IAEd,OAAsB,IAAlB8K,EAAOhhB,OACF,KAEFghB,CACT,CAWAqQ,yBAAyB5B,EAAG9Y,GAC1B,MAAMqK,EAAS3gB,KAAK+vB,WAAW1X,EAAa4W,SAASG,GAAI9Y,GACzD,OAAsB,IAAlBqK,EAAOhhB,OACF,KAEFghB,CACT,CAWAsQ,gBAAgB1xB,EAAG+W,GACjB,MAAMqK,EAAS3gB,KAAK+vB,WAAW1X,EAAawW,UAAUtvB,GAAI+W,GAAI0V,IAC5D,IAAInW,EAAQ,IAAI9F,MAAOic,EAAMrsB,OAAS,EAAK,GAAGonB,KAAK,MACnD,IAAK,IAAIxQ,EAAI,EAAGA,EAAIV,EAAMlW,OAAQ4W,IAC5ByV,EAAM,EAAIzV,IAAM,IAClBV,EAAMU,GAAKhX,EAAEyV,UAAUgX,EAAM,EAAIzV,GAAIyV,EAAM,EAAIzV,EAAI,KAGvD,OAAOV,CAAK,IAEd,OAAsB,IAAlB8K,EAAOhhB,OACF,KAEFghB,CACT,CAWAuQ,qBAAqB3xB,EAAG+W,GACtB,MAAMqK,EAAS3gB,KAAK+vB,WAAW1X,EAAawW,UAAUtvB,GAAI+W,GAC1D,OAAsB,IAAlBqK,EAAOhhB,OACF,KAEFghB,CACT,ECztBF,MAAMwQ,GAIJryB,wBAA0B,EAI1BA,cAAgB,EAKhBA,iBAAmB,EAInBA,8BAAgC,EAIhCA,qBAAuB,GAcvBA,aAAaiQ,GACX,OAAOR,EAAM6iB,UAAUriB,EACzB,CAQAjQ,eAAe4Z,GAAkB,IAAXC,EAAK1H,UAAAtR,OAAA,QAAAuR,IAAAD,UAAA,GAAAA,UAAA,GAAG,EACxBogB,EAAS3Y,EAUb,GATyC,IAApCC,EAAQwY,GAAMG,oBACjBD,EAAU,OAAMA,KAEa,IAA1B1Y,EAAQwY,GAAMI,UACjBF,EAAU,OAAMA,KAEgB,IAA7B1Y,EAAQwY,GAAMK,aACjBH,EAAU,OAAMA,KAWhB,IARC1Y,IAEGwY,GAAMK,UACNL,GAAMI,OACNJ,GAAMG,iBACNH,GAAMM,uBACNN,GAAMO,gBAIV,MAAM,IAAIpe,EACR,oHAIJ,IAAIqe,EAAW9yB,EAASkvB,KACuB,IAA1CpV,EAAQwY,GAAMM,0BACjBE,IAAa9yB,EAASM,gBAGxB,MAAM+Q,EAAI,IAAIihB,GAAMzY,EAAOC,GAG3B,OADAzI,EAAE0hB,SAAWlE,GAAII,YAAYuD,EAAQM,EAA4C,IAAjChZ,EAAQwY,GAAMO,gBACvDxhB,CACT,CAUApR,eAAe4Z,EAAOhG,GACpB,OAAOye,GAAM1T,QAAQ/E,GAAOmZ,QAAQnf,GAAO0C,SAC7C,CAGAtW,gBAAgB0U,EAASmF,EAAOjF,GAC9B,GAAe,MAAXF,EACF,MAAM,IAAI7B,MAAM,mBAElB,GAAW,MAAP+B,EACF,MAAM,IAAI/B,MAAM,eAElB,MAAMzB,EAAI,IAAIihB,GAAM3d,EAASmF,GAG7B,OADAzI,EAAE0hB,SAAWle,EACNxD,CACT,CAEAgC,YAAYsB,EAASmF,GAEnB3Y,KAAKyT,aAAeD,EAEpBxT,KAAK8xB,WAAanZ,CACpB,CAMAzE,QACElU,KAAK4xB,SAAS1d,OAChB,CAMAyE,QACE,OAAO3Y,KAAK8xB,UACd,CAMAte,UACE,OAAOxT,KAAKyT,YACd,CAEAC,MACE,OAAO1T,KAAK4xB,QACd,CAQAxc,QAAQ1C,GACN,OAAO1S,KAAK6xB,QAAQnf,GAAO0C,SAC7B,CAQAyc,QAAQnf,GAKN,OAJI3C,MAAM4C,QAAQD,KAChBA,EAAQD,EAAauB,KAAKtB,IAGrB,IAAIa,EAAQvT,KAAM0S,EAC3B,CAgBA1D,MAAM0D,GAAkB,IAAXqf,EAAK9gB,UAAAtR,OAAA,QAAAuR,IAAAD,UAAA,GAAAA,UAAA,GAAG,EACnB,MAAM3D,EAAItN,KAAK6xB,QAAQnf,GAEjBiO,EAAS,GACf,IAAIqR,EAAiB,EACjB3b,EAAO,EAEX,KAAO/I,EAAEmI,QACP,GAAa,IAATY,GAA0B,IAAZ/I,EAAEyH,MAApB,CAMA,GAAIgd,EAAQ,GAAKpR,EAAOhhB,SAAWoyB,EAAQ,EAEzC,MAGF,GAAI1b,IAAS/I,EAAEmH,SAEb,GAAc,IAAVsd,EAAa,CACfC,GAAkB,EAClB3b,EAAO/I,EAAEyH,MACT,QACF,OAIA,KAAOid,EAAiB,GACtBrR,EAAOlE,KAAK,IACZuV,GAAkB,EAItBrR,EAAOlE,KAAKnP,EAAE0H,UAAUqB,EAAM/I,EAAEmH,UAChC4B,EAAO/I,EAAEyH,KAxBT,MAFEsB,EAAO/I,EAAEyH,MA6Bb,GAAc,IAAVgd,GAAe1b,IAAS/I,EAAEwI,cAAe,CAG3C,KAAOkc,EAAiB,GACtBrR,EAAOlE,KAAK,IACZuV,GAAkB,EAGpBrR,EAAOlE,KAAKnP,EAAE0H,UAAUqB,EAAM/I,EAAEwI,eAClC,CAMA,OAJc,IAAVic,GAAiC,IAAlBpR,EAAOhhB,QACxBghB,EAAOlE,KAAKnP,EAAE0H,UAAUqB,EAAM/I,EAAEwI,gBAG3B6K,CACT,CAEA7R,WACE,OAAO9O,KAAKyT,YACd,CAQAwB,aACE,OAAOjV,KAAK4xB,SAAShe,yBACvB,CAOAE,cACE,OAAO9T,KAAK4xB,SAAS9d,WACvB,CAEAkH,OAAOiX,GACL,OAAIjyB,OAASiyB,GAGC,OAAVA,GAAkBjyB,KAAKkS,cAAgB+f,EAAM/f,cAI1ClS,KAAK8xB,aAAeG,EAAMH,YAAc9xB,KAAKyT,eAAiBwe,EAAMxe,aAC7E"}
1
+ {"version":3,"file":"index.umd.js","sources":["../src/RE2Flags.js","../src/Codepoint.js","../src/UnicodeTables.js","../src/Unicode.js","../src/Utils.js","../src/helpers.js","../src/MatcherInput.js","../src/exceptions.js","../src/Matcher.js","../src/MachineInput.js","../src/Regexp.js","../src/Inst.js","../src/Prog.js","../src/Compiler.js","../src/Simplify.js","../src/CharGroup.js","../src/CharClass.js","../src/Parser.js","../src/Machine.js","../src/RE2.js","../src/index.js"],"sourcesContent":["//// Parser flags.\nclass RE2Flags {\n // Fold case during matching (case-insensitive).\n static FOLD_CASE = 0x01\n // Treat pattern as a literal string instead of a regexp.\n static LITERAL = 0x02\n // Allow character classes like [^a-z] and [[:space:]] to match newline.\n static CLASS_NL = 0x04\n // Allow '.' to match newline.\n static DOT_NL = 0x08\n // Treat ^ and $ as only matching at beginning and end of text, not\n // around embedded newlines. (Perl's default).\n static ONE_LINE = 0x10\n // Make repetition operators default to non-greedy.\n static NON_GREEDY = 0x20\n // allow Perl extensions:\n // non-capturing parens - (?: )\n // non-greedy operators - *? +? ?? {}?\n // flag edits - (?i) (?-i) (?i: )\n // i - FoldCase\n // m - !OneLine\n // s - DotNL\n // U - NonGreedy\n // line ends: \\A \\z\n // \\Q and \\E to disable/enable metacharacters\n // (?P<name>expr) for named captures\n // \\C (any byte) is not supported.\n static PERL_X = 0x40\n // Allow \\p{Han}, \\P{Han} for Unicode group and negation.\n static UNICODE_GROUPS = 0x80\n // Regexp END_TEXT was $, not \\z. Internal use only.\n static WAS_DOLLAR = 0x100\n\n static MATCH_NL = RE2Flags.CLASS_NL | RE2Flags.DOT_NL\n // As close to Perl as possible.\n static PERL = RE2Flags.CLASS_NL | RE2Flags.ONE_LINE | RE2Flags.PERL_X | RE2Flags.UNICODE_GROUPS\n // POSIX syntax.\n static POSIX = 0\n //// Anchors\n static UNANCHORED = 0\n static ANCHOR_START = 1\n static ANCHOR_BOTH = 2\n}\n\nexport { RE2Flags }\n","/**\n * Various constants and helper for unicode codepoints.\n */\nclass Codepoint {\n // codePointAt(0)\n static CODES = new Map([\n ['\\x07', 7],\n ['\\b', 8],\n ['\\t', 9],\n ['\\n', 10],\n ['\\v', 11],\n ['\\f', 12],\n ['\\r', 13],\n [' ', 32],\n ['\"', 34],\n ['$', 36],\n ['&', 38],\n ['(', 40],\n [')', 41],\n ['*', 42],\n ['+', 43],\n ['-', 45],\n ['.', 46],\n ['0', 48],\n ['1', 49],\n ['2', 50],\n ['3', 51],\n ['4', 52],\n ['5', 53],\n ['6', 54],\n ['7', 55],\n ['8', 56],\n ['9', 57],\n [':', 58],\n ['<', 60],\n ['>', 62],\n ['?', 63],\n ['A', 65],\n ['B', 66],\n ['C', 67],\n ['F', 70],\n ['P', 80],\n ['Q', 81],\n ['U', 85],\n ['Z', 90],\n ['[', 91],\n ['\\\\', 92],\n [']', 93],\n ['^', 94],\n ['_', 95],\n ['a', 97],\n ['b', 98],\n ['f', 102],\n ['i', 105],\n ['m', 109],\n ['n', 110],\n ['r', 114],\n ['s', 115],\n ['t', 116],\n ['v', 118],\n ['x', 120],\n ['z', 122],\n ['{', 123],\n ['|', 124],\n ['}', 125]\n ])\n\n // convert unicode codepoint to upper case codepoint\n // return same codepoint, if cannot do it (or codepoint not have upper variation)\n static toUpperCase(codepoint) {\n const s = String.fromCodePoint(codepoint).toUpperCase()\n if (s.length > 1) {\n return codepoint\n }\n const sOrigin = String.fromCodePoint(s.codePointAt(0)).toLowerCase()\n if (sOrigin.length > 1 || sOrigin.codePointAt(0) !== codepoint) {\n return codepoint\n }\n return s.codePointAt(0)\n }\n\n // convert unicode codepoint to lower case codepoint\n // return same codepoint, if cannot do it (or codepoint not have lower variation)\n static toLowerCase(codepoint) {\n const s = String.fromCodePoint(codepoint).toLowerCase()\n if (s.length > 1) {\n return codepoint\n }\n const sOrigin = String.fromCodePoint(s.codePointAt(0)).toUpperCase()\n if (sOrigin.length > 1 || sOrigin.codePointAt(0) !== codepoint) {\n return codepoint\n }\n return s.codePointAt(0)\n }\n}\n\nexport { Codepoint }\n","// GENERATED BY tools/scripts/genUnicodeTable.js; DO NOT EDIT.\n// yarn node ./tools/scripts/genUnicodeTable.js > src/UnicodeTables.js\n\nclass UnicodeTables {\n static CASE_ORBIT = new Map([\n [75, 107],\n [107, 8490],\n [8490, 75],\n [83, 115],\n [115, 383],\n [383, 83],\n [181, 924],\n [924, 956],\n [956, 181],\n [197, 229],\n [229, 8491],\n [8491, 197],\n [452, 453],\n [453, 454],\n [454, 452],\n [455, 456],\n [456, 457],\n [457, 455],\n [458, 459],\n [459, 460],\n [460, 458],\n [497, 498],\n [498, 499],\n [499, 497],\n [837, 921],\n [921, 953],\n [953, 8126],\n [8126, 837],\n [914, 946],\n [946, 976],\n [976, 914],\n [917, 949],\n [949, 1013],\n [1013, 917],\n [920, 952],\n [952, 977],\n [977, 1012],\n [1012, 920],\n [922, 954],\n [954, 1008],\n [1008, 922],\n [928, 960],\n [960, 982],\n [982, 928],\n [929, 961],\n [961, 1009],\n [1009, 929],\n [931, 962],\n [962, 963],\n [963, 931],\n [934, 966],\n [966, 981],\n [981, 934],\n [937, 969],\n [969, 8486],\n [8486, 937],\n [1042, 1074],\n [1074, 7296],\n [7296, 1042],\n [1044, 1076],\n [1076, 7297],\n [7297, 1044],\n [1054, 1086],\n [1086, 7298],\n [7298, 1054],\n [1057, 1089],\n [1089, 7299],\n [7299, 1057],\n [1058, 1090],\n [1090, 7300],\n [7300, 7301],\n [7301, 1058],\n [1066, 1098],\n [1098, 7302],\n [7302, 1066],\n [1122, 1123],\n [1123, 7303],\n [7303, 1122],\n [7304, 42570],\n [42570, 42571],\n [42571, 7304],\n [7776, 7777],\n [7777, 7835],\n [7835, 7776],\n [223, 7838],\n [7838, 223],\n [8064, 8072],\n [8072, 8064],\n [8065, 8073],\n [8073, 8065],\n [8066, 8074],\n [8074, 8066],\n [8067, 8075],\n [8075, 8067],\n [8068, 8076],\n [8076, 8068],\n [8069, 8077],\n [8077, 8069],\n [8070, 8078],\n [8078, 8070],\n [8071, 8079],\n [8079, 8071],\n [8080, 8088],\n [8088, 8080],\n [8081, 8089],\n [8089, 8081],\n [8082, 8090],\n [8090, 8082],\n [8083, 8091],\n [8091, 8083],\n [8084, 8092],\n [8092, 8084],\n [8085, 8093],\n [8093, 8085],\n [8086, 8094],\n [8094, 8086],\n [8087, 8095],\n [8095, 8087],\n [8096, 8104],\n [8104, 8096],\n [8097, 8105],\n [8105, 8097],\n [8098, 8106],\n [8106, 8098],\n [8099, 8107],\n [8107, 8099],\n [8100, 8108],\n [8108, 8100],\n [8101, 8109],\n [8109, 8101],\n [8102, 8110],\n [8110, 8102],\n [8103, 8111],\n [8111, 8103],\n [8115, 8124],\n [8124, 8115],\n [8131, 8140],\n [8140, 8131],\n [8179, 8188],\n [8188, 8179],\n [66560, 66600],\n [66600, 66560],\n [66561, 66601],\n [66601, 66561],\n [66562, 66602],\n [66602, 66562],\n [66563, 66603],\n [66603, 66563],\n [66564, 66604],\n [66604, 66564],\n [66565, 66605],\n [66605, 66565],\n [66566, 66606],\n [66606, 66566],\n [66567, 66607],\n [66607, 66567],\n [66568, 66608],\n [66608, 66568],\n [66569, 66609],\n [66609, 66569],\n [66570, 66610],\n [66610, 66570],\n [66571, 66611],\n [66611, 66571],\n [66572, 66612],\n [66612, 66572],\n [66573, 66613],\n [66613, 66573],\n [66574, 66614],\n [66614, 66574],\n [66575, 66615],\n [66615, 66575],\n [66576, 66616],\n [66616, 66576],\n [66577, 66617],\n [66617, 66577],\n [66578, 66618],\n [66618, 66578],\n [66579, 66619],\n [66619, 66579],\n [66580, 66620],\n [66620, 66580],\n [66581, 66621],\n [66621, 66581],\n [66582, 66622],\n [66622, 66582],\n [66583, 66623],\n [66623, 66583],\n [66584, 66624],\n [66624, 66584],\n [66585, 66625],\n [66625, 66585],\n [66586, 66626],\n [66626, 66586],\n [66587, 66627],\n [66627, 66587],\n [66588, 66628],\n [66628, 66588],\n [66589, 66629],\n [66629, 66589],\n [66590, 66630],\n [66630, 66590],\n [66591, 66631],\n [66631, 66591],\n [66592, 66632],\n [66632, 66592],\n [66593, 66633],\n [66633, 66593],\n [66594, 66634],\n [66634, 66594],\n [66595, 66635],\n [66635, 66595],\n [66596, 66636],\n [66636, 66596],\n [66597, 66637],\n [66637, 66597],\n [66598, 66638],\n [66638, 66598],\n [66599, 66639],\n [66639, 66599],\n [66736, 66776],\n [66776, 66736],\n [66737, 66777],\n [66777, 66737],\n [66738, 66778],\n [66778, 66738],\n [66739, 66779],\n [66779, 66739],\n [66740, 66780],\n [66780, 66740],\n [66741, 66781],\n [66781, 66741],\n [66742, 66782],\n [66782, 66742],\n [66743, 66783],\n [66783, 66743],\n [66744, 66784],\n [66784, 66744],\n [66745, 66785],\n [66785, 66745],\n [66746, 66786],\n [66786, 66746],\n [66747, 66787],\n [66787, 66747],\n [66748, 66788],\n [66788, 66748],\n [66749, 66789],\n [66789, 66749],\n [66750, 66790],\n [66790, 66750],\n [66751, 66791],\n [66791, 66751],\n [66752, 66792],\n [66792, 66752],\n [66753, 66793],\n [66793, 66753],\n [66754, 66794],\n [66794, 66754],\n [66755, 66795],\n [66795, 66755],\n [66756, 66796],\n [66796, 66756],\n [66757, 66797],\n [66797, 66757],\n [66758, 66798],\n [66798, 66758],\n [66759, 66799],\n [66799, 66759],\n [66760, 66800],\n [66800, 66760],\n [66761, 66801],\n [66801, 66761],\n [66762, 66802],\n [66802, 66762],\n [66763, 66803],\n [66803, 66763],\n [66764, 66804],\n [66804, 66764],\n [66765, 66805],\n [66805, 66765],\n [66766, 66806],\n [66806, 66766],\n [66767, 66807],\n [66807, 66767],\n [66768, 66808],\n [66808, 66768],\n [66769, 66809],\n [66809, 66769],\n [66770, 66810],\n [66810, 66770],\n [66771, 66811],\n [66811, 66771],\n [66928, 66967],\n [66967, 66928],\n [66929, 66968],\n [66968, 66929],\n [66930, 66969],\n [66969, 66930],\n [66931, 66970],\n [66970, 66931],\n [66932, 66971],\n [66971, 66932],\n [66933, 66972],\n [66972, 66933],\n [66934, 66973],\n [66973, 66934],\n [66935, 66974],\n [66974, 66935],\n [66936, 66975],\n [66975, 66936],\n [66937, 66976],\n [66976, 66937],\n [66938, 66977],\n [66977, 66938],\n [66940, 66979],\n [66979, 66940],\n [66941, 66980],\n [66980, 66941],\n [66942, 66981],\n [66981, 66942],\n [66943, 66982],\n [66982, 66943],\n [66944, 66983],\n [66983, 66944],\n [66945, 66984],\n [66984, 66945],\n [66946, 66985],\n [66985, 66946],\n [66947, 66986],\n [66986, 66947],\n [66948, 66987],\n [66987, 66948],\n [66949, 66988],\n [66988, 66949],\n [66950, 66989],\n [66989, 66950],\n [66951, 66990],\n [66990, 66951],\n [66952, 66991],\n [66991, 66952],\n [66953, 66992],\n [66992, 66953],\n [66954, 66993],\n [66993, 66954],\n [66956, 66995],\n [66995, 66956],\n [66957, 66996],\n [66996, 66957],\n [66958, 66997],\n [66997, 66958],\n [66959, 66998],\n [66998, 66959],\n [66960, 66999],\n [66999, 66960],\n [66961, 67000],\n [67000, 66961],\n [66962, 67001],\n [67001, 66962],\n [66964, 67003],\n [67003, 66964],\n [66965, 67004],\n [67004, 66965],\n [68736, 68800],\n [68800, 68736],\n [68737, 68801],\n [68801, 68737],\n [68738, 68802],\n [68802, 68738],\n [68739, 68803],\n [68803, 68739],\n [68740, 68804],\n [68804, 68740],\n [68741, 68805],\n [68805, 68741],\n [68742, 68806],\n [68806, 68742],\n [68743, 68807],\n [68807, 68743],\n [68744, 68808],\n [68808, 68744],\n [68745, 68809],\n [68809, 68745],\n [68746, 68810],\n [68810, 68746],\n [68747, 68811],\n [68811, 68747],\n [68748, 68812],\n [68812, 68748],\n [68749, 68813],\n [68813, 68749],\n [68750, 68814],\n [68814, 68750],\n [68751, 68815],\n [68815, 68751],\n [68752, 68816],\n [68816, 68752],\n [68753, 68817],\n [68817, 68753],\n [68754, 68818],\n [68818, 68754],\n [68755, 68819],\n [68819, 68755],\n [68756, 68820],\n [68820, 68756],\n [68757, 68821],\n [68821, 68757],\n [68758, 68822],\n [68822, 68758],\n [68759, 68823],\n [68823, 68759],\n [68760, 68824],\n [68824, 68760],\n [68761, 68825],\n [68825, 68761],\n [68762, 68826],\n [68826, 68762],\n [68763, 68827],\n [68827, 68763],\n [68764, 68828],\n [68828, 68764],\n [68765, 68829],\n [68829, 68765],\n [68766, 68830],\n [68830, 68766],\n [68767, 68831],\n [68831, 68767],\n [68768, 68832],\n [68832, 68768],\n [68769, 68833],\n [68833, 68769],\n [68770, 68834],\n [68834, 68770],\n [68771, 68835],\n [68835, 68771],\n [68772, 68836],\n [68836, 68772],\n [68773, 68837],\n [68837, 68773],\n [68774, 68838],\n [68838, 68774],\n [68775, 68839],\n [68839, 68775],\n [68776, 68840],\n [68840, 68776],\n [68777, 68841],\n [68841, 68777],\n [68778, 68842],\n [68842, 68778],\n [68779, 68843],\n [68843, 68779],\n [68780, 68844],\n [68844, 68780],\n [68781, 68845],\n [68845, 68781],\n [68782, 68846],\n [68846, 68782],\n [68783, 68847],\n [68847, 68783],\n [68784, 68848],\n [68848, 68784],\n [68785, 68849],\n [68849, 68785],\n [68786, 68850],\n [68850, 68786],\n [71840, 71872],\n [71872, 71840],\n [71841, 71873],\n [71873, 71841],\n [71842, 71874],\n [71874, 71842],\n [71843, 71875],\n [71875, 71843],\n [71844, 71876],\n [71876, 71844],\n [71845, 71877],\n [71877, 71845],\n [71846, 71878],\n [71878, 71846],\n [71847, 71879],\n [71879, 71847],\n [71848, 71880],\n [71880, 71848],\n [71849, 71881],\n [71881, 71849],\n [71850, 71882],\n [71882, 71850],\n [71851, 71883],\n [71883, 71851],\n [71852, 71884],\n [71884, 71852],\n [71853, 71885],\n [71885, 71853],\n [71854, 71886],\n [71886, 71854],\n [71855, 71887],\n [71887, 71855],\n [71856, 71888],\n [71888, 71856],\n [71857, 71889],\n [71889, 71857],\n [71858, 71890],\n [71890, 71858],\n [71859, 71891],\n [71891, 71859],\n [71860, 71892],\n [71892, 71860],\n [71861, 71893],\n [71893, 71861],\n [71862, 71894],\n [71894, 71862],\n [71863, 71895],\n [71895, 71863],\n [71864, 71896],\n [71896, 71864],\n [71865, 71897],\n [71897, 71865],\n [71866, 71898],\n [71898, 71866],\n [71867, 71899],\n [71899, 71867],\n [71868, 71900],\n [71900, 71868],\n [71869, 71901],\n [71901, 71869],\n [71870, 71902],\n [71902, 71870],\n [71871, 71903],\n [71903, 71871],\n [93760, 93792],\n [93792, 93760],\n [93761, 93793],\n [93793, 93761],\n [93762, 93794],\n [93794, 93762],\n [93763, 93795],\n [93795, 93763],\n [93764, 93796],\n [93796, 93764],\n [93765, 93797],\n [93797, 93765],\n [93766, 93798],\n [93798, 93766],\n [93767, 93799],\n [93799, 93767],\n [93768, 93800],\n [93800, 93768],\n [93769, 93801],\n [93801, 93769],\n [93770, 93802],\n [93802, 93770],\n [93771, 93803],\n [93803, 93771],\n [93772, 93804],\n [93804, 93772],\n [93773, 93805],\n [93805, 93773],\n [93774, 93806],\n [93806, 93774],\n [93775, 93807],\n [93807, 93775],\n [93776, 93808],\n [93808, 93776],\n [93777, 93809],\n [93809, 93777],\n [93778, 93810],\n [93810, 93778],\n [93779, 93811],\n [93811, 93779],\n [93780, 93812],\n [93812, 93780],\n [93781, 93813],\n [93813, 93781],\n [93782, 93814],\n [93814, 93782],\n [93783, 93815],\n [93815, 93783],\n [93784, 93816],\n [93816, 93784],\n [93785, 93817],\n [93817, 93785],\n [93786, 93818],\n [93818, 93786],\n [93787, 93819],\n [93819, 93787],\n [93788, 93820],\n [93820, 93788],\n [93789, 93821],\n [93821, 93789],\n [93790, 93822],\n [93822, 93790],\n [93791, 93823],\n [93823, 93791],\n [125184, 125218],\n [125218, 125184],\n [125185, 125219],\n [125219, 125185],\n [125186, 125220],\n [125220, 125186],\n [125187, 125221],\n [125221, 125187],\n [125188, 125222],\n [125222, 125188],\n [125189, 125223],\n [125223, 125189],\n [125190, 125224],\n [125224, 125190],\n [125191, 125225],\n [125225, 125191],\n [125192, 125226],\n [125226, 125192],\n [125193, 125227],\n [125227, 125193],\n [125194, 125228],\n [125228, 125194],\n [125195, 125229],\n [125229, 125195],\n [125196, 125230],\n [125230, 125196],\n [125197, 125231],\n [125231, 125197],\n [125198, 125232],\n [125232, 125198],\n [125199, 125233],\n [125233, 125199],\n [125200, 125234],\n [125234, 125200],\n [125201, 125235],\n [125235, 125201],\n [125202, 125236],\n [125236, 125202],\n [125203, 125237],\n [125237, 125203],\n [125204, 125238],\n [125238, 125204],\n [125205, 125239],\n [125239, 125205],\n [125206, 125240],\n [125240, 125206],\n [125207, 125241],\n [125241, 125207],\n [125208, 125242],\n [125242, 125208],\n [125209, 125243],\n [125243, 125209],\n [125210, 125244],\n [125244, 125210],\n [125211, 125245],\n [125245, 125211],\n [125212, 125246],\n [125246, 125212],\n [125213, 125247],\n [125247, 125213],\n [125214, 125248],\n [125248, 125214],\n [125215, 125249],\n [125249, 125215],\n [125216, 125250],\n [125250, 125216],\n [125217, 125251],\n [125251, 125217]\n ])\n static C = [\n [0, 31, 1],\n [127, 159, 1],\n [173, 888, 715],\n [889, 896, 7],\n [897, 899, 1],\n [907, 909, 2],\n [930, 1328, 398],\n [1367, 1368, 1],\n [1419, 1420, 1],\n [1424, 1480, 56],\n [1481, 1487, 1],\n [1515, 1518, 1],\n [1525, 1541, 1],\n [1564, 1757, 193],\n [1806, 1807, 1],\n [1867, 1868, 1],\n [1970, 1983, 1],\n [2043, 2044, 1],\n [2094, 2095, 1],\n [2111, 2140, 29],\n [2141, 2143, 2],\n [2155, 2159, 1],\n [2191, 2199, 1],\n [2274, 2436, 162],\n [2445, 2446, 1],\n [2449, 2450, 1],\n [2473, 2481, 8],\n [2483, 2485, 1],\n [2490, 2491, 1],\n [2501, 2502, 1],\n [2505, 2506, 1],\n [2511, 2518, 1],\n [2520, 2523, 1],\n [2526, 2532, 6],\n [2533, 2559, 26],\n [2560, 2564, 4],\n [2571, 2574, 1],\n [2577, 2578, 1],\n [2601, 2609, 8],\n [2612, 2618, 3],\n [2619, 2621, 2],\n [2627, 2630, 1],\n [2633, 2634, 1],\n [2638, 2640, 1],\n [2642, 2648, 1],\n [2653, 2655, 2],\n [2656, 2661, 1],\n [2679, 2688, 1],\n [2692, 2702, 10],\n [2706, 2729, 23],\n [2737, 2740, 3],\n [2746, 2747, 1],\n [2758, 2766, 4],\n [2767, 2769, 2],\n [2770, 2783, 1],\n [2788, 2789, 1],\n [2802, 2808, 1],\n [2816, 2820, 4],\n [2829, 2830, 1],\n [2833, 2834, 1],\n [2857, 2865, 8],\n [2868, 2874, 6],\n [2875, 2885, 10],\n [2886, 2889, 3],\n [2890, 2894, 4],\n [2895, 2900, 1],\n [2904, 2907, 1],\n [2910, 2916, 6],\n [2917, 2936, 19],\n [2937, 2945, 1],\n [2948, 2955, 7],\n [2956, 2957, 1],\n [2961, 2966, 5],\n [2967, 2968, 1],\n [2971, 2973, 2],\n [2976, 2978, 1],\n [2981, 2983, 1],\n [2987, 2989, 1],\n [3002, 3005, 1],\n [3011, 3013, 1],\n [3017, 3022, 5],\n [3023, 3025, 2],\n [3026, 3030, 1],\n [3032, 3045, 1],\n [3067, 3071, 1],\n [3085, 3089, 4],\n [3113, 3130, 17],\n [3131, 3141, 10],\n [3145, 3150, 5],\n [3151, 3156, 1],\n [3159, 3163, 4],\n [3164, 3166, 2],\n [3167, 3172, 5],\n [3173, 3184, 11],\n [3185, 3190, 1],\n [3213, 3217, 4],\n [3241, 3252, 11],\n [3258, 3259, 1],\n [3269, 3273, 4],\n [3278, 3284, 1],\n [3287, 3292, 1],\n [3295, 3300, 5],\n [3301, 3312, 11],\n [3316, 3327, 1],\n [3341, 3345, 4],\n [3397, 3401, 4],\n [3408, 3411, 1],\n [3428, 3429, 1],\n [3456, 3460, 4],\n [3479, 3481, 1],\n [3506, 3516, 10],\n [3518, 3519, 1],\n [3527, 3529, 1],\n [3531, 3534, 1],\n [3541, 3543, 2],\n [3552, 3557, 1],\n [3568, 3569, 1],\n [3573, 3584, 1],\n [3643, 3646, 1],\n [3676, 3712, 1],\n [3715, 3717, 2],\n [3723, 3748, 25],\n [3750, 3774, 24],\n [3775, 3781, 6],\n [3783, 3791, 8],\n [3802, 3803, 1],\n [3808, 3839, 1],\n [3912, 3949, 37],\n [3950, 3952, 1],\n [3992, 4029, 37],\n [4045, 4059, 14],\n [4060, 4095, 1],\n [4294, 4296, 2],\n [4297, 4300, 1],\n [4302, 4303, 1],\n [4681, 4686, 5],\n [4687, 4695, 8],\n [4697, 4702, 5],\n [4703, 4745, 42],\n [4750, 4751, 1],\n [4785, 4790, 5],\n [4791, 4799, 8],\n [4801, 4806, 5],\n [4807, 4823, 16],\n [4881, 4886, 5],\n [4887, 4955, 68],\n [4956, 4989, 33],\n [4990, 4991, 1],\n [5018, 5023, 1],\n [5110, 5111, 1],\n [5118, 5119, 1],\n [5789, 5791, 1],\n [5881, 5887, 1],\n [5910, 5918, 1],\n [5943, 5951, 1],\n [5972, 5983, 1],\n [5997, 6001, 4],\n [6004, 6015, 1],\n [6110, 6111, 1],\n [6122, 6127, 1],\n [6138, 6143, 1],\n [6158, 6170, 12],\n [6171, 6175, 1],\n [6265, 6271, 1],\n [6315, 6319, 1],\n [6390, 6399, 1],\n [6431, 6444, 13],\n [6445, 6447, 1],\n [6460, 6463, 1],\n [6465, 6467, 1],\n [6510, 6511, 1],\n [6517, 6527, 1],\n [6572, 6575, 1],\n [6602, 6607, 1],\n [6619, 6621, 1],\n [6684, 6685, 1],\n [6751, 6781, 30],\n [6782, 6794, 12],\n [6795, 6799, 1],\n [6810, 6815, 1],\n [6830, 6831, 1],\n [6863, 6911, 1],\n [6989, 6991, 1],\n [7039, 7156, 117],\n [7157, 7163, 1],\n [7224, 7226, 1],\n [7242, 7244, 1],\n [7305, 7311, 1],\n [7355, 7356, 1],\n [7368, 7375, 1],\n [7419, 7423, 1],\n [7958, 7959, 1],\n [7966, 7967, 1],\n [8006, 8007, 1],\n [8014, 8015, 1],\n [8024, 8030, 2],\n [8062, 8063, 1],\n [8117, 8133, 16],\n [8148, 8149, 1],\n [8156, 8176, 20],\n [8177, 8181, 4],\n [8191, 8203, 12],\n [8204, 8207, 1],\n [8234, 8238, 1],\n [8288, 8303, 1],\n [8306, 8307, 1],\n [8335, 8349, 14],\n [8350, 8351, 1],\n [8385, 8399, 1],\n [8433, 8447, 1],\n [8588, 8591, 1],\n [9255, 9279, 1],\n [9291, 9311, 1],\n [11124, 11125, 1],\n [11158, 11508, 350],\n [11509, 11512, 1],\n [11558, 11560, 2],\n [11561, 11564, 1],\n [11566, 11567, 1],\n [11624, 11630, 1],\n [11633, 11646, 1],\n [11671, 11679, 1],\n [11687, 11743, 8],\n [11870, 11903, 1],\n [11930, 12020, 90],\n [12021, 12031, 1],\n [12246, 12271, 1],\n [12352, 12439, 87],\n [12440, 12544, 104],\n [12545, 12548, 1],\n [12592, 12687, 95],\n [12772, 12782, 1],\n [12831, 42125, 29294],\n [42126, 42127, 1],\n [42183, 42191, 1],\n [42540, 42559, 1],\n [42744, 42751, 1],\n [42955, 42959, 1],\n [42962, 42964, 2],\n [42970, 42993, 1],\n [43053, 43055, 1],\n [43066, 43071, 1],\n [43128, 43135, 1],\n [43206, 43213, 1],\n [43226, 43231, 1],\n [43348, 43358, 1],\n [43389, 43391, 1],\n [43470, 43482, 12],\n [43483, 43485, 1],\n [43519, 43575, 56],\n [43576, 43583, 1],\n [43598, 43599, 1],\n [43610, 43611, 1],\n [43715, 43738, 1],\n [43767, 43776, 1],\n [43783, 43784, 1],\n [43791, 43792, 1],\n [43799, 43807, 1],\n [43815, 43823, 8],\n [43884, 43887, 1],\n [44014, 44015, 1],\n [44026, 44031, 1],\n [55204, 55215, 1],\n [55239, 55242, 1],\n [55292, 63743, 1],\n [64110, 64111, 1],\n [64218, 64255, 1],\n [64263, 64274, 1],\n [64280, 64284, 1],\n [64311, 64317, 6],\n [64319, 64325, 3],\n [64451, 64466, 1],\n [64912, 64913, 1],\n [64968, 64974, 1],\n [64976, 65007, 1],\n [65050, 65055, 1],\n [65107, 65127, 20],\n [65132, 65135, 1],\n [65141, 65277, 136],\n [65278, 65280, 1],\n [65471, 65473, 1],\n [65480, 65481, 1],\n [65488, 65489, 1],\n [65496, 65497, 1],\n [65501, 65503, 1],\n [65511, 65519, 8],\n [65520, 65531, 1],\n [65534, 65535, 1],\n [65548, 65575, 27],\n [65595, 65598, 3],\n [65614, 65615, 1],\n [65630, 65663, 1],\n [65787, 65791, 1],\n [65795, 65798, 1],\n [65844, 65846, 1],\n [65935, 65949, 14],\n [65950, 65951, 1],\n [65953, 65999, 1],\n [66046, 66175, 1],\n [66205, 66207, 1],\n [66257, 66271, 1],\n [66300, 66303, 1],\n [66340, 66348, 1],\n [66379, 66383, 1],\n [66427, 66431, 1],\n [66462, 66500, 38],\n [66501, 66503, 1],\n [66518, 66559, 1],\n [66718, 66719, 1],\n [66730, 66735, 1],\n [66772, 66775, 1],\n [66812, 66815, 1],\n [66856, 66863, 1],\n [66916, 66926, 1],\n [66939, 66955, 16],\n [66963, 66966, 3],\n [66978, 66994, 16],\n [67002, 67005, 3],\n [67006, 67071, 1],\n [67383, 67391, 1],\n [67414, 67423, 1],\n [67432, 67455, 1],\n [67462, 67505, 43],\n [67515, 67583, 1],\n [67590, 67591, 1],\n [67593, 67638, 45],\n [67641, 67643, 1],\n [67645, 67646, 1],\n [67670, 67743, 73],\n [67744, 67750, 1],\n [67760, 67807, 1],\n [67827, 67830, 3],\n [67831, 67834, 1],\n [67868, 67870, 1],\n [67898, 67902, 1],\n [67904, 67967, 1],\n [68024, 68027, 1],\n [68048, 68049, 1],\n [68100, 68103, 3],\n [68104, 68107, 1],\n [68116, 68120, 4],\n [68150, 68151, 1],\n [68155, 68158, 1],\n [68169, 68175, 1],\n [68185, 68191, 1],\n [68256, 68287, 1],\n [68327, 68330, 1],\n [68343, 68351, 1],\n [68406, 68408, 1],\n [68438, 68439, 1],\n [68467, 68471, 1],\n [68498, 68504, 1],\n [68509, 68520, 1],\n [68528, 68607, 1],\n [68681, 68735, 1],\n [68787, 68799, 1],\n [68851, 68857, 1],\n [68904, 68911, 1],\n [68922, 69215, 1],\n [69247, 69290, 43],\n [69294, 69295, 1],\n [69298, 69372, 1],\n [69416, 69423, 1],\n [69466, 69487, 1],\n [69514, 69551, 1],\n [69580, 69599, 1],\n [69623, 69631, 1],\n [69710, 69713, 1],\n [69750, 69758, 1],\n [69821, 69827, 6],\n [69828, 69839, 1],\n [69865, 69871, 1],\n [69882, 69887, 1],\n [69941, 69960, 19],\n [69961, 69967, 1],\n [70007, 70015, 1],\n [70112, 70133, 21],\n [70134, 70143, 1],\n [70162, 70210, 48],\n [70211, 70271, 1],\n [70279, 70281, 2],\n [70286, 70302, 16],\n [70314, 70319, 1],\n [70379, 70383, 1],\n [70394, 70399, 1],\n [70404, 70413, 9],\n [70414, 70417, 3],\n [70418, 70441, 23],\n [70449, 70452, 3],\n [70458, 70469, 11],\n [70470, 70473, 3],\n [70474, 70478, 4],\n [70479, 70481, 2],\n [70482, 70486, 1],\n [70488, 70492, 1],\n [70500, 70501, 1],\n [70509, 70511, 1],\n [70517, 70655, 1],\n [70748, 70754, 6],\n [70755, 70783, 1],\n [70856, 70863, 1],\n [70874, 71039, 1],\n [71094, 71095, 1],\n [71134, 71167, 1],\n [71237, 71247, 1],\n [71258, 71263, 1],\n [71277, 71295, 1],\n [71354, 71359, 1],\n [71370, 71423, 1],\n [71451, 71452, 1],\n [71468, 71471, 1],\n [71495, 71679, 1],\n [71740, 71839, 1],\n [71923, 71934, 1],\n [71943, 71944, 1],\n [71946, 71947, 1],\n [71956, 71959, 3],\n [71990, 71993, 3],\n [71994, 72007, 13],\n [72008, 72015, 1],\n [72026, 72095, 1],\n [72104, 72105, 1],\n [72152, 72153, 1],\n [72165, 72191, 1],\n [72264, 72271, 1],\n [72355, 72367, 1],\n [72441, 72447, 1],\n [72458, 72703, 1],\n [72713, 72759, 46],\n [72774, 72783, 1],\n [72813, 72815, 1],\n [72848, 72849, 1],\n [72872, 72887, 15],\n [72888, 72959, 1],\n [72967, 72970, 3],\n [73015, 73017, 1],\n [73019, 73022, 3],\n [73032, 73039, 1],\n [73050, 73055, 1],\n [73062, 73065, 3],\n [73103, 73106, 3],\n [73113, 73119, 1],\n [73130, 73439, 1],\n [73465, 73471, 1],\n [73489, 73531, 42],\n [73532, 73533, 1],\n [73562, 73647, 1],\n [73649, 73663, 1],\n [73714, 73726, 1],\n [74650, 74751, 1],\n [74863, 74869, 6],\n [74870, 74879, 1],\n [75076, 77711, 1],\n [77811, 77823, 1],\n [78896, 78911, 1],\n [78934, 82943, 1],\n [83527, 92159, 1],\n [92729, 92735, 1],\n [92767, 92778, 11],\n [92779, 92781, 1],\n [92863, 92874, 11],\n [92875, 92879, 1],\n [92910, 92911, 1],\n [92918, 92927, 1],\n [92998, 93007, 1],\n [93018, 93026, 8],\n [93048, 93052, 1],\n [93072, 93759, 1],\n [93851, 93951, 1],\n [94027, 94030, 1],\n [94088, 94094, 1],\n [94112, 94175, 1],\n [94181, 94191, 1],\n [94194, 94207, 1],\n [100344, 100351, 1],\n [101590, 101631, 1],\n [101641, 110575, 1],\n [110580, 110588, 8],\n [110591, 110883, 292],\n [110884, 110897, 1],\n [110899, 110927, 1],\n [110931, 110932, 1],\n [110934, 110947, 1],\n [110952, 110959, 1],\n [111356, 113663, 1],\n [113771, 113775, 1],\n [113789, 113791, 1],\n [113801, 113807, 1],\n [113818, 113819, 1],\n [113824, 118527, 1],\n [118574, 118575, 1],\n [118599, 118607, 1],\n [118724, 118783, 1],\n [119030, 119039, 1],\n [119079, 119080, 1],\n [119155, 119162, 1],\n [119275, 119295, 1],\n [119366, 119487, 1],\n [119508, 119519, 1],\n [119540, 119551, 1],\n [119639, 119647, 1],\n [119673, 119807, 1],\n [119893, 119965, 72],\n [119968, 119969, 1],\n [119971, 119972, 1],\n [119975, 119976, 1],\n [119981, 119994, 13],\n [119996, 120004, 8],\n [120070, 120075, 5],\n [120076, 120085, 9],\n [120093, 120122, 29],\n [120127, 120133, 6],\n [120135, 120137, 1],\n [120145, 120486, 341],\n [120487, 120780, 293],\n [120781, 121484, 703],\n [121485, 121498, 1],\n [121504, 121520, 16],\n [121521, 122623, 1],\n [122655, 122660, 1],\n [122667, 122879, 1],\n [122887, 122905, 18],\n [122906, 122914, 8],\n [122917, 122923, 6],\n [122924, 122927, 1],\n [122990, 123022, 1],\n [123024, 123135, 1],\n [123181, 123183, 1],\n [123198, 123199, 1],\n [123210, 123213, 1],\n [123216, 123535, 1],\n [123567, 123583, 1],\n [123642, 123646, 1],\n [123648, 124111, 1],\n [124154, 124895, 1],\n [124903, 124908, 5],\n [124911, 124927, 16],\n [125125, 125126, 1],\n [125143, 125183, 1],\n [125260, 125263, 1],\n [125274, 125277, 1],\n [125280, 126064, 1],\n [126133, 126208, 1],\n [126270, 126463, 1],\n [126468, 126496, 28],\n [126499, 126501, 2],\n [126502, 126504, 2],\n [126515, 126520, 5],\n [126522, 126524, 2],\n [126525, 126529, 1],\n [126531, 126534, 1],\n [126536, 126540, 2],\n [126544, 126547, 3],\n [126549, 126550, 1],\n [126552, 126560, 2],\n [126563, 126565, 2],\n [126566, 126571, 5],\n [126579, 126589, 5],\n [126591, 126602, 11],\n [126620, 126624, 1],\n [126628, 126634, 6],\n [126652, 126703, 1],\n [126706, 126975, 1],\n [127020, 127023, 1],\n [127124, 127135, 1],\n [127151, 127152, 1],\n [127168, 127184, 16],\n [127222, 127231, 1],\n [127406, 127461, 1],\n [127491, 127503, 1],\n [127548, 127551, 1],\n [127561, 127567, 1],\n [127570, 127583, 1],\n [127590, 127743, 1],\n [128728, 128731, 1],\n [128749, 128751, 1],\n [128765, 128767, 1],\n [128887, 128890, 1],\n [128986, 128991, 1],\n [129004, 129007, 1],\n [129009, 129023, 1],\n [129036, 129039, 1],\n [129096, 129103, 1],\n [129114, 129119, 1],\n [129160, 129167, 1],\n [129198, 129199, 1],\n [129202, 129279, 1],\n [129620, 129631, 1],\n [129646, 129647, 1],\n [129661, 129663, 1],\n [129673, 129679, 1],\n [129726, 129734, 8],\n [129735, 129741, 1],\n [129756, 129759, 1],\n [129769, 129775, 1],\n [129785, 129791, 1],\n [129939, 129995, 56],\n [129996, 130031, 1],\n [130042, 131071, 1],\n [173792, 173823, 1],\n [177978, 177983, 1],\n [178206, 178207, 1],\n [183970, 183983, 1],\n [191457, 194559, 1],\n [195102, 196607, 1],\n [201547, 201551, 1],\n [205744, 917759, 1],\n [918000, 1114111, 1]\n ]\n static Cc = [\n [0, 31, 1],\n [127, 159, 1]\n ]\n static Cf = [\n [173, 1536, 1363],\n [1537, 1541, 1],\n [1564, 1757, 193],\n [1807, 2192, 385],\n [2193, 2274, 81],\n [6158, 8203, 2045],\n [8204, 8207, 1],\n [8234, 8238, 1],\n [8288, 8292, 1],\n [8294, 8303, 1],\n [65279, 65529, 250],\n [65530, 65531, 1],\n [69821, 69837, 16],\n [78896, 78911, 1],\n [113824, 113827, 1],\n [119155, 119162, 1],\n [917505, 917536, 31],\n [917537, 917631, 1]\n ]\n static Co = [\n [57344, 63743, 1],\n [983040, 1048573, 1],\n [1048576, 1114109, 1]\n ]\n static Cs = [[55296, 57343, 1]]\n static L = [\n [65, 90, 1],\n [97, 122, 1],\n [170, 181, 11],\n [186, 192, 6],\n [193, 214, 1],\n [216, 246, 1],\n [248, 705, 1],\n [710, 721, 1],\n [736, 740, 1],\n [748, 750, 2],\n [880, 884, 1],\n [886, 887, 1],\n [890, 893, 1],\n [895, 902, 7],\n [904, 906, 1],\n [908, 910, 2],\n [911, 929, 1],\n [931, 1013, 1],\n [1015, 1153, 1],\n [1162, 1327, 1],\n [1329, 1366, 1],\n [1369, 1376, 7],\n [1377, 1416, 1],\n [1488, 1514, 1],\n [1519, 1522, 1],\n [1568, 1610, 1],\n [1646, 1647, 1],\n [1649, 1747, 1],\n [1749, 1765, 16],\n [1766, 1774, 8],\n [1775, 1786, 11],\n [1787, 1788, 1],\n [1791, 1808, 17],\n [1810, 1839, 1],\n [1869, 1957, 1],\n [1969, 1994, 25],\n [1995, 2026, 1],\n [2036, 2037, 1],\n [2042, 2048, 6],\n [2049, 2069, 1],\n [2074, 2084, 10],\n [2088, 2112, 24],\n [2113, 2136, 1],\n [2144, 2154, 1],\n [2160, 2183, 1],\n [2185, 2190, 1],\n [2208, 2249, 1],\n [2308, 2361, 1],\n [2365, 2384, 19],\n [2392, 2401, 1],\n [2417, 2432, 1],\n [2437, 2444, 1],\n [2447, 2448, 1],\n [2451, 2472, 1],\n [2474, 2480, 1],\n [2482, 2486, 4],\n [2487, 2489, 1],\n [2493, 2510, 17],\n [2524, 2525, 1],\n [2527, 2529, 1],\n [2544, 2545, 1],\n [2556, 2565, 9],\n [2566, 2570, 1],\n [2575, 2576, 1],\n [2579, 2600, 1],\n [2602, 2608, 1],\n [2610, 2611, 1],\n [2613, 2614, 1],\n [2616, 2617, 1],\n [2649, 2652, 1],\n [2654, 2674, 20],\n [2675, 2676, 1],\n [2693, 2701, 1],\n [2703, 2705, 1],\n [2707, 2728, 1],\n [2730, 2736, 1],\n [2738, 2739, 1],\n [2741, 2745, 1],\n [2749, 2768, 19],\n [2784, 2785, 1],\n [2809, 2821, 12],\n [2822, 2828, 1],\n [2831, 2832, 1],\n [2835, 2856, 1],\n [2858, 2864, 1],\n [2866, 2867, 1],\n [2869, 2873, 1],\n [2877, 2908, 31],\n [2909, 2911, 2],\n [2912, 2913, 1],\n [2929, 2947, 18],\n [2949, 2954, 1],\n [2958, 2960, 1],\n [2962, 2965, 1],\n [2969, 2970, 1],\n [2972, 2974, 2],\n [2975, 2979, 4],\n [2980, 2984, 4],\n [2985, 2986, 1],\n [2990, 3001, 1],\n [3024, 3077, 53],\n [3078, 3084, 1],\n [3086, 3088, 1],\n [3090, 3112, 1],\n [3114, 3129, 1],\n [3133, 3160, 27],\n [3161, 3162, 1],\n [3165, 3168, 3],\n [3169, 3200, 31],\n [3205, 3212, 1],\n [3214, 3216, 1],\n [3218, 3240, 1],\n [3242, 3251, 1],\n [3253, 3257, 1],\n [3261, 3293, 32],\n [3294, 3296, 2],\n [3297, 3313, 16],\n [3314, 3332, 18],\n [3333, 3340, 1],\n [3342, 3344, 1],\n [3346, 3386, 1],\n [3389, 3406, 17],\n [3412, 3414, 1],\n [3423, 3425, 1],\n [3450, 3455, 1],\n [3461, 3478, 1],\n [3482, 3505, 1],\n [3507, 3515, 1],\n [3517, 3520, 3],\n [3521, 3526, 1],\n [3585, 3632, 1],\n [3634, 3635, 1],\n [3648, 3654, 1],\n [3713, 3714, 1],\n [3716, 3718, 2],\n [3719, 3722, 1],\n [3724, 3747, 1],\n [3749, 3751, 2],\n [3752, 3760, 1],\n [3762, 3763, 1],\n [3773, 3776, 3],\n [3777, 3780, 1],\n [3782, 3804, 22],\n [3805, 3807, 1],\n [3840, 3904, 64],\n [3905, 3911, 1],\n [3913, 3948, 1],\n [3976, 3980, 1],\n [4096, 4138, 1],\n [4159, 4176, 17],\n [4177, 4181, 1],\n [4186, 4189, 1],\n [4193, 4197, 4],\n [4198, 4206, 8],\n [4207, 4208, 1],\n [4213, 4225, 1],\n [4238, 4256, 18],\n [4257, 4293, 1],\n [4295, 4301, 6],\n [4304, 4346, 1],\n [4348, 4680, 1],\n [4682, 4685, 1],\n [4688, 4694, 1],\n [4696, 4698, 2],\n [4699, 4701, 1],\n [4704, 4744, 1],\n [4746, 4749, 1],\n [4752, 4784, 1],\n [4786, 4789, 1],\n [4792, 4798, 1],\n [4800, 4802, 2],\n [4803, 4805, 1],\n [4808, 4822, 1],\n [4824, 4880, 1],\n [4882, 4885, 1],\n [4888, 4954, 1],\n [4992, 5007, 1],\n [5024, 5109, 1],\n [5112, 5117, 1],\n [5121, 5740, 1],\n [5743, 5759, 1],\n [5761, 5786, 1],\n [5792, 5866, 1],\n [5873, 5880, 1],\n [5888, 5905, 1],\n [5919, 5937, 1],\n [5952, 5969, 1],\n [5984, 5996, 1],\n [5998, 6000, 1],\n [6016, 6067, 1],\n [6103, 6108, 5],\n [6176, 6264, 1],\n [6272, 6276, 1],\n [6279, 6312, 1],\n [6314, 6320, 6],\n [6321, 6389, 1],\n [6400, 6430, 1],\n [6480, 6509, 1],\n [6512, 6516, 1],\n [6528, 6571, 1],\n [6576, 6601, 1],\n [6656, 6678, 1],\n [6688, 6740, 1],\n [6823, 6917, 94],\n [6918, 6963, 1],\n [6981, 6988, 1],\n [7043, 7072, 1],\n [7086, 7087, 1],\n [7098, 7141, 1],\n [7168, 7203, 1],\n [7245, 7247, 1],\n [7258, 7293, 1],\n [7296, 7304, 1],\n [7312, 7354, 1],\n [7357, 7359, 1],\n [7401, 7404, 1],\n [7406, 7411, 1],\n [7413, 7414, 1],\n [7418, 7424, 6],\n [7425, 7615, 1],\n [7680, 7957, 1],\n [7960, 7965, 1],\n [7968, 8005, 1],\n [8008, 8013, 1],\n [8016, 8023, 1],\n [8025, 8031, 2],\n [8032, 8061, 1],\n [8064, 8116, 1],\n [8118, 8124, 1],\n [8126, 8130, 4],\n [8131, 8132, 1],\n [8134, 8140, 1],\n [8144, 8147, 1],\n [8150, 8155, 1],\n [8160, 8172, 1],\n [8178, 8180, 1],\n [8182, 8188, 1],\n [8305, 8319, 14],\n [8336, 8348, 1],\n [8450, 8455, 5],\n [8458, 8467, 1],\n [8469, 8473, 4],\n [8474, 8477, 1],\n [8484, 8490, 2],\n [8491, 8493, 1],\n [8495, 8505, 1],\n [8508, 8511, 1],\n [8517, 8521, 1],\n [8526, 8579, 53],\n [8580, 11264, 2684],\n [11265, 11492, 1],\n [11499, 11502, 1],\n [11506, 11507, 1],\n [11520, 11557, 1],\n [11559, 11565, 6],\n [11568, 11623, 1],\n [11631, 11648, 17],\n [11649, 11670, 1],\n [11680, 11686, 1],\n [11688, 11694, 1],\n [11696, 11702, 1],\n [11704, 11710, 1],\n [11712, 11718, 1],\n [11720, 11726, 1],\n [11728, 11734, 1],\n [11736, 11742, 1],\n [11823, 12293, 470],\n [12294, 12337, 43],\n [12338, 12341, 1],\n [12347, 12348, 1],\n [12353, 12438, 1],\n [12445, 12447, 1],\n [12449, 12538, 1],\n [12540, 12543, 1],\n [12549, 12591, 1],\n [12593, 12686, 1],\n [12704, 12735, 1],\n [12784, 12799, 1],\n [13312, 19903, 1],\n [19968, 42124, 1],\n [42192, 42237, 1],\n [42240, 42508, 1],\n [42512, 42527, 1],\n [42538, 42539, 1],\n [42560, 42606, 1],\n [42623, 42653, 1],\n [42656, 42725, 1],\n [42775, 42783, 1],\n [42786, 42888, 1],\n [42891, 42954, 1],\n [42960, 42961, 1],\n [42963, 42965, 2],\n [42966, 42969, 1],\n [42994, 43009, 1],\n [43011, 43013, 1],\n [43015, 43018, 1],\n [43020, 43042, 1],\n [43072, 43123, 1],\n [43138, 43187, 1],\n [43250, 43255, 1],\n [43259, 43261, 2],\n [43262, 43274, 12],\n [43275, 43301, 1],\n [43312, 43334, 1],\n [43360, 43388, 1],\n [43396, 43442, 1],\n [43471, 43488, 17],\n [43489, 43492, 1],\n [43494, 43503, 1],\n [43514, 43518, 1],\n [43520, 43560, 1],\n [43584, 43586, 1],\n [43588, 43595, 1],\n [43616, 43638, 1],\n [43642, 43646, 4],\n [43647, 43695, 1],\n [43697, 43701, 4],\n [43702, 43705, 3],\n [43706, 43709, 1],\n [43712, 43714, 2],\n [43739, 43741, 1],\n [43744, 43754, 1],\n [43762, 43764, 1],\n [43777, 43782, 1],\n [43785, 43790, 1],\n [43793, 43798, 1],\n [43808, 43814, 1],\n [43816, 43822, 1],\n [43824, 43866, 1],\n [43868, 43881, 1],\n [43888, 44002, 1],\n [44032, 55203, 1],\n [55216, 55238, 1],\n [55243, 55291, 1],\n [63744, 64109, 1],\n [64112, 64217, 1],\n [64256, 64262, 1],\n [64275, 64279, 1],\n [64285, 64287, 2],\n [64288, 64296, 1],\n [64298, 64310, 1],\n [64312, 64316, 1],\n [64318, 64320, 2],\n [64321, 64323, 2],\n [64324, 64326, 2],\n [64327, 64433, 1],\n [64467, 64829, 1],\n [64848, 64911, 1],\n [64914, 64967, 1],\n [65008, 65019, 1],\n [65136, 65140, 1],\n [65142, 65276, 1],\n [65313, 65338, 1],\n [65345, 65370, 1],\n [65382, 65470, 1],\n [65474, 65479, 1],\n [65482, 65487, 1],\n [65490, 65495, 1],\n [65498, 65500, 1],\n [65536, 65547, 1],\n [65549, 65574, 1],\n [65576, 65594, 1],\n [65596, 65597, 1],\n [65599, 65613, 1],\n [65616, 65629, 1],\n [65664, 65786, 1],\n [66176, 66204, 1],\n [66208, 66256, 1],\n [66304, 66335, 1],\n [66349, 66368, 1],\n [66370, 66377, 1],\n [66384, 66421, 1],\n [66432, 66461, 1],\n [66464, 66499, 1],\n [66504, 66511, 1],\n [66560, 66717, 1],\n [66736, 66771, 1],\n [66776, 66811, 1],\n [66816, 66855, 1],\n [66864, 66915, 1],\n [66928, 66938, 1],\n [66940, 66954, 1],\n [66956, 66962, 1],\n [66964, 66965, 1],\n [66967, 66977, 1],\n [66979, 66993, 1],\n [66995, 67001, 1],\n [67003, 67004, 1],\n [67072, 67382, 1],\n [67392, 67413, 1],\n [67424, 67431, 1],\n [67456, 67461, 1],\n [67463, 67504, 1],\n [67506, 67514, 1],\n [67584, 67589, 1],\n [67592, 67594, 2],\n [67595, 67637, 1],\n [67639, 67640, 1],\n [67644, 67647, 3],\n [67648, 67669, 1],\n [67680, 67702, 1],\n [67712, 67742, 1],\n [67808, 67826, 1],\n [67828, 67829, 1],\n [67840, 67861, 1],\n [67872, 67897, 1],\n [67968, 68023, 1],\n [68030, 68031, 1],\n [68096, 68112, 16],\n [68113, 68115, 1],\n [68117, 68119, 1],\n [68121, 68149, 1],\n [68192, 68220, 1],\n [68224, 68252, 1],\n [68288, 68295, 1],\n [68297, 68324, 1],\n [68352, 68405, 1],\n [68416, 68437, 1],\n [68448, 68466, 1],\n [68480, 68497, 1],\n [68608, 68680, 1],\n [68736, 68786, 1],\n [68800, 68850, 1],\n [68864, 68899, 1],\n [69248, 69289, 1],\n [69296, 69297, 1],\n [69376, 69404, 1],\n [69415, 69424, 9],\n [69425, 69445, 1],\n [69488, 69505, 1],\n [69552, 69572, 1],\n [69600, 69622, 1],\n [69635, 69687, 1],\n [69745, 69746, 1],\n [69749, 69763, 14],\n [69764, 69807, 1],\n [69840, 69864, 1],\n [69891, 69926, 1],\n [69956, 69959, 3],\n [69968, 70002, 1],\n [70006, 70019, 13],\n [70020, 70066, 1],\n [70081, 70084, 1],\n [70106, 70108, 2],\n [70144, 70161, 1],\n [70163, 70187, 1],\n [70207, 70208, 1],\n [70272, 70278, 1],\n [70280, 70282, 2],\n [70283, 70285, 1],\n [70287, 70301, 1],\n [70303, 70312, 1],\n [70320, 70366, 1],\n [70405, 70412, 1],\n [70415, 70416, 1],\n [70419, 70440, 1],\n [70442, 70448, 1],\n [70450, 70451, 1],\n [70453, 70457, 1],\n [70461, 70480, 19],\n [70493, 70497, 1],\n [70656, 70708, 1],\n [70727, 70730, 1],\n [70751, 70753, 1],\n [70784, 70831, 1],\n [70852, 70853, 1],\n [70855, 71040, 185],\n [71041, 71086, 1],\n [71128, 71131, 1],\n [71168, 71215, 1],\n [71236, 71296, 60],\n [71297, 71338, 1],\n [71352, 71424, 72],\n [71425, 71450, 1],\n [71488, 71494, 1],\n [71680, 71723, 1],\n [71840, 71903, 1],\n [71935, 71942, 1],\n [71945, 71948, 3],\n [71949, 71955, 1],\n [71957, 71958, 1],\n [71960, 71983, 1],\n [71999, 72001, 2],\n [72096, 72103, 1],\n [72106, 72144, 1],\n [72161, 72163, 2],\n [72192, 72203, 11],\n [72204, 72242, 1],\n [72250, 72272, 22],\n [72284, 72329, 1],\n [72349, 72368, 19],\n [72369, 72440, 1],\n [72704, 72712, 1],\n [72714, 72750, 1],\n [72768, 72818, 50],\n [72819, 72847, 1],\n [72960, 72966, 1],\n [72968, 72969, 1],\n [72971, 73008, 1],\n [73030, 73056, 26],\n [73057, 73061, 1],\n [73063, 73064, 1],\n [73066, 73097, 1],\n [73112, 73440, 328],\n [73441, 73458, 1],\n [73474, 73476, 2],\n [73477, 73488, 1],\n [73490, 73523, 1],\n [73648, 73728, 80],\n [73729, 74649, 1],\n [74880, 75075, 1],\n [77712, 77808, 1],\n [77824, 78895, 1],\n [78913, 78918, 1],\n [82944, 83526, 1],\n [92160, 92728, 1],\n [92736, 92766, 1],\n [92784, 92862, 1],\n [92880, 92909, 1],\n [92928, 92975, 1],\n [92992, 92995, 1],\n [93027, 93047, 1],\n [93053, 93071, 1],\n [93760, 93823, 1],\n [93952, 94026, 1],\n [94032, 94099, 67],\n [94100, 94111, 1],\n [94176, 94177, 1],\n [94179, 94208, 29],\n [94209, 100343, 1],\n [100352, 101589, 1],\n [101632, 101640, 1],\n [110576, 110579, 1],\n [110581, 110587, 1],\n [110589, 110590, 1],\n [110592, 110882, 1],\n [110898, 110928, 30],\n [110929, 110930, 1],\n [110933, 110948, 15],\n [110949, 110951, 1],\n [110960, 111355, 1],\n [113664, 113770, 1],\n [113776, 113788, 1],\n [113792, 113800, 1],\n [113808, 113817, 1],\n [119808, 119892, 1],\n [119894, 119964, 1],\n [119966, 119967, 1],\n [119970, 119973, 3],\n [119974, 119977, 3],\n [119978, 119980, 1],\n [119982, 119993, 1],\n [119995, 119997, 2],\n [119998, 120003, 1],\n [120005, 120069, 1],\n [120071, 120074, 1],\n [120077, 120084, 1],\n [120086, 120092, 1],\n [120094, 120121, 1],\n [120123, 120126, 1],\n [120128, 120132, 1],\n [120134, 120138, 4],\n [120139, 120144, 1],\n [120146, 120485, 1],\n [120488, 120512, 1],\n [120514, 120538, 1],\n [120540, 120570, 1],\n [120572, 120596, 1],\n [120598, 120628, 1],\n [120630, 120654, 1],\n [120656, 120686, 1],\n [120688, 120712, 1],\n [120714, 120744, 1],\n [120746, 120770, 1],\n [120772, 120779, 1],\n [122624, 122654, 1],\n [122661, 122666, 1],\n [122928, 122989, 1],\n [123136, 123180, 1],\n [123191, 123197, 1],\n [123214, 123536, 322],\n [123537, 123565, 1],\n [123584, 123627, 1],\n [124112, 124139, 1],\n [124896, 124902, 1],\n [124904, 124907, 1],\n [124909, 124910, 1],\n [124912, 124926, 1],\n [124928, 125124, 1],\n [125184, 125251, 1],\n [125259, 126464, 1205],\n [126465, 126467, 1],\n [126469, 126495, 1],\n [126497, 126498, 1],\n [126500, 126503, 3],\n [126505, 126514, 1],\n [126516, 126519, 1],\n [126521, 126523, 2],\n [126530, 126535, 5],\n [126537, 126541, 2],\n [126542, 126543, 1],\n [126545, 126546, 1],\n [126548, 126551, 3],\n [126553, 126561, 2],\n [126562, 126564, 2],\n [126567, 126570, 1],\n [126572, 126578, 1],\n [126580, 126583, 1],\n [126585, 126588, 1],\n [126590, 126592, 2],\n [126593, 126601, 1],\n [126603, 126619, 1],\n [126625, 126627, 1],\n [126629, 126633, 1],\n [126635, 126651, 1],\n [131072, 173791, 1],\n [173824, 177977, 1],\n [177984, 178205, 1],\n [178208, 183969, 1],\n [183984, 191456, 1],\n [194560, 195101, 1],\n [196608, 201546, 1],\n [201552, 205743, 1]\n ]\n static foldL = [[837, 837, 1]]\n static Ll = [\n [97, 122, 1],\n [181, 223, 42],\n [224, 246, 1],\n [248, 255, 1],\n [257, 311, 2],\n [312, 328, 2],\n [329, 375, 2],\n [378, 382, 2],\n [383, 384, 1],\n [387, 389, 2],\n [392, 396, 4],\n [397, 402, 5],\n [405, 409, 4],\n [410, 411, 1],\n [414, 417, 3],\n [419, 421, 2],\n [424, 426, 2],\n [427, 429, 2],\n [432, 436, 4],\n [438, 441, 3],\n [442, 445, 3],\n [446, 447, 1],\n [454, 460, 3],\n [462, 476, 2],\n [477, 495, 2],\n [496, 499, 3],\n [501, 505, 4],\n [507, 563, 2],\n [564, 569, 1],\n [572, 575, 3],\n [576, 578, 2],\n [583, 591, 2],\n [592, 659, 1],\n [661, 687, 1],\n [881, 883, 2],\n [887, 891, 4],\n [892, 893, 1],\n [912, 940, 28],\n [941, 974, 1],\n [976, 977, 1],\n [981, 983, 1],\n [985, 1007, 2],\n [1008, 1011, 1],\n [1013, 1019, 3],\n [1020, 1072, 52],\n [1073, 1119, 1],\n [1121, 1153, 2],\n [1163, 1215, 2],\n [1218, 1230, 2],\n [1231, 1327, 2],\n [1376, 1416, 1],\n [4304, 4346, 1],\n [4349, 4351, 1],\n [5112, 5117, 1],\n [7296, 7304, 1],\n [7424, 7467, 1],\n [7531, 7543, 1],\n [7545, 7578, 1],\n [7681, 7829, 2],\n [7830, 7837, 1],\n [7839, 7935, 2],\n [7936, 7943, 1],\n [7952, 7957, 1],\n [7968, 7975, 1],\n [7984, 7991, 1],\n [8000, 8005, 1],\n [8016, 8023, 1],\n [8032, 8039, 1],\n [8048, 8061, 1],\n [8064, 8071, 1],\n [8080, 8087, 1],\n [8096, 8103, 1],\n [8112, 8116, 1],\n [8118, 8119, 1],\n [8126, 8130, 4],\n [8131, 8132, 1],\n [8134, 8135, 1],\n [8144, 8147, 1],\n [8150, 8151, 1],\n [8160, 8167, 1],\n [8178, 8180, 1],\n [8182, 8183, 1],\n [8458, 8462, 4],\n [8463, 8467, 4],\n [8495, 8505, 5],\n [8508, 8509, 1],\n [8518, 8521, 1],\n [8526, 8580, 54],\n [11312, 11359, 1],\n [11361, 11365, 4],\n [11366, 11372, 2],\n [11377, 11379, 2],\n [11380, 11382, 2],\n [11383, 11387, 1],\n [11393, 11491, 2],\n [11492, 11500, 8],\n [11502, 11507, 5],\n [11520, 11557, 1],\n [11559, 11565, 6],\n [42561, 42605, 2],\n [42625, 42651, 2],\n [42787, 42799, 2],\n [42800, 42801, 1],\n [42803, 42865, 2],\n [42866, 42872, 1],\n [42874, 42876, 2],\n [42879, 42887, 2],\n [42892, 42894, 2],\n [42897, 42899, 2],\n [42900, 42901, 1],\n [42903, 42921, 2],\n [42927, 42933, 6],\n [42935, 42947, 2],\n [42952, 42954, 2],\n [42961, 42969, 2],\n [42998, 43002, 4],\n [43824, 43866, 1],\n [43872, 43880, 1],\n [43888, 43967, 1],\n [64256, 64262, 1],\n [64275, 64279, 1],\n [65345, 65370, 1],\n [66600, 66639, 1],\n [66776, 66811, 1],\n [66967, 66977, 1],\n [66979, 66993, 1],\n [66995, 67001, 1],\n [67003, 67004, 1],\n [68800, 68850, 1],\n [71872, 71903, 1],\n [93792, 93823, 1],\n [119834, 119859, 1],\n [119886, 119892, 1],\n [119894, 119911, 1],\n [119938, 119963, 1],\n [119990, 119993, 1],\n [119995, 119997, 2],\n [119998, 120003, 1],\n [120005, 120015, 1],\n [120042, 120067, 1],\n [120094, 120119, 1],\n [120146, 120171, 1],\n [120198, 120223, 1],\n [120250, 120275, 1],\n [120302, 120327, 1],\n [120354, 120379, 1],\n [120406, 120431, 1],\n [120458, 120485, 1],\n [120514, 120538, 1],\n [120540, 120545, 1],\n [120572, 120596, 1],\n [120598, 120603, 1],\n [120630, 120654, 1],\n [120656, 120661, 1],\n [120688, 120712, 1],\n [120714, 120719, 1],\n [120746, 120770, 1],\n [120772, 120777, 1],\n [120779, 122624, 1845],\n [122625, 122633, 1],\n [122635, 122654, 1],\n [122661, 122666, 1],\n [125218, 125251, 1]\n ]\n static foldLl = [\n [65, 90, 1],\n [192, 214, 1],\n [216, 222, 1],\n [256, 302, 2],\n [306, 310, 2],\n [313, 327, 2],\n [330, 376, 2],\n [377, 381, 2],\n [385, 386, 1],\n [388, 390, 2],\n [391, 393, 2],\n [394, 395, 1],\n [398, 401, 1],\n [403, 404, 1],\n [406, 408, 1],\n [412, 413, 1],\n [415, 416, 1],\n [418, 422, 2],\n [423, 425, 2],\n [428, 430, 2],\n [431, 433, 2],\n [434, 435, 1],\n [437, 439, 2],\n [440, 444, 4],\n [452, 453, 1],\n [455, 456, 1],\n [458, 459, 1],\n [461, 475, 2],\n [478, 494, 2],\n [497, 498, 1],\n [500, 502, 2],\n [503, 504, 1],\n [506, 562, 2],\n [570, 571, 1],\n [573, 574, 1],\n [577, 579, 2],\n [580, 582, 1],\n [584, 590, 2],\n [837, 880, 43],\n [882, 886, 4],\n [895, 902, 7],\n [904, 906, 1],\n [908, 910, 2],\n [911, 913, 2],\n [914, 929, 1],\n [931, 939, 1],\n [975, 984, 9],\n [986, 1006, 2],\n [1012, 1015, 3],\n [1017, 1018, 1],\n [1021, 1071, 1],\n [1120, 1152, 2],\n [1162, 1216, 2],\n [1217, 1229, 2],\n [1232, 1326, 2],\n [1329, 1366, 1],\n [4256, 4293, 1],\n [4295, 4301, 6],\n [5024, 5109, 1],\n [7312, 7354, 1],\n [7357, 7359, 1],\n [7680, 7828, 2],\n [7838, 7934, 2],\n [7944, 7951, 1],\n [7960, 7965, 1],\n [7976, 7983, 1],\n [7992, 7999, 1],\n [8008, 8013, 1],\n [8025, 8031, 2],\n [8040, 8047, 1],\n [8072, 8079, 1],\n [8088, 8095, 1],\n [8104, 8111, 1],\n [8120, 8124, 1],\n [8136, 8140, 1],\n [8152, 8155, 1],\n [8168, 8172, 1],\n [8184, 8188, 1],\n [8486, 8490, 4],\n [8491, 8498, 7],\n [8579, 11264, 2685],\n [11265, 11311, 1],\n [11360, 11362, 2],\n [11363, 11364, 1],\n [11367, 11373, 2],\n [11374, 11376, 1],\n [11378, 11381, 3],\n [11390, 11392, 1],\n [11394, 11490, 2],\n [11499, 11501, 2],\n [11506, 42560, 31054],\n [42562, 42604, 2],\n [42624, 42650, 2],\n [42786, 42798, 2],\n [42802, 42862, 2],\n [42873, 42877, 2],\n [42878, 42886, 2],\n [42891, 42893, 2],\n [42896, 42898, 2],\n [42902, 42922, 2],\n [42923, 42926, 1],\n [42928, 42932, 1],\n [42934, 42948, 2],\n [42949, 42951, 1],\n [42953, 42960, 7],\n [42966, 42968, 2],\n [42997, 65313, 22316],\n [65314, 65338, 1],\n [66560, 66599, 1],\n [66736, 66771, 1],\n [66928, 66938, 1],\n [66940, 66954, 1],\n [66956, 66962, 1],\n [66964, 66965, 1],\n [68736, 68786, 1],\n [71840, 71871, 1],\n [93760, 93791, 1],\n [125184, 125217, 1]\n ]\n static Lm = [\n [688, 705, 1],\n [710, 721, 1],\n [736, 740, 1],\n [748, 750, 2],\n [884, 890, 6],\n [1369, 1600, 231],\n [1765, 1766, 1],\n [2036, 2037, 1],\n [2042, 2074, 32],\n [2084, 2088, 4],\n [2249, 2417, 168],\n [3654, 3782, 128],\n [4348, 6103, 1755],\n [6211, 6823, 612],\n [7288, 7293, 1],\n [7468, 7530, 1],\n [7544, 7579, 35],\n [7580, 7615, 1],\n [8305, 8319, 14],\n [8336, 8348, 1],\n [11388, 11389, 1],\n [11631, 11823, 192],\n [12293, 12337, 44],\n [12338, 12341, 1],\n [12347, 12445, 98],\n [12446, 12540, 94],\n [12541, 12542, 1],\n [40981, 42232, 1251],\n [42233, 42237, 1],\n [42508, 42623, 115],\n [42652, 42653, 1],\n [42775, 42783, 1],\n [42864, 42888, 24],\n [42994, 42996, 1],\n [43000, 43001, 1],\n [43471, 43494, 23],\n [43632, 43741, 109],\n [43763, 43764, 1],\n [43868, 43871, 1],\n [43881, 65392, 21511],\n [65438, 65439, 1],\n [67456, 67461, 1],\n [67463, 67504, 1],\n [67506, 67514, 1],\n [92992, 92995, 1],\n [94099, 94111, 1],\n [94176, 94177, 1],\n [94179, 110576, 16397],\n [110577, 110579, 1],\n [110581, 110587, 1],\n [110589, 110590, 1],\n [122928, 122989, 1],\n [123191, 123197, 1],\n [124139, 125259, 1120]\n ]\n static Lo = [\n [170, 186, 16],\n [443, 448, 5],\n [449, 451, 1],\n [660, 1488, 828],\n [1489, 1514, 1],\n [1519, 1522, 1],\n [1568, 1599, 1],\n [1601, 1610, 1],\n [1646, 1647, 1],\n [1649, 1747, 1],\n [1749, 1774, 25],\n [1775, 1786, 11],\n [1787, 1788, 1],\n [1791, 1808, 17],\n [1810, 1839, 1],\n [1869, 1957, 1],\n [1969, 1994, 25],\n [1995, 2026, 1],\n [2048, 2069, 1],\n [2112, 2136, 1],\n [2144, 2154, 1],\n [2160, 2183, 1],\n [2185, 2190, 1],\n [2208, 2248, 1],\n [2308, 2361, 1],\n [2365, 2384, 19],\n [2392, 2401, 1],\n [2418, 2432, 1],\n [2437, 2444, 1],\n [2447, 2448, 1],\n [2451, 2472, 1],\n [2474, 2480, 1],\n [2482, 2486, 4],\n [2487, 2489, 1],\n [2493, 2510, 17],\n [2524, 2525, 1],\n [2527, 2529, 1],\n [2544, 2545, 1],\n [2556, 2565, 9],\n [2566, 2570, 1],\n [2575, 2576, 1],\n [2579, 2600, 1],\n [2602, 2608, 1],\n [2610, 2611, 1],\n [2613, 2614, 1],\n [2616, 2617, 1],\n [2649, 2652, 1],\n [2654, 2674, 20],\n [2675, 2676, 1],\n [2693, 2701, 1],\n [2703, 2705, 1],\n [2707, 2728, 1],\n [2730, 2736, 1],\n [2738, 2739, 1],\n [2741, 2745, 1],\n [2749, 2768, 19],\n [2784, 2785, 1],\n [2809, 2821, 12],\n [2822, 2828, 1],\n [2831, 2832, 1],\n [2835, 2856, 1],\n [2858, 2864, 1],\n [2866, 2867, 1],\n [2869, 2873, 1],\n [2877, 2908, 31],\n [2909, 2911, 2],\n [2912, 2913, 1],\n [2929, 2947, 18],\n [2949, 2954, 1],\n [2958, 2960, 1],\n [2962, 2965, 1],\n [2969, 2970, 1],\n [2972, 2974, 2],\n [2975, 2979, 4],\n [2980, 2984, 4],\n [2985, 2986, 1],\n [2990, 3001, 1],\n [3024, 3077, 53],\n [3078, 3084, 1],\n [3086, 3088, 1],\n [3090, 3112, 1],\n [3114, 3129, 1],\n [3133, 3160, 27],\n [3161, 3162, 1],\n [3165, 3168, 3],\n [3169, 3200, 31],\n [3205, 3212, 1],\n [3214, 3216, 1],\n [3218, 3240, 1],\n [3242, 3251, 1],\n [3253, 3257, 1],\n [3261, 3293, 32],\n [3294, 3296, 2],\n [3297, 3313, 16],\n [3314, 3332, 18],\n [3333, 3340, 1],\n [3342, 3344, 1],\n [3346, 3386, 1],\n [3389, 3406, 17],\n [3412, 3414, 1],\n [3423, 3425, 1],\n [3450, 3455, 1],\n [3461, 3478, 1],\n [3482, 3505, 1],\n [3507, 3515, 1],\n [3517, 3520, 3],\n [3521, 3526, 1],\n [3585, 3632, 1],\n [3634, 3635, 1],\n [3648, 3653, 1],\n [3713, 3714, 1],\n [3716, 3718, 2],\n [3719, 3722, 1],\n [3724, 3747, 1],\n [3749, 3751, 2],\n [3752, 3760, 1],\n [3762, 3763, 1],\n [3773, 3776, 3],\n [3777, 3780, 1],\n [3804, 3807, 1],\n [3840, 3904, 64],\n [3905, 3911, 1],\n [3913, 3948, 1],\n [3976, 3980, 1],\n [4096, 4138, 1],\n [4159, 4176, 17],\n [4177, 4181, 1],\n [4186, 4189, 1],\n [4193, 4197, 4],\n [4198, 4206, 8],\n [4207, 4208, 1],\n [4213, 4225, 1],\n [4238, 4352, 114],\n [4353, 4680, 1],\n [4682, 4685, 1],\n [4688, 4694, 1],\n [4696, 4698, 2],\n [4699, 4701, 1],\n [4704, 4744, 1],\n [4746, 4749, 1],\n [4752, 4784, 1],\n [4786, 4789, 1],\n [4792, 4798, 1],\n [4800, 4802, 2],\n [4803, 4805, 1],\n [4808, 4822, 1],\n [4824, 4880, 1],\n [4882, 4885, 1],\n [4888, 4954, 1],\n [4992, 5007, 1],\n [5121, 5740, 1],\n [5743, 5759, 1],\n [5761, 5786, 1],\n [5792, 5866, 1],\n [5873, 5880, 1],\n [5888, 5905, 1],\n [5919, 5937, 1],\n [5952, 5969, 1],\n [5984, 5996, 1],\n [5998, 6000, 1],\n [6016, 6067, 1],\n [6108, 6176, 68],\n [6177, 6210, 1],\n [6212, 6264, 1],\n [6272, 6276, 1],\n [6279, 6312, 1],\n [6314, 6320, 6],\n [6321, 6389, 1],\n [6400, 6430, 1],\n [6480, 6509, 1],\n [6512, 6516, 1],\n [6528, 6571, 1],\n [6576, 6601, 1],\n [6656, 6678, 1],\n [6688, 6740, 1],\n [6917, 6963, 1],\n [6981, 6988, 1],\n [7043, 7072, 1],\n [7086, 7087, 1],\n [7098, 7141, 1],\n [7168, 7203, 1],\n [7245, 7247, 1],\n [7258, 7287, 1],\n [7401, 7404, 1],\n [7406, 7411, 1],\n [7413, 7414, 1],\n [7418, 8501, 1083],\n [8502, 8504, 1],\n [11568, 11623, 1],\n [11648, 11670, 1],\n [11680, 11686, 1],\n [11688, 11694, 1],\n [11696, 11702, 1],\n [11704, 11710, 1],\n [11712, 11718, 1],\n [11720, 11726, 1],\n [11728, 11734, 1],\n [11736, 11742, 1],\n [12294, 12348, 54],\n [12353, 12438, 1],\n [12447, 12449, 2],\n [12450, 12538, 1],\n [12543, 12549, 6],\n [12550, 12591, 1],\n [12593, 12686, 1],\n [12704, 12735, 1],\n [12784, 12799, 1],\n [13312, 19903, 1],\n [19968, 40980, 1],\n [40982, 42124, 1],\n [42192, 42231, 1],\n [42240, 42507, 1],\n [42512, 42527, 1],\n [42538, 42539, 1],\n [42606, 42656, 50],\n [42657, 42725, 1],\n [42895, 42999, 104],\n [43003, 43009, 1],\n [43011, 43013, 1],\n [43015, 43018, 1],\n [43020, 43042, 1],\n [43072, 43123, 1],\n [43138, 43187, 1],\n [43250, 43255, 1],\n [43259, 43261, 2],\n [43262, 43274, 12],\n [43275, 43301, 1],\n [43312, 43334, 1],\n [43360, 43388, 1],\n [43396, 43442, 1],\n [43488, 43492, 1],\n [43495, 43503, 1],\n [43514, 43518, 1],\n [43520, 43560, 1],\n [43584, 43586, 1],\n [43588, 43595, 1],\n [43616, 43631, 1],\n [43633, 43638, 1],\n [43642, 43646, 4],\n [43647, 43695, 1],\n [43697, 43701, 4],\n [43702, 43705, 3],\n [43706, 43709, 1],\n [43712, 43714, 2],\n [43739, 43740, 1],\n [43744, 43754, 1],\n [43762, 43777, 15],\n [43778, 43782, 1],\n [43785, 43790, 1],\n [43793, 43798, 1],\n [43808, 43814, 1],\n [43816, 43822, 1],\n [43968, 44002, 1],\n [44032, 55203, 1],\n [55216, 55238, 1],\n [55243, 55291, 1],\n [63744, 64109, 1],\n [64112, 64217, 1],\n [64285, 64287, 2],\n [64288, 64296, 1],\n [64298, 64310, 1],\n [64312, 64316, 1],\n [64318, 64320, 2],\n [64321, 64323, 2],\n [64324, 64326, 2],\n [64327, 64433, 1],\n [64467, 64829, 1],\n [64848, 64911, 1],\n [64914, 64967, 1],\n [65008, 65019, 1],\n [65136, 65140, 1],\n [65142, 65276, 1],\n [65382, 65391, 1],\n [65393, 65437, 1],\n [65440, 65470, 1],\n [65474, 65479, 1],\n [65482, 65487, 1],\n [65490, 65495, 1],\n [65498, 65500, 1],\n [65536, 65547, 1],\n [65549, 65574, 1],\n [65576, 65594, 1],\n [65596, 65597, 1],\n [65599, 65613, 1],\n [65616, 65629, 1],\n [65664, 65786, 1],\n [66176, 66204, 1],\n [66208, 66256, 1],\n [66304, 66335, 1],\n [66349, 66368, 1],\n [66370, 66377, 1],\n [66384, 66421, 1],\n [66432, 66461, 1],\n [66464, 66499, 1],\n [66504, 66511, 1],\n [66640, 66717, 1],\n [66816, 66855, 1],\n [66864, 66915, 1],\n [67072, 67382, 1],\n [67392, 67413, 1],\n [67424, 67431, 1],\n [67584, 67589, 1],\n [67592, 67594, 2],\n [67595, 67637, 1],\n [67639, 67640, 1],\n [67644, 67647, 3],\n [67648, 67669, 1],\n [67680, 67702, 1],\n [67712, 67742, 1],\n [67808, 67826, 1],\n [67828, 67829, 1],\n [67840, 67861, 1],\n [67872, 67897, 1],\n [67968, 68023, 1],\n [68030, 68031, 1],\n [68096, 68112, 16],\n [68113, 68115, 1],\n [68117, 68119, 1],\n [68121, 68149, 1],\n [68192, 68220, 1],\n [68224, 68252, 1],\n [68288, 68295, 1],\n [68297, 68324, 1],\n [68352, 68405, 1],\n [68416, 68437, 1],\n [68448, 68466, 1],\n [68480, 68497, 1],\n [68608, 68680, 1],\n [68864, 68899, 1],\n [69248, 69289, 1],\n [69296, 69297, 1],\n [69376, 69404, 1],\n [69415, 69424, 9],\n [69425, 69445, 1],\n [69488, 69505, 1],\n [69552, 69572, 1],\n [69600, 69622, 1],\n [69635, 69687, 1],\n [69745, 69746, 1],\n [69749, 69763, 14],\n [69764, 69807, 1],\n [69840, 69864, 1],\n [69891, 69926, 1],\n [69956, 69959, 3],\n [69968, 70002, 1],\n [70006, 70019, 13],\n [70020, 70066, 1],\n [70081, 70084, 1],\n [70106, 70108, 2],\n [70144, 70161, 1],\n [70163, 70187, 1],\n [70207, 70208, 1],\n [70272, 70278, 1],\n [70280, 70282, 2],\n [70283, 70285, 1],\n [70287, 70301, 1],\n [70303, 70312, 1],\n [70320, 70366, 1],\n [70405, 70412, 1],\n [70415, 70416, 1],\n [70419, 70440, 1],\n [70442, 70448, 1],\n [70450, 70451, 1],\n [70453, 70457, 1],\n [70461, 70480, 19],\n [70493, 70497, 1],\n [70656, 70708, 1],\n [70727, 70730, 1],\n [70751, 70753, 1],\n [70784, 70831, 1],\n [70852, 70853, 1],\n [70855, 71040, 185],\n [71041, 71086, 1],\n [71128, 71131, 1],\n [71168, 71215, 1],\n [71236, 71296, 60],\n [71297, 71338, 1],\n [71352, 71424, 72],\n [71425, 71450, 1],\n [71488, 71494, 1],\n [71680, 71723, 1],\n [71935, 71942, 1],\n [71945, 71948, 3],\n [71949, 71955, 1],\n [71957, 71958, 1],\n [71960, 71983, 1],\n [71999, 72001, 2],\n [72096, 72103, 1],\n [72106, 72144, 1],\n [72161, 72163, 2],\n [72192, 72203, 11],\n [72204, 72242, 1],\n [72250, 72272, 22],\n [72284, 72329, 1],\n [72349, 72368, 19],\n [72369, 72440, 1],\n [72704, 72712, 1],\n [72714, 72750, 1],\n [72768, 72818, 50],\n [72819, 72847, 1],\n [72960, 72966, 1],\n [72968, 72969, 1],\n [72971, 73008, 1],\n [73030, 73056, 26],\n [73057, 73061, 1],\n [73063, 73064, 1],\n [73066, 73097, 1],\n [73112, 73440, 328],\n [73441, 73458, 1],\n [73474, 73476, 2],\n [73477, 73488, 1],\n [73490, 73523, 1],\n [73648, 73728, 80],\n [73729, 74649, 1],\n [74880, 75075, 1],\n [77712, 77808, 1],\n [77824, 78895, 1],\n [78913, 78918, 1],\n [82944, 83526, 1],\n [92160, 92728, 1],\n [92736, 92766, 1],\n [92784, 92862, 1],\n [92880, 92909, 1],\n [92928, 92975, 1],\n [93027, 93047, 1],\n [93053, 93071, 1],\n [93952, 94026, 1],\n [94032, 94208, 176],\n [94209, 100343, 1],\n [100352, 101589, 1],\n [101632, 101640, 1],\n [110592, 110882, 1],\n [110898, 110928, 30],\n [110929, 110930, 1],\n [110933, 110948, 15],\n [110949, 110951, 1],\n [110960, 111355, 1],\n [113664, 113770, 1],\n [113776, 113788, 1],\n [113792, 113800, 1],\n [113808, 113817, 1],\n [122634, 123136, 502],\n [123137, 123180, 1],\n [123214, 123536, 322],\n [123537, 123565, 1],\n [123584, 123627, 1],\n [124112, 124138, 1],\n [124896, 124902, 1],\n [124904, 124907, 1],\n [124909, 124910, 1],\n [124912, 124926, 1],\n [124928, 125124, 1],\n [126464, 126467, 1],\n [126469, 126495, 1],\n [126497, 126498, 1],\n [126500, 126503, 3],\n [126505, 126514, 1],\n [126516, 126519, 1],\n [126521, 126523, 2],\n [126530, 126535, 5],\n [126537, 126541, 2],\n [126542, 126543, 1],\n [126545, 126546, 1],\n [126548, 126551, 3],\n [126553, 126561, 2],\n [126562, 126564, 2],\n [126567, 126570, 1],\n [126572, 126578, 1],\n [126580, 126583, 1],\n [126585, 126588, 1],\n [126590, 126592, 2],\n [126593, 126601, 1],\n [126603, 126619, 1],\n [126625, 126627, 1],\n [126629, 126633, 1],\n [126635, 126651, 1],\n [131072, 173791, 1],\n [173824, 177977, 1],\n [177984, 178205, 1],\n [178208, 183969, 1],\n [183984, 191456, 1],\n [194560, 195101, 1],\n [196608, 201546, 1],\n [201552, 205743, 1]\n ]\n static Lt = [\n [453, 459, 3],\n [498, 8072, 7574],\n [8073, 8079, 1],\n [8088, 8095, 1],\n [8104, 8111, 1],\n [8124, 8140, 16],\n [8188, 8188, 1]\n ]\n static foldLt = [\n [452, 454, 2],\n [455, 457, 2],\n [458, 460, 2],\n [497, 499, 2],\n [8064, 8071, 1],\n [8080, 8087, 1],\n [8096, 8103, 1],\n [8115, 8131, 16],\n [8179, 8179, 1]\n ]\n static Lu = [\n [65, 90, 1],\n [192, 214, 1],\n [216, 222, 1],\n [256, 310, 2],\n [313, 327, 2],\n [330, 376, 2],\n [377, 381, 2],\n [385, 386, 1],\n [388, 390, 2],\n [391, 393, 2],\n [394, 395, 1],\n [398, 401, 1],\n [403, 404, 1],\n [406, 408, 1],\n [412, 413, 1],\n [415, 416, 1],\n [418, 422, 2],\n [423, 425, 2],\n [428, 430, 2],\n [431, 433, 2],\n [434, 435, 1],\n [437, 439, 2],\n [440, 444, 4],\n [452, 461, 3],\n [463, 475, 2],\n [478, 494, 2],\n [497, 500, 3],\n [502, 504, 1],\n [506, 562, 2],\n [570, 571, 1],\n [573, 574, 1],\n [577, 579, 2],\n [580, 582, 1],\n [584, 590, 2],\n [880, 882, 2],\n [886, 895, 9],\n [902, 904, 2],\n [905, 906, 1],\n [908, 910, 2],\n [911, 913, 2],\n [914, 929, 1],\n [931, 939, 1],\n [975, 978, 3],\n [979, 980, 1],\n [984, 1006, 2],\n [1012, 1015, 3],\n [1017, 1018, 1],\n [1021, 1071, 1],\n [1120, 1152, 2],\n [1162, 1216, 2],\n [1217, 1229, 2],\n [1232, 1326, 2],\n [1329, 1366, 1],\n [4256, 4293, 1],\n [4295, 4301, 6],\n [5024, 5109, 1],\n [7312, 7354, 1],\n [7357, 7359, 1],\n [7680, 7828, 2],\n [7838, 7934, 2],\n [7944, 7951, 1],\n [7960, 7965, 1],\n [7976, 7983, 1],\n [7992, 7999, 1],\n [8008, 8013, 1],\n [8025, 8031, 2],\n [8040, 8047, 1],\n [8120, 8123, 1],\n [8136, 8139, 1],\n [8152, 8155, 1],\n [8168, 8172, 1],\n [8184, 8187, 1],\n [8450, 8455, 5],\n [8459, 8461, 1],\n [8464, 8466, 1],\n [8469, 8473, 4],\n [8474, 8477, 1],\n [8484, 8490, 2],\n [8491, 8493, 1],\n [8496, 8499, 1],\n [8510, 8511, 1],\n [8517, 8579, 62],\n [11264, 11311, 1],\n [11360, 11362, 2],\n [11363, 11364, 1],\n [11367, 11373, 2],\n [11374, 11376, 1],\n [11378, 11381, 3],\n [11390, 11392, 1],\n [11394, 11490, 2],\n [11499, 11501, 2],\n [11506, 42560, 31054],\n [42562, 42604, 2],\n [42624, 42650, 2],\n [42786, 42798, 2],\n [42802, 42862, 2],\n [42873, 42877, 2],\n [42878, 42886, 2],\n [42891, 42893, 2],\n [42896, 42898, 2],\n [42902, 42922, 2],\n [42923, 42926, 1],\n [42928, 42932, 1],\n [42934, 42948, 2],\n [42949, 42951, 1],\n [42953, 42960, 7],\n [42966, 42968, 2],\n [42997, 65313, 22316],\n [65314, 65338, 1],\n [66560, 66599, 1],\n [66736, 66771, 1],\n [66928, 66938, 1],\n [66940, 66954, 1],\n [66956, 66962, 1],\n [66964, 66965, 1],\n [68736, 68786, 1],\n [71840, 71871, 1],\n [93760, 93791, 1],\n [119808, 119833, 1],\n [119860, 119885, 1],\n [119912, 119937, 1],\n [119964, 119966, 2],\n [119967, 119973, 3],\n [119974, 119977, 3],\n [119978, 119980, 1],\n [119982, 119989, 1],\n [120016, 120041, 1],\n [120068, 120069, 1],\n [120071, 120074, 1],\n [120077, 120084, 1],\n [120086, 120092, 1],\n [120120, 120121, 1],\n [120123, 120126, 1],\n [120128, 120132, 1],\n [120134, 120138, 4],\n [120139, 120144, 1],\n [120172, 120197, 1],\n [120224, 120249, 1],\n [120276, 120301, 1],\n [120328, 120353, 1],\n [120380, 120405, 1],\n [120432, 120457, 1],\n [120488, 120512, 1],\n [120546, 120570, 1],\n [120604, 120628, 1],\n [120662, 120686, 1],\n [120720, 120744, 1],\n [120778, 125184, 4406],\n [125185, 125217, 1]\n ]\n static Upper = this.Lu\n static foldLu = [\n [97, 122, 1],\n [181, 223, 42],\n [224, 246, 1],\n [248, 255, 1],\n [257, 303, 2],\n [307, 311, 2],\n [314, 328, 2],\n [331, 375, 2],\n [378, 382, 2],\n [383, 384, 1],\n [387, 389, 2],\n [392, 396, 4],\n [402, 405, 3],\n [409, 410, 1],\n [414, 417, 3],\n [419, 421, 2],\n [424, 429, 5],\n [432, 436, 4],\n [438, 441, 3],\n [445, 447, 2],\n [453, 454, 1],\n [456, 457, 1],\n [459, 460, 1],\n [462, 476, 2],\n [477, 495, 2],\n [498, 499, 1],\n [501, 505, 4],\n [507, 543, 2],\n [547, 563, 2],\n [572, 575, 3],\n [576, 578, 2],\n [583, 591, 2],\n [592, 596, 1],\n [598, 599, 1],\n [601, 603, 2],\n [604, 608, 4],\n [609, 613, 2],\n [614, 616, 2],\n [617, 620, 1],\n [623, 625, 2],\n [626, 629, 3],\n [637, 640, 3],\n [642, 643, 1],\n [647, 652, 1],\n [658, 669, 11],\n [670, 837, 167],\n [881, 883, 2],\n [887, 891, 4],\n [892, 893, 1],\n [940, 943, 1],\n [945, 974, 1],\n [976, 977, 1],\n [981, 983, 1],\n [985, 1007, 2],\n [1008, 1011, 1],\n [1013, 1019, 3],\n [1072, 1119, 1],\n [1121, 1153, 2],\n [1163, 1215, 2],\n [1218, 1230, 2],\n [1231, 1327, 2],\n [1377, 1414, 1],\n [4304, 4346, 1],\n [4349, 4351, 1],\n [5112, 5117, 1],\n [7296, 7304, 1],\n [7545, 7549, 4],\n [7566, 7681, 115],\n [7683, 7829, 2],\n [7835, 7841, 6],\n [7843, 7935, 2],\n [7936, 7943, 1],\n [7952, 7957, 1],\n [7968, 7975, 1],\n [7984, 7991, 1],\n [8000, 8005, 1],\n [8017, 8023, 2],\n [8032, 8039, 1],\n [8048, 8061, 1],\n [8112, 8113, 1],\n [8126, 8144, 18],\n [8145, 8160, 15],\n [8161, 8165, 4],\n [8526, 8580, 54],\n [11312, 11359, 1],\n [11361, 11365, 4],\n [11366, 11372, 2],\n [11379, 11382, 3],\n [11393, 11491, 2],\n [11500, 11502, 2],\n [11507, 11520, 13],\n [11521, 11557, 1],\n [11559, 11565, 6],\n [42561, 42605, 2],\n [42625, 42651, 2],\n [42787, 42799, 2],\n [42803, 42863, 2],\n [42874, 42876, 2],\n [42879, 42887, 2],\n [42892, 42897, 5],\n [42899, 42900, 1],\n [42903, 42921, 2],\n [42933, 42947, 2],\n [42952, 42954, 2],\n [42961, 42967, 6],\n [42969, 42998, 29],\n [43859, 43888, 29],\n [43889, 43967, 1],\n [65345, 65370, 1],\n [66600, 66639, 1],\n [66776, 66811, 1],\n [66967, 66977, 1],\n [66979, 66993, 1],\n [66995, 67001, 1],\n [67003, 67004, 1],\n [68800, 68850, 1],\n [71872, 71903, 1],\n [93792, 93823, 1],\n [125218, 125251, 1]\n ]\n static M = [\n [768, 879, 1],\n [1155, 1161, 1],\n [1425, 1469, 1],\n [1471, 1473, 2],\n [1474, 1476, 2],\n [1477, 1479, 2],\n [1552, 1562, 1],\n [1611, 1631, 1],\n [1648, 1750, 102],\n [1751, 1756, 1],\n [1759, 1764, 1],\n [1767, 1768, 1],\n [1770, 1773, 1],\n [1809, 1840, 31],\n [1841, 1866, 1],\n [1958, 1968, 1],\n [2027, 2035, 1],\n [2045, 2070, 25],\n [2071, 2073, 1],\n [2075, 2083, 1],\n [2085, 2087, 1],\n [2089, 2093, 1],\n [2137, 2139, 1],\n [2200, 2207, 1],\n [2250, 2273, 1],\n [2275, 2307, 1],\n [2362, 2364, 1],\n [2366, 2383, 1],\n [2385, 2391, 1],\n [2402, 2403, 1],\n [2433, 2435, 1],\n [2492, 2494, 2],\n [2495, 2500, 1],\n [2503, 2504, 1],\n [2507, 2509, 1],\n [2519, 2530, 11],\n [2531, 2558, 27],\n [2561, 2563, 1],\n [2620, 2622, 2],\n [2623, 2626, 1],\n [2631, 2632, 1],\n [2635, 2637, 1],\n [2641, 2672, 31],\n [2673, 2677, 4],\n [2689, 2691, 1],\n [2748, 2750, 2],\n [2751, 2757, 1],\n [2759, 2761, 1],\n [2763, 2765, 1],\n [2786, 2787, 1],\n [2810, 2815, 1],\n [2817, 2819, 1],\n [2876, 2878, 2],\n [2879, 2884, 1],\n [2887, 2888, 1],\n [2891, 2893, 1],\n [2901, 2903, 1],\n [2914, 2915, 1],\n [2946, 3006, 60],\n [3007, 3010, 1],\n [3014, 3016, 1],\n [3018, 3021, 1],\n [3031, 3072, 41],\n [3073, 3076, 1],\n [3132, 3134, 2],\n [3135, 3140, 1],\n [3142, 3144, 1],\n [3146, 3149, 1],\n [3157, 3158, 1],\n [3170, 3171, 1],\n [3201, 3203, 1],\n [3260, 3262, 2],\n [3263, 3268, 1],\n [3270, 3272, 1],\n [3274, 3277, 1],\n [3285, 3286, 1],\n [3298, 3299, 1],\n [3315, 3328, 13],\n [3329, 3331, 1],\n [3387, 3388, 1],\n [3390, 3396, 1],\n [3398, 3400, 1],\n [3402, 3405, 1],\n [3415, 3426, 11],\n [3427, 3457, 30],\n [3458, 3459, 1],\n [3530, 3535, 5],\n [3536, 3540, 1],\n [3542, 3544, 2],\n [3545, 3551, 1],\n [3570, 3571, 1],\n [3633, 3636, 3],\n [3637, 3642, 1],\n [3655, 3662, 1],\n [3761, 3764, 3],\n [3765, 3772, 1],\n [3784, 3790, 1],\n [3864, 3865, 1],\n [3893, 3897, 2],\n [3902, 3903, 1],\n [3953, 3972, 1],\n [3974, 3975, 1],\n [3981, 3991, 1],\n [3993, 4028, 1],\n [4038, 4139, 101],\n [4140, 4158, 1],\n [4182, 4185, 1],\n [4190, 4192, 1],\n [4194, 4196, 1],\n [4199, 4205, 1],\n [4209, 4212, 1],\n [4226, 4237, 1],\n [4239, 4250, 11],\n [4251, 4253, 1],\n [4957, 4959, 1],\n [5906, 5909, 1],\n [5938, 5940, 1],\n [5970, 5971, 1],\n [6002, 6003, 1],\n [6068, 6099, 1],\n [6109, 6155, 46],\n [6156, 6157, 1],\n [6159, 6277, 118],\n [6278, 6313, 35],\n [6432, 6443, 1],\n [6448, 6459, 1],\n [6679, 6683, 1],\n [6741, 6750, 1],\n [6752, 6780, 1],\n [6783, 6832, 49],\n [6833, 6862, 1],\n [6912, 6916, 1],\n [6964, 6980, 1],\n [7019, 7027, 1],\n [7040, 7042, 1],\n [7073, 7085, 1],\n [7142, 7155, 1],\n [7204, 7223, 1],\n [7376, 7378, 1],\n [7380, 7400, 1],\n [7405, 7412, 7],\n [7415, 7417, 1],\n [7616, 7679, 1],\n [8400, 8432, 1],\n [11503, 11505, 1],\n [11647, 11744, 97],\n [11745, 11775, 1],\n [12330, 12335, 1],\n [12441, 12442, 1],\n [42607, 42610, 1],\n [42612, 42621, 1],\n [42654, 42655, 1],\n [42736, 42737, 1],\n [43010, 43014, 4],\n [43019, 43043, 24],\n [43044, 43047, 1],\n [43052, 43136, 84],\n [43137, 43188, 51],\n [43189, 43205, 1],\n [43232, 43249, 1],\n [43263, 43302, 39],\n [43303, 43309, 1],\n [43335, 43347, 1],\n [43392, 43395, 1],\n [43443, 43456, 1],\n [43493, 43561, 68],\n [43562, 43574, 1],\n [43587, 43596, 9],\n [43597, 43643, 46],\n [43644, 43645, 1],\n [43696, 43698, 2],\n [43699, 43700, 1],\n [43703, 43704, 1],\n [43710, 43711, 1],\n [43713, 43755, 42],\n [43756, 43759, 1],\n [43765, 43766, 1],\n [44003, 44010, 1],\n [44012, 44013, 1],\n [64286, 65024, 738],\n [65025, 65039, 1],\n [65056, 65071, 1],\n [66045, 66272, 227],\n [66422, 66426, 1],\n [68097, 68099, 1],\n [68101, 68102, 1],\n [68108, 68111, 1],\n [68152, 68154, 1],\n [68159, 68325, 166],\n [68326, 68900, 574],\n [68901, 68903, 1],\n [69291, 69292, 1],\n [69373, 69375, 1],\n [69446, 69456, 1],\n [69506, 69509, 1],\n [69632, 69634, 1],\n [69688, 69702, 1],\n [69744, 69747, 3],\n [69748, 69759, 11],\n [69760, 69762, 1],\n [69808, 69818, 1],\n [69826, 69888, 62],\n [69889, 69890, 1],\n [69927, 69940, 1],\n [69957, 69958, 1],\n [70003, 70016, 13],\n [70017, 70018, 1],\n [70067, 70080, 1],\n [70089, 70092, 1],\n [70094, 70095, 1],\n [70188, 70199, 1],\n [70206, 70209, 3],\n [70367, 70378, 1],\n [70400, 70403, 1],\n [70459, 70460, 1],\n [70462, 70468, 1],\n [70471, 70472, 1],\n [70475, 70477, 1],\n [70487, 70498, 11],\n [70499, 70502, 3],\n [70503, 70508, 1],\n [70512, 70516, 1],\n [70709, 70726, 1],\n [70750, 70832, 82],\n [70833, 70851, 1],\n [71087, 71093, 1],\n [71096, 71104, 1],\n [71132, 71133, 1],\n [71216, 71232, 1],\n [71339, 71351, 1],\n [71453, 71467, 1],\n [71724, 71738, 1],\n [71984, 71989, 1],\n [71991, 71992, 1],\n [71995, 71998, 1],\n [72000, 72002, 2],\n [72003, 72145, 142],\n [72146, 72151, 1],\n [72154, 72160, 1],\n [72164, 72193, 29],\n [72194, 72202, 1],\n [72243, 72249, 1],\n [72251, 72254, 1],\n [72263, 72273, 10],\n [72274, 72283, 1],\n [72330, 72345, 1],\n [72751, 72758, 1],\n [72760, 72767, 1],\n [72850, 72871, 1],\n [72873, 72886, 1],\n [73009, 73014, 1],\n [73018, 73020, 2],\n [73021, 73023, 2],\n [73024, 73029, 1],\n [73031, 73098, 67],\n [73099, 73102, 1],\n [73104, 73105, 1],\n [73107, 73111, 1],\n [73459, 73462, 1],\n [73472, 73473, 1],\n [73475, 73524, 49],\n [73525, 73530, 1],\n [73534, 73538, 1],\n [78912, 78919, 7],\n [78920, 78933, 1],\n [92912, 92916, 1],\n [92976, 92982, 1],\n [94031, 94033, 2],\n [94034, 94087, 1],\n [94095, 94098, 1],\n [94180, 94192, 12],\n [94193, 113821, 19628],\n [113822, 118528, 4706],\n [118529, 118573, 1],\n [118576, 118598, 1],\n [119141, 119145, 1],\n [119149, 119154, 1],\n [119163, 119170, 1],\n [119173, 119179, 1],\n [119210, 119213, 1],\n [119362, 119364, 1],\n [121344, 121398, 1],\n [121403, 121452, 1],\n [121461, 121476, 15],\n [121499, 121503, 1],\n [121505, 121519, 1],\n [122880, 122886, 1],\n [122888, 122904, 1],\n [122907, 122913, 1],\n [122915, 122916, 1],\n [122918, 122922, 1],\n [123023, 123184, 161],\n [123185, 123190, 1],\n [123566, 123628, 62],\n [123629, 123631, 1],\n [124140, 124143, 1],\n [125136, 125142, 1],\n [125252, 125258, 1],\n [917760, 917999, 1]\n ]\n static foldM = [\n [921, 953, 32],\n [8126, 8126, 1]\n ]\n static Mc = [\n [2307, 2363, 56],\n [2366, 2368, 1],\n [2377, 2380, 1],\n [2382, 2383, 1],\n [2434, 2435, 1],\n [2494, 2496, 1],\n [2503, 2504, 1],\n [2507, 2508, 1],\n [2519, 2563, 44],\n [2622, 2624, 1],\n [2691, 2750, 59],\n [2751, 2752, 1],\n [2761, 2763, 2],\n [2764, 2818, 54],\n [2819, 2878, 59],\n [2880, 2887, 7],\n [2888, 2891, 3],\n [2892, 2903, 11],\n [3006, 3007, 1],\n [3009, 3010, 1],\n [3014, 3016, 1],\n [3018, 3020, 1],\n [3031, 3073, 42],\n [3074, 3075, 1],\n [3137, 3140, 1],\n [3202, 3203, 1],\n [3262, 3264, 2],\n [3265, 3268, 1],\n [3271, 3272, 1],\n [3274, 3275, 1],\n [3285, 3286, 1],\n [3315, 3330, 15],\n [3331, 3390, 59],\n [3391, 3392, 1],\n [3398, 3400, 1],\n [3402, 3404, 1],\n [3415, 3458, 43],\n [3459, 3535, 76],\n [3536, 3537, 1],\n [3544, 3551, 1],\n [3570, 3571, 1],\n [3902, 3903, 1],\n [3967, 4139, 172],\n [4140, 4145, 5],\n [4152, 4155, 3],\n [4156, 4182, 26],\n [4183, 4194, 11],\n [4195, 4196, 1],\n [4199, 4205, 1],\n [4227, 4228, 1],\n [4231, 4236, 1],\n [4239, 4250, 11],\n [4251, 4252, 1],\n [5909, 5940, 31],\n [6070, 6078, 8],\n [6079, 6085, 1],\n [6087, 6088, 1],\n [6435, 6438, 1],\n [6441, 6443, 1],\n [6448, 6449, 1],\n [6451, 6456, 1],\n [6681, 6682, 1],\n [6741, 6743, 2],\n [6753, 6755, 2],\n [6756, 6765, 9],\n [6766, 6770, 1],\n [6916, 6965, 49],\n [6971, 6973, 2],\n [6974, 6977, 1],\n [6979, 6980, 1],\n [7042, 7073, 31],\n [7078, 7079, 1],\n [7082, 7143, 61],\n [7146, 7148, 1],\n [7150, 7154, 4],\n [7155, 7204, 49],\n [7205, 7211, 1],\n [7220, 7221, 1],\n [7393, 7415, 22],\n [12334, 12335, 1],\n [43043, 43044, 1],\n [43047, 43136, 89],\n [43137, 43188, 51],\n [43189, 43203, 1],\n [43346, 43347, 1],\n [43395, 43444, 49],\n [43445, 43450, 5],\n [43451, 43454, 3],\n [43455, 43456, 1],\n [43567, 43568, 1],\n [43571, 43572, 1],\n [43597, 43643, 46],\n [43645, 43755, 110],\n [43758, 43759, 1],\n [43765, 44003, 238],\n [44004, 44006, 2],\n [44007, 44009, 2],\n [44010, 44012, 2],\n [69632, 69634, 2],\n [69762, 69808, 46],\n [69809, 69810, 1],\n [69815, 69816, 1],\n [69932, 69957, 25],\n [69958, 70018, 60],\n [70067, 70069, 1],\n [70079, 70080, 1],\n [70094, 70188, 94],\n [70189, 70190, 1],\n [70194, 70195, 1],\n [70197, 70368, 171],\n [70369, 70370, 1],\n [70402, 70403, 1],\n [70462, 70463, 1],\n [70465, 70468, 1],\n [70471, 70472, 1],\n [70475, 70477, 1],\n [70487, 70498, 11],\n [70499, 70709, 210],\n [70710, 70711, 1],\n [70720, 70721, 1],\n [70725, 70832, 107],\n [70833, 70834, 1],\n [70841, 70843, 2],\n [70844, 70846, 1],\n [70849, 71087, 238],\n [71088, 71089, 1],\n [71096, 71099, 1],\n [71102, 71216, 114],\n [71217, 71218, 1],\n [71227, 71228, 1],\n [71230, 71340, 110],\n [71342, 71343, 1],\n [71350, 71456, 106],\n [71457, 71462, 5],\n [71724, 71726, 1],\n [71736, 71984, 248],\n [71985, 71989, 1],\n [71991, 71992, 1],\n [71997, 72000, 3],\n [72002, 72145, 143],\n [72146, 72147, 1],\n [72156, 72159, 1],\n [72164, 72249, 85],\n [72279, 72280, 1],\n [72343, 72751, 408],\n [72766, 72873, 107],\n [72881, 72884, 3],\n [73098, 73102, 1],\n [73107, 73108, 1],\n [73110, 73461, 351],\n [73462, 73475, 13],\n [73524, 73525, 1],\n [73534, 73535, 1],\n [73537, 94033, 20496],\n [94034, 94087, 1],\n [94192, 94193, 1],\n [119141, 119142, 1],\n [119149, 119154, 1]\n ]\n static Me = [\n [1160, 1161, 1],\n [6846, 8413, 1567],\n [8414, 8416, 1],\n [8418, 8420, 1],\n [42608, 42610, 1]\n ]\n static Mn = [\n [768, 879, 1],\n [1155, 1159, 1],\n [1425, 1469, 1],\n [1471, 1473, 2],\n [1474, 1476, 2],\n [1477, 1479, 2],\n [1552, 1562, 1],\n [1611, 1631, 1],\n [1648, 1750, 102],\n [1751, 1756, 1],\n [1759, 1764, 1],\n [1767, 1768, 1],\n [1770, 1773, 1],\n [1809, 1840, 31],\n [1841, 1866, 1],\n [1958, 1968, 1],\n [2027, 2035, 1],\n [2045, 2070, 25],\n [2071, 2073, 1],\n [2075, 2083, 1],\n [2085, 2087, 1],\n [2089, 2093, 1],\n [2137, 2139, 1],\n [2200, 2207, 1],\n [2250, 2273, 1],\n [2275, 2306, 1],\n [2362, 2364, 2],\n [2369, 2376, 1],\n [2381, 2385, 4],\n [2386, 2391, 1],\n [2402, 2403, 1],\n [2433, 2492, 59],\n [2497, 2500, 1],\n [2509, 2530, 21],\n [2531, 2558, 27],\n [2561, 2562, 1],\n [2620, 2625, 5],\n [2626, 2631, 5],\n [2632, 2635, 3],\n [2636, 2637, 1],\n [2641, 2672, 31],\n [2673, 2677, 4],\n [2689, 2690, 1],\n [2748, 2753, 5],\n [2754, 2757, 1],\n [2759, 2760, 1],\n [2765, 2786, 21],\n [2787, 2810, 23],\n [2811, 2815, 1],\n [2817, 2876, 59],\n [2879, 2881, 2],\n [2882, 2884, 1],\n [2893, 2901, 8],\n [2902, 2914, 12],\n [2915, 2946, 31],\n [3008, 3021, 13],\n [3072, 3076, 4],\n [3132, 3134, 2],\n [3135, 3136, 1],\n [3142, 3144, 1],\n [3146, 3149, 1],\n [3157, 3158, 1],\n [3170, 3171, 1],\n [3201, 3260, 59],\n [3263, 3270, 7],\n [3276, 3277, 1],\n [3298, 3299, 1],\n [3328, 3329, 1],\n [3387, 3388, 1],\n [3393, 3396, 1],\n [3405, 3426, 21],\n [3427, 3457, 30],\n [3530, 3538, 8],\n [3539, 3540, 1],\n [3542, 3633, 91],\n [3636, 3642, 1],\n [3655, 3662, 1],\n [3761, 3764, 3],\n [3765, 3772, 1],\n [3784, 3790, 1],\n [3864, 3865, 1],\n [3893, 3897, 2],\n [3953, 3966, 1],\n [3968, 3972, 1],\n [3974, 3975, 1],\n [3981, 3991, 1],\n [3993, 4028, 1],\n [4038, 4141, 103],\n [4142, 4144, 1],\n [4146, 4151, 1],\n [4153, 4154, 1],\n [4157, 4158, 1],\n [4184, 4185, 1],\n [4190, 4192, 1],\n [4209, 4212, 1],\n [4226, 4229, 3],\n [4230, 4237, 7],\n [4253, 4957, 704],\n [4958, 4959, 1],\n [5906, 5908, 1],\n [5938, 5939, 1],\n [5970, 5971, 1],\n [6002, 6003, 1],\n [6068, 6069, 1],\n [6071, 6077, 1],\n [6086, 6089, 3],\n [6090, 6099, 1],\n [6109, 6155, 46],\n [6156, 6157, 1],\n [6159, 6277, 118],\n [6278, 6313, 35],\n [6432, 6434, 1],\n [6439, 6440, 1],\n [6450, 6457, 7],\n [6458, 6459, 1],\n [6679, 6680, 1],\n [6683, 6742, 59],\n [6744, 6750, 1],\n [6752, 6754, 2],\n [6757, 6764, 1],\n [6771, 6780, 1],\n [6783, 6832, 49],\n [6833, 6845, 1],\n [6847, 6862, 1],\n [6912, 6915, 1],\n [6964, 6966, 2],\n [6967, 6970, 1],\n [6972, 6978, 6],\n [7019, 7027, 1],\n [7040, 7041, 1],\n [7074, 7077, 1],\n [7080, 7081, 1],\n [7083, 7085, 1],\n [7142, 7144, 2],\n [7145, 7149, 4],\n [7151, 7153, 1],\n [7212, 7219, 1],\n [7222, 7223, 1],\n [7376, 7378, 1],\n [7380, 7392, 1],\n [7394, 7400, 1],\n [7405, 7412, 7],\n [7416, 7417, 1],\n [7616, 7679, 1],\n [8400, 8412, 1],\n [8417, 8421, 4],\n [8422, 8432, 1],\n [11503, 11505, 1],\n [11647, 11744, 97],\n [11745, 11775, 1],\n [12330, 12333, 1],\n [12441, 12442, 1],\n [42607, 42612, 5],\n [42613, 42621, 1],\n [42654, 42655, 1],\n [42736, 42737, 1],\n [43010, 43014, 4],\n [43019, 43045, 26],\n [43046, 43052, 6],\n [43204, 43205, 1],\n [43232, 43249, 1],\n [43263, 43302, 39],\n [43303, 43309, 1],\n [43335, 43345, 1],\n [43392, 43394, 1],\n [43443, 43446, 3],\n [43447, 43449, 1],\n [43452, 43453, 1],\n [43493, 43561, 68],\n [43562, 43566, 1],\n [43569, 43570, 1],\n [43573, 43574, 1],\n [43587, 43596, 9],\n [43644, 43696, 52],\n [43698, 43700, 1],\n [43703, 43704, 1],\n [43710, 43711, 1],\n [43713, 43756, 43],\n [43757, 43766, 9],\n [44005, 44008, 3],\n [44013, 64286, 20273],\n [65024, 65039, 1],\n [65056, 65071, 1],\n [66045, 66272, 227],\n [66422, 66426, 1],\n [68097, 68099, 1],\n [68101, 68102, 1],\n [68108, 68111, 1],\n [68152, 68154, 1],\n [68159, 68325, 166],\n [68326, 68900, 574],\n [68901, 68903, 1],\n [69291, 69292, 1],\n [69373, 69375, 1],\n [69446, 69456, 1],\n [69506, 69509, 1],\n [69633, 69688, 55],\n [69689, 69702, 1],\n [69744, 69747, 3],\n [69748, 69759, 11],\n [69760, 69761, 1],\n [69811, 69814, 1],\n [69817, 69818, 1],\n [69826, 69888, 62],\n [69889, 69890, 1],\n [69927, 69931, 1],\n [69933, 69940, 1],\n [70003, 70016, 13],\n [70017, 70070, 53],\n [70071, 70078, 1],\n [70089, 70092, 1],\n [70095, 70191, 96],\n [70192, 70193, 1],\n [70196, 70198, 2],\n [70199, 70206, 7],\n [70209, 70367, 158],\n [70371, 70378, 1],\n [70400, 70401, 1],\n [70459, 70460, 1],\n [70464, 70502, 38],\n [70503, 70508, 1],\n [70512, 70516, 1],\n [70712, 70719, 1],\n [70722, 70724, 1],\n [70726, 70750, 24],\n [70835, 70840, 1],\n [70842, 70847, 5],\n [70848, 70850, 2],\n [70851, 71090, 239],\n [71091, 71093, 1],\n [71100, 71101, 1],\n [71103, 71104, 1],\n [71132, 71133, 1],\n [71219, 71226, 1],\n [71229, 71231, 2],\n [71232, 71339, 107],\n [71341, 71344, 3],\n [71345, 71349, 1],\n [71351, 71453, 102],\n [71454, 71455, 1],\n [71458, 71461, 1],\n [71463, 71467, 1],\n [71727, 71735, 1],\n [71737, 71738, 1],\n [71995, 71996, 1],\n [71998, 72003, 5],\n [72148, 72151, 1],\n [72154, 72155, 1],\n [72160, 72193, 33],\n [72194, 72202, 1],\n [72243, 72248, 1],\n [72251, 72254, 1],\n [72263, 72273, 10],\n [72274, 72278, 1],\n [72281, 72283, 1],\n [72330, 72342, 1],\n [72344, 72345, 1],\n [72752, 72758, 1],\n [72760, 72765, 1],\n [72767, 72850, 83],\n [72851, 72871, 1],\n [72874, 72880, 1],\n [72882, 72883, 1],\n [72885, 72886, 1],\n [73009, 73014, 1],\n [73018, 73020, 2],\n [73021, 73023, 2],\n [73024, 73029, 1],\n [73031, 73104, 73],\n [73105, 73109, 4],\n [73111, 73459, 348],\n [73460, 73472, 12],\n [73473, 73526, 53],\n [73527, 73530, 1],\n [73536, 73538, 2],\n [78912, 78919, 7],\n [78920, 78933, 1],\n [92912, 92916, 1],\n [92976, 92982, 1],\n [94031, 94095, 64],\n [94096, 94098, 1],\n [94180, 113821, 19641],\n [113822, 118528, 4706],\n [118529, 118573, 1],\n [118576, 118598, 1],\n [119143, 119145, 1],\n [119163, 119170, 1],\n [119173, 119179, 1],\n [119210, 119213, 1],\n [119362, 119364, 1],\n [121344, 121398, 1],\n [121403, 121452, 1],\n [121461, 121476, 15],\n [121499, 121503, 1],\n [121505, 121519, 1],\n [122880, 122886, 1],\n [122888, 122904, 1],\n [122907, 122913, 1],\n [122915, 122916, 1],\n [122918, 122922, 1],\n [123023, 123184, 161],\n [123185, 123190, 1],\n [123566, 123628, 62],\n [123629, 123631, 1],\n [124140, 124143, 1],\n [125136, 125142, 1],\n [125252, 125258, 1],\n [917760, 917999, 1]\n ]\n static foldMn = [\n [921, 953, 32],\n [8126, 8126, 1]\n ]\n static N = [\n [48, 57, 1],\n [178, 179, 1],\n [185, 188, 3],\n [189, 190, 1],\n [1632, 1641, 1],\n [1776, 1785, 1],\n [1984, 1993, 1],\n [2406, 2415, 1],\n [2534, 2543, 1],\n [2548, 2553, 1],\n [2662, 2671, 1],\n [2790, 2799, 1],\n [2918, 2927, 1],\n [2930, 2935, 1],\n [3046, 3058, 1],\n [3174, 3183, 1],\n [3192, 3198, 1],\n [3302, 3311, 1],\n [3416, 3422, 1],\n [3430, 3448, 1],\n [3558, 3567, 1],\n [3664, 3673, 1],\n [3792, 3801, 1],\n [3872, 3891, 1],\n [4160, 4169, 1],\n [4240, 4249, 1],\n [4969, 4988, 1],\n [5870, 5872, 1],\n [6112, 6121, 1],\n [6128, 6137, 1],\n [6160, 6169, 1],\n [6470, 6479, 1],\n [6608, 6618, 1],\n [6784, 6793, 1],\n [6800, 6809, 1],\n [6992, 7001, 1],\n [7088, 7097, 1],\n [7232, 7241, 1],\n [7248, 7257, 1],\n [8304, 8308, 4],\n [8309, 8313, 1],\n [8320, 8329, 1],\n [8528, 8578, 1],\n [8581, 8585, 1],\n [9312, 9371, 1],\n [9450, 9471, 1],\n [10102, 10131, 1],\n [11517, 12295, 778],\n [12321, 12329, 1],\n [12344, 12346, 1],\n [12690, 12693, 1],\n [12832, 12841, 1],\n [12872, 12879, 1],\n [12881, 12895, 1],\n [12928, 12937, 1],\n [12977, 12991, 1],\n [42528, 42537, 1],\n [42726, 42735, 1],\n [43056, 43061, 1],\n [43216, 43225, 1],\n [43264, 43273, 1],\n [43472, 43481, 1],\n [43504, 43513, 1],\n [43600, 43609, 1],\n [44016, 44025, 1],\n [65296, 65305, 1],\n [65799, 65843, 1],\n [65856, 65912, 1],\n [65930, 65931, 1],\n [66273, 66299, 1],\n [66336, 66339, 1],\n [66369, 66378, 9],\n [66513, 66517, 1],\n [66720, 66729, 1],\n [67672, 67679, 1],\n [67705, 67711, 1],\n [67751, 67759, 1],\n [67835, 67839, 1],\n [67862, 67867, 1],\n [68028, 68029, 1],\n [68032, 68047, 1],\n [68050, 68095, 1],\n [68160, 68168, 1],\n [68221, 68222, 1],\n [68253, 68255, 1],\n [68331, 68335, 1],\n [68440, 68447, 1],\n [68472, 68479, 1],\n [68521, 68527, 1],\n [68858, 68863, 1],\n [68912, 68921, 1],\n [69216, 69246, 1],\n [69405, 69414, 1],\n [69457, 69460, 1],\n [69573, 69579, 1],\n [69714, 69743, 1],\n [69872, 69881, 1],\n [69942, 69951, 1],\n [70096, 70105, 1],\n [70113, 70132, 1],\n [70384, 70393, 1],\n [70736, 70745, 1],\n [70864, 70873, 1],\n [71248, 71257, 1],\n [71360, 71369, 1],\n [71472, 71483, 1],\n [71904, 71922, 1],\n [72016, 72025, 1],\n [72784, 72812, 1],\n [73040, 73049, 1],\n [73120, 73129, 1],\n [73552, 73561, 1],\n [73664, 73684, 1],\n [74752, 74862, 1],\n [92768, 92777, 1],\n [92864, 92873, 1],\n [93008, 93017, 1],\n [93019, 93025, 1],\n [93824, 93846, 1],\n [119488, 119507, 1],\n [119520, 119539, 1],\n [119648, 119672, 1],\n [120782, 120831, 1],\n [123200, 123209, 1],\n [123632, 123641, 1],\n [124144, 124153, 1],\n [125127, 125135, 1],\n [125264, 125273, 1],\n [126065, 126123, 1],\n [126125, 126127, 1],\n [126129, 126132, 1],\n [126209, 126253, 1],\n [126255, 126269, 1],\n [127232, 127244, 1],\n [130032, 130041, 1]\n ]\n static Nd = [\n [48, 57, 1],\n [1632, 1641, 1],\n [1776, 1785, 1],\n [1984, 1993, 1],\n [2406, 2415, 1],\n [2534, 2543, 1],\n [2662, 2671, 1],\n [2790, 2799, 1],\n [2918, 2927, 1],\n [3046, 3055, 1],\n [3174, 3183, 1],\n [3302, 3311, 1],\n [3430, 3439, 1],\n [3558, 3567, 1],\n [3664, 3673, 1],\n [3792, 3801, 1],\n [3872, 3881, 1],\n [4160, 4169, 1],\n [4240, 4249, 1],\n [6112, 6121, 1],\n [6160, 6169, 1],\n [6470, 6479, 1],\n [6608, 6617, 1],\n [6784, 6793, 1],\n [6800, 6809, 1],\n [6992, 7001, 1],\n [7088, 7097, 1],\n [7232, 7241, 1],\n [7248, 7257, 1],\n [42528, 42537, 1],\n [43216, 43225, 1],\n [43264, 43273, 1],\n [43472, 43481, 1],\n [43504, 43513, 1],\n [43600, 43609, 1],\n [44016, 44025, 1],\n [65296, 65305, 1],\n [66720, 66729, 1],\n [68912, 68921, 1],\n [69734, 69743, 1],\n [69872, 69881, 1],\n [69942, 69951, 1],\n [70096, 70105, 1],\n [70384, 70393, 1],\n [70736, 70745, 1],\n [70864, 70873, 1],\n [71248, 71257, 1],\n [71360, 71369, 1],\n [71472, 71481, 1],\n [71904, 71913, 1],\n [72016, 72025, 1],\n [72784, 72793, 1],\n [73040, 73049, 1],\n [73120, 73129, 1],\n [73552, 73561, 1],\n [92768, 92777, 1],\n [92864, 92873, 1],\n [93008, 93017, 1],\n [120782, 120831, 1],\n [123200, 123209, 1],\n [123632, 123641, 1],\n [124144, 124153, 1],\n [125264, 125273, 1],\n [130032, 130041, 1]\n ]\n static Nl = [\n [5870, 5872, 1],\n [8544, 8578, 1],\n [8581, 8584, 1],\n [12295, 12321, 26],\n [12322, 12329, 1],\n [12344, 12346, 1],\n [42726, 42735, 1],\n [65856, 65908, 1],\n [66369, 66378, 9],\n [66513, 66517, 1],\n [74752, 74862, 1]\n ]\n static No = [\n [178, 179, 1],\n [185, 188, 3],\n [189, 190, 1],\n [2548, 2553, 1],\n [2930, 2935, 1],\n [3056, 3058, 1],\n [3192, 3198, 1],\n [3416, 3422, 1],\n [3440, 3448, 1],\n [3882, 3891, 1],\n [4969, 4988, 1],\n [6128, 6137, 1],\n [6618, 8304, 1686],\n [8308, 8313, 1],\n [8320, 8329, 1],\n [8528, 8543, 1],\n [8585, 9312, 727],\n [9313, 9371, 1],\n [9450, 9471, 1],\n [10102, 10131, 1],\n [11517, 12690, 1173],\n [12691, 12693, 1],\n [12832, 12841, 1],\n [12872, 12879, 1],\n [12881, 12895, 1],\n [12928, 12937, 1],\n [12977, 12991, 1],\n [43056, 43061, 1],\n [65799, 65843, 1],\n [65909, 65912, 1],\n [65930, 65931, 1],\n [66273, 66299, 1],\n [66336, 66339, 1],\n [67672, 67679, 1],\n [67705, 67711, 1],\n [67751, 67759, 1],\n [67835, 67839, 1],\n [67862, 67867, 1],\n [68028, 68029, 1],\n [68032, 68047, 1],\n [68050, 68095, 1],\n [68160, 68168, 1],\n [68221, 68222, 1],\n [68253, 68255, 1],\n [68331, 68335, 1],\n [68440, 68447, 1],\n [68472, 68479, 1],\n [68521, 68527, 1],\n [68858, 68863, 1],\n [69216, 69246, 1],\n [69405, 69414, 1],\n [69457, 69460, 1],\n [69573, 69579, 1],\n [69714, 69733, 1],\n [70113, 70132, 1],\n [71482, 71483, 1],\n [71914, 71922, 1],\n [72794, 72812, 1],\n [73664, 73684, 1],\n [93019, 93025, 1],\n [93824, 93846, 1],\n [119488, 119507, 1],\n [119520, 119539, 1],\n [119648, 119672, 1],\n [125127, 125135, 1],\n [126065, 126123, 1],\n [126125, 126127, 1],\n [126129, 126132, 1],\n [126209, 126253, 1],\n [126255, 126269, 1],\n [127232, 127244, 1]\n ]\n static P = [\n [33, 35, 1],\n [37, 42, 1],\n [44, 47, 1],\n [58, 59, 1],\n [63, 64, 1],\n [91, 93, 1],\n [95, 123, 28],\n [125, 161, 36],\n [167, 171, 4],\n [182, 183, 1],\n [187, 191, 4],\n [894, 903, 9],\n [1370, 1375, 1],\n [1417, 1418, 1],\n [1470, 1472, 2],\n [1475, 1478, 3],\n [1523, 1524, 1],\n [1545, 1546, 1],\n [1548, 1549, 1],\n [1563, 1565, 2],\n [1566, 1567, 1],\n [1642, 1645, 1],\n [1748, 1792, 44],\n [1793, 1805, 1],\n [2039, 2041, 1],\n [2096, 2110, 1],\n [2142, 2404, 262],\n [2405, 2416, 11],\n [2557, 2678, 121],\n [2800, 3191, 391],\n [3204, 3572, 368],\n [3663, 3674, 11],\n [3675, 3844, 169],\n [3845, 3858, 1],\n [3860, 3898, 38],\n [3899, 3901, 1],\n [3973, 4048, 75],\n [4049, 4052, 1],\n [4057, 4058, 1],\n [4170, 4175, 1],\n [4347, 4960, 613],\n [4961, 4968, 1],\n [5120, 5742, 622],\n [5787, 5788, 1],\n [5867, 5869, 1],\n [5941, 5942, 1],\n [6100, 6102, 1],\n [6104, 6106, 1],\n [6144, 6154, 1],\n [6468, 6469, 1],\n [6686, 6687, 1],\n [6816, 6822, 1],\n [6824, 6829, 1],\n [7002, 7008, 1],\n [7037, 7038, 1],\n [7164, 7167, 1],\n [7227, 7231, 1],\n [7294, 7295, 1],\n [7360, 7367, 1],\n [7379, 8208, 829],\n [8209, 8231, 1],\n [8240, 8259, 1],\n [8261, 8273, 1],\n [8275, 8286, 1],\n [8317, 8318, 1],\n [8333, 8334, 1],\n [8968, 8971, 1],\n [9001, 9002, 1],\n [10088, 10101, 1],\n [10181, 10182, 1],\n [10214, 10223, 1],\n [10627, 10648, 1],\n [10712, 10715, 1],\n [10748, 10749, 1],\n [11513, 11516, 1],\n [11518, 11519, 1],\n [11632, 11776, 144],\n [11777, 11822, 1],\n [11824, 11855, 1],\n [11858, 11869, 1],\n [12289, 12291, 1],\n [12296, 12305, 1],\n [12308, 12319, 1],\n [12336, 12349, 13],\n [12448, 12539, 91],\n [42238, 42239, 1],\n [42509, 42511, 1],\n [42611, 42622, 11],\n [42738, 42743, 1],\n [43124, 43127, 1],\n [43214, 43215, 1],\n [43256, 43258, 1],\n [43260, 43310, 50],\n [43311, 43359, 48],\n [43457, 43469, 1],\n [43486, 43487, 1],\n [43612, 43615, 1],\n [43742, 43743, 1],\n [43760, 43761, 1],\n [44011, 64830, 20819],\n [64831, 65040, 209],\n [65041, 65049, 1],\n [65072, 65106, 1],\n [65108, 65121, 1],\n [65123, 65128, 5],\n [65130, 65131, 1],\n [65281, 65283, 1],\n [65285, 65290, 1],\n [65292, 65295, 1],\n [65306, 65307, 1],\n [65311, 65312, 1],\n [65339, 65341, 1],\n [65343, 65371, 28],\n [65373, 65375, 2],\n [65376, 65381, 1],\n [65792, 65794, 1],\n [66463, 66512, 49],\n [66927, 67671, 744],\n [67871, 67903, 32],\n [68176, 68184, 1],\n [68223, 68336, 113],\n [68337, 68342, 1],\n [68409, 68415, 1],\n [68505, 68508, 1],\n [69293, 69461, 168],\n [69462, 69465, 1],\n [69510, 69513, 1],\n [69703, 69709, 1],\n [69819, 69820, 1],\n [69822, 69825, 1],\n [69952, 69955, 1],\n [70004, 70005, 1],\n [70085, 70088, 1],\n [70093, 70107, 14],\n [70109, 70111, 1],\n [70200, 70205, 1],\n [70313, 70731, 418],\n [70732, 70735, 1],\n [70746, 70747, 1],\n [70749, 70854, 105],\n [71105, 71127, 1],\n [71233, 71235, 1],\n [71264, 71276, 1],\n [71353, 71484, 131],\n [71485, 71486, 1],\n [71739, 72004, 265],\n [72005, 72006, 1],\n [72162, 72255, 93],\n [72256, 72262, 1],\n [72346, 72348, 1],\n [72350, 72354, 1],\n [72448, 72457, 1],\n [72769, 72773, 1],\n [72816, 72817, 1],\n [73463, 73464, 1],\n [73539, 73551, 1],\n [73727, 74864, 1137],\n [74865, 74868, 1],\n [77809, 77810, 1],\n [92782, 92783, 1],\n [92917, 92983, 66],\n [92984, 92987, 1],\n [92996, 93847, 851],\n [93848, 93850, 1],\n [94178, 113823, 19645],\n [121479, 121483, 1],\n [125278, 125279, 1]\n ]\n static Pc = [\n [95, 8255, 8160],\n [8256, 8276, 20],\n [65075, 65076, 1],\n [65101, 65103, 1],\n [65343, 65343, 1]\n ]\n static Pd = [\n [45, 1418, 1373],\n [1470, 5120, 3650],\n [6150, 8208, 2058],\n [8209, 8213, 1],\n [11799, 11802, 3],\n [11834, 11835, 1],\n [11840, 11869, 29],\n [12316, 12336, 20],\n [12448, 65073, 52625],\n [65074, 65112, 38],\n [65123, 65293, 170],\n [69293, 69293, 1]\n ]\n static Pe = [\n [41, 93, 52],\n [125, 3899, 3774],\n [3901, 5788, 1887],\n [8262, 8318, 56],\n [8334, 8969, 635],\n [8971, 9002, 31],\n [10089, 10101, 2],\n [10182, 10215, 33],\n [10217, 10223, 2],\n [10628, 10648, 2],\n [10713, 10715, 2],\n [10749, 11811, 1062],\n [11813, 11817, 2],\n [11862, 11868, 2],\n [12297, 12305, 2],\n [12309, 12315, 2],\n [12318, 12319, 1],\n [64830, 65048, 218],\n [65078, 65092, 2],\n [65096, 65114, 18],\n [65116, 65118, 2],\n [65289, 65341, 52],\n [65373, 65379, 3]\n ]\n static Pf = [\n [187, 8217, 8030],\n [8221, 8250, 29],\n [11779, 11781, 2],\n [11786, 11789, 3],\n [11805, 11809, 4]\n ]\n static Pi = [\n [171, 8216, 8045],\n [8219, 8220, 1],\n [8223, 8249, 26],\n [11778, 11780, 2],\n [11785, 11788, 3],\n [11804, 11808, 4]\n ]\n static Po = [\n [33, 35, 1],\n [37, 39, 1],\n [42, 46, 2],\n [47, 58, 11],\n [59, 63, 4],\n [64, 92, 28],\n [161, 167, 6],\n [182, 183, 1],\n [191, 894, 703],\n [903, 1370, 467],\n [1371, 1375, 1],\n [1417, 1472, 55],\n [1475, 1478, 3],\n [1523, 1524, 1],\n [1545, 1546, 1],\n [1548, 1549, 1],\n [1563, 1565, 2],\n [1566, 1567, 1],\n [1642, 1645, 1],\n [1748, 1792, 44],\n [1793, 1805, 1],\n [2039, 2041, 1],\n [2096, 2110, 1],\n [2142, 2404, 262],\n [2405, 2416, 11],\n [2557, 2678, 121],\n [2800, 3191, 391],\n [3204, 3572, 368],\n [3663, 3674, 11],\n [3675, 3844, 169],\n [3845, 3858, 1],\n [3860, 3973, 113],\n [4048, 4052, 1],\n [4057, 4058, 1],\n [4170, 4175, 1],\n [4347, 4960, 613],\n [4961, 4968, 1],\n [5742, 5867, 125],\n [5868, 5869, 1],\n [5941, 5942, 1],\n [6100, 6102, 1],\n [6104, 6106, 1],\n [6144, 6149, 1],\n [6151, 6154, 1],\n [6468, 6469, 1],\n [6686, 6687, 1],\n [6816, 6822, 1],\n [6824, 6829, 1],\n [7002, 7008, 1],\n [7037, 7038, 1],\n [7164, 7167, 1],\n [7227, 7231, 1],\n [7294, 7295, 1],\n [7360, 7367, 1],\n [7379, 8214, 835],\n [8215, 8224, 9],\n [8225, 8231, 1],\n [8240, 8248, 1],\n [8251, 8254, 1],\n [8257, 8259, 1],\n [8263, 8273, 1],\n [8275, 8277, 2],\n [8278, 8286, 1],\n [11513, 11516, 1],\n [11518, 11519, 1],\n [11632, 11776, 144],\n [11777, 11782, 5],\n [11783, 11784, 1],\n [11787, 11790, 3],\n [11791, 11798, 1],\n [11800, 11801, 1],\n [11803, 11806, 3],\n [11807, 11818, 11],\n [11819, 11822, 1],\n [11824, 11833, 1],\n [11836, 11839, 1],\n [11841, 11843, 2],\n [11844, 11855, 1],\n [11858, 11860, 1],\n [12289, 12291, 1],\n [12349, 12539, 190],\n [42238, 42239, 1],\n [42509, 42511, 1],\n [42611, 42622, 11],\n [42738, 42743, 1],\n [43124, 43127, 1],\n [43214, 43215, 1],\n [43256, 43258, 1],\n [43260, 43310, 50],\n [43311, 43359, 48],\n [43457, 43469, 1],\n [43486, 43487, 1],\n [43612, 43615, 1],\n [43742, 43743, 1],\n [43760, 43761, 1],\n [44011, 65040, 21029],\n [65041, 65046, 1],\n [65049, 65072, 23],\n [65093, 65094, 1],\n [65097, 65100, 1],\n [65104, 65106, 1],\n [65108, 65111, 1],\n [65119, 65121, 1],\n [65128, 65130, 2],\n [65131, 65281, 150],\n [65282, 65283, 1],\n [65285, 65287, 1],\n [65290, 65294, 2],\n [65295, 65306, 11],\n [65307, 65311, 4],\n [65312, 65340, 28],\n [65377, 65380, 3],\n [65381, 65792, 411],\n [65793, 65794, 1],\n [66463, 66512, 49],\n [66927, 67671, 744],\n [67871, 67903, 32],\n [68176, 68184, 1],\n [68223, 68336, 113],\n [68337, 68342, 1],\n [68409, 68415, 1],\n [68505, 68508, 1],\n [69461, 69465, 1],\n [69510, 69513, 1],\n [69703, 69709, 1],\n [69819, 69820, 1],\n [69822, 69825, 1],\n [69952, 69955, 1],\n [70004, 70005, 1],\n [70085, 70088, 1],\n [70093, 70107, 14],\n [70109, 70111, 1],\n [70200, 70205, 1],\n [70313, 70731, 418],\n [70732, 70735, 1],\n [70746, 70747, 1],\n [70749, 70854, 105],\n [71105, 71127, 1],\n [71233, 71235, 1],\n [71264, 71276, 1],\n [71353, 71484, 131],\n [71485, 71486, 1],\n [71739, 72004, 265],\n [72005, 72006, 1],\n [72162, 72255, 93],\n [72256, 72262, 1],\n [72346, 72348, 1],\n [72350, 72354, 1],\n [72448, 72457, 1],\n [72769, 72773, 1],\n [72816, 72817, 1],\n [73463, 73464, 1],\n [73539, 73551, 1],\n [73727, 74864, 1137],\n [74865, 74868, 1],\n [77809, 77810, 1],\n [92782, 92783, 1],\n [92917, 92983, 66],\n [92984, 92987, 1],\n [92996, 93847, 851],\n [93848, 93850, 1],\n [94178, 113823, 19645],\n [121479, 121483, 1],\n [125278, 125279, 1]\n ]\n static Ps = [\n [40, 91, 51],\n [123, 3898, 3775],\n [3900, 5787, 1887],\n [8218, 8222, 4],\n [8261, 8317, 56],\n [8333, 8968, 635],\n [8970, 9001, 31],\n [10088, 10100, 2],\n [10181, 10214, 33],\n [10216, 10222, 2],\n [10627, 10647, 2],\n [10712, 10714, 2],\n [10748, 11810, 1062],\n [11812, 11816, 2],\n [11842, 11861, 19],\n [11863, 11867, 2],\n [12296, 12304, 2],\n [12308, 12314, 2],\n [12317, 64831, 52514],\n [65047, 65077, 30],\n [65079, 65091, 2],\n [65095, 65113, 18],\n [65115, 65117, 2],\n [65288, 65339, 51],\n [65371, 65375, 4],\n [65378, 65378, 1]\n ]\n static S = [\n [36, 43, 7],\n [60, 62, 1],\n [94, 96, 2],\n [124, 126, 2],\n [162, 166, 1],\n [168, 169, 1],\n [172, 174, 2],\n [175, 177, 1],\n [180, 184, 4],\n [215, 247, 32],\n [706, 709, 1],\n [722, 735, 1],\n [741, 747, 1],\n [749, 751, 2],\n [752, 767, 1],\n [885, 900, 15],\n [901, 1014, 113],\n [1154, 1421, 267],\n [1422, 1423, 1],\n [1542, 1544, 1],\n [1547, 1550, 3],\n [1551, 1758, 207],\n [1769, 1789, 20],\n [1790, 2038, 248],\n [2046, 2047, 1],\n [2184, 2546, 362],\n [2547, 2554, 7],\n [2555, 2801, 246],\n [2928, 3059, 131],\n [3060, 3066, 1],\n [3199, 3407, 208],\n [3449, 3647, 198],\n [3841, 3843, 1],\n [3859, 3861, 2],\n [3862, 3863, 1],\n [3866, 3871, 1],\n [3892, 3896, 2],\n [4030, 4037, 1],\n [4039, 4044, 1],\n [4046, 4047, 1],\n [4053, 4056, 1],\n [4254, 4255, 1],\n [5008, 5017, 1],\n [5741, 6107, 366],\n [6464, 6622, 158],\n [6623, 6655, 1],\n [7009, 7018, 1],\n [7028, 7036, 1],\n [8125, 8127, 2],\n [8128, 8129, 1],\n [8141, 8143, 1],\n [8157, 8159, 1],\n [8173, 8175, 1],\n [8189, 8190, 1],\n [8260, 8274, 14],\n [8314, 8316, 1],\n [8330, 8332, 1],\n [8352, 8384, 1],\n [8448, 8449, 1],\n [8451, 8454, 1],\n [8456, 8457, 1],\n [8468, 8470, 2],\n [8471, 8472, 1],\n [8478, 8483, 1],\n [8485, 8489, 2],\n [8494, 8506, 12],\n [8507, 8512, 5],\n [8513, 8516, 1],\n [8522, 8525, 1],\n [8527, 8586, 59],\n [8587, 8592, 5],\n [8593, 8967, 1],\n [8972, 9000, 1],\n [9003, 9254, 1],\n [9280, 9290, 1],\n [9372, 9449, 1],\n [9472, 10087, 1],\n [10132, 10180, 1],\n [10183, 10213, 1],\n [10224, 10626, 1],\n [10649, 10711, 1],\n [10716, 10747, 1],\n [10750, 11123, 1],\n [11126, 11157, 1],\n [11159, 11263, 1],\n [11493, 11498, 1],\n [11856, 11857, 1],\n [11904, 11929, 1],\n [11931, 12019, 1],\n [12032, 12245, 1],\n [12272, 12287, 1],\n [12292, 12306, 14],\n [12307, 12320, 13],\n [12342, 12343, 1],\n [12350, 12351, 1],\n [12443, 12444, 1],\n [12688, 12689, 1],\n [12694, 12703, 1],\n [12736, 12771, 1],\n [12783, 12800, 17],\n [12801, 12830, 1],\n [12842, 12871, 1],\n [12880, 12896, 16],\n [12897, 12927, 1],\n [12938, 12976, 1],\n [12992, 13311, 1],\n [19904, 19967, 1],\n [42128, 42182, 1],\n [42752, 42774, 1],\n [42784, 42785, 1],\n [42889, 42890, 1],\n [43048, 43051, 1],\n [43062, 43065, 1],\n [43639, 43641, 1],\n [43867, 43882, 15],\n [43883, 64297, 20414],\n [64434, 64450, 1],\n [64832, 64847, 1],\n [64975, 65020, 45],\n [65021, 65023, 1],\n [65122, 65124, 2],\n [65125, 65126, 1],\n [65129, 65284, 155],\n [65291, 65308, 17],\n [65309, 65310, 1],\n [65342, 65344, 2],\n [65372, 65374, 2],\n [65504, 65510, 1],\n [65512, 65518, 1],\n [65532, 65533, 1],\n [65847, 65855, 1],\n [65913, 65929, 1],\n [65932, 65934, 1],\n [65936, 65948, 1],\n [65952, 66000, 48],\n [66001, 66044, 1],\n [67703, 67704, 1],\n [68296, 71487, 3191],\n [73685, 73713, 1],\n [92988, 92991, 1],\n [92997, 113820, 20823],\n [118608, 118723, 1],\n [118784, 119029, 1],\n [119040, 119078, 1],\n [119081, 119140, 1],\n [119146, 119148, 1],\n [119171, 119172, 1],\n [119180, 119209, 1],\n [119214, 119274, 1],\n [119296, 119361, 1],\n [119365, 119552, 187],\n [119553, 119638, 1],\n [120513, 120539, 26],\n [120571, 120597, 26],\n [120629, 120655, 26],\n [120687, 120713, 26],\n [120745, 120771, 26],\n [120832, 121343, 1],\n [121399, 121402, 1],\n [121453, 121460, 1],\n [121462, 121475, 1],\n [121477, 121478, 1],\n [123215, 123647, 432],\n [126124, 126128, 4],\n [126254, 126704, 450],\n [126705, 126976, 271],\n [126977, 127019, 1],\n [127024, 127123, 1],\n [127136, 127150, 1],\n [127153, 127167, 1],\n [127169, 127183, 1],\n [127185, 127221, 1],\n [127245, 127405, 1],\n [127462, 127490, 1],\n [127504, 127547, 1],\n [127552, 127560, 1],\n [127568, 127569, 1],\n [127584, 127589, 1],\n [127744, 128727, 1],\n [128732, 128748, 1],\n [128752, 128764, 1],\n [128768, 128886, 1],\n [128891, 128985, 1],\n [128992, 129003, 1],\n [129008, 129024, 16],\n [129025, 129035, 1],\n [129040, 129095, 1],\n [129104, 129113, 1],\n [129120, 129159, 1],\n [129168, 129197, 1],\n [129200, 129201, 1],\n [129280, 129619, 1],\n [129632, 129645, 1],\n [129648, 129660, 1],\n [129664, 129672, 1],\n [129680, 129725, 1],\n [129727, 129733, 1],\n [129742, 129755, 1],\n [129760, 129768, 1],\n [129776, 129784, 1],\n [129792, 129938, 1],\n [129940, 129994, 1]\n ]\n static Sc = [\n [36, 162, 126],\n [163, 165, 1],\n [1423, 1547, 124],\n [2046, 2047, 1],\n [2546, 2547, 1],\n [2555, 2801, 246],\n [3065, 3647, 582],\n [6107, 8352, 2245],\n [8353, 8384, 1],\n [43064, 65020, 21956],\n [65129, 65284, 155],\n [65504, 65505, 1],\n [65509, 65510, 1],\n [73693, 73696, 1],\n [123647, 126128, 2481]\n ]\n static Sk = [\n [94, 96, 2],\n [168, 175, 7],\n [180, 184, 4],\n [706, 709, 1],\n [722, 735, 1],\n [741, 747, 1],\n [749, 751, 2],\n [752, 767, 1],\n [885, 900, 15],\n [901, 2184, 1283],\n [8125, 8127, 2],\n [8128, 8129, 1],\n [8141, 8143, 1],\n [8157, 8159, 1],\n [8173, 8175, 1],\n [8189, 8190, 1],\n [12443, 12444, 1],\n [42752, 42774, 1],\n [42784, 42785, 1],\n [42889, 42890, 1],\n [43867, 43882, 15],\n [43883, 64434, 20551],\n [64435, 64450, 1],\n [65342, 65344, 2],\n [65507, 127995, 62488],\n [127996, 127999, 1]\n ]\n static Sm = [\n [43, 60, 17],\n [61, 62, 1],\n [124, 126, 2],\n [172, 177, 5],\n [215, 247, 32],\n [1014, 1542, 528],\n [1543, 1544, 1],\n [8260, 8274, 14],\n [8314, 8316, 1],\n [8330, 8332, 1],\n [8472, 8512, 40],\n [8513, 8516, 1],\n [8523, 8592, 69],\n [8593, 8596, 1],\n [8602, 8603, 1],\n [8608, 8614, 3],\n [8622, 8654, 32],\n [8655, 8658, 3],\n [8660, 8692, 32],\n [8693, 8959, 1],\n [8992, 8993, 1],\n [9084, 9115, 31],\n [9116, 9139, 1],\n [9180, 9185, 1],\n [9655, 9665, 10],\n [9720, 9727, 1],\n [9839, 10176, 337],\n [10177, 10180, 1],\n [10183, 10213, 1],\n [10224, 10239, 1],\n [10496, 10626, 1],\n [10649, 10711, 1],\n [10716, 10747, 1],\n [10750, 11007, 1],\n [11056, 11076, 1],\n [11079, 11084, 1],\n [64297, 65122, 825],\n [65124, 65126, 1],\n [65291, 65308, 17],\n [65309, 65310, 1],\n [65372, 65374, 2],\n [65506, 65513, 7],\n [65514, 65516, 1],\n [120513, 120539, 26],\n [120571, 120597, 26],\n [120629, 120655, 26],\n [120687, 120713, 26],\n [120745, 120771, 26],\n [126704, 126705, 1]\n ]\n static So = [\n [166, 169, 3],\n [174, 176, 2],\n [1154, 1421, 267],\n [1422, 1550, 128],\n [1551, 1758, 207],\n [1769, 1789, 20],\n [1790, 2038, 248],\n [2554, 2928, 374],\n [3059, 3064, 1],\n [3066, 3199, 133],\n [3407, 3449, 42],\n [3841, 3843, 1],\n [3859, 3861, 2],\n [3862, 3863, 1],\n [3866, 3871, 1],\n [3892, 3896, 2],\n [4030, 4037, 1],\n [4039, 4044, 1],\n [4046, 4047, 1],\n [4053, 4056, 1],\n [4254, 4255, 1],\n [5008, 5017, 1],\n [5741, 6464, 723],\n [6622, 6655, 1],\n [7009, 7018, 1],\n [7028, 7036, 1],\n [8448, 8449, 1],\n [8451, 8454, 1],\n [8456, 8457, 1],\n [8468, 8470, 2],\n [8471, 8478, 7],\n [8479, 8483, 1],\n [8485, 8489, 2],\n [8494, 8506, 12],\n [8507, 8522, 15],\n [8524, 8525, 1],\n [8527, 8586, 59],\n [8587, 8597, 10],\n [8598, 8601, 1],\n [8604, 8607, 1],\n [8609, 8610, 1],\n [8612, 8613, 1],\n [8615, 8621, 1],\n [8623, 8653, 1],\n [8656, 8657, 1],\n [8659, 8661, 2],\n [8662, 8691, 1],\n [8960, 8967, 1],\n [8972, 8991, 1],\n [8994, 9000, 1],\n [9003, 9083, 1],\n [9085, 9114, 1],\n [9140, 9179, 1],\n [9186, 9254, 1],\n [9280, 9290, 1],\n [9372, 9449, 1],\n [9472, 9654, 1],\n [9656, 9664, 1],\n [9666, 9719, 1],\n [9728, 9838, 1],\n [9840, 10087, 1],\n [10132, 10175, 1],\n [10240, 10495, 1],\n [11008, 11055, 1],\n [11077, 11078, 1],\n [11085, 11123, 1],\n [11126, 11157, 1],\n [11159, 11263, 1],\n [11493, 11498, 1],\n [11856, 11857, 1],\n [11904, 11929, 1],\n [11931, 12019, 1],\n [12032, 12245, 1],\n [12272, 12287, 1],\n [12292, 12306, 14],\n [12307, 12320, 13],\n [12342, 12343, 1],\n [12350, 12351, 1],\n [12688, 12689, 1],\n [12694, 12703, 1],\n [12736, 12771, 1],\n [12783, 12800, 17],\n [12801, 12830, 1],\n [12842, 12871, 1],\n [12880, 12896, 16],\n [12897, 12927, 1],\n [12938, 12976, 1],\n [12992, 13311, 1],\n [19904, 19967, 1],\n [42128, 42182, 1],\n [43048, 43051, 1],\n [43062, 43063, 1],\n [43065, 43639, 574],\n [43640, 43641, 1],\n [64832, 64847, 1],\n [64975, 65021, 46],\n [65022, 65023, 1],\n [65508, 65512, 4],\n [65517, 65518, 1],\n [65532, 65533, 1],\n [65847, 65855, 1],\n [65913, 65929, 1],\n [65932, 65934, 1],\n [65936, 65948, 1],\n [65952, 66000, 48],\n [66001, 66044, 1],\n [67703, 67704, 1],\n [68296, 71487, 3191],\n [73685, 73692, 1],\n [73697, 73713, 1],\n [92988, 92991, 1],\n [92997, 113820, 20823],\n [118608, 118723, 1],\n [118784, 119029, 1],\n [119040, 119078, 1],\n [119081, 119140, 1],\n [119146, 119148, 1],\n [119171, 119172, 1],\n [119180, 119209, 1],\n [119214, 119274, 1],\n [119296, 119361, 1],\n [119365, 119552, 187],\n [119553, 119638, 1],\n [120832, 121343, 1],\n [121399, 121402, 1],\n [121453, 121460, 1],\n [121462, 121475, 1],\n [121477, 121478, 1],\n [123215, 126124, 2909],\n [126254, 126976, 722],\n [126977, 127019, 1],\n [127024, 127123, 1],\n [127136, 127150, 1],\n [127153, 127167, 1],\n [127169, 127183, 1],\n [127185, 127221, 1],\n [127245, 127405, 1],\n [127462, 127490, 1],\n [127504, 127547, 1],\n [127552, 127560, 1],\n [127568, 127569, 1],\n [127584, 127589, 1],\n [127744, 127994, 1],\n [128000, 128727, 1],\n [128732, 128748, 1],\n [128752, 128764, 1],\n [128768, 128886, 1],\n [128891, 128985, 1],\n [128992, 129003, 1],\n [129008, 129024, 16],\n [129025, 129035, 1],\n [129040, 129095, 1],\n [129104, 129113, 1],\n [129120, 129159, 1],\n [129168, 129197, 1],\n [129200, 129201, 1],\n [129280, 129619, 1],\n [129632, 129645, 1],\n [129648, 129660, 1],\n [129664, 129672, 1],\n [129680, 129725, 1],\n [129727, 129733, 1],\n [129742, 129755, 1],\n [129760, 129768, 1],\n [129776, 129784, 1],\n [129792, 129938, 1],\n [129940, 129994, 1]\n ]\n static Z = [\n [32, 160, 128],\n [5760, 8192, 2432],\n [8193, 8202, 1],\n [8232, 8233, 1],\n [8239, 8287, 48],\n [12288, 12288, 1]\n ]\n static Zl = [[8232, 8232, 1]]\n static Zp = [[8233, 8233, 1]]\n static Zs = [\n [32, 160, 128],\n [5760, 8192, 2432],\n [8193, 8202, 1],\n [8239, 8287, 48],\n [12288, 12288, 1]\n ]\n static Adlam = [\n [125184, 125259, 1],\n [125264, 125273, 1],\n [125278, 125279, 1]\n ]\n static Ahom = [\n [71424, 71450, 1],\n [71453, 71467, 1],\n [71472, 71494, 1]\n ]\n static Anatolian_Hieroglyphs = [[82944, 83526, 1]]\n static Arabic = [\n [1536, 1540, 1],\n [1542, 1547, 1],\n [1549, 1562, 1],\n [1564, 1566, 1],\n [1568, 1599, 1],\n [1601, 1610, 1],\n [1622, 1647, 1],\n [1649, 1756, 1],\n [1758, 1791, 1],\n [1872, 1919, 1],\n [2160, 2190, 1],\n [2192, 2193, 1],\n [2200, 2273, 1],\n [2275, 2303, 1],\n [64336, 64450, 1],\n [64467, 64829, 1],\n [64832, 64911, 1],\n [64914, 64967, 1],\n [64975, 65008, 33],\n [65009, 65023, 1],\n [65136, 65140, 1],\n [65142, 65276, 1],\n [69216, 69246, 1],\n [69373, 69375, 1],\n [126464, 126467, 1],\n [126469, 126495, 1],\n [126497, 126498, 1],\n [126500, 126503, 3],\n [126505, 126514, 1],\n [126516, 126519, 1],\n [126521, 126523, 2],\n [126530, 126535, 5],\n [126537, 126541, 2],\n [126542, 126543, 1],\n [126545, 126546, 1],\n [126548, 126551, 3],\n [126553, 126561, 2],\n [126562, 126564, 2],\n [126567, 126570, 1],\n [126572, 126578, 1],\n [126580, 126583, 1],\n [126585, 126588, 1],\n [126590, 126592, 2],\n [126593, 126601, 1],\n [126603, 126619, 1],\n [126625, 126627, 1],\n [126629, 126633, 1],\n [126635, 126651, 1],\n [126704, 126705, 1]\n ]\n static Armenian = [\n [1329, 1366, 1],\n [1369, 1418, 1],\n [1421, 1423, 1],\n [64275, 64279, 1]\n ]\n static Avestan = [\n [68352, 68405, 1],\n [68409, 68415, 1]\n ]\n static Balinese = [\n [6912, 6988, 1],\n [6992, 7038, 1]\n ]\n static Bamum = [\n [42656, 42743, 1],\n [92160, 92728, 1]\n ]\n static Bassa_Vah = [\n [92880, 92909, 1],\n [92912, 92917, 1]\n ]\n static Batak = [\n [7104, 7155, 1],\n [7164, 7167, 1]\n ]\n static Bengali = [\n [2432, 2435, 1],\n [2437, 2444, 1],\n [2447, 2448, 1],\n [2451, 2472, 1],\n [2474, 2480, 1],\n [2482, 2486, 4],\n [2487, 2489, 1],\n [2492, 2500, 1],\n [2503, 2504, 1],\n [2507, 2510, 1],\n [2519, 2524, 5],\n [2525, 2527, 2],\n [2528, 2531, 1],\n [2534, 2558, 1]\n ]\n static Bhaiksuki = [\n [72704, 72712, 1],\n [72714, 72758, 1],\n [72760, 72773, 1],\n [72784, 72812, 1]\n ]\n static Bopomofo = [\n [746, 747, 1],\n [12549, 12591, 1],\n [12704, 12735, 1]\n ]\n static Brahmi = [\n [69632, 69709, 1],\n [69714, 69749, 1],\n [69759, 69759, 1]\n ]\n static Braille = [[10240, 10495, 1]]\n static Buginese = [\n [6656, 6683, 1],\n [6686, 6687, 1]\n ]\n static Buhid = [[5952, 5971, 1]]\n static Canadian_Aboriginal = [\n [5120, 5759, 1],\n [6320, 6389, 1],\n [72368, 72383, 1]\n ]\n static Carian = [[66208, 66256, 1]]\n static Caucasian_Albanian = [\n [66864, 66915, 1],\n [66927, 66927, 1]\n ]\n static Chakma = [\n [69888, 69940, 1],\n [69942, 69959, 1]\n ]\n static Cham = [\n [43520, 43574, 1],\n [43584, 43597, 1],\n [43600, 43609, 1],\n [43612, 43615, 1]\n ]\n static Cherokee = [\n [5024, 5109, 1],\n [5112, 5117, 1],\n [43888, 43967, 1]\n ]\n static Chorasmian = [[69552, 69579, 1]]\n static Common = [\n [0, 64, 1],\n [91, 96, 1],\n [123, 169, 1],\n [171, 185, 1],\n [187, 191, 1],\n [215, 247, 32],\n [697, 735, 1],\n [741, 745, 1],\n [748, 767, 1],\n [884, 894, 10],\n [901, 903, 2],\n [1541, 1548, 7],\n [1563, 1567, 4],\n [1600, 1757, 157],\n [2274, 2404, 130],\n [2405, 3647, 1242],\n [4053, 4056, 1],\n [4347, 5867, 1520],\n [5868, 5869, 1],\n [5941, 5942, 1],\n [6146, 6147, 1],\n [6149, 7379, 1230],\n [7393, 7401, 8],\n [7402, 7404, 1],\n [7406, 7411, 1],\n [7413, 7415, 1],\n [7418, 8192, 774],\n [8193, 8203, 1],\n [8206, 8292, 1],\n [8294, 8304, 1],\n [8308, 8318, 1],\n [8320, 8334, 1],\n [8352, 8384, 1],\n [8448, 8485, 1],\n [8487, 8489, 1],\n [8492, 8497, 1],\n [8499, 8525, 1],\n [8527, 8543, 1],\n [8585, 8587, 1],\n [8592, 9254, 1],\n [9280, 9290, 1],\n [9312, 10239, 1],\n [10496, 11123, 1],\n [11126, 11157, 1],\n [11159, 11263, 1],\n [11776, 11869, 1],\n [12272, 12292, 1],\n [12294, 12296, 2],\n [12297, 12320, 1],\n [12336, 12343, 1],\n [12348, 12351, 1],\n [12443, 12444, 1],\n [12448, 12539, 91],\n [12540, 12688, 148],\n [12689, 12703, 1],\n [12736, 12771, 1],\n [12783, 12832, 49],\n [12833, 12895, 1],\n [12927, 13007, 1],\n [13055, 13144, 89],\n [13145, 13311, 1],\n [19904, 19967, 1],\n [42752, 42785, 1],\n [42888, 42890, 1],\n [43056, 43065, 1],\n [43310, 43471, 161],\n [43867, 43882, 15],\n [43883, 64830, 20947],\n [64831, 65040, 209],\n [65041, 65049, 1],\n [65072, 65106, 1],\n [65108, 65126, 1],\n [65128, 65131, 1],\n [65279, 65281, 2],\n [65282, 65312, 1],\n [65339, 65344, 1],\n [65371, 65381, 1],\n [65392, 65438, 46],\n [65439, 65504, 65],\n [65505, 65510, 1],\n [65512, 65518, 1],\n [65529, 65533, 1],\n [65792, 65794, 1],\n [65799, 65843, 1],\n [65847, 65855, 1],\n [65936, 65948, 1],\n [66000, 66044, 1],\n [66273, 66299, 1],\n [113824, 113827, 1],\n [118608, 118723, 1],\n [118784, 119029, 1],\n [119040, 119078, 1],\n [119081, 119142, 1],\n [119146, 119162, 1],\n [119171, 119172, 1],\n [119180, 119209, 1],\n [119214, 119274, 1],\n [119488, 119507, 1],\n [119520, 119539, 1],\n [119552, 119638, 1],\n [119648, 119672, 1],\n [119808, 119892, 1],\n [119894, 119964, 1],\n [119966, 119967, 1],\n [119970, 119973, 3],\n [119974, 119977, 3],\n [119978, 119980, 1],\n [119982, 119993, 1],\n [119995, 119997, 2],\n [119998, 120003, 1],\n [120005, 120069, 1],\n [120071, 120074, 1],\n [120077, 120084, 1],\n [120086, 120092, 1],\n [120094, 120121, 1],\n [120123, 120126, 1],\n [120128, 120132, 1],\n [120134, 120138, 4],\n [120139, 120144, 1],\n [120146, 120485, 1],\n [120488, 120779, 1],\n [120782, 120831, 1],\n [126065, 126132, 1],\n [126209, 126269, 1],\n [126976, 127019, 1],\n [127024, 127123, 1],\n [127136, 127150, 1],\n [127153, 127167, 1],\n [127169, 127183, 1],\n [127185, 127221, 1],\n [127232, 127405, 1],\n [127462, 127487, 1],\n [127489, 127490, 1],\n [127504, 127547, 1],\n [127552, 127560, 1],\n [127568, 127569, 1],\n [127584, 127589, 1],\n [127744, 128727, 1],\n [128732, 128748, 1],\n [128752, 128764, 1],\n [128768, 128886, 1],\n [128891, 128985, 1],\n [128992, 129003, 1],\n [129008, 129024, 16],\n [129025, 129035, 1],\n [129040, 129095, 1],\n [129104, 129113, 1],\n [129120, 129159, 1],\n [129168, 129197, 1],\n [129200, 129201, 1],\n [129280, 129619, 1],\n [129632, 129645, 1],\n [129648, 129660, 1],\n [129664, 129672, 1],\n [129680, 129725, 1],\n [129727, 129733, 1],\n [129742, 129755, 1],\n [129760, 129768, 1],\n [129776, 129784, 1],\n [129792, 129938, 1],\n [129940, 129994, 1],\n [130032, 130041, 1],\n [917505, 917536, 31],\n [917537, 917631, 1]\n ]\n static foldCommon = [[924, 956, 32]]\n static Coptic = [\n [994, 1007, 1],\n [11392, 11507, 1],\n [11513, 11519, 1]\n ]\n static Cuneiform = [\n [73728, 74649, 1],\n [74752, 74862, 1],\n [74864, 74868, 1],\n [74880, 75075, 1]\n ]\n static Cypriot = [\n [67584, 67589, 1],\n [67592, 67594, 2],\n [67595, 67637, 1],\n [67639, 67640, 1],\n [67644, 67647, 3]\n ]\n static Cypro_Minoan = [[77712, 77810, 1]]\n static Cyrillic = [\n [1024, 1156, 1],\n [1159, 1327, 1],\n [7296, 7304, 1],\n [7467, 7544, 77],\n [11744, 11775, 1],\n [42560, 42655, 1],\n [65070, 65071, 1],\n [122928, 122989, 1],\n [123023, 123023, 1]\n ]\n static Deseret = [[66560, 66639, 1]]\n static Devanagari = [\n [2304, 2384, 1],\n [2389, 2403, 1],\n [2406, 2431, 1],\n [43232, 43263, 1],\n [72448, 72457, 1]\n ]\n static Dives_Akuru = [\n [71936, 71942, 1],\n [71945, 71948, 3],\n [71949, 71955, 1],\n [71957, 71958, 1],\n [71960, 71989, 1],\n [71991, 71992, 1],\n [71995, 72006, 1],\n [72016, 72025, 1]\n ]\n static Dogra = [[71680, 71739, 1]]\n static Duployan = [\n [113664, 113770, 1],\n [113776, 113788, 1],\n [113792, 113800, 1],\n [113808, 113817, 1],\n [113820, 113823, 1]\n ]\n static Egyptian_Hieroglyphs = [[77824, 78933, 1]]\n static Elbasan = [[66816, 66855, 1]]\n static Elymaic = [[69600, 69622, 1]]\n static Ethiopic = [\n [4608, 4680, 1],\n [4682, 4685, 1],\n [4688, 4694, 1],\n [4696, 4698, 2],\n [4699, 4701, 1],\n [4704, 4744, 1],\n [4746, 4749, 1],\n [4752, 4784, 1],\n [4786, 4789, 1],\n [4792, 4798, 1],\n [4800, 4802, 2],\n [4803, 4805, 1],\n [4808, 4822, 1],\n [4824, 4880, 1],\n [4882, 4885, 1],\n [4888, 4954, 1],\n [4957, 4988, 1],\n [4992, 5017, 1],\n [11648, 11670, 1],\n [11680, 11686, 1],\n [11688, 11694, 1],\n [11696, 11702, 1],\n [11704, 11710, 1],\n [11712, 11718, 1],\n [11720, 11726, 1],\n [11728, 11734, 1],\n [11736, 11742, 1],\n [43777, 43782, 1],\n [43785, 43790, 1],\n [43793, 43798, 1],\n [43808, 43814, 1],\n [43816, 43822, 1],\n [124896, 124902, 1],\n [124904, 124907, 1],\n [124909, 124910, 1],\n [124912, 124926, 1]\n ]\n static Georgian = [\n [4256, 4293, 1],\n [4295, 4301, 6],\n [4304, 4346, 1],\n [4348, 4351, 1],\n [7312, 7354, 1],\n [7357, 7359, 1],\n [11520, 11557, 1],\n [11559, 11565, 6]\n ]\n static Glagolitic = [\n [11264, 11359, 1],\n [122880, 122886, 1],\n [122888, 122904, 1],\n [122907, 122913, 1],\n [122915, 122916, 1],\n [122918, 122922, 1]\n ]\n static Gothic = [[66352, 66378, 1]]\n static Grantha = [\n [70400, 70403, 1],\n [70405, 70412, 1],\n [70415, 70416, 1],\n [70419, 70440, 1],\n [70442, 70448, 1],\n [70450, 70451, 1],\n [70453, 70457, 1],\n [70460, 70468, 1],\n [70471, 70472, 1],\n [70475, 70477, 1],\n [70480, 70487, 7],\n [70493, 70499, 1],\n [70502, 70508, 1],\n [70512, 70516, 1]\n ]\n static Greek = [\n [880, 883, 1],\n [885, 887, 1],\n [890, 893, 1],\n [895, 900, 5],\n [902, 904, 2],\n [905, 906, 1],\n [908, 910, 2],\n [911, 929, 1],\n [931, 993, 1],\n [1008, 1023, 1],\n [7462, 7466, 1],\n [7517, 7521, 1],\n [7526, 7530, 1],\n [7615, 7936, 321],\n [7937, 7957, 1],\n [7960, 7965, 1],\n [7968, 8005, 1],\n [8008, 8013, 1],\n [8016, 8023, 1],\n [8025, 8031, 2],\n [8032, 8061, 1],\n [8064, 8116, 1],\n [8118, 8132, 1],\n [8134, 8147, 1],\n [8150, 8155, 1],\n [8157, 8175, 1],\n [8178, 8180, 1],\n [8182, 8190, 1],\n [8486, 43877, 35391],\n [65856, 65934, 1],\n [65952, 119296, 53344],\n [119297, 119365, 1]\n ]\n static foldGreek = [[181, 837, 656]]\n static Gujarati = [\n [2689, 2691, 1],\n [2693, 2701, 1],\n [2703, 2705, 1],\n [2707, 2728, 1],\n [2730, 2736, 1],\n [2738, 2739, 1],\n [2741, 2745, 1],\n [2748, 2757, 1],\n [2759, 2761, 1],\n [2763, 2765, 1],\n [2768, 2784, 16],\n [2785, 2787, 1],\n [2790, 2801, 1],\n [2809, 2815, 1]\n ]\n static Gunjala_Gondi = [\n [73056, 73061, 1],\n [73063, 73064, 1],\n [73066, 73102, 1],\n [73104, 73105, 1],\n [73107, 73112, 1],\n [73120, 73129, 1]\n ]\n static Gurmukhi = [\n [2561, 2563, 1],\n [2565, 2570, 1],\n [2575, 2576, 1],\n [2579, 2600, 1],\n [2602, 2608, 1],\n [2610, 2611, 1],\n [2613, 2614, 1],\n [2616, 2617, 1],\n [2620, 2622, 2],\n [2623, 2626, 1],\n [2631, 2632, 1],\n [2635, 2637, 1],\n [2641, 2649, 8],\n [2650, 2652, 1],\n [2654, 2662, 8],\n [2663, 2678, 1]\n ]\n static Han = [\n [11904, 11929, 1],\n [11931, 12019, 1],\n [12032, 12245, 1],\n [12293, 12295, 2],\n [12321, 12329, 1],\n [12344, 12347, 1],\n [13312, 19903, 1],\n [19968, 40959, 1],\n [63744, 64109, 1],\n [64112, 64217, 1],\n [94178, 94179, 1],\n [94192, 94193, 1],\n [131072, 173791, 1],\n [173824, 177977, 1],\n [177984, 178205, 1],\n [178208, 183969, 1],\n [183984, 191456, 1],\n [194560, 195101, 1],\n [196608, 201546, 1],\n [201552, 205743, 1]\n ]\n static Hangul = [\n [4352, 4607, 1],\n [12334, 12335, 1],\n [12593, 12686, 1],\n [12800, 12830, 1],\n [12896, 12926, 1],\n [43360, 43388, 1],\n [44032, 55203, 1],\n [55216, 55238, 1],\n [55243, 55291, 1],\n [65440, 65470, 1],\n [65474, 65479, 1],\n [65482, 65487, 1],\n [65490, 65495, 1],\n [65498, 65500, 1]\n ]\n static Hanifi_Rohingya = [\n [68864, 68903, 1],\n [68912, 68921, 1]\n ]\n static Hanunoo = [[5920, 5940, 1]]\n static Hatran = [\n [67808, 67826, 1],\n [67828, 67829, 1],\n [67835, 67839, 1]\n ]\n static Hebrew = [\n [1425, 1479, 1],\n [1488, 1514, 1],\n [1519, 1524, 1],\n [64285, 64310, 1],\n [64312, 64316, 1],\n [64318, 64320, 2],\n [64321, 64323, 2],\n [64324, 64326, 2],\n [64327, 64335, 1]\n ]\n static Hiragana = [\n [12353, 12438, 1],\n [12445, 12447, 1],\n [110593, 110879, 1],\n [110898, 110928, 30],\n [110929, 110930, 1],\n [127488, 127488, 1]\n ]\n static Imperial_Aramaic = [\n [67648, 67669, 1],\n [67671, 67679, 1]\n ]\n static Inherited = [\n [768, 879, 1],\n [1157, 1158, 1],\n [1611, 1621, 1],\n [1648, 2385, 737],\n [2386, 2388, 1],\n [6832, 6862, 1],\n [7376, 7378, 1],\n [7380, 7392, 1],\n [7394, 7400, 1],\n [7405, 7412, 7],\n [7416, 7417, 1],\n [7616, 7679, 1],\n [8204, 8205, 1],\n [8400, 8432, 1],\n [12330, 12333, 1],\n [12441, 12442, 1],\n [65024, 65039, 1],\n [65056, 65069, 1],\n [66045, 66272, 227],\n [70459, 118528, 48069],\n [118529, 118573, 1],\n [118576, 118598, 1],\n [119143, 119145, 1],\n [119163, 119170, 1],\n [119173, 119179, 1],\n [119210, 119213, 1],\n [917760, 917999, 1]\n ]\n static foldInherited = [\n [921, 953, 32],\n [8126, 8126, 1]\n ]\n static Inscriptional_Pahlavi = [\n [68448, 68466, 1],\n [68472, 68479, 1]\n ]\n static Inscriptional_Parthian = [\n [68416, 68437, 1],\n [68440, 68447, 1]\n ]\n static Javanese = [\n [43392, 43469, 1],\n [43472, 43481, 1],\n [43486, 43487, 1]\n ]\n static Kaithi = [\n [69760, 69826, 1],\n [69837, 69837, 1]\n ]\n static Kannada = [\n [3200, 3212, 1],\n [3214, 3216, 1],\n [3218, 3240, 1],\n [3242, 3251, 1],\n [3253, 3257, 1],\n [3260, 3268, 1],\n [3270, 3272, 1],\n [3274, 3277, 1],\n [3285, 3286, 1],\n [3293, 3294, 1],\n [3296, 3299, 1],\n [3302, 3311, 1],\n [3313, 3315, 1]\n ]\n static Katakana = [\n [12449, 12538, 1],\n [12541, 12543, 1],\n [12784, 12799, 1],\n [13008, 13054, 1],\n [13056, 13143, 1],\n [65382, 65391, 1],\n [65393, 65437, 1],\n [110576, 110579, 1],\n [110581, 110587, 1],\n [110589, 110590, 1],\n [110592, 110880, 288],\n [110881, 110882, 1],\n [110933, 110948, 15],\n [110949, 110951, 1]\n ]\n static Kawi = [\n [73472, 73488, 1],\n [73490, 73530, 1],\n [73534, 73561, 1]\n ]\n static Kayah_Li = [\n [43264, 43309, 1],\n [43311, 43311, 1]\n ]\n static Kharoshthi = [\n [68096, 68099, 1],\n [68101, 68102, 1],\n [68108, 68115, 1],\n [68117, 68119, 1],\n [68121, 68149, 1],\n [68152, 68154, 1],\n [68159, 68168, 1],\n [68176, 68184, 1]\n ]\n static Khitan_Small_Script = [\n [94180, 101120, 6940],\n [101121, 101589, 1]\n ]\n static Khmer = [\n [6016, 6109, 1],\n [6112, 6121, 1],\n [6128, 6137, 1],\n [6624, 6655, 1]\n ]\n static Khojki = [\n [70144, 70161, 1],\n [70163, 70209, 1]\n ]\n static Khudawadi = [\n [70320, 70378, 1],\n [70384, 70393, 1]\n ]\n static Lao = [\n [3713, 3714, 1],\n [3716, 3718, 2],\n [3719, 3722, 1],\n [3724, 3747, 1],\n [3749, 3751, 2],\n [3752, 3773, 1],\n [3776, 3780, 1],\n [3782, 3784, 2],\n [3785, 3790, 1],\n [3792, 3801, 1],\n [3804, 3807, 1]\n ]\n static Latin = [\n [65, 90, 1],\n [97, 122, 1],\n [170, 186, 16],\n [192, 214, 1],\n [216, 246, 1],\n [248, 696, 1],\n [736, 740, 1],\n [7424, 7461, 1],\n [7468, 7516, 1],\n [7522, 7525, 1],\n [7531, 7543, 1],\n [7545, 7614, 1],\n [7680, 7935, 1],\n [8305, 8319, 14],\n [8336, 8348, 1],\n [8490, 8491, 1],\n [8498, 8526, 28],\n [8544, 8584, 1],\n [11360, 11391, 1],\n [42786, 42887, 1],\n [42891, 42954, 1],\n [42960, 42961, 1],\n [42963, 42965, 2],\n [42966, 42969, 1],\n [42994, 43007, 1],\n [43824, 43866, 1],\n [43868, 43876, 1],\n [43878, 43881, 1],\n [64256, 64262, 1],\n [65313, 65338, 1],\n [65345, 65370, 1],\n [67456, 67461, 1],\n [67463, 67504, 1],\n [67506, 67514, 1],\n [122624, 122654, 1],\n [122661, 122666, 1]\n ]\n static Lepcha = [\n [7168, 7223, 1],\n [7227, 7241, 1],\n [7245, 7247, 1]\n ]\n static Limbu = [\n [6400, 6430, 1],\n [6432, 6443, 1],\n [6448, 6459, 1],\n [6464, 6468, 4],\n [6469, 6479, 1]\n ]\n static Linear_A = [\n [67072, 67382, 1],\n [67392, 67413, 1],\n [67424, 67431, 1]\n ]\n static Linear_B = [\n [65536, 65547, 1],\n [65549, 65574, 1],\n [65576, 65594, 1],\n [65596, 65597, 1],\n [65599, 65613, 1],\n [65616, 65629, 1],\n [65664, 65786, 1]\n ]\n static Lisu = [\n [42192, 42239, 1],\n [73648, 73648, 1]\n ]\n static Lycian = [[66176, 66204, 1]]\n static Lydian = [\n [67872, 67897, 1],\n [67903, 67903, 1]\n ]\n static Mahajani = [[69968, 70006, 1]]\n static Makasar = [[73440, 73464, 1]]\n static Malayalam = [\n [3328, 3340, 1],\n [3342, 3344, 1],\n [3346, 3396, 1],\n [3398, 3400, 1],\n [3402, 3407, 1],\n [3412, 3427, 1],\n [3430, 3455, 1]\n ]\n static Mandaic = [\n [2112, 2139, 1],\n [2142, 2142, 1]\n ]\n static Manichaean = [\n [68288, 68326, 1],\n [68331, 68342, 1]\n ]\n static Marchen = [\n [72816, 72847, 1],\n [72850, 72871, 1],\n [72873, 72886, 1]\n ]\n static Masaram_Gondi = [\n [72960, 72966, 1],\n [72968, 72969, 1],\n [72971, 73014, 1],\n [73018, 73020, 2],\n [73021, 73023, 2],\n [73024, 73031, 1],\n [73040, 73049, 1]\n ]\n static Medefaidrin = [[93760, 93850, 1]]\n static Meetei_Mayek = [\n [43744, 43766, 1],\n [43968, 44013, 1],\n [44016, 44025, 1]\n ]\n static Mende_Kikakui = [\n [124928, 125124, 1],\n [125127, 125142, 1]\n ]\n static Meroitic_Cursive = [\n [68000, 68023, 1],\n [68028, 68047, 1],\n [68050, 68095, 1]\n ]\n static Meroitic_Hieroglyphs = [[67968, 67999, 1]]\n static Miao = [\n [93952, 94026, 1],\n [94031, 94087, 1],\n [94095, 94111, 1]\n ]\n static Modi = [\n [71168, 71236, 1],\n [71248, 71257, 1]\n ]\n static Mongolian = [\n [6144, 6145, 1],\n [6148, 6150, 2],\n [6151, 6169, 1],\n [6176, 6264, 1],\n [6272, 6314, 1],\n [71264, 71276, 1]\n ]\n static Mro = [\n [92736, 92766, 1],\n [92768, 92777, 1],\n [92782, 92783, 1]\n ]\n static Multani = [\n [70272, 70278, 1],\n [70280, 70282, 2],\n [70283, 70285, 1],\n [70287, 70301, 1],\n [70303, 70313, 1]\n ]\n static Myanmar = [\n [4096, 4255, 1],\n [43488, 43518, 1],\n [43616, 43647, 1]\n ]\n static Nabataean = [\n [67712, 67742, 1],\n [67751, 67759, 1]\n ]\n static Nag_Mundari = [[124112, 124153, 1]]\n static Nandinagari = [\n [72096, 72103, 1],\n [72106, 72151, 1],\n [72154, 72164, 1]\n ]\n static New_Tai_Lue = [\n [6528, 6571, 1],\n [6576, 6601, 1],\n [6608, 6618, 1],\n [6622, 6623, 1]\n ]\n static Newa = [\n [70656, 70747, 1],\n [70749, 70753, 1]\n ]\n static Nko = [\n [1984, 2042, 1],\n [2045, 2047, 1]\n ]\n static Nushu = [\n [94177, 110960, 16783],\n [110961, 111355, 1]\n ]\n static Nyiakeng_Puachue_Hmong = [\n [123136, 123180, 1],\n [123184, 123197, 1],\n [123200, 123209, 1],\n [123214, 123215, 1]\n ]\n static Ogham = [[5760, 5788, 1]]\n static Ol_Chiki = [[7248, 7295, 1]]\n static Old_Hungarian = [\n [68736, 68786, 1],\n [68800, 68850, 1],\n [68858, 68863, 1]\n ]\n static Old_Italic = [\n [66304, 66339, 1],\n [66349, 66351, 1]\n ]\n static Old_North_Arabian = [[68224, 68255, 1]]\n static Old_Permic = [[66384, 66426, 1]]\n static Old_Persian = [\n [66464, 66499, 1],\n [66504, 66517, 1]\n ]\n static Old_Sogdian = [[69376, 69415, 1]]\n static Old_South_Arabian = [[68192, 68223, 1]]\n static Old_Turkic = [[68608, 68680, 1]]\n static Old_Uyghur = [[69488, 69513, 1]]\n static Oriya = [\n [2817, 2819, 1],\n [2821, 2828, 1],\n [2831, 2832, 1],\n [2835, 2856, 1],\n [2858, 2864, 1],\n [2866, 2867, 1],\n [2869, 2873, 1],\n [2876, 2884, 1],\n [2887, 2888, 1],\n [2891, 2893, 1],\n [2901, 2903, 1],\n [2908, 2909, 1],\n [2911, 2915, 1],\n [2918, 2935, 1]\n ]\n static Osage = [\n [66736, 66771, 1],\n [66776, 66811, 1]\n ]\n static Osmanya = [\n [66688, 66717, 1],\n [66720, 66729, 1]\n ]\n static Pahawh_Hmong = [\n [92928, 92997, 1],\n [93008, 93017, 1],\n [93019, 93025, 1],\n [93027, 93047, 1],\n [93053, 93071, 1]\n ]\n static Palmyrene = [[67680, 67711, 1]]\n static Pau_Cin_Hau = [[72384, 72440, 1]]\n static Phags_Pa = [[43072, 43127, 1]]\n static Phoenician = [\n [67840, 67867, 1],\n [67871, 67871, 1]\n ]\n static Psalter_Pahlavi = [\n [68480, 68497, 1],\n [68505, 68508, 1],\n [68521, 68527, 1]\n ]\n static Rejang = [\n [43312, 43347, 1],\n [43359, 43359, 1]\n ]\n static Runic = [\n [5792, 5866, 1],\n [5870, 5880, 1]\n ]\n static Samaritan = [\n [2048, 2093, 1],\n [2096, 2110, 1]\n ]\n static Saurashtra = [\n [43136, 43205, 1],\n [43214, 43225, 1]\n ]\n static Sharada = [[70016, 70111, 1]]\n static Shavian = [[66640, 66687, 1]]\n static Siddham = [\n [71040, 71093, 1],\n [71096, 71133, 1]\n ]\n static SignWriting = [\n [120832, 121483, 1],\n [121499, 121503, 1],\n [121505, 121519, 1]\n ]\n static Sinhala = [\n [3457, 3459, 1],\n [3461, 3478, 1],\n [3482, 3505, 1],\n [3507, 3515, 1],\n [3517, 3520, 3],\n [3521, 3526, 1],\n [3530, 3535, 5],\n [3536, 3540, 1],\n [3542, 3544, 2],\n [3545, 3551, 1],\n [3558, 3567, 1],\n [3570, 3572, 1],\n [70113, 70132, 1]\n ]\n static Sogdian = [[69424, 69465, 1]]\n static Sora_Sompeng = [\n [69840, 69864, 1],\n [69872, 69881, 1]\n ]\n static Soyombo = [[72272, 72354, 1]]\n static Sundanese = [\n [7040, 7103, 1],\n [7360, 7367, 1]\n ]\n static Syloti_Nagri = [[43008, 43052, 1]]\n static Syriac = [\n [1792, 1805, 1],\n [1807, 1866, 1],\n [1869, 1871, 1],\n [2144, 2154, 1]\n ]\n static Tagalog = [\n [5888, 5909, 1],\n [5919, 5919, 1]\n ]\n static Tagbanwa = [\n [5984, 5996, 1],\n [5998, 6000, 1],\n [6002, 6003, 1]\n ]\n static Tai_Le = [\n [6480, 6509, 1],\n [6512, 6516, 1]\n ]\n static Tai_Tham = [\n [6688, 6750, 1],\n [6752, 6780, 1],\n [6783, 6793, 1],\n [6800, 6809, 1],\n [6816, 6829, 1]\n ]\n static Tai_Viet = [\n [43648, 43714, 1],\n [43739, 43743, 1]\n ]\n static Takri = [\n [71296, 71353, 1],\n [71360, 71369, 1]\n ]\n static Tamil = [\n [2946, 2947, 1],\n [2949, 2954, 1],\n [2958, 2960, 1],\n [2962, 2965, 1],\n [2969, 2970, 1],\n [2972, 2974, 2],\n [2975, 2979, 4],\n [2980, 2984, 4],\n [2985, 2986, 1],\n [2990, 3001, 1],\n [3006, 3010, 1],\n [3014, 3016, 1],\n [3018, 3021, 1],\n [3024, 3031, 7],\n [3046, 3066, 1],\n [73664, 73713, 1],\n [73727, 73727, 1]\n ]\n static Tangsa = [\n [92784, 92862, 1],\n [92864, 92873, 1]\n ]\n static Tangut = [\n [94176, 94208, 32],\n [94209, 100343, 1],\n [100352, 101119, 1],\n [101632, 101640, 1]\n ]\n static Telugu = [\n [3072, 3084, 1],\n [3086, 3088, 1],\n [3090, 3112, 1],\n [3114, 3129, 1],\n [3132, 3140, 1],\n [3142, 3144, 1],\n [3146, 3149, 1],\n [3157, 3158, 1],\n [3160, 3162, 1],\n [3165, 3168, 3],\n [3169, 3171, 1],\n [3174, 3183, 1],\n [3191, 3199, 1]\n ]\n static Thaana = [[1920, 1969, 1]]\n static Thai = [\n [3585, 3642, 1],\n [3648, 3675, 1]\n ]\n static Tibetan = [\n [3840, 3911, 1],\n [3913, 3948, 1],\n [3953, 3991, 1],\n [3993, 4028, 1],\n [4030, 4044, 1],\n [4046, 4052, 1],\n [4057, 4058, 1]\n ]\n static Tifinagh = [\n [11568, 11623, 1],\n [11631, 11632, 1],\n [11647, 11647, 1]\n ]\n static Tirhuta = [\n [70784, 70855, 1],\n [70864, 70873, 1]\n ]\n static Toto = [[123536, 123566, 1]]\n static Ugaritic = [\n [66432, 66461, 1],\n [66463, 66463, 1]\n ]\n static Vai = [[42240, 42539, 1]]\n static Vithkuqi = [\n [66928, 66938, 1],\n [66940, 66954, 1],\n [66956, 66962, 1],\n [66964, 66965, 1],\n [66967, 66977, 1],\n [66979, 66993, 1],\n [66995, 67001, 1],\n [67003, 67004, 1]\n ]\n static Wancho = [\n [123584, 123641, 1],\n [123647, 123647, 1]\n ]\n static Warang_Citi = [\n [71840, 71922, 1],\n [71935, 71935, 1]\n ]\n static Yezidi = [\n [69248, 69289, 1],\n [69291, 69293, 1],\n [69296, 69297, 1]\n ]\n static Yi = [\n [40960, 42124, 1],\n [42128, 42182, 1]\n ]\n static Zanabazar_Square = [[72192, 72263, 1]]\n\n static CATEGORIES = new Map([\n ['C', UnicodeTables.C],\n ['Cc', UnicodeTables.Cc],\n ['Cf', UnicodeTables.Cf],\n ['Co', UnicodeTables.Co],\n ['Cs', UnicodeTables.Cs],\n ['L', UnicodeTables.L],\n ['Ll', UnicodeTables.Ll],\n ['Lm', UnicodeTables.Lm],\n ['Lo', UnicodeTables.Lo],\n ['Lt', UnicodeTables.Lt],\n ['Lu', UnicodeTables.Lu],\n ['M', UnicodeTables.M],\n ['Mc', UnicodeTables.Mc],\n ['Me', UnicodeTables.Me],\n ['Mn', UnicodeTables.Mn],\n ['N', UnicodeTables.N],\n ['Nd', UnicodeTables.Nd],\n ['Nl', UnicodeTables.Nl],\n ['No', UnicodeTables.No],\n ['P', UnicodeTables.P],\n ['Pc', UnicodeTables.Pc],\n ['Pd', UnicodeTables.Pd],\n ['Pe', UnicodeTables.Pe],\n ['Pf', UnicodeTables.Pf],\n ['Pi', UnicodeTables.Pi],\n ['Po', UnicodeTables.Po],\n ['Ps', UnicodeTables.Ps],\n ['S', UnicodeTables.S],\n ['Sc', UnicodeTables.Sc],\n ['Sk', UnicodeTables.Sk],\n ['Sm', UnicodeTables.Sm],\n ['So', UnicodeTables.So],\n ['Z', UnicodeTables.Z],\n ['Zl', UnicodeTables.Zl],\n ['Zp', UnicodeTables.Zp],\n ['Zs', UnicodeTables.Zs]\n ])\n\n static SCRIPTS = new Map([\n ['Adlam', UnicodeTables.Adlam],\n ['Ahom', UnicodeTables.Ahom],\n ['Anatolian_Hieroglyphs', UnicodeTables.Anatolian_Hieroglyphs],\n ['Arabic', UnicodeTables.Arabic],\n ['Armenian', UnicodeTables.Armenian],\n ['Avestan', UnicodeTables.Avestan],\n ['Balinese', UnicodeTables.Balinese],\n ['Bamum', UnicodeTables.Bamum],\n ['Bassa_Vah', UnicodeTables.Bassa_Vah],\n ['Batak', UnicodeTables.Batak],\n ['Bengali', UnicodeTables.Bengali],\n ['Bhaiksuki', UnicodeTables.Bhaiksuki],\n ['Bopomofo', UnicodeTables.Bopomofo],\n ['Brahmi', UnicodeTables.Brahmi],\n ['Braille', UnicodeTables.Braille],\n ['Buginese', UnicodeTables.Buginese],\n ['Buhid', UnicodeTables.Buhid],\n ['Canadian_Aboriginal', UnicodeTables.Canadian_Aboriginal],\n ['Carian', UnicodeTables.Carian],\n ['Caucasian_Albanian', UnicodeTables.Caucasian_Albanian],\n ['Chakma', UnicodeTables.Chakma],\n ['Cham', UnicodeTables.Cham],\n ['Cherokee', UnicodeTables.Cherokee],\n ['Chorasmian', UnicodeTables.Chorasmian],\n ['Common', UnicodeTables.Common],\n ['Coptic', UnicodeTables.Coptic],\n ['Cuneiform', UnicodeTables.Cuneiform],\n ['Cypriot', UnicodeTables.Cypriot],\n ['Cypro_Minoan', UnicodeTables.Cypro_Minoan],\n ['Cyrillic', UnicodeTables.Cyrillic],\n ['Deseret', UnicodeTables.Deseret],\n ['Devanagari', UnicodeTables.Devanagari],\n ['Dives_Akuru', UnicodeTables.Dives_Akuru],\n ['Dogra', UnicodeTables.Dogra],\n ['Duployan', UnicodeTables.Duployan],\n ['Egyptian_Hieroglyphs', UnicodeTables.Egyptian_Hieroglyphs],\n ['Elbasan', UnicodeTables.Elbasan],\n ['Elymaic', UnicodeTables.Elymaic],\n ['Ethiopic', UnicodeTables.Ethiopic],\n ['Georgian', UnicodeTables.Georgian],\n ['Glagolitic', UnicodeTables.Glagolitic],\n ['Gothic', UnicodeTables.Gothic],\n ['Grantha', UnicodeTables.Grantha],\n ['Greek', UnicodeTables.Greek],\n ['Gujarati', UnicodeTables.Gujarati],\n ['Gunjala_Gondi', UnicodeTables.Gunjala_Gondi],\n ['Gurmukhi', UnicodeTables.Gurmukhi],\n ['Han', UnicodeTables.Han],\n ['Hangul', UnicodeTables.Hangul],\n ['Hanifi_Rohingya', UnicodeTables.Hanifi_Rohingya],\n ['Hanunoo', UnicodeTables.Hanunoo],\n ['Hatran', UnicodeTables.Hatran],\n ['Hebrew', UnicodeTables.Hebrew],\n ['Hiragana', UnicodeTables.Hiragana],\n ['Imperial_Aramaic', UnicodeTables.Imperial_Aramaic],\n ['Inherited', UnicodeTables.Inherited],\n ['Inscriptional_Pahlavi', UnicodeTables.Inscriptional_Pahlavi],\n ['Inscriptional_Parthian', UnicodeTables.Inscriptional_Parthian],\n ['Javanese', UnicodeTables.Javanese],\n ['Kaithi', UnicodeTables.Kaithi],\n ['Kannada', UnicodeTables.Kannada],\n ['Katakana', UnicodeTables.Katakana],\n ['Kawi', UnicodeTables.Kawi],\n ['Kayah_Li', UnicodeTables.Kayah_Li],\n ['Kharoshthi', UnicodeTables.Kharoshthi],\n ['Khitan_Small_Script', UnicodeTables.Khitan_Small_Script],\n ['Khmer', UnicodeTables.Khmer],\n ['Khojki', UnicodeTables.Khojki],\n ['Khudawadi', UnicodeTables.Khudawadi],\n ['Lao', UnicodeTables.Lao],\n ['Latin', UnicodeTables.Latin],\n ['Lepcha', UnicodeTables.Lepcha],\n ['Limbu', UnicodeTables.Limbu],\n ['Linear_A', UnicodeTables.Linear_A],\n ['Linear_B', UnicodeTables.Linear_B],\n ['Lisu', UnicodeTables.Lisu],\n ['Lycian', UnicodeTables.Lycian],\n ['Lydian', UnicodeTables.Lydian],\n ['Mahajani', UnicodeTables.Mahajani],\n ['Makasar', UnicodeTables.Makasar],\n ['Malayalam', UnicodeTables.Malayalam],\n ['Mandaic', UnicodeTables.Mandaic],\n ['Manichaean', UnicodeTables.Manichaean],\n ['Marchen', UnicodeTables.Marchen],\n ['Masaram_Gondi', UnicodeTables.Masaram_Gondi],\n ['Medefaidrin', UnicodeTables.Medefaidrin],\n ['Meetei_Mayek', UnicodeTables.Meetei_Mayek],\n ['Mende_Kikakui', UnicodeTables.Mende_Kikakui],\n ['Meroitic_Cursive', UnicodeTables.Meroitic_Cursive],\n ['Meroitic_Hieroglyphs', UnicodeTables.Meroitic_Hieroglyphs],\n ['Miao', UnicodeTables.Miao],\n ['Modi', UnicodeTables.Modi],\n ['Mongolian', UnicodeTables.Mongolian],\n ['Mro', UnicodeTables.Mro],\n ['Multani', UnicodeTables.Multani],\n ['Myanmar', UnicodeTables.Myanmar],\n ['Nabataean', UnicodeTables.Nabataean],\n ['Nag_Mundari', UnicodeTables.Nag_Mundari],\n ['Nandinagari', UnicodeTables.Nandinagari],\n ['New_Tai_Lue', UnicodeTables.New_Tai_Lue],\n ['Newa', UnicodeTables.Newa],\n ['Nko', UnicodeTables.Nko],\n ['Nushu', UnicodeTables.Nushu],\n ['Nyiakeng_Puachue_Hmong', UnicodeTables.Nyiakeng_Puachue_Hmong],\n ['Ogham', UnicodeTables.Ogham],\n ['Ol_Chiki', UnicodeTables.Ol_Chiki],\n ['Old_Hungarian', UnicodeTables.Old_Hungarian],\n ['Old_Italic', UnicodeTables.Old_Italic],\n ['Old_North_Arabian', UnicodeTables.Old_North_Arabian],\n ['Old_Permic', UnicodeTables.Old_Permic],\n ['Old_Persian', UnicodeTables.Old_Persian],\n ['Old_Sogdian', UnicodeTables.Old_Sogdian],\n ['Old_South_Arabian', UnicodeTables.Old_South_Arabian],\n ['Old_Turkic', UnicodeTables.Old_Turkic],\n ['Old_Uyghur', UnicodeTables.Old_Uyghur],\n ['Oriya', UnicodeTables.Oriya],\n ['Osage', UnicodeTables.Osage],\n ['Osmanya', UnicodeTables.Osmanya],\n ['Pahawh_Hmong', UnicodeTables.Pahawh_Hmong],\n ['Palmyrene', UnicodeTables.Palmyrene],\n ['Pau_Cin_Hau', UnicodeTables.Pau_Cin_Hau],\n ['Phags_Pa', UnicodeTables.Phags_Pa],\n ['Phoenician', UnicodeTables.Phoenician],\n ['Psalter_Pahlavi', UnicodeTables.Psalter_Pahlavi],\n ['Rejang', UnicodeTables.Rejang],\n ['Runic', UnicodeTables.Runic],\n ['Samaritan', UnicodeTables.Samaritan],\n ['Saurashtra', UnicodeTables.Saurashtra],\n ['Sharada', UnicodeTables.Sharada],\n ['Shavian', UnicodeTables.Shavian],\n ['Siddham', UnicodeTables.Siddham],\n ['SignWriting', UnicodeTables.SignWriting],\n ['Sinhala', UnicodeTables.Sinhala],\n ['Sogdian', UnicodeTables.Sogdian],\n ['Sora_Sompeng', UnicodeTables.Sora_Sompeng],\n ['Soyombo', UnicodeTables.Soyombo],\n ['Sundanese', UnicodeTables.Sundanese],\n ['Syloti_Nagri', UnicodeTables.Syloti_Nagri],\n ['Syriac', UnicodeTables.Syriac],\n ['Tagalog', UnicodeTables.Tagalog],\n ['Tagbanwa', UnicodeTables.Tagbanwa],\n ['Tai_Le', UnicodeTables.Tai_Le],\n ['Tai_Tham', UnicodeTables.Tai_Tham],\n ['Tai_Viet', UnicodeTables.Tai_Viet],\n ['Takri', UnicodeTables.Takri],\n ['Tamil', UnicodeTables.Tamil],\n ['Tangsa', UnicodeTables.Tangsa],\n ['Tangut', UnicodeTables.Tangut],\n ['Telugu', UnicodeTables.Telugu],\n ['Thaana', UnicodeTables.Thaana],\n ['Thai', UnicodeTables.Thai],\n ['Tibetan', UnicodeTables.Tibetan],\n ['Tifinagh', UnicodeTables.Tifinagh],\n ['Tirhuta', UnicodeTables.Tirhuta],\n ['Toto', UnicodeTables.Toto],\n ['Ugaritic', UnicodeTables.Ugaritic],\n ['Vai', UnicodeTables.Vai],\n ['Vithkuqi', UnicodeTables.Vithkuqi],\n ['Wancho', UnicodeTables.Wancho],\n ['Warang_Citi', UnicodeTables.Warang_Citi],\n ['Yezidi', UnicodeTables.Yezidi],\n ['Yi', UnicodeTables.Yi],\n ['Zanabazar_Square', UnicodeTables.Zanabazar_Square]\n ])\n\n static FOLD_CATEGORIES = new Map([\n ['L', UnicodeTables.foldL],\n ['Ll', UnicodeTables.foldLl],\n ['Lt', UnicodeTables.foldLt],\n ['Lu', UnicodeTables.foldLu],\n ['M', UnicodeTables.foldM],\n ['Mn', UnicodeTables.foldMn]\n ])\n\n static FOLD_SCRIPT = new Map([\n ['Common', UnicodeTables.foldCommon],\n ['Greek', UnicodeTables.foldGreek],\n ['Inherited', UnicodeTables.foldInherited]\n ])\n}\n\nexport { UnicodeTables }\n","import { Codepoint } from './Codepoint'\nimport { UnicodeTables } from './UnicodeTables'\n/**\n * Utilities for dealing with Unicode better than JS does.\n */\nclass Unicode {\n // The highest legal rune value.\n static MAX_RUNE = 0x10ffff\n // The highest legal ASCII value.\n static MAX_ASCII = 0x7f\n // The highest legal Latin-1 value.\n static MAX_LATIN1 = 0xff\n // The highest legal Basic Multilingual Plane (BMP) value.\n static MAX_BMP = 0xffff\n // Minimum and maximum runes involved in folding.\n // Checked during test.\n static MIN_FOLD = 0x0041\n static MAX_FOLD = 0x1044f\n\n // is32 uses binary search to test whether rune is in the specified\n // slice of 32-bit ranges.\n static is32(ranges, r) {\n // binary search over ranges\n let lo = 0\n let hi = ranges.length\n while (lo < hi) {\n let m = lo + Math.floor((hi - lo) / 2)\n let range = ranges[m]\n if (range[0] <= r && r <= range[1]) {\n return (r - range[0]) % range[2] === 0\n }\n if (r < range[0]) {\n hi = m\n } else {\n lo = m + 1\n }\n }\n return false\n }\n\n // is tests whether rune is in the specified table of ranges.\n static is(ranges, r) {\n // common case: rune is ASCII or Latin-1, so use linear search.\n if (r <= this.MAX_LATIN1) {\n for (let range of ranges) {\n // range = [lo, hi, stride]\n if (r > range[1]) {\n continue\n }\n if (r < range[0]) {\n return false\n }\n return (r - range[0]) % range[2] === 0\n }\n return false\n }\n return ranges.length > 0 && r >= ranges[0][0] && this.is32(ranges, r)\n }\n\n // isUpper reports whether the rune is an upper case letter.\n static isUpper(r) {\n if (r <= this.MAX_LATIN1) {\n const s = String.fromCodePoint(r)\n return s.toUpperCase() === s && s.toLowerCase() !== s\n }\n return this.is(UnicodeTables.Upper, r)\n }\n\n // isPrint reports whether the rune is printable (Unicode L/M/N/P/S or ' ').\n static isPrint(r) {\n if (r <= this.MAX_LATIN1) {\n return (r >= 0x20 && r < 0x7f) || (r >= 0xa1 && r !== 0xad)\n }\n return (\n this.is(UnicodeTables.L, r) ||\n this.is(UnicodeTables.M, r) ||\n this.is(UnicodeTables.N, r) ||\n this.is(UnicodeTables.P, r) ||\n this.is(UnicodeTables.S, r)\n )\n }\n\n // simpleFold iterates over Unicode code points equivalent under\n // the Unicode-defined simple case folding. Among the code points\n // equivalent to rune (including rune itself), SimpleFold returns the\n // smallest r >= rune if one exists, or else the smallest r >= 0.\n //\n // For example:\n // SimpleFold('A') = 'a'\n // SimpleFold('a') = 'A'\n //\n // SimpleFold('K') = 'k'\n // SimpleFold('k') = '\\u212A' (Kelvin symbol, K)\n // SimpleFold('\\u212A') = 'K'\n //\n // SimpleFold('1') = '1'\n //\n // Derived from Go's unicode.SimpleFold.\n //\n static simpleFold(r) {\n // Consult caseOrbit table for special cases.\n if (UnicodeTables.CASE_ORBIT.has(r)) {\n return UnicodeTables.CASE_ORBIT.get(r)\n }\n\n // No folding specified. This is a one- or two-element\n // equivalence class containing rune and toLower(rune)\n // and toUpper(rune) if they are different from rune.\n const l = Codepoint.toLowerCase(r)\n if (l !== r) {\n return l\n }\n return Codepoint.toUpperCase(r)\n }\n\n // equalsIgnoreCase performs case-insensitive equality comparison\n // on the given runes |r1| and |r2|, with special consideration\n // for the likely scenario where both runes are ASCII characters.\n // -1 is interpreted as the end-of-file mark.\n static equalsIgnoreCase(r1, r2) {\n // Runes already match, or one of them is EOF\n if (r1 < 0 || r2 < 0 || r1 === r2) {\n return true\n }\n\n // Fast path for the common case where both runes are ASCII characters.\n // Coerces both runes to lowercase if applicable.\n if (r1 <= this.MAX_ASCII && r2 <= this.MAX_ASCII) {\n if (Codepoint.CODES.get('A') <= r1 && r1 <= Codepoint.CODES.get('Z')) {\n r1 |= 0x20\n }\n\n if (Codepoint.CODES.get('A') <= r2 && r2 <= Codepoint.CODES.get('Z')) {\n r2 |= 0x20\n }\n\n return r1 === r2\n }\n\n // Fall back to full Unicode case folding otherwise.\n // Invariant: r1 must be non-negative\n for (let r = this.simpleFold(r1); r !== r1; r = this.simpleFold(r)) {\n if (r === r2) {\n return true\n }\n }\n\n return false\n }\n}\n\nexport { Unicode }\n","import { Codepoint } from './Codepoint'\nimport { Unicode } from './Unicode'\n/**\n * Various constants and helper utilities.\n */\nclass Utils {\n static METACHARACTERS = '\\\\.+*?()|[]{}^$'\n\n //// EMPTY_* flags\n static EMPTY_BEGIN_LINE = 0x01\n static EMPTY_END_LINE = 0x02\n static EMPTY_BEGIN_TEXT = 0x04\n static EMPTY_END_TEXT = 0x08\n static EMPTY_WORD_BOUNDARY = 0x10\n static EMPTY_NO_WORD_BOUNDARY = 0x20\n static EMPTY_ALL = -1\n\n static emptyInts() {\n return []\n }\n\n // Returns true iff |c| is an ASCII letter or decimal digit.\n static isalnum(c) {\n return (\n (Codepoint.CODES.get('0') <= c && c <= Codepoint.CODES.get('9')) ||\n (Codepoint.CODES.get('a') <= c && c <= Codepoint.CODES.get('z')) ||\n (Codepoint.CODES.get('A') <= c && c <= Codepoint.CODES.get('Z'))\n )\n }\n\n // If |c| is an ASCII hex digit, returns its value, otherwise -1.\n static unhex(c) {\n if (Codepoint.CODES.get('0') <= c && c <= Codepoint.CODES.get('9')) {\n return c - Codepoint.CODES.get('0')\n }\n if (Codepoint.CODES.get('a') <= c && c <= Codepoint.CODES.get('f')) {\n return c - Codepoint.CODES.get('a') + 10\n }\n if (Codepoint.CODES.get('A') <= c && c <= Codepoint.CODES.get('F')) {\n return c - Codepoint.CODES.get('A') + 10\n }\n return -1\n }\n\n // Appends a RE2 literal to |out| for rune |rune|,\n // with regexp metacharacters escaped.\n static escapeRune(rune) {\n let out = ''\n if (Unicode.isPrint(rune)) {\n if (this.METACHARACTERS.indexOf(String.fromCodePoint(rune)) >= 0) {\n out += '\\\\'\n }\n out += String.fromCodePoint(rune)\n } else {\n switch (rune) {\n case Codepoint.CODES.get('\"'): // '\"'\n out += '\\\\\"'\n break\n case Codepoint.CODES.get('\\\\'): // '\\\\'\n out += '\\\\\\\\'\n break\n case Codepoint.CODES.get('\\t'): // '\\t'\n out += '\\\\t'\n break\n case Codepoint.CODES.get('\\n'): // '\\n'\n out += '\\\\n'\n break\n case Codepoint.CODES.get('\\r'): // '\\r'\n out += '\\\\r'\n break\n case Codepoint.CODES.get('\\b'): // '\\b'\n out += '\\\\b'\n break\n case Codepoint.CODES.get('\\f'): // '\\f'\n out += '\\\\f'\n break\n default: {\n let s = rune.toString(16)\n if (rune < 0x100) {\n out += '\\\\x'\n if (s.length === 1) {\n out += '0'\n }\n out += s\n } else {\n out += `\\\\x{${s}}`\n }\n break\n }\n }\n }\n return out\n }\n\n // Returns the array of runes in the specified Java UTF-16 string.\n static stringToRunes(str) {\n return String(str)\n .split('')\n .map((s) => s.codePointAt(0))\n }\n\n // Returns the Java UTF-16 string containing the single rune |r|.\n static runeToString(r) {\n return String.fromCodePoint(r)\n }\n\n // isWordRune reports whether r is consider a ``word character''\n // during the evaluation of the \\b and \\B zero-width assertions.\n // These assertions are ASCII-only: the word characters are [A-Za-z0-9_].\n static isWordRune(r) {\n return (\n (Codepoint.CODES.get('a') <= r && r <= Codepoint.CODES.get('z')) ||\n (Codepoint.CODES.get('A') <= r && r <= Codepoint.CODES.get('Z')) ||\n (Codepoint.CODES.get('0') <= r && r <= Codepoint.CODES.get('9')) ||\n r === Codepoint.CODES.get('_')\n )\n }\n\n // emptyOpContext returns the zero-width assertions satisfied at the position\n // between the runes r1 and r2, a bitmask of EMPTY_* flags.\n // Passing r1 == -1 indicates that the position is at the beginning of the\n // text.\n // Passing r2 == -1 indicates that the position is at the end of the text.\n // eslint-disable-next-line no-warning-comments\n // TODO(adonovan): move to Machine.\n static emptyOpContext(r1, r2) {\n let op = 0\n if (r1 < 0) {\n op |= this.EMPTY_BEGIN_TEXT | this.EMPTY_BEGIN_LINE\n }\n if (r1 === Codepoint.CODES.get('\\n')) {\n op |= this.EMPTY_BEGIN_LINE\n }\n if (r2 < 0) {\n op |= this.EMPTY_END_TEXT | this.EMPTY_END_LINE\n }\n if (r2 === Codepoint.CODES.get('\\n')) {\n op |= this.EMPTY_END_LINE\n }\n if (this.isWordRune(r1) !== this.isWordRune(r2)) {\n op |= this.EMPTY_WORD_BOUNDARY\n } else {\n op |= this.EMPTY_NO_WORD_BOUNDARY\n }\n return op\n }\n\n /**\n * Returns a string that quotes all regular expression metacharacters inside the argument text;\n * the returned string is a regular expression matching the literal text. For example,\n * {@code quoteMeta(\"[foo]\").equals(\"\\\\[foo\\\\]\")}.\n * @param {string} s\n * @returns {string}\n */\n static quoteMeta(str) {\n return str\n .split('') // A char loop is correct because all metacharacters fit in one UTF-16 code.\n .map((s) => {\n if (this.METACHARACTERS.indexOf(s) >= 0) {\n return `\\\\${s}`\n }\n return s\n })\n .join('')\n }\n\n static charCount(codePoint) {\n return codePoint > Unicode.MAX_BMP ? 2 : 1\n }\n\n static stringToUtf8ByteArray(str) {\n if (globalThis.TextEncoder) {\n return Array.from(new TextEncoder().encode(str))\n } else {\n // fallback, if no TextEncoder\n let out = [],\n p = 0\n for (let i = 0; i < str.length; i++) {\n let c = str.charCodeAt(i)\n if (c < 128) {\n out[p++] = c\n } else if (c < 2048) {\n out[p++] = (c >> 6) | 192\n out[p++] = (c & 63) | 128\n } else if (\n (c & 0xfc00) === 0xd800 &&\n i + 1 < str.length &&\n (str.charCodeAt(i + 1) & 0xfc00) === 0xdc00\n ) {\n // Surrogate Pair\n c = 0x10000 + ((c & 0x03ff) << 10) + (str.charCodeAt(++i) & 0x03ff)\n out[p++] = (c >> 18) | 240\n out[p++] = ((c >> 12) & 63) | 128\n out[p++] = ((c >> 6) & 63) | 128\n out[p++] = (c & 63) | 128\n } else {\n out[p++] = (c >> 12) | 224\n out[p++] = ((c >> 6) & 63) | 128\n out[p++] = (c & 63) | 128\n }\n }\n return out\n }\n }\n\n static utf8ByteArrayToString(bytes) {\n if (globalThis.TextDecoder) {\n return new TextDecoder('utf-8').decode(new Uint8Array(bytes))\n } else {\n // fallback, if no TextDecoder\n let out = [],\n pos = 0,\n c = 0\n while (pos < bytes.length) {\n let c1 = bytes[pos++]\n if (c1 < 128) {\n out[c++] = String.fromCharCode(c1)\n } else if (c1 > 191 && c1 < 224) {\n let c2 = bytes[pos++]\n out[c++] = String.fromCharCode(((c1 & 31) << 6) | (c2 & 63))\n } else if (c1 > 239 && c1 < 365) {\n // Surrogate Pair\n let c2 = bytes[pos++]\n let c3 = bytes[pos++]\n let c4 = bytes[pos++]\n let u = (((c1 & 7) << 18) | ((c2 & 63) << 12) | ((c3 & 63) << 6) | (c4 & 63)) - 0x10000\n out[c++] = String.fromCharCode(0xd800 + (u >> 10))\n out[c++] = String.fromCharCode(0xdc00 + (u & 1023))\n } else {\n let c2 = bytes[pos++]\n let c3 = bytes[pos++]\n out[c++] = String.fromCharCode(((c1 & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63))\n }\n }\n return out.join('')\n }\n }\n}\n\nexport { Utils }\n","// helper to create enums\n// example\n// Encoding[(Encoding['UTF_16'] = 0)] = 'UTF_16'\n// Encoding[(Encoding['UTF_8'] = 1)] = 'UTF_8'\nconst createEnum = (values = [], initNum = 0) => {\n const enumObject = {}\n for (let i = 0; i < values.length; i++) {\n const val = values[i]\n const keyVal = initNum + i\n enumObject[val] = keyVal\n enumObject[keyVal] = val\n }\n return Object.freeze(enumObject)\n}\n\nexport { createEnum }\n","import { Utils } from './Utils'\nimport { createEnum } from './helpers'\n\n/**\n * Abstract the representations of input text supplied to Matcher.\n */\nclass MatcherInputBase {\n static Encoding = createEnum(['UTF_16', 'UTF_8'])\n\n getEncoding() {\n throw Error('not implemented')\n }\n\n isUTF8Encoding() {\n return this.getEncoding() === MatcherInputBase.Encoding.UTF_8\n }\n\n isUTF16Encoding() {\n return this.getEncoding() === MatcherInputBase.Encoding.UTF_16\n }\n}\n\nclass Utf8MatcherInput extends MatcherInputBase {\n constructor(bytes = null) {\n super()\n this.bytes = bytes\n }\n\n getEncoding() {\n return MatcherInputBase.Encoding.UTF_8\n }\n\n asCharSequence() {\n return Utils.utf8ByteArrayToString(this.bytes)\n }\n\n asBytes() {\n return this.bytes\n }\n\n length() {\n return this.bytes.length\n }\n}\n\nclass Utf16MatcherInput extends MatcherInputBase {\n constructor(charSequence = null) {\n super()\n this.charSequence = charSequence\n }\n\n getEncoding() {\n return MatcherInputBase.Encoding.UTF_16\n }\n\n asCharSequence() {\n return this.charSequence\n }\n\n asBytes() {\n return this.charSequence\n .toString()\n .split('')\n .map((s) => s.codePointAt(0))\n }\n\n length() {\n return this.charSequence.length\n }\n}\n\nclass MatcherInput {\n /**\n * Return the MatcherInput for UTF_16 encoding.\n */\n static utf16(charSequence) {\n return new Utf16MatcherInput(charSequence)\n }\n\n /**\n * Return the MatcherInput for UTF_8 encoding.\n */\n static utf8(input) {\n if (Array.isArray(input)) {\n return new Utf8MatcherInput(input)\n }\n\n return new Utf8MatcherInput(Utils.stringToUtf8ByteArray(input))\n }\n}\n\nexport { MatcherInput, MatcherInputBase }\n","class RE2JSException extends Error {\n constructor(message) {\n super(message)\n this.name = 'RE2JSException'\n }\n}\n\n/**\n * An exception thrown by the parser if the pattern was invalid.\n */\nclass RE2JSSyntaxException extends RE2JSException {\n constructor(error, input = null) {\n let message = `error parsing regexp: ${error}`\n if (input) {\n message += `: \\`${input}\\``\n }\n\n super(message)\n this.name = 'RE2JSSyntaxException'\n this.message = message\n this.error = error\n this.input = input\n }\n\n /**\n * Retrieves the description of the error.\n */\n getDescription() {\n return this.error\n }\n\n /**\n * Retrieves the erroneous regular-expression pattern.\n */\n getPattern() {\n return this.input\n }\n}\n\n/**\n * An exception thrown by the compiler\n */\nclass RE2JSCompileException extends RE2JSException {\n constructor(message) {\n super(message)\n this.name = 'RE2JSCompileException'\n }\n}\n\n/**\n * An exception thrown by using groups\n */\nclass RE2JSGroupException extends RE2JSException {\n constructor(message) {\n super(message)\n this.name = 'RE2JSGroupException'\n }\n}\n\n/**\n * An exception thrown by flags\n */\nclass RE2JSFlagsException extends RE2JSException {\n constructor(message) {\n super(message)\n this.name = 'RE2JSFlagsException'\n }\n}\n\nexport {\n RE2JSException,\n RE2JSSyntaxException,\n RE2JSCompileException,\n RE2JSGroupException,\n RE2JSFlagsException\n}\n","import { Codepoint } from './Codepoint'\nimport { RE2Flags } from './RE2Flags'\nimport { MatcherInput, MatcherInputBase } from './MatcherInput'\nimport { Utils } from './Utils'\nimport { RE2JSGroupException } from './exceptions'\n\n/**\n * A stateful iterator that interprets a regex {@code RE2JS} on a specific input.\n *\n * <p>\n * Conceptually, a Matcher consists of four parts:\n * <ol>\n * <li>A compiled regular expression {@code RE2JS}, set at construction and fixed for the lifetime\n * of the matcher.</li>\n *\n * <li>The remainder of the input string, set at construction or {@link #reset()} and advanced by\n * each match operation such as {@link #find}, {@link #matches} or {@link #lookingAt}.</li>\n *\n * <li>The current match information, accessible via {@link #start}, {@link #end}, and\n * {@link #group}, and updated by each match operation.</li>\n *\n * <li>The append position, used and advanced by {@link #appendReplacement} and {@link #appendTail}\n * if performing a search and replace from the input to an external {@code StringBuffer}.\n *\n * </ol>\n *\n *\n * @author rsc@google.com (Russ Cox)\n */\nclass Matcher {\n /**\n * Quotes '\\' and '$' in {@code s}, so that the returned string could be used in\n * {@link #appendReplacement} as a literal replacement of {@code s}.\n *\n * @param {string} s the string to be quoted\n * @returns {string} the quoted string\n */\n static quoteReplacement(str) {\n if (str.indexOf('\\\\') < 0 && str.indexOf('$') < 0) {\n return str\n }\n\n return str\n .split('')\n .map((s) => {\n const c = s.codePointAt(0)\n if (c === Codepoint.CODES['\\\\'] || c === Codepoint.CODES['$']) {\n return `\\\\${s}`\n }\n return s\n })\n .join('')\n }\n\n constructor(pattern, input) {\n if (pattern === null) {\n throw new Error('pattern is null')\n }\n // The pattern being matched.\n this.patternInput = pattern\n const re2 = this.patternInput.re2()\n // The number of submatches (groups) in the pattern.\n this.patternGroupCount = re2.numberOfCapturingGroups()\n // The group indexes, in [start, end) pairs. Zeroth pair is overall match.\n this.groups = []\n this.namedGroups = re2.namedGroups\n\n if (input instanceof MatcherInputBase) {\n this.resetMatcherInput(input)\n } else if (Array.isArray(input)) {\n this.resetMatcherInput(MatcherInput.utf8(input))\n } else {\n this.resetMatcherInput(MatcherInput.utf16(input))\n }\n }\n\n /** Returns the {@code RE2JS} associated with this {@code Matcher}. */\n pattern() {\n return this.patternInput\n }\n\n /**\n * Resets the {@code Matcher}, rewinding input and discarding any match information.\n *\n * @returns the {@code Matcher} itself, for chained method calls\n */\n reset() {\n // The input length in UTF16 codes.\n this.matcherInputLength = this.matcherInput.length()\n // The append position: where the next append should start.\n this.appendPos = 0\n // Is there a current match?\n this.hasMatch = false\n // Have we found the submatches (groups) of the current match?\n // group[0], group[1] are set regardless.\n this.hasGroups = false\n // The anchor flag to use when repeating the match to find subgroups.\n this.anchorFlag = 0\n return this\n }\n\n /**\n * Resets the {@code Matcher} and changes the input.\n * @returns the {@code Matcher} itself, for chained method calls\n */\n resetMatcherInput(input) {\n if (input === null) {\n throw new Error('input is null')\n }\n this.matcherInput = input\n this.reset()\n return this\n }\n\n /**\n * Returns the start of the named group of the most recent match, or -1 if the group was not\n * matched.\n *\n */\n start(group = 0) {\n if (typeof group === 'string') {\n const groupInt = this.namedGroups[group]\n if (!Number.isFinite(groupInt)) {\n throw new RE2JSGroupException(`group '${group}' not found`)\n }\n group = groupInt\n }\n\n this.loadGroup(group)\n return this.groups[2 * group]\n }\n\n /**\n * Returns the end of the named group of the most recent match, or -1 if the group was not\n * matched.\n *\n */\n end(group = 0) {\n if (typeof group === 'string') {\n const groupInt = this.namedGroups[group]\n if (!Number.isFinite(groupInt)) {\n throw new RE2JSGroupException(`group '${group}' not found`)\n }\n group = groupInt\n }\n\n this.loadGroup(group)\n return this.groups[2 * group + 1]\n }\n\n /**\n * Returns the named group of the most recent match, or {@code null} if the group was not matched.\n *\n */\n group(group = 0) {\n if (typeof group === 'string') {\n const groupInt = this.namedGroups[group]\n if (!Number.isFinite(groupInt)) {\n throw new RE2JSGroupException(`group '${group}' not found`)\n }\n group = groupInt\n }\n\n const start = this.start(group)\n const end = this.end(group)\n if (start < 0 && end < 0) {\n return null\n }\n return this.substring(start, end)\n }\n /**\n * Returns the number of subgroups in this pattern.\n *\n * @returns {number} the number of subgroups; the overall match (group 0) does not count\n */\n groupCount() {\n return this.patternGroupCount\n }\n\n /**\n * Helper: finds subgroup information if needed for group.\n * @param {number} group\n * @private\n */\n loadGroup(group) {\n if (group < 0 || group > this.patternGroupCount) {\n throw new RE2JSGroupException(`Group index out of bounds: ${group}`)\n }\n\n if (!this.hasMatch) {\n throw new RE2JSGroupException('perhaps no match attempted')\n }\n\n if (group === 0 || this.hasGroups) {\n return\n }\n\n let end = this.groups[1] + 1\n if (end > this.matcherInputLength) {\n end = this.matcherInputLength\n }\n\n const res = this.patternInput\n .re2()\n .matchMachineInput(\n this.matcherInput,\n this.groups[0],\n end,\n this.anchorFlag,\n 1 + this.patternGroupCount\n )\n\n const ok = res[0]\n if (!ok) {\n throw new RE2JSGroupException('inconsistency in matching group data')\n }\n this.groups = res[1]\n this.hasGroups = true\n }\n\n /**\n * Matches the entire input against the pattern (anchored start and end). If there is a match,\n * {@code matches} sets the match state to describe it.\n *\n * @returns {boolean} true if the entire input matches the pattern\n */\n matches() {\n return this.genMatch(0, RE2Flags.ANCHOR_BOTH)\n }\n\n /**\n * Matches the beginning of input against the pattern (anchored start). If there is a match,\n * {@code lookingAt} sets the match state to describe it.\n *\n * @returns {boolean} true if the beginning of the input matches the pattern\n */\n lookingAt() {\n return this.genMatch(0, RE2Flags.ANCHOR_START)\n }\n\n /**\n * Matches the input against the pattern (unanchored), starting at a specified position. If there\n * is a match, {@code find} sets the match state to describe it.\n *\n * @param start the input position where the search begins\n * @returns {boolean} if it finds a match\n * @throws IndexOutOfBoundsException if start is not a valid input position\n */\n find(start = null) {\n if (start !== null) {\n if (start < 0 || start > this.matcherInputLength) {\n throw new RE2JSGroupException(`start index out of bounds: ${start}`)\n }\n this.reset()\n return this.genMatch(start, 0)\n }\n // no start\n start = 0\n if (this.hasMatch) {\n start = this.groups[1]\n if (this.groups[0] === this.groups[1]) {\n start++\n }\n }\n\n return this.genMatch(start, RE2Flags.UNANCHORED)\n }\n\n /**\n * Helper: does match starting at start, with RE2 anchor flag.\n * @param {number} startByte\n * @param {number} anchor\n * @returns {boolean}\n * @private\n */\n genMatch(startByte, anchor) {\n const res = this.patternInput\n .re2()\n .matchMachineInput(this.matcherInput, startByte, this.matcherInputLength, anchor, 1)\n\n const ok = res[0]\n if (!ok) {\n return false\n }\n this.groups = res[1]\n this.hasMatch = true\n this.hasGroups = false\n this.anchorFlag = anchor\n return true\n }\n\n /**\n * Helper: return substring for [start, end).\n * @param {number} start\n * @param {number} end\n * @returns {string}\n */\n substring(start, end) {\n if (this.matcherInput.isUTF8Encoding()) {\n return Utils.utf8ByteArrayToString(this.matcherInput.asBytes().slice(start, end))\n }\n return this.matcherInput.asCharSequence().substring(start, end).toString()\n }\n\n /**\n * Helper for Pattern: return input length.\n * @returns {number}\n */\n inputLength() {\n return this.matcherInputLength\n }\n\n /**\n * Appends to result two strings: the text from the append position up to the beginning of the\n * most recent match, and then the replacement with submatch groups substituted for references of\n * the form {@code $n}, where {@code n} is the group number in decimal. It advances the append\n * position to where the most recent match ended.\n *\n * <p>\n * To embed a literal {@code $}, use \\$ (actually {@code \"\\\\$\"} with string escapes). The escape\n * is only necessary when {@code $} is followed by a digit, but it is always allowed. Only\n * {@code $} and {@code \\} need escaping, but any character can be escaped.\n *\n * <p>\n * The group number {@code n} in {@code $n} is always at least one digit and expands to use more\n * digits as long as the resulting number is a valid group number for this pattern. To cut it off\n * earlier, escape the first digit that should not be used.\n *\n * @param {string} replacement the replacement string\n * @param {boolean} [perlMode=false] activate perl/js mode (different behaviour for capture groups and special characters)\n * @returns the {@code Matcher} itself, for chained method calls\n * @throws IllegalStateException if there was no most recent match\n * @throws IndexOutOfBoundsException if replacement refers to an invalid group\n */\n appendReplacement(replacement, perlMode = false) {\n let res = ''\n const s = this.start()\n const e = this.end()\n if (this.appendPos < s) {\n res += this.substring(this.appendPos, s)\n }\n this.appendPos = e\n res += perlMode\n ? this.appendReplacementInternalPerl(replacement)\n : this.appendReplacementInternal(replacement)\n return res\n }\n\n /**\n * @param {string} replacement - the replacement string\n * @returns {string}\n */\n appendReplacementInternal(replacement) {\n let res = ''\n let last = 0\n const m = replacement.length\n\n for (let i = 0; i < m - 1; i++) {\n if (replacement.codePointAt(i) === Codepoint.CODES.get('\\\\')) {\n if (last < i) {\n res += replacement.substring(last, i)\n }\n\n i++\n last = i\n continue\n }\n\n if (replacement.codePointAt(i) === Codepoint.CODES.get('$')) {\n let c = replacement.codePointAt(i + 1)\n\n if (Codepoint.CODES.get('0') <= c && c <= Codepoint.CODES.get('9')) {\n let n = c - Codepoint.CODES.get('0')\n if (last < i) {\n res += replacement.substring(last, i)\n }\n\n for (i += 2; i < m; i++) {\n c = replacement.codePointAt(i)\n if (\n c < Codepoint.CODES.get('0') ||\n c > Codepoint.CODES.get('9') ||\n n * 10 + c - Codepoint.CODES.get('0') > this.patternGroupCount\n ) {\n break\n }\n n = n * 10 + c - Codepoint.CODES.get('0')\n }\n\n if (n > this.patternGroupCount) {\n throw new RE2JSGroupException(`n > number of groups: ${n}`)\n }\n\n const group = this.group(n)\n if (group !== null) {\n res += group\n }\n\n last = i\n i--\n continue\n } else if (c === Codepoint.CODES.get('{')) {\n if (last < i) {\n res += replacement.substring(last, i)\n }\n\n i++\n let j = i + 1\n while (\n j < replacement.length &&\n replacement.codePointAt(j) !== Codepoint.CODES.get('}') &&\n replacement.codePointAt(j) !== Codepoint.CODES.get(' ')\n ) {\n j++\n }\n\n if (j === replacement.length || replacement.codePointAt(j) !== Codepoint.CODES.get('}')) {\n throw new RE2JSGroupException(\"named capture group is missing trailing '}'\")\n }\n\n const groupName = replacement.substring(i + 1, j)\n res += this.group(groupName)\n last = j + 1\n }\n }\n }\n\n if (last < m) {\n res += replacement.substring(last, m)\n }\n\n return res\n }\n\n /**\n * @param {string} replacement - the replacement string\n * @returns {string}\n */\n appendReplacementInternalPerl(replacement) {\n let res = ''\n let last = 0\n const m = replacement.length\n\n for (let i = 0; i < m - 1; i++) {\n if (replacement.codePointAt(i) === Codepoint.CODES.get('$')) {\n let c = replacement.codePointAt(i + 1)\n\n if (Codepoint.CODES.get('$') === c) {\n if (last < i) {\n res += replacement.substring(last, i)\n }\n\n res += '$'\n i++\n last = i + 1\n continue\n } else if (Codepoint.CODES.get('&') === c) {\n if (last < i) {\n res += replacement.substring(last, i)\n }\n\n const group = this.group(0)\n if (group !== null) {\n res += group\n } else {\n res += '$&'\n }\n i++\n last = i + 1\n continue\n } else if (Codepoint.CODES.get('1') <= c && c <= Codepoint.CODES.get('9')) {\n let n = c - Codepoint.CODES.get('0')\n if (last < i) {\n res += replacement.substring(last, i)\n }\n\n for (i += 2; i < m; i++) {\n c = replacement.codePointAt(i)\n if (\n c < Codepoint.CODES.get('0') ||\n c > Codepoint.CODES.get('9') ||\n n * 10 + c - Codepoint.CODES.get('0') > this.patternGroupCount\n ) {\n break\n }\n n = n * 10 + c - Codepoint.CODES.get('0')\n }\n\n if (n > this.patternGroupCount) {\n res += `$${n}`\n last = i\n i--\n continue\n }\n\n const group = this.group(n)\n if (group !== null) {\n res += group\n }\n\n last = i\n i--\n continue\n } else if (c === Codepoint.CODES.get('<')) {\n if (last < i) {\n res += replacement.substring(last, i)\n }\n\n i++\n let j = i + 1\n while (\n j < replacement.length &&\n replacement.codePointAt(j) !== Codepoint.CODES.get('>') &&\n replacement.codePointAt(j) !== Codepoint.CODES.get(' ')\n ) {\n j++\n }\n\n if (j === replacement.length || replacement.codePointAt(j) !== Codepoint.CODES.get('>')) {\n res += replacement.substring(i - 1, j + 1)\n last = j + 1\n continue\n }\n\n const groupName = replacement.substring(i + 1, j)\n if (Object.prototype.hasOwnProperty.call(this.namedGroups, groupName)) {\n res += this.group(groupName)\n } else {\n res += `$<${groupName}>`\n }\n\n last = j + 1\n }\n }\n }\n\n if (last < m) {\n res += replacement.substring(last, m)\n }\n\n return res\n }\n\n /**\n * Return the substring of the input from the append position to the end of the\n * input.\n * @returns {string}\n */\n appendTail() {\n return this.substring(this.appendPos, this.matcherInputLength)\n }\n\n /**\n * Returns the input with all matches replaced by {@code replacement}, interpreted as for\n * {@code appendReplacement}.\n *\n * @param {string} replacement - the replacement string\n * @param {boolean} [perlMode=false] - activate perl/js mode (different behaviour for capture groups and special characters)\n * @returns {string} the input string with the matches replaced\n * @throws IndexOutOfBoundsException if replacement refers to an invalid group and perlMode is false\n */\n replaceAll(replacement, perlMode = false) {\n return this.replace(replacement, true, perlMode)\n }\n\n /**\n * Returns the input with the first match replaced by {@code replacement}, interpreted as for\n * {@code appendReplacement}.\n *\n * @param {string} replacement - the replacement string\n * @param {boolean} [perlMode=false] - activate perl/js mode (different behaviour for capture groups and special characters)\n * @returns {string} the input string with the first match replaced\n * @throws IndexOutOfBoundsException if replacement refers to an invalid group and perlMode is false\n */\n replaceFirst(replacement, perlMode = false) {\n return this.replace(replacement, false, perlMode)\n }\n\n /**\n * Helper: replaceAll/replaceFirst hybrid.\n * @param {string} replacement - the replacement string\n * @param {boolean} [all=true] - replace all matches\n * @param {boolean} [perlMode=false] - activate perl/js mode (different behaviour for capture groups and special characters)\n * @returns {string}\n * @private\n */\n replace(replacement, all = true, perlMode = false) {\n let res = ''\n\n this.reset()\n while (this.find()) {\n res += this.appendReplacement(replacement, perlMode)\n if (!all) {\n break\n }\n }\n\n res += this.appendTail()\n return res\n }\n}\n\nexport { Matcher }\n","import { Utils } from './Utils'\n/**\n * MachineInput abstracts different representations of the input text supplied to the Machine. It\n * provides one-character lookahead.\n */\nclass MachineInputBase {\n static EOF() {\n return -1 << 3\n }\n\n // can we look ahead without losing info?\n canCheckPrefix() {\n return true\n }\n\n // Returns the end position in the same units as step().\n endPos() {\n return this.end\n }\n}\n\n// An implementation of MachineInput for UTF-8 byte arrays.\n// |pos| and |width| are byte indices.\nclass MachineUTF8Input extends MachineInputBase {\n constructor(bytes, start = 0, end = bytes.length) {\n super()\n this.bytes = bytes\n this.start = start\n this.end = end\n }\n\n // Returns the rune at the specified index; the units are\n // unspecified, but could be UTF-8 byte, UTF-16 char, or rune\n // indices. Returns the width (in the same units) of the rune in\n // the lower 3 bits, and the rune (Unicode code point) in the high\n // bits. Never negative, except for EOF which is represented as -1\n // << 3 | 0.\n step(i) {\n i += this.start\n if (i >= this.end) {\n return MachineInputBase.EOF()\n }\n let x = this.bytes[i++] & 255\n if ((x & 128) === 0) {\n return (x << 3) | 1\n } else if ((x & 224) === 192) {\n x = x & 31\n if (i >= this.end) {\n return MachineInputBase.EOF()\n }\n x = (x << 6) | (this.bytes[i++] & 63)\n return (x << 3) | 2\n } else if ((x & 240) === 224) {\n x = x & 15\n if (i + 1 >= this.end) {\n return MachineInputBase.EOF()\n }\n x = (x << 6) | (this.bytes[i++] & 63)\n x = (x << 6) | (this.bytes[i++] & 63)\n return (x << 3) | 3\n } else {\n x = x & 7\n if (i + 2 >= this.end) {\n return MachineInputBase.EOF()\n }\n x = (x << 6) | (this.bytes[i++] & 63)\n x = (x << 6) | (this.bytes[i++] & 63)\n x = (x << 6) | (this.bytes[i++] & 63)\n return (x << 3) | 4\n }\n }\n\n // Returns the index relative to |pos| at which |re2.prefix| is found\n // in this input stream, or a negative value if not found.\n index(re2, pos) {\n pos += this.start\n const i = this.indexOf(this.bytes, re2.prefixUTF8, pos)\n return i < 0 ? i : i - pos\n }\n\n // Returns a bitmask of EMPTY_* flags.\n context(pos) {\n pos += this.start\n let r1 = -1\n if (pos > this.start && pos <= this.end) {\n let start = pos - 1\n r1 = this.bytes[start--]\n if (r1 >= 128) {\n let lim = pos - 4\n if (lim < this.start) {\n lim = this.start\n }\n while (start >= lim && (this.bytes[start] & 192) === 128) {\n start--\n }\n\n if (start < this.start) {\n start = this.start\n }\n r1 = this.step(start) >> 3\n }\n }\n const r2 = pos < this.end ? this.step(pos) >> 3 : -1\n return Utils.emptyOpContext(r1, r2)\n }\n\n // Returns the index of the first occurrence of array |target| within\n // array |source| after |fromIndex|, or -1 if not found.\n indexOf(source, target, fromIndex = 0) {\n let targetLength = target.length\n if (targetLength === 0) {\n return -1\n }\n\n let sourceLength = source.length\n for (let i = fromIndex; i <= sourceLength - targetLength; i++) {\n for (let j = 0; j < targetLength; j++) {\n if (source[i + j] !== target[j]) {\n break\n } else if (j === targetLength - 1) {\n return i\n }\n }\n }\n\n return -1\n }\n}\n\n// |pos| and |width| are in JS \"char\" units.\nclass MachineUTF16Input extends MachineInputBase {\n constructor(charSequence, start = 0, end = charSequence.length) {\n super()\n this.charSequence = charSequence\n this.start = start\n this.end = end\n }\n\n // Returns the rune at the specified index; the units are\n // unspecified, but could be UTF-8 byte, UTF-16 char, or rune\n // indices. Returns the width (in the same units) of the rune in\n // the lower 3 bits, and the rune (Unicode code point) in the high\n // bits. Never negative, except for EOF which is represented as -1\n // << 3 | 0.\n step(pos) {\n pos += this.start\n if (pos < this.end) {\n const rune = this.charSequence.codePointAt(pos)\n return (rune << 3) | Utils.charCount(rune)\n } else {\n return MachineInputBase.EOF()\n }\n }\n\n // Returns the index relative to |pos| at which |re2.prefix| is found\n // in this input stream, or a negative value if not found.\n index(re2, pos) {\n pos += this.start\n const i = this.charSequence.indexOf(re2.prefix, pos)\n return i < 0 ? i : i - pos\n }\n\n // Returns a bitmask of EMPTY_* flags.\n context(pos) {\n pos += this.start\n const r1 =\n pos > 0 && pos <= this.charSequence.length ? this.charSequence.codePointAt(pos - 1) : -1\n const r2 = pos < this.charSequence.length ? this.charSequence.codePointAt(pos) : -1\n return Utils.emptyOpContext(r1, r2)\n }\n}\n\nclass MachineInput {\n static fromUTF8(bytes, start = 0, end = bytes.length) {\n return new MachineUTF8Input(bytes, start, end)\n }\n\n static fromUTF16(charSequence, start = 0, end = charSequence.length) {\n return new MachineUTF16Input(charSequence, start, end)\n }\n}\n\nexport { MachineInputBase, MachineInput }\n","import { Codepoint } from './Codepoint'\nimport { RE2Flags } from './RE2Flags'\nimport { Unicode } from './Unicode'\nimport { Utils } from './Utils'\nimport { createEnum } from './helpers'\n\n/**\n * Regular expression abstract syntax tree. Produced by parser, used by compiler. NB, this\n * corresponds to {@code syntax.regexp} in the Go implementation; Go's {@code regexp} is called\n * {@code RE2} in Java.\n */\nexport class Regexp {\n static Op = createEnum([\n 'NO_MATCH', // Matches no strings.\n 'EMPTY_MATCH', // Matches empty string.\n 'LITERAL', // Matches runes[] sequence\n 'CHAR_CLASS', // Matches Runes interpreted as range pair list\n 'ANY_CHAR_NOT_NL', // Matches any character except '\\n'\n 'ANY_CHAR', // Matches any character\n 'BEGIN_LINE', // Matches empty string at end of line\n 'END_LINE', // Matches empty string at end of line\n 'BEGIN_TEXT', // Matches empty string at beginning of text\n 'END_TEXT', // Matches empty string at end of text\n 'WORD_BOUNDARY', // Matches word boundary `\\b`\n 'NO_WORD_BOUNDARY', // Matches word non-boundary `\\B`\n 'CAPTURE', // Capturing subexpr with index cap, optional name name\n 'STAR', // Matches subs[0] zero or more times.\n 'PLUS', // Matches subs[0] one or more times.\n 'QUEST', // Matches subs[0] zero or one times.\n 'REPEAT', // Matches subs[0] [min, max] times; max=-1 => no limit.\n 'CONCAT', // Matches concatenation of subs[]\n 'ALTERNATE', // Matches union of subs[]\n // Pseudo ops, used internally by Parser for parsing stack:\n 'LEFT_PAREN',\n 'VERTICAL_BAR'\n ])\n\n static isPseudoOp(op) {\n return op >= Regexp.Op.LEFT_PAREN\n }\n\n static emptySubs() {\n return []\n }\n\n static quoteIfHyphen(rune) {\n if (rune === Codepoint.CODES.get('-')) {\n return '\\\\'\n }\n return ''\n }\n\n static fromRegexp(re) {\n const regex = new Regexp(re.op)\n regex.flags = re.flags\n regex.subs = re.subs\n regex.runes = re.runes\n regex.cap = re.cap\n regex.min = re.min\n regex.max = re.max\n regex.name = re.name\n regex.namedGroups = re.namedGroups\n return regex\n }\n\n constructor(op) {\n this.op = op // operator\n this.flags = 0 // bitmap of parse flags\n // subexpressions, if any. Never null.\n // subs[0] is used as the freelist.\n this.subs = Regexp.emptySubs()\n this.runes = null // matched runes, for LITERAL, CHAR_CLASS\n this.min = 0 // min for REPEAT\n this.max = 0 // max for REPEAT\n this.cap = 0 // capturing index, for CAPTURE\n this.name = null // capturing name, for CAPTURE\n this.namedGroups = {} // map of group name -> capturing index\n }\n\n reinit() {\n this.flags = 0\n this.subs = Regexp.emptySubs()\n this.runes = null\n this.cap = 0\n this.min = 0\n this.max = 0\n this.name = null\n this.namedGroups = {}\n }\n\n toString() {\n return this.appendTo()\n }\n\n // appendTo() appends the Perl syntax for |this| regular expression to out\n appendTo() {\n let out = ''\n switch (this.op) {\n case Regexp.Op.NO_MATCH:\n out += '[^\\\\x00-\\\\x{10FFFF}]'\n break\n case Regexp.Op.EMPTY_MATCH:\n out += '(?:)'\n break\n case Regexp.Op.STAR:\n case Regexp.Op.PLUS:\n case Regexp.Op.QUEST:\n case Regexp.Op.REPEAT: {\n const sub = this.subs[0]\n if (sub.op > Regexp.Op.CAPTURE || (sub.op === Regexp.Op.LITERAL && sub.runes.length > 1)) {\n out += `(?:${sub.appendTo()})`\n } else {\n out += sub.appendTo()\n }\n switch (this.op) {\n case Regexp.Op.STAR:\n out += '*'\n break\n case Regexp.Op.PLUS:\n out += '+'\n break\n case Regexp.Op.QUEST:\n out += '?'\n break\n case Regexp.Op.REPEAT:\n out += `{${this.min}`\n if (this.min !== this.max) {\n out += ','\n if (this.max >= 0) {\n out += this.max\n }\n }\n out += '}'\n break\n }\n if ((this.flags & RE2Flags.NON_GREEDY) !== 0) {\n out += '?'\n }\n break\n }\n\n case Regexp.Op.CONCAT: {\n for (let sub of this.subs) {\n if (sub.op === Regexp.Op.ALTERNATE) {\n out += `(?:${sub.appendTo()})`\n } else {\n out += sub.appendTo()\n }\n }\n break\n }\n\n case Regexp.Op.ALTERNATE: {\n let sep = ''\n for (let sub of this.subs) {\n out += sep\n sep = '|'\n out += sub.appendTo()\n }\n break\n }\n\n case Regexp.Op.LITERAL:\n if ((this.flags & RE2Flags.FOLD_CASE) !== 0) {\n out += '(?i:'\n }\n for (let rune of this.runes) {\n out += Utils.escapeRune(rune)\n }\n if ((this.flags & RE2Flags.FOLD_CASE) !== 0) {\n out += ')'\n }\n break\n case Regexp.Op.ANY_CHAR_NOT_NL:\n out += '(?-s:.)'\n break\n case Regexp.Op.ANY_CHAR:\n out += '(?s:.)'\n break\n case Regexp.Op.CAPTURE:\n if (this.name === null || this.name.length === 0) {\n out += '('\n } else {\n out += `(?P<${this.name}>`\n }\n if (this.subs[0].op !== Regexp.Op.EMPTY_MATCH) {\n out += this.subs[0].appendTo()\n }\n out += ')'\n break\n case Regexp.Op.BEGIN_TEXT:\n out += '\\\\A'\n break\n case Regexp.Op.END_TEXT:\n if ((this.flags & RE2Flags.WAS_DOLLAR) !== 0) {\n out += '(?-m:$)'\n } else {\n out += '\\\\z'\n }\n break\n case Regexp.Op.BEGIN_LINE:\n out += '^'\n break\n case Regexp.Op.END_LINE:\n out += '$'\n break\n case Regexp.Op.WORD_BOUNDARY:\n out += '\\\\b'\n break\n case Regexp.Op.NO_WORD_BOUNDARY:\n out += '\\\\B'\n break\n case Regexp.Op.CHAR_CLASS:\n if (this.runes.length % 2 !== 0) {\n out += '[invalid char class]'\n break\n }\n\n out += '['\n if (this.runes.length === 0) {\n out += '^\\\\x00-\\\\x{10FFFF}'\n } else if (this.runes[0] === 0 && this.runes[this.runes.length - 1] === Unicode.MAX_RUNE) {\n out += '^'\n\n for (let i = 1; i < this.runes.length - 1; i += 2) {\n const lo = this.runes[i] + 1\n const hi = this.runes[i + 1] - 1\n\n out += Regexp.quoteIfHyphen(lo)\n out += Utils.escapeRune(lo)\n if (lo !== hi) {\n out += '-'\n out += Regexp.quoteIfHyphen(hi)\n out += Utils.escapeRune(hi)\n }\n }\n } else {\n for (let i = 0; i < this.runes.length; i += 2) {\n const lo = this.runes[i]\n const hi = this.runes[i + 1]\n out += Regexp.quoteIfHyphen(lo)\n out += Utils.escapeRune(lo)\n if (lo !== hi) {\n out += '-'\n out += Regexp.quoteIfHyphen(hi)\n out += Utils.escapeRune(hi)\n }\n }\n }\n out += ']'\n break\n default:\n out += this.op\n break\n }\n return out\n }\n\n // maxCap() walks the regexp to find the maximum capture index.\n maxCap() {\n let m = 0\n if (this.op === Regexp.Op.CAPTURE) {\n m = this.cap\n }\n if (this.subs !== null) {\n for (let sub of this.subs) {\n const n = sub.maxCap()\n if (m < n) {\n m = n\n }\n }\n }\n return m\n }\n\n // equals() returns true if this and that have identical structure.\n equals(that) {\n if (!(that !== null && that instanceof Regexp)) {\n return false\n }\n if (this.op !== that.op) {\n return false\n }\n switch (this.op) {\n case Regexp.Op.END_TEXT: {\n if ((this.flags & RE2Flags.WAS_DOLLAR) !== (that.flags & RE2Flags.WAS_DOLLAR)) {\n return false\n }\n break\n }\n case Regexp.Op.LITERAL:\n case Regexp.Op.CHAR_CLASS: {\n if (this.runes === null && that.runes === null) {\n break\n }\n if (this.runes === null || that.runes === null) {\n return false\n }\n if (this.runes.length !== that.runes.length) {\n return false\n }\n for (let i = 0; i < this.runes.length; i++) {\n if (this.runes[i] !== that.runes[i]) {\n return false\n }\n }\n break\n }\n case Regexp.Op.ALTERNATE:\n case Regexp.Op.CONCAT: {\n if (this.subs.length !== that.subs.length) {\n return false\n }\n for (let i = 0; i < this.subs.length; ++i) {\n if (!this.subs[i].equals(that.subs[i])) {\n return false\n }\n }\n break\n }\n case Regexp.Op.STAR:\n case Regexp.Op.PLUS:\n case Regexp.Op.QUEST: {\n if (\n (this.flags & RE2Flags.NON_GREEDY) !== (that.flags & RE2Flags.NON_GREEDY) ||\n !this.subs[0].equals(that.subs[0])\n ) {\n return false\n }\n break\n }\n case Regexp.Op.REPEAT: {\n if (\n (this.flags & RE2Flags.NON_GREEDY) !== (that.flags & RE2Flags.NON_GREEDY) ||\n this.min !== that.min ||\n this.max !== that.max ||\n !this.subs[0].equals(that.subs[0])\n ) {\n return false\n }\n break\n }\n case Regexp.Op.CAPTURE: {\n if (\n this.cap !== that.cap ||\n (this.name === null ? that.name !== null : this.name !== that.name) ||\n !this.subs[0].equals(that.subs[0])\n ) {\n return false\n }\n break\n }\n }\n return true\n }\n}\n","import { RE2Flags } from './RE2Flags'\nimport { Utils } from './Utils'\nimport { Unicode } from './Unicode'\n/**\n * A single instruction in the regular expression virtual machine.\n *\n * @see http://swtch.com/~rsc/regexp/regexp2.html\n */\nclass Inst {\n static ALT = 1\n static ALT_MATCH = 2\n static CAPTURE = 3\n static EMPTY_WIDTH = 4\n static FAIL = 5\n static MATCH = 6\n static NOP = 7\n static RUNE = 8\n static RUNE1 = 9\n static RUNE_ANY = 10\n static RUNE_ANY_NOT_NL = 11\n\n static isRuneOp(op) {\n return Inst.RUNE <= op && op <= Inst.RUNE_ANY_NOT_NL\n }\n\n // Returns an RE2 expression matching exactly |runes|.\n static escapeRunes(runes) {\n let out = '\"'\n for (let rune of runes) {\n out += Utils.escapeRune(rune)\n }\n out += '\"'\n return out\n }\n\n constructor(op) {\n this.op = op\n this.out = 0 // all but MATCH, FAIL\n this.arg = 0 // ALT, ALT_MATCH, CAPTURE, EMPTY_WIDTH\n // length==1 => exact match\n // otherwise a list of [lo,hi] pairs. hi is *inclusive*.\n this.runes = null\n }\n\n // MatchRune returns true if the instruction matches (and consumes) r.\n // It should only be called when op == InstRune.\n matchRune(r) {\n // Special case: single-rune slice is from literal string, not char\n // class.\n if (this.runes.length === 1) {\n const r0 = this.runes[0]\n if ((this.arg & RE2Flags.FOLD_CASE) !== 0) {\n return Unicode.equalsIgnoreCase(r0, r)\n }\n return r === r0\n }\n // Peek at the first few pairs.\n // Should handle ASCII well.\n for (let j = 0; j < this.runes.length && j <= 8; j += 2) {\n if (r < this.runes[j]) {\n return false\n }\n if (r <= this.runes[j + 1]) {\n return true\n }\n }\n // Otherwise binary search.\n let lo = 0\n let hi = (this.runes.length / 2) | 0\n while (lo < hi) {\n const m = lo + (((hi - lo) / 2) | 0)\n const c = this.runes[2 * m]\n if (c <= r) {\n if (r <= this.runes[2 * m + 1]) {\n return true\n }\n lo = m + 1\n } else {\n hi = m\n }\n }\n\n return false\n }\n /**\n *\n * @returns {string}\n */\n toString() {\n switch (this.op) {\n case Inst.ALT:\n return `alt -> ${this.out}, ${this.arg}`\n case Inst.ALT_MATCH:\n return `altmatch -> ${this.out}, ${this.arg}`\n case Inst.CAPTURE:\n return `cap ${this.arg} -> ${this.out}`\n case Inst.EMPTY_WIDTH:\n return `empty ${this.arg} -> ${this.out}`\n case Inst.MATCH:\n return 'match'\n case Inst.FAIL:\n return 'fail'\n case Inst.NOP:\n return `nop -> ${this.out}`\n case Inst.RUNE:\n if (this.runes === null) {\n return 'rune <null>'\n }\n return [\n 'rune ',\n Inst.escapeRunes(this.runes),\n (this.arg & RE2Flags.FOLD_CASE) !== 0 ? '/i' : '',\n ' -> ',\n this.out\n ].join('')\n case Inst.RUNE1:\n return `rune1 ${Inst.escapeRunes(this.runes)} -> ${this.out}`\n case Inst.RUNE_ANY:\n return `any -> ${this.out}`\n case Inst.RUNE_ANY_NOT_NL:\n return `anynotnl -> ${this.out}`\n default:\n throw new Error('unhandled case in Inst.toString')\n }\n }\n}\n\nexport { Inst }\n","import { RE2Flags } from './RE2Flags'\nimport { Inst } from './Inst'\n/**\n * A Prog is a compiled regular expression program.\n */\nclass Prog {\n constructor() {\n this.inst = []\n this.start = 0 // index of start instruction\n // number of CAPTURE insts in re\n // 2 => implicit ( and ) for whole match $0\n this.numCap = 2\n }\n\n // Returns the instruction at the specified pc.\n // Precondition: pc > 0 && pc < numInst().\n getInst(pc) {\n return this.inst[pc]\n }\n\n // Returns the number of instructions in this program.\n numInst() {\n return this.inst.length\n }\n\n // Adds a new instruction to this program, with operator |op| and |pc| equal\n // to |numInst()|.\n addInst(op) {\n this.inst.push(new Inst(op))\n }\n\n // skipNop() follows any no-op or capturing instructions and returns the\n // resulting instruction.\n skipNop(pc) {\n let i = this.inst[pc]\n\n while (i.op === Inst.NOP || i.op === Inst.CAPTURE) {\n i = this.inst[pc]\n pc = i.out\n }\n\n return i\n }\n\n // prefix() returns a pair of a literal string that all matches for the\n // regexp must start with, and a boolean which is true if the prefix is the\n // entire match. The string is returned by appending to |prefix|.\n prefix() {\n let prefix = ''\n let i = this.skipNop(this.start)\n\n if (!Inst.isRuneOp(i.op) || i.runes.length !== 1) {\n return [i.op === Inst.MATCH, prefix]\n }\n\n while (Inst.isRuneOp(i.op) && i.runes.length === 1 && (i.arg & RE2Flags.FOLD_CASE) === 0) {\n prefix += String.fromCodePoint(i.runes[0])\n i = this.skipNop(i.out)\n }\n\n return [i.op === Inst.MATCH, prefix]\n }\n\n // startCond() returns the leading empty-width conditions that must be true\n // in any match. It returns -1 (all bits set) if no matches are possible.\n startCond() {\n let flag = 0\n let pc = this.start\n loop: for (;;) {\n const i = this.inst[pc]\n switch (i.op) {\n case Inst.EMPTY_WIDTH:\n flag |= i.arg\n break\n case Inst.FAIL:\n return -1\n case Inst.CAPTURE:\n case Inst.NOP:\n break\n default:\n break loop\n }\n pc = i.out\n }\n return flag\n }\n\n // --- Patch list ---\n\n // A patchlist is a list of instruction pointers that need to be filled in\n // (patched). Because the pointers haven't been filled in yet, we can reuse\n // their storage to hold the list. It's kind of sleazy, but works well in\n // practice. See http://swtch.com/~rsc/regexp/regexp1.html for inspiration.\n\n // These aren't really pointers: they're integers, so we can reinterpret them\n // this way without using package unsafe. A value l denotes p.inst[l>>1].out\n // (l&1==0) or .arg (l&1==1). l == 0 denotes the empty list, okay because we\n // start every program with a fail instruction, so we'll never want to point\n // at its output link.\n\n next(l) {\n const i = this.inst[l >> 1]\n if ((l & 1) === 0) {\n return i.out\n }\n return i.arg\n }\n\n patch(l, val) {\n while (l !== 0) {\n const i = this.inst[l >> 1]\n if ((l & 1) === 0) {\n l = i.out\n i.out = val\n } else {\n l = i.arg\n i.arg = val\n }\n }\n }\n\n append(l1, l2) {\n if (l1 === 0) {\n return l2\n }\n\n if (l2 === 0) {\n return l1\n }\n\n let last = l1\n for (;;) {\n const next = this.next(last)\n if (next === 0) {\n break\n }\n last = next\n }\n\n const i = this.inst[last >> 1]\n if ((last & 1) === 0) {\n i.out = l2\n } else {\n i.arg = l2\n }\n\n return l1\n }\n /**\n *\n * @returns {string}\n */\n toString() {\n let out = ''\n for (let pc = 0; pc < this.inst.length; pc++) {\n const len = out.length\n out += pc\n if (pc === this.start) {\n out += '*'\n }\n out += ' '.substring(out.length - len)\n out += this.inst[pc]\n out += '\\n'\n }\n return out\n }\n}\n\nexport { Prog }\n","import { Codepoint } from './Codepoint'\nimport { RE2Flags } from './RE2Flags'\nimport { Unicode } from './Unicode'\nimport { Utils } from './Utils'\nimport { Regexp } from './Regexp'\nimport { Inst } from './Inst'\nimport { Prog } from './Prog'\nimport { RE2JSCompileException } from './exceptions'\n\n/**\n * A fragment of a compiled regular expression program.\n *\n * @see http://swtch.com/~rsc/regexp/regexp1.html\n * @class\n */\nclass Frag {\n constructor(i = 0, out = 0, nullable = false) {\n this.i = i // an instruction address (pc).\n this.out = out // a patch list; see explanation in Prog.js\n this.nullable = nullable // whether the fragment can match the empty string\n }\n}\n/**\n * Compiler from {@code Regexp} (RE2 abstract syntax) to {@code RE2} (compiled regular expression).\n *\n * The only entry point is {@link #compileRegexp}.\n */\nclass Compiler {\n static ANY_RUNE_NOT_NL() {\n return [0, Codepoint.CODES.get('\\n') - 1, Codepoint.CODES.get('\\n') + 1, Unicode.MAX_RUNE]\n }\n\n static ANY_RUNE() {\n return [0, Unicode.MAX_RUNE]\n }\n\n static compileRegexp(re) {\n const c = new Compiler()\n const f = c.compile(re)\n c.prog.patch(f.out, c.newInst(Inst.MATCH).i)\n c.prog.start = f.i\n return c.prog\n }\n\n constructor() {\n this.prog = new Prog()\n this.newInst(Inst.FAIL)\n }\n\n newInst(op) {\n this.prog.addInst(op)\n return new Frag(this.prog.numInst() - 1, 0, true)\n }\n\n // Returns a no-op fragment. Sometimes unavoidable.\n nop() {\n const f = this.newInst(Inst.NOP)\n f.out = f.i << 1\n return f\n }\n\n fail() {\n return new Frag()\n }\n\n // Given fragment a, returns (a) capturing as \\n.\n // Given a fragment a, returns a fragment with capturing parens around a.\n cap(arg) {\n const f = this.newInst(Inst.CAPTURE)\n f.out = f.i << 1\n this.prog.getInst(f.i).arg = arg\n if (this.prog.numCap < arg + 1) {\n this.prog.numCap = arg + 1\n }\n return f\n }\n\n // Given fragments a and b, returns ab; a|b\n cat(f1, f2) {\n // concat of failure is failure\n if (f1.i === 0 || f2.i === 0) {\n return this.fail()\n }\n // eslint-disable-next-line no-warning-comments\n // TODO(rsc): elide nop\n this.prog.patch(f1.out, f2.i)\n return new Frag(f1.i, f2.out, f1.nullable && f2.nullable)\n }\n\n // Given fragments for a and b, returns fragment for a|b.\n alt(f1, f2) {\n // alt of failure is other\n if (f1.i === 0) {\n return f2\n }\n if (f2.i === 0) {\n return f1\n }\n const f = this.newInst(Inst.ALT)\n const i = this.prog.getInst(f.i)\n i.out = f1.i\n i.arg = f2.i\n f.out = this.prog.append(f1.out, f2.out)\n f.nullable = f1.nullable || f2.nullable\n return f\n }\n\n // loop returns the fragment for the main loop of a plus or star.\n // For plus, it can be used directly. with f1.i as the entry.\n // For star, it can be used directly when f1 can't match an empty string.\n // (When f1 can match an empty string, f1* must be implemented as (f1+)?\n // to get the priority match order correct.)\n loop(f1, nongreedy) {\n const f = this.newInst(Inst.ALT)\n const i = this.prog.getInst(f.i)\n if (nongreedy) {\n i.arg = f1.i\n f.out = f.i << 1\n } else {\n i.out = f1.i\n f.out = (f.i << 1) | 1\n }\n this.prog.patch(f1.out, f.i)\n return f\n }\n\n // Given a fragment for a, returns a fragment for a? or a?? (if nongreedy)\n quest(f1, nongreedy) {\n const f = this.newInst(Inst.ALT)\n const i = this.prog.getInst(f.i)\n if (nongreedy) {\n i.arg = f1.i\n f.out = f.i << 1\n } else {\n i.out = f1.i\n f.out = (f.i << 1) | 1\n }\n f.out = this.prog.append(f.out, f1.out)\n return f\n }\n\n // Given a fragment a, returns a fragment for a* or a*? (if nongreedy)\n star(f1, nongreedy) {\n if (f1.nullable) {\n return this.quest(this.plus(f1, nongreedy), nongreedy)\n }\n return this.loop(f1, nongreedy)\n }\n\n // Given a fragment for a, returns a fragment for a+ or a+? (if nongreedy)\n plus(f1, nongreedy) {\n return new Frag(f1.i, this.loop(f1, nongreedy).out, f1.nullable)\n }\n\n // op is a bitmask of EMPTY_* flags.\n empty(op) {\n const f = this.newInst(Inst.EMPTY_WIDTH)\n this.prog.getInst(f.i).arg = op\n f.out = f.i << 1\n return f\n }\n\n // flags : parser flags\n rune(runes, flags) {\n const f = this.newInst(Inst.RUNE)\n f.nullable = false\n const i = this.prog.getInst(f.i)\n i.runes = runes\n flags &= RE2Flags.FOLD_CASE\n if (runes.length !== 1 || Unicode.simpleFold(runes[0]) === runes[0]) {\n flags &= ~RE2Flags.FOLD_CASE\n }\n i.arg = flags\n f.out = f.i << 1\n if (\n ((flags & RE2Flags.FOLD_CASE) === 0 && runes.length === 1) ||\n (runes.length === 2 && runes[0] === runes[1])\n ) {\n i.op = Inst.RUNE1\n } else if (runes.length === 2 && runes[0] === 0 && runes[1] === Unicode.MAX_RUNE) {\n i.op = Inst.RUNE_ANY\n } else if (\n runes.length === 4 &&\n runes[0] === 0 &&\n runes[1] === Codepoint.CODES.get('\\n') - 1 &&\n runes[2] === Codepoint.CODES.get('\\n') + 1 &&\n runes[3] === Unicode.MAX_RUNE\n ) {\n i.op = Inst.RUNE_ANY_NOT_NL\n }\n return f\n }\n\n compile(re) {\n switch (re.op) {\n case Regexp.Op.NO_MATCH:\n return this.fail()\n case Regexp.Op.EMPTY_MATCH:\n return this.nop()\n case Regexp.Op.LITERAL:\n if (re.runes.length === 0) {\n return this.nop()\n } else {\n let f = null\n for (let r of re.runes) {\n const f1 = this.rune([r], re.flags)\n f = f === null ? f1 : this.cat(f, f1)\n }\n return f\n }\n case Regexp.Op.CHAR_CLASS:\n return this.rune(re.runes, re.flags)\n case Regexp.Op.ANY_CHAR_NOT_NL:\n return this.rune(Compiler.ANY_RUNE_NOT_NL(), 0)\n case Regexp.Op.ANY_CHAR:\n return this.rune(Compiler.ANY_RUNE(), 0)\n case Regexp.Op.BEGIN_LINE:\n return this.empty(Utils.EMPTY_BEGIN_LINE)\n case Regexp.Op.END_LINE:\n return this.empty(Utils.EMPTY_END_LINE)\n case Regexp.Op.BEGIN_TEXT:\n return this.empty(Utils.EMPTY_BEGIN_TEXT)\n case Regexp.Op.END_TEXT:\n return this.empty(Utils.EMPTY_END_TEXT)\n case Regexp.Op.WORD_BOUNDARY:\n return this.empty(Utils.EMPTY_WORD_BOUNDARY)\n case Regexp.Op.NO_WORD_BOUNDARY:\n return this.empty(Utils.EMPTY_NO_WORD_BOUNDARY)\n case Regexp.Op.CAPTURE: {\n const bra = this.cap(re.cap << 1)\n const sub = this.compile(re.subs[0])\n const ket = this.cap((re.cap << 1) | 1)\n return this.cat(this.cat(bra, sub), ket)\n }\n case Regexp.Op.STAR:\n return this.star(this.compile(re.subs[0]), (re.flags & RE2Flags.NON_GREEDY) !== 0)\n case Regexp.Op.PLUS:\n return this.plus(this.compile(re.subs[0]), (re.flags & RE2Flags.NON_GREEDY) !== 0)\n case Regexp.Op.QUEST:\n return this.quest(this.compile(re.subs[0]), (re.flags & RE2Flags.NON_GREEDY) !== 0)\n case Regexp.Op.CONCAT: {\n if (re.subs.length === 0) {\n return this.nop()\n } else {\n let f = null\n for (let sub of re.subs) {\n const f1 = this.compile(sub)\n f = f === null ? f1 : this.cat(f, f1)\n }\n return f\n }\n }\n case Regexp.Op.ALTERNATE: {\n if (re.subs.length === 0) {\n return this.nop()\n } else {\n let f = null\n for (let sub of re.subs) {\n const f1 = this.compile(sub)\n f = f === null ? f1 : this.alt(f, f1)\n }\n return f\n }\n }\n default:\n throw new RE2JSCompileException('regexp: unhandled case in compile')\n }\n }\n}\n\nexport { Compiler }\n","import { RE2Flags } from './RE2Flags'\nimport { Regexp } from './Regexp'\n\nclass Simplify {\n // Simplify returns a regexp equivalent to re but without counted\n // repetitions and with various other simplifications, such as\n // rewriting /(?:a+)+/ to /a+/. The resulting regexp will execute\n // correctly but its string representation will not produce the same\n // parse tree, because capturing parentheses may have been duplicated\n // or removed. For example, the simplified form for /(x){1,2}/ is\n // /(x)(x)?/ but both parentheses capture as $1. The returned regexp\n // may share structure with or be the original.\n static simplify(re) {\n if (re === null) {\n return null\n }\n\n switch (re.op) {\n case Regexp.Op.CAPTURE:\n case Regexp.Op.CONCAT:\n case Regexp.Op.ALTERNATE: {\n let nre = re\n for (let i = 0; i < re.subs.length; i++) {\n const sub = re.subs[i]\n const nsub = Simplify.simplify(sub)\n if (nre === re && nsub !== sub) {\n nre = Regexp.fromRegexp(re)\n nre.runes = null\n nre.subs = re.subs.slice(0, re.subs.length)\n }\n if (nre !== re) {\n nre.subs[i] = nsub\n }\n }\n return nre\n }\n\n case Regexp.Op.STAR:\n case Regexp.Op.PLUS:\n case Regexp.Op.QUEST: {\n const sub = Simplify.simplify(re.subs[0])\n return Simplify.simplify1(re.op, re.flags, sub, re)\n }\n\n case Regexp.Op.REPEAT: {\n // Special special case: x{0} matches the empty string\n // and doesn't even need to consider x.\n if (re.min === 0 && re.max === 0) {\n return new Regexp(Regexp.Op.EMPTY_MATCH)\n }\n // The fun begins.\n const sub = Simplify.simplify(re.subs[0])\n\n // x{n,} means at least n matches of x.\n if (re.max === -1) {\n // Special case: x{0,} is x*.\n if (re.min === 0) {\n return Simplify.simplify1(Regexp.Op.STAR, re.flags, sub, null)\n }\n // Special case: x{1,} is x+.\n if (re.min === 1) {\n return Simplify.simplify1(Regexp.Op.PLUS, re.flags, sub, null)\n }\n // General case: x{4,} is xxxx+.\n const nre = new Regexp(Regexp.Op.CONCAT)\n const subs = []\n for (let i = 0; i < re.min - 1; i++) {\n subs.push(sub)\n }\n subs.push(Simplify.simplify1(Regexp.Op.PLUS, re.flags, sub, null))\n nre.subs = subs.slice(0)\n return nre\n }\n // Special case x{0} handled above.\n\n // Special case: x{1} is just x.\n if (re.min === 1 && re.max === 1) {\n return sub\n }\n\n // General case: x{n,m} means n copies of x and m copies of x?\n // The machine will do less work if we nest the final m copies,\n // so that x{2,5} = xx(x(x(x)?)?)?\n\n // Build leading prefix: xx.\n let prefixSubs = null\n if (re.min > 0) {\n prefixSubs = []\n for (let i = 0; i < re.min; i++) {\n prefixSubs.push(sub)\n }\n }\n\n // Build and attach suffix: (x(x(x)?)?)?\n if (re.max > re.min) {\n let suffix = Simplify.simplify1(Regexp.Op.QUEST, re.flags, sub, null)\n for (let i = re.min + 1; i < re.max; i++) {\n const nre2 = new Regexp(Regexp.Op.CONCAT)\n nre2.subs = [sub, suffix]\n suffix = Simplify.simplify1(Regexp.Op.QUEST, re.flags, nre2, null)\n }\n\n if (prefixSubs === null) {\n return suffix\n }\n\n prefixSubs.push(suffix)\n }\n\n if (prefixSubs !== null) {\n const prefix = new Regexp(Regexp.Op.CONCAT)\n prefix.subs = prefixSubs.slice(0)\n return prefix\n }\n\n // Some degenerate case like min > max or min < max < 0.\n // Handle as impossible match.\n return new Regexp(Regexp.Op.NO_MATCH)\n }\n }\n return re\n }\n\n // simplify1 implements Simplify for the unary OpStar,\n // OpPlus, and OpQuest operators. It returns the simple regexp\n // equivalent to\n //\n // Regexp{Op: op, Flags: flags, Sub: {sub}}\n //\n // under the assumption that sub is already simple, and\n // without first allocating that structure. If the regexp\n // to be returned turns out to be equivalent to re, simplify1\n // returns re instead.\n //\n // simplify1 is factored out of Simplify because the implementation\n // for other operators generates these unary expressions.\n // Letting them call simplify1 makes sure the expressions they\n // generate are simple.\n static simplify1(op, flags, sub, re) {\n // Special case: repeat the empty string as much as\n // you want, but it's still the empty string.\n if (sub.op === Regexp.Op.EMPTY_MATCH) {\n return sub\n }\n\n // The operators are idempotent if the flags match.\n if (op === sub.op && (flags & RE2Flags.NON_GREEDY) === (sub.flags & RE2Flags.NON_GREEDY)) {\n return sub\n }\n\n if (\n re !== null &&\n re.op === op &&\n (re.flags & RE2Flags.NON_GREEDY) === (flags & RE2Flags.NON_GREEDY) &&\n sub === re.subs[0]\n ) {\n return re\n }\n\n re = new Regexp(op)\n re.flags = flags\n re.subs = [sub]\n return re\n }\n}\n\nexport { Simplify }\n","// GENERATED BY tools/scripts/make_perl_groups.pl; DO NOT EDIT.\n// ./tools/scripts/make_perl_groups.pl > src/CharGroup.js\n\nclass CharGroup {\n constructor(sign, cls) {\n this.sign = sign\n this.cls = cls\n }\n}\n\nconst code1 = [0x30, 0x39]\n\nconst code2 = [0x9, 0xa, 0xc, 0xd, 0x20, 0x20]\n\nconst code3 = [0x30, 0x39, 0x41, 0x5a, 0x5f, 0x5f, 0x61, 0x7a]\n\nconst PERL_GROUPS = new Map([\n ['\\\\d', new CharGroup(+1, code1)],\n ['\\\\D', new CharGroup(-1, code1)],\n ['\\\\s', new CharGroup(+1, code2)],\n ['\\\\S', new CharGroup(-1, code2)],\n ['\\\\w', new CharGroup(+1, code3)],\n ['\\\\W', new CharGroup(-1, code3)]\n])\nconst code4 = [0x30, 0x39, 0x41, 0x5a, 0x61, 0x7a]\n\nconst code5 = [0x41, 0x5a, 0x61, 0x7a]\n\nconst code6 = [0x0, 0x7f]\n\nconst code7 = [0x9, 0x9, 0x20, 0x20]\n\nconst code8 = [0x0, 0x1f, 0x7f, 0x7f]\n\nconst code9 = [0x30, 0x39]\n\nconst code10 = [0x21, 0x7e]\n\nconst code11 = [0x61, 0x7a]\n\nconst code12 = [0x20, 0x7e]\n\nconst code13 = [0x21, 0x2f, 0x3a, 0x40, 0x5b, 0x60, 0x7b, 0x7e]\n\nconst code14 = [0x9, 0xd, 0x20, 0x20]\n\nconst code15 = [0x41, 0x5a]\n\nconst code16 = [0x30, 0x39, 0x41, 0x5a, 0x5f, 0x5f, 0x61, 0x7a]\n\nconst code17 = [0x30, 0x39, 0x41, 0x46, 0x61, 0x66]\n\nconst POSIX_GROUPS = new Map([\n ['[:alnum:]', new CharGroup(+1, code4)],\n ['[:^alnum:]', new CharGroup(-1, code4)],\n ['[:alpha:]', new CharGroup(+1, code5)],\n ['[:^alpha:]', new CharGroup(-1, code5)],\n ['[:ascii:]', new CharGroup(+1, code6)],\n ['[:^ascii:]', new CharGroup(-1, code6)],\n ['[:blank:]', new CharGroup(+1, code7)],\n ['[:^blank:]', new CharGroup(-1, code7)],\n ['[:cntrl:]', new CharGroup(+1, code8)],\n ['[:^cntrl:]', new CharGroup(-1, code8)],\n ['[:digit:]', new CharGroup(+1, code9)],\n ['[:^digit:]', new CharGroup(-1, code9)],\n ['[:graph:]', new CharGroup(+1, code10)],\n ['[:^graph:]', new CharGroup(-1, code10)],\n ['[:lower:]', new CharGroup(+1, code11)],\n ['[:^lower:]', new CharGroup(-1, code11)],\n ['[:print:]', new CharGroup(+1, code12)],\n ['[:^print:]', new CharGroup(-1, code12)],\n ['[:punct:]', new CharGroup(+1, code13)],\n ['[:^punct:]', new CharGroup(-1, code13)],\n ['[:space:]', new CharGroup(+1, code14)],\n ['[:^space:]', new CharGroup(-1, code14)],\n ['[:upper:]', new CharGroup(+1, code15)],\n ['[:^upper:]', new CharGroup(-1, code15)],\n ['[:word:]', new CharGroup(+1, code16)],\n ['[:^word:]', new CharGroup(-1, code16)],\n ['[:xdigit:]', new CharGroup(+1, code17)],\n ['[:^xdigit:]', new CharGroup(-1, code17)]\n])\n\nexport { PERL_GROUPS, POSIX_GROUPS }\n","import { RE2Flags } from './RE2Flags'\nimport { Unicode } from './Unicode'\nimport { Utils } from './Utils'\n/**\n * A \"builder\"-style helper class for manipulating character classes represented as an array of\n * pairs of runes [lo, hi], each denoting an inclusive interval.\n *\n * All methods mutate the internal state and return {@code this}, allowing operations to be chained.\n */\nclass CharClass {\n // Exposed, since useful for debugging CharGroups too.\n static charClassToString(r, len) {\n let result = '['\n for (let i = 0; i < len; i += 2) {\n if (i > 0) {\n result += ' '\n }\n const lo = r[i]\n const hi = r[i + 1]\n if (lo === hi) {\n result += `0x${lo.toString(16)}`\n } else {\n result += `0x${lo.toString(16)}-0x${hi.toString(16)}`\n }\n }\n result += ']'\n return result\n }\n\n // cmp() returns the ordering of the pair (a[i], a[i+1]) relative to\n // (pivotFrom, pivotTo), where the first component of the pair (lo) is\n // ordered naturally and the second component (hi) is in reverse order.\n static cmp(array, i, pivotFrom, pivotTo) {\n const cmp = array[i] - pivotFrom\n return cmp !== 0 ? cmp : pivotTo - array[i + 1]\n }\n\n // qsortIntPair() quicksorts pairs of ints in |array| according to lt().\n // Precondition: |left|, |right|, |this.len| must all be even; |this.len > 1|.\n static qsortIntPair(array, left, right) {\n const pivotIndex = (((left + right) / 2) | 0) & ~1\n const pivotFrom = array[pivotIndex]\n const pivotTo = array[pivotIndex + 1]\n let i = left\n let j = right\n while (i <= j) {\n while (i < right && CharClass.cmp(array, i, pivotFrom, pivotTo) < 0) {\n i += 2\n }\n\n while (j > left && CharClass.cmp(array, j, pivotFrom, pivotTo) > 0) {\n j -= 2\n }\n\n if (i <= j) {\n if (i !== j) {\n let temp = array[i]\n array[i] = array[j]\n array[j] = temp\n temp = array[i + 1]\n array[i + 1] = array[j + 1]\n array[j + 1] = temp\n }\n i += 2\n j -= 2\n }\n }\n\n if (left < j) {\n CharClass.qsortIntPair(array, left, j)\n }\n if (i < right) {\n CharClass.qsortIntPair(array, i, right)\n }\n }\n\n constructor(r = Utils.emptyInts()) {\n this.r = r // inclusive ranges, pairs of [lo,hi]. r.length is even.\n this.len = r.length // prefix of |r| that is defined. Even.\n }\n\n // Returns the character class as an int array. Subsequent CharClass\n // operations may mutate this array, so typically this is the last operation\n // performed on a given CharClass instance.\n toArray() {\n if (this.len === this.r.length) {\n return this.r\n } else {\n return this.r.slice(0, this.len)\n }\n }\n\n // cleanClass() sorts the ranges (pairs of elements) of this CharClass,\n // merges them, and eliminates duplicates.\n cleanClass() {\n if (this.len < 4) {\n return this\n }\n // Sort by lo increasing, hi decreasing to break ties.\n CharClass.qsortIntPair(this.r, 0, this.len - 2)\n // Merge abutting, overlapping.\n let w = 2 // write index\n for (let i = 2; i < this.len; i += 2) {\n {\n const lo = this.r[i]\n const hi = this.r[i + 1]\n if (lo <= this.r[w - 1] + 1) {\n // merge with previous range\n if (hi > this.r[w - 1]) {\n this.r[w - 1] = hi\n }\n continue\n }\n // new disjoint range\n this.r[w] = lo\n this.r[w + 1] = hi\n w += 2\n }\n }\n this.len = w\n return this\n }\n\n // appendLiteral() appends the literal |x| to this CharClass.\n appendLiteral(x, flags) {\n return (flags & RE2Flags.FOLD_CASE) !== 0\n ? this.appendFoldedRange(x, x)\n : this.appendRange(x, x)\n }\n\n // appendRange() appends the range [lo-hi] (inclusive) to this CharClass.\n appendRange(lo, hi) {\n // Expand last range or next to last range if it overlaps or abuts.\n // Checking two ranges helps when appending case-folded\n // alphabets, so that one range can be expanding A-Z and the\n // other expanding a-z.\n if (this.len > 0) {\n for (let i = 2; i <= 4; i += 2) {\n // twice, using i=2, i=4\n if (this.len >= i) {\n const rlo = this.r[this.len - i]\n const rhi = this.r[this.len - i + 1]\n if (lo <= rhi + 1 && rlo <= hi + 1) {\n if (lo < rlo) {\n this.r[this.len - i] = lo\n }\n if (hi > rhi) {\n this.r[this.len - i + 1] = hi\n }\n return this\n }\n }\n }\n }\n\n this.r[this.len++] = lo\n this.r[this.len++] = hi\n return this\n }\n\n // appendFoldedRange() appends the range [lo-hi] and its case\n // folding-equivalent runes to this CharClass.\n appendFoldedRange(lo, hi) {\n // Optimizations.\n if (lo <= Unicode.MIN_FOLD && hi >= Unicode.MAX_FOLD) {\n // Range is full: folding can't add more.\n return this.appendRange(lo, hi)\n }\n if (hi < Unicode.MIN_FOLD || lo > Unicode.MAX_FOLD) {\n // Range is outside folding possibilities.\n return this.appendRange(lo, hi)\n }\n if (lo < Unicode.MIN_FOLD) {\n // [lo, minFold-1] needs no folding.\n this.appendRange(lo, Unicode.MIN_FOLD - 1)\n lo = Unicode.MIN_FOLD\n }\n if (hi > Unicode.MAX_FOLD) {\n // [maxFold+1, hi] needs no folding.\n this.appendRange(Unicode.MAX_FOLD + 1, hi)\n hi = Unicode.MAX_FOLD\n }\n\n // Brute force. Depend on appendRange to coalesce ranges on the fly.\n for (let c = lo; c <= hi; c++) {\n this.appendRange(c, c)\n\n for (let f = Unicode.simpleFold(c); f !== c; f = Unicode.simpleFold(f)) {\n this.appendRange(f, f)\n }\n }\n return this\n }\n\n // appendClass() appends the class |x| to this CharClass.\n // It assumes |x| is clean. Does not mutate |x|.\n appendClass(x) {\n for (let i = 0; i < x.length; i += 2) {\n this.appendRange(x[i], x[i + 1])\n }\n return this\n }\n\n // appendFoldedClass() appends the case folding of the class |x| to this\n // CharClass. Does not mutate |x|.\n appendFoldedClass(x) {\n for (let i = 0; i < x.length; i += 2) {\n this.appendFoldedRange(x[i], x[i + 1])\n }\n return this\n }\n\n // appendNegatedClass() append the negation of the class |x| to this\n // CharClass. It assumes |x| is clean. Does not mutate |x|.\n appendNegatedClass(x) {\n let nextLo = 0\n for (let i = 0; i < x.length; i += 2) {\n const lo = x[i]\n const hi = x[i + 1]\n if (nextLo <= lo - 1) {\n this.appendRange(nextLo, lo - 1)\n }\n nextLo = hi + 1\n }\n if (nextLo <= Unicode.MAX_RUNE) {\n this.appendRange(nextLo, Unicode.MAX_RUNE)\n }\n return this\n }\n\n // appendTable() appends the Unicode range table |table| to this CharClass.\n // Does not mutate |table|.\n appendTable(table) {\n for (let triple of table) {\n const lo = triple[0]\n const hi = triple[1]\n const stride = triple[2]\n if (stride === 1) {\n this.appendRange(lo, hi)\n continue\n }\n for (let c = lo; c <= hi; c += stride) {\n this.appendRange(c, c)\n }\n }\n return this\n }\n\n // appendNegatedTable() returns the result of appending the negation of range\n // table |table| to this CharClass. Does not mutate |table|.\n appendNegatedTable(table) {\n let nextLo = 0\n for (let triple of table) {\n const lo = triple[0]\n const hi = triple[1]\n const stride = triple[2]\n if (stride === 1) {\n if (nextLo <= lo - 1) {\n this.appendRange(nextLo, lo - 1)\n }\n nextLo = hi + 1\n continue\n }\n for (let c = lo; c <= hi; c += stride) {\n if (nextLo <= c - 1) {\n this.appendRange(nextLo, c - 1)\n }\n nextLo = c + 1\n }\n }\n if (nextLo <= Unicode.MAX_RUNE) {\n this.appendRange(nextLo, Unicode.MAX_RUNE)\n }\n return this\n }\n\n // appendTableWithSign() calls append{,Negated}Table depending on sign.\n // Does not mutate |table|.\n appendTableWithSign(table, sign) {\n return sign < 0 ? this.appendNegatedTable(table) : this.appendTable(table)\n }\n\n // negateClass() negates this CharClass, which must already be clean.\n negateClass() {\n let nextLo = 0 // lo end of next class to add\n let w = 0 // write index\n for (let i = 0; i < this.len; i += 2) {\n const lo = this.r[i]\n const hi = this.r[i + 1]\n if (nextLo <= lo - 1) {\n this.r[w] = nextLo\n this.r[w + 1] = lo - 1\n w += 2\n }\n nextLo = hi + 1\n }\n this.len = w\n if (nextLo <= Unicode.MAX_RUNE) {\n this.r[this.len++] = nextLo\n this.r[this.len++] = Unicode.MAX_RUNE\n }\n return this\n }\n\n // appendClassWithSign() calls appendClass() if sign is +1 or\n // appendNegatedClass if sign is -1. Does not mutate |x|.\n appendClassWithSign(x, sign) {\n return sign < 0 ? this.appendNegatedClass(x) : this.appendClass(x)\n }\n\n // appendGroup() appends CharGroup |g| to this CharClass, folding iff\n // |foldCase|. Does not mutate |g|.\n appendGroup(g, foldCase) {\n let cls = g.cls\n if (foldCase) {\n cls = new CharClass().appendFoldedClass(cls).cleanClass().toArray()\n }\n return this.appendClassWithSign(cls, g.sign)\n }\n\n toString() {\n return CharClass.charClassToString(this.r, this.len)\n }\n}\n\nexport { CharClass }\n","import { Codepoint } from './Codepoint'\nimport { RE2Flags } from './RE2Flags'\nimport { Unicode } from './Unicode'\nimport { UnicodeTables } from './UnicodeTables'\nimport { PERL_GROUPS, POSIX_GROUPS } from './CharGroup'\nimport { Utils } from './Utils'\nimport { CharClass } from './CharClass'\nimport { RE2JSSyntaxException } from './exceptions'\nimport { Regexp } from './Regexp'\n\nclass Pair {\n static of(first, second) {\n return new Pair(first, second)\n }\n\n constructor(first, second) {\n this.first = first\n this.second = second\n }\n}\n\n// StringIterator: a stream of runes with an opaque cursor, permitting\n// rewinding. The units of the cursor are not specified beyond the\n// fact that ASCII characters are single width. (Cursor positions\n// could be UTF-8 byte indices, UTF-16 code indices or rune indices.)\n//\n// In particular, be careful with:\n// - skip: only use this to advance over ASCII characters\n// since these always have a width of 1.\n// - skipString: only use this to advance over strings which are\n// known to be at the current position, e.g. due to prior call to\n// lookingAt().\n// Only use pop() to advance over possibly non-ASCII runes.\nclass StringIterator {\n constructor(str) {\n this.str = str\n this.position = 0\n }\n\n // Returns the cursor position. Do not interpret the result!\n pos() {\n return this.position\n }\n\n // Resets the cursor position to a previous value returned by pos().\n rewindTo(pos) {\n this.position = pos\n }\n\n // Returns true unless the stream is exhausted.\n more() {\n return this.position < this.str.length\n }\n\n // Returns the rune at the cursor position.\n // Precondition: |more()|.\n peek() {\n return this.str.codePointAt(this.position)\n }\n\n // Advances the cursor by |n| positions, which must be ASCII runes.\n //\n // (In practise, this is only ever used to skip over regexp\n // metacharacters that are ASCII, so there is no numeric difference\n // between indices into UTF-8 bytes, UTF-16 codes and runes.)\n skip(n) {\n this.position += n\n }\n\n // Advances the cursor by the number of cursor positions in |s|.\n skipString(s) {\n this.position += s.length\n }\n\n // Returns the rune at the cursor position, and advances the cursor\n // past it. Precondition: |more()|.\n pop() {\n const r = this.str.codePointAt(this.position)\n this.position += Utils.charCount(r)\n return r\n }\n\n lookingAt(s) {\n return this.rest().startsWith(s)\n }\n\n // Returns the rest of the pattern as a Java UTF-16 string.\n rest() {\n return this.str.substring(this.position)\n }\n\n // Returns the substring from |beforePos| to the current position.\n // |beforePos| must have been previously returned by |pos()|.\n from(beforePos) {\n return this.str.substring(beforePos, this.position)\n }\n\n toString() {\n return this.rest()\n }\n}\n/**\n * A parser of regular expression patterns.\n *\n * The only public entry point is {@link #parse(String pattern, int flags)}.\n */\nclass Parser {\n // Unexpected error\n static ERR_INTERNAL_ERROR = 'regexp/syntax: internal error'\n\n // Parse errors\n static ERR_INVALID_CHAR_RANGE = 'invalid character class range'\n static ERR_INVALID_ESCAPE = 'invalid escape sequence'\n static ERR_INVALID_NAMED_CAPTURE = 'invalid named capture'\n static ERR_INVALID_PERL_OP = 'invalid or unsupported Perl syntax'\n static ERR_INVALID_REPEAT_OP = 'invalid nested repetition operator'\n static ERR_INVALID_REPEAT_SIZE = 'invalid repeat count'\n static ERR_MISSING_BRACKET = 'missing closing ]'\n static ERR_MISSING_PAREN = 'missing closing )'\n static ERR_MISSING_REPEAT_ARGUMENT = 'missing argument to repetition operator'\n static ERR_TRAILING_BACKSLASH = 'trailing backslash at end of expression'\n static ERR_DUPLICATE_NAMED_CAPTURE = 'duplicate capture group name'\n\n // RangeTables are represented as int[][], a list of triples (start, end,\n // stride).\n static ANY_TABLE() {\n return [[0, Unicode.MAX_RUNE, 1]]\n }\n\n // unicodeTable() returns the Unicode RangeTable identified by name\n // and the table of additional fold-equivalent code points.\n // Returns null if |name| does not identify a Unicode character range.\n static unicodeTable(name) {\n if (name === 'Any') {\n return Pair.of(Parser.ANY_TABLE(), Parser.ANY_TABLE())\n }\n if (UnicodeTables.CATEGORIES.has(name)) {\n return Pair.of(UnicodeTables.CATEGORIES.get(name), UnicodeTables.FOLD_CATEGORIES.get(name))\n }\n if (UnicodeTables.SCRIPTS.has(name)) {\n return Pair.of(UnicodeTables.SCRIPTS.get(name), UnicodeTables.FOLD_SCRIPT.get(name))\n }\n return null\n }\n\n // minFoldRune returns the minimum rune fold-equivalent to r.\n static minFoldRune(r) {\n if (r < Unicode.MIN_FOLD || r > Unicode.MAX_FOLD) {\n return r\n }\n\n let min = r\n const r0 = r\n for (r = Unicode.simpleFold(r); r !== r0; r = Unicode.simpleFold(r)) {\n if (min > r) {\n min = r\n }\n }\n return min\n }\n\n // leadingRegexp returns the leading regexp that re begins with.\n // The regexp refers to storage in re or its children.\n static leadingRegexp(re) {\n if (re.op === Regexp.Op.EMPTY_MATCH) {\n return null\n }\n if (re.op === Regexp.Op.CONCAT && re.subs.length > 0) {\n const sub = re.subs[0]\n if (sub.op === Regexp.Op.EMPTY_MATCH) {\n return null\n }\n return sub\n }\n return re\n }\n\n static literalRegexp(s, flags) {\n const re = new Regexp(Regexp.Op.LITERAL)\n re.flags = flags\n re.runes = Utils.stringToRunes(s)\n return re\n }\n /**\n * Parse regular expression pattern {@code pattern} with mode flags {@code flags}.\n */\n static parse(pattern, flags) {\n return new Parser(pattern, flags).parseInternal()\n }\n\n // parseRepeat parses {min} (max=min) or {min,} (max=-1) or {min,max}.\n // If |t| is not of that form, it returns -1.\n // If |t| has the right form but the values are negative or too big,\n // it returns -2.\n // On success, returns a nonnegative number encoding min/max in the\n // high/low signed halfwords of the result. (Note: min >= 0; max may\n // be -1.)\n //\n // On success, advances |t| beyond the repeat; otherwise |t.pos()| is\n // undefined.\n static parseRepeat(t) {\n const start = t.pos()\n if (!t.more() || !t.lookingAt('{')) {\n return -1\n }\n t.skip(1)\n\n const min = Parser.parseInt(t)\n if (min === -1) {\n return -1\n }\n if (!t.more()) {\n return -1\n }\n\n let max\n if (!t.lookingAt(',')) {\n max = min\n } else {\n t.skip(1)\n if (!t.more()) {\n return -1\n }\n if (t.lookingAt('}')) {\n max = -1\n } else if ((max = Parser.parseInt(t)) === -1) {\n return -1\n }\n }\n\n if (!t.more() || !t.lookingAt('}')) {\n return -1\n }\n t.skip(1)\n if (min < 0 || min > 1000 || max === -2 || max > 1000 || (max >= 0 && min > max)) {\n throw new RE2JSSyntaxException(Parser.ERR_INVALID_REPEAT_SIZE, t.from(start))\n }\n\n return (min << 16) | (max & Unicode.MAX_BMP)\n }\n\n // isValidCaptureName reports whether name\n // is a valid capture name: [A-Za-z0-9_]+.\n // PCRE limits names to 32 bytes.\n // Python rejects names starting with digits.\n // We don't enforce either of those.\n static isValidCaptureName(name) {\n if (name.length === 0) {\n return false\n }\n\n for (let i = 0; i < name.length; i++) {\n const c = name.codePointAt(i)\n if (c !== Codepoint.CODES.get('_') && !Utils.isalnum(c)) {\n return false\n }\n }\n\n return true\n }\n\n // parseInt parses a nonnegative decimal integer.\n // -1 => bad format. -2 => format ok, but integer overflow.\n static parseInt(t) {\n const start = t.pos()\n while (\n t.more() &&\n t.peek() >= Codepoint.CODES.get('0') &&\n t.peek() <= Codepoint.CODES.get('9')\n ) {\n t.skip(1)\n }\n\n const n = t.from(start)\n if (n.length === 0 || (n.length > 1 && n.codePointAt(0) === Codepoint.CODES.get('0'))) {\n return -1\n }\n if (n.length > 8) {\n return -2\n }\n return parseFloat(n, 10)\n }\n\n // can this be represented as a character class?\n // single-rune literal string, char class, ., and .|\\n.\n static isCharClass(re) {\n return (\n (re.op === Regexp.Op.LITERAL && re.runes.length === 1) ||\n re.op === Regexp.Op.CHAR_CLASS ||\n re.op === Regexp.Op.ANY_CHAR_NOT_NL ||\n re.op === Regexp.Op.ANY_CHAR\n )\n }\n\n // does re match r?\n static matchRune(re, r) {\n switch (re.op) {\n case Regexp.Op.LITERAL:\n return re.runes.length === 1 && re.runes[0] === r\n case Regexp.Op.CHAR_CLASS:\n for (let i = 0; i < re.runes.length; i += 2) {\n if (re.runes[i] <= r && r <= re.runes[i + 1]) {\n return true\n }\n }\n return false\n case Regexp.Op.ANY_CHAR_NOT_NL:\n return r !== Codepoint.CODES.get('\\n')\n case Regexp.Op.ANY_CHAR:\n return true\n }\n return false\n }\n\n // mergeCharClass makes dst = dst|src.\n // The caller must ensure that dst.Op >= src.Op,\n // to reduce the amount of copying.\n static mergeCharClass(dst, src) {\n switch (dst.op) {\n case Regexp.Op.ANY_CHAR:\n break\n case Regexp.Op.ANY_CHAR_NOT_NL:\n if (Parser.matchRune(src, Codepoint.CODES.get('\\n'))) {\n dst.op = Regexp.Op.ANY_CHAR\n }\n break\n case Regexp.Op.CHAR_CLASS:\n if (src.op === Regexp.Op.LITERAL) {\n dst.runes = new CharClass(dst.runes).appendLiteral(src.runes[0], src.flags).toArray()\n } else {\n dst.runes = new CharClass(dst.runes).appendClass(src.runes).toArray()\n }\n break\n case Regexp.Op.LITERAL:\n if (src.runes[0] === dst.runes[0] && src.flags === dst.flags) {\n break\n }\n dst.op = Regexp.Op.CHAR_CLASS\n dst.runes = new CharClass()\n .appendLiteral(dst.runes[0], dst.flags)\n .appendLiteral(src.runes[0], src.flags)\n .toArray()\n break\n }\n }\n\n // parseEscape parses an escape sequence at the beginning of s\n // and returns the rune.\n // Pre: t at '\\\\'. Post: after escape.\n static parseEscape(t) {\n const startPos = t.pos()\n t.skip(1) // '\\\\'\n if (!t.more()) {\n throw new RE2JSSyntaxException(Parser.ERR_TRAILING_BACKSLASH)\n }\n let c = t.pop()\n bigswitch: switch (c) {\n case Codepoint.CODES.get('1'):\n case Codepoint.CODES.get('2'):\n case Codepoint.CODES.get('3'):\n case Codepoint.CODES.get('4'):\n case Codepoint.CODES.get('5'):\n case Codepoint.CODES.get('6'):\n case Codepoint.CODES.get('7'): {\n if (\n !t.more() ||\n t.peek() < Codepoint.CODES.get('0') ||\n t.peek() > Codepoint.CODES.get('7')\n ) {\n break\n }\n }\n // eslint-disable-next-line no-fallthrough\n case Codepoint.CODES.get('0'): {\n let r = c - Codepoint.CODES.get('0')\n for (let i = 1; i < 3; i++) {\n if (\n !t.more() ||\n t.peek() < Codepoint.CODES.get('0') ||\n t.peek() > Codepoint.CODES.get('7')\n ) {\n break\n }\n r = r * 8 + t.peek() - Codepoint.CODES.get('0')\n t.skip(1)\n }\n return r\n }\n case Codepoint.CODES.get('x'): {\n if (!t.more()) {\n break\n }\n c = t.pop()\n if (c === Codepoint.CODES.get('{')) {\n let nhex = 0\n let r = 0\n // eslint-disable-next-line no-constant-condition\n while (true) {\n if (!t.more()) {\n break bigswitch\n }\n c = t.pop()\n if (c === Codepoint.CODES.get('}')) {\n break\n }\n const v = Utils.unhex(c)\n if (v < 0) {\n break bigswitch\n }\n r = r * 16 + v\n if (r > Unicode.MAX_RUNE) {\n break bigswitch\n }\n nhex++\n }\n if (nhex === 0) {\n break bigswitch\n }\n return r\n }\n const x = Utils.unhex(c)\n if (!t.more()) {\n break\n }\n c = t.pop()\n const y = Utils.unhex(c)\n if (x < 0 || y < 0) {\n break\n }\n return x * 16 + y\n }\n case Codepoint.CODES.get('a'):\n return Codepoint.CODES.get('\\x07')\n case Codepoint.CODES.get('f'):\n return Codepoint.CODES.get('\\f')\n case Codepoint.CODES.get('n'):\n return Codepoint.CODES.get('\\n')\n case Codepoint.CODES.get('r'):\n return Codepoint.CODES.get('\\r')\n case Codepoint.CODES.get('t'):\n return Codepoint.CODES.get('\\t')\n case Codepoint.CODES.get('v'):\n return Codepoint.CODES.get('\\v')\n default:\n if (!Utils.isalnum(c)) {\n return c\n }\n break\n }\n throw new RE2JSSyntaxException(Parser.ERR_INVALID_ESCAPE, t.from(startPos))\n }\n\n // parseClassChar parses a character class character and returns it.\n // wholeClassPos is the position of the start of the entire class \"[...\".\n // Pre: t at class char; Post: t after it.\n static parseClassChar(t, wholeClassPos) {\n if (!t.more()) {\n throw new RE2JSSyntaxException(Parser.ERR_MISSING_BRACKET, t.from(wholeClassPos))\n }\n if (t.lookingAt('\\\\')) {\n return Parser.parseEscape(t)\n }\n return t.pop()\n }\n\n static concatRunes(x, y) {\n return [...x, ...y]\n }\n\n constructor(wholeRegexp, flags = 0) {\n this.wholeRegexp = wholeRegexp\n // Flags control the behavior of the parser and record information about\n // regexp context.\n this.flags = flags\n // number of capturing groups seen\n this.numCap = 0\n this.namedGroups = {}\n // Stack of parsed expressions.\n this.stack = []\n this.free = null\n }\n\n // Allocate a Regexp, from the free list if possible.\n newRegexp(op) {\n let re = this.free\n if (re !== null && re.subs !== null && re.subs.length > 0) {\n this.free = re.subs[0]\n re.reinit()\n re.op = op\n } else {\n re = new Regexp(op)\n }\n return re\n }\n\n reuse(re) {\n if (re.subs !== null && re.subs.length > 0) {\n re.subs[0] = this.free\n }\n this.free = re\n }\n\n // Parse stack manipulation.\n\n pop() {\n return this.stack.pop()\n }\n\n popToPseudo() {\n const n = this.stack.length\n let i = n\n while (i > 0 && !Regexp.isPseudoOp(this.stack[i - 1].op)) {\n i--\n }\n\n const r = this.stack.slice(i, n)\n this.stack = this.stack.slice(0, i)\n return r\n }\n\n // push pushes the regexp re onto the parse stack and returns the regexp.\n // Returns null for a CHAR_CLASS that can be merged with the top-of-stack.\n push(re) {\n if (re.op === Regexp.Op.CHAR_CLASS && re.runes.length === 2 && re.runes[0] === re.runes[1]) {\n if (this.maybeConcat(re.runes[0], this.flags & ~RE2Flags.FOLD_CASE)) {\n return null\n }\n re.op = Regexp.Op.LITERAL\n re.runes = [re.runes[0]]\n re.flags = this.flags & ~RE2Flags.FOLD_CASE\n } else if (\n (re.op === Regexp.Op.CHAR_CLASS &&\n re.runes.length === 4 &&\n re.runes[0] === re.runes[1] &&\n re.runes[2] === re.runes[3] &&\n Unicode.simpleFold(re.runes[0]) === re.runes[2] &&\n Unicode.simpleFold(re.runes[2]) === re.runes[0]) ||\n (re.op === Regexp.Op.CHAR_CLASS &&\n re.runes.length === 2 &&\n re.runes[0] + 1 === re.runes[1] &&\n Unicode.simpleFold(re.runes[0]) === re.runes[1] &&\n Unicode.simpleFold(re.runes[1]) === re.runes[0])\n ) {\n // Case-insensitive rune like [Aa] or [Δδ].\n if (this.maybeConcat(re.runes[0], this.flags | RE2Flags.FOLD_CASE)) {\n return null\n }\n // Rewrite as (case-insensitive) literal.\n re.op = Regexp.Op.LITERAL\n re.runes = [re.runes[0]]\n re.flags = this.flags | RE2Flags.FOLD_CASE\n } else {\n // Incremental concatenation.\n this.maybeConcat(-1, 0)\n }\n this.stack.push(re)\n return re\n }\n\n // maybeConcat implements incremental concatenation\n // of literal runes into string nodes. The parser calls this\n // before each push, so only the top fragment of the stack\n // might need processing. Since this is called before a push,\n // the topmost literal is no longer subject to operators like *\n // (Otherwise ab* would turn into (ab)*.)\n // If (r >= 0 and there's a node left over, maybeConcat uses it\n // to push r with the given flags.\n // maybeConcat reports whether r was pushed.\n maybeConcat(r, flags) {\n const n = this.stack.length\n if (n < 2) {\n return false\n }\n const re1 = this.stack[n - 1]\n const re2 = this.stack[n - 2]\n if (\n re1.op !== Regexp.Op.LITERAL ||\n re2.op !== Regexp.Op.LITERAL ||\n (re1.flags & RE2Flags.FOLD_CASE) !== (re2.flags & RE2Flags.FOLD_CASE)\n ) {\n return false\n }\n // Push re1 into re2.\n re2.runes = Parser.concatRunes(re2.runes, re1.runes)\n // Reuse re1 if possible.\n if (r >= 0) {\n re1.runes = [r]\n re1.flags = flags\n return true\n }\n this.pop()\n this.reuse(re1)\n return false // did not push r\n }\n\n // newLiteral returns a new LITERAL Regexp with the given flags\n newLiteral(r, flags) {\n const re = this.newRegexp(Regexp.Op.LITERAL)\n re.flags = flags\n if ((flags & RE2Flags.FOLD_CASE) !== 0) {\n r = Parser.minFoldRune(r)\n }\n re.runes = [r]\n return re\n }\n\n // literal pushes a literal regexp for the rune r on the stack\n // and returns that regexp.\n literal(r) {\n this.push(this.newLiteral(r, this.flags))\n }\n\n // op pushes a regexp with the given op onto the stack\n // and returns that regexp.\n op(op) {\n const re = this.newRegexp(op)\n re.flags = this.flags\n return this.push(re)\n }\n\n // repeat replaces the top stack element with itself repeated according to\n // op, min, max. beforePos is the start position of the repetition operator.\n // Pre: t is positioned after the initial repetition operator.\n // Post: t advances past an optional perl-mode '?', or stays put.\n // Or, it fails with RE2JSSyntaxException.\n repeat(op, min, max, beforePos, t, lastRepeatPos) {\n let flags = this.flags\n if ((flags & RE2Flags.PERL_X) !== 0) {\n if (t.more() && t.lookingAt('?')) {\n t.skip(1)\n flags ^= RE2Flags.NON_GREEDY\n }\n if (lastRepeatPos !== -1) {\n // In Perl it is not allowed to stack repetition operators:\n // a** is a syntax error, not a doubled star, and a++ means\n // something else entirely, which we don't support!\n throw new RE2JSSyntaxException(Parser.ERR_INVALID_REPEAT_OP, t.from(lastRepeatPos))\n }\n }\n\n const n = this.stack.length\n if (n === 0) {\n throw new RE2JSSyntaxException(Parser.ERR_MISSING_REPEAT_ARGUMENT, t.from(beforePos))\n }\n\n const sub = this.stack[n - 1]\n if (Regexp.isPseudoOp(sub.op)) {\n throw new RE2JSSyntaxException(Parser.ERR_MISSING_REPEAT_ARGUMENT, t.from(beforePos))\n }\n\n const re = this.newRegexp(op)\n re.min = min\n re.max = max\n re.flags = flags\n re.subs = [sub]\n this.stack[n - 1] = re\n }\n\n // concat replaces the top of the stack (above the topmost '|' or '(') with\n // its concatenation.\n concat() {\n this.maybeConcat(-1, 0)\n const subs = this.popToPseudo()\n if (subs.length === 0) {\n return this.push(this.newRegexp(Regexp.Op.EMPTY_MATCH))\n }\n return this.push(this.collapse(subs, Regexp.Op.CONCAT))\n }\n\n // alternate replaces the top of the stack (above the topmost '(') with its\n // alternation.\n alternate() {\n // Scan down to find pseudo-operator (.\n // There are no | above (.\n const subs = this.popToPseudo()\n // Make sure top class is clean.\n // All the others already are (see swapVerticalBar).\n if (subs.length > 0) {\n this.cleanAlt(subs[subs.length - 1])\n }\n // Empty alternate is special case\n // (shouldn't happen but easy to handle).\n if (subs.length === 0) {\n return this.push(this.newRegexp(Regexp.Op.NO_MATCH))\n }\n return this.push(this.collapse(subs, Regexp.Op.ALTERNATE))\n }\n\n // cleanAlt cleans re for eventual inclusion in an alternation.\n cleanAlt(re) {\n if (re.op === Regexp.Op.CHAR_CLASS) {\n re.runes = new CharClass(re.runes).cleanClass().toArray()\n if (re.runes.length === 2 && re.runes[0] === 0 && re.runes[1] === Unicode.MAX_RUNE) {\n re.runes = null\n re.op = Regexp.Op.ANY_CHAR\n } else if (\n re.runes.length === 4 &&\n re.runes[0] === 0 &&\n re.runes[1] === Codepoint.CODES.get('\\n') - 1 &&\n re.runes[2] === Codepoint.CODES.get('\\n') + 1 &&\n re.runes[3] === Unicode.MAX_RUNE\n ) {\n re.runes = null\n re.op = Regexp.Op.ANY_CHAR_NOT_NL\n }\n }\n }\n\n // collapse returns the result of applying op to subs[start:end].\n // If (sub contains op nodes, they all get hoisted up\n // so that there is never a concat of a concat or an\n // alternate of an alternate.\n collapse(subs, op) {\n if (subs.length === 1) {\n return subs[0]\n }\n // Concatenate subs iff op is same.\n // Compute length in first pass.\n let len = 0\n for (let sub of subs) {\n len += sub.op === op ? sub.subs.length : 1\n }\n let newsubs = new Array(len).fill(null)\n let i = 0\n for (let sub of subs) {\n if (sub.op === op) {\n newsubs.splice(i, sub.subs.length, ...sub.subs)\n i += sub.subs.length\n this.reuse(sub)\n } else {\n newsubs[i++] = sub\n }\n }\n\n let re = this.newRegexp(op)\n re.subs = newsubs\n if (op === Regexp.Op.ALTERNATE) {\n // re.subs = this.factor(re.subs, re.flags)\n re.subs = this.factor(re.subs)\n if (re.subs.length === 1) {\n const old = re\n re = re.subs[0]\n this.reuse(old)\n }\n }\n return re\n }\n\n // factor factors common prefixes from the alternation list sub. It\n // returns a replacement list that reuses the same storage and frees\n // (passes to p.reuse) any removed *Regexps.\n //\n // For example,\n // ABC|ABD|AEF|BCX|BCY\n // simplifies by literal prefix extraction to\n // A(B(C|D)|EF)|BC(X|Y)\n // which simplifies by character class introduction to\n // A(B[CD]|EF)|BC[XY]\n //\n factor(array) {\n if (array.length < 2) {\n return array\n }\n // The following code is subtle, because it's a literal JS\n // translation of code that makes clever use of Go \"slices\".\n // A slice is a triple (array, offset, length), and the Go\n // implementation uses two slices, |sub| and |out| backed by the\n // same array. In JS, we have to be explicit about all of these\n // variables, so:\n //\n // Go JS\n // sub (array, s, lensub)\n // out (array, 0, lenout) // (always a prefix of |array|)\n //\n // In the comments we'll use the logical notation of go slices, e.g. sub[i]\n // even though the JS code will read array[s + i].\n\n let s = 0 // offset of first |sub| within array.\n let lensub = array.length // = len(sub)\n let lenout = 0 // = len(out)\n // Round 1: Factor out common literal prefixes.\n // Note: (str, strlen) and (istr, istrlen) are like Go slices\n // onto a prefix of some Regexp's runes array (hence offset=0).\n let str = null\n let strlen = 0\n let strflags = 0\n let start = 0\n for (let i = 0; i <= lensub; i++) {\n // Invariant: the Regexps that were in sub[0:start] have been\n // used or marked for reuse, and the slice space has been reused\n // for out (len <= start).\n //\n // Invariant: sub[start:i] consists of regexps that all begin\n // with str as modified by strflags.\n let istr = null\n let istrlen = 0\n let iflags = 0\n if (i < lensub) {\n // NB, we inlined Go's leadingString() since Java has no pair return.\n let re = array[s + i]\n if (re.op === Regexp.Op.CONCAT && re.subs.length > 0) {\n re = re.subs[0]\n }\n if (re.op === Regexp.Op.LITERAL) {\n istr = re.runes\n istrlen = re.runes.length\n iflags = re.flags & RE2Flags.FOLD_CASE\n }\n // istr is the leading literal string that re begins with.\n // The string refers to storage in re or its children.\n if (iflags === strflags) {\n let same = 0\n while (same < strlen && same < istrlen && str[same] === istr[same]) {\n same++\n }\n\n if (same > 0) {\n // Matches at least one rune in current range.\n // Keep going around.\n strlen = same\n continue\n }\n }\n }\n // Found end of a run with common leading literal string:\n // sub[start:i] all begin with str[0:strlen], but sub[i]\n // does not even begin with str[0].\n //\n // Factor out common string and append factored expression to out.\n if (i === start) {\n // Nothing to do - run of length 0.\n } else if (i === start + 1) {\n // Just one: don't bother factoring.\n array[lenout++] = array[s + start]\n } else {\n // Construct factored form: prefix(suffix1|suffix2|...)\n const prefix = this.newRegexp(Regexp.Op.LITERAL)\n prefix.flags = strflags\n prefix.runes = str.slice(0, strlen)\n for (let j = start; j < i; j++) {\n array[s + j] = this.removeLeadingString(array[s + j], strlen)\n }\n // Recurse.\n const suffix = this.collapse(array.slice(s + start, s + i), Regexp.Op.ALTERNATE)\n const re = this.newRegexp(Regexp.Op.CONCAT)\n re.subs = [prefix, suffix]\n array[lenout++] = re\n }\n // Prepare for next iteration.\n start = i\n str = istr\n strlen = istrlen\n strflags = iflags\n }\n // In Go: sub = out\n lensub = lenout\n s = 0\n // Round 2: Factor out common complex prefixes,\n // just the first piece of each concatenation,\n // whatever it is. This is good enough a lot of the time.\n start = 0\n lenout = 0\n let first = null\n for (let i = 0; i <= lensub; i++) {\n // Invariant: the Regexps that were in sub[0:start] have been\n // used or marked for reuse, and the slice space has been reused\n // for out (lenout <= start).\n //\n // Invariant: sub[start:i] consists of regexps that all begin with\n // ifirst.\n let ifirst = null\n if (i < lensub) {\n ifirst = Parser.leadingRegexp(array[s + i])\n if (\n first !== null &&\n first.equals(ifirst) &&\n (Parser.isCharClass(first) ||\n (first.op === Regexp.Op.REPEAT &&\n first.min === first.max &&\n Parser.isCharClass(first.subs[0])))\n ) {\n continue\n }\n }\n // Found end of a run with common leading regexp:\n // sub[start:i] all begin with first but sub[i] does not.\n //\n // Factor out common regexp and append factored expression to out.\n if (i === start) {\n // Nothing to do - run of length 0.\n } else if (i === start + 1) {\n // Just one: don't bother factoring.\n array[lenout++] = array[s + start]\n } else {\n // Construct factored form: prefix(suffix1|suffix2|...)\n const prefix = first\n for (let j = start; j < i; j++) {\n const reuse = j !== start // prefix came from sub[start]\n array[s + j] = this.removeLeadingRegexp(array[s + j], reuse)\n }\n // recurse\n const suffix = this.collapse(array.slice(s + start, s + i), Regexp.Op.ALTERNATE)\n const re = this.newRegexp(Regexp.Op.CONCAT)\n re.subs = [prefix, suffix]\n array[lenout++] = re\n }\n // Prepare for next iteration.\n start = i\n first = ifirst\n }\n // In Go: sub = out\n lensub = lenout\n s = 0\n // Round 3: Collapse runs of single literals into character classes.\n start = 0\n lenout = 0\n for (let i = 0; i <= lensub; i++) {\n // Invariant: the Regexps that were in sub[0:start] have been\n // used or marked for reuse, and the slice space has been reused\n // for out (lenout <= start).\n //\n // Invariant: sub[start:i] consists of regexps that are either\n // literal runes or character classes.\n if (i < lensub && Parser.isCharClass(array[s + i])) {\n continue\n }\n // sub[i] is not a char or char class;\n // emit char class for sub[start:i]...\n if (i === start) {\n // Nothing to do - run of length 0.\n } else if (i === start + 1) {\n // Just one: don't bother factoring.\n array[lenout++] = array[s + start]\n } else {\n // Make new char class.\n // Start with most complex regexp in sub[start].\n let max = start\n for (let j = start + 1; j < i; j++) {\n const subMax = array[s + max]\n const subJ = array[s + j]\n if (\n subMax.op < subJ.op ||\n (subMax.op === subJ.op &&\n (subMax.runes !== null ? subMax.runes.length : 0) <\n (subJ.runes !== null ? subJ.runes.length : 0))\n ) {\n max = j\n }\n }\n // swap sub[start], sub[max].\n const tmp = array[s + start]\n array[s + start] = array[s + max]\n array[s + max] = tmp\n for (let j = start + 1; j < i; j++) {\n Parser.mergeCharClass(array[s + start], array[s + j])\n this.reuse(array[s + j])\n }\n this.cleanAlt(array[s + start])\n array[lenout++] = array[s + start]\n }\n // ... and then emit sub[i].\n if (i < lensub) {\n array[lenout++] = array[s + i]\n }\n start = i + 1\n }\n // In Go: sub = out\n lensub = lenout\n s = 0\n // Round 4: Collapse runs of empty matches into a single empty match.\n start = 0\n lenout = 0\n for (let i = 0; i < lensub; ++i) {\n if (\n i + 1 < lensub &&\n array[s + i].op === Regexp.Op.EMPTY_MATCH &&\n array[s + i + 1].op === Regexp.Op.EMPTY_MATCH\n ) {\n continue\n }\n array[lenout++] = array[s + i]\n }\n // In Go: sub = out\n lensub = lenout\n s = 0\n return array.slice(s, lensub)\n }\n\n // removeLeadingString removes the first n leading runes\n // from the beginning of re. It returns the replacement for re.\n removeLeadingString(re, n) {\n if (re.op === Regexp.Op.CONCAT && re.subs.length > 0) {\n // Removing a leading string in a concatenation\n // might simplify the concatenation.\n const sub = this.removeLeadingString(re.subs[0], n)\n re.subs[0] = sub\n if (sub.op === Regexp.Op.EMPTY_MATCH) {\n this.reuse(sub)\n switch (re.subs.length) {\n case 0:\n case 1:\n // Impossible but handle.\n re.op = Regexp.Op.EMPTY_MATCH\n re.subs = null\n break\n case 2: {\n const old = re\n re = re.subs[1]\n this.reuse(old)\n break\n }\n default:\n re.subs = re.subs.slice(1, re.subs.length)\n break\n }\n }\n return re\n }\n if (re.op === Regexp.Op.LITERAL) {\n re.runes = re.runes.slice(n, re.runes.length)\n if (re.runes.length === 0) {\n re.op = Regexp.Op.EMPTY_MATCH\n }\n }\n return re\n }\n\n // removeLeadingRegexp removes the leading regexp in re.\n // It returns the replacement for re.\n // If reuse is true, it passes the removed regexp (if no longer needed) to\n // reuse.\n removeLeadingRegexp(re, reuse) {\n if (re.op === Regexp.Op.CONCAT && re.subs.length > 0) {\n if (reuse) {\n this.reuse(re.subs[0])\n }\n re.subs = re.subs.slice(1, re.subs.length)\n switch (re.subs.length) {\n case 0: {\n re.op = Regexp.Op.EMPTY_MATCH\n re.subs = Regexp.emptySubs()\n break\n }\n case 1: {\n const old = re\n re = re.subs[0]\n this.reuse(old)\n break\n }\n }\n return re\n }\n if (reuse) {\n this.reuse(re)\n }\n return this.newRegexp(Regexp.Op.EMPTY_MATCH)\n }\n\n parseInternal() {\n if ((this.flags & RE2Flags.LITERAL) !== 0) {\n // Trivial parser for literal string.\n return Parser.literalRegexp(this.wholeRegexp, this.flags)\n }\n // Otherwise, must do real work.\n let lastRepeatPos = -1\n let min = -1\n let max = -1\n const t = new StringIterator(this.wholeRegexp)\n while (t.more()) {\n {\n let repeatPos = -1\n bigswitch: switch (t.peek()) {\n case Codepoint.CODES.get('('):\n if ((this.flags & RE2Flags.PERL_X) !== 0 && t.lookingAt('(?')) {\n // Flag changes and non-capturing groups.\n this.parsePerlFlags(t)\n break\n }\n this.op(Regexp.Op.LEFT_PAREN).cap = ++this.numCap\n t.skip(1) // '('\n break\n case Codepoint.CODES.get('|'):\n this.parseVerticalBar() // '|'\n t.skip(1) // '|'\n break\n case Codepoint.CODES.get(')'):\n this.parseRightParen()\n t.skip(1) // ')'\n break\n case Codepoint.CODES.get('^'):\n if ((this.flags & RE2Flags.ONE_LINE) !== 0) {\n this.op(Regexp.Op.BEGIN_TEXT)\n } else {\n this.op(Regexp.Op.BEGIN_LINE)\n }\n t.skip(1) // '^'\n break\n case Codepoint.CODES.get('$'):\n if ((this.flags & RE2Flags.ONE_LINE) !== 0) {\n this.op(Regexp.Op.END_TEXT).flags |= RE2Flags.WAS_DOLLAR\n } else {\n this.op(Regexp.Op.END_LINE)\n }\n t.skip(1) // '$'\n break\n case Codepoint.CODES.get('.'):\n if ((this.flags & RE2Flags.DOT_NL) !== 0) {\n this.op(Regexp.Op.ANY_CHAR)\n } else {\n this.op(Regexp.Op.ANY_CHAR_NOT_NL)\n }\n t.skip(1) // '.'\n break\n case Codepoint.CODES.get('['):\n this.parseClass(t)\n break\n case Codepoint.CODES.get('*'):\n case Codepoint.CODES.get('+'):\n case Codepoint.CODES.get('?'): {\n repeatPos = t.pos()\n let op = null\n switch (t.pop()) {\n case Codepoint.CODES.get('*'):\n op = Regexp.Op.STAR\n break\n case Codepoint.CODES.get('+'):\n op = Regexp.Op.PLUS\n break\n case Codepoint.CODES.get('?'):\n op = Regexp.Op.QUEST\n break\n }\n this.repeat(op, min, max, repeatPos, t, lastRepeatPos)\n // (min and max are now dead.)\n break\n }\n\n case Codepoint.CODES.get('{'): {\n repeatPos = t.pos()\n const minMax = Parser.parseRepeat(t)\n if (minMax < 0) {\n // If the repeat cannot be parsed, { is a literal.\n t.rewindTo(repeatPos)\n this.literal(t.pop()) // '{'\n break\n }\n min = minMax >> 16\n max = ((minMax & Unicode.MAX_BMP) << 16) >> 16\n this.repeat(Regexp.Op.REPEAT, min, max, repeatPos, t, lastRepeatPos)\n break\n }\n\n case Codepoint.CODES.get('\\\\'): {\n const savedPos = t.pos()\n t.skip(1) // '\\\\'\n if ((this.flags & RE2Flags.PERL_X) !== 0 && t.more()) {\n const c = t.pop()\n switch (c) {\n case Codepoint.CODES.get('A'):\n this.op(Regexp.Op.BEGIN_TEXT)\n break bigswitch\n case Codepoint.CODES.get('b'):\n this.op(Regexp.Op.WORD_BOUNDARY)\n break bigswitch\n case Codepoint.CODES.get('B'):\n this.op(Regexp.Op.NO_WORD_BOUNDARY)\n break bigswitch\n case Codepoint.CODES.get('C'):\n // any byte; not supported\n throw new RE2JSSyntaxException(Parser.ERR_INVALID_ESCAPE, '\\\\C')\n case Codepoint.CODES.get('Q'): {\n // \\Q ... \\E: the ... is always literals\n let lit = t.rest()\n const i = lit.indexOf('\\\\E')\n if (i >= 0) {\n lit = lit.substring(0, i)\n }\n t.skipString(lit)\n t.skipString('\\\\E')\n\n let j = 0\n while (j < lit.length) {\n const codepoint = lit.codePointAt(j)\n this.literal(codepoint)\n j += Utils.charCount(codepoint)\n }\n break bigswitch\n }\n\n case Codepoint.CODES.get('z'):\n this.op(Regexp.Op.END_TEXT)\n break bigswitch\n default:\n t.rewindTo(savedPos)\n break\n }\n }\n\n const re = this.newRegexp(Regexp.Op.CHAR_CLASS)\n re.flags = this.flags\n // Look for Unicode character group like \\p{Han}\n if (t.lookingAt('\\\\p') || t.lookingAt('\\\\P')) {\n const cc = new CharClass()\n if (this.parseUnicodeClass(t, cc)) {\n re.runes = cc.toArray()\n this.push(re)\n break bigswitch\n }\n }\n // Perl character class escape.\n const cc = new CharClass()\n if (this.parsePerlClassEscape(t, cc)) {\n re.runes = cc.toArray()\n this.push(re)\n break bigswitch\n }\n t.rewindTo(savedPos)\n this.reuse(re)\n // Ordinary single-character escape.\n this.literal(Parser.parseEscape(t))\n break\n }\n default:\n this.literal(t.pop())\n break\n }\n lastRepeatPos = repeatPos\n }\n }\n\n this.concat()\n if (this.swapVerticalBar()) {\n this.pop() // pop vertical bar\n }\n this.alternate()\n const n = this.stack.length\n if (n !== 1) {\n throw new RE2JSSyntaxException(Parser.ERR_MISSING_PAREN, this.wholeRegexp)\n }\n this.stack[0].namedGroups = this.namedGroups\n return this.stack[0]\n }\n\n // parsePerlFlags parses a Perl flag setting or non-capturing group or both,\n // like (?i) or (?: or (?i:.\n // Pre: t at \"(?\". Post: t after \")\".\n // Sets numCap.\n parsePerlFlags(t) {\n const startPos = t.pos()\n // Check for named captures, first introduced in Python's regexp library.\n // As usual, there are three slightly different syntaxes:\n //\n // (?P<name>expr) the original, introduced by Python\n // (?<name>expr) the .NET alteration, adopted by Perl 5.10\n // (?'name'expr) another .NET alteration, adopted by Perl 5.10\n //\n // Perl 5.10 gave in and implemented the Python version too,\n // but they claim that the last two are the preferred forms.\n // PCRE and languages based on it (specifically, PHP and Ruby)\n // support all three as well. EcmaScript 4 uses only the Python form.\n //\n // In both the open source world (via Code Search) and the\n // Google source tree, (?P<expr>name) is the dominant form,\n // so that's the one we implement. One is enough.\n const s = t.rest()\n if (s.startsWith('(?P<')) {\n // Pull out name.\n const end = s.indexOf('>')\n if (end < 0) {\n throw new RE2JSSyntaxException(Parser.ERR_INVALID_NAMED_CAPTURE, s)\n }\n const name = s.substring(4, end) // \"name\"\n t.skipString(name)\n t.skip(5) // \"(?P<>\"\n if (!Parser.isValidCaptureName(name)) {\n // \"(?P<name>\"\n throw new RE2JSSyntaxException(Parser.ERR_INVALID_NAMED_CAPTURE, s.substring(0, end))\n }\n // Like ordinary capture, but named.\n const re = this.op(Regexp.Op.LEFT_PAREN)\n re.cap = ++this.numCap\n if (this.namedGroups[name]) {\n throw new RE2JSSyntaxException(Parser.ERR_DUPLICATE_NAMED_CAPTURE, name)\n }\n this.namedGroups[name] = this.numCap\n re.name = name\n return\n }\n // Non-capturing group. Might also twiddle Perl flags.\n t.skip(2) // \"(?\"\n\n let flags = this.flags\n let sign = +1\n let sawFlag = false\n loop: while (t.more()) {\n {\n const c = t.pop()\n switch (c) {\n case Codepoint.CODES.get('i'):\n flags |= RE2Flags.FOLD_CASE\n sawFlag = true\n break\n case Codepoint.CODES.get('m'):\n flags &= ~RE2Flags.ONE_LINE\n sawFlag = true\n break\n case Codepoint.CODES.get('s'):\n flags |= RE2Flags.DOT_NL\n sawFlag = true\n break\n case Codepoint.CODES.get('U'):\n flags |= RE2Flags.NON_GREEDY\n sawFlag = true\n break\n // Switch to negation.\n case Codepoint.CODES.get('-'):\n if (sign < 0) {\n break loop\n }\n sign = -1\n // Invert flags so that | above turn into &~ and vice versa.\n // We'll invert flags again before using it below.\n flags = ~flags\n sawFlag = false\n break\n // End of flags, starting group or not.\n case Codepoint.CODES.get(':'):\n case Codepoint.CODES.get(')'):\n if (sign < 0) {\n if (!sawFlag) {\n break loop\n }\n flags = ~flags\n }\n if (c === Codepoint.CODES.get(':')) {\n // Open new group\n this.op(Regexp.Op.LEFT_PAREN)\n }\n this.flags = flags\n return\n default:\n // Flags.\n break loop\n }\n }\n }\n\n throw new RE2JSSyntaxException(Parser.ERR_INVALID_PERL_OP, t.from(startPos))\n }\n\n // parseVerticalBar handles a | in the input.\n parseVerticalBar() {\n this.concat()\n // The concatenation we just parsed is on top of the stack.\n // If it sits above an opVerticalBar, swap it below\n // (things below an opVerticalBar become an alternation).\n // Otherwise, push a new vertical bar.\n if (!this.swapVerticalBar()) {\n this.op(Regexp.Op.VERTICAL_BAR)\n }\n }\n\n // If the top of the stack is an element followed by an opVerticalBar\n // swapVerticalBar swaps the two and returns true.\n // Otherwise it returns false.\n swapVerticalBar() {\n const n = this.stack.length\n // If above and below vertical bar are literal or char class,\n // can merge into a single char class.\n if (\n n >= 3 &&\n this.stack[n - 2].op === Regexp.Op.VERTICAL_BAR &&\n Parser.isCharClass(this.stack[n - 1]) &&\n Parser.isCharClass(this.stack[n - 3])\n ) {\n let re1 = this.stack[n - 1]\n let re3 = this.stack[n - 3]\n // Make re3 the more complex of the two.\n if (re1.op > re3.op) {\n const tmp = re3\n re3 = re1\n re1 = tmp\n this.stack[n - 3] = re3\n }\n Parser.mergeCharClass(re3, re1)\n this.reuse(re1)\n this.pop()\n return true\n }\n if (n >= 2) {\n const re1 = this.stack[n - 1]\n const re2 = this.stack[n - 2]\n if (re2.op === Regexp.Op.VERTICAL_BAR) {\n if (n >= 3) {\n // Now out of reach.\n // Clean opportunistically.\n this.cleanAlt(this.stack[n - 3])\n }\n this.stack[n - 2] = re1\n this.stack[n - 1] = re2\n return true\n }\n }\n return false\n }\n\n // parseRightParen handles a ')' in the input.\n parseRightParen() {\n this.concat()\n if (this.swapVerticalBar()) {\n this.pop() // pop vertical bar\n }\n this.alternate()\n const n = this.stack.length\n if (n < 2) {\n throw new RE2JSSyntaxException(Parser.ERR_INTERNAL_ERROR, 'stack underflow')\n }\n\n const re1 = this.pop()\n const re2 = this.pop()\n if (re2.op !== Regexp.Op.LEFT_PAREN) {\n throw new RE2JSSyntaxException(Parser.ERR_MISSING_PAREN, this.wholeRegexp)\n }\n // Restore flags at time of paren.\n this.flags = re2.flags\n if (re2.cap === 0) {\n // Just for grouping.\n this.push(re1)\n } else {\n re2.op = Regexp.Op.CAPTURE\n re2.subs = [re1]\n this.push(re2)\n }\n }\n\n // parsePerlClassEscape parses a leading Perl character class escape like \\d\n // from the beginning of |t|. If one is present, it appends the characters\n // to cc and returns true. The iterator is advanced past the escape\n // on success, undefined on failure, in which case false is returned.\n parsePerlClassEscape(t, cc) {\n const beforePos = t.pos()\n if (\n (this.flags & RE2Flags.PERL_X) === 0 ||\n !t.more() ||\n t.pop() !== Codepoint.CODES.get('\\\\') ||\n !t.more()\n ) {\n return false\n }\n t.pop() // e.g. advance past 'd' in \"\\\\d\"\n const p = t.from(beforePos)\n const g = PERL_GROUPS.has(p) ? PERL_GROUPS.get(p) : null\n if (g === null) {\n return false\n }\n cc.appendGroup(g, (this.flags & RE2Flags.FOLD_CASE) !== 0)\n return true\n }\n\n // parseNamedClass parses a leading POSIX named character class like\n // [:alnum:] from the beginning of t. If one is present, it appends the\n // characters to cc, advances the iterator, and returns true.\n // Pre: t at \"[:\". Post: t after \":]\".\n // On failure (no class of than name), throws RE2JSSyntaxException.\n // On misparse, returns false; t.pos() is undefined.\n parseNamedClass(t, cc) {\n // (Go precondition check deleted.)\n const cls = t.rest()\n const i = cls.indexOf(':]')\n if (i < 0) {\n return false\n }\n\n const name = cls.substring(0, i + 2) // \"[:alnum:]\"\n t.skipString(name)\n const g = POSIX_GROUPS.has(name) ? POSIX_GROUPS.get(name) : null\n if (g === null) {\n throw new RE2JSSyntaxException(Parser.ERR_INVALID_CHAR_RANGE, name)\n }\n cc.appendGroup(g, (this.flags & RE2Flags.FOLD_CASE) !== 0)\n return true\n }\n\n // parseUnicodeClass() parses a leading Unicode character class like \\p{Han}\n // from the beginning of t. If one is present, it appends the characters to\n // to |cc|, advances |t| and returns true.\n //\n // Returns false if such a pattern is not present or UNICODE_GROUPS\n // flag is not enabled; |t.pos()| is not advanced in this case.\n // Indicates error by throwing RE2JSSyntaxException.\n parseUnicodeClass(t, cc) {\n const startPos = t.pos()\n if (\n (this.flags & RE2Flags.UNICODE_GROUPS) === 0 ||\n (!t.lookingAt('\\\\p') && !t.lookingAt('\\\\P'))\n ) {\n return false\n }\n\n t.skip(1) // '\\\\'\n // Committed to parse or throw exception.\n let sign = +1\n let c = t.pop() // 'p' or 'P'\n if (c === Codepoint.CODES.get('P')) {\n sign = -1\n }\n if (!t.more()) {\n t.rewindTo(startPos)\n throw new RE2JSSyntaxException(Parser.ERR_INVALID_CHAR_RANGE, t.rest())\n }\n\n c = t.pop()\n let name\n\n if (c !== Codepoint.CODES.get('{')) {\n // Single-letter name.\n name = Utils.runeToString(c)\n } else {\n // Name is in braces.\n const rest = t.rest()\n const end = rest.indexOf('}')\n if (end < 0) {\n t.rewindTo(startPos)\n throw new RE2JSSyntaxException(Parser.ERR_INVALID_CHAR_RANGE, t.rest())\n }\n name = rest.substring(0, end) // e.g. \"Han\"\n t.skipString(name)\n t.skip(1)\n // Don't use skip(end) because it assumes UTF-16 coding, and\n // StringIterator doesn't guarantee that.\n }\n // Group can have leading negation too.\n // \\p{^Han} == \\P{Han}, \\P{^Han} == \\p{Han}.\n if (!(name.length === 0) && name.codePointAt(0) === Codepoint.CODES.get('^')) {\n sign = 0 - sign // -sign\n name = name.substring(1)\n }\n\n const pair = Parser.unicodeTable(name)\n if (pair === null) {\n throw new RE2JSSyntaxException(Parser.ERR_INVALID_CHAR_RANGE, t.from(startPos))\n }\n\n const tab = pair.first\n const fold = pair.second // fold-equivalent table\n // Variation of CharClass.appendGroup() for tables.\n if ((this.flags & RE2Flags.FOLD_CASE) === 0 || fold === null) {\n cc.appendTableWithSign(tab, sign)\n } else {\n // Merge and clean tab and fold in a temporary buffer.\n // This is necessary for the negative case and just tidy\n // for the positive case.\n const tmp = new CharClass().appendTable(tab).appendTable(fold).cleanClass().toArray()\n cc.appendClassWithSign(tmp, sign)\n }\n return true\n }\n\n // parseClass parses a character class and pushes it onto the parse stack.\n //\n // NOTES:\n // Pre: at '['; Post: after ']'.\n // Mutates stack. Advances iterator. May throw.\n parseClass(t) {\n const startPos = t.pos()\n t.skip(1) // '['\n const re = this.newRegexp(Regexp.Op.CHAR_CLASS)\n re.flags = this.flags\n const cc = new CharClass()\n let sign = +1\n\n if (t.more() && t.lookingAt('^')) {\n sign = -1\n t.skip(1) // '^'\n // If character class does not match \\n, add it here,\n // so that negation later will do the right thing.\n if ((this.flags & RE2Flags.CLASS_NL) === 0) {\n cc.appendRange(Codepoint.CODES.get('\\n'), Codepoint.CODES.get('\\n'))\n }\n }\n\n let first = true // ']' and '-' are okay as first char in class\n while (!t.more() || t.peek() !== Codepoint.CODES.get(']') || first) {\n // POSIX: - is only okay unescaped as first or last in class.\n // Perl: - is okay anywhere.\n if (t.more() && t.lookingAt('-') && (this.flags & RE2Flags.PERL_X) === 0 && !first) {\n const s = t.rest()\n if (s === '-' || !s.startsWith('-]')) {\n t.rewindTo(startPos)\n throw new RE2JSSyntaxException(Parser.ERR_INVALID_CHAR_RANGE, t.rest())\n }\n }\n\n first = false\n const beforePos = t.pos()\n // Look for POSIX [:alnum:] etc.\n if (t.lookingAt('[:')) {\n if (this.parseNamedClass(t, cc)) {\n continue\n }\n t.rewindTo(beforePos)\n }\n\n // Look for Unicode character group like \\p{Han}.\n if (this.parseUnicodeClass(t, cc)) {\n continue\n }\n\n // Look for Perl character class symbols (extension).\n if (this.parsePerlClassEscape(t, cc)) {\n continue\n }\n t.rewindTo(beforePos)\n\n // Single character or simple range.\n const lo = Parser.parseClassChar(t, startPos)\n let hi = lo\n if (t.more() && t.lookingAt('-')) {\n t.skip(1)\n if (t.more() && t.lookingAt(']')) {\n // [a-] means (a|-) so check for final ].\n t.skip(-1)\n } else {\n hi = Parser.parseClassChar(t, startPos)\n if (hi < lo) {\n throw new RE2JSSyntaxException(Parser.ERR_INVALID_CHAR_RANGE, t.from(beforePos))\n }\n }\n }\n if ((this.flags & RE2Flags.FOLD_CASE) === 0) {\n cc.appendRange(lo, hi)\n } else {\n cc.appendFoldedRange(lo, hi)\n }\n }\n t.skip(1) // ']'\n\n cc.cleanClass()\n if (sign < 0) {\n cc.negateClass()\n }\n re.runes = cc.toArray()\n this.push(re)\n }\n}\n\nexport { Parser }\n","import { Codepoint } from './Codepoint'\nimport { RE2Flags } from './RE2Flags'\nimport { MachineInputBase } from './MachineInput'\nimport { Utils } from './Utils'\nimport { Inst } from './Inst'\n\n// A logical thread in the NFA.\nclass Thread {\n constructor() {\n this.inst = null\n this.cap = []\n }\n}\n\n// A queue is a 'sparse array' holding pending threads of execution. See:\n// research.swtch.com/2008/03/using-uninitialized-memory-for-fun-and.html\nclass Queue {\n constructor() {\n this.sparse = [] // may contain stale but in-bounds values.\n this.densePcs = [] // may contain stale pc in slots >= size\n this.denseThreads = [] // may contain stale Thread in slots >= size\n this.size = 0\n }\n\n contains(pc) {\n const j = this.sparse[pc]\n return j < this.size && this.densePcs[j] === pc\n }\n\n isEmpty() {\n return this.size === 0\n }\n\n add(pc) {\n const j = this.size++\n this.sparse[pc] = j\n this.denseThreads[j] = null\n this.densePcs[j] = pc\n return j\n }\n\n clear() {\n this.sparse = []\n this.densePcs = []\n this.denseThreads = []\n this.size = 0\n }\n\n toString() {\n let out = '{'\n for (let i = 0; i < this.size; i++) {\n if (i !== 0) {\n out += ', '\n }\n out += this.densePcs[i]\n }\n out += '}'\n return out\n }\n}\n// A Machine matches an input string of Unicode characters against an\n// RE2 instance using a simple NFA.\n//\n// Called by RE2.doExecute.\nclass Machine {\n static fromRE2(re2) {\n const m = new Machine()\n m.prog = re2.prog\n m.re2 = re2\n m.q0 = new Queue(m.prog.numInst())\n m.q1 = new Queue(m.prog.numInst())\n m.pool = []\n m.poolSize = 0\n m.matched = false\n m.matchcap = Array(m.prog.numCap < 2 ? 2 : m.prog.numCap).fill(0)\n m.ncap = 0\n return m\n }\n\n static fromMachine(machine) {\n const m = new Machine()\n m.re2 = machine.re2\n m.prog = machine.prog\n m.q0 = machine.q0\n m.q1 = machine.q1\n m.pool = machine.pool\n m.poolSize = machine.poolSize\n m.matched = machine.matched\n m.matchcap = machine.matchcap\n m.ncap = machine.ncap\n return m\n }\n\n // init() reinitializes an existing Machine for re-use on a new input.\n init(ncap) {\n this.ncap = ncap\n if (ncap > this.matchcap.length) {\n this.initNewCap(ncap)\n } else {\n this.resetCap(ncap)\n }\n }\n\n resetCap(ncap) {\n for (let i = 0; i < this.poolSize; i++) {\n const t = this.pool[i]\n t.cap = Array(ncap).fill(0)\n }\n }\n\n initNewCap(ncap) {\n for (let i = 0; i < this.poolSize; i++) {\n const t = this.pool[i]\n t.cap = Array(ncap).fill(0)\n }\n this.matchcap = Array(ncap).fill(0)\n }\n\n submatches() {\n if (this.ncap === 0) {\n return Utils.emptyInts()\n }\n return this.matchcap.slice(0, this.ncap)\n }\n\n // alloc() allocates a new thread with the given instruction.\n // It uses the free pool if possible.\n alloc(inst) {\n let t\n if (this.poolSize > 0) {\n this.poolSize--\n t = this.pool[this.poolSize]\n } else {\n t = new Thread()\n }\n t.inst = inst\n return t\n }\n\n // Frees all threads on the thread queue, returning them to the free pool.\n freeQueue(queue, from = 0) {\n const numberOfThread = queue.size - from\n const requiredPoolLength = this.poolSize + numberOfThread\n if (this.pool.length < requiredPoolLength) {\n this.pool = this.pool.slice(0, Math.max(this.pool.length * 2, requiredPoolLength))\n }\n for (let i = from; i < queue.size; i++) {\n const t = queue.denseThreads[i]\n if (t !== null) {\n this.pool[this.poolSize] = t\n this.poolSize++\n }\n }\n queue.clear()\n }\n\n // freeThread() returns t to the free pool.\n freeThread(t) {\n if (this.pool.length <= this.poolSize) {\n this.pool = this.pool.slice(0, this.pool.length * 2)\n }\n this.pool[this.poolSize] = t\n this.poolSize++\n }\n\n match(input, pos, anchor) {\n const startCond = this.re2.cond\n if (startCond === Utils.EMPTY_ALL) {\n return false\n }\n if ((anchor === RE2Flags.ANCHOR_START || anchor === RE2Flags.ANCHOR_BOTH) && pos !== 0) {\n return false\n }\n this.matched = false\n this.matchcap = Array(this.prog.numCap).fill(-1)\n\n let runq = this.q0\n let nextq = this.q1\n let r = input.step(pos)\n let rune = r >> 3\n let width = r & 7\n let rune1 = -1\n let width1 = 0\n\n if (r !== MachineInputBase.EOF()) {\n r = input.step(pos + width)\n rune1 = r >> 3\n width1 = r & 7\n }\n\n let flag\n if (pos === 0) {\n flag = Utils.emptyOpContext(-1, rune)\n } else {\n flag = input.context(pos)\n }\n // eslint-disable-next-line no-constant-condition\n while (true) {\n if (runq.isEmpty()) {\n if ((startCond & Utils.EMPTY_BEGIN_TEXT) !== 0 && pos !== 0) {\n break\n }\n if (this.matched) {\n break\n }\n if (\n !(this.re2.prefix.length === 0) &&\n rune1 !== this.re2.prefixRune &&\n input.canCheckPrefix()\n ) {\n const advance = input.index(this.re2, pos)\n if (advance < 0) {\n break\n }\n pos += advance\n r = input.step(pos)\n rune = r >> 3\n width = r & 7\n r = input.step(pos + width)\n rune1 = r >> 3\n width1 = r & 7\n }\n }\n if (!this.matched && (pos === 0 || anchor === RE2Flags.UNANCHORED)) {\n if (this.ncap > 0) {\n this.matchcap[0] = pos\n }\n this.add(runq, this.prog.start, pos, this.matchcap, flag, null)\n }\n\n const nextPos = pos + width\n flag = input.context(nextPos)\n this.step(runq, nextq, pos, nextPos, rune, flag, anchor, pos === input.endPos())\n\n if (width === 0) {\n break\n }\n if (this.ncap === 0 && this.matched) {\n break\n }\n\n pos += width\n rune = rune1\n width = width1\n if (rune !== -1) {\n r = input.step(pos + width)\n rune1 = r >> 3\n width1 = r & 7\n }\n const tmpq = runq\n runq = nextq\n nextq = tmpq\n }\n this.freeQueue(nextq)\n return this.matched\n }\n\n step(runq, nextq, pos, nextPos, c, nextCond, anchor, atEnd) {\n const longest = this.re2.longest\n for (let j = 0; j < runq.size; j++) {\n let t = runq.denseThreads[j]\n if (t === null) {\n continue\n }\n if (longest && this.matched && this.ncap > 0 && this.matchcap[0] < t.cap[0]) {\n this.freeThread(t)\n continue\n }\n\n const i = t.inst\n let add = false\n switch (i.op) {\n case Inst.MATCH:\n if (anchor === RE2Flags.ANCHOR_BOTH && !atEnd) {\n break\n }\n if (this.ncap > 0 && (!longest || !this.matched || this.matchcap[1] < pos)) {\n t.cap[1] = pos\n this.matchcap = t.cap.slice(0, this.ncap)\n }\n if (!longest) {\n this.freeQueue(runq, j + 1)\n }\n this.matched = true\n break\n case Inst.RUNE:\n add = i.matchRune(c)\n break\n case Inst.RUNE1:\n add = c === i.runes[0]\n break\n case Inst.RUNE_ANY:\n add = true\n break\n case Inst.RUNE_ANY_NOT_NL:\n add = c !== Codepoint.CODES.get('\\n')\n break\n default:\n throw new Error('bad inst')\n }\n if (add) {\n t = this.add(nextq, i.out, nextPos, t.cap, nextCond, t)\n }\n if (t !== null) {\n this.freeThread(t)\n runq.denseThreads[j] = null\n }\n }\n runq.clear()\n }\n\n add(q, pc, pos, cap, cond, t) {\n if (pc === 0) {\n return t\n }\n if (q.contains(pc)) {\n return t\n }\n\n const d = q.add(pc)\n const inst = this.prog.inst[pc]\n switch (inst.op) {\n case Inst.FAIL:\n break\n case Inst.ALT:\n case Inst.ALT_MATCH:\n t = this.add(q, inst.out, pos, cap, cond, t)\n t = this.add(q, inst.arg, pos, cap, cond, t)\n break\n case Inst.EMPTY_WIDTH:\n if ((inst.arg & ~cond) === 0) {\n t = this.add(q, inst.out, pos, cap, cond, t)\n }\n break\n case Inst.NOP:\n t = this.add(q, inst.out, pos, cap, cond, t)\n break\n case Inst.CAPTURE:\n if (inst.arg < this.ncap) {\n const opos = cap[inst.arg]\n cap[inst.arg] = pos\n this.add(q, inst.out, pos, cap, cond, null)\n cap[inst.arg] = opos\n } else {\n t = this.add(q, inst.out, pos, cap, cond, t)\n }\n break\n case Inst.MATCH:\n case Inst.RUNE:\n case Inst.RUNE1:\n case Inst.RUNE_ANY:\n case Inst.RUNE_ANY_NOT_NL:\n if (t === null) {\n t = this.alloc(inst)\n } else {\n t.inst = inst\n }\n if (this.ncap > 0 && t.cap !== cap) {\n t.cap = cap.slice(0, this.ncap)\n }\n q.denseThreads[d] = t\n t = null\n break\n default:\n throw new Error('unhandled')\n }\n return t\n }\n}\n\nexport { Machine }\n","import { RE2Flags } from './RE2Flags'\nimport { Utils } from './Utils'\nimport { MatcherInput, MatcherInputBase } from './MatcherInput'\nimport { MachineInput } from './MachineInput'\nimport { Compiler } from './Compiler'\nimport { Simplify } from './Simplify'\nimport { Parser } from './Parser'\nimport { Machine } from './Machine'\n\nclass AtomicReference {\n constructor(initialValue) {\n this.value = initialValue\n }\n\n // Returns the current value\n get() {\n return this.value\n }\n\n // Sets to the given value\n set(newValue) {\n this.value = newValue\n }\n\n // Atomically sets to the given value and returns true if the current value == the expected value\n compareAndSet(expect, update) {\n if (this.value === expect) {\n this.value = update\n return true\n }\n return false\n }\n}\n\n/**\n * An RE2 class instance is a compiled representation of an RE2 regular expression, independent of\n * the public Java-like Pattern/Matcher API.\n *\n * <p>\n * This class also contains various implementation helpers for RE2 regular expressions.\n *\n * <p>\n * Use the {@link #quoteMeta(String)} utility function to quote all regular expression\n * metacharacters in an arbitrary string.\n *\n */\nclass RE2 {\n // This is visible for testing.\n static initTest(expr) {\n const re2 = RE2.compile(expr)\n const res = new RE2(re2.expr, re2.prog, re2.numSubexp, re2.longest)\n res.cond = re2.cond\n res.prefix = re2.prefix\n res.prefixUTF8 = re2.prefixUTF8\n res.prefixComplete = re2.prefixComplete\n res.prefixRune = re2.prefixRune\n return res\n }\n\n /**\n * Parses a regular expression and returns, if successful, an {@code RE2} instance that can be\n * used to match against text.\n *\n * <p>\n * When matching against text, the regexp returns a match that begins as early as possible in the\n * input (leftmost), and among those it chooses the one that a backtracking search would have\n * found first. This so-called leftmost-first matching is the same semantics that Perl, Python,\n * and other implementations use, although this package implements it without the expense of\n * backtracking. For POSIX leftmost-longest matching, see {@link #compilePOSIX}.\n */\n static compile(expr) {\n return RE2.compileImpl(expr, RE2Flags.PERL, false)\n }\n\n /**\n * {@code compilePOSIX} is like {@link #compile} but restricts the regular expression to POSIX ERE\n * (egrep) syntax and changes the match semantics to leftmost-longest.\n *\n * <p>\n * That is, when matching against text, the regexp returns a match that begins as early as\n * possible in the input (leftmost), and among those it chooses a match that is as long as\n * possible. This so-called leftmost-longest matching is the same semantics that early regular\n * expression implementations used and that POSIX specifies.\n *\n * <p>\n * However, there can be multiple leftmost-longest matches, with different submatch choices, and\n * here this package diverges from POSIX. Among the possible leftmost-longest matches, this\n * package chooses the one that a backtracking search would have found first, while POSIX\n * specifies that the match be chosen to maximize the length of the first subexpression, then the\n * second, and so on from left to right. The POSIX rule is computationally prohibitive and not\n * even well-defined. See http://swtch.com/~rsc/regexp/regexp2.html#posix\n */\n static compilePOSIX(expr) {\n return RE2.compileImpl(expr, RE2Flags.POSIX, true)\n }\n\n // Exposed to ExecTests.\n static compileImpl(expr, mode, longest) {\n let re = Parser.parse(expr, mode)\n const maxCap = re.maxCap()\n re = Simplify.simplify(re)\n\n const prog = Compiler.compileRegexp(re)\n const re2 = new RE2(expr, prog, maxCap, longest)\n\n const [prefixCompl, prefixStr] = prog.prefix()\n re2.prefixComplete = prefixCompl\n re2.prefix = prefixStr\n re2.prefixUTF8 = Utils.stringToUtf8ByteArray(re2.prefix)\n\n if (re2.prefix.length > 0) {\n re2.prefixRune = re2.prefix.codePointAt(0)\n }\n re2.namedGroups = re.namedGroups\n return re2\n }\n\n /**\n * Returns true iff textual regular expression {@code pattern} matches string {@code s}.\n *\n * <p>\n * More complicated queries need to use {@link #compile} and the full {@code RE2} interface.\n */\n // This is visible for testing.\n static match(pattern, s) {\n return RE2.compile(pattern).match(s)\n }\n\n constructor(expr, prog, numSubexp = 0, longest = 0) {\n this.expr = expr // as passed to Compile\n this.prog = prog // compiled program\n this.numSubexp = numSubexp\n this.longest = longest\n this.cond = prog.startCond() // EMPTY_* bitmask: empty-width conditions\n this.prefix = null // required UTF-16 prefix in unanchored matches\n this.prefixUTF8 = null // required UTF-8 prefix in unanchored matches\n this.prefixComplete = false // true if prefix is the entire regexp\n this.prefixRune = 0 // first rune in prefix\n this.pooled = new AtomicReference() // Cache of machines for running regexp. Forms a Treiber stack.\n }\n\n /**\n * Returns the number of parenthesized subexpressions in this regular expression.\n */\n numberOfCapturingGroups() {\n return this.numSubexp\n }\n\n // get() returns a machine to use for matching |this|. It uses |this|'s\n // machine cache if possible, to avoid unnecessary allocation.\n get() {\n // Pop a machine off the stack if available.\n let head\n\n do {\n head = this.pooled.get()\n } while (head && !this.pooled.compareAndSet(head, head.next))\n\n return head\n }\n\n // Clears the memory associated with this machine.\n reset() {\n this.pooled.set(null)\n }\n\n // put() returns a machine to |this|'s machine cache. There is no attempt to\n // limit the size of the cache, so it will grow to the maximum number of\n // simultaneous matches run using |this|. (The cache empties when |this|\n // gets garbage collected or reset is called.)\n put(m, isNew) {\n // To avoid allocation in the single-thread or uncontended case, reuse a node only if\n // it was the only element in the stack when it was popped, and it's the only element\n // in the stack when it's pushed back after use.\n let head = this.pooled.get()\n do {\n head = this.pooled.get()\n if (!isNew && head) {\n // If an element had a null next pointer and it was previously in the stack, another thread\n // might be trying to pop it out right now, and if it sees the same node now in the\n // stack the pop will succeed, but the new top of the stack will be the stale (null) value\n // of next. Allocate a new Machine so that the CAS will not succeed if this node has been\n // popped and re-pushed.\n m = Machine.fromMachine(m)\n isNew = true\n }\n\n // Without this comparison, TSAN will complain about a race condition:\n // Thread A, B, and C all attempt to do a match on the same pattern.\n //\n // A: Allocates Machine 1; executes match; put machine 1. State is now:\n //\n // pooled -> machine 1 -> null\n //\n // B reads pooled, sees machine 1\n //\n // C reads pooled, sees machine 1\n //\n // B successfully CASes pooled to null\n //\n // B executes match; put machine 1, which involves setting machine1.next to\n // null (even though it's already null); preempted before CAS\n //\n // C resumes, and reads machine1.next in order to execute cas(head, head.next)\n //\n // There is no happens-before relationship between B's redundant null write\n // and C's read, thus triggering TSAN.\n //\n // Not needed for JS code\n if (m.next !== head) {\n m.next = head\n }\n } while (!this.pooled.compareAndSet(head, m))\n }\n\n toString() {\n return this.expr\n }\n\n // doExecute() finds the leftmost match in the input and returns\n // the position of its subexpressions.\n // Derived from exec.go.\n doExecute(input, pos, anchor, ncap) {\n let m = this.get()\n // The Treiber stack cannot reuse nodes, unless the node to be reused has only ever been at\n // the bottom of the stack (i.e., next == null).\n let isNew = false\n if (!m) {\n m = Machine.fromRE2(this)\n isNew = true\n } else if (m.next !== null) {\n m = Machine.fromMachine(m)\n isNew = true\n }\n\n m.init(ncap)\n const cap = m.match(input, pos, anchor) ? m.submatches() : null\n this.put(m, isNew)\n return cap\n }\n\n match(s) {\n return this.doExecute(MachineInput.fromUTF16(s), 0, RE2Flags.UNANCHORED, 0) !== null\n }\n\n /**\n * Matches the regular expression against input starting at position start and ending at position\n * end, with the given anchoring. Records the submatch boundaries in group, which is [start, end)\n * pairs of byte offsets. The number of boundaries needed is inferred from the size of the group\n * array. It is most efficient not to ask for submatch boundaries.\n *\n * @param input the input byte array\n * @param start the beginning position in the input\n * @param end the end position in the input\n * @param anchor the anchoring flag (UNANCHORED, ANCHOR_START, ANCHOR_BOTH)\n * @param group the array to fill with submatch positions\n * @param ngroup the number of array pairs to fill in\n * @returns true if a match was found\n */\n matchWithGroup(input, start, end, anchor, ngroup) {\n if (!(input instanceof MatcherInputBase)) {\n input = MatcherInput.utf16(input)\n }\n\n return this.matchMachineInput(input, start, end, anchor, ngroup)\n }\n\n matchMachineInput(input, start, end, anchor, ngroup) {\n if (start > end) {\n return [false, null]\n }\n const machineInput = input.isUTF16Encoding()\n ? MachineInput.fromUTF16(input.asCharSequence(), 0, end)\n : MachineInput.fromUTF8(input.asBytes(), 0, end)\n\n const groupMatch = this.doExecute(machineInput, start, anchor, 2 * ngroup)\n\n if (groupMatch === null) {\n return [false, null]\n }\n return [true, groupMatch]\n }\n\n /**\n * Returns true iff this regexp matches the UTF-8 byte array {@code b}.\n */\n // This is visible for testing.\n matchUTF8(b) {\n return this.doExecute(MachineInput.fromUTF8(b), 0, RE2Flags.UNANCHORED, 0) !== null\n }\n\n /**\n * Returns a copy of {@code src} in which all matches for this regexp have been replaced by\n * {@code repl}. No support is provided for expressions (e.g. {@code \\1} or {@code $1}) in the\n * replacement string.\n */\n // This is visible for testing.\n replaceAll(src, repl) {\n return this.replaceAllFunc(src, () => repl, 2 * src.length + 1)\n }\n\n /**\n * Returns a copy of {@code src} in which only the first match for this regexp has been replaced\n * by {@code repl}. No support is provided for expressions (e.g. {@code \\1} or {@code $1}) in the\n * replacement string.\n */\n // This is visible for testing.\n replaceFirst(src, repl) {\n return this.replaceAllFunc(src, () => repl, 1)\n }\n\n /**\n * Returns a copy of {@code src} in which at most {@code maxReplaces} matches for this regexp have\n * been replaced by the return value of of function {@code repl} (whose first argument is the\n * matched string). No support is provided for expressions (e.g. {@code \\1} or {@code $1}) in the\n * replacement string.\n */\n // This is visible for testing.\n replaceAllFunc(src, replFunc, maxReplaces) {\n let lastMatchEnd = 0\n let searchPos = 0\n let out = ''\n\n const input = MachineInput.fromUTF16(src)\n let numReplaces = 0\n while (searchPos <= src.length) {\n const a = this.doExecute(input, searchPos, RE2Flags.UNANCHORED, 2)\n if (a === null || a.length === 0) {\n break\n }\n out += src.substring(lastMatchEnd, a[0])\n\n if (a[1] > lastMatchEnd || a[0] === 0) {\n out += replFunc(src.substring(a[0], a[1]))\n numReplaces++\n }\n\n lastMatchEnd = a[1]\n const width = input.step(searchPos) & 7\n if (searchPos + width > a[1]) {\n searchPos += width\n } else if (searchPos + 1 > a[1]) {\n searchPos++\n } else {\n searchPos = a[1]\n }\n if (numReplaces >= maxReplaces) {\n break\n }\n }\n\n out += src.substring(lastMatchEnd)\n return out\n }\n\n // The number of capture values in the program may correspond\n // to fewer capturing expressions than are in the regexp.\n // For example, \"(a){0}\" turns into an empty program, so the\n // maximum capture in the program is 0 but we need to return\n // an expression for \\1. Pad returns a with -1s appended as needed;\n // the result may alias a.\n pad(a) {\n if (a === null) {\n return null\n }\n\n let n = (1 + this.numSubexp) * 2\n\n if (a.length < n) {\n let a2 = new Array(n).fill(-1)\n for (let i = 0; i < a.length; i++) {\n a2[i] = a[i]\n }\n a = a2\n }\n return a\n }\n\n // Find matches in input.\n allMatches(input, n, deliverFun = (v) => v) {\n let result = []\n const end = input.endPos()\n if (n < 0) {\n n = end + 1\n }\n\n let pos = 0\n let i = 0\n let prevMatchEnd = -1\n while (i < n && pos <= end) {\n const matches = this.doExecute(input, pos, RE2Flags.UNANCHORED, this.prog.numCap)\n if (matches === null || matches.length === 0) {\n break\n }\n\n let accept = true\n if (matches[1] === pos) {\n if (matches[0] === prevMatchEnd) {\n accept = false\n }\n const r = input.step(pos)\n if (r < 0) {\n pos = end + 1\n } else {\n pos += r & 7\n }\n } else {\n pos = matches[1]\n }\n prevMatchEnd = matches[1]\n\n if (accept) {\n result.push(deliverFun(this.pad(matches)))\n i++\n }\n }\n return result\n }\n\n // Legacy Go-style interface; preserved (package-private) for better\n // test coverage.\n //\n // There are 16 methods of RE2 that match a regular expression and\n // identify the matched text. Their names are matched by this regular\n // expression:\n //\n // find(All)?(UTF8)?(Submatch)?(Index)?\n //\n // If 'All' is present, the routine matches successive non-overlapping\n // matches of the entire expression. Empty matches abutting a\n // preceding match are ignored. The return value is an array\n // containing the successive return values of the corresponding\n // non-All routine. These routines take an extra integer argument, n;\n // if n >= 0, the function returns at most n matches/submatches.\n //\n // If 'UTF8' is present, the argument is a UTF-8 encoded byte[] array;\n // otherwise it is a UTF-16 encoded js string; return values\n // are adjusted as appropriate.\n //\n // If 'Submatch' is present, the return value is an list identifying\n // the successive submatches of the expression. Submatches are\n // matches of parenthesized subexpressions within the regular\n // expression, numbered from left to right in order of opening\n // parenthesis. Submatch 0 is the match of the entire expression,\n // submatch 1 the match of the first parenthesized subexpression, and\n // so on.\n //\n // If 'Index' is present, matches and submatches are identified by\n // byte index pairs within the input string: result[2*n:2*n+1]\n // identifies the indexes of the nth submatch. The pair for n==0\n // identifies the match of the entire expression. If 'Index' is not\n // present, the match is identified by the text of the match/submatch.\n // If an index is negative, it means that subexpression did not match\n // any string in the input.\n\n /**\n * Returns an array holding the text of the leftmost match in {@code b} of this regular\n * expression.\n *\n * <p>\n * A return value of null indicates no match.\n */\n // This is visible for testing.\n findUTF8(b) {\n const a = this.doExecute(MachineInput.fromUTF8(b), 0, RE2Flags.UNANCHORED, 2)\n if (a === null) {\n return null\n }\n return b.slice(a[0], a[1])\n }\n\n /**\n * Returns a two-element array of integers defining the location of the leftmost match in\n * {@code b} of this regular expression. The match itself is at {@code b[loc[0]...loc[1]]}.\n *\n * <p>\n * A return value of null indicates no match.\n */\n // This is visible for testing.\n findUTF8Index(b) {\n const a = this.doExecute(MachineInput.fromUTF8(b), 0, RE2Flags.UNANCHORED, 2)\n if (a === null) {\n return null\n }\n return a.slice(0, 2)\n }\n\n /**\n * Returns a string holding the text of the leftmost match in {@code s} of this regular\n * expression.\n *\n * <p>\n * If there is no match, the return value is an empty string, but it will also be empty if the\n * regular expression successfully matches an empty string. Use {@link #findIndex} or\n * {@link #findSubmatch} if it is necessary to distinguish these cases.\n */\n // This is visible for testing.\n find(s) {\n const a = this.doExecute(MachineInput.fromUTF16(s), 0, RE2Flags.UNANCHORED, 2)\n if (a === null) {\n return ''\n }\n return s.substring(a[0], a[1])\n }\n\n /**\n * Returns a two-element array of integers defining the location of the leftmost match in\n * {@code s} of this regular expression. The match itself is at\n * {@code s.substring(loc[0], loc[1])}.\n *\n * <p>\n * A return value of null indicates no match.\n */\n // This is visible for testing.\n findIndex(s) {\n return this.doExecute(MachineInput.fromUTF16(s), 0, RE2Flags.UNANCHORED, 2)\n }\n\n /**\n * Returns an array of arrays the text of the leftmost match of the regular expression in\n * {@code b} and the matches, if any, of its subexpressions, as defined by the <a\n * href='#submatch'>Submatch</a> description above.\n *\n * <p>\n * A return value of null indicates no match.\n */\n // This is visible for testing.\n findUTF8Submatch(b) {\n const a = this.doExecute(MachineInput.fromUTF8(b), 0, RE2Flags.UNANCHORED, this.prog.numCap)\n if (a === null) {\n return null\n }\n\n const ret = new Array(1 + this.numSubexp).fill(null)\n for (let i = 0; i < ret.length; i++) {\n if (2 * i < a.length && a[2 * i] >= 0) {\n ret[i] = b.slice(a[2 * i], a[2 * i + 1])\n }\n }\n return ret\n }\n\n /**\n * Returns an array holding the index pairs identifying the leftmost match of this regular\n * expression in {@code b} and the matches, if any, of its subexpressions, as defined by the the\n * <a href='#submatch'>Submatch</a> and <a href='#index'>Index</a> descriptions above.\n *\n * <p>\n * A return value of null indicates no match.\n */\n // This is visible for testing.\n findUTF8SubmatchIndex(b) {\n return this.pad(\n this.doExecute(MachineInput.fromUTF8(b), 0, RE2Flags.UNANCHORED, this.prog.numCap)\n )\n }\n\n /**\n * Returns an array of strings holding the text of the leftmost match of the regular expression in\n * {@code s} and the matches, if any, of its subexpressions, as defined by the <a\n * href='#submatch'>Submatch</a> description above.\n *\n * <p>\n * A return value of null indicates no match.\n */\n // This is visible for testing.\n findSubmatch(s) {\n const a = this.doExecute(MachineInput.fromUTF16(s), 0, RE2Flags.UNANCHORED, this.prog.numCap)\n if (a === null) {\n return null\n }\n\n const ret = new Array(1 + this.numSubexp).fill(null)\n for (let i = 0; i < ret.length; i++) {\n if (2 * i < a.length && a[2 * i] >= 0) {\n ret[i] = s.substring(a[2 * i], a[2 * i + 1])\n }\n }\n return ret\n }\n\n /**\n * Returns an array holding the index pairs identifying the leftmost match of this regular\n * expression in {@code s} and the matches, if any, of its subexpressions, as defined by the <a\n * href='#submatch'>Submatch</a> description above.\n *\n * <p>\n * A return value of null indicates no match.\n */\n // This is visible for testing.\n findSubmatchIndex(s) {\n return this.pad(\n this.doExecute(MachineInput.fromUTF16(s), 0, RE2Flags.UNANCHORED, this.prog.numCap)\n )\n }\n\n /**\n * {@code findAllUTF8()} is the <a href='#all'>All</a> version of {@link #findUTF8}; it returns a\n * list of up to {@code n} successive matches of the expression, as defined by the <a\n * href='#all'>All</a> description above.\n *\n * <p>\n * A return value of null indicates no match.\n *\n * TODO(adonovan): think about defining a byte slice view class, like a read-only Go slice backed\n * by |b|.\n */\n // This is visible for testing.\n findAllUTF8(b, n) {\n const result = this.allMatches(MachineInput.fromUTF8(b), n, (match) =>\n b.slice(match[0], match[1])\n )\n if (result.length === 0) {\n return null\n }\n return result\n }\n\n /**\n * {@code findAllUTF8Index} is the <a href='#all'>All</a> version of {@link #findUTF8Index}; it\n * returns a list of up to {@code n} successive matches of the expression, as defined by the <a\n * href='#all'>All</a> description above.\n *\n * <p>\n * A return value of null indicates no match.\n */\n // This is visible for testing.\n findAllUTF8Index(b, n) {\n const result = this.allMatches(MachineInput.fromUTF8(b), n, (match) => match.slice(0, 2))\n if (result.length === 0) {\n return null\n }\n return result\n }\n\n /**\n * {@code findAll} is the <a href='#all'>All</a> version of {@link #find}; it returns a list of up\n * to {@code n} successive matches of the expression, as defined by the <a href='#all'>All</a>\n * description above.\n *\n * <p>\n * A return value of null indicates no match.\n */\n // This is visible for testing.\n findAll(s, n) {\n const result = this.allMatches(MachineInput.fromUTF16(s), n, (match) =>\n s.substring(match[0], match[1])\n )\n if (result.length === 0) {\n return null\n }\n return result\n }\n\n /**\n * {@code findAllIndex} is the <a href='#all'>All</a> version of {@link #findIndex}; it returns a\n * list of up to {@code n} successive matches of the expression, as defined by the <a\n * href='#all'>All</a> description above.\n *\n * <p>\n * A return value of null indicates no match.\n */\n // This is visible for testing.\n findAllIndex(s, n) {\n const result = this.allMatches(MachineInput.fromUTF16(s), n, (match) => match.slice(0, 2))\n if (result.length === 0) {\n return null\n }\n return result\n }\n\n /**\n * {@code findAllUTF8Submatch} is the <a href='#all'>All</a> version of {@link #findUTF8Submatch};\n * it returns a list of up to {@code n} successive matches of the expression, as defined by the <a\n * href='#all'>All</a> description above.\n *\n * <p>\n * A return value of null indicates no match.\n */\n // This is visible for testing.\n findAllUTF8Submatch(b, n) {\n const result = this.allMatches(MachineInput.fromUTF8(b), n, (match) => {\n let slice = new Array((match.length / 2) | 0).fill(null)\n for (let j = 0; j < slice.length; j++) {\n if (match[2 * j] >= 0) {\n slice[j] = b.slice(match[2 * j], match[2 * j + 1])\n }\n }\n return slice\n })\n if (result.length === 0) {\n return null\n }\n return result\n }\n\n /**\n * {@code findAllUTF8SubmatchIndex} is the <a href='#all'>All</a> version of\n * {@link #findUTF8SubmatchIndex}; it returns a list of up to {@code n} successive matches of the\n * expression, as defined by the <a href='#all'>All</a> description above.\n *\n * <p>\n * A return value of null indicates no match.\n */\n // This is visible for testing.\n findAllUTF8SubmatchIndex(b, n) {\n const result = this.allMatches(MachineInput.fromUTF8(b), n)\n if (result.length === 0) {\n return null\n }\n return result\n }\n\n /**\n * {@code findAllSubmatch} is the <a href='#all'>All</a> version of {@link #findSubmatch}; it\n * returns a list of up to {@code n} successive matches of the expression, as defined by the <a\n * href='#all'>All</a> description above.\n *\n * <p>\n * A return value of null indicates no match.\n */\n // This is visible for testing.\n findAllSubmatch(s, n) {\n const result = this.allMatches(MachineInput.fromUTF16(s), n, (match) => {\n let slice = new Array((match.length / 2) | 0).fill(null)\n for (let j = 0; j < slice.length; j++) {\n if (match[2 * j] >= 0) {\n slice[j] = s.substring(match[2 * j], match[2 * j + 1])\n }\n }\n return slice\n })\n if (result.length === 0) {\n return null\n }\n return result\n }\n\n /**\n * {@code findAllSubmatchIndex} is the <a href='#all'>All</a> version of\n * {@link #findSubmatchIndex}; it returns a list of up to {@code n} successive matches of the\n * expression, as defined by the <a href='#all'>All</a> description above.\n *\n * <p>\n * A return value of null indicates no match.\n */\n // This is visible for testing.\n findAllSubmatchIndex(s, n) {\n const result = this.allMatches(MachineInput.fromUTF16(s), n)\n if (result.length === 0) {\n return null\n }\n return result\n }\n}\n\nexport { RE2 }\n","import { RE2Flags } from './RE2Flags'\nimport { MatcherInput } from './MatcherInput'\nimport { Matcher } from './Matcher'\nimport { RE2 } from './RE2'\nimport { Utils } from './Utils'\nimport {\n RE2JSException,\n RE2JSSyntaxException,\n RE2JSCompileException,\n RE2JSGroupException,\n RE2JSFlagsException\n} from './exceptions'\n\n/**\n * A compiled representation of an RE2 regular expression\n *\n * <p>\n * The matching functions take {@code String} arguments instead of the more general Java\n * {@code CharSequence} since the latter doesn't provide UTF-16 decoding.\n *\n *\n * @author rsc@google.com (Russ Cox)\n * @class\n */\nclass RE2JS {\n /**\n * Flag: case insensitive matching.\n */\n static CASE_INSENSITIVE = 1\n /**\n * Flag: dot ({@code .}) matches all characters, including newline.\n */\n static DOTALL = 2\n /**\n * Flag: multiline matching: {@code ^} and {@code $} match at beginning and end of line, not just\n * beginning and end of input.\n */\n static MULTILINE = 4\n /**\n * Flag: Unicode groups (e.g. {@code \\p\\ Greek\\} ) will be syntax errors.\n */\n static DISABLE_UNICODE_GROUPS = 8\n /**\n * Flag: matches longest possible string.\n */\n static LONGEST_MATCH = 16\n\n /**\n * Returns a literal pattern string for the specified string.\n *\n * <p>\n * This method produces a string that can be used to create a <code>RE2JS</code> that would\n * match the string <code>s</code> as if it were a literal pattern.\n * </p>\n * Metacharacters or escape sequences in the input sequence will be given no special meaning.\n *\n * @param {string} str The string to be literalized\n * @returns {string} A literal string replacement\n */\n static quote(str) {\n return Utils.quoteMeta(str)\n }\n\n /**\n * Helper: create new RE2JS with given regex and flags. Flregex is the regex with flags applied.\n * @param {string} regex\n * @param {number} flags\n * @returns {RE2JS}\n */\n static compile(regex, flags = 0) {\n let fregex = regex\n if ((flags & RE2JS.CASE_INSENSITIVE) !== 0) {\n fregex = `(?i)${fregex}`\n }\n if ((flags & RE2JS.DOTALL) !== 0) {\n fregex = `(?s)${fregex}`\n }\n if ((flags & RE2JS.MULTILINE) !== 0) {\n fregex = `(?m)${fregex}`\n }\n if (\n (flags &\n ~(\n RE2JS.MULTILINE |\n RE2JS.DOTALL |\n RE2JS.CASE_INSENSITIVE |\n RE2JS.DISABLE_UNICODE_GROUPS |\n RE2JS.LONGEST_MATCH\n )) !==\n 0\n ) {\n throw new RE2JSFlagsException(\n 'Flags should only be a combination of MULTILINE, DOTALL, CASE_INSENSITIVE, DISABLE_UNICODE_GROUPS, LONGEST_MATCH'\n )\n }\n\n let re2Flags = RE2Flags.PERL\n if ((flags & RE2JS.DISABLE_UNICODE_GROUPS) !== 0) {\n re2Flags &= ~RE2Flags.UNICODE_GROUPS\n }\n\n const p = new RE2JS(regex, flags)\n // The compiled RE2 regexp.\n p.re2Input = RE2.compileImpl(fregex, re2Flags, (flags & RE2JS.LONGEST_MATCH) !== 0)\n return p\n }\n\n /**\n * Matches a string against a regular expression.\n *\n * @param {string} regex the regular expression\n * @param {*} input the input\n * @returns {boolean} true if the regular expression matches the entire input\n * @throws RE2JSSyntaxException if the regular expression is malformed\n */\n static matches(regex, input) {\n return RE2JS.compile(regex).matcher(input).matches()\n }\n\n // This is visible for testing.\n static initTest(pattern, flags, re2) {\n if (pattern == null) {\n throw new Error('pattern is null')\n }\n if (re2 == null) {\n throw new Error('re2 is null')\n }\n const p = new RE2JS(pattern, flags)\n // The compiled RE2 regexp.\n p.re2Input = re2\n return p\n }\n\n constructor(pattern, flags) {\n // The pattern string at construction time.\n this.patternInput = pattern\n // The flags at construction time.\n this.flagsInput = flags\n }\n\n /**\n * Releases memory used by internal caches associated with this pattern. Does not change the\n * observable behaviour. Useful for tests that detect memory leaks via allocation tracking.\n */\n reset() {\n this.re2Input.reset()\n }\n\n /**\n * Returns the flags used in the constructor.\n * @returns {number}\n */\n flags() {\n return this.flagsInput\n }\n\n /**\n * Returns the pattern used in the constructor.\n * @returns {string}\n */\n pattern() {\n return this.patternInput\n }\n\n re2() {\n return this.re2Input\n }\n\n /**\n * Matches a string against a regular expression.\n *\n * @param {*} input the input\n * @returns {boolean} true if the regular expression matches the entire input\n */\n matches(input) {\n return this.matcher(input).matches()\n }\n\n /**\n * Creates a new {@code Matcher} matching the pattern against the input.\n *\n * @param {*} input the input string\n * @returns {Matcher}\n */\n matcher(input) {\n if (Array.isArray(input)) {\n input = MatcherInput.utf8(input)\n }\n\n return new Matcher(this, input)\n }\n\n /**\n * Splits input around instances of the regular expression. It returns an array giving the strings\n * that occur before, between, and after instances of the regular expression.\n *\n * <p>\n * If {@code limit <= 0}, there is no limit on the size of the returned array. If\n * {@code limit == 0}, empty strings that would occur at the end of the array are omitted. If\n * {@code limit > 0}, at most limit strings are returned. The final string contains the remainder\n * of the input, possibly including additional matches of the pattern.\n *\n * @param {string} input the input string to be split\n * @param {number} limit the limit\n * @returns {java.lang.String[]} the split strings\n */\n split(input, limit = 0) {\n const m = this.matcher(input)\n\n const result = []\n let emptiesSkipped = 0\n let last = 0\n\n while (m.find()) {\n if (last === 0 && m.end() === 0) {\n // Zero-width match at the beginning, skip\n last = m.end()\n continue\n }\n\n if (limit > 0 && result.length === limit - 1) {\n // no more room for matches\n break\n }\n\n if (last === m.start()) {\n // Empty match, may or may not be trailing.\n if (limit === 0) {\n emptiesSkipped += 1\n last = m.end()\n continue\n }\n } else {\n // If emptiesSkipped > 0 then limit == 0 and we have non-trailing empty matches to add before\n // this non-empty match.\n while (emptiesSkipped > 0) {\n result.push('')\n emptiesSkipped -= 1\n }\n }\n\n result.push(m.substring(last, m.start()))\n last = m.end()\n }\n\n if (limit === 0 && last !== m.inputLength()) {\n // Unlimited match, no more delimiters but we have a non-empty input at the end. Catch up any skipped empty\n // matches, then emit the final match.\n while (emptiesSkipped > 0) {\n result.push('')\n emptiesSkipped -= 1\n }\n\n result.push(m.substring(last, m.inputLength()))\n }\n\n if (limit !== 0 || result.length === 0) {\n result.push(m.substring(last, m.inputLength()))\n }\n\n return result\n }\n\n toString() {\n return this.patternInput\n }\n\n /**\n * Returns the number of capturing groups in this matcher's pattern. Group zero denotes the entire\n * pattern and is excluded from this count.\n *\n * @returns {number} the number of capturing groups in this pattern\n */\n groupCount() {\n return this.re2Input.numberOfCapturingGroups()\n }\n\n /**\n * Return a map of the capturing groups in this matcher's pattern, where key is the name and value\n * is the index of the group in the pattern.\n * @returns {*}\n */\n namedGroups() {\n return this.re2Input.namedGroups\n }\n\n equals(other) {\n if (this === other) {\n return true\n }\n if (other === null || this.constructor !== other.constructor) {\n return false\n }\n\n return this.flagsInput === other.flagsInput && this.patternInput === other.patternInput\n }\n}\n\nexport {\n RE2JS,\n RE2JSException,\n RE2JSSyntaxException,\n RE2JSCompileException,\n RE2JSGroupException,\n RE2JSFlagsException\n}\n"],"names":["RE2Flags","FOLD_CASE","LITERAL","CLASS_NL","DOT_NL","ONE_LINE","NON_GREEDY","PERL_X","UNICODE_GROUPS","WAS_DOLLAR","MATCH_NL","PERL","POSIX","UNANCHORED","ANCHOR_START","ANCHOR_BOTH","Codepoint","CODES","Map","toUpperCase","codepoint","s","String","fromCodePoint","length","sOrigin","codePointAt","toLowerCase","UnicodeTables","CASE_ORBIT","C","Cc","Cf","Co","Cs","L","foldL","Ll","foldLl","Lm","Lo","Lt","foldLt","Lu","Upper","foldLu","M","foldM","Mc","Me","Mn","foldMn","N","Nd","Nl","No","P","Pc","Pd","Pe","Pf","Pi","Po","Ps","S","Sc","Sk","Sm","So","Z","Zl","Zp","Zs","Adlam","Ahom","Anatolian_Hieroglyphs","Arabic","Armenian","Avestan","Balinese","Bamum","Bassa_Vah","Batak","Bengali","Bhaiksuki","Bopomofo","Brahmi","Braille","Buginese","Buhid","Canadian_Aboriginal","Carian","Caucasian_Albanian","Chakma","Cham","Cherokee","Chorasmian","Common","foldCommon","Coptic","Cuneiform","Cypriot","Cypro_Minoan","Cyrillic","Deseret","Devanagari","Dives_Akuru","Dogra","Duployan","Egyptian_Hieroglyphs","Elbasan","Elymaic","Ethiopic","Georgian","Glagolitic","Gothic","Grantha","Greek","foldGreek","Gujarati","Gunjala_Gondi","Gurmukhi","Han","Hangul","Hanifi_Rohingya","Hanunoo","Hatran","Hebrew","Hiragana","Imperial_Aramaic","Inherited","foldInherited","Inscriptional_Pahlavi","Inscriptional_Parthian","Javanese","Kaithi","Kannada","Katakana","Kawi","Kayah_Li","Kharoshthi","Khitan_Small_Script","Khmer","Khojki","Khudawadi","Lao","Latin","Lepcha","Limbu","Linear_A","Linear_B","Lisu","Lycian","Lydian","Mahajani","Makasar","Malayalam","Mandaic","Manichaean","Marchen","Masaram_Gondi","Medefaidrin","Meetei_Mayek","Mende_Kikakui","Meroitic_Cursive","Meroitic_Hieroglyphs","Miao","Modi","Mongolian","Mro","Multani","Myanmar","Nabataean","Nag_Mundari","Nandinagari","New_Tai_Lue","Newa","Nko","Nushu","Nyiakeng_Puachue_Hmong","Ogham","Ol_Chiki","Old_Hungarian","Old_Italic","Old_North_Arabian","Old_Permic","Old_Persian","Old_Sogdian","Old_South_Arabian","Old_Turkic","Old_Uyghur","Oriya","Osage","Osmanya","Pahawh_Hmong","Palmyrene","Pau_Cin_Hau","Phags_Pa","Phoenician","Psalter_Pahlavi","Rejang","Runic","Samaritan","Saurashtra","Sharada","Shavian","Siddham","SignWriting","Sinhala","Sogdian","Sora_Sompeng","Soyombo","Sundanese","Syloti_Nagri","Syriac","Tagalog","Tagbanwa","Tai_Le","Tai_Tham","Tai_Viet","Takri","Tamil","Tangsa","Tangut","Telugu","Thaana","Thai","Tibetan","Tifinagh","Tirhuta","Toto","Ugaritic","Vai","Vithkuqi","Wancho","Warang_Citi","Yezidi","Yi","Zanabazar_Square","CATEGORIES","SCRIPTS","FOLD_CATEGORIES","FOLD_SCRIPT","Unicode","MAX_RUNE","MAX_ASCII","MAX_LATIN1","MAX_BMP","MIN_FOLD","MAX_FOLD","is32","ranges","r","lo","hi","m","Math","floor","range","is","isUpper","isPrint","simpleFold","has","get","l","equalsIgnoreCase","r1","r2","Utils","METACHARACTERS","EMPTY_BEGIN_LINE","EMPTY_END_LINE","EMPTY_BEGIN_TEXT","EMPTY_END_TEXT","EMPTY_WORD_BOUNDARY","EMPTY_NO_WORD_BOUNDARY","EMPTY_ALL","emptyInts","isalnum","c","unhex","escapeRune","rune","out","indexOf","toString","stringToRunes","str","split","map","runeToString","isWordRune","emptyOpContext","op","quoteMeta","join","charCount","codePoint","stringToUtf8ByteArray","globalThis","TextEncoder","Array","from","encode","p","i","charCodeAt","utf8ByteArrayToString","bytes","TextDecoder","decode","Uint8Array","pos","c1","fromCharCode","c2","c3","c4","u","createEnum","values","arguments","undefined","initNum","enumObject","val","keyVal","Object","freeze","MatcherInputBase","Encoding","getEncoding","Error","isUTF8Encoding","UTF_8","isUTF16Encoding","UTF_16","Utf8MatcherInput","constructor","asCharSequence","asBytes","Utf16MatcherInput","charSequence","MatcherInput","utf16","utf8","input","isArray","RE2JSException","message","name","RE2JSSyntaxException","error","getDescription","getPattern","RE2JSCompileException","RE2JSGroupException","RE2JSFlagsException","Matcher","quoteReplacement","pattern","patternInput","re2","patternGroupCount","numberOfCapturingGroups","groups","namedGroups","resetMatcherInput","reset","matcherInputLength","matcherInput","appendPos","hasMatch","hasGroups","anchorFlag","start","group","groupInt","Number","isFinite","loadGroup","end","substring","groupCount","res","matchMachineInput","ok","matches","genMatch","lookingAt","find","startByte","anchor","slice","inputLength","appendReplacement","replacement","perlMode","e","appendReplacementInternalPerl","appendReplacementInternal","last","n","j","groupName","prototype","hasOwnProperty","call","appendTail","replaceAll","replace","replaceFirst","all","MachineInputBase","EOF","canCheckPrefix","endPos","MachineUTF8Input","step","x","index","prefixUTF8","context","lim","source","target","fromIndex","targetLength","sourceLength","MachineUTF16Input","prefix","MachineInput","fromUTF8","fromUTF16","Regexp","Op","isPseudoOp","LEFT_PAREN","emptySubs","quoteIfHyphen","fromRegexp","re","regex","flags","subs","runes","cap","min","max","reinit","appendTo","NO_MATCH","EMPTY_MATCH","STAR","PLUS","QUEST","REPEAT","sub","CAPTURE","CONCAT","ALTERNATE","sep","ANY_CHAR_NOT_NL","ANY_CHAR","BEGIN_TEXT","END_TEXT","BEGIN_LINE","END_LINE","WORD_BOUNDARY","NO_WORD_BOUNDARY","CHAR_CLASS","maxCap","equals","that","Inst","ALT","ALT_MATCH","EMPTY_WIDTH","FAIL","MATCH","NOP","RUNE","RUNE1","RUNE_ANY","RUNE_ANY_NOT_NL","isRuneOp","escapeRunes","arg","matchRune","r0","Prog","inst","numCap","getInst","pc","numInst","addInst","push","skipNop","startCond","flag","loop","next","patch","append","l1","l2","len","Frag","nullable","Compiler","ANY_RUNE_NOT_NL","ANY_RUNE","compileRegexp","f","compile","prog","newInst","nop","fail","cat","f1","f2","alt","nongreedy","quest","star","plus","empty","bra","ket","Simplify","simplify","nre","nsub","simplify1","prefixSubs","suffix","nre2","CharGroup","sign","cls","code1","code2","code3","PERL_GROUPS","code4","code5","code6","code7","code8","code9","code10","code11","code12","code13","code14","code15","code16","code17","POSIX_GROUPS","CharClass","charClassToString","result","cmp","array","pivotFrom","pivotTo","qsortIntPair","left","right","pivotIndex","temp","toArray","cleanClass","w","appendLiteral","appendFoldedRange","appendRange","rlo","rhi","appendClass","appendFoldedClass","appendNegatedClass","nextLo","appendTable","table","triple","stride","appendNegatedTable","appendTableWithSign","negateClass","appendClassWithSign","appendGroup","g","foldCase","Pair","of","first","second","StringIterator","position","rewindTo","more","peek","skip","skipString","pop","rest","startsWith","beforePos","Parser","ERR_INTERNAL_ERROR","ERR_INVALID_CHAR_RANGE","ERR_INVALID_ESCAPE","ERR_INVALID_NAMED_CAPTURE","ERR_INVALID_PERL_OP","ERR_INVALID_REPEAT_OP","ERR_INVALID_REPEAT_SIZE","ERR_MISSING_BRACKET","ERR_MISSING_PAREN","ERR_MISSING_REPEAT_ARGUMENT","ERR_TRAILING_BACKSLASH","ERR_DUPLICATE_NAMED_CAPTURE","ANY_TABLE","unicodeTable","minFoldRune","leadingRegexp","literalRegexp","parse","parseInternal","parseRepeat","t","parseInt","isValidCaptureName","parseFloat","isCharClass","mergeCharClass","dst","src","parseEscape","startPos","bigswitch","nhex","v","y","parseClassChar","wholeClassPos","concatRunes","wholeRegexp","stack","free","newRegexp","reuse","popToPseudo","maybeConcat","re1","newLiteral","literal","repeat","lastRepeatPos","concat","collapse","alternate","cleanAlt","newsubs","fill","splice","factor","old","lensub","lenout","strlen","strflags","istr","istrlen","iflags","same","removeLeadingString","ifirst","removeLeadingRegexp","subMax","subJ","tmp","repeatPos","parsePerlFlags","parseVerticalBar","parseRightParen","parseClass","minMax","savedPos","lit","cc","parseUnicodeClass","parsePerlClassEscape","swapVerticalBar","sawFlag","VERTICAL_BAR","re3","parseNamedClass","pair","tab","fold","Thread","Queue","sparse","densePcs","denseThreads","size","contains","isEmpty","add","clear","Machine","fromRE2","q0","q1","pool","poolSize","matched","matchcap","ncap","fromMachine","machine","init","initNewCap","resetCap","submatches","alloc","freeQueue","queue","numberOfThread","requiredPoolLength","freeThread","match","cond","runq","nextq","width","rune1","width1","prefixRune","advance","nextPos","tmpq","nextCond","atEnd","longest","q","d","opos","AtomicReference","initialValue","value","set","newValue","compareAndSet","expect","update","RE2","initTest","expr","numSubexp","prefixComplete","compileImpl","compilePOSIX","mode","prefixCompl","prefixStr","pooled","head","put","isNew","doExecute","matchWithGroup","ngroup","machineInput","groupMatch","matchUTF8","b","repl","replaceAllFunc","replFunc","maxReplaces","lastMatchEnd","searchPos","numReplaces","a","pad","a2","allMatches","deliverFun","prevMatchEnd","accept","findUTF8","findUTF8Index","findIndex","findUTF8Submatch","ret","findUTF8SubmatchIndex","findSubmatch","findSubmatchIndex","findAllUTF8","findAllUTF8Index","findAll","findAllIndex","findAllUTF8Submatch","findAllUTF8SubmatchIndex","findAllSubmatch","findAllSubmatchIndex","RE2JS","CASE_INSENSITIVE","DOTALL","MULTILINE","DISABLE_UNICODE_GROUPS","LONGEST_MATCH","quote","fregex","re2Flags","re2Input","matcher","flagsInput","limit","emptiesSkipped","other"],"mappings":";;;;;;;;;;;;;;;;EAAA;EACA,MAAMA,QAAQ,CAAC;EACb;IACA,OAAOC,SAAS,GAAG,IAAI,CAAA;EACvB;IACA,OAAOC,OAAO,GAAG,IAAI,CAAA;EACrB;IACA,OAAOC,QAAQ,GAAG,IAAI,CAAA;EACtB;IACA,OAAOC,MAAM,GAAG,IAAI,CAAA;EACpB;EACA;IACA,OAAOC,QAAQ,GAAG,IAAI,CAAA;EACtB;IACA,OAAOC,UAAU,GAAG,IAAI,CAAA;EACxB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;IACA,OAAOC,MAAM,GAAG,IAAI,CAAA;EACpB;IACA,OAAOC,cAAc,GAAG,IAAI,CAAA;EAC5B;IACA,OAAOC,UAAU,GAAG,KAAK,CAAA;IAEzB,OAAOC,QAAQ,GAAGV,QAAQ,CAACG,QAAQ,GAAGH,QAAQ,CAACI,MAAM,CAAA;EACrD;EACA,EAAA,OAAOO,IAAI,GAAGX,QAAQ,CAACG,QAAQ,GAAGH,QAAQ,CAACK,QAAQ,GAAGL,QAAQ,CAACO,MAAM,GAAGP,QAAQ,CAACQ,cAAc,CAAA;EAC/F;IACA,OAAOI,KAAK,GAAG,CAAC,CAAA;EAChB;IACA,OAAOC,UAAU,GAAG,CAAC,CAAA;IACrB,OAAOC,YAAY,GAAG,CAAC,CAAA;IACvB,OAAOC,WAAW,GAAG,CAAC,CAAA;EACxB;;EC1CA;EACA;EACA;EACA,MAAMC,SAAS,CAAC;EACd;EACA,EAAA,OAAOC,KAAK,GAAG,IAAIC,GAAG,CAAC,CACrB,CAAC,MAAM,EAAE,CAAC,CAAC,EACX,CAAC,IAAI,EAAE,CAAC,CAAC,EACT,CAAC,IAAI,EAAE,CAAC,CAAC,EACT,CAAC,IAAI,EAAE,EAAE,CAAC,EACV,CAAC,IAAI,EAAE,EAAE,CAAC,EACV,CAAC,IAAI,EAAE,EAAE,CAAC,EACV,CAAC,IAAI,EAAE,EAAE,CAAC,EACV,CAAC,GAAG,EAAE,EAAE,CAAC,EACT,CAAC,GAAG,EAAE,EAAE,CAAC,EACT,CAAC,GAAG,EAAE,EAAE,CAAC,EACT,CAAC,GAAG,EAAE,EAAE,CAAC,EACT,CAAC,GAAG,EAAE,EAAE,CAAC,EACT,CAAC,GAAG,EAAE,EAAE,CAAC,EACT,CAAC,GAAG,EAAE,EAAE,CAAC,EACT,CAAC,GAAG,EAAE,EAAE,CAAC,EACT,CAAC,GAAG,EAAE,EAAE,CAAC,EACT,CAAC,GAAG,EAAE,EAAE,CAAC,EACT,CAAC,GAAG,EAAE,EAAE,CAAC,EACT,CAAC,GAAG,EAAE,EAAE,CAAC,EACT,CAAC,GAAG,EAAE,EAAE,CAAC,EACT,CAAC,GAAG,EAAE,EAAE,CAAC,EACT,CAAC,GAAG,EAAE,EAAE,CAAC,EACT,CAAC,GAAG,EAAE,EAAE,CAAC,EACT,CAAC,GAAG,EAAE,EAAE,CAAC,EACT,CAAC,GAAG,EAAE,EAAE,CAAC,EACT,CAAC,GAAG,EAAE,EAAE,CAAC,EACT,CAAC,GAAG,EAAE,EAAE,CAAC,EACT,CAAC,GAAG,EAAE,EAAE,CAAC,EACT,CAAC,GAAG,EAAE,EAAE,CAAC,EACT,CAAC,GAAG,EAAE,EAAE,CAAC,EACT,CAAC,GAAG,EAAE,EAAE,CAAC,EACT,CAAC,GAAG,EAAE,EAAE,CAAC,EACT,CAAC,GAAG,EAAE,EAAE,CAAC,EACT,CAAC,GAAG,EAAE,EAAE,CAAC,EACT,CAAC,GAAG,EAAE,EAAE,CAAC,EACT,CAAC,GAAG,EAAE,EAAE,CAAC,EACT,CAAC,GAAG,EAAE,EAAE,CAAC,EACT,CAAC,GAAG,EAAE,EAAE,CAAC,EACT,CAAC,GAAG,EAAE,EAAE,CAAC,EACT,CAAC,GAAG,EAAE,EAAE,CAAC,EACT,CAAC,IAAI,EAAE,EAAE,CAAC,EACV,CAAC,GAAG,EAAE,EAAE,CAAC,EACT,CAAC,GAAG,EAAE,EAAE,CAAC,EACT,CAAC,GAAG,EAAE,EAAE,CAAC,EACT,CAAC,GAAG,EAAE,EAAE,CAAC,EACT,CAAC,GAAG,EAAE,EAAE,CAAC,EACT,CAAC,GAAG,EAAE,GAAG,CAAC,EACV,CAAC,GAAG,EAAE,GAAG,CAAC,EACV,CAAC,GAAG,EAAE,GAAG,CAAC,EACV,CAAC,GAAG,EAAE,GAAG,CAAC,EACV,CAAC,GAAG,EAAE,GAAG,CAAC,EACV,CAAC,GAAG,EAAE,GAAG,CAAC,EACV,CAAC,GAAG,EAAE,GAAG,CAAC,EACV,CAAC,GAAG,EAAE,GAAG,CAAC,EACV,CAAC,GAAG,EAAE,GAAG,CAAC,EACV,CAAC,GAAG,EAAE,GAAG,CAAC,EACV,CAAC,GAAG,EAAE,GAAG,CAAC,EACV,CAAC,GAAG,EAAE,GAAG,CAAC,EACV,CAAC,GAAG,EAAE,GAAG,CAAC,CACX,CAAC,CAAA;;EAEF;EACA;IACA,OAAOC,WAAWA,CAACC,SAAS,EAAE;MAC5B,MAAMC,CAAC,GAAGC,MAAM,CAACC,aAAa,CAACH,SAAS,CAAC,CAACD,WAAW,EAAE,CAAA;EACvD,IAAA,IAAIE,CAAC,CAACG,MAAM,GAAG,CAAC,EAAE;EAChB,MAAA,OAAOJ,SAAS,CAAA;EAClB,KAAA;EACA,IAAA,MAAMK,OAAO,GAAGH,MAAM,CAACC,aAAa,CAACF,CAAC,CAACK,WAAW,CAAC,CAAC,CAAC,CAAC,CAACC,WAAW,EAAE,CAAA;EACpE,IAAA,IAAIF,OAAO,CAACD,MAAM,GAAG,CAAC,IAAIC,OAAO,CAACC,WAAW,CAAC,CAAC,CAAC,KAAKN,SAAS,EAAE;EAC9D,MAAA,OAAOA,SAAS,CAAA;EAClB,KAAA;EACA,IAAA,OAAOC,CAAC,CAACK,WAAW,CAAC,CAAC,CAAC,CAAA;EACzB,GAAA;;EAEA;EACA;IACA,OAAOC,WAAWA,CAACP,SAAS,EAAE;MAC5B,MAAMC,CAAC,GAAGC,MAAM,CAACC,aAAa,CAACH,SAAS,CAAC,CAACO,WAAW,EAAE,CAAA;EACvD,IAAA,IAAIN,CAAC,CAACG,MAAM,GAAG,CAAC,EAAE;EAChB,MAAA,OAAOJ,SAAS,CAAA;EAClB,KAAA;EACA,IAAA,MAAMK,OAAO,GAAGH,MAAM,CAACC,aAAa,CAACF,CAAC,CAACK,WAAW,CAAC,CAAC,CAAC,CAAC,CAACP,WAAW,EAAE,CAAA;EACpE,IAAA,IAAIM,OAAO,CAACD,MAAM,GAAG,CAAC,IAAIC,OAAO,CAACC,WAAW,CAAC,CAAC,CAAC,KAAKN,SAAS,EAAE;EAC9D,MAAA,OAAOA,SAAS,CAAA;EAClB,KAAA;EACA,IAAA,OAAOC,CAAC,CAACK,WAAW,CAAC,CAAC,CAAC,CAAA;EACzB,GAAA;EACF;;EC9FA;EACA;;EAEA,MAAME,aAAa,CAAC;IAClB,OAAOC,UAAU,GAAG,IAAIX,GAAG,CAAC,CAC1B,CAAC,EAAE,EAAE,GAAG,CAAC,EACT,CAAC,GAAG,EAAE,IAAI,CAAC,EACX,CAAC,IAAI,EAAE,EAAE,CAAC,EACV,CAAC,EAAE,EAAE,GAAG,CAAC,EACT,CAAC,GAAG,EAAE,GAAG,CAAC,EACV,CAAC,GAAG,EAAE,EAAE,CAAC,EACT,CAAC,GAAG,EAAE,GAAG,CAAC,EACV,CAAC,GAAG,EAAE,GAAG,CAAC,EACV,CAAC,GAAG,EAAE,GAAG,CAAC,EACV,CAAC,GAAG,EAAE,GAAG,CAAC,EACV,CAAC,GAAG,EAAE,IAAI,CAAC,EACX,CAAC,IAAI,EAAE,GAAG,CAAC,EACX,CAAC,GAAG,EAAE,GAAG,CAAC,EACV,CAAC,GAAG,EAAE,GAAG,CAAC,EACV,CAAC,GAAG,EAAE,GAAG,CAAC,EACV,CAAC,GAAG,EAAE,GAAG,CAAC,EACV,CAAC,GAAG,EAAE,GAAG,CAAC,EACV,CAAC,GAAG,EAAE,GAAG,CAAC,EACV,CAAC,GAAG,EAAE,GAAG,CAAC,EACV,CAAC,GAAG,EAAE,GAAG,CAAC,EACV,CAAC,GAAG,EAAE,GAAG,CAAC,EACV,CAAC,GAAG,EAAE,GAAG,CAAC,EACV,CAAC,GAAG,EAAE,GAAG,CAAC,EACV,CAAC,GAAG,EAAE,GAAG,CAAC,EACV,CAAC,GAAG,EAAE,GAAG,CAAC,EACV,CAAC,GAAG,EAAE,GAAG,CAAC,EACV,CAAC,GAAG,EAAE,IAAI,CAAC,EACX,CAAC,IAAI,EAAE,GAAG,CAAC,EACX,CAAC,GAAG,EAAE,GAAG,CAAC,EACV,CAAC,GAAG,EAAE,GAAG,CAAC,EACV,CAAC,GAAG,EAAE,GAAG,CAAC,EACV,CAAC,GAAG,EAAE,GAAG,CAAC,EACV,CAAC,GAAG,EAAE,IAAI,CAAC,EACX,CAAC,IAAI,EAAE,GAAG,CAAC,EACX,CAAC,GAAG,EAAE,GAAG,CAAC,EACV,CAAC,GAAG,EAAE,GAAG,CAAC,EACV,CAAC,GAAG,EAAE,IAAI,CAAC,EACX,CAAC,IAAI,EAAE,GAAG,CAAC,EACX,CAAC,GAAG,EAAE,GAAG,CAAC,EACV,CAAC,GAAG,EAAE,IAAI,CAAC,EACX,CAAC,IAAI,EAAE,GAAG,CAAC,EACX,CAAC,GAAG,EAAE,GAAG,CAAC,EACV,CAAC,GAAG,EAAE,GAAG,CAAC,EACV,CAAC,GAAG,EAAE,GAAG,CAAC,EACV,CAAC,GAAG,EAAE,GAAG,CAAC,EACV,CAAC,GAAG,EAAE,IAAI,CAAC,EACX,CAAC,IAAI,EAAE,GAAG,CAAC,EACX,CAAC,GAAG,EAAE,GAAG,CAAC,EACV,CAAC,GAAG,EAAE,GAAG,CAAC,EACV,CAAC,GAAG,EAAE,GAAG,CAAC,EACV,CAAC,GAAG,EAAE,GAAG,CAAC,EACV,CAAC,GAAG,EAAE,GAAG,CAAC,EACV,CAAC,GAAG,EAAE,GAAG,CAAC,EACV,CAAC,GAAG,EAAE,GAAG,CAAC,EACV,CAAC,GAAG,EAAE,IAAI,CAAC,EACX,CAAC,IAAI,EAAE,GAAG,CAAC,EACX,CAAC,IAAI,EAAE,IAAI,CAAC,EACZ,CAAC,IAAI,EAAE,IAAI,CAAC,EACZ,CAAC,IAAI,EAAE,IAAI,CAAC,EACZ,CAAC,IAAI,EAAE,IAAI,CAAC,EACZ,CAAC,IAAI,EAAE,IAAI,CAAC,EACZ,CAAC,IAAI,EAAE,IAAI,CAAC,EACZ,CAAC,IAAI,EAAE,IAAI,CAAC,EACZ,CAAC,IAAI,EAAE,IAAI,CAAC,EACZ,CAAC,IAAI,EAAE,IAAI,CAAC,EACZ,CAAC,IAAI,EAAE,IAAI,CAAC,EACZ,CAAC,IAAI,EAAE,IAAI,CAAC,EACZ,CAAC,IAAI,EAAE,IAAI,CAAC,EACZ,CAAC,IAAI,EAAE,IAAI,CAAC,EACZ,CAAC,IAAI,EAAE,IAAI,CAAC,EACZ,CAAC,IAAI,EAAE,IAAI,CAAC,EACZ,CAAC,IAAI,EAAE,IAAI,CAAC,EACZ,CAAC,IAAI,EAAE,IAAI,CAAC,EACZ,CAAC,IAAI,EAAE,IAAI,CAAC,EACZ,CAAC,IAAI,EAAE,IAAI,CAAC,EACZ,CAAC,IAAI,EAAE,IAAI,CAAC,EACZ,CAAC,IAAI,EAAE,IAAI,CAAC,EACZ,CAAC,IAAI,EAAE,IAAI,CAAC,EACZ,CAAC,IAAI,EAAE,KAAK,CAAC,EACb,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,IAAI,CAAC,EACb,CAAC,IAAI,EAAE,IAAI,CAAC,EACZ,CAAC,IAAI,EAAE,IAAI,CAAC,EACZ,CAAC,IAAI,EAAE,IAAI,CAAC,EACZ,CAAC,GAAG,EAAE,IAAI,CAAC,EACX,CAAC,IAAI,EAAE,GAAG,CAAC,EACX,CAAC,IAAI,EAAE,IAAI,CAAC,EACZ,CAAC,IAAI,EAAE,IAAI,CAAC,EACZ,CAAC,IAAI,EAAE,IAAI,CAAC,EACZ,CAAC,IAAI,EAAE,IAAI,CAAC,EACZ,CAAC,IAAI,EAAE,IAAI,CAAC,EACZ,CAAC,IAAI,EAAE,IAAI,CAAC,EACZ,CAAC,IAAI,EAAE,IAAI,CAAC,EACZ,CAAC,IAAI,EAAE,IAAI,CAAC,EACZ,CAAC,IAAI,EAAE,IAAI,CAAC,EACZ,CAAC,IAAI,EAAE,IAAI,CAAC,EACZ,CAAC,IAAI,EAAE,IAAI,CAAC,EACZ,CAAC,IAAI,EAAE,IAAI,CAAC,EACZ,CAAC,IAAI,EAAE,IAAI,CAAC,EACZ,CAAC,IAAI,EAAE,IAAI,CAAC,EACZ,CAAC,IAAI,EAAE,IAAI,CAAC,EACZ,CAAC,IAAI,EAAE,IAAI,CAAC,EACZ,CAAC,IAAI,EAAE,IAAI,CAAC,EACZ,CAAC,IAAI,EAAE,IAAI,CAAC,EACZ,CAAC,IAAI,EAAE,IAAI,CAAC,EACZ,CAAC,IAAI,EAAE,IAAI,CAAC,EACZ,CAAC,IAAI,EAAE,IAAI,CAAC,EACZ,CAAC,IAAI,EAAE,IAAI,CAAC,EACZ,CAAC,IAAI,EAAE,IAAI,CAAC,EACZ,CAAC,IAAI,EAAE,IAAI,CAAC,EACZ,CAAC,IAAI,EAAE,IAAI,CAAC,EACZ,CAAC,IAAI,EAAE,IAAI,CAAC,EACZ,CAAC,IAAI,EAAE,IAAI,CAAC,EACZ,CAAC,IAAI,EAAE,IAAI,CAAC,EACZ,CAAC,IAAI,EAAE,IAAI,CAAC,EACZ,CAAC,IAAI,EAAE,IAAI,CAAC,EACZ,CAAC,IAAI,EAAE,IAAI,CAAC,EACZ,CAAC,IAAI,EAAE,IAAI,CAAC,EACZ,CAAC,IAAI,EAAE,IAAI,CAAC,EACZ,CAAC,IAAI,EAAE,IAAI,CAAC,EACZ,CAAC,IAAI,EAAE,IAAI,CAAC,EACZ,CAAC,IAAI,EAAE,IAAI,CAAC,EACZ,CAAC,IAAI,EAAE,IAAI,CAAC,EACZ,CAAC,IAAI,EAAE,IAAI,CAAC,EACZ,CAAC,IAAI,EAAE,IAAI,CAAC,EACZ,CAAC,IAAI,EAAE,IAAI,CAAC,EACZ,CAAC,IAAI,EAAE,IAAI,CAAC,EACZ,CAAC,IAAI,EAAE,IAAI,CAAC,EACZ,CAAC,IAAI,EAAE,IAAI,CAAC,EACZ,CAAC,IAAI,EAAE,IAAI,CAAC,EACZ,CAAC,IAAI,EAAE,IAAI,CAAC,EACZ,CAAC,IAAI,EAAE,IAAI,CAAC,EACZ,CAAC,IAAI,EAAE,IAAI,CAAC,EACZ,CAAC,IAAI,EAAE,IAAI,CAAC,EACZ,CAAC,IAAI,EAAE,IAAI,CAAC,EACZ,CAAC,IAAI,EAAE,IAAI,CAAC,EACZ,CAAC,IAAI,EAAE,IAAI,CAAC,EACZ,CAAC,IAAI,EAAE,IAAI,CAAC,EACZ,CAAC,IAAI,EAAE,IAAI,CAAC,EACZ,CAAC,IAAI,EAAE,IAAI,CAAC,EACZ,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,KAAK,EAAE,KAAK,CAAC,EACd,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,CACjB,CAAC,CAAA;EACF,EAAA,OAAOY,CAAC,GAAG,CACT,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EACV,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EACf,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,EACjB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,EACjB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,EACjB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,EACnB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,EACnB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EACrB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,EACnB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,EACrB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,EACpB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,EACpB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,EACpB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,EACrB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,EACrB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,EACrB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,EACpB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,EACpB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,EACpB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,EACpB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,EACpB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,EACpB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,EACpB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,M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,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,EACnB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,EACnB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,EACnB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,EACnB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,EAClB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,EACpB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,EACpB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,EACrB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EACtB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CACpB,CAAA;IACD,OAAOC,KAAK,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;EAC9B,EAAA,OAAOC,EAAE,GAAG,CACV,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,EACZ,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EACd,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EACd,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,EACd,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EACtB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CACpB,CAAA;IACD,OAAOC,MAAM,GAAG,CACd,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EACX,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EACd,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,EACd,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,EACnB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAA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,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,EACjB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAClB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,EACnB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,EACnB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,EACnB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,EACnB,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,EAClB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,EACpB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,EACpB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,EACrB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,EACrB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CACpB,CAAA;IACD,OAAOC,EAAE,GAAG,CACV,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,EACjB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAChB,CAAA;EACD,EAAA,OAAOC,MAAM,GAAG,CACd,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAChB,CAAA;EACD,EAAA,OAAOC,EAAE,GAAG,CACV,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EACX,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,EACd,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EACrB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EACrB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EACtB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CACpB,CAAA;EACD,EAAA,OAAOC,KAAK,GAAG,IAAI,CAACD,EAAE,CAAA;IACtB,OAAOE,MAAM,GAAG,CACd,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,EACZ,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EACd,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EACd,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EACf,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,EACd,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,EACjB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CACpB,CAAA;EACD,EAAA,OAAOC,CAAC,GAAG,CACT,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,EACjB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,EACjB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,EACjB,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,EACnB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,EACnB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,EACnB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,EACnB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,EACnB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EACtB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EACtB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,EACpB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,EACrB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,EACpB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CACpB,CAAA;EACD,EAAA,OAAOC,KAAK,GAAG,CACb,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EACd,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAChB,CAAA;EACD,EAAA,OAAOC,EAAE,GAAG,CACV,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,EACjB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,EACnB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,EACnB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,EACnB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,EACnB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,EACnB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,EACnB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,EACnB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,EACnB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,EACnB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,EACnB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,EACnB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,EACnB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,EACnB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,EACnB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EACrB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CACpB,CAAA;EACD,EAAA,OAAOC,EAAE,GAAG,CACV,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAClB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAClB,CAAA;EACD,EAAA,OAAOC,EAAE,GAAG,CACV,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,EACjB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,EACjB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,EACjB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,EACjB,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EACrB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,EACnB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,EACnB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,EACnB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,EACnB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,EACnB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,EACnB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,EACnB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,EACnB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CA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E,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,EACnB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CACpB,CAAA;EACD,EAAA,OAAOC,EAAE,GAAG,CACV,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EACX,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CACpB,CAAA;EACD,EAAA,OAAOC,EAAE,GAAG,CACV,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAClB,CAAA;EACD,EAAA,OAAOC,EAAE,GAAG,CACV,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAClB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,EACjB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EACpB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAA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B,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,EACjB,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,EACjB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,EACjB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,EACjB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,EACjB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,EACnB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EACrB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,EACnB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,EACnB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,EACnB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,EACnB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,EACnB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,EACnB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,EACnB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,EACnB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,C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EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,EACjB,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,EACjB,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,EACjB,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,EACjB,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,EACjB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,EACjB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,EACjB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,EACjB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,EACjB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,EACnB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,EACnB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EACrB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,EACnB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,EACnB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,EACnB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,EACnB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,EACnB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,EACnB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,EACnB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,EACnB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EACpB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,EACnB,CAAC,K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CAAC,EACjB,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,EACjB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,EACjB,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,EACjB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,EACjB,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,EACjB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,EAChB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EACrB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,EACnB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EACpB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EACtB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,EACrB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,EACpB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,EACpB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,EACpB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,EACpB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,EACpB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,EACrB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,EACrB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,EACrB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CA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CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,EAChB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,EACnB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EACpB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EACtB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,EACrB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EACtB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,EACrB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,EACpB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CACpB,CAAA;IACD,OAAOC,CAAC,GAAG,CACT,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EACd,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAClB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAClB,CAAA;IACD,OAAOC,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;IAC7B,OAAOC,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;EAC7B,EAAA,OAAOC,EAAE,GAAG,CACV,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EACd,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAClB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAChB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAClB,CAAA;IACD,OAAOC,KAAK,GAAG,CACb,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CACpB,CAAA;IACD,OAAOC,IAAI,GAAG,CACZ,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAClB,CAAA;IACD,OAAOC,qBAAqB,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAA;IAClD,OAAOC,MAAM,GAAG,CACd,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAA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AAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EACd,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EACd,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EACb,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,EACjB,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,EACjB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAClB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAClB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAClB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,EACjB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EACf,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,EAChB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,EACnB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,EACnB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EACrB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,EACnB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAClB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACjB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,EACpB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EACnB,CAAC,MAAM,EAAE,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"}