@readium/shared 1.2.0 → 1.3.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.
@@ -0,0 +1,196 @@
1
+ /**
2
+ * Holds the accessibility metadata of a Publication.
3
+ *
4
+ * https://www.w3.org/2021/a11y-discov-vocab/latest/
5
+ * https://readium.org/webpub-manifest/schema/a11y.schema.json
6
+ */
7
+ export declare class Accessibility {
8
+ /**
9
+ * An established standard to which the described resource conforms.
10
+ */
11
+ conformsTo: Profile[];
12
+ /**
13
+ * Certification of accessible publications.
14
+ */
15
+ certification: Certification | null;
16
+ /**
17
+ * A human-readable summary of specific accessibility features or deficiencies.
18
+ */
19
+ summary: string | null;
20
+ /**
21
+ * The human sensory perceptual system through which a person may process or perceive information.
22
+ */
23
+ accessMode: AccessMode[];
24
+ /**
25
+ * A list of single or combined accessModes that are sufficient to understand all the intellectual content.
26
+ */
27
+ accessModeSufficient: PrimaryAccessMode[];
28
+ /**
29
+ * Content features of the resource.
30
+ */
31
+ feature: Feature[];
32
+ /**
33
+ * A characteristic of the described resource that is physiologically dangerous to some users.
34
+ */
35
+ hazard: Hazard[];
36
+ /**
37
+ * Justifications for non-conformance based on exemptions in a given jurisdiction.
38
+ */
39
+ exemption: Exemption[];
40
+ constructor(values?: {
41
+ conformsTo?: Profile[];
42
+ certification?: Certification | null;
43
+ summary?: string | null;
44
+ accessMode?: AccessMode[];
45
+ accessModeSufficient?: PrimaryAccessMode[];
46
+ feature?: Feature[];
47
+ hazard?: Hazard[];
48
+ exemption?: Exemption[];
49
+ });
50
+ /**
51
+ * Parses an [Accessibility] from its RWPM JSON representation.
52
+ */
53
+ static deserialize(json: Record<string, any> | string): Accessibility | undefined;
54
+ /**
55
+ * Serializes an [Accessibility] to its RWPM JSON representation.
56
+ */
57
+ serialize(): Record<string, any>;
58
+ }
59
+ export declare class Profile {
60
+ readonly uri: string;
61
+ constructor(uri: string);
62
+ static deserialize(json: any): Profile | undefined;
63
+ serialize(): any;
64
+ static readonly EPUB_A11Y_10_WCAG_20_A: Profile;
65
+ static readonly EPUB_A11Y_10_WCAG_20_AA: Profile;
66
+ static readonly EPUB_A11Y_10_WCAG_20_AAA: Profile;
67
+ static readonly EPUB_A11Y_11_WCAG_20_A: Profile;
68
+ static readonly EPUB_A11Y_11_WCAG_20_AA: Profile;
69
+ static readonly EPUB_A11Y_11_WCAG_20_AAA: Profile;
70
+ static readonly EPUB_A11Y_11_WCAG_21_A: Profile;
71
+ static readonly EPUB_A11Y_11_WCAG_21_AA: Profile;
72
+ static readonly EPUB_A11Y_11_WCAG_21_AAA: Profile;
73
+ static readonly EPUB_A11Y_11_WCAG_22_A: Profile;
74
+ static readonly EPUB_A11Y_11_WCAG_22_AA: Profile;
75
+ static readonly EPUB_A11Y_11_WCAG_22_AAA: Profile;
76
+ get isWCAGLevelA(): boolean;
77
+ get isWCAGLevelAA(): boolean;
78
+ get isWCAGLevelAAA(): boolean;
79
+ }
80
+ export declare class Certification {
81
+ readonly certifiedBy: string | null;
82
+ readonly credential: string | null;
83
+ readonly report: string | null;
84
+ constructor(certifiedBy?: string | null, credential?: string | null, report?: string | null);
85
+ static deserialize(json: any): Certification | undefined;
86
+ serialize(): Record<string, any>;
87
+ }
88
+ export declare class AccessMode {
89
+ readonly value: string;
90
+ constructor(value: string);
91
+ static deserialize(json: any): AccessMode | undefined;
92
+ serialize(): any;
93
+ static readonly AUDITORY: AccessMode;
94
+ static readonly CHART_ON_VISUAL: AccessMode;
95
+ static readonly CHEM_ON_VISUAL: AccessMode;
96
+ static readonly COLOR_DEPENDENT: AccessMode;
97
+ static readonly DIAGRAM_ON_VISUAL: AccessMode;
98
+ static readonly MATH_ON_VISUAL: AccessMode;
99
+ static readonly MUSIC_ON_VISUAL: AccessMode;
100
+ static readonly TACTILE: AccessMode;
101
+ static readonly TEXT_ON_VISUAL: AccessMode;
102
+ static readonly TEXTUAL: AccessMode;
103
+ static readonly VISUAL: AccessMode;
104
+ }
105
+ export declare class PrimaryAccessMode {
106
+ readonly value: string | string[];
107
+ private static readonly VALID_MODES;
108
+ constructor(value: string | string[]);
109
+ static deserialize(json: any): PrimaryAccessMode | undefined;
110
+ serialize(): string | string[];
111
+ static readonly AUDITORY: PrimaryAccessMode;
112
+ static readonly TACTILE: PrimaryAccessMode;
113
+ static readonly TEXTUAL: PrimaryAccessMode;
114
+ static readonly VISUAL: PrimaryAccessMode;
115
+ }
116
+ export declare class Feature {
117
+ readonly value: string;
118
+ constructor(value: string);
119
+ static deserialize(json: any): Feature | undefined;
120
+ serialize(): any;
121
+ static readonly NONE: Feature;
122
+ static readonly ANNOTATIONS: Feature;
123
+ static readonly ARIA: Feature;
124
+ static readonly INDEX: Feature;
125
+ static readonly PAGE_BREAK_MARKERS: Feature;
126
+ static readonly PAGE_NAVIGATION: Feature;
127
+ static readonly PRINT_PAGE_NUMBERS: Feature;
128
+ static readonly READING_ORDER: Feature;
129
+ static readonly STRUCTURAL_NAVIGATION: Feature;
130
+ static readonly TABLE_OF_CONTENTS: Feature;
131
+ static readonly TAGGED_PDF: Feature;
132
+ static readonly ALTERNATIVE_TEXT: Feature;
133
+ static readonly AUDIO_DESCRIPTION: Feature;
134
+ static readonly CAPTIONS: Feature;
135
+ static readonly CLOSED_CAPTIONS: Feature;
136
+ static readonly DESCRIBED_MATH: Feature;
137
+ static readonly LONG_DESCRIPTION: Feature;
138
+ static readonly OPEN_CAPTIONS: Feature;
139
+ static readonly SIGN_LANGUAGE: Feature;
140
+ static readonly TRANSCRIPT: Feature;
141
+ static readonly DISPLAY_TRANSFORMABILITY: Feature;
142
+ static readonly SYNCHRONIZED_AUDIO_TEXT: Feature;
143
+ static readonly TIMING_CONTROL: Feature;
144
+ static readonly UNLOCKED: Feature;
145
+ static readonly CHEM_ML: Feature;
146
+ static readonly LATEX: Feature;
147
+ static readonly LATEX_CHEMISTRY: Feature;
148
+ static readonly MATH_ML: Feature;
149
+ static readonly MATH_ML_CHEMISTRY: Feature;
150
+ static readonly TTS_MARKUP: Feature;
151
+ static readonly HIGH_CONTRAST_AUDIO: Feature;
152
+ static readonly HIGH_CONTRAST_DISPLAY: Feature;
153
+ static readonly LARGE_PRINT: Feature;
154
+ static readonly BRAILLE: Feature;
155
+ static readonly TACTILE_GRAPHIC: Feature;
156
+ static readonly TACTILE_OBJECT: Feature;
157
+ static readonly FULL_RUBY_ANNOTATIONS: Feature;
158
+ static readonly HORIZONTAL_WRITING: Feature;
159
+ static readonly RUBY_ANNOTATIONS: Feature;
160
+ static readonly VERTICAL_WRITING: Feature;
161
+ static readonly WITH_ADDITIONAL_WORD_SEGMENTATION: Feature;
162
+ static readonly WITHOUT_ADDITIONAL_WORD_SEGMENTATION: Feature;
163
+ }
164
+ export declare class Hazard {
165
+ readonly value: string;
166
+ constructor(value: string);
167
+ static deserialize(json: any): Hazard | undefined;
168
+ serialize(): any;
169
+ static readonly FLASHING: Hazard;
170
+ static readonly NO_FLASHING_HAZARD: Hazard;
171
+ static readonly UNKNOWN_FLASHING_HAZARD: Hazard;
172
+ static readonly MOTION_SIMULATION: Hazard;
173
+ static readonly NO_MOTION_SIMULATION_HAZARD: Hazard;
174
+ static readonly UNKNOWN_MOTION_SIMULATION_HAZARD: Hazard;
175
+ static readonly SOUND: Hazard;
176
+ static readonly NO_SOUND_HAZARD: Hazard;
177
+ static readonly UNKNOWN_SOUND_HAZARD: Hazard;
178
+ static readonly UNKNOWN: Hazard;
179
+ static readonly NONE: Hazard;
180
+ }
181
+ export declare class Exemption {
182
+ readonly value: string;
183
+ constructor(value: string);
184
+ static deserialize(json: any): Exemption | undefined;
185
+ serialize(): any;
186
+ static readonly NONE: Exemption;
187
+ static readonly DOCUMENTED: Exemption;
188
+ static readonly LEGAL: Exemption;
189
+ static readonly TEMPORARY: Exemption;
190
+ static readonly TECHNICAL: Exemption;
191
+ static readonly EAA_DISPROPORTIONATE_BURDEN: Exemption;
192
+ static readonly EAA_FUNDAMENTAL_ALTERATION: Exemption;
193
+ static readonly EAA_MICROENTERPRISE: Exemption;
194
+ static readonly EAA_TECHNICAL_IMPOSSIBILITY: Exemption;
195
+ static readonly EAA_TEMPORARY: Exemption;
196
+ }
@@ -0,0 +1,56 @@
1
+ export declare enum AccessibilityDisplayString {
2
+ WaysOfReadingTitle = "ways_of_reading_title",
3
+ WaysOfReadingVisualAdjustmentsModifiable = "ways_of_reading_visual_adjustments_modifiable",
4
+ WaysOfReadingVisualAdjustmentsUnmodifiable = "ways_of_reading_visual_adjustments_unmodifiable",
5
+ WaysOfReadingNonvisualReading = "ways_of_reading_nonvisual_reading",
6
+ WaysOfReadingNonvisualReadingAltText = "ways_of_reading_nonvisual_reading_alt_text",
7
+ WaysOfReadingPrerecordedAudio = "ways_of_reading_prerecorded_audio",
8
+ NavigationTitle = "navigation_title",
9
+ NavigationToc = "navigation_toc",
10
+ NavigationIndex = "navigation_index",
11
+ NavigationStructural = "navigation_structural",
12
+ NavigationPageNavigation = "navigation_page_navigation",
13
+ NavigationNoMetadata = "navigation_no_metadata",
14
+ AdditionalInformationTitle = "additional_information_title",
15
+ AdditionalInformationPageBreaks = "additional_information_page_breaks",
16
+ AdditionalInformationAria = "additional_information_aria",
17
+ AdditionalInformationAudioDescriptions = "additional_information_audio_descriptions",
18
+ AdditionalInformationBraille = "additional_information_braille",
19
+ AdditionalInformationRubyAnnotations = "additional_information_ruby_annotations",
20
+ AdditionalInformationFullRubyAnnotations = "additional_information_full_ruby_annotations",
21
+ AdditionalInformationHighContrastBetweenForegroundAndBackgroundAudio = "additional_information_high_contrast_between_foreground_and_background_audio",
22
+ AdditionalInformationHighContrastBetweenTextAndBackground = "additional_information_high_contrast_between_text_and_background",
23
+ AdditionalInformationLargePrint = "additional_information_large_print",
24
+ AdditionalInformationSignLanguage = "additional_information_sign_language",
25
+ AdditionalInformationTactileGraphics = "additional_information_tactile_graphics",
26
+ AdditionalInformationTactileObjects = "additional_information_tactile_objects",
27
+ AdditionalInformationTextToSpeechHinting = "additional_information_text_to_speech_hinting",
28
+ RichContentTitle = "rich_content_title",
29
+ RichContentExtended = "rich_content_extended",
30
+ RichContentAccessibleMathDescribed = "rich_content_accessible_math_described",
31
+ RichContentAccessibleMathAsMathml = "rich_content_accessible_math_as_mathml",
32
+ RichContentAccessibleMathAsLatex = "rich_content_accessible_math_as_latex",
33
+ RichContentAccessibleChemistryAsMathml = "rich_content_accessible_chemistry_as_mathml",
34
+ RichContentAccessibleChemistryAsLatex = "rich_content_accessible_chemistry_as_latex",
35
+ RichContentClosedCaptions = "rich_content_closed_captions",
36
+ RichContentOpenCaptions = "rich_content_open_captions",
37
+ RichContentTranscript = "rich_content_transcript",
38
+ RichContentUnknown = "rich_content_unknown",
39
+ HazardsTitle = "hazards_title",
40
+ HazardsMotion = "hazards_motion",
41
+ HazardsSound = "hazards_sound",
42
+ HazardsFlashing = "hazards_flashing",
43
+ ConformanceTitle = "conformance_title",
44
+ ConformanceNo = "conformance_no",
45
+ ConformanceA = "conformance_a",
46
+ ConformanceAa = "conformance_aa",
47
+ ConformanceAaa = "conformance_aaa",
48
+ ConformanceUnknownStandard = "conformance_unknown_standard",
49
+ ConformanceWCAG = "conformance_wcag",
50
+ ConformanceEPUB = "conformance_epub",
51
+ LegalTitle = "legal_title",
52
+ LegalExemption = "legal_exemption",
53
+ LegalNoMetadata = "legal_no_metadata",
54
+ AccessibilitySummaryTitle = "accessibility_summary_title",
55
+ AccessibilitySummary = "accessibility_summary"
56
+ }
@@ -0,0 +1,214 @@
1
+ import { Publication } from '../Publication';
2
+ import { AccessibilityDisplayString } from './AccessibilityDisplayString';
3
+ import { Profile } from './Accessibility';
4
+ /**
5
+ * Represents a single accessibility claim
6
+ */
7
+ export interface AccessibilityDisplayStatement {
8
+ id: string;
9
+ displayId: AccessibilityDisplayString;
10
+ values?: any[];
11
+ }
12
+ /**
13
+ * Represents a collection of related accessibility claims which should be
14
+ * displayed together in a section
15
+ */
16
+ export interface AccessibilityDisplayField {
17
+ id: string;
18
+ title: string;
19
+ statements: AccessibilityDisplayStatement[];
20
+ shouldDisplay: boolean;
21
+ }
22
+ /**
23
+ * Represents the different ways visual adjustments can be made
24
+ */
25
+ export declare enum VisualAdjustments {
26
+ Unknown = "unknown",
27
+ Modifiable = "modifiable",
28
+ Unmodifiable = "unmodifiable"
29
+ }
30
+ /**
31
+ * Represents the different types of non-visual reading
32
+ */
33
+ export declare enum NonvisualReading {
34
+ NoMetadata = "noMetadata",
35
+ Readable = "readable",
36
+ NotFully = "notFully",
37
+ Unreadable = "unreadable"
38
+ }
39
+ /**
40
+ * Represents the different types of prerecorded audio
41
+ */
42
+ export declare enum PrerecordedAudio {
43
+ NoMetadata = "noMetadata",
44
+ Synchronized = "synchronized",
45
+ AudioOnly = "audioOnly",
46
+ AudioComplementary = "audioComplementary"
47
+ }
48
+ /**
49
+ * The ways of reading display field is a banner heading that groups
50
+ * together the following information about how the content facilitates
51
+ * access.
52
+ */
53
+ export declare class WaysOfReading implements AccessibilityDisplayField {
54
+ readonly id = AccessibilityDisplayString.WaysOfReadingTitle;
55
+ readonly title = "Ways of Reading";
56
+ readonly shouldDisplay: boolean;
57
+ readonly visualAdjustments: VisualAdjustments;
58
+ readonly nonvisualReading: NonvisualReading;
59
+ readonly nonvisualReadingAltText: boolean;
60
+ readonly prerecordedAudio: PrerecordedAudio;
61
+ readonly statements: AccessibilityDisplayStatement[];
62
+ private constructor();
63
+ static fromPublication(publication: Publication): WaysOfReading;
64
+ }
65
+ /**
66
+ * Navigation features of the content
67
+ */
68
+ export declare class Navigation implements AccessibilityDisplayField {
69
+ readonly id = AccessibilityDisplayString.NavigationTitle;
70
+ readonly title = "Navigation";
71
+ readonly shouldDisplay: boolean;
72
+ readonly noMetadata: boolean;
73
+ readonly tableOfContents: boolean;
74
+ readonly index: boolean;
75
+ readonly headings: boolean;
76
+ readonly page: boolean;
77
+ readonly statements: AccessibilityDisplayStatement[];
78
+ private constructor();
79
+ static fromPublication(publication: Publication): Navigation;
80
+ }
81
+ /**
82
+ * Represents the different types of rich content
83
+ */
84
+ export declare enum RichContentType {
85
+ Math = "math",
86
+ Chemistry = "chemistry",
87
+ Music = "music",
88
+ Diagram = "diagram",
89
+ Chart = "chart",
90
+ Graph = "graph",
91
+ Table = "table",
92
+ Image = "image"
93
+ }
94
+ /**
95
+ * Rich content features of the content
96
+ */
97
+ export declare class RichContent implements AccessibilityDisplayField {
98
+ readonly id = AccessibilityDisplayString.RichContentTitle;
99
+ readonly title = "Rich Content";
100
+ readonly shouldDisplay: boolean;
101
+ readonly noMetadata: boolean;
102
+ readonly extendedAltTextDescriptions: boolean;
103
+ readonly mathFormula: boolean;
104
+ readonly mathFormulaAsMathML: boolean;
105
+ readonly mathFormulaAsLaTeX: boolean;
106
+ readonly chemicalFormulaAsMathML: boolean;
107
+ readonly chemicalFormulaAsLaTeX: boolean;
108
+ readonly closedCaptions: boolean;
109
+ readonly openCaptions: boolean;
110
+ readonly transcript: boolean;
111
+ readonly statements: AccessibilityDisplayStatement[];
112
+ private constructor();
113
+ static fromPublication(publication: Publication): RichContent;
114
+ }
115
+ /**
116
+ * Represents additional accessibility information
117
+ */
118
+ export declare class AdditionalInformation implements AccessibilityDisplayField {
119
+ readonly id = AccessibilityDisplayString.AdditionalInformationTitle;
120
+ readonly title = "Additional Information";
121
+ readonly shouldDisplay: boolean;
122
+ readonly noMetadata: boolean;
123
+ readonly pageBreakMarkers: boolean;
124
+ readonly aria: boolean;
125
+ readonly audioDescriptions: boolean;
126
+ readonly braille: boolean;
127
+ readonly rubyAnnotations: boolean;
128
+ readonly fullRubyAnnotations: boolean;
129
+ readonly highAudioContrast: boolean;
130
+ readonly highDisplayContrast: boolean;
131
+ readonly largePrint: boolean;
132
+ readonly signLanguage: boolean;
133
+ readonly tactileGraphics: boolean;
134
+ readonly tactileObjects: boolean;
135
+ readonly textToSpeechHinting: boolean;
136
+ readonly statements: AccessibilityDisplayStatement[];
137
+ private constructor();
138
+ static fromPublication(publication: Publication): AdditionalInformation;
139
+ }
140
+ export declare enum HazardType {
141
+ yes = "yes",
142
+ no = "no",
143
+ unknown = "unknown",
144
+ noMetadata = "noMetadata"
145
+ }
146
+ /**
147
+ * Represents potential hazards in the content
148
+ */
149
+ export declare class Hazards implements AccessibilityDisplayField {
150
+ readonly id = AccessibilityDisplayString.HazardsTitle;
151
+ readonly title = "Hazards";
152
+ readonly shouldDisplay: boolean;
153
+ readonly noMetadata: boolean;
154
+ readonly noHazards: boolean;
155
+ readonly unknown: boolean;
156
+ readonly flashing: HazardType;
157
+ readonly motion: HazardType;
158
+ readonly sound: HazardType;
159
+ readonly statements: AccessibilityDisplayStatement[];
160
+ private constructor();
161
+ static fromPublication(publication: Publication): Hazards;
162
+ }
163
+ /**
164
+ * Represents conformance to accessibility standards
165
+ */
166
+ export declare class Conformance implements AccessibilityDisplayField {
167
+ readonly id = AccessibilityDisplayString.ConformanceTitle;
168
+ readonly title = "Conformance";
169
+ readonly shouldDisplay: boolean;
170
+ readonly profiles: Profile[];
171
+ readonly statements: AccessibilityDisplayStatement[];
172
+ private constructor();
173
+ static fromPublication(publication: Publication): Conformance;
174
+ }
175
+ /**
176
+ * Represents legal exemptions
177
+ */
178
+ export declare class Legal implements AccessibilityDisplayField {
179
+ readonly id = AccessibilityDisplayString.LegalTitle;
180
+ readonly title = "Legal";
181
+ readonly shouldDisplay: boolean;
182
+ readonly noMetadata: boolean;
183
+ readonly exemption: boolean;
184
+ readonly statements: AccessibilityDisplayStatement[];
185
+ private constructor();
186
+ static fromPublication(publication: Publication): Legal;
187
+ }
188
+ /**
189
+ * Represents the accessibility summary
190
+ */
191
+ export declare class AccessibilitySummary implements AccessibilityDisplayField {
192
+ readonly id = AccessibilityDisplayString.AccessibilitySummaryTitle;
193
+ readonly title = "Accessibility Summary";
194
+ readonly shouldDisplay: boolean;
195
+ readonly hasSummary: boolean;
196
+ readonly statements: AccessibilityDisplayStatement[];
197
+ private constructor();
198
+ static fromPublication(publication: Publication): AccessibilitySummary;
199
+ }
200
+ /**
201
+ * Main accessibility metadata display guide
202
+ */
203
+ export declare class AccessibilityMetadataDisplayGuide {
204
+ readonly waysOfReading: WaysOfReading;
205
+ readonly navigation: Navigation;
206
+ readonly richContent: RichContent;
207
+ readonly additionalInformation: AdditionalInformation;
208
+ readonly hazards: Hazards;
209
+ readonly conformance: Conformance;
210
+ readonly legal: Legal;
211
+ readonly accessibilitySummary: AccessibilitySummary;
212
+ readonly fields: AccessibilityDisplayField[];
213
+ constructor(publication: Publication);
214
+ }
@@ -0,0 +1,2 @@
1
+ export * from './Accessibility';
2
+ export * from './AccessibilityMetadataDisplayGuide';
@@ -3,6 +3,7 @@ export * from './epub';
3
3
  export * from './html';
4
4
  export * from './opds';
5
5
  export * from './presentation';
6
+ export * from './services';
6
7
  export * from './BelongsTo';
7
8
  export * from './Contributor';
8
9
  export * from './Link';
package/LICENSE DELETED
@@ -1,28 +0,0 @@
1
- BSD 3-Clause License
2
-
3
- Copyright (c) 2022, Readium Foundation
4
-
5
- Redistribution and use in source and binary forms, with or without
6
- modification, are permitted provided that the following conditions are met:
7
-
8
- 1. Redistributions of source code must retain the above copyright notice, this
9
- list of conditions and the following disclaimer.
10
-
11
- 2. Redistributions in binary form must reproduce the above copyright notice,
12
- this list of conditions and the following disclaimer in the documentation
13
- and/or other materials provided with the distribution.
14
-
15
- 3. Neither the name of the copyright holder nor the names of its
16
- contributors may be used to endorse or promote products derived from
17
- this software without specific prior written permission.
18
-
19
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
20
- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
22
- DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
23
- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
24
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
25
- SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
26
- CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
27
- OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28
- OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.