@jjlmoya/utils-astronomy 1.35.1 → 1.36.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.
Files changed (55) hide show
  1. package/package.json +66 -66
  2. package/src/category/index.ts +2 -1
  3. package/src/entries.ts +4 -2
  4. package/src/index.ts +2 -1
  5. package/src/tests/locale_completeness.test.ts +2 -2
  6. package/src/tests/tool_validation.test.ts +4 -3
  7. package/src/tool/astrophotographyExposureStackPlanner/astrophotography-exposure-stacking-planner.css +496 -0
  8. package/src/tool/astrophotographyExposureStackPlanner/bibliography.astro +14 -0
  9. package/src/tool/astrophotographyExposureStackPlanner/bibliography.ts +12 -0
  10. package/src/tool/astrophotographyExposureStackPlanner/component.astro +149 -0
  11. package/src/tool/astrophotographyExposureStackPlanner/controller.ts +125 -0
  12. package/src/tool/astrophotographyExposureStackPlanner/dom-views.ts +41 -0
  13. package/src/tool/astrophotographyExposureStackPlanner/entry.ts +29 -0
  14. package/src/tool/astrophotographyExposureStackPlanner/evaluator.ts +44 -0
  15. package/src/tool/astrophotographyExposureStackPlanner/i18n/de.ts +40 -0
  16. package/src/tool/astrophotographyExposureStackPlanner/i18n/en.ts +232 -0
  17. package/src/tool/astrophotographyExposureStackPlanner/i18n/es.ts +52 -0
  18. package/src/tool/astrophotographyExposureStackPlanner/i18n/fr.ts +40 -0
  19. package/src/tool/astrophotographyExposureStackPlanner/i18n/id.ts +40 -0
  20. package/src/tool/astrophotographyExposureStackPlanner/i18n/it.ts +40 -0
  21. package/src/tool/astrophotographyExposureStackPlanner/i18n/ja.ts +40 -0
  22. package/src/tool/astrophotographyExposureStackPlanner/i18n/ko.ts +40 -0
  23. package/src/tool/astrophotographyExposureStackPlanner/i18n/nl.ts +40 -0
  24. package/src/tool/astrophotographyExposureStackPlanner/i18n/pl.ts +40 -0
  25. package/src/tool/astrophotographyExposureStackPlanner/i18n/pt.ts +40 -0
  26. package/src/tool/astrophotographyExposureStackPlanner/i18n/ru.ts +40 -0
  27. package/src/tool/astrophotographyExposureStackPlanner/i18n/sv.ts +40 -0
  28. package/src/tool/astrophotographyExposureStackPlanner/i18n/tr.ts +40 -0
  29. package/src/tool/astrophotographyExposureStackPlanner/i18n/zh.ts +40 -0
  30. package/src/tool/astrophotographyExposureStackPlanner/index.ts +11 -0
  31. package/src/tool/astrophotographyExposureStackPlanner/localized.ts +59 -0
  32. package/src/tool/astrophotographyExposureStackPlanner/logic.test.ts +74 -0
  33. package/src/tool/astrophotographyExposureStackPlanner/logic.ts +95 -0
  34. package/src/tool/astrophotographyExposureStackPlanner/seo.astro +14 -0
  35. package/src/tool/astrophotographyExposureStackPlanner/storage.ts +22 -0
  36. package/src/tool/astrophotographyExposureStackPlanner/ui.ts +102 -0
  37. package/src/tool/meteorShowerObservingPlanner/dom-views.ts +38 -16
  38. package/src/tool/meteorShowerObservingPlanner/i18n/de.ts +219 -219
  39. package/src/tool/meteorShowerObservingPlanner/i18n/en.ts +219 -219
  40. package/src/tool/meteorShowerObservingPlanner/i18n/es.ts +219 -219
  41. package/src/tool/meteorShowerObservingPlanner/i18n/fr.ts +219 -219
  42. package/src/tool/meteorShowerObservingPlanner/i18n/id.ts +223 -223
  43. package/src/tool/meteorShowerObservingPlanner/i18n/it.ts +223 -223
  44. package/src/tool/meteorShowerObservingPlanner/i18n/ja.ts +219 -219
  45. package/src/tool/meteorShowerObservingPlanner/i18n/ko.ts +219 -219
  46. package/src/tool/meteorShowerObservingPlanner/i18n/nl.ts +223 -223
  47. package/src/tool/meteorShowerObservingPlanner/i18n/pl.ts +223 -223
  48. package/src/tool/meteorShowerObservingPlanner/i18n/pt.ts +223 -223
  49. package/src/tool/meteorShowerObservingPlanner/i18n/ru.ts +219 -219
  50. package/src/tool/meteorShowerObservingPlanner/i18n/sv.ts +223 -223
  51. package/src/tool/meteorShowerObservingPlanner/i18n/tr.ts +223 -223
  52. package/src/tool/meteorShowerObservingPlanner/i18n/zh.ts +219 -219
  53. package/src/tool/meteorShowerObservingPlanner/meteor-shower-observing-planner.css +16 -9
  54. package/src/tool/meteorShowerObservingPlanner/ui.ts +87 -87
  55. package/src/tools.ts +3 -1
@@ -1,219 +1,219 @@
1
- import type { MeteorShowerObservingPlannerLocaleContent } from '../ui';
2
- import { METEOR_PLANNER_BIBLIOGRAPHY } from '../bibliography';
3
-
4
- const slug = 'meteor-shower-observing-planner';
5
-
6
- export const content: MeteorShowerObservingPlannerLocaleContent = {
7
- slug,
8
- title: 'Meteor Shower Observing Window Planner',
9
- description: 'Plan optimal meteor shower viewing sessions by calculating effective zenithal hourly rates, sky darkness, and moon interference.',
10
- ui: {
11
- title: 'Meteor Shower Observing Planner',
12
- subtitle: 'Calculate candidate observing windows and forecast visible rate per hour',
13
- presetLabel: 'Select Major Meteor Shower',
14
- customZhrLabel: 'Custom Zenithal Hourly Rate',
15
- latitudeLabel: 'Observer Latitude',
16
- bortleLabel: 'Bortle Dark Sky Class',
17
- moonPhaseLabel: 'Moon Illumination',
18
- sessionHoursLabel: 'Planned Session Hours',
19
- toLabel: 'to',
20
- classLabel: 'Class',
21
- radiantTelemetryLabel: 'RADIANT TELEMETRY',
22
- belowHorizonLabel: 'Below Horizon',
23
- altLabel: 'Alt',
24
- moonLabel: 'Moon',
25
- hrUnit: '/ hr',
26
- presets: {
27
- perseids: 'Perseids (Aug 12)',
28
- geminids: 'Geminids (Dec 14)',
29
- quadrantids: 'Quadrantids (Jan 4)',
30
- lyrids: 'Lyrids (Apr 22)',
31
- orionids: 'Orionids (Oct 21)',
32
- 'eta-aquariids': 'Eta Aquariids (May 6)',
33
- leonids: 'Leonids (Nov 17)',
34
- custom: 'Custom Meteor Shower',
35
- },
36
- constellations: {
37
- Perseus: 'Perseus',
38
- Gemini: 'Gemini',
39
- Bootes: 'Bootes',
40
- Lyra: 'Lyra',
41
- Orion: 'Orion',
42
- Aquarius: 'Aquarius',
43
- Leo: 'Leo',
44
- Zenith: 'Zenith',
45
- },
46
- badgeLabels: {
47
- darkSky: 'Pristine Dark Sky',
48
- lightPollution: 'High Light Pollution',
49
- favorableMoon: 'Favorable Moon',
50
- moonWashout: 'Moon Washout Risk',
51
- primeWindow: 'Prime Activity Window',
52
- },
53
- bortleDescriptions: {
54
- 2: 'Pristine Dark Sky',
55
- 5: 'Suburban Sky',
56
- 8: 'Urban Light Pollution',
57
- },
58
- moonPhaseNames: {
59
- new: 'Minimal Moon Glow',
60
- quarter: 'Moderate Moon Interference',
61
- full: 'Severe Moon Washout',
62
- },
63
- resultsTitle: 'Observing Session Analysis',
64
- bestWindowLabel: 'Best Observing Window',
65
- maxRateLabel: 'Peak Visible Rate',
66
- skyQualityLabel: 'Sky Quality Index',
67
- hourlyChartTitle: 'Hourly Rate Forecast & Radiant Altitude',
68
- checklistTitle: 'Observing Session Preparation',
69
- checklistItems: [
70
- 'Allow at least 20 minutes for full dark adaptation before counting meteors',
71
- 'Use a red light filter or red LED headlamp to preserve night vision',
72
- 'Recline on a comfortable camp chair looking 45 degrees above horizon',
73
- 'Avoid looking at bright smartphone screens during observation',
74
- ],
75
- },
76
- seo: [
77
- {
78
- type: 'title',
79
- text: 'Understanding Zenithal Hourly Rate and Visible Meteors',
80
- level: 2,
81
- },
82
- {
83
- type: 'paragraph',
84
- html: 'The Zenithal Hourly Rate ZHR represents the maximum number of meteors a single observer would see under ideal dark sky conditions with the shower radiant directly overhead at the zenith. In real world observing conditions the actual visible meteor count is significantly lower due to atmospheric extinction light pollution and radiant altitude.',
85
- },
86
- {
87
- type: 'paragraph',
88
- html: 'Calculating candidate observing windows requires accounting for geometric and environmental factors. When the radiant altitude drops closer to the horizon fewer meteors are visible because their trails pass higher in the atmosphere or outside the observer visual cone.',
89
- },
90
- {
91
- type: 'list',
92
- items: [
93
- 'Radiant Elevation Factor reduces counts proportionally to the sine of altitude',
94
- 'Bortle Scale Light Pollution dampens faint meteor trails',
95
- 'Moon Phase and Illumination create sky background glow',
96
- 'Observer Field of View limits total sky coverage',
97
- ],
98
- },
99
- {
100
- type: 'tip',
101
- title: 'Dark Sky Recommendation',
102
- html: 'Observing from a Bortle Class 2 or 3 location dramatically increases visible faint meteors compared to urban backyards.',
103
- },
104
- {
105
- type: 'title',
106
- text: 'Impact of Moon Phase and Light Pollution',
107
- level: 2,
108
- },
109
- {
110
- type: 'paragraph',
111
- html: 'Moonlight acts as a strong natural light polluter during meteor shower peaks. A bright gibbous or full Moon washes out faint meteor streaks reducing the effective visible rate by over 70 percent even in dark rural locations.',
112
- },
113
- {
114
- type: 'paragraph',
115
- html: 'Selecting session hours after Moonset or before Moonrise guarantees maximum contrast between meteor streaks and the night sky background. Using narrow observation windows focused around astronomical midnight provides optimal sky darkness.',
116
- },
117
- {
118
- type: 'title',
119
- text: 'How to Prepare for a Meteor Observing Night',
120
- level: 2,
121
- },
122
- {
123
- type: 'paragraph',
124
- html: 'Successful meteor watching relies on patience and proper physical preparation. Since meteors appear randomly across broad sky sectors naked eye observation provides a far wider field of view than telescopes or binoculars.',
125
- },
126
- {
127
- type: 'list',
128
- items: [
129
- 'Dress in warm layered clothing even during summer nights',
130
- 'Bring a sleeping bag or insulated blanket for recline chairs',
131
- 'Keep warm beverages available to maintain core temperature',
132
- 'Note time and direction of bright fireballs for meteor reporting',
133
- ],
134
- },
135
- {
136
- type: 'title',
137
- text: 'Technical Calculation Methodology',
138
- level: 2,
139
- },
140
- {
141
- type: 'paragraph',
142
- html: 'This planner estimates the effective hourly rate by multiplying the shower peak ZHR by geometric elevation factors sky darkness extinction and lunar phase brightness adjustments providing realistic expectations for amateur astronomers.',
143
- },
144
- ],
145
- faq: [
146
- {
147
- question: 'What is Zenithal Hourly Rate ZHR?',
148
- answer: 'Zenithal Hourly Rate is the theoretical maximum number of meteors an observer would see per hour under a completely dark sky with the radiant at the zenith.',
149
- },
150
- {
151
- question: 'Why do I see fewer meteors than the advertised ZHR?',
152
- answer: 'Advertised ZHR numbers assume perfect dark skies and ideal overhead radiants. Light pollution low radiant altitude and Moon glow reduce visible counts.',
153
- },
154
- {
155
- question: 'Do I need a telescope to view meteor showers?',
156
- answer: 'No telescopes or binoculars restrict your field of view too much. Naked eye observing is best for catching meteors across wide sky areas.',
157
- },
158
- ],
159
- howTo: [
160
- {
161
- name: 'Select Meteor Shower',
162
- text: 'Choose a preset meteor shower such as Perseids or Geminids or enter custom ZHR values.',
163
- },
164
- {
165
- name: 'Set Your Location Latitude',
166
- text: 'Adjust the latitude slider to match your viewing location.',
167
- },
168
- {
169
- name: 'Configure Sky Darkness and Moon Phase',
170
- text: 'Set your local Bortle scale value and current Moon illumination percentage.',
171
- },
172
- {
173
- name: 'Review Hourly Rate Forecast',
174
- text: 'Examine the peak visible rate chart to identify your optimal observing window.',
175
- },
176
- ],
177
- bibliography: METEOR_PLANNER_BIBLIOGRAPHY,
178
- schemas: [
179
- {
180
- '@context': 'https://schema.org',
181
- '@type': 'SoftwareApplication',
182
- name: 'Meteor Shower Observing Window Planner',
183
- operatingSystem: 'Any',
184
- applicationCategory: 'EducationalApplication',
185
- offers: {
186
- '@type': 'Offer',
187
- price: '0',
188
- priceCurrency: 'USD',
189
- },
190
- },
191
- {
192
- '@context': 'https://schema.org',
193
- '@type': 'FAQPage',
194
- mainEntity: [
195
- {
196
- '@type': 'Question',
197
- name: 'What is Zenithal Hourly Rate ZHR?',
198
- acceptedAnswer: {
199
- '@type': 'Answer',
200
- text: 'Zenithal Hourly Rate is the theoretical maximum number of meteors an observer would see per hour under a completely dark sky with the radiant at the zenith.',
201
- },
202
- },
203
- ],
204
- },
205
- {
206
- '@context': 'https://schema.org',
207
- '@type': 'HowTo',
208
- name: 'How to Use the Meteor Shower Observing Window Planner',
209
- description: 'Follow these steps to find your best meteor observing window for any major shower.',
210
- step: [
211
- {
212
- '@type': 'HowToStep',
213
- name: 'Select Meteor Shower',
214
- text: 'Choose a preset meteor shower such as Perseids or Geminids or enter custom ZHR values.',
215
- },
216
- ],
217
- },
218
- ],
219
- };
1
+ import type { MeteorShowerObservingPlannerLocaleContent } from '../ui';
2
+ import { METEOR_PLANNER_BIBLIOGRAPHY } from '../bibliography';
3
+
4
+ const slug = 'meteor-shower-observing-planner';
5
+
6
+ export const content: MeteorShowerObservingPlannerLocaleContent = {
7
+ slug,
8
+ title: 'Meteor Shower Observing Window Planner',
9
+ description: 'Plan optimal meteor shower viewing sessions by calculating effective zenithal hourly rates, sky darkness, and moon interference.',
10
+ ui: {
11
+ title: 'Meteor Shower Observing Planner',
12
+ subtitle: 'Calculate candidate observing windows and forecast visible rate per hour',
13
+ presetLabel: 'Select Major Meteor Shower',
14
+ customZhrLabel: 'Custom Zenithal Hourly Rate',
15
+ latitudeLabel: 'Observer Latitude',
16
+ bortleLabel: 'Bortle Dark Sky Class',
17
+ moonPhaseLabel: 'Moon Illumination',
18
+ sessionHoursLabel: 'Planned Session Hours',
19
+ toLabel: 'to',
20
+ classLabel: 'Class',
21
+ radiantTelemetryLabel: 'RADIANT TELEMETRY',
22
+ belowHorizonLabel: 'Below Horizon',
23
+ altLabel: 'Alt',
24
+ moonLabel: 'Moon',
25
+ hrUnit: '/ hr',
26
+ presets: {
27
+ perseids: 'Perseids (Aug 12)',
28
+ geminids: 'Geminids (Dec 14)',
29
+ quadrantids: 'Quadrantids (Jan 4)',
30
+ lyrids: 'Lyrids (Apr 22)',
31
+ orionids: 'Orionids (Oct 21)',
32
+ 'eta-aquariids': 'Eta Aquariids (May 6)',
33
+ leonids: 'Leonids (Nov 17)',
34
+ custom: 'Custom Meteor Shower',
35
+ },
36
+ constellations: {
37
+ Perseus: 'Perseus',
38
+ Gemini: 'Gemini',
39
+ Bootes: 'Bootes',
40
+ Lyra: 'Lyra',
41
+ Orion: 'Orion',
42
+ Aquarius: 'Aquarius',
43
+ Leo: 'Leo',
44
+ Zenith: 'Zenith',
45
+ },
46
+ badgeLabels: {
47
+ darkSky: 'Pristine Dark Sky',
48
+ lightPollution: 'High Light Pollution',
49
+ favorableMoon: 'Favorable Moon',
50
+ moonWashout: 'Moon Washout Risk',
51
+ primeWindow: 'Prime Activity Window',
52
+ },
53
+ bortleDescriptions: {
54
+ 2: 'Pristine Dark Sky',
55
+ 5: 'Suburban Sky',
56
+ 8: 'Urban Light Pollution',
57
+ },
58
+ moonPhaseNames: {
59
+ new: 'Minimal Moon Glow',
60
+ quarter: 'Moderate Moon Interference',
61
+ full: 'Severe Moon Washout',
62
+ },
63
+ resultsTitle: 'Observing Session Analysis',
64
+ bestWindowLabel: 'Best Observing Window',
65
+ maxRateLabel: 'Peak Visible Rate',
66
+ skyQualityLabel: 'Sky Quality Index',
67
+ hourlyChartTitle: 'Hourly Rate Forecast & Radiant Altitude',
68
+ checklistTitle: 'Observing Session Preparation',
69
+ checklistItems: [
70
+ 'Allow at least 20 minutes for full dark adaptation before counting meteors',
71
+ 'Use a red light filter or red LED headlamp to preserve night vision',
72
+ 'Recline on a comfortable camp chair looking 45 degrees above horizon',
73
+ 'Avoid looking at bright smartphone screens during observation',
74
+ ],
75
+ },
76
+ seo: [
77
+ {
78
+ type: 'title',
79
+ text: 'Understanding Zenithal Hourly Rate and Visible Meteors',
80
+ level: 2,
81
+ },
82
+ {
83
+ type: 'paragraph',
84
+ html: 'The Zenithal Hourly Rate ZHR represents the maximum number of meteors a single observer would see under ideal dark sky conditions with the shower radiant directly overhead at the zenith. In real world observing conditions the actual visible meteor count is significantly lower due to atmospheric extinction light pollution and radiant altitude.',
85
+ },
86
+ {
87
+ type: 'paragraph',
88
+ html: 'Calculating candidate observing windows requires accounting for geometric and environmental factors. When the radiant altitude drops closer to the horizon fewer meteors are visible because their trails pass higher in the atmosphere or outside the observer visual cone.',
89
+ },
90
+ {
91
+ type: 'list',
92
+ items: [
93
+ 'Radiant Elevation Factor reduces counts proportionally to the sine of altitude',
94
+ 'Bortle Scale Light Pollution dampens faint meteor trails',
95
+ 'Moon Phase and Illumination create sky background glow',
96
+ 'Observer Field of View limits total sky coverage',
97
+ ],
98
+ },
99
+ {
100
+ type: 'tip',
101
+ title: 'Dark Sky Recommendation',
102
+ html: 'Observing from a Bortle Class 2 or 3 location dramatically increases visible faint meteors compared to urban backyards.',
103
+ },
104
+ {
105
+ type: 'title',
106
+ text: 'Impact of Moon Phase and Light Pollution',
107
+ level: 2,
108
+ },
109
+ {
110
+ type: 'paragraph',
111
+ html: 'Moonlight acts as a strong natural light polluter during meteor shower peaks. A bright gibbous or full Moon washes out faint meteor streaks reducing the effective visible rate by over 70 percent even in dark rural locations.',
112
+ },
113
+ {
114
+ type: 'paragraph',
115
+ html: 'Selecting session hours after Moonset or before Moonrise guarantees maximum contrast between meteor streaks and the night sky background. Using narrow observation windows focused around astronomical midnight provides optimal sky darkness.',
116
+ },
117
+ {
118
+ type: 'title',
119
+ text: 'How to Prepare for a Meteor Observing Night',
120
+ level: 2,
121
+ },
122
+ {
123
+ type: 'paragraph',
124
+ html: 'Successful meteor watching relies on patience and proper physical preparation. Since meteors appear randomly across broad sky sectors naked eye observation provides a far wider field of view than telescopes or binoculars.',
125
+ },
126
+ {
127
+ type: 'list',
128
+ items: [
129
+ 'Dress in warm layered clothing even during summer nights',
130
+ 'Bring a sleeping bag or insulated blanket for recline chairs',
131
+ 'Keep warm beverages available to maintain core temperature',
132
+ 'Note time and direction of bright fireballs for meteor reporting',
133
+ ],
134
+ },
135
+ {
136
+ type: 'title',
137
+ text: 'Technical Calculation Methodology',
138
+ level: 2,
139
+ },
140
+ {
141
+ type: 'paragraph',
142
+ html: 'This planner estimates the effective hourly rate by multiplying the shower peak ZHR by geometric elevation factors sky darkness extinction and lunar phase brightness adjustments providing realistic expectations for amateur astronomers.',
143
+ },
144
+ ],
145
+ faq: [
146
+ {
147
+ question: 'What is Zenithal Hourly Rate ZHR?',
148
+ answer: 'Zenithal Hourly Rate is the theoretical maximum number of meteors an observer would see per hour under a completely dark sky with the radiant at the zenith.',
149
+ },
150
+ {
151
+ question: 'Why do I see fewer meteors than the advertised ZHR?',
152
+ answer: 'Advertised ZHR numbers assume perfect dark skies and ideal overhead radiants. Light pollution low radiant altitude and Moon glow reduce visible counts.',
153
+ },
154
+ {
155
+ question: 'Do I need a telescope to view meteor showers?',
156
+ answer: 'No telescopes or binoculars restrict your field of view too much. Naked eye observing is best for catching meteors across wide sky areas.',
157
+ },
158
+ ],
159
+ howTo: [
160
+ {
161
+ name: 'Select Meteor Shower',
162
+ text: 'Choose a preset meteor shower such as Perseids or Geminids or enter custom ZHR values.',
163
+ },
164
+ {
165
+ name: 'Set Your Location Latitude',
166
+ text: 'Adjust the latitude slider to match your viewing location.',
167
+ },
168
+ {
169
+ name: 'Configure Sky Darkness and Moon Phase',
170
+ text: 'Set your local Bortle scale value and current Moon illumination percentage.',
171
+ },
172
+ {
173
+ name: 'Review Hourly Rate Forecast',
174
+ text: 'Examine the peak visible rate chart to identify your optimal observing window.',
175
+ },
176
+ ],
177
+ bibliography: METEOR_PLANNER_BIBLIOGRAPHY,
178
+ schemas: [
179
+ {
180
+ '@context': 'https://schema.org',
181
+ '@type': 'SoftwareApplication',
182
+ name: 'Meteor Shower Observing Window Planner',
183
+ operatingSystem: 'Any',
184
+ applicationCategory: 'EducationalApplication',
185
+ offers: {
186
+ '@type': 'Offer',
187
+ price: '0',
188
+ priceCurrency: 'USD',
189
+ },
190
+ },
191
+ {
192
+ '@context': 'https://schema.org',
193
+ '@type': 'FAQPage',
194
+ mainEntity: [
195
+ {
196
+ '@type': 'Question',
197
+ name: 'What is Zenithal Hourly Rate ZHR?',
198
+ acceptedAnswer: {
199
+ '@type': 'Answer',
200
+ text: 'Zenithal Hourly Rate is the theoretical maximum number of meteors an observer would see per hour under a completely dark sky with the radiant at the zenith.',
201
+ },
202
+ },
203
+ ],
204
+ },
205
+ {
206
+ '@context': 'https://schema.org',
207
+ '@type': 'HowTo',
208
+ name: 'How to Use the Meteor Shower Observing Window Planner',
209
+ description: 'Follow these steps to find your best meteor observing window for any major shower.',
210
+ step: [
211
+ {
212
+ '@type': 'HowToStep',
213
+ name: 'Select Meteor Shower',
214
+ text: 'Choose a preset meteor shower such as Perseids or Geminids or enter custom ZHR values.',
215
+ },
216
+ ],
217
+ },
218
+ ],
219
+ };