@temperlang/std 0.4.0 → 0.5.0

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.
package/regex.js.map CHANGED
@@ -1 +1 @@
1
- { "version": 3, "file": "js/std/regex.js", "sources": [ "std/regex.temper.md" ], "sourcesContent": [ "# Regex Data Model and Functionality\n\nThe structural data model for regex patterns enables direct construction, and\nthe Temper regex dialect compiles static regex text patterns to these objects.\n\nA focus here is on providing tools people can actually reach for when they need\nto do text processing. The execution should be faster on backends like Python\nthan writing raw code, and the implementation in backends like C should\napproximate what you'd like to have written manually.\n\nDue to inadequate and distinct Unicode handling in backend regex engines, the\ninitial feature set avoids character classes and properties but is still aware\nof code points. Parsing focused on limited sets of delimiters works best for\nnow.\n\nThe core feature set here focuses on both the data model and utility functions,\nsuch as matching regexes against strings.\n\n## Regex Data Model\n\nTemper regex representation is composed hierarchically of `RegexNode` objects.\nAnd perhaps the most fundamental `RegexNode` is the [Sequence](#sequence),\nbecause it enables multiple regex components to be strung together. For example,\n`/hi./` is a sequence of [CodePoints](#codepoints) `/hi/` and dot `/./`, but all\ncomponent types extend the `RegexNode` interface.\n\n```\nexport /*sealed*/ interface RegexNode {\n```\n\nBefore a regex is used, it must be compiled. This transforms a `RegexNode` tree\ninto a backend-native [Regex](#regex). Some helper functions compile on the fly,\nalthough it is faster to reuse a pre-compiled regex.\n\n```\n // TODO(tjp, regex): Make this into a macro behind the scenes.\n // TODO(tjp, regex): `compiled\u003cT\u003e(): Regex\u003cT\u003e`\n public compiled(): Regex { new Regex(this) }\n```\n\nThe simplest use of a regular expression is if it is found in a string.\nAgain, it is better to compile to a `Regex` in advance than to repeatedly call\nconvenience methods on a `RegexNode`.\n\nTODO Remove convenience methods on RegexNode since we emphasize CompiledRegex\nnow?\n\n```\n public found(text: String): Boolean { compiled().found(text) }\n```\n\nYou can also return match details. The returned groups map contains an entry for\neach key in the order defined in the regex pattern. If no \u0022full\u0022 group is\ndefined, one is added automatically to capture the full matched text.\n\nIn the future, we intend to support customized match types with fields to match\ncapture groups, statically checked where possible.\n\n```\n // TODO(tjp, regex): Also macro because reification.\n\n public find(text: String): Match | Bubble {\n compiled().find(text)\n }\n```\n\nReplace and split functions are also available.\n\n```\n public replace(text: String, format: fn (Match): String): String {\n compiled().replace(text, format)\n }\n\n public split(text: String): List\u003cString\u003e {\n compiled().split(text)\n }\n```\n\nThat's it for what you can do with regex patterns in Temper today, but there's\nmuch more to say on what kinds of regexes can be built.\n\n```\n}\n```\n\n## Regex Item Types\n\nA `Regex` is composed of a potential variety of subtypes.\n\n### Groups\n\nMultiple types of groups exist:\n\n- [Capture](#capture) `/(?\u003cname\u003e...)/` to remember match groups for later use.\n- Non-capturing group syntax `/(?:...)/`, which is simply a [Regex](#regex)\n instance in the data model.\n\n### Capture\n\n`Capture` is a [group](#groups) that remembers the matched text for later\naccess. Temper supports only named matches, with current intended syntax\n`/(?name = ...)/`.\n\n```\nexport class Capture(\n public let name: String,\n public /*early*/ let item: RegexNode,\n) extends RegexNode {}\n```\n\n### CodePart\n\nA component of a [CodeSet][#codeset], aka character class, which applies to a\nsubset of regex data types.\n\nHere, \u0022code\u0022 is short for \u0022code point\u0022 although \u0022char\u0022 might work better,\ndepending on expectations.\n\n```\nexport sealed interface CodePart extends RegexNode {}\n```\n\n### CodePoints\n\nOne or more verbatim code points, where the sequence matters if within a\n[Regex](#regex) or not if within a [CodeSet](#codeset). Some escapes in\ntextual regex source, such as `/\\t/`, can be stored as raw code points.\n\nThe `String` here can enable more efficient storage than individual code\npoints, although the source text may require non-capture grouping. For example,\n`/(?:abc)?/` optionally matches the string `\u0022abc\u0022`, whereas `/abc?/` matches\n`\u0022ab\u0022` with an optional `\u0022c\u0022`.\n\n```\nexport class CodePoints(\n public let value: String,\n) extends CodePart {}\n```\n\n### Specials\n\nA number of special match forms exist. In the data model, these are empty\nclasses.\n\n- `.` - `Dot` In default mode, matches any Unicode code point except newline.\n- `^` - `Begin` in default mode matches zero-length at the beginning of a\n string.\n- `\u0024` - `End` in default mode matches zero-length at the end of a string.\n- `\\b` - `WordBoundary` matches zero-length at the boundary between word and\n non-word code points. More sophisticated Unicode compliance is TBD.\n- `\\s` (negated as `\\S`) - `Space` matches any horizontal space code point.\n Details are TBD.\n- `\\w` (negated as `\\W`) - `Word` matches any word code point. Details are TBD.\n This is currently defined in terms of old ASCII definitions because those are\n clear. Perhaps this will stay that way, and Unicode properties like `\\p{L}`\n will be used for human language needs.\n- `\\X` - `GraphemeCluster` might not be supported, but [here is some discussion\n of how to implement it](\n https://github.com/rust-lang/regex/issues/54#issuecomment-661905060).\n\n\u003cdetails\u003e\n\n```\nexport /*sealed*/ interface Special extends RegexNode {}\nexport let Begin: Special = do { class Begin extends Special {}; new Begin() };\nexport let Dot: Special = do { class Dot extends Special {}; new Dot() };\nexport let End: Special = do { class End extends Special {}; new End() };\n// TODO(tjp, regex): We can't easily support this at present across backends.\n// export let GraphemeCluster = do {\n// class GraphemeCluster extends Special {}; new GraphemeCluster()\n// };\nexport let WordBoundary: Special = do {\n class WordBoundary extends Special {}; new WordBoundary()\n};\n\nexport /*sealed*/ interface SpecialSet extends CodePart \u0026 Special {}\nexport let Digit: SpecialSet = do {\n class Digit extends SpecialSet {}; new Digit()\n};\nexport let Space: SpecialSet = do {\n class Space extends SpecialSet {}; new Space()\n};\nexport let Word: SpecialSet = do {\n class Word extends SpecialSet {}; new Word()\n};\n```\n\n\u003c/details\u003e\n\n### CodeRange\n\nA code point range matches any code point in its inclusive bounds, such as\n`/[a-c]/`. In source, `-` is included in a code set either by escaping or by\nincluding it as the first or last character. A `CodeRange` is usually contained\ninside a [CodeSet](#codeset), and syntactically always is.\n\n```\nexport class CodeRange(\n public let min: Int,\n public let max: Int,\n) extends CodePart {}\n```\n\n### Itemized Regex Types\n\nMake an abstraction over Regex types that have lists of subitems. This can make\nprocessing more convenient.\n\n export interface ItemizedRegex\u003cITEM extends RegexNode\u003e extends RegexNode {\n public get items(): List\u003cITEM\u003e;\n }\n\n### CodeSet\n\nA set of code points, any of which can match, such as `/[abc]/` matching any of\n`\u0022a\u0022`, `\u0022b\u0022`, or `\u0022c\u0022`. Alternatively, a negated set is the inverse of the code\npoints given, such as `/[^abc]/`, matching any code point that's not any of\nthese. This is also often called a character class.\n\nFurther, a subset of [specials](#specials) can also be used in code sets. A\nnegated code set of just a special set often has custom syntax. For example,\nnon-space can be said as either `/[^\\s]/` or `/\\S/`.\n\n```\nexport class CodeSet(\n public let items: List\u003cCodePart\u003e,\n public let negated: Boolean = false,\n) extends ItemizedRegex\u003cCodePart\u003e {}\n```\n\n### Or\n\n`Or` matches any one of multiple options, such as `/ab|cd|e*/`.\n\n```\nexport class Or(\n public /*early*/ let items: List\u003cRegexNode\u003e,\n) extends ItemizedRegex\u003cRegexNode\u003e {}\n```\n\n### Repeat\n\n`Repeat` matches from an minimum to a maximum number of repeats of a\nsubregex. This can be represented in regex source in a number of ways:\n\n- `?` matches 0 or 1.\n- `*` matches 0 or more.\n- `+` matches 1 or more.\n- `{m}` matches exactly `m` repetitions.\n- `{m,n}` matches between `m` and `n`. Missing `n` is a max of infinity. For\n example, `{0,1}` is equivalent to `?`, and `{1,}` is equivalent to `+`.\n\nBy default, repetitions are greedy, matching as many repetitions as possible.\nIn regex source, any of the above can have `?` appended to indicated reluctant\n(aka non-greedy), matching as few repetitions as possible.\n\n```\nexport class Repeat(\n public /*early*/ let item: RegexNode,\n public let min: Int,\n public let max: Int | Null, // where null means infinite\n public let reluctant: Boolean = false,\n) extends RegexNode {}\n```\n\nWe also have convenience builders.\n\n```\nexport let entire(item: RegexNode): RegexNode {\n new Sequence([Begin, item, End])\n}\n\nexport let oneOrMore(item: RegexNode, reluctant: Boolean = false): Repeat {\n { item, min: 1, max: null, reluctant }\n}\n\nexport let optional(item: RegexNode, reluctant: Boolean = false): Repeat {\n { item, min: 0, max: 1, reluctant }\n}\n```\n\n### Sequence\n\n`Sequence` strings along multiple other regexes in order.\n\n```\nexport class Sequence(\n public /*early*/ let items: List\u003cRegexNode\u003e,\n) extends ItemizedRegex\u003cRegexNode\u003e {}\n```\n\n## Match Objects\n\nFor detailed match results, call `find` on a regex to get a `Match` object\nincluding a map from `String` keys to `Group` values. The iteration order of the\ngroup map is undefined.\n\nWe might support custom match types in the future with static properties instead\nof string-keyed groups. For example: `regex.find\u003cMyCapture\u003e(\u0022....\u0022)`\n\nTODO And sooner than that, we plan connected types for abstract mapping to\nbackend match objects that might not be maps.\n\n```\nexport class Match(\n public let full: Group,\n public let groups: Map\u003cString, Group\u003e,\n) {} // interface ... \u003cT = Map\u003cString, Group\u003e\u003e {\n\nexport class Group(\n public let name: String,\n public let value: String,\n public let begin: StringIndex,\n public let end: StringIndex,\n) {}\n```\n\n## Compiled Regex Objects\n\nThe compiled form of a regex is mostly opaque, but it can be cached for more\nefficient reuse than working from a source [RegexNode](#regex-data-model).\n\n\u003cdetails\u003e\n\n```\n// Provides a workaround for access to std/regex from extension methods that\n// sometimes get defined in temper-core for some backends. Also useful for\n// reference values for the interpreter.\n// TODO Avoid defining regex support in temper-core.\nclass RegexRefs(\n public let codePoints: CodePoints = new CodePoints(\u0022\u0022),\n public let group: Group = {\n name: \u0022\u0022, value: \u0022\u0022, begin: String.begin, end: String.begin\n },\n public let match: Match = {\n full: group,\n groups: new Map\u003cString, Group\u003e([new Pair(\u0022\u0022, group)]),\n },\n public let orObject: Or = new Or([]),\n) {}\n\nlet regexRefs = new RegexRefs();\n```\n\n\u003c/details\u003e\n\nTODO Make Regex a connected type for lighter weight usage?\n\n```\nexport class Regex {\n```\n\nThe source `Regex` data is still available on compiled objects in case it's\nneeded for composition or other purposes.\n\n```\n public let data: RegexNode;\n\n public constructor(data: RegexNode) {\n this.data = data;\n // TODO Pull formatting out of here into a separate library or module???\n compiled = compileFormatted(format());\n }\n```\n\nA compiled regex exposes many of the same capabilities as `RegexNode`, but they\nare more efficient to use repeatedly.\n\n```\n public found(text: String): Boolean {\n compiledFound(compiled, text)\n }\n\n public find(text: String, begin: StringIndex = String.begin): Match | Bubble {\n compiledFind(compiled, text, begin, regexRefs)\n }\n\n public replace(text: String, format: fn (Match): String): String {\n compiledReplace(compiled, text, format, regexRefs)\n }\n\n public split(text: String): List\u003cString\u003e {\n compiledSplit(compiled, text, regexRefs)\n }\n```\n\nTODO(tjp, regex): Any static checking for stable frontend regex values?\n\n\u003cdetails\u003e\n\n```\n private let compiled: AnyValue;\n\n // Extension functions on some backends need the private `compiled` value\n // passed in directly.\n @connected(\u0022Regex::compiledFound\u0022)\n private compiledFound(compiled: AnyValue, text: String): Boolean;\n\n @connected(\u0022Regex::compiledFind\u0022)\n private compiledFind(\n compiled: AnyValue, text: String, begin: StringIndex, regexRefs: RegexRefs\n ): Match | Bubble;\n\n @connected(\u0022Regex::compileFormatted\u0022)\n private compileFormatted(formatted: String): AnyValue;\n\n @connected(\u0022Regex::compiledReplace\u0022)\n private compiledReplace(\n compiled: AnyValue,\n text: String,\n format: fn (Match): String,\n regexRefs: RegexRefs,\n ): String;\n\n @connected(\u0022Regex::compiledSplit\u0022)\n private compiledSplit(\n compiled: AnyValue,\n text: String,\n regexRefs: RegexRefs,\n ): List\u003cString\u003e;\n\n @connected(\u0022Regex::format\u0022)\n private format(): String { new RegexFormatter().format(data) }\n```\n\n\u003c/details\u003e\n\n```\n}\n```\n\n## Private implementation matters?\n\nSome regex logic can be shared across backends. These features aren't directly\nexported to the user, however.\n\nTODO But we do want this exported for pre-compiling where possible in backends.\n\nThe intent is that these support features only get included in compiled Temper\ncode if usage depends on dynamically constructed regexes. If all regex building\nis done as stable values, we hope to generated backend compiled regexes purely\nat Temper compile time.\n\n### RegexFormatter\n\n\u003cdetails\u003e\n\n```\nclass RegexFormatter {\n private let out: ListBuilder\u003cString\u003e = new ListBuilder\u003cString\u003e();\n\n public format(regex: RegexNode): String {\n pushRegex(regex)\n out.join(\u0022\u0022) { (x);; x }\n }\n\n private pushRegex(regex: RegexNode): Void {\n when (regex) {\n // Aggregate types.\n is Capture -\u003e pushCapture(regex);\n is CodePoints -\u003e pushCodePoints(regex, false);\n is CodeRange -\u003e pushCodeRange(regex);\n is CodeSet -\u003e pushCodeSet(regex);\n is Or -\u003e pushOr(regex);\n is Repeat -\u003e pushRepeat(regex);\n is Sequence -\u003e pushSequence(regex);\n // Specials.\n // Some of these will need to be customized on future backends.\n Begin -\u003e out.add(\u0022^\u0022);\n Dot -\u003e out.add(\u0022.\u0022);\n End -\u003e out.add(\u0022\u0024\u0022);\n WordBoundary -\u003e out.add(\u0022\\\\b\u0022);\n // Special sets.\n Digit -\u003e out.add(\u0022\\\\d\u0022);\n Space -\u003e out.add(\u0022\\\\s\u0022);\n Word -\u003e out.add(\u0022\\\\w\u0022);\n // ...\n }\n }\n\n private pushCapture(capture: Capture): Void {\n out.add(\u0022(\u0022);\n // TODO(tjp, regex): Consistent name validation rules for all backends???\n // TODO(tjp, regex): Validate here or in `Capture` constructor???\n // TODO(tjp, regex): Validate here or where against reused names???\n pushCaptureName(out, capture.name);\n pushRegex(capture.item);\n out.add(\u0022)\u0022);\n }\n\n @connected(\u0022RegexFormatter::pushCaptureName\u0022)\n private pushCaptureName(out: ListBuilder\u003cString\u003e, name: String): Void {\n // All so far except Python use this form.\n out.add(\u0022?\u003c\u0024{name}\u003e\u0022);\n }\n\n private pushCode(code: Int, insideCodeSet: Boolean): Void {\n // Goal here is to be pretty where commonly accepted by regex dialects.\n // Start with pretty escapes to avoid needing numeric escapes.\n let specialEscape = when (code) {\n Codes.carriageReturn -\u003e \u0022r\u0022;\n Codes.newline -\u003e \u0022n\u0022;\n Codes.tab -\u003e \u0022t\u0022;\n else -\u003e \u0022\u0022;\n };\n if (specialEscape != \u0022\u0022) {\n out.add(\u0022\\\\\u0022);\n out.add(specialEscape);\n return;\n }\n // Look up in table for ascii range.\n if (code \u003c= 0x7F) {\n let escapeNeed = escapeNeeds[code];\n if (\n escapeNeed == needsSimpleEscape ||\n (insideCodeSet \u0026\u0026 code == Codes.dash)\n ) {\n out.add(\u0022\\\\\u0022);\n out.add(String.fromCodePoint(code));\n return;\n } else if (escapeNeed == needsNoEscape) {\n out.add(String.fromCodePoint(code));\n return;\n }\n }\n // Not handled, so check additional ranges for plain vs numeric escape.\n if (\n code \u003e= Codes.supplementalMin || (\n code \u003e Codes.highControlMax \u0026\u0026\n !(\n (Codes.surrogateMin \u003c= code \u0026\u0026 code \u003c= Codes.surrogateMax) ||\n code == Codes.uint16Max\n )\n )\n ) {\n out.add(String.fromCodePoint(code));\n } else {\n // No pretty options above, so go numeric. Each backend often varies here.\n pushCodeTo(out, code, insideCodeSet);\n }\n }\n\n @connected(\u0022RegexFormatter::pushCodeTo\u0022)\n private pushCodeTo(out: ListBuilder\u003cString\u003e, code: Int, insideCodeSet: Boolean): Void;\n\n private pushCodePoints(codePoints: CodePoints, insideCodeSet: Boolean): Void {\n let value = codePoints.value;\n for (\n var index = String.begin;\n value.hasIndex(index);\n index = value.next(index)\n ) {\n pushCode(value[index], insideCodeSet);\n }\n }\n\n private pushCodeRange(codeRange: CodeRange): Void {\n out.add(\u0022[\u0022);\n pushCodeRangeUnwrapped(codeRange);\n out.add(\u0022]\u0022);\n }\n\n private pushCodeRangeUnwrapped(codeRange: CodeRange): Void {\n pushCode(codeRange.min, true);\n out.add(\u0022-\u0022);\n pushCode(codeRange.max, true);\n }\n\n private pushCodeSet(codeSet: CodeSet): Void {\n let adjusted = adjustCodeSet(codeSet, regexRefs);\n when (adjusted) {\n is CodeSet -\u003e do {\n out.add(\u0022[\u0022);\n if (adjusted.negated) {\n out.add(\u0022^\u0022);\n }\n for (var i = 0; i \u003c adjusted.items.length; i += 1) {\n pushCodeSetItem(adjusted.items[i]);\n }\n out.add(\u0022]\u0022);\n }\n else -\u003e pushRegex(adjusted);\n }\n }\n\n @connected(\u0022RegexFormatter::adjustCodeSet\u0022)\n private adjustCodeSet(codeSet: CodeSet, regexRefs: RegexRefs): RegexNode { codeSet }\n\n private pushCodeSetItem(codePart: CodePart): Void {\n when (codePart) {\n is CodePoints -\u003e pushCodePoints(codePart, true);\n is CodeRange -\u003e pushCodeRangeUnwrapped(codePart);\n is SpecialSet -\u003e pushRegex(codePart);\n }\n }\n\n private pushOr(or: Or): Void {\n if (!or.items.isEmpty) {\n out.add(\u0022(?:\u0022);\n // TODO(tjp, regex): See #822. Until `this` works better, no this in funs.\n // TODO(tjp, regex): So just manually loop here. Sometimes faster, anyway?\n pushRegex(or.items[0]);\n for (var i = 1; i \u003c or.items.length; i += 1) {\n out.add(\u0022|\u0022);\n pushRegex(or.items[i]);\n }\n out.add(\u0022)\u0022);\n }\n }\n\n private pushRepeat(repeat: Repeat): Void {\n // Always wrap the main sub-pattern here to make life easy\n out.add(\u0022(?:\u0022);\n pushRegex(repeat.item);\n out.add(\u0022)\u0022);\n // Then add the repetition part.\n let min = repeat.min;\n let max = repeat.max;\n if (false) {\n } else if (min == 0 \u0026\u0026 max == 1) {\n out.add(\u0022?\u0022);\n } else if (min == 0 \u0026\u0026 max == null) {\n out.add(\u0022*\u0022);\n } else if (min == 1 \u0026\u0026 max == null) {\n out.add(\u0022+\u0022);\n } else {\n out.add(\u0022{\u0024{min.toString()}\u0022);\n if (min != max) {\n out.add(\u0022,\u0022);\n if (max != null) {\n out.add(max.toString());\n }\n }\n out.add(\u0022}\u0022);\n }\n if (repeat.reluctant) {\n out.add(\u0022?\u0022);\n }\n }\n\n private pushSequence(sequence: Sequence): Void {\n // TODO(tjp, regex): Foreach loop/function would be nice.\n for (var i = 0; i \u003c sequence.items.length; i += 1) {\n pushRegex(sequence.items[i]);\n }\n }\n\n // Put this here instead of the data model for now because I'm not sure this\n // makes sense to be part of the public api right now.\n public maxCode(codePart: CodePart): Int | Null {\n when (codePart) {\n is CodePoints -\u003e do {\n // Iterating code points is the hardest of the current cases.\n let value = codePart.value;\n if (value.isEmpty) {\n null\n } else {\n // My kingdom for a fold, or even just a max, in builtins.\n var max = 0;\n for (\n var index = String.begin;\n value.hasIndex(index);\n index = value.next(index)\n ) {\n let next = value[index];\n if (next \u003e max) {\n max = next;\n }\n }\n max\n }\n }\n // Others below are easy for now.\n is CodeRange -\u003e codePart.max;\n Digit -\u003e Codes.digit9;\n Space -\u003e Codes.space;\n Word -\u003e Codes.lowerZ;\n // Actually unexpected, ever, but eh.\n else -\u003e null;\n }\n }\n}\n\n// Cache which chars you just but a blackslash in front of for escaping.\nlet escapeNeeds = buildEscapeNeeds();\nlet needsNoEscape = 0;\nlet needsNumericEscape = 1;\nlet needsSimpleEscape = 2;\nlet buildEscapeNeeds(): List\u003cInt\u003e {\n let escapeNeeds = new ListBuilder\u003cInt\u003e();\n for (var code = 0; code \u003c 0x7F; code += 1) {\n escapeNeeds.add(\n if (\n // Dash needs escaping in code sets, but we'll handle that specially.\n code == Codes.dash ||\n code == Codes.space ||\n code == Codes.underscore ||\n (Codes.digit0 \u003c= code \u0026\u0026 code \u003c= Codes.digit9) ||\n (Codes.upperA \u003c= code \u0026\u0026 code \u003c= Codes.upperZ) ||\n (Codes.lowerA \u003c= code \u0026\u0026 code \u003c= Codes.lowerZ)\n ) {\n needsNoEscape\n } else if (\n // Ampersand and tilde need escaped only in python for now, but meh.\n code == Codes.ampersand ||\n code == Codes.backslash ||\n code == Codes.caret ||\n code == Codes.curlyLeft ||\n code == Codes.curlyRight ||\n code == Codes.dot ||\n code == Codes.peso ||\n code == Codes.pipe ||\n code == Codes.plus ||\n code == Codes.question ||\n code == Codes.roundLeft ||\n code == Codes.roundRight ||\n code == Codes.slash ||\n code == Codes.squareLeft ||\n code == Codes.squareRight ||\n code == Codes.star ||\n code == Codes.tilde\n ) {\n needsSimpleEscape\n } else {\n // We'll also handle \\r, \\n, and \\t specially.\n needsNumericEscape\n },\n );\n }\n escapeNeeds.toList()\n}\n\nclass Codes {\n public static ampersand: Int = char'\u0026';\n public static backslash: Int = char'\\\\';\n public static caret: Int = char'^';\n public static carriageReturn: Int = char'\\r';\n public static curlyLeft: Int = char'{';\n public static curlyRight: Int = char'}';\n public static dash: Int = char'-';\n public static dot: Int = char'.';\n public static highControlMin: Int = 0x7F;\n public static highControlMax: Int = 0x9F;\n public static digit0: Int = char'0';\n public static digit9: Int = char'9';\n public static lowerA: Int = char'a';\n public static lowerZ: Int = char'z';\n public static newline: Int = char'\\n';\n public static peso: Int = char'\u0024';\n public static pipe: Int = char'|';\n public static plus: Int = char'+';\n public static question: Int = char'?';\n public static roundLeft: Int = char'(';\n public static roundRight: Int = char')';\n public static slash: Int = char'/';\n public static squareLeft: Int = char'[';\n public static squareRight: Int = char']';\n public static star: Int = char'*';\n public static tab: Int = char'\\t';\n public static tilde: Int = char'*';\n public static upperA: Int = char'A';\n public static upperZ: Int = char'Z';\n public static space: Int = char' ';\n public static surrogateMin: Int = 0xD800;\n public static surrogateMax: Int = 0xDFFF;\n public static supplementalMin: Int = 0x10000;\n public static uint16Max: Int = 0xFFFF;\n public static underscore: Int = char'_';\n}\n\n```\n\n\u003c/details\u003e\n" ], "names": [ "RegexNode", "Regex", "text", "format", "Capture", "name", "item", "CodePart", "CodePoints", "value", "Special", "SpecialSet", "CodeRange", "min", "max", "ItemizedRegex", "CodeSet", "items", "negated", "Or", "Repeat", "reluctant", "Sequence", "Match", "full", "groups", "Group", "begin", "end", "RegexRefs", "codePoints", "group", "match", "orObject", "data", "compiled", "regexRefs", "RegexFormatter", "out", "regex", "pushRegex", "fn", "x", "pushCapture", "pushCodePoints", "pushCodeRange", "pushCodeSet", "pushOr", "pushRepeat", "pushSequence", "Begin", "Dot", "End", "WordBoundary", "Digit", "Space", "Word", "capture", "pushCaptureName", "pushCode", "code", "insideCodeSet", "return", "specialEscape", "Codes", "escapeNeed", "escapeNeeds", "String", "index", "codeRange", "pushCodeRangeUnwrapped", "codeSet", "adjusted", "i", "pushCodeSetItem", "codePart", "or", "repeat", "sequence", "next", "ampersand", "backslash", "caret", "carriageReturn", "curlyLeft", "curlyRight", "dash", "dot", "highControlMin", "highControlMax", "digit0", "digit9", "lowerA", "lowerZ", "newline", "peso", "pipe", "plus", "question", "roundLeft", "roundRight", "slash", "squareLeft", "squareRight", "star", "tab", "tilde", "upperA", "upperZ", "space", "surrogateMin", "surrogateMax", "supplementalMin", "uint16Max", "underscore", "buildEscapeNeeds", "entire", "oneOrMore", "optional" ], "mappings": "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" }
1
+ { "version": 3, "file": "js/std/regex.js", "sources": [ "std/regex/regex.temper.md" ], "sourcesContent": [ "# Regex Data Model and Functionality\n\nThe structural data model for regex patterns enables direct construction, and\nthe Temper regex dialect compiles static regex text patterns to these objects.\n\nA focus here is on providing tools people can actually reach for when they need\nto do text processing. The execution should be faster on backends like Python\nthan writing raw code, and the implementation in backends like C should\napproximate what you'd like to have written manually.\n\nDue to inadequate and distinct Unicode handling in backend regex engines, the\ninitial feature set avoids character classes and properties but is still aware\nof code points. Parsing focused on limited sets of delimiters works best for\nnow.\n\nThe core feature set here focuses on both the data model and utility functions,\nsuch as matching regexes against strings.\n\n## Regex Data Model\n\nTemper regex representation is composed hierarchically of `RegexNode` objects.\nAnd perhaps the most fundamental `RegexNode` is the [Sequence](#sequence),\nbecause it enables multiple regex components to be strung together. For example,\n`/hi./` is a sequence of [CodePoints](#codepoints) `/hi/` and dot `/./`, but all\ncomponent types extend the `RegexNode` interface.\n\n```\nexport interface RegexNode {\n```\n\nBefore a regex is used, it must be compiled. This transforms a `RegexNode` tree\ninto a backend-native [Regex](#regex). Some helper functions compile on the fly,\nalthough it is faster to reuse a pre-compiled regex.\n\n```\n // TODO(tjp, regex): Make this into a macro behind the scenes.\n // TODO(tjp, regex): `compiled\u003cT\u003e(): Regex\u003cT\u003e`\n public compiled(): Regex { new Regex(this) }\n```\n\nThe simplest use of a regular expression is if it is found in a string.\nAgain, it is better to compile to a `Regex` in advance than to repeatedly call\nconvenience methods on a `RegexNode`.\n\nTODO Remove convenience methods on RegexNode since we emphasize CompiledRegex\nnow?\n\n```\n public found(text: String): Boolean { compiled().found(text) }\n```\n\nYou can also return match details. The returned groups map contains an entry for\neach key in the order defined in the regex pattern. If no \u0022full\u0022 group is\ndefined, one is added automatically to capture the full matched text.\n\nIn the future, we intend to support customized match types with fields to match\ncapture groups, statically checked where possible.\n\n```\n // TODO(tjp, regex): Also macro because reification.\n\n public find(text: String): Match | Bubble {\n compiled().find(text)\n }\n```\n\nReplace and split functions are also available. Both apply to all matches in\nthe string, replacing all or splitting at all.\n\n```\n public replace(text: String, format: fn (Match): String): String {\n compiled().replace(text, format)\n }\n\n public split(text: String): List\u003cString\u003e {\n compiled().split(text)\n }\n```\n\nThat's it for what you can do with regex patterns in Temper today, but there's\nmuch more to say on what kinds of regexes can be built.\n\n```\n}\n```\n\n## Regex Item Types\n\nA `Regex` is composed of a potential variety of subtypes.\n\n### Groups\n\nMultiple types of groups exist:\n\n- [Capture](#capture) `/(?\u003cname\u003e...)/` to remember match groups for later use.\n- Non-capturing group syntax `/(?:...)/`, which is simply a [Regex](#regex)\n instance in the data model.\n\n### Capture\n\n`Capture` is a [group](#groups) that remembers the matched text for later\naccess. Temper supports only named matches, with current intended syntax\n`/(?name = ...)/`.\n\n```\nexport class Capture(\n public let name: String,\n public /*early*/ let item: RegexNode,\n) extends RegexNode {}\n```\n\n### CodePart\n\nA component of a [CodeSet][#codeset], aka character class, which applies to a\nsubset of regex data types.\n\nHere, \u0022code\u0022 is short for \u0022code point\u0022 although \u0022char\u0022 might work better,\ndepending on expectations.\n\n```\nexport interface CodePart extends RegexNode {}\n```\n\n### CodePoints\n\nOne or more verbatim code points, where the sequence matters if within a\n[Regex](#regex) or not if within a [CodeSet](#codeset). Some escapes in\ntextual regex source, such as `/\\t/`, can be stored as raw code points.\n\nThe `String` here can enable more efficient storage than individual code\npoints, although the source text may require non-capture grouping. For example,\n`/(?:abc)?/` optionally matches the string `\u0022abc\u0022`, whereas `/abc?/` matches\n`\u0022ab\u0022` with an optional `\u0022c\u0022`.\n\n```\nexport class CodePoints(\n public let value: String,\n) extends CodePart {}\n```\n\n### Specials\n\nA number of special match forms exist. In the data model, these are empty\nclasses.\n\n- `.` - `Dot` In default mode, matches any Unicode code point except newline.\n- `^` - `Begin` in default mode matches zero-length at the beginning of a\n string.\n- `\u0024` - `End` in default mode matches zero-length at the end of a string.\n- `\\b` - `WordBoundary` matches zero-length at the boundary between word and\n non-word code points. More sophisticated Unicode compliance is TBD.\n- `\\s` (negated as `\\S`) - `Space` matches any horizontal space code point.\n Details are TBD.\n- `\\w` (negated as `\\W`) - `Word` matches any word code point. Details are TBD.\n This is currently defined in terms of old ASCII definitions because those are\n clear. Perhaps this will stay that way, and Unicode properties like `\\p{L}`\n will be used for human language needs.\n- `\\X` - `GraphemeCluster` might not be supported, but [here is some discussion\n of how to implement it](\n https://github.com/rust-lang/regex/issues/54#issuecomment-661905060).\n\n\u003cdetails\u003e\n\n```\nexport interface Special extends RegexNode {}\nexport let Begin: Special = do { class Begin extends Special {}; new Begin() };\nexport let Dot: Special = do { class Dot extends Special {}; new Dot() };\nexport let End: Special = do { class End extends Special {}; new End() };\n// TODO(tjp, regex): We can't easily support this at present across backends.\n// export let GraphemeCluster = do {\n// class GraphemeCluster extends Special {}; new GraphemeCluster()\n// };\nexport let WordBoundary: Special = do {\n class WordBoundary extends Special {}; new WordBoundary()\n};\n\nexport interface SpecialSet extends CodePart \u0026 Special {}\nexport let Digit: SpecialSet = do {\n class Digit extends SpecialSet {}; new Digit()\n};\nexport let Space: SpecialSet = do {\n class Space extends SpecialSet {}; new Space()\n};\nexport let Word: SpecialSet = do {\n class Word extends SpecialSet {}; new Word()\n};\n```\n\n\u003c/details\u003e\n\n### CodeRange\n\nA code point range matches any code point in its inclusive bounds, such as\n`/[a-c]/`. In source, `-` is included in a code set either by escaping or by\nincluding it as the first or last character. A `CodeRange` is usually contained\ninside a [CodeSet](#codeset), and syntactically always is.\n\n```\nexport class CodeRange(\n public let min: Int,\n public let max: Int,\n) extends CodePart {}\n```\n\n### CodeSet\n\nA set of code points, any of which can match, such as `/[abc]/` matching any of\n`\u0022a\u0022`, `\u0022b\u0022`, or `\u0022c\u0022`. Alternatively, a negated set is the inverse of the code\npoints given, such as `/[^abc]/`, matching any code point that's not any of\nthese. This is also often called a character class.\n\nFurther, a subset of [specials](#specials) can also be used in code sets. A\nnegated code set of just a special set often has custom syntax. For example,\nnon-space can be said as either `/[^\\s]/` or `/\\S/`.\n\n```\nexport class CodeSet(\n public let items: List\u003cCodePart\u003e,\n public let negated: Boolean = false,\n) extends RegexNode {}\n```\n\n### Or\n\n`Or` matches any one of multiple options, such as `/ab|cd|e*/`.\n\n```\nexport class Or(\n public /*early*/ let items: List\u003cRegexNode\u003e,\n) extends RegexNode {}\n```\n\n### Repeat\n\n`Repeat` matches from an minimum to a maximum number of repeats of a\nsubregex. This can be represented in regex source in a number of ways:\n\n- `?` matches 0 or 1.\n- `*` matches 0 or more.\n- `+` matches 1 or more.\n- `{m}` matches exactly `m` repetitions.\n- `{m,n}` matches between `m` and `n`. Missing `n` is a max of infinity. For\n example, `{0,1}` is equivalent to `?`, and `{1,}` is equivalent to `+`.\n\nBy default, repetitions are greedy, matching as many repetitions as possible.\nIn regex source, any of the above can have `?` appended to indicated reluctant\n(aka non-greedy), matching as few repetitions as possible.\n\n```\nexport class Repeat(\n public /*early*/ let item: RegexNode,\n public let min: Int,\n public let max: Int?, // where null means infinite\n public let reluctant: Boolean = false,\n) extends RegexNode {}\n```\n\nWe also have convenience builders.\n\n```\nexport let entire(item: RegexNode): RegexNode {\n new Sequence([Begin, item, End])\n}\n\nexport let oneOrMore(item: RegexNode, reluctant: Boolean = false): Repeat {\n { item, min: 1, max: null, reluctant }\n}\n\nexport let optional(item: RegexNode, reluctant: Boolean = false): Repeat {\n { item, min: 0, max: 1, reluctant }\n}\n```\n\n### Sequence\n\n`Sequence` strings along multiple other regexes in order.\n\n```\nexport class Sequence(\n public /*early*/ let items: List\u003cRegexNode\u003e,\n) extends RegexNode {}\n```\n\n## Match Objects\n\nFor detailed match results, call `find` on a regex to get a `Match` object\nincluding a map from `String` keys to `Group` values. The iteration order of the\ngroup map is undefined.\n\nWe might support custom match types in the future with static properties instead\nof string-keyed groups. For example: `regex.find\u003cMyCapture\u003e(\u0022....\u0022)`\n\nTODO And sooner than that, we plan connected types for abstract mapping to\nbackend match objects that might not be maps.\n\n```\nexport class Match(\n public let full: Group,\n public let groups: Map\u003cString, Group\u003e,\n) {} // interface ... \u003cT = Map\u003cString, Group\u003e\u003e {\n\nexport class Group(\n public let name: String,\n public let value: String,\n public let begin: StringIndex,\n public let end: StringIndex,\n) {}\n```\n\n## Compiled Regex Objects\n\nThe compiled form of a regex is mostly opaque, but it can be cached for more\nefficient reuse than working from a source [RegexNode](#regex-data-model).\n\n\u003cdetails\u003e\n\n```\n// Provides a workaround for access to std/regex from extension methods that\n// sometimes get defined in temper-core for some backends. Also useful for\n// reference values for the interpreter.\n// TODO Avoid defining regex support in temper-core.\nclass RegexRefs(\n public let codePoints: CodePoints = new CodePoints(\u0022\u0022),\n public let group: Group = {\n name: \u0022\u0022, value: \u0022\u0022, begin: String.begin, end: String.begin\n },\n public let match: Match = {\n full: group,\n groups: new Map\u003cString, Group\u003e([new Pair(\u0022\u0022, group)]),\n },\n public let orObject: Or = new Or([]),\n) {}\n\nlet regexRefs = new RegexRefs();\n```\n\n\u003c/details\u003e\n\nTODO Make Regex a connected type for lighter weight usage?\n\n```\nexport class Regex {\n```\n\nThe source `Regex` data is still available on compiled objects in case it's\nneeded for composition or other purposes.\n\n```\n public let data: RegexNode;\n\n public constructor(data: RegexNode) {\n this.data = data;\n // TODO Pull formatting out of here into a separate library or module???\n let formatted = RegexFormatter.regexFormat(data);\n compiled = RegexFormatter.regexCompileFormatted(data, formatted);\n }\n```\n\nA compiled regex exposes many of the same capabilities as `RegexNode`, but they\nare more efficient to use repeatedly.\n\n```\n public found(text: String): Boolean {\n compiledFound(compiled, text)\n }\n\n public find(text: String, begin: StringIndex = String.begin): Match | Bubble {\n compiledFind(compiled, text, begin, regexRefs)\n }\n\n public replace(text: String, format: fn (Match): String): String {\n compiledReplace(compiled, text, format, regexRefs)\n }\n\n public split(text: String): List\u003cString\u003e {\n compiledSplit(compiled, text, regexRefs)\n }\n```\n\nTODO(tjp, regex): Any static checking for stable frontend regex values?\n\n\u003cdetails\u003e\n\n```\n private let compiled: AnyValue;\n\n // Extension functions on some backends need the private `compiled` value\n // passed in directly.\n @connected(\u0022Regex::compiledFound\u0022)\n private compiledFound(compiled: AnyValue, text: String): Boolean;\n\n @connected(\u0022Regex::compiledFind\u0022)\n private compiledFind(\n compiled: AnyValue, text: String, begin: StringIndex, regexRefs: RegexRefs\n ): Match | Bubble;\n\n @connected(\u0022Regex::compiledReplace\u0022)\n private compiledReplace(\n compiled: AnyValue,\n text: String,\n format: fn (Match): String,\n regexRefs: RegexRefs,\n ): String;\n\n @connected(\u0022Regex::compiledSplit\u0022)\n private compiledSplit(\n compiled: AnyValue,\n text: String,\n regexRefs: RegexRefs,\n ): List\u003cString\u003e;\n```\n\n\u003c/details\u003e\n\n```\n}\n```\n\n## Private implementation matters?\n\nSome regex logic can be shared across backends. These features aren't directly\nexported to the user, however.\n\nTODO But we do want this exported for pre-compiling where possible in backends.\n\nThe intent is that these support features only get included in compiled Temper\ncode if usage depends on dynamically constructed regexes. If all regex building\nis done as stable values, we hope to generated backend compiled regexes purely\nat Temper compile time.\n\n### RegexFormatter\n\n\u003cdetails\u003e\n\n```\nclass RegexFormatter {\n private let out: StringBuilder = new StringBuilder();\n\n @connected(\u0022Regex::compileFormatted\u0022)\n public static regexCompileFormatted(\n data: RegexNode, formatted: String\n ): AnyValue;\n\n @connected(\u0022Regex::format\u0022)\n public static regexFormat(data: RegexNode): String {\n new RegexFormatter().format(data)\n }\n\n public format(regex: RegexNode): String {\n pushRegex(regex)\n out.toString()\n }\n\n private pushRegex(regex: RegexNode): Void {\n when (regex) {\n // Aggregate types.\n is Capture -\u003e pushCapture(regex);\n is CodePoints -\u003e pushCodePoints(regex, false);\n is CodeRange -\u003e pushCodeRange(regex);\n is CodeSet -\u003e pushCodeSet(regex);\n is Or -\u003e pushOr(regex);\n is Repeat -\u003e pushRepeat(regex);\n is Sequence -\u003e pushSequence(regex);\n // Specials.\n // Some of these will need to be customized on future backends.\n Begin -\u003e out.append(\u0022^\u0022);\n Dot -\u003e out.append(\u0022.\u0022);\n End -\u003e out.append(\u0022\u0024\u0022);\n WordBoundary -\u003e out.append(\u0022\\\\b\u0022);\n // Special sets.\n Digit -\u003e out.append(\u0022\\\\d\u0022);\n Space -\u003e out.append(\u0022\\\\s\u0022);\n Word -\u003e out.append(\u0022\\\\w\u0022);\n // ...\n }\n }\n\n private pushCapture(capture: Capture): Void {\n out.append(\u0022(\u0022);\n // TODO(tjp, regex): Consistent name validation rules for all backends???\n // TODO(tjp, regex): Validate here or in `Capture` constructor???\n // TODO(tjp, regex): Validate here or where against reused names???\n pushCaptureName(out, capture.name);\n pushRegex(capture.item);\n out.append(\u0022)\u0022);\n }\n\n @connected(\u0022RegexFormatter::pushCaptureName\u0022)\n private pushCaptureName(out: StringBuilder, name: String): Void {\n // All so far except Python use this form.\n out.append(\u0022?\u003c\u0024{name}\u003e\u0022);\n }\n\n private pushCode(code: Int, insideCodeSet: Boolean): Void { do {\n // Goal here is to be pretty where commonly accepted by regex dialects.\n // Start with pretty escapes to avoid needing numeric escapes.\n let specialEscape = when (code) {\n Codes.carriageReturn -\u003e \u0022r\u0022;\n Codes.newline -\u003e \u0022n\u0022;\n Codes.tab -\u003e \u0022t\u0022;\n else -\u003e \u0022\u0022;\n };\n if (specialEscape != \u0022\u0022) {\n out.append(\u0022\\\\\u0022);\n out.append(specialEscape);\n return;\n }\n // Look up in table for ascii range.\n if (code \u003c= 0x7F) {\n let escapeNeed = escapeNeeds[code];\n if (\n escapeNeed == needsSimpleEscape ||\n (insideCodeSet \u0026\u0026 code == Codes.dash)\n ) {\n out.append(\u0022\\\\\u0022);\n out.append(String.fromCodePoint(code));\n return;\n } else if (escapeNeed == needsNoEscape) {\n out.append(String.fromCodePoint(code));\n return;\n }\n }\n // Not handled, so check additional ranges for plain vs numeric escape.\n if (\n code \u003e= Codes.supplementalMin || (\n code \u003e Codes.highControlMax \u0026\u0026\n !(\n (Codes.surrogateMin \u003c= code \u0026\u0026 code \u003c= Codes.surrogateMax) ||\n code == Codes.uint16Max\n )\n )\n ) {\n out.append(String.fromCodePoint(code));\n } else {\n // No pretty options above, so go numeric. Each backend often varies here.\n pushCodeTo(out, code, insideCodeSet);\n }\n } orelse panic() } // fromCodePoint bubbles\n\n @connected(\u0022RegexFormatter::pushCodeTo\u0022)\n private pushCodeTo(out: StringBuilder, code: Int, insideCodeSet: Boolean): Void;\n\n private pushCodePoints(codePoints: CodePoints, insideCodeSet: Boolean): Void {\n let value = codePoints.value;\n for (\n var index = String.begin;\n value.hasIndex(index);\n index = value.next(index)\n ) {\n pushCode(value[index], insideCodeSet);\n }\n }\n\n private pushCodeRange(codeRange: CodeRange): Void {\n out.append(\u0022[\u0022);\n pushCodeRangeUnwrapped(codeRange);\n out.append(\u0022]\u0022);\n }\n\n private pushCodeRangeUnwrapped(codeRange: CodeRange): Void {\n pushCode(codeRange.min, true);\n out.append(\u0022-\u0022);\n pushCode(codeRange.max, true);\n }\n\n private pushCodeSet(codeSet: CodeSet): Void {\n let adjusted = adjustCodeSet(codeSet, regexRefs);\n when (adjusted) {\n is CodeSet -\u003e do {\n out.append(\u0022[\u0022);\n if (adjusted.negated) {\n out.append(\u0022^\u0022);\n }\n for (var i = 0; i \u003c adjusted.items.length; i += 1) {\n pushCodeSetItem(adjusted.items[i]);\n }\n out.append(\u0022]\u0022);\n }\n else -\u003e pushRegex(adjusted);\n }\n }\n\n @connected(\u0022RegexFormatter::adjustCodeSet\u0022)\n private adjustCodeSet(codeSet: CodeSet, regexRefs: RegexRefs): RegexNode { codeSet }\n\n private pushCodeSetItem(codePart: CodePart): Void {\n when (codePart) {\n is CodePoints -\u003e pushCodePoints(codePart, true);\n is CodeRange -\u003e pushCodeRangeUnwrapped(codePart);\n is SpecialSet -\u003e pushRegex(codePart);\n }\n }\n\n private pushOr(or: Or): Void {\n if (!or.items.isEmpty) {\n out.append(\u0022(?:\u0022);\n // TODO(tjp, regex): See #822. Until `this` works better, no this in funs.\n // TODO(tjp, regex): So just manually loop here. Sometimes faster, anyway?\n pushRegex(or.items[0]);\n for (var i = 1; i \u003c or.items.length; i += 1) {\n out.append(\u0022|\u0022);\n pushRegex(or.items[i]);\n }\n out.append(\u0022)\u0022);\n }\n }\n\n private pushRepeat(repeat: Repeat): Void {\n // Always wrap the main sub-pattern here to make life easy\n out.append(\u0022(?:\u0022);\n pushRegex(repeat.item);\n out.append(\u0022)\u0022);\n // Then add the repetition part.\n let min = repeat.min;\n let max = repeat.max;\n if (false) {\n } else if (min == 0 \u0026\u0026 max == 1) {\n out.append(\u0022?\u0022);\n } else if (min == 0 \u0026\u0026 max == null) {\n out.append(\u0022*\u0022);\n } else if (min == 1 \u0026\u0026 max == null) {\n out.append(\u0022+\u0022);\n } else {\n out.append(\u0022{\u0024{min}\u0022);\n if (min != max) {\n out.append(\u0022,\u0022);\n if (max != null) {\n out.append(max.toString());\n }\n }\n out.append(\u0022}\u0022);\n }\n if (repeat.reluctant) {\n out.append(\u0022?\u0022);\n }\n }\n\n private pushSequence(sequence: Sequence): Void {\n // TODO(tjp, regex): Foreach loop/function would be nice.\n for (var i = 0; i \u003c sequence.items.length; i += 1) {\n pushRegex(sequence.items[i]);\n }\n }\n\n // Put this here instead of the data model for now because I'm not sure this\n // makes sense to be part of the public api right now.\n public maxCode(codePart: CodePart): Int? {\n when (codePart) {\n is CodePoints -\u003e do {\n // Iterating code points is the hardest of the current cases.\n let value = codePart.value;\n if (value.isEmpty) {\n null\n } else {\n // My kingdom for a fold, or even just a max, in builtins.\n var max = 0;\n for (\n var index = String.begin;\n value.hasIndex(index);\n index = value.next(index)\n ) {\n let next = value[index];\n if (next \u003e max) {\n max = next;\n }\n }\n max\n }\n }\n // Others below are easy for now.\n is CodeRange -\u003e codePart.max;\n Digit -\u003e Codes.digit9;\n Space -\u003e Codes.space;\n Word -\u003e Codes.lowerZ;\n // Actually unexpected, ever, but eh.\n else -\u003e null;\n }\n }\n}\n\n// Cache which chars you just but a blackslash in front of for escaping.\nlet escapeNeeds = buildEscapeNeeds();\nlet needsNoEscape = 0;\nlet needsNumericEscape = 1;\nlet needsSimpleEscape = 2;\nlet buildEscapeNeeds(): List\u003cInt\u003e {\n let escapeNeeds = new ListBuilder\u003cInt\u003e();\n for (var code = 0; code \u003c 0x7F; code += 1) {\n escapeNeeds.add(\n if (\n // Dash needs escaping in code sets, but we'll handle that specially.\n code == Codes.dash ||\n code == Codes.space ||\n code == Codes.underscore ||\n (Codes.digit0 \u003c= code \u0026\u0026 code \u003c= Codes.digit9) ||\n (Codes.upperA \u003c= code \u0026\u0026 code \u003c= Codes.upperZ) ||\n (Codes.lowerA \u003c= code \u0026\u0026 code \u003c= Codes.lowerZ)\n ) {\n needsNoEscape\n } else if (\n // Ampersand and tilde need escaped only in python for now, but meh.\n code == Codes.ampersand ||\n code == Codes.backslash ||\n code == Codes.caret ||\n code == Codes.curlyLeft ||\n code == Codes.curlyRight ||\n code == Codes.dot ||\n code == Codes.peso ||\n code == Codes.pipe ||\n code == Codes.plus ||\n code == Codes.question ||\n code == Codes.roundLeft ||\n code == Codes.roundRight ||\n code == Codes.slash ||\n code == Codes.squareLeft ||\n code == Codes.squareRight ||\n code == Codes.star ||\n code == Codes.tilde\n ) {\n needsSimpleEscape\n } else {\n // We'll also handle \\r, \\n, and \\t specially.\n needsNumericEscape\n },\n );\n }\n escapeNeeds.toList()\n}\n\nclass Codes {\n public static ampersand: Int = char'\u0026';\n public static backslash: Int = char'\\\\';\n public static caret: Int = char'^';\n public static carriageReturn: Int = char'\\r';\n public static curlyLeft: Int = char'{';\n public static curlyRight: Int = char'}';\n public static dash: Int = char'-';\n public static dot: Int = char'.';\n public static highControlMin: Int = 0x7F;\n public static highControlMax: Int = 0x9F;\n public static digit0: Int = char'0';\n public static digit9: Int = char'9';\n public static lowerA: Int = char'a';\n public static lowerZ: Int = char'z';\n public static newline: Int = char'\\n';\n public static peso: Int = char'\u0024';\n public static pipe: Int = char'|';\n public static plus: Int = char'+';\n public static question: Int = char'?';\n public static roundLeft: Int = char'(';\n public static roundRight: Int = char')';\n public static slash: Int = char'/';\n public static squareLeft: Int = char'[';\n public static squareRight: Int = char']';\n public static star: Int = char'*';\n public static tab: Int = char'\\t';\n public static tilde: Int = char'*';\n public static upperA: Int = char'A';\n public static upperZ: Int = char'Z';\n public static space: Int = char' ';\n public static surrogateMin: Int = 0xD800;\n public static surrogateMax: Int = 0xDFFF;\n public static supplementalMin: Int = 0x10000;\n public static uint16Max: Int = 0xFFFF;\n public static underscore: Int = char'_';\n}\n\n```\n\n\u003c/details\u003e\n" ], "names": [ "RegexNode", "Regex", "text", "format", "Capture", "name", "item", "CodePart", "CodePoints", "value", "Special", "SpecialSet", "CodeRange", "min", "max", "CodeSet", "items", "negated", "Or", "Repeat", "reluctant", "Sequence", "Match", "full", "groups", "Group", "begin", "end", "RegexRefs", "codePoints", "group", "match", "orObject", "data", "formatted", "RegexFormatter", "compiled", "regexRefs", "out", "regex", "pushRegex", "pushCapture", "pushCodePoints", "pushCodeRange", "pushCodeSet", "pushOr", "pushRepeat", "pushSequence", "Begin", "Dot", "End", "WordBoundary", "Digit", "Space", "Word", "capture", "pushCaptureName", "pushCode", "code", "insideCodeSet", "return", "fn", "specialEscape", "Codes", "escapeNeed", "escapeNeeds", "index", "codeRange", "pushCodeRangeUnwrapped", "codeSet", "adjusted", "i", "pushCodeSetItem", "codePart", "or", "repeat", "sequence", "next", "ampersand", "backslash", "caret", "carriageReturn", "curlyLeft", "curlyRight", "dash", "dot", "highControlMin", "highControlMax", "digit0", "digit9", "lowerA", "lowerZ", "newline", "peso", "pipe", "plus", "question", "roundLeft", "roundRight", "slash", "squareLeft", "squareRight", "star", "tab", "tilde", "upperA", "upperZ", "space", "surrogateMin", "surrogateMax", "supplementalMin", "uint16Max", "underscore", "buildEscapeNeeds", "entire", "oneOrMore", "optional" ], "mappings": "AA2BA;AAAA;AAAA;AAAiB,aAAAA,SAAA,iBAiDd,EAAA,AAvCM;AAAA;AAAqC,UAAA,AAArC,EAAqC,AAAnB;AAAE,cAAI,CAAAC,KAAK,CAAC,IAAI,CAAC;AAAA;AAWnC;AAAuD,OAAA,AAAvD,CAAMC,MAAY,CAAqC,AAA1B;AAAE,UAAW,AAAX,KAAQ,CAAA,AAAR,QAAQ,EAAE,CAAC,KAAK,CAACA,MAAI,CAAC;AAAA;AAarD;AAEN,MAAA,AAFM,CAAKA,MAAY,CAEvB,AAFyC;AACxC,UAAW,AAAX,KAAQ,CAAA,AAAR,QAAQ,EAAE,CAAC,IAAI,CAACA,MAAI,CAAC;AAAA;AAQhB;AAEN,SAAA,AAFM,CAAQA,MAAY,CAAE,CAAAC,QAA0B,CAEtD,AAFgE;AAC/D,UAAW,AAAX,KAAQ,CAAA,AAAR,QAAQ,EAAE,CAAC,OAAO,CAACD,MAAI,CAAE,CAAAC,QAAM,CAAC;AAAA;AAG3B;AAEN,OAAA,AAFM,CAAMD,MAAY,CAExB,AAFwC;AACvC,UAAW,AAAX,KAAQ,CAAA,AAAR,QAAQ,EAAE,CAAC,KAAK,CAACA,MAAI,CAAC;AAAA;AACvB;AA6BU,aAAAE,OAAA,iBAGO,CAAA,AAjFHJ,SAAA,CAiFG,AAFX;AAAU,uBAAM;AAAZ,EAAAK,QAAI;AACY,0BAAS;AAAf,EAAAC,QAAI;AACP;AAAA;AAAA,cAAA,AAHP,CAAAF,OAAA,CAGO,MAAA,AAFX,IAAgB,CAEL,OAAA,AADD,IAAmB,CAClB;AAAA;AAAA;AAAA,cAAA,AAFPC,OAAY,CACF,CAAAC,OAAe,CAClB;AAAA,aAAA;AAFP,SAAYD,QAAA,EAAA,AAAZ,CAAAA,OAAY;AACF,SAAeC,QAAA,EAAA,AAAf,CAAAA,OAAe,CAAA;AAAnB;AAAmB,GAClB;AAFX;AAAA;AAAA,gBAAAD,QAAA;AAAA;AACU;AAAA;AAAA,gBAAAC,QAAA;AAAA;AAAA,CACC;AAYH,aAAAC,QAAA,iBAA2B,CAAA,AA7F3BP,SAAA,CA6F2B;AAAA;AAe/B,aAAAQ,UAAA,iBAEM,CAAA,AAjBFD,QAAA,CAiBE,AADV;AAAW,uBAAM;AAAb,EAAAE,SAAK;AACC;AAAA,cAAA,AADNA,QAAa,CACP;AAAA,aAAA;AADN,SAAaA,SAAA,EAAA,AAAb,CAAAA,QAAa,CAAA;AAAjB;AAAiB,GACP;AADV;AAAA;AAAA,gBAAAA,SAAA;AAAA;AAAA,CACU;AA2BF,aAAAC,OAAA,iBAA0B,CAAA,AAzI1BV,SAAA,CAyI0B;AAAA;AAY1B,aAAAW,UAAA,iBAAsC,CAAA,AAxDtCJ,QAAA,CA4CA,CAAAG,OAAA,CAYsC;AAAA;AAsB1C,aAAAE,SAAA,iBAGM,CAAA,AAjFFL,QAAA,CAiFE,AAFV;AAAS,uBAAG;AAAR,EAAAM,OAAG;AACE,uBAAG;AAAR,EAAAC,OAAG;AACG;AAAA;AAAA,cAAA,AAHN,CAAAF,SAAA,CAGM,MAAA,AAFV,GAAY,CAEF,OAAA,AADV,GAAY,CACF;AAAA;AAAA;AAAA,cAAA,AAFNC,MAAQ,CACR,CAAAC,MAAQ,CACF;AAAA,aAAA;AAFN,SAAQD,OAAA,EAAA,AAAR,CAAAA,MAAQ;AACR,SAAQC,OAAA,EAAA,AAAR,CAAAA,MAAQ,CAAA;AAAZ;AAAY,GACF;AAFV;AAAA;AAAA,gBAAAD,OAAA;AAAA;AACA;AAAA;AAAA,gBAAAC,OAAA;AAAA;AAAA,CACU;AAeN,aAAAC,OAAA,iBAGO,CAAA,AAhMHf,SAAA,CAgMG,AAFX;AAAW,gCAAc;AAArB,EAAAgB,SAAK;AACI,wBAAO;AAAhB,EAAAC,WAAO;AACA;AAAA;AAAA,cAAA,AAHP,CAAAF,OAAA,CAGO,MAAA,AAFX,KAAyB,CAEd,OAAA,AADX,OAA4B,CACjB;AAAA;AAAA;AAAA,cAAA,AAFPC,QAAqB,CACrB,CAAAC,UAAwB,CACjB;AAAA,aAAA;AADX,OAAI,CAAAA,UAAwB;AAAA,QAAAA,UAAA,WAAA;AAAL,MAAAA,UAAA,EAAK,AAAL,MAAK;AAAA;AAAA,MAAAA,UAAA,GAAAA,UAAA;AAAA,KAAA;AADxB,SAAqBD,SAAA,EAAA,AAArB,CAAAA,QAAqB;AACrB,SAAwBC,WAAA,EAAA,AAAxB,CAAAA,UAAwB,CAAA;AAA5B;AAA4B,GACjB;AAFX;AAAA;AAAA,gBAAAD,SAAA;AAAA;AACA;AAAA;AAAA,gBAAAC,WAAA;AAAA;AAAA,CACW;AAQP,aAAAC,EAAA,iBAEO,CAAA,AA1MHlB,SAAA,CA0MG,AADD;AAAW,iCAAe;AAAtB,EAAAgB,SAAK;AACR;AAAA,cAAA,AADGA,QAAsB,CACzB;AAAA,aAAA;AADG,SAAsBA,SAAA,EAAA,AAAtB,CAAAA,QAAsB,CAAA;AAA1B;AAA0B,GACzB;AADD;AAAA;AAAA,gBAAAA,SAAA;AAAA;AAAA,CACC;AAoBP,aAAAG,MAAA,iBAKO,CAAA,AAnOHnB,SAAA,CAmOG,AAJD;AAAU,0BAAS;AAAf,EAAAM,QAAI;AACT,uBAAG;AAAR,EAAAO,OAAG;AACE,8BAAI;AAAT,EAAAC,OAAG;AACQ,wBAAO;AAAlB,EAAAM,aAAS;AACF;AAAA;AAAA,cAAA,AALP,CAAAD,MAAA,CAKO,MAAA,AAJD,IAAmB,CAIlB,OAAA,AAHX,GAAY,CAGD,OAAA,AAFX,GAAa,CAEF,OAAA,AADX,SAA8B,CACnB;AAAA;AAAA;AAAA,cAAA,AAJGb,OAAe,CACzB,CAAAO,MAAQ,CACR,CAAAC,MAAS,CACT,CAAAM,YAA0B,CACnB;AAAA,aAAA;AADX,OAAI,CAAAA,YAA0B;AAAA,QAAAA,YAAA,WAAA;AAAL,MAAAA,YAAA,EAAK,AAAL,MAAK;AAAA;AAAA,MAAAA,YAAA,GAAAA,YAAA;AAAA,KAAA;AAHhB,SAAed,QAAA,EAAA,AAAf,CAAAA,OAAe;AACzB,SAAQO,OAAA,EAAA,AAAR,CAAAA,MAAQ;AACR,SAASC,OAAA,EAAA,AAAT,CAAAA,MAAS;AACT,SAA0BM,aAAA,EAAA,AAA1B,CAAAA,YAA0B,CAAA;AAA9B;AAA8B,GACnB;AAJD;AAAA;AAAA,gBAAAd,QAAA;AAAA;AACV;AAAA;AAAA,gBAAAO,OAAA;AAAA;AACA;AAAA;AAAA,gBAAAC,OAAA;AAAA;AACA;AAAA;AAAA,gBAAAM,aAAA;AAAA;AAAA,CACW;AAwBP,aAAAC,QAAA,iBAEO,CAAA,AA7PHrB,SAAA,CA6PG,AADD;AAAW,iCAAe;AAAtB,EAAAgB,SAAK;AACR;AAAA,cAAA,AADGA,QAAsB,CACzB;AAAA,aAAA;AADG,SAAsBA,SAAA,EAAA,AAAtB,CAAAA,QAAsB,CAAA;AAA1B;AAA0B,GACzB;AADD;AAAA;AAAA,gBAAAA,SAAA;AAAA;AAAA,CACC;AAgBP,aAAAM,KAAA,iBAGX,EAAA,AAFO;AAAU,sBAAK;AAAX,EAAAC,QAAI;AACI,mCAAkB;AAA1B,EAAAC,UAAM;AACjB;AAAA;AAAA,cAAA,AAHW,CAAAF,KAAA,CAGX,MAAA,AAFO,IAAe,CAEtB,OAAA,AADO,MAA8B,CACrC;AAAA;AAAA;AAAA,cAAA,AAFWC,OAAW,CACX,CAAAC,SAA0B,CACrC;AAAA,aAAA;AAFW,SAAWD,QAAA,EAAA,AAAX,CAAAA,OAAW;AACX,SAA0BC,UAAA,EAAA,AAA1B,CAAAA,SAA0B,CAAA;AAA9B;AAA8B,GACrC;AAFO;AAAA;AAAA,gBAAAD,QAAA;AAAA;AACA;AAAA;AAAA,gBAAAC,UAAA;AAAA;AAAA,CACP;AAEW,aAAAC,KAAA,iBAKX,EAAA,AAJO;AAAU,uBAAM;AAAZ,EAAApB,QAAI;AACG,uBAAM;AAAb,EAAAI,SAAK;AACE,kCAAW;AAAlB,EAAAiB,SAAK;AACA,kCAAW;AAAhB,EAAAC,OAAG;AACd;AAAA;AAAA,cAAA,AALW,CAAAF,KAAA,CAKX,MAAA,AAJO,IAAgB,CAIvB,OAAA,AAHO,KAAiB,CAGxB,OAAA,AAFO,KAAsB,CAE7B,OAAA,AADO,GAAoB,CAC3B;AAAA;AAAA;AAAA,cAAA,AAJWpB,OAAY,CACZ,CAAAI,QAAa,CACb,CAAAiB,QAAkB,CAClB,CAAAC,MAAgB,CAC3B;AAAA,aAAA;AAJW,SAAYtB,QAAA,EAAA,AAAZ,CAAAA,OAAY;AACZ,SAAaI,SAAA,EAAA,AAAb,CAAAA,QAAa;AACb,SAAkBiB,SAAA,EAAA,AAAlB,CAAAA,QAAkB;AAClB,SAAgBC,OAAA,EAAA,AAAhB,CAAAA,MAAgB,CAAA;AAApB;AAAoB,GAC3B;AAJO;AAAA;AAAA,gBAAAtB,QAAA;AAAA;AACA;AAAA;AAAA,gBAAAI,SAAA;AAAA;AACA;AAAA;AAAA,gBAAAiB,SAAA;AAAA;AACA;AAAA;AAAA,gBAAAC,OAAA;AAAA;AAAA,CACP;AAeI,MAAAC,YAAA,iBAUJ,EAAA,AATO;AAAgB,2BAAU;AAAtB,EAAAC,cAAU;AACH,sBAAK;AAAZ,EAAAC,SAAK;AAGE,sBAAK;AAAZ,EAAAC,SAAK;AAIK,mBAAE;AAAZ,EAAAC,YAAQ;AACnB;AAAA;AAAA,cAAA,AAVI,CAAAJ,YAAA,CAUJ,MAAA,AATO,UAA+C,CAStD,OAAA,AARO,KAEN,CAMD,OAAA,AALO,KAGN,CAED,OAAA,AADO,QAA6B,CACpC;AAAA;AAAA;AAAA,cAAA,AATWC,aAA2C,CAC3C,CAAAC,QAEV,CACU,CAAAC,QAGV,CACU,CAAAC,WAAyB,CACpC;AAAA,aAAA;AAToC,YAAkB;AAC5B,YAEzB;AAGS,YAA6C,CAAA;AAF7B,YAGzB;AACyB,YAAU,CAAA;AAR7B,OAAI,CAAAH,aAA2C;AAAA,QAAAA,aAAA,WAAA;AAAlB,YAAkB,AAAlB,IAAI,CAAArB,UAAU,CAAC,EAAE,CAAC,CAAA;AAAlB,MAAAqB,aAAA,EAAkB,AAAlB,KAAkB;AAAA;AAAA,MAAAA,aAAA,GAAAA,aAAA;AAAA;AAC/C,OAAI,CAAAC,QAEV;AAAA,QAAAA,QAAA,WAAA;AAFyB,YAEzB,AAFyB,IACxB,CAAAL,KAAA,CAAM,EAAE,CAAS,GAAE,CAAS,EAAY,CAAO,EAAY,CAC5D,CAAA;AAFyB,MAAAK,QAAA,EAEzB,AAFyB,KAEzB;AAAA;AAAA,MAAAA,QAAA,GAAAA,QAAA;AAAA;AACM,OAAI,CAAAC,QAGV;AAAA,QAAAA,QAAA,WAAA;AADS,YAA6C,AAAzC,kBAAkB,CAAC,MAAqB,CAAA,AAArB,MAAqB,CAAA,AAArB,CAAK,kBAAI,CAAC,EAAE,CAAE,CAAAD,QAAK,CAAC,CAAC,EAAC,CAAA;AAF7B,YAGzB,AAHyB,IACxB,CAAAR,KAAA,CAAMQ,QAAK,CACH,KAA6C,CACtD,CAAA;AAHyB,MAAAC,QAAA,EAGzB,AAHyB,KAGzB;AAAA;AAAA,MAAAA,QAAA,GAAAA,QAAA;AAAA;AACM,OAAI,CAAAC,WAAyB;AAAA,QAAAA,WAAA,WAAA;AAAV,YAAU,AAAV,IAAI,CAAAd,EAAE,CAAC,MAAE,CAAA,AAAF,MAAE,CAAA,AAAF,EAAE,EAAC,CAAA;AAAV,MAAAc,WAAA,EAAU,AAAV,KAAU;AAAA;AAAA,MAAAA,WAAA,GAAAA,WAAA;AAAA,KAAA;AARzB,SAA2CH,cAAA,EAAA,AAA3C,CAAAA,aAA2C;AAC3C,SAEVC,SAAA,EAAA,AAFU,CAAAA,QAEV;AACU,SAGVC,SAAA,EAAA,AAHU,CAAAA,QAGV;AACU,SAAyBC,YAAA,EAAA,AAAzB,CAAAA,WAAyB,CAAA;AAA7B;AAA6B,GACpC;AATO;AAAA;AAAA,gBAAAH,cAAA;AAAA;AACA;AAAA;AAAA,gBAAAC,SAAA;AAAA;AAGA;AAAA;AAAA,gBAAAC,SAAA;AAAA;AAIA;AAAA;AAAA,gBAAAC,YAAA;AAAA;AAAA;AAWI,aAAA/B,KAAA,iBAoEI,EAAA,AA7DR;AAAU,0BAAS;AAAf,EAAAgC,QAAI;AAER,mCAKN;AALM,cAAYA,OAAe,CAKjC,AALM;AAAA,SAKN,IAAA;AAJC,gBAAY,CAAAA,OAAI,AAAhB;AAAA,QAAI,CAAYA,QAAA,EAAA,AAAJ,KAAI;AAEhB,SAAI,CAAAC,YAAS,EAAG,CAAAC,iBAAc,CAAY,YAACF,OAAI,CAAC;AACrC,YAAqD,EAAA,AAArD,0BAAqD,CAAA,AAAhBA,OAAI,CAAE,CAAAC,YAAS,CAAC,CAAA;AAAhE,QAAQ,CAAwDE,aAAA,EAAA,AAArD,KAAqD;AAAA;AAAC;AAQ5D;AAEN,OAAA,AAFM,CAAMlC,QAAY,CAExB,AAFmC;AAClC,iCAAa,CAAA,AAAb,IAAa,CAAC,KAAQ,CAAAkC,aAAA,CAAE,CAAAlC,QAAI,CAAC;AAAA;AAGxB;AAEN,MAAA,AAFM,CAAKA,QAAY,CAAE,CAAAwB,SAAiC,CAE1D,AAF4E,EAAA;AAAnD,QAAAA,SAAiC;AAAA,QAAAA,SAAA,WAAA;AAAZ,MAAAA,SAAA,EAAY,AAAZ,EAAY;AAAA;AAAA,MAAAA,SAAA,GAAAA,SAAA;AAAA;AACzD,gCAAY,CAAA,AAAZ,IAAY,CAAC,KAAQ,CAAAU,aAAA,CAAE,CAAAlC,QAAI,CAAE,CAAAwB,SAAK,CAAE,CAAAW,aAAS,CAAC;AAAA;AAGzC;AAEN,SAAA,AAFM,CAAQnC,QAAY,CAAE,CAAAC,UAA0B,CAEtD,AAFgE;AAC/D,mCAAe,CAAA,AAAf,IAAe,CAAC,KAAQ,CAAAiC,aAAA,CAAE,CAAAlC,QAAI,CAAE,CAAAC,UAAM,CAAE,CAAAkC,aAAS,CAAC;AAAA;AAG7C;AAEN,OAAA,AAFM,CAAMnC,QAAY,CAExB,AAFwC;AACvC,iCAAa,CAAA,AAAb,IAAa,CAAC,KAAQ,CAAAkC,aAAA,CAAE,CAAAlC,QAAI,CAAE,CAAAmC,aAAS,CAAC;AAAA;AASpB,wBAAQ;AAAlB,EAAAD,aAAQ,CAAU;AApCvB;AAAA;AAAA,gBAAAH,QAAA;AAAA;AAAA,CA6DQ;AA0BX,MAAAE,iBAAA,iBAkPH,EAAA,AAlPkB;AACF,yCAAa;AAAlB,EAAAG,QAAG;AAQD;AAEb,QAAA,AAFa,YAAW,AAAX,CAAYL,QAAe,CAExC,AAFkD;AACjD,UAAqB,AAArB,IAAI,CAAAE,iBAAc,EAAE,CAAC,MAAM,CAACF,QAAI,CAAC;AAAA;AAG5B;AAGN,QAAA,AAHM,CAAOM,SAAgB,CAG7B,AAHuC;AACtC,QAAS,CAAA,AAATC,cAAS,CAACD,SAAK,CAAC;AAChB,eAAG,CAAAD,QAAA;AAAW;AAGR;AAsBP,EAAAE,cAAA,AAtBO,CAAUD,SAAgB,CAsBjC,AAtByC;AAqBvC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAAA;AApBD,QAEK,AAFCA,SAAK,WAEN,CAAAnC,OAAO;AAkBX,qCAAAmC,SAAA,EAAAnC,OAAA,EAAA;AAlBe,UAAW,CAAA,AAAXqC,gBAAW,CAAC,KAAK,CAAC;AAAA,UAAA,AAFlC,KAGK,AAHCF,SAAK,WAGN,CAAA/B,UAAU;AAiBd,qCAAA+B,SAAA,EAAA/B,UAAA,EAAA;AAjBkB,UAAc,CAAA,AAAdkC,mBAAc,CAAC,KAAK,CAAE,MAAK,CAAC;AAAA,UAAA,AAH/C,KAIK,AAJCH,SAAK,WAIN,CAAA3B,SAAS;AAgBb,qCAAA2B,SAAA,EAAA3B,SAAA,EAAA;AAhBiB,UAAa,CAAA,AAAb+B,kBAAa,CAAC,KAAK,CAAC;AAAA,UAAA,AAJtC,KAKK,AALCJ,SAAK,WAKN,CAAAxB,OAAO;AAeX,qCAAAwB,SAAA,EAAAxB,OAAA,EAAA;AAfe,UAAW,CAAA,AAAX6B,gBAAW,CAAC,KAAK,CAAC;AAAA,UAAA,AALlC,KAMK,AANCL,SAAK,WAMN,CAAArB,EAAE;AAcN,qCAAAqB,SAAA,EAAArB,EAAA,EAAA;AAdU,UAAM,CAAA,AAAN2B,WAAM,CAAC,KAAK,CAAC;AAAA,UAAA,AANxB,KAOK,AAPCN,SAAK,WAON,CAAApB,MAAM;AAaV,qCAAAoB,SAAA,EAAApB,MAAA,EAAA;AAbc,UAAU,CAAA,AAAV2B,eAAU,CAAC,KAAK,CAAC;AAAA,UAAA,AAPhC,KAQK,AARCP,SAAK,WAQN,CAAAlB,QAAQ;AAYZ,qCAAAkB,SAAA,EAAAlB,QAAA,EAAA;AAZgB,UAAY,CAAA,AAAZ0B,iBAAY,CAAC,KAAK,CAAC;AAAA,UAAA,AARpC,KAWE,MAAK,CAAA,AAAL,EAAK,CAAA,AAXDR,SAAK,CAWT,CAAAS,KAAK;AAAI,UAAG,CAAAV,QAAA,GAAQ,OAAI;AAAA,UAAA,AAX1B,KAYE,MAAG,CAAA,AAAH,EAAG,CAAA,AAZCC,SAAK,CAYT,CAAAU,GAAG;AAAI,UAAG,CAAAX,QAAA,GAAQ,OAAI;AAAA,UAAA,AAZxB,KAaE,MAAG,CAAA,AAAH,EAAG,CAAA,AAbCC,SAAK,CAaT,CAAAW,GAAG;AAAI,UAAG,CAAAZ,QAAA,GAAQ,YAAI;AAAA,UAAA,AAbxB,KAcE,MAAY,CAAA,AAAZ,EAAY,CAAA,AAdRC,SAAK,CAcT,CAAAY,YAAY;AAAI,UAAG,CAAAb,QAAA,GAAQ,SAAM;AAAA,UAAA,AAdnC,KAgBE,MAAK,CAAA,AAAL,EAAK,CAAA,AAhBDC,SAAK,CAgBT,CAAAa,KAAK;AAAI,UAAG,CAAAd,QAAA,GAAQ,SAAM;AAAA,UAAA,AAhB5B,KAiBE,MAAK,CAAA,AAAL,EAAK,CAAA,AAjBDC,SAAK,CAiBT,CAAAc,KAAK;AAAI,UAAG,CAAAf,QAAA,GAAQ,SAAM;AAAA,UAAA,AAjB5B,KAkBE,MAAI,CAAA,AAAJ,EAAI,CAAA,AAlBAC,SAAK,CAkBT,CAAAe,IAAI;AAAI,UAAG,CAAAhB,QAAA,GAAQ,SAAM;AAAA,KAE1B;AApBD;AAoBC;AAGK;AAQP,EAAAG,gBAAA,AARO,CAAYc,WAAgB,CAQnC,AAR2C;AAC1C,QAAG,CAAAjB,QAAA,GAAQ,OAAI;AAIC,aAAG,EAAA,AAAH,KAAG,CAAAA,QAAA;AAAE,aAAY,EAAA,AAAZ,CAAAiB,WAAO,CAAK,KAAA;AAAjC,QAAe,CAAA,AAAfC,oBAAe,CAAC,KAAG,CAAE,MAAY,CAAC;AACxB,aAAY,EAAA,AAAZ,CAAAD,WAAO,CAAK,KAAA;AAAtB,QAAS,CAAA,AAATf,cAAS,CAAC,KAAY,CAAC;AACvB,QAAG,CAAAF,QAAA,GAAQ,OAAI;AAAA;AAAC;AAIV;AAGP,EAAAkB,oBAAA,AAHO,CAAgBlB,OAAkB,CAAE,CAAAjC,QAAY,CAGvD,AAH+D;AAE9D,IAAAiC,OAAG,GAAQ,GAAC,UAAE,AAAH,EAAY,AAAP,CAAAjC,QAAO,AAAZ,EAAY,AAAF,SAAG;AAAA;AAAC;AAGnB;AA4CU,EAAAoD,aAAA,AA5CV,CAASC,QAAS,CAAE,CAAAC,iBAAsB,CA4ChC,AA5CwC,EAAA;AAAL,QAAAC,UAAI;AAmBjC,aAAkB,CAAA;AADL;AAIpB,aAA0B;AAG1B,aAA0B;AASJ,aAA0B,CAAA;AAAxD,cAAA;AADH,aAGC,CAAA;AAL0B;AAQlB,aAA0B,CAAA;AAvCiB,IAAAC,MA4CxC,CAAA,AA5CwC;AAAE;AAG1D,WAAI,CAAAC,iBAKH,CAAA;AALmB,YAClB,AADwBJ,QACxB,IAAoB,AAApB,CAAAK,SAAK,CAAe;AAAI,UAAAD,iBAAA,EAAG,AAAH,IAAG;AAAA,cAAA,AADT,KAElB,AAFwBJ,QAExB,IAAa,AAAb,CAAAK,SAAK,CAAQ;AAAI,UAAAD,iBAAA,EAAG,AAAH,IAAG;AAAA,cAAA,AAFF,KAGlB,AAHwBJ,QAGxB,IAAS,AAAT,CAAAK,SAAK,CAAI;AAAI,UAAAD,iBAAA,EAAG,AAAH,IAAG;AAAA;AACR,UAAAA,iBAAA,EAAE,AAAF,GAAE,CAAA;AAAN;AAEN,YAAIA,iBAAa,AAAb,IAAmB,AAAF,GAAE;AACrB,cAAG,CAAAxB,QAAA,GAAQ,QAAK;AAChB,cAAG,CAAAA,QAAA,GAAQ,IAAAwB,iBAAc;AACzB,UAAAF,UAAM,AAAN,EAAM,AAAN,OAAM,CAAA;AAAN,gBAAAC,MAAM;AACP;AAED,YAAIH,QAAI,AAAJ,GAAY,AAAJ,IAAI;AACd,eAAI,CAAAM,cAAU,EAAc,eAAA,AAAXC,eAAW,CAAC,CAAAP,QAAI,CAAC;AAEhC,cAAAM,cAAU,AAAV,IAA+B,AAAjB,EAAiB;AAAA;AAAA;AAC9B,gBAAAL,iBAAa;AAAI,qBAAkB,AAAlB,CAAAD,QAAI,AAAJ,IAAkB,AAAV,CAAAK,SAAK,CAAK;AAAA;AAAA;AAAA,aAAA;AAAnC;AAAA,WAAA;AAFH,cACE;AAGA,gBAAG,CAAAzB,QAAA,GAAQ,QAAK;AACL,mBAA0B,AAA1B,wBAA0B,CAAA,AAALoB,QAAI,CAAC,CAAA;AAArC,gBAAG,CAAApB,QAAA,GAAQ,SAA2B;AACtC,YAAAsB,UAAM,AAAN,EAAM,AAAN,OAAM,CAAA;AAAN,kBAAAC,MAAM;AACP,gBAAA,AAPD,KAOWG,cAAU,AAAV,IAA2B,AAAb,EAAa;AACzB,mBAA0B,AAA1B,wBAA0B,CAAA,AAALN,QAAI,CAAC,CAAA;AAArC,gBAAG,CAAApB,QAAA,GAAQ,SAA2B;AACtC,YAAAsB,UAAM,AAAN,EAAM,AAAN,OAAM,CAAA;AAAN,kBAAAC,MAAM;AACP;AACF;AAGC,YAAAH,QAAI,AAAJ,GAA6B,AAArB,CAAAK,SAAK,CAAgB;AAAA;AAAA;AAC3B,cAAAL,QAAI,AAAJ,EAA2B,AAApB,CAAAK,SAAK,CAAe;AAExB,gBAAAA,SAAK,CAAa,YAAA,AAAlB,GAA0B,AAAJ,CAAAL,QAAI;AAAI,qBAA0B,AAA1B,CAAAA,QAAI,AAAJ,GAA0B,AAAlB,CAAAK,SAAK,CAAa;AAAA;AAAA;AAAA,aAAA;AAAzD,gBAAC;AAAA;AAAA;AACD,qBAAuB,AAAvB,CAAAL,QAAI,AAAJ,IAAuB,AAAf,CAAAK,SAAK,CAAU;AAAA,aAAA;AAFzB,mBAGC,AAHD,EACE,MAED;AAAA;AAAA;AAAA,WAAA;AAJD;AAAA,SAAA;AAFJ,YACE;AAQW,iBAA0B,AAA1B,wBAA0B,CAAA,AAALL,QAAI,CAAC,CAAA;AAArC,cAAG,CAAApB,QAAA,GAAQ,SAA2B;AACvC;AAEC,sCAAU,CAAA,AAAV,IAAU,CAAC,KAAG,CAAAA,QAAA,CAAE,CAAAoB,QAAI,CAAE,CAAAC,iBAAa,CAAC;AACrC;AACF,OAAQ;AAAA,mBAAO;AAAA,OAAA;AA5CqC,MAAAC,UAAO,EA4C5C,AA5C4C,OA4C5C;AAAA;AAAE,UAAA,AA5CmC,CAAAA,UAAA;AA4CnC;AAKV;AASP,EAAAlB,mBAAA,AATO,CAAeb,cAAsB,CAAE,CAAA8B,iBAAsB,CASpE,AAT4E;AAOhE,aAAY,CAAA;AAFb,aAAiB,CAAA;AAJ3B,SAAI,CAAAlD,SAAK,EAAG,CAAAoB,cAAU,CAAM;AAEvB,OAAC,CAAAqC,SAAK,EAAG,EAAY,CAAA;AAD1B,kBAIE;AAFA,YAAAzD,SAAK,SAAU,CAAAyD,SAAM;AAAA;AAAA;AAGZ,aAAY,AAAP,eAAA,AAALzD,SAAK,CAAC,CAAAyD,SAAK,CAAC,CAAA;AAArB,UAAQ,CAAA,AAART,aAAQ,CAAC,KAAY,CAAE,CAAAE,iBAAa,CAAC,CAAA;AAF7B,aAAiB,AAAX,eAAI,CAAA,AAAVlD,SAAK,CAAM,CAAAyD,SAAK,CAAC,CAAA;AAAzB,MAAAA,SAAK,AAAL,EAAyB,AAAjB,MAAiB;AAG1B,KAAA;AAND;AAAA;AASM;AAIP,EAAAvB,kBAAA,AAJO,CAAcwB,aAAoB,CAIzC,AAJiD;AAChD,QAAG,CAAA7B,QAAA,GAAQ,OAAI;AACf,QAAsB,CAAA,AAAtB8B,2BAAsB,CAACD,aAAS,CAAC;AACjC,QAAG,CAAA7B,QAAA,GAAQ,OAAI;AAAA;AAAC;AAGV;AAIP,EAAA8B,2BAAA,AAJO,CAAuBD,aAAoB,CAIlD,AAJ0D;AAChD,aAAa,EAAA,AAAb,CAAAA,aAAS,CAAI,IAAA;AAAtB,QAAQ,CAAA,AAARV,aAAQ,CAAC,KAAa,CAAE,KAAI,CAAC;AAC7B,QAAG,CAAAnB,QAAA,GAAQ,OAAI;AACN,aAAa,EAAA,AAAb,CAAA6B,aAAS,CAAI,IAAA;AAAtB,QAAQ,CAAA,AAARV,aAAQ,CAAC,KAAa,CAAE,KAAI,CAAC;AAAA;AAAC;AAGxB;AAeP,EAAAb,gBAAA,AAfO,CAAYyB,WAAgB,CAenC,AAf2C;AAQlB,aAAqB;AACvB,aAAiB;AAKtC,cAAA;AAbD,SAAI,CAAAC,YAAQ,EAAG,gCAAa,CAAA,AAAb,IAAa,CAAC,CAAAD,WAAO,CAAE,CAAAhC,aAAS,CAAC;AAChD,QACK,AADCiC,YAAQ,WACT,CAAAvD,OAAO;AAWX,qCAAAuD,YAAA,EAAAvD,OAAA,EAAA;AAVG,UAAG,CAAAuB,QAAA,GAAQ,OAAI;AACf,UAAI,KAAQ,CAAQ;AAClB,YAAG,CAAAA,QAAA,GAAQ,OAAI;AAChB;AACO,SAAC,CAAAiC,KAAC,EAAG,EAAC,CAAA;AAAd,oBAAmD;AAA/B,eAAqB,AAArB,MAAQ,CAAM,MAAO,OAAA;AAAzB,cAAAA,KAAC,AAAD,EAAyB,AAArB,MAAqB;AAAA;AAAA;AACvB,eAAiB,AAAH,eAAA,AAAd,KAAQ,CAAM,MAAC,CAAAA,KAAC,CAAC,CAAA;AAAjC,YAAe,CAAA,AAAfC,oBAAe,CAAC,KAAiB,CAAC,CAAA;AADO,QAAAD,KAAC,AAAD,EAAM,AAAN,CAAAA,KAAC,AAAD,EAAK,EAAC;AAEhD;AACD,UAAG,CAAAjC,QAAA,GAAQ,OAAI;AAChB;AACO,UAAS,CAAA,AAATE,cAAS,CAAC8B,YAAQ,CAAC,CAAA;AAAvB,KACL;AAZD;AAYC;AAMK;AAMP,EAAAE,oBAAA,AANO,CAAgBC,YAAkB,CAMzC,AANiD;AAK/C;AAAA;AAAA,cAAA;AAJD,QACK,AADCA,YAAQ,WACT,CAAAjE,UAAU;AAGd,qCAAAiE,YAAA,EAAAjE,UAAA,EAAA;AAHkB,UAAc,CAAA,AAAdkC,mBAAc,CAAC,KAAQ,CAAE,KAAI,CAAC;AAAA,UAAA,AADjD,KAEK,AAFC+B,YAAQ,WAET,CAAA7D,SAAS;AAEb,qCAAA6D,YAAA,EAAA7D,SAAA,EAAA;AAFiB,UAAsB,CAAA,AAAtBwD,2BAAsB,CAAC,KAAQ,CAAC;AAAA,UAAA,AAFlD,KAGK,AAHCK,YAAQ,WAGT,CAAA9D,UAAU;AACd,qCAAA8D,YAAA,EAAA9D,UAAA,EAAA;AADkB,UAAS,CAAA,AAAT6B,cAAS,CAAC,KAAQ,CAAC;AAAA,KACrC;AAJD;AAIC;AAGK;AAYP,EAAAK,WAAA,AAZO,CAAO6B,MAAM,CAYpB,AAZ4B;AAKf,aAAW;AACD,aAAe;AAEvB,aAAW,CAAA;AAPzB,QAAI,CAAC,GAAAA,MAAE,CAAM,MAAA,AAAR,MAAgB;AACnB,UAAG,CAAApC,QAAA,GAAQ,SAAM;AAGP,aAAW,AAAH,eAAA,AAARoC,MAAE,CAAM,MAAC,EAAC,CAAC,CAAA;AAArB,UAAS,CAAA,AAATlC,cAAS,CAAC,KAAW,CAAC;AACd,SAAC,CAAA+B,KAAC,EAAG,EAAC,CAAA;AAAd,oBAA6C;AAAzB,eAAe,AAAf,CAAAG,MAAE,CAAM,MAAO,OAAA;AAAnB,cAAAH,KAAC,AAAD,EAAmB,AAAf,MAAe;AAAA;AAAA;AACjC,YAAG,CAAAjC,QAAA,GAAQ,OAAI;AACL,eAAW,AAAH,eAAA,AAARoC,MAAE,CAAM,MAAC,CAAAH,KAAC,CAAC,CAAA;AAArB,YAAS,CAAA,AAAT/B,cAAS,CAAC,KAAW,CAAC,CAAA;AAFa,QAAA+B,KAAC,AAAD,EAAM,AAAN,CAAAA,KAAC,AAAD,EAAK,EAAC;AAG1C;AACD,UAAG,CAAAjC,QAAA,GAAQ,OAAI;AAChB,KAAA;AAVD;AAUC;AAGK;AA4BP,EAAAQ,eAAA,AA5BO,CAAW6B,UAAc,CA4BhC,AA5BwC;AAgBxB,aAAO;AAIL,aAAc,CAAA;AAXR,aAAQ;AAER,aAAW;AAEX,aAAW,CAAA;AAXlC,QAAG,CAAArC,QAAA,GAAQ,SAAM;AACP,aAAW,EAAA,AAAX,CAAAqC,UAAM,CAAK,KAAA;AAArB,QAAS,CAAA,AAATnC,cAAS,CAAC,KAAW,CAAC;AACtB,QAAG,CAAAF,QAAA,GAAQ,OAAI;AAEf,SAAI,CAAAzB,OAAG,EAAG,CAAA8D,UAAM,CAAI;AACpB,SAAI,CAAA7D,OAAG,EAAG,CAAA6D,UAAM,CAAI;AAET,QAAA9D,OAAG,AAAH,IAAQ,AAAD,EAAC;AAAI,aAAQ,AAAR,CAAAC,OAAG,AAAH,IAAQ,AAAD,EAAC;AAAA;AAAA;AAAA,KAAA;AAD/B,QACW;AACT,UAAG,CAAAwB,QAAA,GAAQ,OAAI;AAChB,YAAA;AAAU,UAAAzB,OAAG,AAAH,IAAQ,AAAD,EAAC;AAAI,eAAW,AAAX,CAAAC,OAAW;AAAA;AAAA;AAAA,OAAA;AAHlC,UAGW;AACT,YAAG,CAAAwB,QAAA,GAAQ,OAAI;AAChB,cAAA;AAAU,YAAAzB,OAAG,AAAH,IAAQ,AAAD,EAAC;AAAI,iBAAW,AAAX,CAAAC,OAAW;AAAA;AAAA;AAAA,SAAA;AALlC,YAKW;AACT,cAAG,CAAAwB,QAAA,GAAQ,OAAI;AAChB;AACc,iBAAO,AAAL,CAAAzB,OAAG,CAAA,AAAL,QAAO,GAAA;AAApB,cAAG,CAAAyB,QAAA,GAAQ,GAAC,IAAC,AAAF,EAAS,AAAP,MAAQ;AACrB,cAAIzB,OAAG,AAAH,IAAU,AAAH,CAAAC,OAAG;AACZ,gBAAG,CAAAwB,QAAA,GAAQ,OAAI;AACf,gBAAI,EAAAxB,OAAW;AACF,qBAAc,AAC1B,CAAAA,OAAA,CAAA,AADY,QAAc,GAAA;AAAzB,kBAAG,CAAAwB,QAAA,GAAQ,SAAe;AAC3B;AACF;AACD,cAAG,CAAAA,QAAA,GAAQ,OAAI;AAChB;AAAA;AAAA;AACD,QAAIqC,UAAM,CAAU;AAClB,UAAG,CAAArC,QAAA,GAAQ,OAAI;AAChB,KAAA;AAFD;AAEC;AAGK;AAKP,EAAAS,iBAAA,AALO,CAAa6B,YAAkB,CAKtC,AAL8C;AAEzB,aAAqB;AAC7B,aAAiB,CAAA;AADrB,OAAC,CAAAL,KAAC,EAAG,EAAC,CAAA;AAAd,kBAAmD;AAA/B,aAAqB,AAArB,CAAAK,YAAQ,CAAM,MAAO,OAAA;AAAzB,YAAAL,KAAC,AAAD,EAAyB,AAArB,MAAqB;AAAA;AAAA;AAC7B,aAAiB,AAAH,eAAA,AAAdK,YAAQ,CAAM,MAAC,CAAAL,KAAC,CAAC,CAAA;AAA3B,UAAS,CAAA,AAAT/B,cAAS,CAAC,KAAiB,CAAC,CAAA;AADa,MAAA+B,KAAC,AAAD,EAAM,AAAN,CAAAA,KAAC,AAAD,EAAK,EAAC;AAEhD,KAAA;AAFD;AAAA;AAOK;AA+BN,SAAA,AA/BM,CAAQE,YAAkB,CA+BhC,AA/BwC,EAAA;AAAL,QAAAb,UAAI;AAatB,aAAiB;AAiBhC,cAAA;AA7BD,QACK,AADCa,YAAQ,WACT,CAAAjE,UAAU;AA4Bd,qCAAAiE,YAAA,EAAAjE,UAAA,EAAA;AA1BG,WAAI,CAAAC,SAAK,EAAG,MAAQ,CAAM;AAC1B,UAAI,EAAAA,SAAa;AACf,QAAAmD,UAAA,EAAI,AAAJ,KAAI;AACL;AAEI,WAAC,CAAA9C,OAAG,EAAG,EAAC;AAEN,WAAC,CAAAoD,SAAK,EAAG,EAAY,CAAA;AAD1B,sBAIE;AAFA,gBAAAzD,SAAK,SAAU,CAAAyD,SAAM;AAAA;AAAA;AAGrB,eAAI,CAAAW,QAAI,EAAQ,eAAA,AAALpE,SAAK,CAAC,CAAAyD,SAAK,CAAC;AACvB,cAAIW,QAAI,AAAJ,EAAU,AAAH,CAAA/D,OAAG;AACZ,YAAAA,OAAG,AAAH,EAAU,AAAJ,CAAA+D,QAAI;AACX,WAAA;AALO,iBAAiB,AAAX,eAAI,CAAA,AAAVpE,SAAK,CAAM,CAAAyD,SAAK,CAAC,CAAA;AAAzB,UAAAA,SAAK,AAAL,EAAyB,AAAjB,MAAiB;AAM1B,SAAA;AAZI,QAAAN,UAAA,EAcN,AAdM,CAAA9C,OAcN;AAAA;AACF,UAAA,AArBH,KAuBK,AAvBC2D,YAAQ,WAuBT,CAAA7D,SAAS;AAAI,MAAAgD,UAAA,EAAY,AAM7B,wBAAAa,YAAA,EAAA7D,SAAA,EAAA,AAN6B;AAAA,UAAA,AAvB9B,KAwBE,MAAK,CAAA,AAAL,EAAK,CAAA,AAxBD6D,YAAQ,CAwBZ,CAAArB,KAAK;AAAI,MAAAQ,UAAA,EAAY,AAAZ,CAAAG,SAAK,CAAO;AAAA,UAAA,AAxBvB,KAyBE,MAAK,CAAA,AAAL,EAAK,CAAA,AAzBDU,YAAQ,CAyBZ,CAAApB,KAAK;AAAI,MAAAO,UAAA,EAAW,AAAX,CAAAG,SAAK,CAAM;AAAA,UAAA,AAzBtB,KA0BE,MAAI,CAAA,AAAJ,EAAI,CAAA,AA1BAU,YAAQ,CA0BZ,CAAAnB,IAAI;AAAI,MAAAM,UAAA,EAAY,AAAZ,CAAAG,SAAK,CAAO;AAAA;AAEZ,MAAAH,UAAA,EAAI,AAAJ,KAAI,CAAA;AAAR;AAEP,UAAA,AA/BmC,CAAAA,UAAA;AA+BnC,GAAA;AAlPkB;AAAA;AACc,aAAmB,EAAA,AAAnB,IAAmB,EAAA;AAAxC,SAAwCtB,QAAA,EAAA,AAAnB,MAAmB,CAAA;AAA5C;AAA4C,GAAA;AADjC;AAsSf,MAAAyB,SAAA,iBAmCmC,EAAA,AAnC7B;AACe;AAAG,QAAA,AAAd,CAAAe,cAAS,EAAQ,GAAO,CAAA;AAAb;AAAG,YAAA,AAAd,UAAS,AAAT,EAAwB,AAAxB;AAAA,eAAwB,CAAA,AAAxBA,cAAwB;AAAA;AACb;AAAG,QAAA,AAAd,CAAAC,cAAS,EAAQ,GAAQ,CAAA;AAAd;AAAG,YAAA,AAAd,UAAS,AAAT,EAAyB,AAAzB;AAAA,eAAyB,CAAA,AAAzBA,cAAyB;AAAA;AAClB;AAAG,QAAA,AAAV,CAAAC,UAAK,EAAQ,GAAO,CAAA;AAAb;AAAG,YAAA,AAAV,MAAK,AAAL,EAAoB,AAApB;AAAA,eAAoB,CAAA,AAApBA,UAAoB;AAAA;AACJ;AAAG,QAAA,AAAnB,CAAAC,mBAAc,EAAQ,GAAQ,CAAA;AAAd;AAAG,YAAA,AAAnB,eAAc,AAAd,EAA8B,AAA9B;AAAA,eAA8B,CAAA,AAA9BA,mBAA8B;AAAA;AACnB;AAAG,QAAA,AAAd,CAAAC,cAAS,EAAQ,IAAO,CAAA;AAAb;AAAG,YAAA,AAAd,UAAS,AAAT,EAAwB,AAAxB;AAAA,eAAwB,CAAA,AAAxBA,cAAwB;AAAA;AACZ;AAAG,QAAA,AAAf,CAAAC,eAAU,EAAQ,IAAO,CAAA;AAAb;AAAG,YAAA,AAAf,WAAU,AAAV,EAAyB,AAAzB;AAAA,eAAyB,CAAA,AAAzBA,eAAyB;AAAA;AACnB;AAAG,QAAA,AAAT,CAAAC,SAAI,EAAQ,GAAO,CAAA;AAAb;AAAG,YAAA,AAAT,KAAI,AAAJ,EAAmB,AAAnB;AAAA,eAAmB,CAAA,AAAnBA,SAAmB;AAAA;AACd;AAAG,QAAA,AAAR,CAAAC,QAAG,EAAQ,GAAO,CAAA;AAAb;AAAG,YAAA,AAAR,IAAG,AAAH,EAAkB,AAAlB;AAAA,eAAkB,CAAA,AAAlBA,QAAkB;AAAA;AACF;AAAG,QAAA,AAAnB,CAAAC,mBAAc,EAAQ,IAAI,CAAA;AAAV;AAAG,YAAA,AAAnB,eAAc,AAAd,EAA0B,AAA1B;AAAA,eAA0B,CAAA,AAA1BA,mBAA0B;AAAA;AACV;AAAG,QAAA,AAAnB,CAAAC,mBAAc,EAAQ,IAAI,CAAA;AAAV;AAAG,YAAA,AAAnB,eAAc,AAAd,EAA0B,AAA1B;AAAA,eAA0B,CAAA,AAA1BA,mBAA0B;AAAA;AAClB;AAAG,QAAA,AAAX,CAAAC,WAAM,EAAQ,GAAO,CAAA;AAAb;AAAG,YAAA,AAAX,OAAM,AAAN,EAAqB,AAArB;AAAA,eAAqB,CAAA,AAArBA,WAAqB;AAAA;AACb;AAAG,QAAA,AAAX,CAAAC,WAAM,EAAQ,GAAO,CAAA;AAAb;AAAG,YAAA,AAAX,OAAM,AAAN,EAAqB,AAArB;AAAA,eAAqB,CAAA,AAArBA,WAAqB;AAAA;AACb;AAAG,QAAA,AAAX,CAAAC,WAAM,EAAQ,GAAO,CAAA;AAAb;AAAG,YAAA,AAAX,OAAM,AAAN,EAAqB,AAArB;AAAA,eAAqB,CAAA,AAArBA,WAAqB;AAAA;AACb;AAAG,QAAA,AAAX,CAAAC,WAAM,EAAQ,IAAO,CAAA;AAAb;AAAG,YAAA,AAAX,OAAM,AAAN,EAAqB,AAArB;AAAA,eAAqB,CAAA,AAArBA,WAAqB;AAAA;AACZ;AAAG,QAAA,AAAZ,CAAAC,YAAO,EAAQ,GAAQ,CAAA;AAAd;AAAG,YAAA,AAAZ,QAAO,AAAP,EAAuB,AAAvB;AAAA,eAAuB,CAAA,AAAvBA,YAAuB;AAAA;AACjB;AAAG,QAAA,AAAT,CAAAC,SAAI,EAAQ,GAAO,CAAA;AAAb;AAAG,YAAA,AAAT,KAAI,AAAJ,EAAmB,AAAnB;AAAA,eAAmB,CAAA,AAAnBA,SAAmB;AAAA;AACb;AAAG,QAAA,AAAT,CAAAC,SAAI,EAAQ,IAAO,CAAA;AAAb;AAAG,YAAA,AAAT,KAAI,AAAJ,EAAmB,AAAnB;AAAA,eAAmB,CAAA,AAAnBA,SAAmB;AAAA;AACb;AAAG,QAAA,AAAT,CAAAC,SAAI,EAAQ,GAAO,CAAA;AAAb;AAAG,YAAA,AAAT,KAAI,AAAJ,EAAmB,AAAnB;AAAA,eAAmB,CAAA,AAAnBA,SAAmB;AAAA;AACT;AAAG,QAAA,AAAb,CAAAC,aAAQ,EAAQ,GAAO,CAAA;AAAb;AAAG,YAAA,AAAb,SAAQ,AAAR,EAAuB,AAAvB;AAAA,eAAuB,CAAA,AAAvBA,aAAuB;AAAA;AACZ;AAAG,QAAA,AAAd,CAAAC,cAAS,EAAQ,GAAO,CAAA;AAAb;AAAG,YAAA,AAAd,UAAS,AAAT,EAAwB,AAAxB;AAAA,eAAwB,CAAA,AAAxBA,cAAwB;AAAA;AACZ;AAAG,QAAA,AAAf,CAAAC,eAAU,EAAQ,GAAO,CAAA;AAAb;AAAG,YAAA,AAAf,WAAU,AAAV,EAAyB,AAAzB;AAAA,eAAyB,CAAA,AAAzBA,eAAyB;AAAA;AAClB;AAAG,QAAA,AAAV,CAAAC,UAAK,EAAQ,GAAO,CAAA;AAAb;AAAG,YAAA,AAAV,MAAK,AAAL,EAAoB,AAApB;AAAA,eAAoB,CAAA,AAApBA,UAAoB;AAAA;AACR;AAAG,QAAA,AAAf,CAAAC,eAAU,EAAQ,GAAO,CAAA;AAAb;AAAG,YAAA,AAAf,WAAU,AAAV,EAAyB,AAAzB;AAAA,eAAyB,CAAA,AAAzBA,eAAyB;AAAA;AACZ;AAAG,QAAA,AAAhB,CAAAC,gBAAW,EAAQ,GAAO,CAAA;AAAb;AAAG,YAAA,AAAhB,YAAW,AAAX,EAA0B,AAA1B;AAAA,eAA0B,CAAA,AAA1BA,gBAA0B;AAAA;AACpB;AAAG,QAAA,AAAT,CAAAC,SAAI,EAAQ,GAAO,CAAA;AAAb;AAAG,YAAA,AAAT,KAAI,AAAJ,EAAmB,AAAnB;AAAA,eAAmB,CAAA,AAAnBA,SAAmB;AAAA;AACd;AAAG,QAAA,AAAR,CAAAC,QAAG,EAAQ,EAAQ,CAAA;AAAd;AAAG,YAAA,AAAR,IAAG,AAAH,EAAmB,AAAnB;AAAA,eAAmB,CAAA,AAAnBA,QAAmB;AAAA;AACZ;AAAG,QAAA,AAAV,CAAAC,UAAK,EAAQ,GAAO,CAAA;AAAb;AAAG,YAAA,AAAV,MAAK,AAAL,EAAoB,AAApB;AAAA,eAAoB,CAAA,AAApBA,UAAoB;AAAA;AACZ;AAAG,QAAA,AAAX,CAAAC,WAAM,EAAQ,GAAO,CAAA;AAAb;AAAG,YAAA,AAAX,OAAM,AAAN,EAAqB,AAArB;AAAA,eAAqB,CAAA,AAArBA,WAAqB;AAAA;AACb;AAAG,QAAA,AAAX,CAAAC,WAAM,EAAQ,GAAO,CAAA;AAAb;AAAG,YAAA,AAAX,OAAM,AAAN,EAAqB,AAArB;AAAA,eAAqB,CAAA,AAArBA,WAAqB;AAAA;AACd;AAAG,QAAA,AAAV,CAAAC,UAAK,EAAQ,GAAO,CAAA;AAAb;AAAG,YAAA,AAAV,MAAK,AAAL,EAAoB,AAApB;AAAA,eAAoB,CAAA,AAApBA,UAAoB;AAAA;AACN;AAAG,QAAA,AAAjB,CAAAC,iBAAY,EAAQ,MAAM,CAAA;AAAZ;AAAG,YAAA,AAAjB,aAAY,AAAZ,EAA0B,AAA1B;AAAA,eAA0B,CAAA,AAA1BA,iBAA0B;AAAA;AACZ;AAAG,QAAA,AAAjB,CAAAC,iBAAY,EAAQ,MAAM,CAAA;AAAZ;AAAG,YAAA,AAAjB,aAAY,AAAZ,EAA0B,AAA1B;AAAA,eAA0B,CAAA,AAA1BA,iBAA0B;AAAA;AACT;AAAG,QAAA,AAApB,CAAAC,oBAAe,EAAQ,MAAO,CAAA;AAAb;AAAG,YAAA,AAApB,gBAAe,AAAf,EAA8B,AAA9B;AAAA,eAA8B,CAAA,AAA9BA,oBAA8B;AAAA;AACnB;AAAG,QAAA,AAAd,CAAAC,cAAS,EAAQ,MAAM,CAAA;AAAZ;AAAG,YAAA,AAAd,UAAS,AAAT,EAAuB,AAAvB;AAAA,eAAuB,CAAA,AAAvBA,cAAuB;AAAA;AACX;AAAG,QAAA,AAAf,CAAAC,eAAU,EAAQ,GAAO,CAAA;AAAb;AAAG,YAAA,AAAf,WAAU,AAAV,EAAyB,AAAzB;AAAA,eAAyB,CAAA,AAAzBA,eAAyB;AAAA,GAAA;AAnC7B;AAAA;AAAA;AAAA;AAAA,CAmC6B;AAvlBF,MAAAhE,SAAA,iBAAsB,CAAA,AAD5CtC,OAAA,CAC4C;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA;AAA3C;AAAO,MAAA,AAAlB,MAAI,CAAAsC,KAAK,EAAiD,IAAI,CAAAA,SAAK,EAAI;AACzC,MAAAC,OAAA,iBAAoB,CAAA,AAFxCvC,OAAA,CAEwC;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA;AAAzC;AAAO,MAAA,AAAhB,MAAI,CAAAuC,GAAG,EAA+C,IAAI,CAAAA,OAAG,EAAI;AACnC,MAAAC,OAAA,iBAAoB,CAAA,AAHxCxC,OAAA,CAGwC;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA;AAAzC;AAAO,MAAA,AAAhB,MAAI,CAAAwC,GAAG,EAA+C,IAAI,CAAAA,OAAG,EAAI;AAMhE,MAAAC,gBAAA,iBAA6B,CAAA,AATpBzC,OAAA,CASoB;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA;AADZ;AAAO,MAAA,AAAzB,MAAI,CAAAyC,YAAY,EACkB,IAAI,CAAAA,gBAAY,EACxD;AAIO,MAAAC,SAAA,iBAAyB,CAAA,AAFhBzC,UAAA,CAEgB;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA;AADf;AAAU,MAAA,AAArB,MAAI,CAAAyC,KAAK,EACqB,IAAI,CAAAA,SAAK,EAC7C;AAEO,MAAAC,SAAA,iBAAyB,CAAA,AALhB1C,UAAA,CAKgB;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA;AADf;AAAU,MAAA,AAArB,MAAI,CAAA0C,KAAK,EACqB,IAAI,CAAAA,SAAK,EAC7C;AAEO,MAAAC,QAAA,iBAAwB,CAAA,AARf3C,UAAA,CAQe;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA;AADf;AAAU,MAAA,AAApB,MAAI,CAAA2C,IAAI,EACqB,IAAI,CAAAA,QAAI,EAC3C;AAofD,+BA0CC;AA1CD,QAAI,CAAA2D,oBAAgB,AAApB,EA0CC,AA1CiC;AASD,WAAoB;AACpB,WAAoB;AACpB,WAAoB,CAAA;AAD5C,YAAA;AADA,YAAA;AADuB,YAAA;AADL,YAAA;AADD;AAyBA,YAAA;AADO,YAAA;AADD,YAAA;AADL,YAAA;AADK,YAAA;AADD,YAAA;AADD,YAAA;AADJ,YAAA;AADA,YAAA;AADA,YAAA;AADD,YAAA;AADO,YAAA;AADD,YAAA;AADJ,YAAA;AADI,YAAA;AADA,YAAA;AAJvB,WAED,CAAA;AAbL,OAAI,CAAAhD,eAAW,EAAG,GAAsB;AAChC,KAAC,CAAAP,QAAI,EAAG,EAAC,CAAA;AAAjB,SAAmBA,QAAI,AAAJ,EAAW,AAAJ,IAAI;AAIxB,QAAAA,QAAI,AAAJ,IAAkB,AAAV,CAAAK,SAAK,CAAK;AAAA;AAAA;AAClB,UAAAL,QAAI,AAAJ,IAAmB,AAAX,CAAAK,SAAK,CAAM;AAAA;AAAA;AACnB,YAAAL,QAAI,AAAJ,IAAwB,AAAhB,CAAAK,SAAK,CAAW;AAAA;AAAA;AACvB,cAAAA,SAAK,CAAO,MAAA,AAAZ,GAAoB,AAAJ,CAAAL,QAAI;AAAI,mBAAoB,AAApB,CAAAA,QAAI,AAAJ,GAAoB,AAAZ,CAAAK,SAAK,CAAO;AAAA;AAAA;AAAA,WAAA;AAA7C,cAAC;AAAA;AAAA;AACA,gBAAAA,SAAK,CAAO,MAAA,AAAZ,GAAoB,AAAJ,CAAAL,QAAI;AAAI,qBAAoB,AAApB,CAAAA,QAAI,AAAJ,GAAoB,AAAZ,CAAAK,SAAK,CAAO;AAAA;AAAA;AAAA,aAAA;AAA7C,gBAAC;AAAA;AAAA;AACA,kBAAAA,SAAK,CAAO,MAAA,AAAZ,GAAoB,AAAJ,CAAAL,QAAI;AAAI,uBAAoB,AAApB,CAAAA,QAAI,AAAJ,GAAoB,AAAZ,CAAAK,SAAK,CAAO;AAAA;AAAA;AAAA,eAAA;AAA5C;AAAA,aAAA;AADD;AAAA,WAAA;AADA;AAAA,SAAA;AADA;AAAA,OAAA;AADA;AAAA,KAAA;AAHF,QAEE;AAOA,aAAa,AAAb,EAAa;AACd,YAAA;AAEC,UAAAL,QAAI,AAAJ,IAAuB,AAAf,CAAAK,SAAK,CAAU;AAAA;AAAA;AACvB,YAAAL,QAAI,AAAJ,IAAuB,AAAf,CAAAK,SAAK,CAAU;AAAA;AAAA;AACvB,cAAAL,QAAI,AAAJ,IAAmB,AAAX,CAAAK,SAAK,CAAM;AAAA;AAAA;AACnB,gBAAAL,QAAI,AAAJ,IAAuB,AAAf,CAAAK,SAAK,CAAU;AAAA;AAAA;AACvB,kBAAAL,QAAI,AAAJ,IAAwB,AAAhB,CAAAK,SAAK,CAAW;AAAA;AAAA;AACxB,oBAAAL,QAAI,AAAJ,IAAiB,AAAT,CAAAK,SAAK,CAAI;AAAA;AAAA;AACjB,sBAAAL,QAAI,AAAJ,IAAkB,AAAV,CAAAK,SAAK,CAAK;AAAA;AAAA;AAClB,wBAAAL,QAAI,AAAJ,IAAkB,AAAV,CAAAK,SAAK,CAAK;AAAA;AAAA;AAClB,0BAAAL,QAAI,AAAJ,IAAkB,AAAV,CAAAK,SAAK,CAAK;AAAA;AAAA;AAClB,4BAAAL,QAAI,AAAJ,IAAsB,AAAd,CAAAK,SAAK,CAAS;AAAA;AAAA;AACtB,8BAAAL,QAAI,AAAJ,IAAuB,AAAf,CAAAK,SAAK,CAAU;AAAA;AAAA;AACvB,gCAAAL,QAAI,AAAJ,IAAwB,AAAhB,CAAAK,SAAK,CAAW;AAAA;AAAA;AACxB,kCAAAL,QAAI,AAAJ,IAAmB,AAAX,CAAAK,SAAK,CAAM;AAAA;AAAA;AACnB,oCAAAL,QAAI,AAAJ,IAAwB,AAAhB,CAAAK,SAAK,CAAW;AAAA;AAAA;AACxB,sCAAAL,QAAI,AAAJ,IAAyB,AAAjB,CAAAK,SAAK,CAAY;AAAA;AAAA;AACzB,wCAAAL,QAAI,AAAJ,IAAkB,AAAV,CAAAK,SAAK,CAAK;AAAA;AAAA;AAClB,6CAAmB,AAAnB,CAAAL,QAAI,AAAJ,IAAmB,AAAX,CAAAK,SAAK,CAAM;AAAA,qCAAA;AADnB;AAAA,mCAAA;AADA;AAAA,iCAAA;AADA;AAAA,+BAAA;AADA;AAAA,6BAAA;AADA;AAAA,2BAAA;AADA;AAAA,yBAAA;AADA;AAAA,uBAAA;AADA;AAAA,qBAAA;AADA;AAAA,mBAAA;AADA;AAAA,iBAAA;AADA;AAAA,eAAA;AADA;AAAA,aAAA;AADA;AAAA,WAAA;AADA;AAAA,SAAA;AADA;AAAA,OAAA;AAbF,UAYE;AAkBA,eAAiB,AAAjB,EAAiB;AAClB;AAEC,eAAkB,AAAlB,EAAkB;AACnB;AAAA,KAAA;AAnCS,sBAAG,CAAA,AAAfE,eAAW,CACT,MAkCC,CACF,CAAA;AArC6B,IAAAP,QAAI,AAAJ,EAAS,AAAT,CAAAA,QAAI,AAAJ,EAAQ,EAAC;AAsCxC;AACD,QAAY,sBAAM,CAAA,AAAlBO,eAAW,CAAS;AAAA,CACrB;AA9CG,4BAAW;AAAf,KAAI,CAAAA,eAAW,EAAG,CAAAgD,oBAAgB,EAAE,CAAA;AA5VhC,2BAAS;AAAb,KAAI,CAAA5E,aAAS,EAAG,IAAI,CAAAT,YAAS,EAAE,CAAA;AAzExB;AAEN,MAAA,AAFM,SAAI,CAAAsF,MAAM,AAAV,CAAW5G,QAAe,CAEhC,AAF6C;AAC5C,YAAI,CAAAe,QAAQ,CAAC,MAAkB,CAAA,AAAlB,MAAkB,CAAA,AAAlB,CAAC2B,KAAK,CAAE,CAAA1C,QAAI,CAAE,CAAA4C,GAAG,CAAC,EAAC;AAAA,CACjC;AAEM;AAEN,MAAA,AAFM,SAAI,CAAAiE,SAAS,AAAb,CAAc7G,QAAe,CAAE,CAAAc,aAA0B,CAE/D,AAFyE,EAAA;AAApC,MAAAA,aAA0B;AAAA,MAAAA,aAAA,WAAA;AAAL,IAAAA,aAAA,EAAK,AAAL,MAAK;AAAA;AAAA,IAAAA,aAAA,GAAAA,aAAA;AAAA;AAC9D,YAAE,CAAAD,MAAA,CAAAb,QAAI,CAAO,EAAC,CAAO,KAAI,CAAE,CAAAc,aAAS,CAAE;AAAA,CACvC;AAEM;AAEN,MAAA,AAFM,SAAI,CAAAgG,QAAQ,AAAZ,CAAa9G,QAAe,CAAE,CAAAc,aAA0B,CAE9D,AAFwE,EAAA;AAApC,MAAAA,aAA0B;AAAA,MAAAA,aAAA,WAAA;AAAL,IAAAA,aAAA,EAAK,AAAL,MAAK;AAAA;AAAA,IAAAA,aAAA,GAAAA,aAAA;AAAA;AAC7D,YAAE,CAAAD,MAAA,CAAAb,QAAI,CAAO,EAAC,CAAO,EAAC,CAAE,CAAAc,aAAS,CAAE;AAAA,CACpC" }
package/temporal.js CHANGED
@@ -1,107 +1,109 @@
1
1
  import {
2
- JsonAdapter
2
+ JsonProducer as JsonProducer_1006, JsonSyntaxTree as JsonSyntaxTree_1011, InterchangeContext as InterchangeContext_1012, JsonAdapter as JsonAdapter_1013, JsonString as JsonString_1021
3
3
  } from "./json.js";
4
4
  import {
5
- JsonProducer as JsonProducer_965, JsonSyntaxTree as JsonSyntaxTree_966, InterchangeContext as InterchangeContext_967, JsonString as JsonString_968
6
- } from "./json.js";
7
- import {
8
- type as type__979, requireInstanceOf as requireInstanceOf__986, modIntInt as modIntInt_994, stringGet as stringGet_1004, stringNext as stringNext_1005, stringCountBetween as stringCountBetween_1007
5
+ type as type__1014, requireInstanceOf as requireInstanceOf__1022, modIntInt as modIntInt_1029, stringGet as stringGet_1040, stringNext as stringNext_1041, stringCountBetween as stringCountBetween_1043
9
6
  } from "@temperlang/core";
10
- class DateJsonAdapter_969 extends type__979(JsonAdapter_978) {
7
+ class DateJsonAdapter_1001 extends type__1014(JsonAdapter_1013) {
11
8
  /**
12
- * @param {globalThis.Date} x_971
13
- * @param {JsonProducer_965} p_972
9
+ * @param {globalThis.Date} x_1003
10
+ * @param {JsonProducer_1006} p_1004
14
11
  */
15
- encodeToJson(x_971, p_972) {
16
- encodeToJson_973(x_971, p_972);
12
+ encodeToJson(x_1003, p_1004) {
13
+ encodeToJson_1005(x_1003, p_1004);
17
14
  return;
18
15
  }
19
16
  /**
20
- * @param {JsonSyntaxTree_966} t_975
21
- * @param {InterchangeContext_967} ic_976
17
+ * @param {JsonSyntaxTree_1011} t_1008
18
+ * @param {InterchangeContext_1012} ic_1009
22
19
  * @returns {globalThis.Date}
23
20
  */
24
- decodeFromJson(t_975, ic_976) {
25
- return decodeFromJson_977(t_975, ic_976);
21
+ decodeFromJson(t_1008, ic_1009) {
22
+ return decodeFromJson_1010(t_1008, ic_1009);
26
23
  }
27
24
  constructor() {
28
25
  super ();
29
26
  return;
30
27
  }
31
28
  }
32
- // Type nym`std//temporal.temper.md`.Date connected to globalThis.Date
29
+ // Type `std/temporal/`.Date connected to globalThis.Date
33
30
  /**
34
- * @param {globalThis.Date} this_980
35
- * @param {JsonProducer_965} p_981
31
+ * @param {globalThis.Date} this_1015
32
+ * @param {JsonProducer_1006} p_1016
36
33
  */
37
- function encodeToJson_973(this_980, p_981) {
38
- let t_982 = this_980.toISOString().split("T")[0];
39
- p_981.stringValue(t_982);
34
+ function encodeToJson_1005(this_1015, p_1016) {
35
+ let t_1017 = this_1015.toISOString().split("T")[0];
36
+ p_1016.stringValue(t_1017);
40
37
  return;
41
38
  }
42
39
  /**
43
- * @param {JsonSyntaxTree_966} t_983
44
- * @param {InterchangeContext_967} ic_984
40
+ * @param {JsonSyntaxTree_1011} t_1018
41
+ * @param {InterchangeContext_1012} ic_1019
45
42
  * @returns {globalThis.Date}
46
43
  */
47
- function decodeFromJson_977(t_983, ic_984) {
48
- let t_985;
49
- t_985 = requireInstanceOf__986(t_983, JsonString_968);
50
- let t_987 = t_985.content;
51
- return new (globalThis.Date)(globalThis.Date.parse(t_987));
44
+ function decodeFromJson_1010(t_1018, ic_1019) {
45
+ let t_1020;
46
+ t_1020 = requireInstanceOf__1022(t_1018, JsonString_1021);
47
+ return new (globalThis.Date)(globalThis.Date.parse(t_1020.content));
52
48
  }
53
- /** @returns {JsonAdapter_978<globalThis.Date>} */
54
- function jsonAdapter_988() {
55
- return new DateJsonAdapter_969();
49
+ /** @returns {JsonAdapter_1013<globalThis.Date>} */
50
+ function jsonAdapter_1023() {
51
+ return new DateJsonAdapter_1001();
56
52
  }
57
53
  /** @type {Array<number>} */
58
- const daysInMonth_989 = Object.freeze([0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]);
54
+ const daysInMonth_1024 = Object.freeze([0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]);
59
55
  /**
60
- * @param {number} year_991
56
+ * @param {number} year_1026
61
57
  * @returns {boolean}
62
58
  */
63
- function isLeapYear_990(year_991) {
64
- let return_992;
65
- let t_993;
66
- if (modIntInt_994(year_991, 4) === 0) {
67
- if (modIntInt_994(year_991, 100) !== 0) {
68
- return_992 = true;
59
+ function isLeapYear_1025(year_1026) {
60
+ let return_1027;
61
+ let t_1028;
62
+ if (modIntInt_1029(year_1026, 4) === 0) {
63
+ if (modIntInt_1029(year_1026, 100) !== 0) {
64
+ return_1027 = true;
69
65
  } else {
70
- t_993 = modIntInt_994(year_991, 400);
71
- return_992 = t_993 === 0;
66
+ t_1028 = modIntInt_1029(year_1026, 400);
67
+ return_1027 = t_1028 === 0;
72
68
  }
73
69
  } else {
74
- return_992 = false;
70
+ return_1027 = false;
75
71
  }
76
- return return_992;
72
+ return return_1027;
77
73
  }
78
74
  /**
79
- * @param {number} minWidth_996
80
- * @param {number} num_997
81
- * @param {globalThis.Array<string>} sb_998
75
+ * @param {number} minWidth_1031
76
+ * @param {number} num_1032
77
+ * @param {globalThis.Array<string>} sb_1033
82
78
  */
83
- function padTo_995(minWidth_996, num_997, sb_998) {
84
- let t_999;
85
- const decimal_1000 = num_997.toString(10);
86
- let decimalIndex_1001 = 0;
87
- const decimalEnd_1002 = decimal_1000.length;
88
- let t_1003;
89
- t_1003 = stringGet_1004(decimal_1000, decimalIndex_1001);
90
- if (t_1003 === 45) {
91
- sb_998[0] += "-";
92
- t_999 = stringNext_1005(decimal_1000, decimalIndex_1001);
93
- decimalIndex_1001 = t_999;
79
+ function padTo_1030(minWidth_1031, num_1032, sb_1033) {
80
+ let t_1034;
81
+ let t_1035;
82
+ let t_1036;
83
+ const decimal_1037 = num_1032.toString(10);
84
+ let decimalIndex_1038 = 0;
85
+ const decimalEnd_1039 = decimal_1037.length;
86
+ if (decimalIndex_1038 < decimalEnd_1039) {
87
+ t_1034 = stringGet_1040(decimal_1037, decimalIndex_1038);
88
+ t_1036 = t_1034 === 45;
89
+ } else {
90
+ t_1036 = false;
91
+ }
92
+ if (t_1036) {
93
+ sb_1033[0] += "-";
94
+ t_1035 = stringNext_1041(decimal_1037, decimalIndex_1038);
95
+ decimalIndex_1038 = t_1035;
94
96
  }
95
- let t_1006 = stringCountBetween_1007(decimal_1000, decimalIndex_1001, decimalEnd_1002);
96
- let nNeeded_1008 = minWidth_996 - t_1006;
97
- while (nNeeded_1008 > 0) {
98
- sb_998[0] += "0";
99
- nNeeded_1008 = nNeeded_1008 - 1;
97
+ let t_1042 = stringCountBetween_1043(decimal_1037, decimalIndex_1038, decimalEnd_1039);
98
+ let nNeeded_1044 = minWidth_1031 - t_1042;
99
+ while (nNeeded_1044 > 0) {
100
+ sb_1033[0] += "0";
101
+ nNeeded_1044 = nNeeded_1044 - 1;
100
102
  }
101
- sb_998[0] += decimal_1000.substring(decimalIndex_1001, decimalEnd_1002);
103
+ sb_1033[0] += decimal_1037.substring(decimalIndex_1038, decimalEnd_1039);
102
104
  return;
103
105
  }
104
106
  /** @type {Array<number>} */
105
- const dayOfWeekLookupTableLeapy_1009 = Object.freeze([0, 0, 3, 4, 0, 2, 5, 0, 3, 6, 1, 4, 6]);
107
+ const dayOfWeekLookupTableLeapy_1045 = Object.freeze([0, 0, 3, 4, 0, 2, 5, 0, 3, 6, 1, 4, 6]);
106
108
  /** @type {Array<number>} */
107
- const dayOfWeekLookupTableNotLeapy_1010 = Object.freeze([0, 0, 3, 3, 6, 1, 4, 6, 2, 5, 0, 3, 5]);
109
+ const dayOfWeekLookupTableNotLeapy_1046 = Object.freeze([0, 0, 3, 3, 6, 1, 4, 6, 2, 5, 0, 3, 5]);