text-to-map 1.1.46 → 1.1.48

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.
Files changed (97) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +69 -69
  3. package/dist/bin/address-points.d.ts +1 -1
  4. package/dist/bin/address-points.js +16 -16
  5. package/dist/bin/cities.d.ts +1 -1
  6. package/dist/bin/cities.js +10 -10
  7. package/dist/bin/clear-all.d.ts +1 -1
  8. package/dist/bin/clear-all.js +13 -13
  9. package/dist/bin/constants.d.ts +2 -2
  10. package/dist/bin/constants.js +4 -4
  11. package/dist/bin/generate-syntax-diagrams.d.ts +1 -1
  12. package/dist/bin/generate-syntax-diagrams.js +20 -20
  13. package/dist/bin/init-db.d.ts +1 -1
  14. package/dist/bin/init-db.js +8 -8
  15. package/dist/bin/knex.d.ts +1 -1
  16. package/dist/bin/knex.js +10 -10
  17. package/dist/bin/parse-ordinance.d.ts +1 -1
  18. package/dist/bin/parse-ordinance.js +74 -74
  19. package/dist/bin/polygons.d.ts +1 -1
  20. package/dist/bin/polygons.js +27 -27
  21. package/dist/bin/regions.d.ts +1 -1
  22. package/dist/bin/regions.js +10 -10
  23. package/dist/bin/schools.d.ts +1 -1
  24. package/dist/bin/schools.js +10 -10
  25. package/dist/bin/streets.d.ts +1 -1
  26. package/dist/bin/streets.js +19 -19
  27. package/dist/bin/sync-all.d.ts +1 -1
  28. package/dist/bin/sync-all.js +4 -4
  29. package/dist/db/address-points.d.ts +59 -59
  30. package/dist/db/address-points.js +406 -399
  31. package/dist/db/cities.d.ts +7 -7
  32. package/dist/db/cities.js +95 -95
  33. package/dist/db/db.d.ts +45 -37
  34. package/dist/db/db.js +212 -191
  35. package/dist/db/founders.d.ts +14 -14
  36. package/dist/db/founders.js +461 -461
  37. package/dist/db/meta.d.ts +4 -4
  38. package/dist/db/meta.js +26 -26
  39. package/dist/db/migrations/20230704125715_initial.js +304 -304
  40. package/dist/db/migrations/20230731232915_city_positions.js +13 -13
  41. package/dist/db/migrations/20240106224603_city_polygon.js +11 -11
  42. package/dist/db/migrations/20240320200534_district_polygon.js +11 -11
  43. package/dist/db/migrations/20250316162700_kindergartens.js +12 -12
  44. package/dist/db/regions.d.ts +31 -31
  45. package/dist/db/regions.js +81 -81
  46. package/dist/db/schools.d.ts +7 -7
  47. package/dist/db/schools.js +95 -95
  48. package/dist/db/street-sync.d.ts +6 -6
  49. package/dist/db/street-sync.js +24 -22
  50. package/dist/db/sync-log.d.ts +9 -9
  51. package/dist/db/sync-log.js +66 -66
  52. package/dist/db/types.d.ts +59 -59
  53. package/dist/db/types.js +26 -26
  54. package/dist/index.d.ts +23 -23
  55. package/dist/index.js +32 -32
  56. package/dist/open-data-sync/address-points.d.ts +2 -2
  57. package/dist/open-data-sync/address-points.js +68 -68
  58. package/dist/open-data-sync/cities.d.ts +2 -2
  59. package/dist/open-data-sync/cities.js +32 -32
  60. package/dist/open-data-sync/common.d.ts +2 -2
  61. package/dist/open-data-sync/common.js +22 -22
  62. package/dist/open-data-sync/regions.d.ts +2 -2
  63. package/dist/open-data-sync/regions.js +37 -37
  64. package/dist/open-data-sync/schools.d.ts +3 -3
  65. package/dist/open-data-sync/schools.js +207 -207
  66. package/dist/open-data-sync/streets.d.ts +2 -2
  67. package/dist/open-data-sync/streets.js +132 -132
  68. package/dist/smd-to-csv/json-to-csv.d.ts +1 -1
  69. package/dist/smd-to-csv/json-to-csv.js +154 -154
  70. package/dist/smd-to-csv/ordinance-to-csv-rules.d.ts +1 -1
  71. package/dist/smd-to-csv/ordinance-to-csv-rules.js +23 -23
  72. package/dist/smd-to-csv/txt-to-json.d.ts +1 -1
  73. package/dist/smd-to-csv/txt-to-json.js +92 -92
  74. package/dist/souradnice.csv +6260 -6260
  75. package/dist/street-markdown/municipality.d.ts +11 -11
  76. package/dist/street-markdown/municipality.js +116 -116
  77. package/dist/street-markdown/polygons.d.ts +7 -7
  78. package/dist/street-markdown/polygons.js +261 -261
  79. package/dist/street-markdown/roman-numerals.d.ts +1 -1
  80. package/dist/street-markdown/roman-numerals.js +68 -68
  81. package/dist/street-markdown/smd-line-parser.d.ts +4 -4
  82. package/dist/street-markdown/smd-line-parser.js +40 -40
  83. package/dist/street-markdown/smd-parser.d.ts +23 -23
  84. package/dist/street-markdown/smd-parser.js +393 -393
  85. package/dist/street-markdown/smd.d.ts +24 -24
  86. package/dist/street-markdown/smd.js +440 -440
  87. package/dist/street-markdown/token-definition.d.ts +25 -25
  88. package/dist/street-markdown/token-definition.js +168 -168
  89. package/dist/street-markdown/types.d.ts +148 -148
  90. package/dist/street-markdown/types.js +13 -13
  91. package/dist/utils/atom.d.ts +2 -2
  92. package/dist/utils/atom.js +57 -57
  93. package/dist/utils/helpers.d.ts +28 -28
  94. package/dist/utils/helpers.js +176 -176
  95. package/dist/utils/jtsk2wgs84.d.ts +17 -17
  96. package/dist/utils/jtsk2wgs84.js +82 -82
  97. package/package.json +109 -109
@@ -1,25 +1,25 @@
1
- import { TokenVocabulary } from "chevrotain";
2
- export declare const resetTokenState: () => void;
3
- export declare const prepareLine: (text: string) => string;
4
- export declare const nameMatcherFactory: (pattern: RegExp) => (text: string, startOffset: number) => RegExpExecArray | [string] | null;
5
- export declare const streetNameMatcher: (text: string, startOffset: number) => RegExpExecArray | [string] | null;
6
- declare const MainSeparator: import("chevrotain").TokenType;
7
- declare const From: import("chevrotain").TokenType;
8
- declare const To: import("chevrotain").TokenType;
9
- declare const AndAbove: import("chevrotain").TokenType;
10
- declare const AndBelow: import("chevrotain").TokenType;
11
- declare const Separator: import("chevrotain").TokenType;
12
- declare const DescriptiveType: import("chevrotain").TokenType;
13
- declare const AllType: import("chevrotain").TokenType;
14
- declare const OddType: import("chevrotain").TokenType;
15
- declare const EvenType: import("chevrotain").TokenType;
16
- declare const Without: import("chevrotain").TokenType;
17
- declare const MunicipalityPartName: import("chevrotain").TokenType;
18
- declare const StreetName: import("chevrotain").TokenType;
19
- declare const Number: import("chevrotain").TokenType;
20
- declare const Hyphen: import("chevrotain").TokenType;
21
- declare const Slash: import("chevrotain").TokenType;
22
- declare const Space: import("chevrotain").TokenType;
23
- declare const smdTokens: import("chevrotain").TokenType[];
24
- declare const tokenVocabulary: TokenVocabulary;
25
- export { MainSeparator, Separator, OddType, EvenType, DescriptiveType, AllType, Number, From, To, AndAbove, AndBelow, Without, Hyphen, Slash, Space, StreetName, MunicipalityPartName, smdTokens, tokenVocabulary, };
1
+ import { TokenVocabulary } from "chevrotain";
2
+ export declare const resetTokenState: () => void;
3
+ export declare const prepareLine: (text: string) => string;
4
+ export declare const nameMatcherFactory: (pattern: RegExp) => (text: string, startOffset: number) => RegExpExecArray | [string] | null;
5
+ export declare const streetNameMatcher: (text: string, startOffset: number) => RegExpExecArray | [string] | null;
6
+ declare const MainSeparator: import("chevrotain").TokenType;
7
+ declare const From: import("chevrotain").TokenType;
8
+ declare const To: import("chevrotain").TokenType;
9
+ declare const AndAbove: import("chevrotain").TokenType;
10
+ declare const AndBelow: import("chevrotain").TokenType;
11
+ declare const Separator: import("chevrotain").TokenType;
12
+ declare const DescriptiveType: import("chevrotain").TokenType;
13
+ declare const AllType: import("chevrotain").TokenType;
14
+ declare const OddType: import("chevrotain").TokenType;
15
+ declare const EvenType: import("chevrotain").TokenType;
16
+ declare const Without: import("chevrotain").TokenType;
17
+ declare const MunicipalityPartName: import("chevrotain").TokenType;
18
+ declare const StreetName: import("chevrotain").TokenType;
19
+ declare const Number: import("chevrotain").TokenType;
20
+ declare const Hyphen: import("chevrotain").TokenType;
21
+ declare const Slash: import("chevrotain").TokenType;
22
+ declare const Space: import("chevrotain").TokenType;
23
+ declare const smdTokens: import("chevrotain").TokenType[];
24
+ declare const tokenVocabulary: TokenVocabulary;
25
+ export { MainSeparator, Separator, OddType, EvenType, DescriptiveType, AllType, Number, From, To, AndAbove, AndBelow, Without, Hyphen, Slash, Space, StreetName, MunicipalityPartName, smdTokens, tokenVocabulary, };
@@ -1,168 +1,168 @@
1
- import { createToken, Lexer } from "chevrotain";
2
- let nameWasMatched = false;
3
- export const resetTokenState = () => {
4
- nameWasMatched = false;
5
- };
6
- export const prepareLine = (text) => {
7
- return text
8
- .replace(/([IVXLCDM]+) - ([IVXLCDM]+)/, "$1-$2")
9
- .replace(/;/g, ",")
10
- .replace(/,$/, "");
11
- };
12
- // this function prevents numbers that make part of the street name to be matched before the
13
- // street/municipality part name is completely matched
14
- const tokenBlockerFactory = (pattern) => {
15
- const stickyPattern = new RegExp(pattern, "y");
16
- return (text, startOffset) => {
17
- if (nameWasMatched) {
18
- stickyPattern.lastIndex = startOffset;
19
- return stickyPattern.exec(text);
20
- }
21
- else {
22
- return null;
23
- }
24
- };
25
- };
26
- const interruptPatterns = [
27
- "lichá",
28
- "sudá",
29
- "č.",
30
- "od",
31
- "do",
32
- "pouze",
33
- "všechna",
34
- "bez",
35
- "vyjma",
36
- "mimo",
37
- "s výjimkou",
38
- "kromě",
39
- ];
40
- // this pattern allows a single space or a single hyphen (without an adjacent space) between words
41
- const streetNamePattern = /[^ -]+([ -]?[^ -]+)*/;
42
- // same but with a prefix of municipality part
43
- const municipalityPartNamePattern = /část (obce|města) [^ -]+([ -]?[^ -]+)*/;
44
- export const nameMatcherFactory = (pattern) => {
45
- return (text, startOffset) => {
46
- if (nameWasMatched || startOffset > 0) {
47
- return null;
48
- }
49
- else {
50
- const result = pattern.exec(text);
51
- if (result !== null) {
52
- nameWasMatched = true;
53
- const firstIndex = interruptPatterns.reduce((currentMin, pattern) => {
54
- const index = text.search(new RegExp(` ${pattern}( |$)`));
55
- return index >= 0 ? Math.min(index, currentMin) : currentMin;
56
- }, Infinity);
57
- if (firstIndex < Infinity) {
58
- return [result[0].substring(0, firstIndex).trim()];
59
- }
60
- }
61
- return result;
62
- }
63
- };
64
- };
65
- export const streetNameMatcher = nameMatcherFactory(streetNamePattern);
66
- const MainSeparator = createToken({ name: "MainSeparator", pattern: / - / });
67
- const From = createToken({ name: "From", pattern: /od/ });
68
- const To = createToken({ name: "To", pattern: /do/ });
69
- const AndAbove = createToken({
70
- name: "AndAbove",
71
- pattern: / (a )?(výše?|vyšší)/,
72
- });
73
- const AndBelow = createToken({
74
- name: "AndBelow",
75
- pattern: / a (níže?|nižší)/,
76
- });
77
- const Separator = createToken({
78
- name: "Separator",
79
- pattern: /,| a /,
80
- longer_alt: [AndAbove, AndBelow],
81
- });
82
- const DescriptiveType = createToken({
83
- name: "CPType",
84
- pattern: /(pouze |všechna )?č. ?p./,
85
- });
86
- const AllType = createToken({
87
- name: "AllType",
88
- pattern: /(pouze |všechna )?(č(\.|ísla)( ?o\.)?|lichá i sudá)/,
89
- longer_alt: DescriptiveType,
90
- });
91
- const OddType = createToken({
92
- name: "OddType",
93
- pattern: /(pouze |všechna )?(lich([áé]|ých)( č(\.|ísla))?( ?o\.)?|č(\.|ísla)( ?o\.)? lich[áé])/,
94
- longer_alt: AllType,
95
- });
96
- const EvenType = createToken({
97
- name: "EvenType",
98
- pattern: /(pouze |všechna )?(sud([áé]|ých)( č(\.|ísla))?( ?o\.)?|č(\.|ísla)( ?o\.)? sud[áé])/,
99
- });
100
- const Without = createToken({
101
- name: "Without",
102
- pattern: /bez|vyjma|mimo|s výjimkou|kromě/,
103
- });
104
- const MunicipalityPartName = createToken({
105
- name: "MunicipalityPartName",
106
- pattern: nameMatcherFactory(municipalityPartNamePattern),
107
- });
108
- const StreetName = createToken({
109
- name: "StreetName",
110
- pattern: nameMatcherFactory(streetNamePattern),
111
- });
112
- const Number = createToken({
113
- name: "Number",
114
- pattern: tokenBlockerFactory(/\d+[a-zA-Z]?/),
115
- });
116
- const Hyphen = createToken({ name: "Hyphen", pattern: /-|až/ });
117
- const Slash = createToken({ name: "Hyphen", pattern: /\// });
118
- const Space = createToken({
119
- name: "Space",
120
- pattern: / +/,
121
- longer_alt: [MainSeparator, Separator],
122
- group: Lexer.SKIPPED,
123
- });
124
- // const Colon = createToken({
125
- // name: "Colon",
126
- // pattern: /:/,
127
- // group: Lexer.SKIPPED,
128
- // });
129
- const smdTokens = [
130
- MainSeparator,
131
- Separator,
132
- OddType,
133
- EvenType,
134
- DescriptiveType,
135
- AllType,
136
- Number,
137
- From,
138
- To,
139
- AndAbove,
140
- AndBelow,
141
- Without,
142
- Hyphen,
143
- Slash,
144
- Space,
145
- // Colon,
146
- MunicipalityPartName,
147
- StreetName,
148
- ];
149
- MainSeparator.LABEL = "' - '";
150
- Separator.LABEL = "','";
151
- Hyphen.LABEL = "'-'";
152
- Slash.LABEL = "'/'";
153
- From.LABEL = "'od'";
154
- To.LABEL = "'do'";
155
- AndAbove.LABEL = "'a výše'";
156
- AndBelow.LABEL = "'a níže'";
157
- Space.LABEL = "' '";
158
- OddType.LABEL = "'lichá č.'";
159
- EvenType.LABEL = "'sudá č.'";
160
- DescriptiveType.LABEL = "'č. p.'";
161
- AllType.LABEL = "'č.'";
162
- Without.LABEL = "'bez'";
163
- const tokenVocabulary = {};
164
- smdTokens.forEach((tokenType) => {
165
- tokenVocabulary[tokenType.name] = tokenType;
166
- });
167
- export { MainSeparator, Separator, OddType, EvenType, DescriptiveType, AllType, Number, From, To, AndAbove, AndBelow, Without, Hyphen, Slash, Space, StreetName, MunicipalityPartName, smdTokens, tokenVocabulary, };
168
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4tZGVmaW5pdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdHJlZXQtbWFya2Rvd24vdG9rZW4tZGVmaW5pdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBbUIsTUFBTSxZQUFZLENBQUM7QUFFakUsSUFBSSxjQUFjLEdBQUcsS0FBSyxDQUFDO0FBRTNCLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxHQUFTLEVBQUU7SUFDeEMsY0FBYyxHQUFHLEtBQUssQ0FBQztBQUN6QixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxJQUFZLEVBQUUsRUFBRTtJQUMxQyxPQUFPLElBQUk7U0FDUixPQUFPLENBQUMsNkJBQTZCLEVBQUUsT0FBTyxDQUFDO1NBQy9DLE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDO1NBQ2xCLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDdkIsQ0FBQyxDQUFDO0FBRUYsNEZBQTRGO0FBQzVGLHNEQUFzRDtBQUN0RCxNQUFNLG1CQUFtQixHQUFHLENBQzFCLE9BQWUsRUFDa0QsRUFBRTtJQUNuRSxNQUFNLGFBQWEsR0FBRyxJQUFJLE1BQU0sQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDL0MsT0FBTyxDQUFDLElBQVksRUFBRSxXQUFtQixFQUEwQixFQUFFO1FBQ25FLElBQUksY0FBYyxFQUFFO1lBQ2xCLGFBQWEsQ0FBQyxTQUFTLEdBQUcsV0FBVyxDQUFDO1lBQ3RDLE9BQU8sYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNqQzthQUFNO1lBQ0wsT0FBTyxJQUFJLENBQUM7U0FDYjtJQUNILENBQUMsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGLE1BQU0saUJBQWlCLEdBQUc7SUFDeEIsT0FBTztJQUNQLE1BQU07SUFDTixJQUFJO0lB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OUIsZUFBZSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxTQUFTLENBQUM7QUFDOUMsQ0FBQyxDQUFDLENBQUM7QUFFSCxPQUFPLEVBQ0wsYUFBYSxFQUNiLFNBQVMsRUFDVCxPQUFPLEVBQ1AsUUFBUSxFQUNSLGVBQWUsRUFDZixPQUFPLEVBQ1AsTUFBTSxFQUNOLElBQUksRUFDSixFQUFFLEVBQ0YsUUFBUSxFQUNSLFFBQVEsRUFDUixPQUFPLEVBQ1AsTUFBTSxFQUNOLEtBQUssRUFDTCxLQUFLLEVBQ0wsVUFBVSxFQUNWLG9CQUFvQixFQUNwQixTQUFTLEVBQ1QsZUFBZSxHQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlVG9rZW4sIExleGVyLCBUb2tlblZvY2FidWxhcnkgfSBmcm9tIFwiY2hldnJvdGFpblwiO1xyXG5cclxubGV0IG5hbWVXYXNNYXRjaGVkID0gZmFsc2U7XHJcblxyXG5leHBvcnQgY29uc3QgcmVzZXRUb2tlblN0YXRlID0gKCk6IHZvaWQgPT4ge1xyXG4gIG5hbWVXYXNNYXRjaGVkID0gZmFsc2U7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgcHJlcGFyZUxpbmUgPSAodGV4dDogc3RyaW5nKSA9PiB7XHJcbiAgcmV0dXJuIHRleHRcclxuICAgIC5yZXBsYWNlKC8oW0lWWExDRE1dKykgLSAoW0lWWExDRE1dKykvLCBcIiQxLSQyXCIpXHJcbiAgICAucmVwbGFjZSgvOy9nLCBcIixcIilcclxuICAgIC5yZXBsYWNlKC8sJC8sIFwiXCIpO1xyXG59O1xyXG5cclxuLy8gdGhpcyBmdW5jdGlvbiBwcmV2ZW50cyBudW1iZXJzIHRoYXQgbWFrZSBwYXJ0IG9mIHRoZSBzdHJlZXQgbmFtZSB0byBiZSBtYXRjaGVkIGJlZm9yZSB0aGVcclxuLy8gc3RyZWV0L211bmljaXBhbGl0eSBwYXJ0IG5hbWUgaXMgY29tcGxldGVseSBtYXRjaGVkXHJcbmNvbnN0IHRva2VuQmxvY2tlckZhY3RvcnkgPSAoXHJcbiAgcGF0dGVybjogUmVnRXhwXHJcbik6ICgodGV4dDogc3RyaW5nLCBzdGFydE9mZnNldDogbnVtYmVyKSA9PiBSZWdFeHBFeGVjQXJyYXkgfCBudWxsKSA9PiB7XHJcbiAgY29uc3Qgc3RpY2t5UGF0dGVybiA9IG5ldyBSZWdFeHAocGF0dGVybiwgXCJ5XCIpO1xyXG4gIHJldHVybiAodGV4dDogc3RyaW5nLCBzdGFydE9mZnNldDogbnVtYmVyKTogUmVnRXhwRXhlY0FycmF5IHwgbnVsbCA9PiB7XHJcbiAgICBpZiAobmFtZVdhc01hdGNoZWQpIHtcclxuICAgICAgc3RpY2t5UGF0dGVybi5sYXN0SW5kZXggPSBzdGFydE9mZnNldDtcclxuICAgICAgcmV0dXJuIHN0aWNreVBhdHRlcm4uZXhlYyh0ZXh0KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH07XHJcbn07XHJcblxyXG5jb25zdCBpbnRlcnJ1cHRQYXR0ZXJucyA9IFtcclxuICBcImxpY2jDoVwiLFxyXG4gIFwic3Vkw6FcIixcclxuICBcIsSNLlwiLFxyXG4gIFwib2RcIixcclxuICBcImRvXCIsXHJcbiAgXCJwb3V6ZVwiLFxyXG4gIFwidsWhZWNobmFcIixcclxuICBcImJlelwiLFxyXG4gIFwidnlqbWFcIixcclxuICBcIm1pbW9cIixcclxuICBcInMgdsO9amlta291XCIsXHJcbiAgXCJrcm9txJtcIixcclxuXTtcclxuLy8gdGhpcyBwYXR0ZXJuIGFsbG93cyBhIHNpbmdsZSBzcGFjZSBvciBhIHNpbmdsZSBoeXBoZW4gKHdpdGhvdXQgYW4gYWRqYWNlbnQgc3BhY2UpIGJldHdlZW4gd29yZHNcclxuY29uc3Qgc3RyZWV0TmFtZVBhdHRlcm4gPSAvW14gLV0rKFsgLV0/W14gLV0rKSovO1xyXG5cclxuLy8gc2FtZSBidXQgd2l0aCBhIHByZWZpeCBvZiBtdW5pY2lwYWxpdHkgcGFydFxyXG5jb25zdCBtdW5pY2lwYWxpdHlQYXJ0TmFtZVBhdHRlcm4gPSAvxI3DoXN0IChvYmNlfG3Em3N0YSkgW14gLV0rKFsgLV0/W14gLV0rKSovO1xyXG5cclxuZXhwb3J0IGNvbnN0IG5hbWVNYXRjaGVyRmFjdG9yeSA9IChwYXR0ZXJuOiBSZWdFeHApID0+IHtcclxuICByZXR1cm4gKFxyXG4gICAgdGV4dDogc3RyaW5nLFxyXG4gICAgc3RhcnRPZmZzZXQ6IG51bWJlclxyXG4gICk6IFJlZ0V4cEV4ZWNBcnJheSB8IFtzdHJpbmddIHwgbnVsbCA9PiB7XHJcbiAgICBpZiAobmFtZVdhc01hdGNoZWQgfHwgc3RhcnRPZmZzZXQgPiAwKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgcmVzdWx0ID0gcGF0dGVybi5leGVjKHRleHQpO1xyXG4gICAgICBpZiAocmVzdWx0ICE9PSBudWxsKSB7XHJcbiAgICAgICAgbmFtZVdhc01hdGNoZWQgPSB0cnVlO1xyXG4gICAgICAgIGNvbnN0IGZpcnN0SW5kZXggPSBpbnRlcnJ1cHRQYXR0ZXJucy5yZWR1Y2UoXHJcbiAgICAgICAgICAoY3VycmVudE1pbjogbnVtYmVyLCBwYXR0ZXJuOiBzdHJpbmcpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0ZXh0LnNlYXJjaChuZXcgUmVnRXhwKGAgJHtwYXR0ZXJufSggfCQpYCkpO1xyXG4gICAgICAgICAgICByZXR1cm4gaW5kZXggPj0gMCA/IE1hdGgubWluKGluZGV4LCBjdXJyZW50TWluKSA6IGN1cnJlbnRNaW47XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgSW5maW5pdHlcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmIChmaXJzdEluZGV4IDwgSW5maW5pdHkpIHtcclxuICAgICAgICAgIHJldHVybiBbcmVzdWx0WzBdLnN1YnN0cmluZygwLCBmaXJzdEluZGV4KS50cmltKCldO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG4gIH07XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3Qgc3RyZWV0TmFtZU1hdGNoZXIgPSBuYW1lTWF0Y2hlckZhY3Rvcnkoc3RyZWV0TmFtZVBhdHRlcm4pO1xyXG5cclxuY29uc3QgTWFpblNlcGFyYXRvciA9IGNyZWF0ZVRva2VuKHsgbmFtZTogXCJNYWluU2VwYXJhdG9yXCIsIHBhdHRlcm46IC8gLSAvIH0pO1xyXG5jb25zdCBGcm9tID0gY3JlYXRlVG9rZW4oeyBuYW1lOiBcIkZyb21cIiwgcGF0dGVybjogL29kLyB9KTtcclxuY29uc3QgVG8gPSBjcmVhdGVUb2tlbih7IG5hbWU6IFwiVG9cIiwgcGF0dGVybjogL2RvLyB9KTtcclxuY29uc3QgQW5kQWJvdmUgPSBjcmVhdGVUb2tlbih7XHJcbiAgbmFtZTogXCJBbmRBYm92ZVwiLFxyXG4gIHBhdHRlcm46IC8gKGEgKT8odsO9xaFlP3x2ecWhxaHDrSkvLFxyXG59KTtcclxuY29uc3QgQW5kQmVsb3cgPSBjcmVhdGVUb2tlbih7XHJcbiAgbmFtZTogXCJBbmRCZWxvd1wiLFxyXG4gIHBhdHRlcm46IC8gYSAobsOtxb5lP3xuacW+xaHDrSkvLFxyXG59KTtcclxuY29uc3QgU2VwYXJhdG9yID0gY3JlYXRlVG9rZW4oe1xyXG4gIG5hbWU6IFwiU2VwYXJhdG9yXCIsXHJcbiAgcGF0dGVybjogLyx8IGEgLyxcclxuICBsb25nZXJfYWx0OiBbQW5kQWJvdmUsIEFuZEJlbG93XSxcclxufSk7XHJcbmNvbnN0IERlc2NyaXB0aXZlVHlwZSA9IGNyZWF0ZVRva2VuKHtcclxuICBuYW1lOiBcIkNQVHlwZVwiLFxyXG4gIHBhdHRlcm46IC8ocG91emUgfHbFoWVjaG5hICk/xI0uID9wLi8sXHJcbn0pO1xyXG5jb25zdCBBbGxUeXBlID0gY3JlYXRlVG9rZW4oe1xyXG4gIG5hbWU6IFwiQWxsVHlwZVwiLFxyXG4gIHBhdHRlcm46IC8ocG91emUgfHbFoWVjaG5hICk/KMSNKFxcLnzDrXNsYSkoID9vXFwuKT98bGljaMOhIGkgc3Vkw6EpLyxcclxuICBsb25nZXJfYWx0OiBEZXNjcmlwdGl2ZVR5cGUsXHJcbn0pO1xyXG5jb25zdCBPZGRUeXBlID0gY3JlYXRlVG9rZW4oe1xyXG4gIG5hbWU6IFwiT2RkVHlwZVwiLFxyXG4gIHBhdHRlcm46XHJcbiAgICAvKHBvdXplIHx2xaFlY2huYSApPyhsaWNoKFvDocOpXXzDvWNoKSggxI0oXFwufMOtc2xhKSk/KCA/b1xcLik/fMSNKFxcLnzDrXNsYSkoID9vXFwuKT8gbGljaFvDocOpXSkvLFxyXG4gIGxvbmdlcl9hbHQ6IEFsbFR5cGUsXHJcbn0pO1xyXG5jb25zdCBFdmVuVHlwZSA9IGNyZWF0ZVRva2VuKHtcclxuICBuYW1lOiBcIkV2ZW5UeXBlXCIsXHJcbiAgcGF0dGVybjpcclxuICAgIC8ocG91emUgfHbFoWVjaG5hICk/KHN1ZChbw6HDqV18w71jaCkoIMSNKFxcLnzDrXNsYSkpPyggP29cXC4pP3zEjShcXC58w61zbGEpKCA/b1xcLik/IHN1ZFvDocOpXSkvLFxyXG59KTtcclxuY29uc3QgV2l0aG91dCA9IGNyZWF0ZVRva2VuKHtcclxuICBuYW1lOiBcIldpdGhvdXRcIixcclxuICBwYXR0ZXJuOiAvYmV6fHZ5am1hfG1pbW98cyB2w71qaW1rb3V8a3JvbcSbLyxcclxufSk7XHJcbmNvbnN0IE11bmljaXBhbGl0eVBhcnROYW1lID0gY3JlYXRlVG9rZW4oe1xyXG4gIG5hbWU6IFwiTXVuaWNpcGFsaXR5UGFydE5hbWVcIixcclxuICBwYXR0ZXJuOiBuYW1lTWF0Y2hlckZhY3RvcnkobXVuaWNpcGFsaXR5UGFydE5hbWVQYXR0ZXJuKSxcclxufSk7XHJcbmNvbnN0IFN0cmVldE5hbWUgPSBjcmVhdGVUb2tlbih7XHJcbiAgbmFtZTogXCJTdHJlZXROYW1lXCIsXHJcbiAgcGF0dGVybjogbmFtZU1hdGNoZXJGYWN0b3J5KHN0cmVldE5hbWVQYXR0ZXJuKSxcclxufSk7XHJcblxyXG5jb25zdCBOdW1iZXIgPSBjcmVhdGVUb2tlbih7XHJcbiAgbmFtZTogXCJOdW1iZXJcIixcclxuICBwYXR0ZXJuOiB0b2tlbkJsb2NrZXJGYWN0b3J5KC9cXGQrW2EtekEtWl0/LyksXHJcbn0pO1xyXG5jb25zdCBIeXBoZW4gPSBjcmVhdGVUb2tlbih7IG5hbWU6IFwiSHlwaGVuXCIsIHBhdHRlcm46IC8tfGHFvi8gfSk7XHJcbmNvbnN0IFNsYXNoID0gY3JlYXRlVG9rZW4oeyBuYW1lOiBcIkh5cGhlblwiLCBwYXR0ZXJuOiAvXFwvLyB9KTtcclxuY29uc3QgU3BhY2UgPSBjcmVhdGVUb2tlbih7XHJcbiAgbmFtZTogXCJTcGFjZVwiLFxyXG4gIHBhdHRlcm46IC8gKy8sXHJcbiAgbG9uZ2VyX2FsdDogW01haW5TZXBhcmF0b3IsIFNlcGFyYXRvcl0sXHJcbiAgZ3JvdXA6IExleGVyLlNLSVBQRUQsXHJcbn0pO1xyXG4vLyBjb25zdCBDb2xvbiA9IGNyZWF0ZVRva2VuKHtcclxuLy8gICBuYW1lOiBcIkNvbG9uXCIsXHJcbi8vICAgcGF0dGVybjogLzovLFxyXG4vLyAgIGdyb3VwOiBMZXhlci5TS0lQUEVELFxyXG4vLyB9KTtcclxuXHJcbmNvbnN0IHNtZFRva2VucyA9IFtcclxuICBNYWluU2VwYXJhdG9yLFxyXG4gIFNlcGFyYXRvcixcclxuICBPZGRUeXBlLFxyXG4gIEV2ZW5UeXBlLFxyXG4gIERlc2NyaXB0aXZlVHlwZSxcclxuICBBbGxUeXBlLFxyXG4gIE51bWJlcixcclxuICBGcm9tLFxyXG4gIFRvLFxyXG4gIEFuZEFib3ZlLFxyXG4gIEFuZEJlbG93LFxyXG4gIFdpdGhvdXQsXHJcbiAgSHlwaGVuLFxyXG4gIFNsYXNoLFxyXG4gIFNwYWNlLFxyXG4gIC8vIENvbG9uLFxyXG4gIE11bmljaXBhbGl0eVBhcnROYW1lLFxyXG4gIFN0cmVldE5hbWUsXHJcbl07XHJcblxyXG5NYWluU2VwYXJhdG9yLkxBQkVMID0gXCInIC0gJ1wiO1xyXG5TZXBhcmF0b3IuTEFCRUwgPSBcIicsJ1wiO1xyXG5IeXBoZW4uTEFCRUwgPSBcIictJ1wiO1xyXG5TbGFzaC5MQUJFTCA9IFwiJy8nXCI7XHJcbkZyb20uTEFCRUwgPSBcIidvZCdcIjtcclxuVG8uTEFCRUwgPSBcIidkbydcIjtcclxuQW5kQWJvdmUuTEFCRUwgPSBcIidhIHbDvcWhZSdcIjtcclxuQW5kQmVsb3cuTEFCRUwgPSBcIidhIG7DrcW+ZSdcIjtcclxuU3BhY2UuTEFCRUwgPSBcIicgJ1wiO1xyXG5PZGRUeXBlLkxBQkVMID0gXCInbGljaMOhIMSNLidcIjtcclxuRXZlblR5cGUuTEFCRUwgPSBcIidzdWTDoSDEjS4nXCI7XHJcbkRlc2NyaXB0aXZlVHlwZS5MQUJFTCA9IFwiJ8SNLiBwLidcIjtcclxuQWxsVHlwZS5MQUJFTCA9IFwiJ8SNLidcIjtcclxuV2l0aG91dC5MQUJFTCA9IFwiJ2JleidcIjtcclxuXHJcbmNvbnN0IHRva2VuVm9jYWJ1bGFyeTogVG9rZW5Wb2NhYnVsYXJ5ID0ge307XHJcblxyXG5zbWRUb2tlbnMuZm9yRWFjaCgodG9rZW5UeXBlKSA9PiB7XHJcbiAgdG9rZW5Wb2NhYnVsYXJ5W3Rva2VuVHlwZS5uYW1lXSA9IHRva2VuVHlwZTtcclxufSk7XHJcblxyXG5leHBvcnQge1xyXG4gIE1haW5TZXBhcmF0b3IsXHJcbiAgU2VwYXJhdG9yLFxyXG4gIE9kZFR5cGUsXHJcbiAgRXZlblR5cGUsXHJcbiAgRGVzY3JpcHRpdmVUeXBlLFxyXG4gIEFsbFR5cGUsXHJcbiAgTnVtYmVyLFxyXG4gIEZyb20sXHJcbiAgVG8sXHJcbiAgQW5kQWJvdmUsXHJcbiAgQW5kQmVsb3csXHJcbiAgV2l0aG91dCxcclxuICBIeXBoZW4sXHJcbiAgU2xhc2gsXHJcbiAgU3BhY2UsXHJcbiAgU3RyZWV0TmFtZSxcclxuICBNdW5pY2lwYWxpdHlQYXJ0TmFtZSxcclxuICBzbWRUb2tlbnMsXHJcbiAgdG9rZW5Wb2NhYnVsYXJ5LFxyXG59O1xyXG4iXX0=
1
+ import { createToken, Lexer } from "chevrotain";
2
+ let nameWasMatched = false;
3
+ export const resetTokenState = () => {
4
+ nameWasMatched = false;
5
+ };
6
+ export const prepareLine = (text) => {
7
+ return text
8
+ .replace(/([IVXLCDM]+) - ([IVXLCDM]+)/, "$1-$2")
9
+ .replace(/;/g, ",")
10
+ .replace(/,$/, "");
11
+ };
12
+ // this function prevents numbers that make part of the street name to be matched before the
13
+ // street/municipality part name is completely matched
14
+ const tokenBlockerFactory = (pattern) => {
15
+ const stickyPattern = new RegExp(pattern, "y");
16
+ return (text, startOffset) => {
17
+ if (nameWasMatched) {
18
+ stickyPattern.lastIndex = startOffset;
19
+ return stickyPattern.exec(text);
20
+ }
21
+ else {
22
+ return null;
23
+ }
24
+ };
25
+ };
26
+ const interruptPatterns = [
27
+ "lichá",
28
+ "sudá",
29
+ "č.",
30
+ "od",
31
+ "do",
32
+ "pouze",
33
+ "všechna",
34
+ "bez",
35
+ "vyjma",
36
+ "mimo",
37
+ "s výjimkou",
38
+ "kromě",
39
+ ];
40
+ // this pattern allows a single space or a single hyphen (without an adjacent space) between words
41
+ const streetNamePattern = /[^ -]+([ -]?[^ -]+)*/;
42
+ // same but with a prefix of municipality part
43
+ const municipalityPartNamePattern = /část (obce|města) [^ -]+([ -]?[^ -]+)*/;
44
+ export const nameMatcherFactory = (pattern) => {
45
+ return (text, startOffset) => {
46
+ if (nameWasMatched || startOffset > 0) {
47
+ return null;
48
+ }
49
+ else {
50
+ const result = pattern.exec(text);
51
+ if (result !== null) {
52
+ nameWasMatched = true;
53
+ const firstIndex = interruptPatterns.reduce((currentMin, pattern) => {
54
+ const index = text.search(new RegExp(` ${pattern}( |$)`));
55
+ return index >= 0 ? Math.min(index, currentMin) : currentMin;
56
+ }, Infinity);
57
+ if (firstIndex < Infinity) {
58
+ return [result[0].substring(0, firstIndex).trim()];
59
+ }
60
+ }
61
+ return result;
62
+ }
63
+ };
64
+ };
65
+ export const streetNameMatcher = nameMatcherFactory(streetNamePattern);
66
+ const MainSeparator = createToken({ name: "MainSeparator", pattern: / - / });
67
+ const From = createToken({ name: "From", pattern: /od/ });
68
+ const To = createToken({ name: "To", pattern: /do/ });
69
+ const AndAbove = createToken({
70
+ name: "AndAbove",
71
+ pattern: / (a )?(výše?|vyšší)/,
72
+ });
73
+ const AndBelow = createToken({
74
+ name: "AndBelow",
75
+ pattern: / a (níže?|nižší)/,
76
+ });
77
+ const Separator = createToken({
78
+ name: "Separator",
79
+ pattern: /,| a /,
80
+ longer_alt: [AndAbove, AndBelow],
81
+ });
82
+ const DescriptiveType = createToken({
83
+ name: "CPType",
84
+ pattern: /(pouze |všechna )?č. ?p./,
85
+ });
86
+ const AllType = createToken({
87
+ name: "AllType",
88
+ pattern: /(pouze |všechna )?(č(\.|ísla)( ?o\.)?|lichá i sudá)/,
89
+ longer_alt: DescriptiveType,
90
+ });
91
+ const OddType = createToken({
92
+ name: "OddType",
93
+ pattern: /(pouze |všechna )?(lich([áé]|ých)( č(\.|ísla))?( ?o\.)?|č(\.|ísla)( ?o\.)? lich[áé])/,
94
+ longer_alt: AllType,
95
+ });
96
+ const EvenType = createToken({
97
+ name: "EvenType",
98
+ pattern: /(pouze |všechna )?(sud([áé]|ých)( č(\.|ísla))?( ?o\.)?|č(\.|ísla)( ?o\.)? sud[áé])/,
99
+ });
100
+ const Without = createToken({
101
+ name: "Without",
102
+ pattern: /bez|vyjma|mimo|s výjimkou|kromě/,
103
+ });
104
+ const MunicipalityPartName = createToken({
105
+ name: "MunicipalityPartName",
106
+ pattern: nameMatcherFactory(municipalityPartNamePattern),
107
+ });
108
+ const StreetName = createToken({
109
+ name: "StreetName",
110
+ pattern: nameMatcherFactory(streetNamePattern),
111
+ });
112
+ const Number = createToken({
113
+ name: "Number",
114
+ pattern: tokenBlockerFactory(/\d+[a-zA-Z]?/),
115
+ });
116
+ const Hyphen = createToken({ name: "Hyphen", pattern: /-|až/ });
117
+ const Slash = createToken({ name: "Hyphen", pattern: /\// });
118
+ const Space = createToken({
119
+ name: "Space",
120
+ pattern: / +/,
121
+ longer_alt: [MainSeparator, Separator],
122
+ group: Lexer.SKIPPED,
123
+ });
124
+ // const Colon = createToken({
125
+ // name: "Colon",
126
+ // pattern: /:/,
127
+ // group: Lexer.SKIPPED,
128
+ // });
129
+ const smdTokens = [
130
+ MainSeparator,
131
+ Separator,
132
+ OddType,
133
+ EvenType,
134
+ DescriptiveType,
135
+ AllType,
136
+ Number,
137
+ From,
138
+ To,
139
+ AndAbove,
140
+ AndBelow,
141
+ Without,
142
+ Hyphen,
143
+ Slash,
144
+ Space,
145
+ // Colon,
146
+ MunicipalityPartName,
147
+ StreetName,
148
+ ];
149
+ MainSeparator.LABEL = "' - '";
150
+ Separator.LABEL = "','";
151
+ Hyphen.LABEL = "'-'";
152
+ Slash.LABEL = "'/'";
153
+ From.LABEL = "'od'";
154
+ To.LABEL = "'do'";
155
+ AndAbove.LABEL = "'a výše'";
156
+ AndBelow.LABEL = "'a níže'";
157
+ Space.LABEL = "' '";
158
+ OddType.LABEL = "'lichá č.'";
159
+ EvenType.LABEL = "'sudá č.'";
160
+ DescriptiveType.LABEL = "'č. p.'";
161
+ AllType.LABEL = "'č.'";
162
+ Without.LABEL = "'bez'";
163
+ const tokenVocabulary = {};
164
+ smdTokens.forEach((tokenType) => {
165
+ tokenVocabulary[tokenType.name] = tokenType;
166
+ });
167
+ export { MainSeparator, Separator, OddType, EvenType, DescriptiveType, AllType, Number, From, To, AndAbove, AndBelow, Without, Hyphen, Slash, Space, StreetName, MunicipalityPartName, smdTokens, tokenVocabulary, };
168
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4tZGVmaW5pdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdHJlZXQtbWFya2Rvd24vdG9rZW4tZGVmaW5pdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBbUIsTUFBTSxZQUFZLENBQUM7QUFFakUsSUFBSSxjQUFjLEdBQUcsS0FBSyxDQUFDO0FBRTNCLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxHQUFTLEVBQUU7SUFDeEMsY0FBYyxHQUFHLEtBQUssQ0FBQztBQUN6QixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxJQUFZLEVBQUUsRUFBRTtJQUMxQyxPQUFPLElBQUk7U0FDUixPQUFPLENBQUMsNkJBQTZCLEVBQUUsT0FBTyxDQUFDO1NBQy9DLE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDO1NBQ2xCLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDdkIsQ0FBQyxDQUFDO0FBRUYsNEZBQTRGO0FBQzVGLHNEQUFzRDtBQUN0RCxNQUFNLG1CQUFtQixHQUFHLENBQzFCLE9BQWUsRUFDa0QsRUFBRTtJQUNuRSxNQUFNLGFBQWEsR0FBRyxJQUFJLE1BQU0sQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDL0MsT0FBTyxDQUFDLElBQVksRUFBRSxXQUFtQixFQUEwQixFQUFFO1FBQ25FLElBQUksY0FBYyxFQUFFO1lBQ2xCLGFBQWEsQ0FBQyxTQUFTLEdBQUcsV0FBVyxDQUFDO1lBQ3RDLE9BQU8sYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNqQzthQUFNO1lBQ0wsT0FBTyxJQUFJLENBQUM7U0FDYjtJQUNILENBQUMsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGLE1BQU0saUJBQWlCLEdBQUc7SUFDeEIsT0FBTztJQUNQLE1BQU07SUFDTixJQUFJO0lB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OUIsZUFBZSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxTQUFTLENBQUM7QUFDOUMsQ0FBQyxDQUFDLENBQUM7QUFFSCxPQUFPLEVBQ0wsYUFBYSxFQUNiLFNBQVMsRUFDVCxPQUFPLEVBQ1AsUUFBUSxFQUNSLGVBQWUsRUFDZixPQUFPLEVBQ1AsTUFBTSxFQUNOLElBQUksRUFDSixFQUFFLEVBQ0YsUUFBUSxFQUNSLFFBQVEsRUFDUixPQUFPLEVBQ1AsTUFBTSxFQUNOLEtBQUssRUFDTCxLQUFLLEVBQ0wsVUFBVSxFQUNWLG9CQUFvQixFQUNwQixTQUFTLEVBQ1QsZUFBZSxHQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlVG9rZW4sIExleGVyLCBUb2tlblZvY2FidWxhcnkgfSBmcm9tIFwiY2hldnJvdGFpblwiO1xuXG5sZXQgbmFtZVdhc01hdGNoZWQgPSBmYWxzZTtcblxuZXhwb3J0IGNvbnN0IHJlc2V0VG9rZW5TdGF0ZSA9ICgpOiB2b2lkID0+IHtcbiAgbmFtZVdhc01hdGNoZWQgPSBmYWxzZTtcbn07XG5cbmV4cG9ydCBjb25zdCBwcmVwYXJlTGluZSA9ICh0ZXh0OiBzdHJpbmcpID0+IHtcbiAgcmV0dXJuIHRleHRcbiAgICAucmVwbGFjZSgvKFtJVlhMQ0RNXSspIC0gKFtJVlhMQ0RNXSspLywgXCIkMS0kMlwiKVxuICAgIC5yZXBsYWNlKC87L2csIFwiLFwiKVxuICAgIC5yZXBsYWNlKC8sJC8sIFwiXCIpO1xufTtcblxuLy8gdGhpcyBmdW5jdGlvbiBwcmV2ZW50cyBudW1iZXJzIHRoYXQgbWFrZSBwYXJ0IG9mIHRoZSBzdHJlZXQgbmFtZSB0byBiZSBtYXRjaGVkIGJlZm9yZSB0aGVcbi8vIHN0cmVldC9tdW5pY2lwYWxpdHkgcGFydCBuYW1lIGlzIGNvbXBsZXRlbHkgbWF0Y2hlZFxuY29uc3QgdG9rZW5CbG9ja2VyRmFjdG9yeSA9IChcbiAgcGF0dGVybjogUmVnRXhwXG4pOiAoKHRleHQ6IHN0cmluZywgc3RhcnRPZmZzZXQ6IG51bWJlcikgPT4gUmVnRXhwRXhlY0FycmF5IHwgbnVsbCkgPT4ge1xuICBjb25zdCBzdGlja3lQYXR0ZXJuID0gbmV3IFJlZ0V4cChwYXR0ZXJuLCBcInlcIik7XG4gIHJldHVybiAodGV4dDogc3RyaW5nLCBzdGFydE9mZnNldDogbnVtYmVyKTogUmVnRXhwRXhlY0FycmF5IHwgbnVsbCA9PiB7XG4gICAgaWYgKG5hbWVXYXNNYXRjaGVkKSB7XG4gICAgICBzdGlja3lQYXR0ZXJuLmxhc3RJbmRleCA9IHN0YXJ0T2Zmc2V0O1xuICAgICAgcmV0dXJuIHN0aWNreVBhdHRlcm4uZXhlYyh0ZXh0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9O1xufTtcblxuY29uc3QgaW50ZXJydXB0UGF0dGVybnMgPSBbXG4gIFwibGljaMOhXCIsXG4gIFwic3Vkw6FcIixcbiAgXCLEjS5cIixcbiAgXCJvZFwiLFxuICBcImRvXCIsXG4gIFwicG91emVcIixcbiAgXCJ2xaFlY2huYVwiLFxuICBcImJlelwiLFxuICBcInZ5am1hXCIsXG4gIFwibWltb1wiLFxuICBcInMgdsO9amlta291XCIsXG4gIFwia3JvbcSbXCIsXG5dO1xuLy8gdGhpcyBwYXR0ZXJuIGFsbG93cyBhIHNpbmdsZSBzcGFjZSBvciBhIHNpbmdsZSBoeXBoZW4gKHdpdGhvdXQgYW4gYWRqYWNlbnQgc3BhY2UpIGJldHdlZW4gd29yZHNcbmNvbnN0IHN0cmVldE5hbWVQYXR0ZXJuID0gL1teIC1dKyhbIC1dP1teIC1dKykqLztcblxuLy8gc2FtZSBidXQgd2l0aCBhIHByZWZpeCBvZiBtdW5pY2lwYWxpdHkgcGFydFxuY29uc3QgbXVuaWNpcGFsaXR5UGFydE5hbWVQYXR0ZXJuID0gL8SNw6FzdCAob2JjZXxtxJtzdGEpIFteIC1dKyhbIC1dP1teIC1dKykqLztcblxuZXhwb3J0IGNvbnN0IG5hbWVNYXRjaGVyRmFjdG9yeSA9IChwYXR0ZXJuOiBSZWdFeHApID0+IHtcbiAgcmV0dXJuIChcbiAgICB0ZXh0OiBzdHJpbmcsXG4gICAgc3RhcnRPZmZzZXQ6IG51bWJlclxuICApOiBSZWdFeHBFeGVjQXJyYXkgfCBbc3RyaW5nXSB8IG51bGwgPT4ge1xuICAgIGlmIChuYW1lV2FzTWF0Y2hlZCB8fCBzdGFydE9mZnNldCA+IDApIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBwYXR0ZXJuLmV4ZWModGV4dCk7XG4gICAgICBpZiAocmVzdWx0ICE9PSBudWxsKSB7XG4gICAgICAgIG5hbWVXYXNNYXRjaGVkID0gdHJ1ZTtcbiAgICAgICAgY29uc3QgZmlyc3RJbmRleCA9IGludGVycnVwdFBhdHRlcm5zLnJlZHVjZShcbiAgICAgICAgICAoY3VycmVudE1pbjogbnVtYmVyLCBwYXR0ZXJuOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGV4dC5zZWFyY2gobmV3IFJlZ0V4cChgICR7cGF0dGVybn0oIHwkKWApKTtcbiAgICAgICAgICAgIHJldHVybiBpbmRleCA+PSAwID8gTWF0aC5taW4oaW5kZXgsIGN1cnJlbnRNaW4pIDogY3VycmVudE1pbjtcbiAgICAgICAgICB9LFxuICAgICAgICAgIEluZmluaXR5XG4gICAgICAgICk7XG4gICAgICAgIGlmIChmaXJzdEluZGV4IDwgSW5maW5pdHkpIHtcbiAgICAgICAgICByZXR1cm4gW3Jlc3VsdFswXS5zdWJzdHJpbmcoMCwgZmlyc3RJbmRleCkudHJpbSgpXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gIH07XG59O1xuXG5leHBvcnQgY29uc3Qgc3RyZWV0TmFtZU1hdGNoZXIgPSBuYW1lTWF0Y2hlckZhY3Rvcnkoc3RyZWV0TmFtZVBhdHRlcm4pO1xuXG5jb25zdCBNYWluU2VwYXJhdG9yID0gY3JlYXRlVG9rZW4oeyBuYW1lOiBcIk1haW5TZXBhcmF0b3JcIiwgcGF0dGVybjogLyAtIC8gfSk7XG5jb25zdCBGcm9tID0gY3JlYXRlVG9rZW4oeyBuYW1lOiBcIkZyb21cIiwgcGF0dGVybjogL29kLyB9KTtcbmNvbnN0IFRvID0gY3JlYXRlVG9rZW4oeyBuYW1lOiBcIlRvXCIsIHBhdHRlcm46IC9kby8gfSk7XG5jb25zdCBBbmRBYm92ZSA9IGNyZWF0ZVRva2VuKHtcbiAgbmFtZTogXCJBbmRBYm92ZVwiLFxuICBwYXR0ZXJuOiAvIChhICk/KHbDvcWhZT98dnnFocWhw60pLyxcbn0pO1xuY29uc3QgQW5kQmVsb3cgPSBjcmVhdGVUb2tlbih7XG4gIG5hbWU6IFwiQW5kQmVsb3dcIixcbiAgcGF0dGVybjogLyBhIChuw63FvmU/fG5pxb7FocOtKS8sXG59KTtcbmNvbnN0IFNlcGFyYXRvciA9IGNyZWF0ZVRva2VuKHtcbiAgbmFtZTogXCJTZXBhcmF0b3JcIixcbiAgcGF0dGVybjogLyx8IGEgLyxcbiAgbG9uZ2VyX2FsdDogW0FuZEFib3ZlLCBBbmRCZWxvd10sXG59KTtcbmNvbnN0IERlc2NyaXB0aXZlVHlwZSA9IGNyZWF0ZVRva2VuKHtcbiAgbmFtZTogXCJDUFR5cGVcIixcbiAgcGF0dGVybjogLyhwb3V6ZSB8dsWhZWNobmEgKT/EjS4gP3AuLyxcbn0pO1xuY29uc3QgQWxsVHlwZSA9IGNyZWF0ZVRva2VuKHtcbiAgbmFtZTogXCJBbGxUeXBlXCIsXG4gIHBhdHRlcm46IC8ocG91emUgfHbFoWVjaG5hICk/KMSNKFxcLnzDrXNsYSkoID9vXFwuKT98bGljaMOhIGkgc3Vkw6EpLyxcbiAgbG9uZ2VyX2FsdDogRGVzY3JpcHRpdmVUeXBlLFxufSk7XG5jb25zdCBPZGRUeXBlID0gY3JlYXRlVG9rZW4oe1xuICBuYW1lOiBcIk9kZFR5cGVcIixcbiAgcGF0dGVybjpcbiAgICAvKHBvdXplIHx2xaFlY2huYSApPyhsaWNoKFvDocOpXXzDvWNoKSggxI0oXFwufMOtc2xhKSk/KCA/b1xcLik/fMSNKFxcLnzDrXNsYSkoID9vXFwuKT8gbGljaFvDocOpXSkvLFxuICBsb25nZXJfYWx0OiBBbGxUeXBlLFxufSk7XG5jb25zdCBFdmVuVHlwZSA9IGNyZWF0ZVRva2VuKHtcbiAgbmFtZTogXCJFdmVuVHlwZVwiLFxuICBwYXR0ZXJuOlxuICAgIC8ocG91emUgfHbFoWVjaG5hICk/KHN1ZChbw6HDqV18w71jaCkoIMSNKFxcLnzDrXNsYSkpPyggP29cXC4pP3zEjShcXC58w61zbGEpKCA/b1xcLik/IHN1ZFvDocOpXSkvLFxufSk7XG5jb25zdCBXaXRob3V0ID0gY3JlYXRlVG9rZW4oe1xuICBuYW1lOiBcIldpdGhvdXRcIixcbiAgcGF0dGVybjogL2Jlenx2eWptYXxtaW1vfHMgdsO9amlta291fGtyb23Emy8sXG59KTtcbmNvbnN0IE11bmljaXBhbGl0eVBhcnROYW1lID0gY3JlYXRlVG9rZW4oe1xuICBuYW1lOiBcIk11bmljaXBhbGl0eVBhcnROYW1lXCIsXG4gIHBhdHRlcm46IG5hbWVNYXRjaGVyRmFjdG9yeShtdW5pY2lwYWxpdHlQYXJ0TmFtZVBhdHRlcm4pLFxufSk7XG5jb25zdCBTdHJlZXROYW1lID0gY3JlYXRlVG9rZW4oe1xuICBuYW1lOiBcIlN0cmVldE5hbWVcIixcbiAgcGF0dGVybjogbmFtZU1hdGNoZXJGYWN0b3J5KHN0cmVldE5hbWVQYXR0ZXJuKSxcbn0pO1xuXG5jb25zdCBOdW1iZXIgPSBjcmVhdGVUb2tlbih7XG4gIG5hbWU6IFwiTnVtYmVyXCIsXG4gIHBhdHRlcm46IHRva2VuQmxvY2tlckZhY3RvcnkoL1xcZCtbYS16QS1aXT8vKSxcbn0pO1xuY29uc3QgSHlwaGVuID0gY3JlYXRlVG9rZW4oeyBuYW1lOiBcIkh5cGhlblwiLCBwYXR0ZXJuOiAvLXxhxb4vIH0pO1xuY29uc3QgU2xhc2ggPSBjcmVhdGVUb2tlbih7IG5hbWU6IFwiSHlwaGVuXCIsIHBhdHRlcm46IC9cXC8vIH0pO1xuY29uc3QgU3BhY2UgPSBjcmVhdGVUb2tlbih7XG4gIG5hbWU6IFwiU3BhY2VcIixcbiAgcGF0dGVybjogLyArLyxcbiAgbG9uZ2VyX2FsdDogW01haW5TZXBhcmF0b3IsIFNlcGFyYXRvcl0sXG4gIGdyb3VwOiBMZXhlci5TS0lQUEVELFxufSk7XG4vLyBjb25zdCBDb2xvbiA9IGNyZWF0ZVRva2VuKHtcbi8vICAgbmFtZTogXCJDb2xvblwiLFxuLy8gICBwYXR0ZXJuOiAvOi8sXG4vLyAgIGdyb3VwOiBMZXhlci5TS0lQUEVELFxuLy8gfSk7XG5cbmNvbnN0IHNtZFRva2VucyA9IFtcbiAgTWFpblNlcGFyYXRvcixcbiAgU2VwYXJhdG9yLFxuICBPZGRUeXBlLFxuICBFdmVuVHlwZSxcbiAgRGVzY3JpcHRpdmVUeXBlLFxuICBBbGxUeXBlLFxuICBOdW1iZXIsXG4gIEZyb20sXG4gIFRvLFxuICBBbmRBYm92ZSxcbiAgQW5kQmVsb3csXG4gIFdpdGhvdXQsXG4gIEh5cGhlbixcbiAgU2xhc2gsXG4gIFNwYWNlLFxuICAvLyBDb2xvbixcbiAgTXVuaWNpcGFsaXR5UGFydE5hbWUsXG4gIFN0cmVldE5hbWUsXG5dO1xuXG5NYWluU2VwYXJhdG9yLkxBQkVMID0gXCInIC0gJ1wiO1xuU2VwYXJhdG9yLkxBQkVMID0gXCInLCdcIjtcbkh5cGhlbi5MQUJFTCA9IFwiJy0nXCI7XG5TbGFzaC5MQUJFTCA9IFwiJy8nXCI7XG5Gcm9tLkxBQkVMID0gXCInb2QnXCI7XG5Uby5MQUJFTCA9IFwiJ2RvJ1wiO1xuQW5kQWJvdmUuTEFCRUwgPSBcIidhIHbDvcWhZSdcIjtcbkFuZEJlbG93LkxBQkVMID0gXCInYSBuw63FvmUnXCI7XG5TcGFjZS5MQUJFTCA9IFwiJyAnXCI7XG5PZGRUeXBlLkxBQkVMID0gXCInbGljaMOhIMSNLidcIjtcbkV2ZW5UeXBlLkxBQkVMID0gXCInc3Vkw6EgxI0uJ1wiO1xuRGVzY3JpcHRpdmVUeXBlLkxBQkVMID0gXCInxI0uIHAuJ1wiO1xuQWxsVHlwZS5MQUJFTCA9IFwiJ8SNLidcIjtcbldpdGhvdXQuTEFCRUwgPSBcIidiZXonXCI7XG5cbmNvbnN0IHRva2VuVm9jYWJ1bGFyeTogVG9rZW5Wb2NhYnVsYXJ5ID0ge307XG5cbnNtZFRva2Vucy5mb3JFYWNoKCh0b2tlblR5cGUpID0+IHtcbiAgdG9rZW5Wb2NhYnVsYXJ5W3Rva2VuVHlwZS5uYW1lXSA9IHRva2VuVHlwZTtcbn0pO1xuXG5leHBvcnQge1xuICBNYWluU2VwYXJhdG9yLFxuICBTZXBhcmF0b3IsXG4gIE9kZFR5cGUsXG4gIEV2ZW5UeXBlLFxuICBEZXNjcmlwdGl2ZVR5cGUsXG4gIEFsbFR5cGUsXG4gIE51bWJlcixcbiAgRnJvbSxcbiAgVG8sXG4gIEFuZEFib3ZlLFxuICBBbmRCZWxvdyxcbiAgV2l0aG91dCxcbiAgSHlwaGVuLFxuICBTbGFzaCxcbiAgU3BhY2UsXG4gIFN0cmVldE5hbWUsXG4gIE11bmljaXBhbGl0eVBhcnROYW1lLFxuICBzbWRUb2tlbnMsXG4gIHRva2VuVm9jYWJ1bGFyeSxcbn07XG4iXX0=