UNPKG

stimulsoft-forms

Version:
1,237 lines (1,231 loc) 3.67 MB
import * as i0 from '@angular/core'; import { Injectable, Component, Input, ViewChild, Directive, EventEmitter, Output, TemplateRef, ContentChild, HostListener, NgModule } from '@angular/core'; import * as _ from 'lodash'; import { camelCase, indexOf } from 'lodash'; import { Subject, Observable, throwError } from 'rxjs'; import { first, timeout, catchError } from 'rxjs/operators'; import * as i1 from '@angular/common/http'; import { HttpClientModule } from '@angular/common/http'; import * as i5 from '@angular/common'; import { CommonModule } from '@angular/common'; import * as i3 from '@angular/forms'; import { FormsModule } from '@angular/forms'; import { trigger, state, style, transition, animate, group } from '@angular/animations'; import ResizeObserver from 'resize-observer-polyfill'; import * as i2 from '@angular/platform-browser'; import { BrowserModule } from '@angular/platform-browser'; import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; /* {*******************************************************************} { } { } { } { Copyright (C) Stimulsoft } { ALL RIGHTS RESERVED } { } { The entire contents of this file is protected by U.S. and } { International Copyright Laws. Unauthorized reproduction, } { reverse-engineering, and distribution of all or any portion of } { the code contained in this file is strictly prohibited and may } { result in severe civil and criminal penalties and will be } { prosecuted to the maximum extent possible under the law. } { } { RESTRICTIONS } { } { THIS SOURCE CODE AND ALL RESULTING INTERMEDIATE FILES } { ARE CONFIDENTIAL AND PROPRIETARY } { TRADE SECRETS OF Stimulsoft } { } { CONSULT THE END USER LICENSE AGREEMENT FOR INFORMATION ON } { ADDITIONAL RESTRICTIONS. } { } {*******************************************************************} */ class Color { constructor() { this.propertyName = "color"; this.name = Color.customName; } static aliceBlue() { let color = Color.fromArgb(0xf0, 0xf8, 0xff); color.name = "Alice Blue"; return color; } static antiqueWhite() { let color = Color.fromArgb(0xfa, 0xeb, 0xd7); color.name = "Antique White"; return color; } static aqua() { let color = Color.fromArgb(0x00, 0xff, 0xff); color.name = "Aqua"; return color; } static aquamarine() { let color = Color.fromArgb(0x7f, 0xff, 0xd4); color.name = "Aquamarine"; return color; } static azure() { let color = Color.fromArgb(0xf0, 0xff, 0xff); color.name = "Azure"; return color; } static beige() { let color = Color.fromArgb(0xf5, 0xf5, 0xdc); color.name = "Beige"; return color; } static bisque() { let color = Color.fromArgb(0xff, 0xe4, 0xc4); color.name = "Bisque"; return color; } static black() { let color = Color.fromArgb(0x00, 0x00, 0x00); color.name = "Black"; return color; } static blanchedAlmond() { let color = Color.fromArgb(0xff, 0xeb, 0xcd); color.name = "Blanched Almond"; return color; } static blue() { let color = Color.fromArgb(0x00, 0x00, 0xff); color.name = "Blue"; return color; } static blueViolet() { let color = Color.fromArgb(0x8a, 0x2b, 0xe2); color.name = "Blue Violet"; return color; } static brown() { let color = Color.fromArgb(0xa5, 0x2a, 0x2a); color.name = "Brown"; return color; } static burlyWood() { let color = Color.fromArgb(0xde, 0xb8, 0x87); color.name = "Burly Wood"; return color; } static cadetBlue() { let color = Color.fromArgb(0x5f, 0x9e, 0xa0); color.name = "Cadet Blue"; return color; } static chartreuse() { let color = Color.fromArgb(0x7f, 0xff, 0x00); color.name = "Chartreuse"; return color; } static chocolate() { let color = Color.fromArgb(0xd2, 0x69, 0x1e); color.name = "Chocolate"; return color; } static coral() { let color = Color.fromArgb(0xff, 0x7f, 0x50); color.name = "Coral"; return color; } static cornflowerBlue() { let color = Color.fromArgb(0x64, 0x95, 0xed); color.name = "Cornflower Blue"; return color; } static cornsilk() { let color = Color.fromArgb(0xff, 0xf8, 0xdc); color.name = "Cornsilk"; return color; } static crimson() { let color = Color.fromArgb(0xdc, 0x14, 0x3c); color.name = "Crimson"; return color; } static cyan() { let color = Color.fromArgb(0x00, 0xff, 0xff); color.name = "Cyan"; return color; } static darkBlue() { let color = Color.fromArgb(0x00, 0x00, 0x8b); color.name = "Dark Blue"; return color; } static darkCyan() { let color = Color.fromArgb(0x00, 0x8b, 0x8b); color.name = "Dark Cyan"; return color; } static darkGoldenrod() { let color = Color.fromArgb(0xb8, 0x86, 0x0b); color.name = "Dark Goldenrod"; return color; } static darkGray() { let color = Color.fromArgb(0xa9, 0xa9, 0xa9); color.name = "Dark Gray"; return color; } static darkGreen() { let color = Color.fromArgb(0x00, 0x64, 0x00); color.name = "Dark Green"; return color; } static darkKhaki() { let color = Color.fromArgb(0xbd, 0xb7, 0x6b); color.name = "Dark Khaki"; return color; } static darkMagenta() { let color = Color.fromArgb(0x8b, 0x00, 0x8b); color.name = "Dark Magenta"; return color; } static darkOliveGreen() { let color = Color.fromArgb(0x55, 0x6b, 0x2f); color.name = "Dark Olive Green"; return color; } static darkOrange() { let color = Color.fromArgb(0xff, 0x8c, 0x00); color.name = "Dark Orange"; return color; } static darkOrchid() { let color = Color.fromArgb(0x99, 0x32, 0xcc); color.name = "Dark Orchid"; return color; } static darkRed() { let color = Color.fromArgb(0x8b, 0x00, 0x00); color.name = "Dark Red"; return color; } static darkSalmon() { let color = Color.fromArgb(0xe9, 0x96, 0x7a); color.name = "Dark Salmon"; return color; } static darkSeaGreen() { let color = Color.fromArgb(0x8f, 0xbc, 0x8f); color.name = "Dark Sea Green"; return color; } static darkSlateBlue() { let color = Color.fromArgb(0x48, 0x3d, 0x8b); color.name = "Dark Slate Blue"; return color; } static darkSlateGray() { let color = Color.fromArgb(0x2f, 0x4f, 0x4f); color.name = "Dark Slate Gray"; return color; } static darkTurquoise() { let color = Color.fromArgb(0x00, 0xce, 0xd1); color.name = "Dark Turquoise"; return color; } static darkViolet() { let color = Color.fromArgb(0x94, 0x00, 0xd3); color.name = "Dark Violet"; return color; } static deepPink() { let color = Color.fromArgb(0xff, 0x14, 0x93); color.name = "Deep Pink"; return color; } static deepSkyBlue() { let color = Color.fromArgb(0x00, 0xbf, 0xff); color.name = "Deep Sky Blue"; return color; } static dimGray() { let color = Color.fromArgb(0x69, 0x69, 0x69); color.name = "Dim Gray"; return color; } static dodgerBlue() { let color = Color.fromArgb(0x1e, 0x90, 0xff); color.name = "Dodger Blue"; return color; } static firebrick() { let color = Color.fromArgb(0xb2, 0x22, 0x22); color.name = "Firebrick"; return color; } static floralWhite() { let color = Color.fromArgb(0xff, 0xfa, 0xf0); color.name = "Floral White"; return color; } static forestGreen() { let color = Color.fromArgb(0x22, 0x8b, 0x22); color.name = "Forest Green"; return color; } static fuchsia() { let color = Color.fromArgb(0xff, 0x00, 0xff); color.name = "Fuchsia"; return color; } static gainsboro() { let color = Color.fromArgb(0xdc, 0xdc, 0xdc); color.name = "Gainsboro"; return color; } static ghostWhite() { let color = Color.fromArgb(0xf8, 0xf8, 0xff); color.name = "Ghost White"; return color; } static gold() { let color = Color.fromArgb(0xff, 0xd7, 0x00); color.name = "Gold"; return color; } static goldenrod() { let color = Color.fromArgb(0xda, 0xa5, 0x20); color.name = "Goldenrod"; return color; } static gray() { let color = Color.fromArgb(0x80, 0x80, 0x80); color.name = "Gray"; return color; } static green() { let color = Color.fromArgb(0x00, 0x80, 0x00); color.name = "Green"; return color; } static greenYellow() { let color = Color.fromArgb(0xad, 0xff, 0x2f); color.name = "Green Yellow"; return color; } static honeydew() { let color = Color.fromArgb(0xf0, 0xff, 0xf0); color.name = "Honeydew"; return color; } static hotPink() { let color = Color.fromArgb(0xff, 0x69, 0xb4); color.name = "Hot Pink"; return color; } static indianRed() { let color = Color.fromArgb(0xcd, 0x5c, 0x5c); color.name = "Indian Red"; return color; } static indigo() { let color = Color.fromArgb(0x4b, 0x00, 0x82); color.name = "Indigo"; return color; } static ivory() { let color = Color.fromArgb(0xff, 0xff, 0xf0); color.name = "Ivory"; return color; } static khaki() { let color = Color.fromArgb(0xf0, 0xe6, 0x8c); color.name = "Khaki"; return color; } static lavender() { let color = Color.fromArgb(0xe6, 0xe6, 0xfa); color.name = "Lavender"; return color; } static lavenderBlush() { let color = Color.fromArgb(0xff, 0xf0, 0xf5); color.name = "Lavender Blush"; return color; } static lawnGreen() { let color = Color.fromArgb(0x7c, 0xfc, 0x00); color.name = "Lawn Green"; return color; } static lemonChiffon() { let color = Color.fromArgb(0xff, 0xfa, 0xcd); color.name = "Lemon Chiffon"; return color; } static lightBlue() { let color = Color.fromArgb(0xad, 0xd8, 0xe6); color.name = "Light Blue"; return color; } static lightCoral() { let color = Color.fromArgb(0xf0, 0x80, 0x80); color.name = "Light Coral"; return color; } static lightCyan() { let color = Color.fromArgb(0xe0, 0xff, 0xff); color.name = "Light Cyan"; return color; } static lightGoldenrodYellow() { let color = Color.fromArgb(0xfa, 0xfa, 0xd2); color.name = "Light Goldenrod Yellow"; return color; } static lightGray() { let color = Color.fromArgb(0xd3, 0xd3, 0xd3); color.name = "Light Gray"; return color; } static lightGreen() { let color = Color.fromArgb(0x90, 0xee, 0x90); color.name = "Light Green"; return color; } static lightPink() { let color = Color.fromArgb(0xff, 0xb6, 0xc1); color.name = "Light Pink"; return color; } static lightSalmon() { let color = Color.fromArgb(0xff, 0xa0, 0x7a); color.name = "Light Salmon"; return color; } static lightSeaGreen() { let color = Color.fromArgb(0x20, 0xb2, 0xaa); color.name = "Light Sea Green"; return color; } static lightSkyBlue() { let color = Color.fromArgb(0x87, 0xce, 0xfa); color.name = "Light Sky Blue"; return color; } static lightSlateGray() { let color = Color.fromArgb(0x77, 0x88, 0x99); color.name = "Light Slate Gray"; return color; } static lightSteelBlue() { let color = Color.fromArgb(0xb0, 0xc4, 0xde); color.name = "Light Steel Blue"; return color; } static lightYellow() { let color = Color.fromArgb(0xff, 0xff, 0xe0); color.name = "Light Yellow"; return color; } static lime() { let color = Color.fromArgb(0x00, 0xff, 0x00); color.name = "Lime"; return color; } static limeGreen() { let color = Color.fromArgb(0x32, 0xcd, 0x32); color.name = "Lime Green"; return color; } static linen() { let color = Color.fromArgb(0xfa, 0xf0, 0xe6); color.name = "Linen"; return color; } static magenta() { let color = Color.fromArgb(0xff, 0x00, 0xff); color.name = "Magenta"; return color; } static maroon() { let color = Color.fromArgb(0x80, 0x00, 0x00); color.name = "Maroon"; return color; } static mediumAquamarine() { let color = Color.fromArgb(0x66, 0xcd, 0xaa); color.name = "Medium Aquamarine"; return color; } static mediumBlue() { let color = Color.fromArgb(0x00, 0x00, 0xcd); color.name = "Medium Blue"; return color; } static mediumOrchid() { let color = Color.fromArgb(0xba, 0x55, 0xd3); color.name = "Medium Orchid"; return color; } static mediumPurple() { let color = Color.fromArgb(0x93, 0x70, 0xdb); color.name = "Medium Purple"; return color; } static mediumSeaGreen() { let color = Color.fromArgb(0x3c, 0xb3, 0x71); color.name = "Medium Sea Green"; return color; } static mediumSlateBlue() { let color = Color.fromArgb(0x7b, 0x68, 0xee); color.name = "Medium Slate Blue"; return color; } static mediumSpringGreen() { let color = Color.fromArgb(0x00, 0xfa, 0x9a); color.name = "Medium Spring Green"; return color; } static mediumTurquoise() { let color = Color.fromArgb(0x48, 0xd1, 0xcc); color.name = "Medium Turquoise"; return color; } static mediumVioletRed() { let color = Color.fromArgb(0xc7, 0x15, 0x85); color.name = "Medium Violet Red"; return color; } static midnightBlue() { let color = Color.fromArgb(0x19, 0x19, 0x70); color.name = "Midnight Blue"; return color; } static mintCream() { let color = Color.fromArgb(0xf5, 0xff, 0xfa); color.name = "Mint Cream"; return color; } static mistyRose() { let color = Color.fromArgb(0xff, 0xe4, 0xe1); color.name = "Misty Rose"; return color; } static moccasin() { let color = Color.fromArgb(0xff, 0xe4, 0xb5); color.name = "Moccasin"; return color; } static navajoWhite() { let color = Color.fromArgb(0xff, 0xde, 0xad); color.name = "Navajo White"; return color; } static navy() { let color = Color.fromArgb(0x00, 0x00, 0x80); color.name = "Navy"; return color; } static oldLace() { let color = Color.fromArgb(0xfd, 0xf5, 0xe6); color.name = "Old Lace"; return color; } static olive() { let color = Color.fromArgb(0x80, 0x80, 0x00); color.name = "Olive"; return color; } static oliveDrab() { let color = Color.fromArgb(0x6b, 0x8e, 0x23); color.name = "Olive Drab"; return color; } static orange() { let color = Color.fromArgb(0xff, 0xa5, 0x00); color.name = "Orange"; return color; } static orangeRed() { let color = Color.fromArgb(0xff, 0x45, 0x00); color.name = "Orange Red"; return color; } static orchid() { let color = Color.fromArgb(0xda, 0x70, 0xd6); color.name = "Orchid"; return color; } static paleGoldenrod() { let color = Color.fromArgb(0xee, 0xe8, 0xaa); color.name = "Pale Goldenrod"; return color; } static paleGreen() { let color = Color.fromArgb(0x98, 0xfb, 0x98); color.name = "Pale Green"; return color; } static paleTurquoise() { let color = Color.fromArgb(0xaf, 0xee, 0xee); color.name = "Pale Turquoise"; return color; } static paleVioletRed() { let color = Color.fromArgb(0xdb, 0x70, 0x93); color.name = "Pale Violet Red"; return color; } static papayaWhip() { let color = Color.fromArgb(0xff, 0xef, 0xd5); color.name = "Papaya Whip"; return color; } static peachPuff() { let color = Color.fromArgb(0xff, 0xda, 0xb9); color.name = "Peach Puff"; return color; } static peru() { let color = Color.fromArgb(0xcd, 0x85, 0x3f); color.name = "Peru"; return color; } static pink() { let color = Color.fromArgb(0xff, 0xc0, 0xcb); color.name = "Pink"; return color; } static plum() { let color = Color.fromArgb(0xdd, 0xa0, 0xdd); color.name = "Plum"; return color; } static powderBlue() { let color = Color.fromArgb(0xb0, 0xe0, 0xe6); color.name = "Powder Blue"; return color; } static purple() { let color = Color.fromArgb(0x80, 0x00, 0x80); color.name = "Purple"; return color; } static red() { let color = Color.fromArgb(0xff, 0x00, 0x00); color.name = "Red"; return color; } static rosyBrown() { let color = Color.fromArgb(0xbc, 0x8f, 0x8f); color.name = "Rosy Brown"; return color; } static royalBlue() { let color = Color.fromArgb(0x41, 0x69, 0xe1); color.name = "Royal Blue"; return color; } static saddleBrown() { let color = Color.fromArgb(0x8b, 0x45, 0x13); color.name = "Saddle Brown"; return color; } static salmon() { let color = Color.fromArgb(0xfa, 0x80, 0x72); color.name = "Salmon"; return color; } static sandyBrown() { let color = Color.fromArgb(0xf4, 0xa4, 0x60); color.name = "Sandy Brown"; return color; } static seaGreen() { let color = Color.fromArgb(0x2e, 0x8b, 0x57); color.name = "Sea Green"; return color; } static seaShell() { let color = Color.fromArgb(0xff, 0xf5, 0xee); color.name = "Sea Shell"; return color; } static sienna() { let color = Color.fromArgb(0xa0, 0x52, 0x2d); color.name = "Sienna"; return color; } static silver() { let color = Color.fromArgb(0xc0, 0xc0, 0xc0); color.name = "Silver"; return color; } static skyBlue() { let color = Color.fromArgb(0x87, 0xce, 0xeb); color.name = "Sky Blue"; return color; } static slateBlue() { let color = Color.fromArgb(0x6a, 0x5a, 0xcd); color.name = "Slate Blue"; return color; } static slateGray() { let color = Color.fromArgb(0x70, 0x80, 0x90); color.name = "Slate Gray"; return color; } static snow() { let color = Color.fromArgb(0xff, 0xfa, 0xfa); color.name = "Snow"; return color; } static springGreen() { let color = Color.fromArgb(0x00, 0xff, 0x7f); color.name = "Spring Green"; return color; } static steelBlue() { let color = Color.fromArgb(0x46, 0x82, 0xb4); color.name = "Steel Blue"; return color; } static tan() { let color = Color.fromArgb(0xd2, 0xb4, 0x8c); color.name = "Tan"; return color; } static teal() { let color = Color.fromArgb(0x00, 0x80, 0x80); color.name = "Teal"; return color; } static thistle() { let color = Color.fromArgb(0xd8, 0xbf, 0xd8); color.name = "Thistle"; return color; } static tomato() { let color = Color.fromArgb(0xff, 0x63, 0x47); color.name = "Tomato"; return color; } static turquoise() { let color = Color.fromArgb(0x40, 0xe0, 0xd0); color.name = "Turquoise"; return color; } static violet() { let color = Color.fromArgb(0xee, 0x82, 0xee); color.name = "Violet"; return color; } static wheat() { let color = Color.fromArgb(0xf5, 0xde, 0xb3); color.name = "Wheat"; return color; } static white() { let color = Color.fromArgb(0xff, 0xff, 0xff); color.name = "White"; return color; } static whiteSmoke() { let color = Color.fromArgb(0xf5, 0xf5, 0xf5); color.name = "White Smoke"; return color; } static yellow() { let color = Color.fromArgb(0xff, 0xff, 0x00); color.name = "Yellow"; return color; } static yellowGreen() { let color = Color.fromArgb(0x9a, 0xcd, 0x32); color.name = "Yellow Green"; return color; } static transparent() { let color = Color.fromArgb(0x00, 0xff, 0xff, 0xff); color.name = "Transparent"; return color; } static empty() { let color = Color.fromArgb(0x00, 0xff, 0xff, 0xff); color.name = "Empty"; return color; } static fromName(name) { name = name.replace(/ /gi, ""); if (this.isNullOrEmpty(name)) { return null; // Color.empty; } name = name.charAt(0).toLowerCase() + name.substr(1); let color = Color[name]; if (color && typeof color == "function") { return color(); } return null; //Color.empty; } static isNullOrEmpty(value) { return value == null || value === "" || value === undefined; } clone() { let color = new Color(); color.r = this.r; color.g = this.g; color.b = this.b; color.a = this._a; color.name = this.name; return color; } isChanged() { return this.savedColor == null || !this.savedColor.equals(this); } resetChanged() { this.savedColor = this.clone(); } get a() { return this._a; } set a(value) { this._a = value; this.name = Color.customName; } get r() { return this._r; } set r(value) { this._r = value; this.name = Color.customName; } get g() { return this._g; } set g(value) { this._g = value; this.name = Color.customName; } get b() { return this._b; } set b(value) { this._b = value; this.name = Color.customName; } static { this.customName = "Custom"; } get isNamedColor() { return this.name != Color.customName; } equals(color) { if (color != null) { if ((color._a == 0x00 && color._r == 0xff && color._g == 0xff && color._b == 0xff) || (this._a == 0x00 && this._r == 0xff && this._g == 0xff && this._b == 0xff)) return this._a == color._a; else return this._a == color._a && this._r == color._r && this._g == color._g && this._b == color._b; } return false; } static fromArgb(alpha, red, green, blue) { if (typeof red == "undefined") { blue = alpha & 0xff; green = (alpha >> 8) & 0xff; red = (alpha >> 16) & 0xff; alpha = (alpha >> 24) & 0xff; } else if (typeof green == "undefined") { blue = red._b; green = red._g; red = red._r; } else if (typeof blue == "undefined") { blue = green; green = red; red = alpha; alpha = 255; } let color = new Color(); color._a = alpha; color._r = red; color._g = green; color._b = blue; color.name = Color.customName; return color; } toArgb() { let argb = this._a << 24; argb += this._r << 16; argb += this._g << 8; argb += this._b; return argb; } componentToHex(c) { let hex = c.toString(16); return hex.length == 1 ? "0" + hex : hex; } getHashCode() { return this.toArgb(); } toHtmlColor() { return `rgba(${this.r}, ${this.g}, ${this.b}, ${Math.round((100 * this.a) / 255) / 100})`; } toHexColor() { return "#" + this.componentToHex(this.r) + this.componentToHex(this.g) + this.componentToHex(this.b); } get hexColor() { return this.toHtmlColor(); } getStringName() { if (this.a == 0) { return "Transparent"; } else { return `${this.a != 255 ? this.a + "," : ""}${this.r + ","}${this.g + ","}${this.b}`; } } set hexColor(value) { let oldColor = this.changesInterceptor ? this.clone() : null; let num = parseInt(value.substring(1), 16); if (num || num == 0) { this.b = num & 0xff; this.g = (num >> 8) & 0xff; this.r = (num >> 16) & 0xff; this.a = 255; } else { let num = value.replace("rgba(", "").replace(")", ""); let array = num.split(","); this.r = isNaN(Number(array[0])) ? 0 : Number(array[0]); this.g = isNaN(Number(array[1])) ? 0 : Number(array[1]); this.b = isNaN(Number(array[2])) ? 0 : Number(array[2]); this.a = isNaN(Math.round(255 * Number(array[3]))) ? 255 : Math.round(255 * Number(array[3])); } this.name = Color.customName; if (this.changesInterceptor) { this.changesInterceptor.propertyChanged(this.propertyName, this.clone(), oldColor); } } toString() { return this.name != Color.customName ? this.name : this.hexColor; } deserializeFromString(value) { let result; if (value.indexOf(",") != -1) { let strs = value.split(","); if (strs.length == 4) { result = Color.fromArgb(parseFloat(strs[0].trim()), parseFloat(strs[1].trim()), parseFloat(strs[2].trim()), parseFloat(strs[3].trim())); } else { result = Color.fromArgb(parseFloat(strs[0].trim()), parseFloat(strs[1].trim()), parseFloat(strs[2].trim())); } } else if (value.indexOf("[") == 0 && value.indexOf("]") == value.length - 1 && value.indexOf(":") != -1) { let strs = value.substring(1, value.length - 1).split(":"); if (strs.length == 4) { result = Color.fromArgb(parseFloat(strs[0].trim()), parseFloat(strs[1].trim()), parseFloat(strs[2].trim()), parseFloat(strs[3].trim())); } else { result = Color.fromArgb(parseFloat(strs[0].trim()), parseFloat(strs[1].trim()), parseFloat(strs[2].trim())); } } else { result = Color.fromName(value); } this._r = result._r; this._b = result._b; this._g = result._g; this._a = result._a; this.name = result.name; } } /* {*******************************************************************} { } { } { } { Copyright (C) Stimulsoft } { ALL RIGHTS RESERVED } { } { The entire contents of this file is protected by U.S. and } { International Copyright Laws. Unauthorized reproduction, } { reverse-engineering, and distribution of all or any portion of } { the code contained in this file is strictly prohibited and may } { result in severe civil and criminal penalties and will be } { prosecuted to the maximum extent possible under the law. } { } { RESTRICTIONS } { } { THIS SOURCE CODE AND ALL RESULTING INTERMEDIATE FILES } { ARE CONFIDENTIAL AND PROPRIETARY } { TRADE SECRETS OF Stimulsoft } { } { CONSULT THE END USER LICENSE AGREEMENT FOR INFORMATION ON } { ADDITIONAL RESTRICTIONS. } { } {*******************************************************************} */ var UnicodeCategory; (function (UnicodeCategory) { /** * Uppercase letter. Signified by the Unicode designation "Lu" (letter, uppercase). * The value is 0. */ UnicodeCategory[UnicodeCategory["UppercaseLetter"] = 0] = "UppercaseLetter"; /** * Lowercase letter. Signified by the Unicode designation "Ll" (letter, lowercase). * The value is 1. */ UnicodeCategory[UnicodeCategory["LowercaseLetter"] = 1] = "LowercaseLetter"; /** * Titlecase letter. Signified by the Unicode designation "Lt" (letter, titlecase). * The value is 2. */ UnicodeCategory[UnicodeCategory["TitlecaseLetter"] = 2] = "TitlecaseLetter"; /** * Modifier letter character, which is free-standing spacing character that * indicates modifications of a preceding letter. Signified by the Unicode designation * "Lm" (letter, modifier). The value is 3. */ UnicodeCategory[UnicodeCategory["ModifierLetter"] = 3] = "ModifierLetter"; /** * Letter that is not an uppercase letter, a lowercase letter, a titlecase letter, * or a modifier letter. Signified by the Unicode designation "Lo" (letter, * other). The value is 4. */ UnicodeCategory[UnicodeCategory["OtherLetter"] = 4] = "OtherLetter"; /** * Nonspacing character that indicates modifications of a base character. Signified * by the Unicode designation "Mn" (mark, nonspacing). The value is 5. */ UnicodeCategory[UnicodeCategory["NonSpacingMark"] = 5] = "NonSpacingMark"; /** * Spacing character that indicates modifications of a base character and affects * the width of the glyph for that base character. Signified by the Unicode * designation "Mc" (mark, spacing combining). The value is 6. */ UnicodeCategory[UnicodeCategory["SpacingCombiningMark"] = 6] = "SpacingCombiningMark"; /** * Enclosing mark character, which is a nonspacing combining character that * surrounds all previous characters up to and including a base character. Signified * by the Unicode designation "Me" (mark, enclosing). The value is 7. */ UnicodeCategory[UnicodeCategory["EnclosingMark"] = 7] = "EnclosingMark"; /** * Decimal digit character, that is, a character in the range 0 through 9. Signified * by the Unicode designation "Nd" (number, decimal digit). The value is 8. */ UnicodeCategory[UnicodeCategory["DecimalDigitNumber"] = 8] = "DecimalDigitNumber"; /** * Number represented by a letter, instead of a decimal digit, for example, * the Roman numeral for five, which is "V". The indicator is signified by the * Unicode designation "Nl" (number, letter). The value is 9. */ UnicodeCategory[UnicodeCategory["LetterNumber"] = 9] = "LetterNumber"; /** * Number that is neither a decimal digit nor a letter number, for example, * the fraction 1/2. The indicator is signified by the Unicode designation "No" * (number, other). The value is 10. */ UnicodeCategory[UnicodeCategory["OtherNumber"] = 10] = "OtherNumber"; /** * Space character, which has no glyph but is not a control or format character. * Signified by the Unicode designation "Zs" (separator, space). The value is 11. */ UnicodeCategory[UnicodeCategory["SpaceSeparator"] = 11] = "SpaceSeparator"; /** * Character that is used to separate lines of text. Signified by the Unicode * designation "Zl" (separator, line). The value is 12. */ UnicodeCategory[UnicodeCategory["LineSeparator"] = 12] = "LineSeparator"; /** * Character used to separate paragraphs. Signified by the Unicode designation * "Zp" (separator, paragraph). The value is 13. */ UnicodeCategory[UnicodeCategory["ParagraphSeparator"] = 13] = "ParagraphSeparator"; /** * Control code character, with a Unicode value of U+007F or in the range U+0000 * through U+001F or U+0080 through U+009F. Signified by the Unicode designation * "Cc" (other, control). The value is 14. */ UnicodeCategory[UnicodeCategory["Control"] = 14] = "Control"; /** * Format character that affects the layout of text or the operation of text * processes, but is not normally rendered. Signified by the Unicode designation * "Cf" (other, format). The value is 15. */ UnicodeCategory[UnicodeCategory["Format"] = 15] = "Format"; /** * High surrogate or a low surrogate character. Surrogate code values are in * the range U+D800 through U+DFFF. Signified by the Unicode designation "Cs" * (other, surrogate). The value is 16. */ UnicodeCategory[UnicodeCategory["Surrogate"] = 16] = "Surrogate"; /** * Private-use character, with a Unicode value in the range U+E000 through U+F8FF. * Signified by the Unicode designation "Co" (other, private use). The value is 17. */ UnicodeCategory[UnicodeCategory["PrivateUse"] = 17] = "PrivateUse"; /** * Connector punctuation character that connects two characters. Signified by * the Unicode designation "Pc" (punctuation, connector). The value is 18. */ UnicodeCategory[UnicodeCategory["ConnectorPunctuation"] = 18] = "ConnectorPunctuation"; /** * Dash or hyphen character. Signified by the Unicode designation "Pd" (punctuation, * dash). The value is 19. */ UnicodeCategory[UnicodeCategory["DashPunctuation"] = 19] = "DashPunctuation"; /** * Opening character of one of the paired punctuation marks, such as parentheses, * square brackets, and braces. Signified by the Unicode designation "Ps" (punctuation, * open). The value is 20. */ UnicodeCategory[UnicodeCategory["OpenPunctuation"] = 20] = "OpenPunctuation"; /** * Closing character of one of the paired punctuation marks, such as parentheses, * square brackets, and braces. Signified by the Unicode designation "Pe" (punctuation, * close). The value is 21. */ UnicodeCategory[UnicodeCategory["ClosePunctuation"] = 21] = "ClosePunctuation"; /** * Opening or initial quotation mark character. Signified by the Unicode designation * "Pi" (punctuation, initial quote). The value is 22. */ UnicodeCategory[UnicodeCategory["InitialQuotePunctuation"] = 22] = "InitialQuotePunctuation"; /** * Closing or final quotation mark character. Signified by the Unicode designation * "Pf" (punctuation, final quote). The value is 23. */ UnicodeCategory[UnicodeCategory["FinalQuotePunctuation"] = 23] = "FinalQuotePunctuation"; /** * Punctuation character that is not a connector, a dash, open punctuation, * close punctuation, an initial quote, or a final quote. Signified by the Unicode * designation "Po" (punctuation, other). The value is 24. */ UnicodeCategory[UnicodeCategory["OtherPunctuation"] = 24] = "OtherPunctuation"; /** * Mathematical symbol character, such as "+" or "= ". Signified by the Unicode * designation "Sm" (symbol, math). The value is 25. */ UnicodeCategory[UnicodeCategory["MathSymbol"] = 25] = "MathSymbol"; /** * Currency symbol character. Signified by the Unicode designation "Sc" (symbol, * currency). The value is 26. */ UnicodeCategory[UnicodeCategory["CurrencySymbol"] = 26] = "CurrencySymbol"; /** * Modifier symbol character, which indicates modifications of surrounding characters. * For example, the fraction slash indicates that the number to the left is * the numerator and the number to the right is the denominator. The indicator * is signified by the Unicode designation "Sk" (symbol, modifier). The value is 27. */ UnicodeCategory[UnicodeCategory["ModifierSymbol"] = 27] = "ModifierSymbol"; /** * Symbol character that is not a mathematical symbol, a currency symbol or * a modifier symbol. Signified by the Unicode designation "So" (symbol, other). * The value is 28. */ UnicodeCategory[UnicodeCategory["OtherSymbol"] = 28] = "OtherSymbol"; /** * Character that is not assigned to any Unicode category. Signified by the * Unicode designation "Cn" (other, not assigned). The value is 29. */ UnicodeCategory[UnicodeCategory["OtherNotAssigned"] = 29] = "OtherNotAssigned"; })(UnicodeCategory || (UnicodeCategory = {})); /* {*******************************************************************} { } { } { } { Copyright (C) Stimulsoft } { ALL RIGHTS RESERVED } { } { The entire contents of this file is protected by U.S. and } { International Copyright Laws. Unauthorized reproduction, } { reverse-engineering, and distribution of all or any portion of } { the code contained in this file is strictly prohibited and may } { result in severe civil and criminal penalties and will be } { prosecuted to the maximum extent possible under the law. } { } { RESTRICTIONS } { } { THIS SOURCE CODE AND ALL RESULTING INTERMEDIATE FILES } { ARE CONFIDENTIAL AND PROPRIETARY } { TRADE SECRETS OF Stimulsoft } { } { CONSULT THE END USER LICENSE AGREEMENT FOR INFORMATION ON } { ADDITIONAL RESTRICTIONS. } { } {*******************************************************************} */ class Chars { static getUnicodeCategory(char) { if (char < 0x3400) return this._table_0[char]; if (char < 0x4db6) return UnicodeCategory.OtherLetter; if (char < 0x4dc0) return UnicodeCategory.OtherNotAssigned; if (char < 0x4e00) return UnicodeCategory.OtherSymbol; if (char < 0x9fc0) return UnicodeCategory.OtherLetter; if (char < 0xac00) return this._table_9fc0[char - 0x9fc0]; if (char < 0xd780) return UnicodeCategory.OtherLetter; if (char < 0xd800) return this._table_d780[char - 0xd780]; if (char < 0xe000) return UnicodeCategory.Surrogate; if (char < 0xf900) return UnicodeCategory.PrivateUse; if (char < 0xfa40) return UnicodeCategory.OtherLetter; if (char < 0x10000) return this._table_fa40[char - 0xfa40]; return UnicodeCategory.OtherNotAssigned; } static { this._table_0 = [ 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 11, 24, 24, 24, 26, 24, 24, 24, 20, 21, 24, 25, 24, 19, 24, 24, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 24, 24, 25, 25, 25, 24, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 24, 21, 27, 18, 27, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 20, 25, 21, 25, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 11, 24, 26, 26, 26, 26, 28, 28, 27, 28, 1, 22, 25, 19, 28, 27, 28, 25, 10, 10, 27, 1, 28, 24, 27, 10, 1, 23, 10, 10, 10, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 25, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 4, 0, 1, 1, 1, 4, 4, 4, 4, 0, 2, 1, 0, 2, 1, 0, 2, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 2, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 27, 27, 27, 27, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 3, 3, 3, 3, 3, 27, 27, 27, 27, 27, 27, 27, 3, 27, 3, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 1, 0, 1, 3, 27, 0, 1, 29, 29, 3, 1, 1, 1, 24, 0, 29, 29, 29, 29, 27, 27, 0, 24, 0, 0, 0, 29, 0, 29, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 25, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 28, 5, 5, 5, 5, 5, 7, 7, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 29, 3, 24, 24, 24, 24, 24, 24, 29, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 29, 24, 19, 29, 29, 28, 28, 26, 29, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 19, 5, 24, 5, 5, 24, 5, 5, 24, 5, 29, 29, 29, 29, 29, 29, 29, 29, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 29, 29, 29, 29, 29, 4, 4, 4, 24, 24, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 15, 15, 15, 15, 15, 15, 25, 25, 25, 24, 24, 26, 24, 24, 28, 28, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 24, 15, 29, 24, 24, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 24, 24, 24, 24, 4, 4, 5, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 24, 4, 5, 5, 5, 5, 5, 5, 5, 15, 28, 5, 5, 5, 5, 5, 5, 3, 3, 5, 5, 28, 5, 5, 5, 5, 4, 4, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 4, 4, 4, 28, 28, 4, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 29, 15, 4, 5, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 29, 29, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 4, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 3, 3, 28, 24, 24, 24, 3, 29, 29, 29, 29, 29, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 3, 5, 5, 5, 5, 5, 5, 5, 5, 5, 3, 5, 5, 5, 3, 5, 5, 5, 5, 5, 29, 29, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 29, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 29, 29, 24, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 6, 5, 4, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 5, 6, 6, 4, 5, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 24, 24, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 24, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 6, 6, 29, 4, 4, 4, 4, 4, 4, 4, 4, 29, 29, 4, 4, 29, 29, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 29, 4, 4, 4, 4, 4, 4, 4, 29, 4, 29, 29, 29, 4, 4, 4, 4, 29, 29, 5, 4, 6, 6, 6, 5, 5, 5, 5, 29, 29, 6, 6, 29, 29, 6, 6, 5, 4, 29, 29, 29, 29, 29, 29, 2