cldr-segmentation
Version:
CLDR text segmentation for JavaScript
357 lines (301 loc) • 249 kB
JavaScript
(function (global, factory) {
if (typeof define === "function" && define.amd) {
define('cldr/segmentation', ['exports', 'utfstring'], factory);
} else if (typeof exports !== "undefined") {
factory(exports, require('utfstring'));
} else {
var mod = {
exports: {}
};
factory(mod.exports, global.utfstring);
global.cldrSegmentation = mod.exports;
}
})(this, function (exports, utfstring) {
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
function _toConsumableArray(arr) {
if (Array.isArray(arr)) {
for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {
arr2[i] = arr[i];
}
return arr2;
} else {
return Array.from(arr);
}
}
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError("Cannot call a class as a function");
}
}
var _createClass = function () {
function defineProperties(target, props) {
for (var i = 0; i < props.length; i++) {
var descriptor = props[i];
descriptor.enumerable = descriptor.enumerable || false;
descriptor.configurable = true;
if ("value" in descriptor) descriptor.writable = true;
Object.defineProperty(target, descriptor.key, descriptor);
}
}
return function (Constructor, protoProps, staticProps) {
if (protoProps) defineProperties(Constructor.prototype, protoProps);
if (staticProps) defineProperties(Constructor, staticProps);
return Constructor;
};
}();
if (utfstring == null && typeof window !== 'undefined' && window !== null) {
utfstring = window.UtfString;
}
var BreakIterator = exports.BreakIterator = function () {
function BreakIterator(suppressions) {
_classCallCheck(this, BreakIterator);
this.suppressions = suppressions;
}
_createClass(BreakIterator, [{
key: 'eachSentence',
value: function eachSentence(str, callback) {
var ruleSet = this.ruleSetFor('sentence');
this.eachBoundary(ruleSet, str, callback);
}
}, {
key: 'eachWord',
value: function eachWord(str, callback) {
var ruleSet = this.ruleSetFor('word');
this.eachBoundary(ruleSet, str, callback);
}
}, {
key: 'eachGraphemeCluster',
value: function eachGraphemeCluster(str, callback) {
var ruleSet = this.ruleSetFor('grapheme');
this.eachBoundary(ruleSet, str, callback);
}
}, {
key: 'eachLine',
value: function eachLine(str, callback) {
var ruleSet = this.ruleSetFor('line');
this.eachBoundary(ruleSet, str, callback);
}
// private
}, {
key: 'eachBoundary',
value: function eachBoundary(ruleSet, str, callback) {
var start = 0;
var current = void 0,
next = void 0;
ruleSet.eachBoundary(str, function (boundary) {
// this replicates the same behavior as an each_cons(2) enumerator in Ruby
if (current == undefined) {
current = boundary;
return;
} else if (next == undefined) {
next = boundary;
} else {
current = next;
next = boundary;
}
callback(str.substring(current, next), current, next);
});
}
}, {
key: 'ruleSetFor',
value: function ruleSetFor(boundaryType) {
var ruleSetCache = this.getRuleSetCache();
if (ruleSetCache[boundaryType] === undefined) {
ruleSetCache[boundaryType] = RuleSet.create(boundaryType, this.suppressions);
}
return ruleSetCache[boundaryType];
}
}, {
key: 'getRuleSetCache',
value: function getRuleSetCache() {
if (this.ruleSetCache === undefined) {
this.ruleSetCache = {};
}
return this.ruleSetCache;
}
}]);
return BreakIterator;
}();
;
var CategoryTable = function () {
function CategoryTable(values) {
_classCallCheck(this, CategoryTable);
this.values = values;
}
_createClass(CategoryTable, [{
key: 'get',
value: function get(codepoint) {
return this.find(codepoint)[2];
}
}, {
key: 'find',
value: function find(codepoint) {
var lo = 0,
hi = this.values.length;
while (lo <= hi) {
var mid = Math.floor((hi + lo) / 2);
var current = this.values[mid];
if (codepoint < current[0]) {
hi = mid - 1;
} else if (codepoint > current[1]) {
lo = mid + 1;
} else {
return current;
}
}
// we should realistically never get here
return null;
}
}]);
return CategoryTable;
}();
;
var Cursor = function () {
function Cursor(text) {
_classCallCheck(this, Cursor);
this.text = text;
this.length = text.length;
this.codepoints = utfstring.stringToCodePoints(text);
this.reset();
}
_createClass(Cursor, [{
key: 'advance',
value: function advance() {
var amount = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;
for (var i = 0; i < amount; i++) {
var cp = this.getCodePoint();
if (cp > 0xFFFF) {
this.actualPosition += 2;
} else {
this.actualPosition++;
}
this.logicalPosition++;
}
}
}, {
key: 'retreat',
value: function retreat() {
var amount = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;
for (var i = 0; i < amount; i++) {
this.logicalPosition--;
var cp = this.getCodePoint();
if (cp > 0xFFFF) {
this.actualPosition -= 2;
} else {
this.actualPosition--;
}
}
}
}, {
key: 'reset',
value: function reset() {
this.logicalPosition = 0;
this.actualPosition = 0;
}
}, {
key: 'isEos',
value: function isEos() {
return this.logicalPosition >= this.codepoints.length;
}
}, {
key: 'getCodePoint',
value: function getCodePoint() {
var pos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.logicalPosition;
return this.codepoints[pos];
}
}, {
key: 'slice',
value: function slice(start, finish) {
return utfstring.codePointsToString(this.codepoints.slice(start, finish));
}
}]);
return Cursor;
}();
;
var Metadata = function () {
function Metadata(values) {
_classCallCheck(this, Metadata);
this.values = values;
}
_createClass(Metadata, [{
key: 'getCategoryCount',
value: function getCategoryCount() {
return this.values.categoryCount;
}
}]);
return Metadata;
}();
;
var NullSuppressions = exports.NullSuppressions = function () {
function NullSuppressions() {
_classCallCheck(this, NullSuppressions);
if (this.instance) {
return this.instance;
}
this.instance = this;
}
_createClass(NullSuppressions, [{
key: 'shouldBreak',
value: function shouldBreak(_cursor) {
return true;
}
}]);
return NullSuppressions;
}();
;
var RuleSet = exports.RuleSet = function () {
_createClass(RuleSet, null, [{
key: 'create',
value: function create(boundaryType, suppressions) {
return new RuleSet(StateMachine.getInstance(boundaryType), suppressions);
}
}]);
function RuleSet(stateMachine, suppressions) {
_classCallCheck(this, RuleSet);
this.stateMachine = stateMachine;
this.suppressions = suppressions || new NullSuppressions();
}
_createClass(RuleSet, [{
key: 'eachBoundary',
value: function eachBoundary(str, callback) {
var cursor = new Cursor(str);
// Let the state machine find the first boundary for the line
// boundary type. This helps pass nearly all the Unicode
// segmentation tests, so it must be the right thing to do.
// Normally the first boundary is the implicit start of text
// boundary, but potentially not for the line rules?
if (this.stateMachine.boundaryType !== 'line') {
callback(0);
}
while (!cursor.isEos()) {
this.stateMachine.handleNext(cursor);
if (cursor.isEos() || this.suppressions.shouldBreak(cursor)) {
callback(cursor.actualPosition);
}
}
}
}, {
key: 'getBoundaryType',
value: function getBoundaryType() {
return this.stateMachine.boundaryType;
}
}]);
return RuleSet;
}();
;RuleSet.grapheme = {
forwardTable: {
flags: 1,
table: JSON.parse('[\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 3, 4, 5, 4, 4, 6,\n 4, 7, 4, 8, 9, 10, 4, 9, 10, 11, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0,\n 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 0, 4, 0, 4, 0, 0,\n 0, 4, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 0,\n 4, 0, 5, 0, 0, 0, 12, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 4, 5, 4, 4, 6, 4, 7, 4, 8, 9, 10, 4, 9, 10, 11, -1, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 7, 4, 0, 4, 0, 13, 0, 0, 0, 7, 0, 0, 0,\n -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 0, 4, 0, 4, 8, 9,\n 0, 4, 9, 10, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 0,\n 4, 0, 4, 0, 9, 10, 4, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 4, 4, 0, 4, 0, 4, 0, 0, 10, 4, 0, 0, 0, -1, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 4, 4, 0, 4, 0, 4, 0, 0, 0, 4, 0, 0, 14,\n -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 4, 4, 0, 4, 0, 4, 0, 0,\n 0, 4, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 0,\n 4, 7, 13, 0, 0, 0, 13, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 4, 4, 0, 4, 0, 4, 0, 0, 0, 4, 0, 0, 15, 1, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0\n ]')
},
categoryTable: JSON.parse('[\n [0, 9, 3], [10, 10, 4], [11, 12, 3], [13, 13, 5],\n [14, 31, 3], [32, 126, 6], [127, 159, 3], [160, 168, 6],\n [169, 169, 7], [170, 172, 6], [173, 173, 3], [174, 174, 7],\n [175, 767, 6], [768, 846, 8], [847, 847, 9], [848, 879, 8],\n [880, 1154, 6], [1155, 1159, 8], [1160, 1161, 9], [1162, 1424, 6],\n [1425, 1469, 8], [1470, 1470, 6], [1471, 1471, 8], [1472, 1472, 6],\n [1473, 1474, 8], [1475, 1475, 6], [1476, 1477, 8], [1478, 1478, 6],\n [1479, 1479, 8], [1480, 1535, 6], [1536, 1541, 10], [1542, 1551, 6],\n [1552, 1562, 8], [1563, 1563, 6], [1564, 1564, 3], [1565, 1610, 6],\n [1611, 1631, 8], [1632, 1647, 6], [1648, 1648, 8], [1649, 1749, 6],\n [1750, 1756, 8], [1757, 1757, 10], [1758, 1758, 6], [1759, 1764, 8],\n [1765, 1766, 6], [1767, 1768, 8], [1769, 1769, 6], [1770, 1773, 8],\n [1774, 1806, 6], [1807, 1807, 10], [1808, 1808, 6], [1809, 1809, 8],\n [1810, 1839, 6], [1840, 1866, 8], [1867, 1957, 6], [1958, 1968, 9],\n [1969, 2026, 6], [2027, 2035, 8], [2036, 2044, 6], [2045, 2045, 8],\n [2046, 2069, 6], [2070, 2073, 8], [2074, 2074, 6], [2075, 2083, 8],\n [2084, 2084, 6], [2085, 2087, 8], [2088, 2088, 6], [2089, 2093, 8],\n [2094, 2136, 6], [2137, 2139, 8], [2140, 2258, 6], [2259, 2273, 8],\n [2274, 2274, 10], [2275, 2303, 8], [2304, 2306, 9], [2307, 2307, 11],\n [2308, 2324, 6], [2325, 2361, 12], [2362, 2362, 9], [2363, 2363, 11],\n [2364, 2364, 8], [2365, 2365, 6], [2366, 2368, 11], [2369, 2376, 9],\n [2377, 2380, 11], [2381, 2381, 13], [2382, 2383, 11], [2384, 2384, 6],\n [2385, 2388, 8], [2389, 2391, 9], [2392, 2399, 12], [2400, 2401, 6],\n [2402, 2403, 9], [2404, 2423, 6], [2424, 2431, 12], [2432, 2432, 6],\n [2433, 2433, 9], [2434, 2435, 11], [2436, 2452, 6], [2453, 2472, 12],\n [2473, 2473, 6], [2474, 2480, 12], [2481, 2481, 6], [2482, 2482, 12],\n [2483, 2485, 6], [2486, 2489, 12], [2490, 2491, 6], [2492, 2492, 8],\n [2493, 2493, 6], [2494, 2494, 9], [2495, 2496, 11], [2497, 2500, 9],\n [2501, 2502, 6], [2503, 2504, 11], [2505, 2506, 6], [2507, 2508, 11],\n [2509, 2509, 13], [2510, 2518, 6], [2519, 2519, 9], [2520, 2523, 6],\n [2524, 2525, 12], [2526, 2526, 6], [2527, 2527, 12], [2528, 2529, 6],\n [2530, 2531, 9], [2532, 2543, 6], [2544, 2545, 12], [2546, 2557, 6],\n [2558, 2558, 8], [2559, 2560, 6], [2561, 2562, 9], [2563, 2563, 11],\n [2564, 2619, 6], [2620, 2620, 8], [2621, 2621, 6], [2622, 2624, 11],\n [2625, 2626, 9], [2627, 2630, 6], [2631, 2632, 9], [2633, 2634, 6],\n [2635, 2636, 9], [2637, 2637, 8], [2638, 2640, 6], [2641, 2641, 9],\n [2642, 2671, 6], [2672, 2673, 9], [2674, 2676, 6], [2677, 2677, 9],\n [2678, 2688, 6], [2689, 2690, 9], [2691, 2691, 11], [2692, 2708, 6],\n [2709, 2728, 12], [2729, 2729, 6], [2730, 2736, 12], [2737, 2737, 6],\n [2738, 2739, 12], [2740, 2740, 6], [2741, 2745, 12], [2746, 2747, 6],\n [2748, 2748, 8], [2749, 2749, 6], [2750, 2752, 11], [2753, 2757, 9],\n [2758, 2758, 6], [2759, 2760, 9], [2761, 2761, 11], [2762, 2762, 6],\n [2763, 2764, 11], [2765, 2765, 13], [2766, 2785, 6], [2786, 2787, 9],\n [2788, 2808, 6], [2809, 2809, 12], [2810, 2815, 9], [2816, 2816, 6],\n [2817, 2817, 9], [2818, 2819, 11], [2820, 2836, 6], [2837, 2856, 12],\n [2857, 2857, 6], [2858, 2864, 12], [2865, 2865, 6], [2866, 2867, 12],\n [2868, 2868, 6], [2869, 2873, 12], [2874, 2875, 6], [2876, 2876, 8],\n [2877, 2877, 6], [2878, 2879, 9], [2880, 2880, 11], [2881, 2884, 9],\n [2885, 2886, 6], [2887, 2888, 11], [2889, 2890, 6], [2891, 2892, 11],\n [2893, 2893, 13], [2894, 2900, 6], [2901, 2903, 9], [2904, 2907, 6],\n [2908, 2909, 12], [2910, 2910, 6], [2911, 2911, 12], [2912, 2913, 6],\n [2914, 2915, 9], [2916, 2928, 6], [2929, 2929, 12], [2930, 2945, 6],\n [2946, 2946, 9], [2947, 3005, 6], [3006, 3006, 9], [3007, 3007, 11],\n [3008, 3008, 9], [3009, 3010, 11], [3011, 3013, 6], [3014, 3016, 11],\n [3017, 3017, 6], [3018, 3020, 11], [3021, 3021, 8], [3022, 3030, 6],\n [3031, 3031, 9], [3032, 3071, 6], [3072, 3072, 9], [3073, 3075, 11],\n [3076, 3076, 9], [3077, 3092, 6], [3093, 3112, 12], [3113, 3113, 6],\n [3114, 3129, 12], [3130, 3133, 6], [3134, 3136, 9], [3137, 3140, 11],\n [3141, 3141, 6], [3142, 3144, 9], [3145, 3145, 6], [3146, 3148, 9],\n [3149, 3149, 13], [3150, 3156, 6], [3157, 3158, 8], [3159, 3159, 6],\n [3160, 3162, 12], [3163, 3169, 6], [3170, 3171, 9], [3172, 3200, 6],\n [3201, 3201, 9], [3202, 3203, 11], [3204, 3259, 6], [3260, 3260, 8],\n [3261, 3261, 6], [3262, 3262, 11], [3263, 3263, 9], [3264, 3265, 11],\n [3266, 3266, 9], [3267, 3268, 11], [3269, 3269, 6], [3270, 3270, 9],\n [3271, 3272, 11], [3273, 3273, 6], [3274, 3275, 11], [3276, 3276, 9],\n [3277, 3277, 8], [3278, 3284, 6], [3285, 3286, 9], [3287, 3297, 6],\n [3298, 3299, 9], [3300, 3327, 6], [3328, 3329, 9], [3330, 3331, 11],\n [3332, 3348, 6], [3349, 3386, 12], [3387, 3388, 8], [3389, 3389, 6],\n [3390, 3390, 9], [3391, 3392, 11], [3393, 3396, 9], [3397, 3397, 6],\n [3398, 3400, 11], [3401, 3401, 6], [3402, 3404, 11], [3405, 3405, 13],\n [3406, 3406, 10], [3407, 3414, 6], [3415, 3415, 9], [3416, 3425, 6],\n [3426, 3427, 9], [3428, 3456, 6], [3457, 3457, 9], [3458, 3459, 11],\n [3460, 3529, 6], [3530, 3530, 8], [3531, 3534, 6], [3535, 3535, 9],\n [3536, 3537, 11], [3538, 3540, 9], [3541, 3541, 6], [3542, 3542, 9],\n [3543, 3543, 6], [3544, 3550, 11], [3551, 3551, 9], [3552, 3569, 6],\n [3570, 3571, 11], [3572, 3632, 6], [3633, 3633, 9], [3634, 3634, 6],\n [3635, 3635, 11], [3636, 3639, 9], [3640, 3642, 8], [3643, 3654, 6],\n [3655, 3655, 9], [3656, 3659, 8], [3660, 3662, 9], [3663, 3760, 6],\n [3761, 3761, 9], [3762, 3762, 6], [3763, 3763, 11], [3764, 3767, 9],\n [3768, 3770, 8], [3771, 3772, 9], [3773, 3783, 6], [3784, 3787, 8],\n [3788, 3789, 9], [3790, 3863, 6], [3864, 3865, 8], [3866, 3892, 6],\n [3893, 3893, 8], [3894, 3894, 6], [3895, 3895, 8], [3896, 3896, 6],\n [3897, 3897, 8], [3898, 3901, 6], [3902, 3903, 11], [3904, 3952, 6],\n [3953, 3954, 8], [3955, 3955, 9], [3956, 3956, 8], [3957, 3961, 9],\n [3962, 3965, 8], [3966, 3966, 9], [3967, 3967, 11], [3968, 3968, 8],\n [3969, 3969, 9], [3970, 3972, 8], [3973, 3973, 6], [3974, 3975, 8],\n [3976, 3980, 6], [3981, 3991, 9], [3992, 3992, 6], [3993, 4028, 9],\n [4029, 4037, 6], [4038, 4038, 8], [4039, 4140, 6], [4141, 4144, 9],\n [4145, 4145, 11], [4146, 4150, 9], [4151, 4151, 8], [4152, 4152, 6],\n [4153, 4154, 8], [4155, 4156, 11], [4157, 4158, 9], [4159, 4181, 6],\n [4182, 4183, 11], [4184, 4185, 9], [4186, 4189, 6], [4190, 4192, 9],\n [4193, 4208, 6], [4209, 4212, 9], [4213, 4225, 6], [4226, 4226, 9],\n [4227, 4227, 6], [4228, 4228, 11], [4229, 4230, 9], [4231, 4236, 6],\n [4237, 4237, 8], [4238, 4252, 6], [4253, 4253, 9], [4254, 4351, 6],\n [4352, 4447, 14], [4448, 4519, 15], [4520, 4607, 16], [4608, 4956, 6],\n [4957, 4959, 8], [4960, 5905, 6], [5906, 5907, 9], [5908, 5908, 8],\n [5909, 5937, 6], [5938, 5939, 9], [5940, 5940, 8], [5941, 5969, 6],\n [5970, 5971, 9], [5972, 6001, 6], [6002, 6003, 9], [6004, 6067, 6],\n [6068, 6069, 9], [6070, 6070, 11], [6071, 6077, 9], [6078, 6085, 11],\n [6086, 6086, 9], [6087, 6088, 11], [6089, 6097, 9], [6098, 6098, 8],\n [6099, 6099, 9], [6100, 6108, 6], [6109, 6109, 8], [6110, 6154, 6],\n [6155, 6157, 9], [6158, 6158, 3], [6159, 6276, 6], [6277, 6278, 9],\n [6279, 6312, 6], [6313, 6313, 8], [6314, 6431, 6], [6432, 6434, 9],\n [6435, 6438, 11], [6439, 6440, 9], [6441, 6443, 11], [6444, 6447, 6],\n [6448, 6449, 11], [6450, 6450, 9], [6451, 6456, 11], [6457, 6459, 8],\n [6460, 6678, 6], [6679, 6680, 8], [6681, 6682, 11], [6683, 6683, 9],\n [6684, 6740, 6], [6741, 6741, 11], [6742, 6742, 9], [6743, 6743, 11],\n [6744, 6750, 9], [6751, 6751, 6], [6752, 6752, 8], [6753, 6753, 6],\n [6754, 6754, 9], [6755, 6756, 6], [6757, 6764, 9], [6765, 6770, 11],\n [6771, 6772, 9], [6773, 6780, 8], [6781, 6782, 6], [6783, 6783, 8],\n [6784, 6831, 6], [6832, 6845, 8], [6846, 6846, 9], [6847, 6848, 8],\n [6849, 6911, 6], [6912, 6915, 9], [6916, 6916, 11], [6917, 6963, 6],\n [6964, 6964, 8], [6965, 6970, 9], [6971, 6971, 11], [6972, 6972, 9],\n [6973, 6977, 11], [6978, 6978, 9], [6979, 6980, 11], [6981, 7018, 6],\n [7019, 7027, 8], [7028, 7039, 6], [7040, 7041, 9], [7042, 7042, 11],\n [7043, 7072, 6], [7073, 7073, 11], [7074, 7077, 9], [7078, 7079, 11],\n [7080, 7081, 9], [7082, 7082, 11], [7083, 7083, 8], [7084, 7085, 9],\n [7086, 7141, 6], [7142, 7142, 8], [7143, 7143, 11], [7144, 7145, 9],\n [7146, 7148, 11], [7149, 7149, 9], [7150, 7150, 11], [7151, 7153, 9],\n [7154, 7155, 11], [7156, 7203, 6], [7204, 7211, 11], [7212, 7219, 9],\n [7220, 7221, 11], [7222, 7222, 9], [7223, 7223, 8], [7224, 7375, 6],\n [7376, 7378, 8], [7379, 7379, 6], [7380, 7392, 8], [7393, 7393, 11],\n [7394, 7400, 8], [7401, 7404, 6], [7405, 7405, 8], [7406, 7411, 6],\n [7412, 7412, 8], [7413, 7414, 6], [7415, 7415, 11], [7416, 7417, 8],\n [7418, 7615, 6], [7616, 7673, 8], [7674, 7674, 6], [7675, 7679, 8],\n [7680, 8202, 6], [8203, 8203, 3], [8204, 8204, 9], [8205, 8205, 17],\n [8206, 8207, 3], [8208, 8231, 6], [8232, 8238, 3], [8239, 8251, 6],\n [8252, 8252, 7], [8253, 8264, 6], [8265, 8265, 7], [8266, 8287, 6],\n [8288, 8303, 3], [8304, 8399, 6], [8400, 8412, 8], [8413, 8416, 9],\n [8417, 8417, 8], [8418, 8420, 9], [8421, 8432, 8], [8433, 8481, 6],\n [8482, 8482, 7], [8483, 8504, 6], [8505, 8505, 7], [8506, 8595, 6],\n [8596, 8601, 7], [8602, 8616, 6], [8617, 8618, 7], [8619, 8985, 6],\n [8986, 8987, 7], [8988, 8999, 6], [9000, 9000, 7], [9001, 9095, 6],\n [9096, 9096, 7], [9097, 9166, 6], [9167, 9167, 7], [9168, 9192, 6],\n [9193, 9203, 7], [9204, 9207, 6], [9208, 9210, 7], [9211, 9409, 6],\n [9410, 9410, 7], [9411, 9641, 6], [9642, 9643, 7], [9644, 9653, 6],\n [9654, 9654, 7], [9655, 9663, 6], [9664, 9664, 7], [9665, 9722, 6],\n [9723, 9726, 7], [9727, 9727, 6], [9728, 9733, 7], [9734, 9734, 6],\n [9735, 9746, 7], [9747, 9747, 6], [9748, 9861, 7], [9862, 9871, 6],\n [9872, 9989, 7], [9990, 9991, 6], [9992, 10002, 7], [10003, 10003, 6],\n [10004, 10004, 7], [10005, 10005, 6], [10006, 10006, 7], [10007, 10012, 6],\n [10013, 10013, 7], [10014, 10016, 6], [10017, 10017, 7], [10018, 10023, 6],\n [10024, 10024, 7], [10025, 10034, 6], [10035, 10036, 7], [10037, 10051, 6],\n [10052, 10052, 7], [10053, 10054, 6], [10055, 10055, 7], [10056, 10059, 6],\n [10060, 10060, 7], [10061, 10061, 6], [10062, 10062, 7], [10063, 10066, 6],\n [10067, 10069, 7], [10070, 10070, 6], [10071, 10071, 7], [10072, 10082, 6],\n [10083, 10087, 7], [10088, 10132, 6], [10133, 10135, 7], [10136, 10144, 6],\n [10145, 10145, 7], [10146, 10159, 6], [10160, 10160, 7], [10161, 10174, 6],\n [10175, 10175, 7], [10176, 10547, 6], [10548, 10549, 7], [10550, 11012, 6],\n [11013, 11015, 7], [11016, 11034, 6], [11035, 11036, 7], [11037, 11087, 6],\n [11088, 11088, 7], [11089, 11092, 6], [11093, 11093, 7], [11094, 11502, 6],\n [11503, 11505, 8], [11506, 11646, 6], [11647, 11647, 8], [11648, 11743, 6],\n [11744, 11775, 8], [11776, 12329, 6], [12330, 12335, 8], [12336, 12336, 7],\n [12337, 12348, 6], [12349, 12349, 7], [12350, 12440, 6], [12441, 12442, 8],\n [12443, 12950, 6], [12951, 12951, 7], [12952, 12952, 6], [12953, 12953, 7],\n [12954, 42606, 6], [42607, 42607, 8], [42608, 42610, 9], [42611, 42611, 6],\n [42612, 42621, 8], [42622, 42653, 6], [42654, 42655, 8], [42656, 42735, 6],\n [42736, 42737, 8], [42738, 43009, 6], [43010, 43010, 9], [43011, 43013, 6],\n [43014, 43014, 8], [43015, 43018, 6], [43019, 43019, 9], [43020, 43042, 6],\n [43043, 43044, 11], [43045, 43046, 9], [43047, 43047, 11], [43048, 43051, 6],\n [43052, 43052, 8], [43053, 43135, 6], [43136, 43137, 11], [43138, 43187, 6],\n [43188, 43203, 11], [43204, 43204, 8], [43205, 43205, 9], [43206, 43231, 6],\n [43232, 43249, 8], [43250, 43262, 6], [43263, 43263, 9], [43264, 43301, 6],\n [43302, 43306, 9], [43307, 43309, 8], [43310, 43334, 6], [43335, 43345, 9],\n [43346, 43347, 11], [43348, 43359, 6], [43360, 43388, 14], [43389, 43391, 6],\n [43392, 43394, 9], [43395, 43395, 11], [43396, 43442, 6], [43443, 43443, 8],\n [43444, 43445, 11], [43446, 43449, 9], [43450, 43451, 11], [43452, 43453, 9],\n [43454, 43456, 11], [43457, 43492, 6], [43493, 43493, 9], [43494, 43560, 6],\n [43561, 43566, 9], [43567, 43568, 11], [43569, 43570, 9], [43571, 43572, 11],\n [43573, 43574, 9], [43575, 43586, 6], [43587, 43587, 9], [43588, 43595, 6],\n [43596, 43596, 9], [43597, 43597, 11], [43598, 43643, 6], [43644, 43644, 9],\n [43645, 43695, 6], [43696, 43696, 8], [43697, 43697, 6], [43698, 43700, 8],\n [43701, 43702, 6], [43703, 43704, 8], [43705, 43709, 6], [43710, 43711, 8],\n [43712, 43712, 6], [43713, 43713, 8], [43714, 43754, 6], [43755, 43755, 11],\n [43756, 43757, 9], [43758, 43759, 11], [43760, 43764, 6], [43765, 43765, 11],\n [43766, 43766, 8], [43767, 44002, 6], [44003, 44004, 11], [44005, 44005, 9],\n [44006, 44007, 11], [44008, 44008, 9], [44009, 44010, 11], [44011, 44011, 6],\n [44012, 44012, 11], [44013, 44013, 8], [44014, 44031, 6], [44032, 44032, 18],\n [44033, 44059, 19], [44060, 44060, 18], [44061, 44087, 19], [44088, 44088, 18],\n [44089, 44115, 19], [44116, 44116, 18], [44117, 44143, 19], [44144, 44144, 18],\n [44145, 44171, 19], [44172, 44172, 18], [44173, 44199, 19], [44200, 44200, 18],\n [44201, 44227, 19], [44228, 44228, 18], [44229, 44255, 19], [44256, 44256, 18],\n [44257, 44283, 19], [44284, 44284, 18], [44285, 44311, 19], [44312, 44312, 18],\n [44313, 44339, 19], [44340, 44340, 18], [44341, 44367, 19], [44368, 44368, 18],\n [44369, 44395, 19], [44396, 44396, 18], [44397, 44423, 19], [44424, 44424, 18],\n [44425, 44451, 19], [44452, 44452, 18], [44453, 44479, 19], [44480, 44480, 18],\n [44481, 44507, 19], [44508, 44508, 18], [44509, 44535, 19], [44536, 44536, 18],\n [44537, 44563, 19], [44564, 44564, 18], [44565, 44591, 19], [44592, 44592, 18],\n [44593, 44619, 19], [44620, 44620, 18], [44621, 44647, 19], [44648, 44648, 18],\n [44649, 44675, 19], [44676, 44676, 18], [44677, 44703, 19], [44704, 44704, 18],\n [44705, 44731, 19], [44732, 44732, 18], [44733, 44759, 19], [44760, 44760, 18],\n [44761, 44787, 19], [44788, 44788, 18], [44789, 44815, 19], [44816, 44816, 18],\n [44817, 44843, 19], [44844, 44844, 18], [44845, 44871, 19], [44872, 44872, 18],\n [44873, 44899, 19], [44900, 44900, 18], [44901, 44927, 19], [44928, 44928, 18],\n [44929, 44955, 19], [44956, 44956, 18], [44957, 44983, 19], [44984, 44984, 18],\n [44985, 45011, 19], [45012, 45012, 18], [45013, 45039, 19], [45040, 45040, 18],\n [45041, 45067, 19], [45068, 45068, 18], [45069, 45095, 19], [45096, 45096, 18],\n [45097, 45123, 19], [45124, 45124, 18], [45125, 45151, 19], [45152, 45152, 18],\n [45153, 45179, 19], [45180, 45180, 18], [45181, 45207, 19], [45208, 45208, 18],\n [45209, 45235, 19], [45236, 45236, 18], [45237, 45263, 19], [45264, 45264, 18],\n [45265, 45291, 19], [45292, 45292, 18], [45293, 45319, 19], [45320, 45320, 18],\n [45321, 45347, 19], [45348, 45348, 18], [45349, 45375, 19], [45376, 45376, 18],\n [45377, 45403, 19], [45404, 45404, 18], [45405, 45431, 19], [45432, 45432, 18],\n [45433, 45459, 19], [45460, 45460, 18], [45461, 45487, 19], [45488, 45488, 18],\n [45489, 45515, 19], [45516, 45516, 18], [45517, 45543, 19], [45544, 45544, 18],\n [45545, 45571, 19], [45572, 45572, 18], [45573, 45599, 19], [45600, 45600, 18],\n [45601, 45627, 19], [45628, 45628, 18], [45629, 45655, 19], [45656, 45656, 18],\n [45657, 45683, 19], [45684, 45684, 18], [45685, 45711, 19], [45712, 45712, 18],\n [45713, 45739, 19], [45740, 45740, 18], [45741, 45767, 19], [45768, 45768, 18],\n [45769, 45795, 19], [45796, 45796, 18], [45797, 45823, 19], [45824, 45824, 18],\n [45825, 45851, 19], [45852, 45852, 18], [45853, 45879, 19], [45880, 45880, 18],\n [45881, 45907, 19], [45908, 45908, 18], [45909, 45935, 19], [45936, 45936, 18],\n [45937, 45963, 19], [45964, 45964, 18], [45965, 45991, 19], [45992, 45992, 18],\n [45993, 46019, 19], [46020, 46020, 18], [46021, 46047, 19], [46048, 46048, 18],\n [46049, 46075, 19], [46076, 46076, 18], [46077, 46103, 19], [46104, 46104, 18],\n [46105, 46131, 19], [46132, 46132, 18], [46133, 46159, 19], [46160, 46160, 18],\n [46161, 46187, 19], [46188, 46188, 18], [46189, 46215, 19], [46216, 46216, 18],\n [46217, 46243, 19], [46244, 46244, 18], [46245, 46271, 19], [46272, 46272, 18],\n [46273, 46299, 19], [46300, 46300, 18], [46301, 46327, 19], [46328, 46328, 18],\n [46329, 46355, 19], [46356, 46356, 18], [46357, 46383, 19], [46384, 46384, 18],\n [46385, 46411, 19], [46412, 46412, 18], [46413, 46439, 19], [46440, 46440, 18],\n [46441, 46467, 19], [46468, 46468, 18], [46469, 46495, 19], [46496, 46496, 18],\n [46497, 46523, 19], [46524, 46524, 18], [46525, 46551, 19], [46552, 46552, 18],\n [46553, 46579, 19], [46580, 46580, 18], [46581, 46607, 19], [46608, 46608, 18],\n [46609, 46635, 19], [46636, 46636, 18], [46637, 46663, 19], [46664, 46664, 18],\n [46665, 46691, 19], [46692, 46692, 18], [46693, 46719, 19], [46720, 46720, 18],\n [46721, 46747, 19], [46748, 46748, 18], [46749, 46775, 19], [46776, 46776, 18],\n [46777, 46803, 19], [46804, 46804, 18], [46805, 46831, 19], [46832, 46832, 18],\n [46833, 46859, 19], [46860, 46860, 18], [46861, 46887, 19], [46888, 46888, 18],\n [46889, 46915, 19], [46916, 46916, 18], [46917, 46943, 19], [46944, 46944, 18],\n [46945, 46971, 19], [46972, 46972, 18], [46973, 46999, 19], [47000, 47000, 18],\n [47001, 47027, 19], [47028, 47028, 18], [47029, 47055, 19], [47056, 47056, 18],\n [47057, 47083, 19], [47084, 47084, 18], [47085, 47111, 19], [47112, 47112, 18],\n [47113, 47139, 19], [47140, 47140, 18], [47141, 47167, 19], [47168, 47168, 18],\n [47169, 47195, 19], [47196, 47196, 18], [47197, 47223, 19], [47224, 47224, 18],\n [47225, 47251, 19], [47252, 47252, 18], [47253, 47279, 19], [47280, 47280, 18],\n [47281, 47307, 19], [47308, 47308, 18], [47309, 47335, 19], [47336, 47336, 18],\n [47337, 47363, 19], [47364, 47364, 18], [47365, 47391, 19], [47392, 47392, 18],\n [47393, 47419, 19], [47420, 47420, 18], [47421, 47447, 19], [47448, 47448, 18],\n [47449, 47475, 19], [47476, 47476, 18], [47477, 47503, 19], [47504, 47504, 18],\n [47505, 47531, 19], [47532, 47532, 18], [47533, 47559, 19], [47560, 47560, 18],\n [47561, 47587, 19], [47588, 47588, 18], [47589, 47615, 19], [47616, 47616, 18],\n [47617, 47643, 19], [47644, 47644, 18], [47645, 47671, 19], [47672, 47672, 18],\n [47673, 47699, 19], [47700, 47700, 18], [47701, 47727, 19], [47728, 47728, 18],\n [47729, 47755, 19], [47756, 47756, 18], [47757, 47783, 19], [47784, 47784, 18],\n [47785, 47811, 19], [47812, 47812, 18], [47813, 47839, 19], [47840, 47840, 18],\n [47841, 47867, 19], [47868, 47868, 18], [47869, 47895, 19], [47896, 47896, 18],\n [47897, 47923, 19], [47924, 47924, 18], [47925, 47951, 19], [47952, 47952, 18],\n [47953, 47979, 19], [47980, 47980, 18], [47981, 48007, 19], [48008, 48008, 18],\n [48009, 48035, 19], [48036, 48036, 18], [48037, 48063, 19], [48064, 48064, 18],\n [48065, 48091, 19], [48092, 48092, 18], [48093, 48119, 19], [48120, 48120, 18],\n [48121, 48147, 19], [48148, 48148, 18], [48149, 48175, 19], [48176, 48176, 18],\n [48177, 48203, 19], [48204, 48204, 18], [48205, 48231, 19], [48232, 48232, 18],\n [48233, 48259, 19], [48260, 48260, 18], [48261, 48287, 19], [48288, 48288, 18],\n [48289, 48315, 19], [48316, 48316, 18], [48317, 48343, 19], [48344, 48344, 18],\n [48345, 48371, 19], [48372, 48372, 18], [48373, 48399, 19], [48400, 48400, 18],\n [48401, 48427, 19], [48428, 48428, 18], [48429, 48455, 19], [48456, 48456, 18],\n [48457, 48483, 19], [48484, 48484, 18], [48485, 48511, 19], [48512, 48512, 18],\n [48513, 48539, 19], [48540, 48540, 18], [48541, 48567, 19], [48568, 48568, 18],\n [48569, 48595, 19], [48596, 48596, 18], [48597, 48623, 19], [48624, 48624, 18],\n [48625, 48651, 19], [48652, 48652, 18], [48653, 48679, 19], [48680, 48680, 18],\n [48681, 48707, 19], [48708, 48708, 18], [48709, 48735, 19], [48736, 48736, 18],\n [48737, 48763, 19], [48764, 48764, 18], [48765, 48791, 19], [48792, 48792, 18],\n [48793, 48819, 19], [48820, 48820, 18], [48821, 48847, 19], [48848, 48848, 18],\n [48849, 48875, 19], [48876, 48876, 18], [48877, 48903, 19], [48904, 48904, 18],\n [48905, 48931, 19], [48932, 48932, 18], [48933, 48959, 19], [48960, 48960, 18],\n [48961, 48987, 19], [48988, 48988, 18], [48989, 49015, 19], [49016, 49016, 18],\n [49017, 49043, 19], [49044, 49044, 18], [49045, 49071, 19], [49072, 49072, 18],\n [49073, 49099, 19], [49100, 49100, 18], [49101, 49127, 19], [49128, 49128, 18],\n [49129, 49155, 19], [49156, 49156, 18], [49157, 49183, 19], [49184, 49184, 18],\n [49185, 49211, 19], [49212, 49212, 18], [49213, 49239, 19], [49240, 49240, 18],\n [49241, 49267, 19], [49268, 49268, 18], [49269, 49295, 19], [49296, 49296, 18],\n [49297, 49323, 19], [49324, 49324, 18], [49325, 49351, 19], [49352, 49352, 18],\n [49353, 49379, 19], [49380, 49380, 18], [49381, 49407, 19], [49408, 49408, 18],\n [49409, 49435, 19], [49436, 49436, 18], [49437, 49463, 19], [49464, 49464, 18],\n [49465, 49491, 19], [49492, 49492, 18], [49493, 49519, 19], [49520, 49520, 18],\n [49521, 49547, 19], [49548, 49548, 18], [49549, 49575, 19], [49576, 49576, 18],\n [49577, 49603, 19], [49604, 49604, 18], [49605, 49631, 19], [49632, 49632, 18],\n [49633, 49659, 19], [49660, 49660, 18], [49661, 49687, 19], [49688, 49688, 18],\n [49689, 49715, 19], [49716, 49716, 18], [49717, 49743, 19], [49744, 49744, 18],\n [49745, 49771, 19], [49772, 49772, 18], [49773, 49799, 19], [49800, 49800, 18],\n [49801, 49827, 19], [49828, 49828, 18], [49829, 49855, 19], [49856, 49856, 18],\n [49857, 49883, 19], [49884, 49884, 18], [49885, 49911, 19], [49912, 49912, 18],\n [49913, 49939, 19], [49940, 49940, 18], [49941, 49967, 19], [49968, 49968, 18],\n [49969, 49995, 19], [49996, 49996, 18], [49997, 50023, 19], [50024, 50024, 18],\n [50025, 50051, 19], [50052, 50052, 18], [50053, 50079, 19], [50080, 50080, 18],\n [50081, 50107, 19], [50108, 50108, 18], [50109, 50135, 19], [50136, 50136, 18],\n [50137, 50163, 19], [50164, 50164, 18], [50165, 50191, 19], [50192, 50192, 18],\n [50193, 50219, 19], [50220, 50220, 18], [50221, 50247, 19], [50248, 50248, 18],\n [50249, 50275, 19], [50276, 50276, 18], [50277, 50303, 19], [50304, 50304, 18],\n [50305, 50331, 19], [50332, 50332, 18], [50333, 50359, 19], [50360, 50360, 18],\n [50361, 50387, 19], [50388, 50388, 18], [50389, 50415, 19], [50416, 50416, 18],\n [50417, 50443, 19], [50444, 50444, 18], [50445, 50471, 19], [50472, 50472, 18],\n [50473, 50499, 19], [50500, 50500, 18], [50501, 50527, 19], [50528, 50528, 18],\n [50529, 50555, 19], [50556, 50556, 18], [50557, 50583, 19], [50584, 50584, 18],\n [50585, 50611, 19], [50612, 50612, 18], [50613, 50639, 19], [50640, 50640, 18],\n [50641, 50667, 19], [50668, 50668, 18], [50669, 50695, 19], [50696, 50696, 18],\n [50697, 50723, 19], [50724, 50724, 18], [50725, 50751, 19], [50752, 50752, 18],\n [50753, 50779, 19], [50780, 50780, 18], [50781, 50807, 19], [50808, 50808, 18],\n [50809, 50835, 19], [50836, 50836, 18], [50837, 50863, 19], [50864, 50864, 18],\n [50865, 50891, 19], [50892, 50892, 18], [50893, 50919, 19], [50920, 50920, 18],\n [50921, 50947, 19], [50948, 50948, 18], [50949, 50975, 19], [50976, 50976, 18],\n [50977, 51003, 19], [51004, 51004, 18], [51005, 51031, 19], [51032, 51032, 18],\n [51033, 51059, 19], [51060, 51060, 18], [51061, 51087, 19], [51088, 51088, 18],\n [51089, 51115, 19], [51116, 51116, 18], [51117, 51143, 19], [51144, 51144, 18],\n [51145, 51171, 19], [51172, 51172, 18], [51173, 51199, 19], [51200, 51200, 18],\n [51201, 51227, 19], [51228, 51228, 18], [51229, 51255, 19], [51256, 51256, 18],\n [51257, 51283, 19], [51284, 51284, 18], [51285, 51311, 19], [51312, 51312, 18],\n [51313, 51339, 19], [51340, 51340, 18], [51341, 51367, 19], [51368, 51368, 18],\n [51369, 51395, 19], [51396, 51396, 18], [51397, 51423, 19], [51424, 51424, 18],\n [51425, 51451, 19], [51452, 51452, 18], [51453, 51479, 19], [51480, 51480, 18],\n [51481, 51507, 19], [51508, 51508, 18], [51509, 51535, 19], [51536, 51536, 18],\n [51537, 51563, 19], [51564, 51564, 18], [51565, 51591, 19], [51592, 51592, 18],\n [51593, 51619, 19], [51620, 51620, 18], [51621, 51647, 19], [51648, 51648, 18],\n [51649, 51675, 19], [51676, 51676, 18], [51677, 51703, 19], [51704, 51704, 18],\n [51705, 51731, 19], [51732, 51732, 18], [51733, 51759, 19], [51760, 51760, 18],\n [51761, 51787, 19], [51788, 51788, 18], [51789, 51815, 19], [51816, 51816, 18],\n [51817, 51843, 19], [51844, 51844, 18], [51845, 51871, 19], [51872, 51872, 18],\n [51873, 51899, 19], [51900, 51900, 18], [51901, 51927, 19], [51928, 51928, 18],\n [51929, 51955, 19], [51956, 51956, 18], [51957, 51983, 19], [51984, 51984, 18],\n [51985, 52011, 19], [52012, 52012, 18], [52013, 52039, 19], [52040, 52040, 18],\n [52041, 52067, 19], [52068, 52068, 18], [52069, 52095, 19], [52096, 52096, 18],\n [52097, 52123, 19], [52124, 52124, 18], [52125, 52151, 19], [52152, 52152, 18],\n [52153, 52179, 19], [52180, 52180, 18], [52181, 52207, 19], [52208, 52208, 18],\n [52209, 52235, 19], [52236, 52236, 18], [52237, 52263, 19], [52264, 52264, 18],\n [52265, 52291, 19], [52292, 52292, 18], [52293, 52319, 19], [52320, 52320, 18],\n [52321, 52347, 19], [52348, 52348, 18], [52349, 52375, 19], [52376, 52376, 18],\n [52377, 52403, 19], [52404, 52404, 18], [52405, 52431, 19], [52432, 52432, 18],\n [52433, 52459, 19], [52460, 52460, 18], [52461, 52487, 19], [52488, 52488, 18],\n [52489, 52515, 19], [52516, 52516, 18], [52517, 52543, 19], [52544, 52544, 18],\n [52545, 52571, 19], [52572, 52572, 18], [52573, 52599, 19], [52600, 52600, 18],\n [52601, 52627, 19], [52628, 52628, 18], [52629, 52655, 19], [52656, 52656, 18],\n [52657, 52683, 19], [52684, 52684, 18], [52685, 52711, 19], [52712, 52712, 18],\n [52713, 52739, 19], [52740, 52740, 18], [52741, 52767, 19], [52768, 52768, 18],\n [52769, 52795, 19], [52796, 52796, 18], [52797, 52823, 19], [52824, 52824, 18],\n [52825, 52851, 19], [52852, 52852, 18], [52853, 52879, 19], [52880, 52880, 18],\n [52881, 52907, 19], [52908, 52908, 18], [52909, 52935, 19], [52936, 52936, 18],\n [52937, 52963, 19], [52964, 52964, 18], [52965, 52991, 19], [52992, 52992, 18],\n [52993, 53019, 19], [53020, 53020, 18], [53021, 53047, 19], [53048, 53048, 18],\n [53049, 53075, 19], [53076, 53076, 18], [53077, 53103, 19], [53104, 53104, 18],\n [53105, 53131, 19], [53132, 53132, 18], [53133, 53159, 19], [53160, 53160, 18],\n [53161, 53187, 19], [53188, 53188, 18], [53189, 53215, 19], [53216, 53216, 18],\n [53217, 53243, 19], [53244, 53244, 18], [53245, 53271, 19], [53272, 53272, 18],\n [53273, 53299, 19], [53300, 53300, 18], [53301, 53327, 19], [53328, 53328, 18],\n [53329, 53355, 19], [53356, 53356, 18], [53357, 53383, 19], [53384, 53384, 18],\n [53385, 53411, 19], [53412, 53412, 18], [53413, 53439, 19], [53440, 53440, 18],\n [53441, 53467, 19], [53468, 53468, 18], [53469, 53495, 19], [53496, 53496, 18],\n [53497, 53523, 19], [53524, 53524, 18], [53525, 53551, 19], [53552, 53552, 18],\n [53553, 53579, 19], [53580, 53580, 18], [53581, 53607, 19], [53608, 53608, 18],\n [53609, 53635, 19], [53636, 53636, 18], [53637, 53663, 19], [53664, 53664, 18],\n [53665, 53691, 19], [53692, 53692, 18], [53693, 53719, 19], [53720, 53720, 18],\n [53721, 53747, 19], [53748, 53748, 18], [53749, 53775, 19], [53776, 53776, 18],\n [53777, 53803, 19], [53804, 53804, 18], [53805, 53831, 19], [53832, 53832, 18],\n [53833, 53859, 19], [53860, 53860, 18], [53861, 53887, 19], [53888, 53888, 18],\n [53889, 53915, 19], [53916, 53916, 18], [53917, 53943, 19], [53944, 53944, 18],\n [53945, 53971, 19], [53972, 53972, 18], [53973, 53999, 19], [54000, 54000, 18],\n [54001, 54027, 19], [54028, 54028, 18], [54029, 54055, 19], [54056, 54056, 18],\n [54057, 54083, 19], [54084, 54084, 18], [54085, 54111, 19], [54112, 54112, 18],\n [54113, 54139, 19], [54140, 54140, 18], [54141, 54167, 19], [54168, 54168, 18],\n [54169, 54195, 19], [54196, 54196, 18], [54197, 54223, 19], [54224, 54224, 18],\n [54225, 54251, 19], [54252, 54252, 18], [54253, 54279, 19], [54280, 54280, 18],\n [54281, 54307, 19], [54308, 54308, 18], [54309, 54335, 19], [54336, 54336, 18],\n [54337, 54363, 19], [54364, 54364, 18], [54365, 54391, 19], [54392, 54392, 18],\n [54393, 54419, 19], [54420, 54420, 18], [54421, 54447, 19], [54448, 54448, 18],\n [54449, 54475, 19], [54476, 54476, 18], [54477, 54503, 19], [54504, 54504, 18],\n [54505, 54531, 19], [54532, 54532, 18], [54533, 54559, 19], [54560, 54560, 18],\n [54561, 54587, 19], [54588, 54588, 18], [54589, 54615, 19], [54616, 54616, 18],\n [54617, 54643, 19], [54644, 54644, 18], [54645, 54671, 19], [54672, 54672, 18],\n [54673, 54699, 19], [54700, 54700, 18], [54701, 54727, 19], [54728, 54728, 18],\n [54729, 54755, 19], [54756, 54756, 18], [54757, 54783, 19], [54784, 54784, 18],\n [54785, 54811, 19], [54812, 54812, 18], [54813, 54839, 19], [54840, 54840, 18],\n [54841, 54867, 19], [54868, 54868, 18], [54869, 54895, 19], [54896, 54896, 18],\n [54897, 54923, 19], [54924, 54924, 18], [54925, 54951, 19], [54952, 54952, 18],\n [54953, 54979, 19], [54980, 54980, 18], [54981, 55007, 19], [55008, 55008, 18],\n [55009, 55035, 19], [55036, 55036, 18], [55037, 55063, 19], [55064, 55064, 18],\n [55065, 55091, 19], [55092, 55092, 18], [55093, 55119, 19], [55120, 55120, 18],\n [55121, 55147, 19], [55148, 55148, 18], [55149, 55175, 19], [55176, 55176, 18],\n [55177, 55203, 19], [55204, 55215, 6], [55216, 55238, 15], [55239, 55242, 6],\n [55243, 55291, 16], [55292, 64285, 6], [64286, 64286, 8], [64287, 65023, 6],\n [65024, 65039, 9], [65040, 65055, 6], [65056, 65071, 8], [65072, 65278, 6],\n [65279, 65279, 3], [65280, 65437, 6], [65438, 65439, 9], [65440, 65519, 6],\n [65520, 65531, 3], [65532, 66044, 6], [66045, 66045, 8], [66046, 66271, 6],\n [66272, 66272, 8], [66273, 66421, 6], [66422, 66426, 8], [66427, 68096, 6],\n [68097, 68099, 9], [68100, 68100, 6], [68101, 68102, 9], [68103, 68107, 6],\n [68108, 68108, 9], [68109, 68109, 8], [68110, 68110, 9], [68111, 68111, 8],\n [68112, 68151, 6], [68152, 68154, 8], [68155, 68158, 6], [68159, 68159, 8],\n [68160, 68324, 6], [68325, 68326, 8], [68327, 68899, 6], [68900, 68903, 8],\n [68904, 69290, 6], [69291, 69292, 8], [69293, 69445, 6], [69446, 69456, 8],\n [69457, 69631, 6], [69632, 69632, 11], [69633, 69633, 9], [69634, 69634, 11],\n [69635, 69687, 6], [69688, 69701, 9], [69702, 69702, 8], [69703, 69758, 6],\n [69759, 69759, 8], [69760, 69761, 9], [69762, 69762, 11], [69763, 69807, 6],\n [69808, 69810, 11], [69811, 69814, 9], [69815, 69816, 11], [69817, 69818, 8],\n [69819, 69820, 6], [69821, 69821, 10], [69822, 69836, 6], [69837, 69837, 10],\n [69838, 69887, 6], [69888, 69890, 8], [69891, 69926, 6], [69927, 69931, 9],\n [69932, 69932, 11], [69933, 69938, 9], [69939, 69940, 8], [69941, 69956, 6],\n [69957, 69958, 11], [69959, 70002, 6], [70003, 70003, 8], [70004, 70015, 6],\n [70016, 70017, 9], [70018, 70018, 11], [70019, 70066, 6], [70067, 70069, 11],\n [70070, 70078, 9], [70079, 70080, 11], [70081, 70081, 6], [70082, 70083, 10],\n [70084, 70088, 6], [70089, 70089, 9], [70090, 70090, 8], [70091, 70092, 9],\n [70093, 70093, 6], [70094, 70094, 11], [70095, 70095, 9], [70096, 70187, 6],\n [70188, 70190, 11], [70191, 70193, 9], [70194, 70195, 11], [70196, 70196, 9],\n [70197, 70197, 11], [70198, 70198, 8], [70199, 70199, 9], [70200, 70205, 6],\n [70206, 70206, 9], [70207, 70366, 6], [70367, 70367, 9], [70368, 70370, 11],\n [70371, 70376, 9], [70377, 70378, 8], [70379, 70399, 6], [70400, 70401, 9],\n [70402, 70403, 11], [70404, 70458, 6], [70459, 70460, 8], [70461, 70461, 6],\n [70462, 70462, 9], [70463, 70463, 11], [70464, 70464, 9], [70465, 70468, 11],\n [70469, 70470, 6], [70471, 70472, 11], [70473, 70474, 6], [70475, 70477, 11],\n [70478, 70486, 6], [70487, 70487, 9], [70488, 70497, 6], [70498, 70499, 11],\n [70500, 70501, 6], [70502, 70508, 8], [70509, 70511, 6], [70512, 70516, 8],\n [70517, 70708, 6], [70709, 70711, 11], [70712, 70719, 9], [70720, 70721, 11],\n [70722, 70722, 8], [70723, 70724, 9], [70725, 70725, 11], [70726, 70726, 8],\n [70727, 70749, 6], [70750, 70750, 8], [70751, 70831, 6], [70832, 70832, 9],\n [70833, 70834, 11], [70835, 70840, 9], [70841, 70841, 11], [70842, 70842, 9],\n [70843, 70844, 11], [70845, 70845, 9], [70846, 70846, 11], [70847, 70848, 9],\n [70849, 70849, 11], [70850, 70851, 8], [70852, 71086, 6], [71087, 71087, 9],\n [71088, 71089, 11], [71090, 71093, 9], [71094, 71095, 6], [71096, 71099, 11],\n [71100, 71101, 9], [71102, 71102, 11], [71103, 71104, 8], [71105, 71131, 6],\n [71132, 71133, 9], [71134, 71215, 6], [71216, 71218, 11], [71219, 71226, 9],\n [71227, 71228, 11], [71229, 71229, 9], [71230, 71230, 11], [71231, 71231, 8],\n [71232, 71232, 9], [71233, 71338, 6], [71339, 71339, 9], [71340, 71340, 11],\n [71341, 71341, 9], [71342, 71343, 11], [71344, 71349, 9], [71350, 71350, 11],\n [71351, 71351, 8], [71352, 71452, 6], [71453, 71455, 9], [71456, 71457, 11],\n [71458, 71461, 9], [71462, 71462, 11], [71463, 71466, 9], [71467, 71467, 8],\n [71468, 71723, 6], [71724, 71726, 11], [71727, 71735, 9], [71736, 71736, 11],\n [71737, 71738, 8], [71739, 71983, 6], [71984, 71984, 9], [71985, 71989, 11],\n [71990, 71990, 6], [71991, 71992, 11], [71993, 71994, 6], [71995, 71996, 9],\n [71997, 71997, 11], [71998, 71998, 8], [71999, 71999, 10], [72000, 72000, 11],\n [72001, 72001, 10], [72002, 72002, 11], [72003, 72003, 8], [72004, 72144, 6],\n [72145, 72147, 11], [72148, 72151, 9], [72152, 72153, 6], [72154, 72155, 9],\n [72156, 72159, 11], [72160, 72160, 8], [72161, 72163, 6], [72164, 72164, 11],\n [72165, 72192, 6], [72193, 72202, 9], [72203, 72242, 6], [72243, 72243, 9],\n [72244, 72244, 8], [72245, 72248, 9], [72249, 72249, 11], [72250, 72250, 10],\n [72251, 72254, 9], [72255, 72262, 6], [72263, 72263, 8], [72264, 72272, 6],\n [72273, 72278, 9], [72279, 72280, 11], [72281, 72283, 9], [72284, 72323, 6],\n [72324, 72329, 10], [72330, 72342, 9], [72343, 72343, 11], [72344, 72344, 9],\n [72345, 72345, 8], [72346, 72750, 6], [72751, 72751, 11], [72752, 72758, 9],\n [72759, 72759, 6], [72760, 72765, 9], [72766, 72766, 11], [72767, 72767, 8],\n [72768, 72849, 6], [72850, 72871, 9], [72872, 72872, 6], [72873, 72873, 11],\n [72874, 72880, 9], [72881, 72881, 11], [72882, 72883, 9], [72884, 72884, 11],\n [72885, 72886, 9], [72887, 73008, 6], [73009, 73014, 9], [73015, 73017, 6],\n [73018, 73018, 9], [73019, 73019, 6], [73020, 73021, 9], [73022, 73022, 6],\n [73023, 73025, 9], [73026, 73026, 8], [73027, 73027, 9], [73028, 73029, 8],\n [73030, 73030, 10], [73031, 73031, 9], [73032, 73097, 6], [73098, 73102, 11],\n [73103, 73103, 6], [73104, 73105, 9], [73106, 73106, 6], [73107, 73108, 11],\n [73109, 73109, 9], [73110, 73110, 11], [73111, 73111, 8], [73112, 73458, 6],\n [73459, 73460, 9], [73461, 73462, 11], [73463, 78895, 6], [78896, 78904, 3],\n [78905, 92911, 6], [92912, 92916, 8], [92917, 92975, 6], [92976, 92982, 8],\n [92983, 94030, 6], [94031, 94031, 9], [94032, 94032, 6], [94033, 94087, 11],\n [94088, 94094, 6], [94095, 94098, 9], [94099, 94179, 6], [94180, 94180, 9],\n [94181, 94191, 6], [94192, 94193, 11], [94194, 113820, 6], [113821, 113821, 9],\n [113822, 113822, 8], [113823, 113823, 6], [113824, 113827, 3], [113828, 119140, 6],\n [119141, 119141, 8], [119142, 119142, 11], [119143, 119145, 8], [119146, 119148, 6],\n [119149, 119149, 11], [119150, 119154, 8], [119155, 119162, 3], [119163, 119170, 8],\n [119171, 119172, 6], [119173, 119179, 8], [119180, 119209, 6], [119210, 119213, 8],\n [119214, 119361, 6], [119362, 119364, 8], [119365, 121343, 6], [121344, 121398, 9],\n [121399, 121402, 6], [121403, 121452, 9], [121453, 121460, 6], [121461, 121461, 9],\n [121462, 121475, 6], [121476, 121476, 9], [121477, 121498, 6], [121499, 121503, 9],\n [121504, 121504, 6], [121505, 121519, 9], [121520, 122879, 6], [122880, 122886, 8],\n [122887, 122887, 6], [122888, 122904, 8], [122905, 122906, 6], [122907, 122913, 8],\n [122914, 122914, 6], [122915, 122916, 8], [122917, 122917, 6], [122918, 122922, 8],\n [122923, 123183, 6], [123184, 123190, 8], [123191, 123627, 6], [123628, 123631, 8],\n [123632, 125135, 6], [125136, 125142, 8], [125143, 125251, 6], [125252, 125258, 8],\n [125259, 126975, 6], [126976, 127231, 7], [127232, 127244, 6], [127245, 127247, 7],\n [127248, 127278, 6], [127279, 127279, 7], [127280, 127339, 6], [127340, 127345, 7],\n [127346, 127357, 6], [127358, 127359, 7], [127360, 127373, 6], [127374, 127374, 7],\n [127375, 127376, 6], [127377, 127386, 7], [127387, 127404, 6], [127405, 127461, 7],\n [127462, 127487, 20], [127488, 127488, 6], [127489, 127503, 7], [127504, 127513, 6],\n [127514, 127514, 7], [127515, 127534, 6], [127535, 127535, 7], [127536, 127537, 6],\n [127538, 127546, 7], [127547, 127547, 6], [127548, 127551, 7], [127552, 127560, 6],\n [127561, 127994, 7], [127995, 127999, 9], [128000, 128317, 7], [128318, 128325, 6],\n [128326, 128591, 7], [128592, 128639, 6], [128640, 128767, 7], [128768, 128883, 6],\n [128884, 128895, 7], [128896, 128980, 6], [128981, 129023, 7], [129024, 129035, 6],\n [129036, 129039, 7], [129040, 129095, 6], [129096, 129103, 7], [129104, 129113, 6],\n [129114, 129119, 7], [129120, 129159, 6], [129160, 129167, 7], [129168, 129197, 6],\n [129198, 129279, 7], [129280, 129291, 6], [129292, 129338, 7], [129339, 129339, 6],\n [129340, 129349, 7], [129350, 129350, 6], [129351, 129791, 7], [129792, 130047, 6],\n [130048, 131069, 7], [131070, 917503, 6], [917504, 917535, 3], [917536, 917631, 9],\n [917632, 917759, 3], [917760, 917999, 9], [918000, 921599, 3], [921600, 1114111, 6]\n ]'),
metadata: {
categoryCount: 21
}
};
;RuleSet.line = {
forwardTable: {
flags: 0,
table: JSON.parse('[\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 4, 4, 5, 6, 7,\n 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 7, 25, 26,\n 27, 28, 7, 19, 29, 12, 30, 23, 24, 31, 32, 29, -1, 0, 0, 0, 0, 0, 0, 2,\n 3, 4, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 33, 16, 17, 18, 19, 0, 21,\n 0, 0, 0, 7, 25, 26, 3, 0, 7, 19, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0,\n 0, 0, 0, 0, 0, 3, 3, 4, 4, 5, 6, 7, 8, 0, 0, 0, 0, 13, 14, 33,\n 16, 0, 18, 0, 0, 0, 0, 0, 0, 7, 25, 34, 3, 0, 7, 19, 0, 0, 0, 0,\n 0, 0,