@marmooo/midy 0.2.6 → 0.2.8

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/README.md CHANGED
@@ -21,7 +21,7 @@ This library provides several files depending on the implementation level.
21
21
 
22
22
  ### Initialization
23
23
 
24
- ```
24
+ ```js
25
25
  // import { MidyGMLite as Midy } from "midy-GMLite.js";
26
26
  // import { MidyGM1 as Midy } from "midy-GM1.js";
27
27
  // import { MidyGM2 as Midy } from "midy-GM2.js";
@@ -36,7 +36,7 @@ await midy.start();
36
36
 
37
37
  ### Playback
38
38
 
39
- ```
39
+ ```js
40
40
  await midy.start();
41
41
  midy.stop();
42
42
  midy.pause();
@@ -49,8 +49,8 @@ midy.seekTo(second);
49
49
  There are functions that handle MIDI messages as they are, as well as simplified
50
50
  functions.
51
51
 
52
- ```
53
- midy.handleMIDIMessage(statusByte, data1, data2);
52
+ ```js
53
+ midy.handleMIDIMessage(statusByte, data1, data2, scheduleTime);
54
54
  midy.noteOn(channelNumber, noteNumber, velocity);
55
55
  midy.handleProgramChange(channelNumber, program);
56
56
  ```
@@ -60,10 +60,15 @@ midy.handleProgramChange(channelNumber, program);
60
60
  There are functions that handle control changes as they are, as well as
61
61
  simplified functions.
62
62
 
63
- ```
64
- midy.handleControlChange(channelNumber, controller, value); // [0-127] value
65
- midy.setModulation(channelNumber, modulation); // [0-127] modulation
66
- midy.setVolume(channelNumber, volume); // [0-127] volume
63
+ ```js
64
+ midy.handleControlChange(
65
+ channelNumber,
66
+ controller,
67
+ value,
68
+ scheduleTime,
69
+ ); // [0-127] value
70
+ midy.setModulation(channelNumber, modulation); // [0-127] modulation
71
+ midy.setVolume(channelNumber, volume); // [0-127] volume
67
72
  ```
68
73
 
69
74
  ### System Exclusive Message
@@ -71,10 +76,10 @@ midy.setVolume(channelNumber, volume); // [0-127] volume
71
76
  There are functions that handle SysEx data as is, as well as simplified
72
77
  functions.
73
78
 
74
- ```
75
- midy.handleSysEx(data); // [F0 F6 04 01 xx xx F7] data
76
- midy.handleMasterVolumeSysEx(data); // [F0 F6 04 01 xx xx F7] data
77
- midy.setMasterVolume(volume); // [0-1] volume
79
+ ```js
80
+ midy.handleSysEx(data, scheduleTime); // [F0 F6 04 01 xx xx F7] data
81
+ midy.handleMasterVolumeSysEx(data, scheduleTime); // [F0 F6 04 01 xx xx F7] data
82
+ midy.setMasterVolume(volume); // [0-1] volume
78
83
  ```
79
84
 
80
85
  ### Multiple Soundfonts
@@ -84,7 +89,7 @@ and [splitted soundfonts](https://github.com/marmooo/free-soundfonts) that are
84
89
  optimized for playback on the web. The following example loads only the minimum
85
90
  presets required for playback.
86
91
 
87
- ```
92
+ ```js
88
93
  const baseUrl = "https://soundfonts.pages.dev/GeneralUser_GS_v1.471";
89
94
  for (const instrument of midy.instruments) {
90
95
  const [bankNumber, programNumber] = instrument.split(":").map(Number);
package/esm/midy-GM1.d.ts CHANGED
@@ -36,30 +36,30 @@ export class MidyGM1 {
36
36
  audioContext: any;
37
37
  masterVolume: any;
38
38
  voiceParamsHandlers: {
39
- modLfoToPitch: (channel: any, note: any, _prevValue: any) => void;
40
- vibLfoToPitch: (_channel: any, _note: any, _prevValue: any) => void;
41
- modLfoToFilterFc: (channel: any, note: any, _prevValue: any) => void;
42
- modLfoToVolume: (channel: any, note: any, _prevValue: any) => void;
43
- chorusEffectsSend: (_channel: any, _note: any, _prevValue: any) => void;
44
- reverbEffectsSend: (_channel: any, _note: any, _prevValue: any) => void;
45
- delayModLFO: (_channel: any, note: any, _prevValue: any) => void;
46
- freqModLFO: (_channel: any, note: any, _prevValue: any) => void;
47
- delayVibLFO: (_channel: any, _note: any, _prevValue: any) => void;
48
- freqVibLFO: (_channel: any, _note: any, _prevValue: any) => void;
39
+ modLfoToPitch: (channel: any, note: any, _prevValue: any, scheduleTime: any) => void;
40
+ vibLfoToPitch: (_channel: any, _note: any, _prevValue: any, _scheduleTime: any) => void;
41
+ modLfoToFilterFc: (channel: any, note: any, _prevValue: any, scheduleTime: any) => void;
42
+ modLfoToVolume: (channel: any, note: any, _prevValue: any, scheduleTime: any) => void;
43
+ chorusEffectsSend: (_channel: any, _note: any, _prevValue: any, _scheduleTime: any) => void;
44
+ reverbEffectsSend: (_channel: any, _note: any, _prevValue: any, _scheduleTime: any) => void;
45
+ delayModLFO: (_channel: any, note: any, _prevValue: any, scheduleTime: any) => void;
46
+ freqModLFO: (_channel: any, note: any, _prevValue: any, scheduleTime: any) => void;
47
+ delayVibLFO: (_channel: any, _note: any, _prevValue: any, _scheduleTime: any) => void;
48
+ freqVibLFO: (_channel: any, _note: any, _prevValue: any, _scheduleTime: any) => void;
49
49
  };
50
50
  controlChangeHandlers: {
51
51
  1: (channelNumber: any, modulation: any, scheduleTime: any) => void;
52
- 6: (channelNumber: any, value: any) => void;
52
+ 6: (channelNumber: any, value: any, scheduleTime: any) => void;
53
53
  7: (channelNumber: any, volume: any, scheduleTime: any) => void;
54
54
  10: (channelNumber: any, pan: any, scheduleTime: any) => void;
55
55
  11: (channelNumber: any, expression: any, scheduleTime: any) => void;
56
- 38: (channelNumber: any, value: any) => void;
57
- 64: (channelNumber: any, value: any) => void;
56
+ 38: (channelNumber: any, value: any, scheduleTime: any) => void;
57
+ 64: (channelNumber: any, value: any, scheduleTime: any) => void;
58
58
  100: (channelNumber: any, value: any) => void;
59
59
  101: (channelNumber: any, value: any) => void;
60
- 120: (channelNumber: any) => Promise<void>;
60
+ 120: (channelNumber: any, _value: any, scheduleTime: any) => Promise<any[]>;
61
61
  121: (channelNumber: any) => void;
62
- 123: (channelNumber: any) => Promise<void>;
62
+ 123: (channelNumber: any, _value: any, scheduleTime: any) => Promise<any[]>;
63
63
  };
64
64
  channels: any[];
65
65
  initSoundFontTable(): any[];
@@ -84,8 +84,8 @@ export class MidyGM1 {
84
84
  instruments: Set<any>;
85
85
  timeline: any[];
86
86
  };
87
- stopChannelNotes(channelNumber: any, velocity: any, force: any): Promise<void>;
88
- stopNotes(velocity: any, force: any): Promise<any[]>;
87
+ stopChannelNotes(channelNumber: any, velocity: any, force: any, scheduleTime: any): Promise<any[]>;
88
+ stopNotes(velocity: any, force: any, scheduleTime: any): Promise<any[]>;
89
89
  start(): Promise<void>;
90
90
  stop(): void;
91
91
  pause(): void;
@@ -93,67 +93,67 @@ export class MidyGM1 {
93
93
  seekTo(second: any): void;
94
94
  calcTotalTime(): number;
95
95
  currentTime(): number;
96
- processScheduledNotes(channel: any, scheduleTime: any, callback: any): void;
97
- getActiveNotes(channel: any, time: any): SparseMap;
98
- getActiveNote(noteList: any, time: any): any;
96
+ processScheduledNotes(channel: any, callback: any): void;
97
+ getActiveNotes(channel: any, scheduleTime: any): SparseMap;
98
+ getActiveNote(noteList: any, scheduleTime: any): any;
99
99
  cbToRatio(cb: any): number;
100
100
  rateToCent(rate: any): number;
101
101
  centToRate(cent: any): number;
102
102
  centToHz(cent: any): number;
103
103
  calcChannelDetune(channel: any): any;
104
- updateChannelDetune(channel: any): void;
105
- updateDetune(channel: any, note: any): void;
106
- setVolumeEnvelope(note: any): void;
104
+ updateChannelDetune(channel: any, scheduleTime: any): void;
105
+ updateDetune(channel: any, note: any, scheduleTime: any): void;
106
+ setVolumeEnvelope(note: any, scheduleTime: any): void;
107
107
  setPitchEnvelope(note: any, scheduleTime: any): void;
108
108
  clampCutoffFrequency(frequency: any): number;
109
- setFilterEnvelope(note: any): void;
110
- startModulation(channel: any, note: any, startTime: any): void;
109
+ setFilterEnvelope(note: any, scheduleTime: any): void;
110
+ startModulation(channel: any, note: any, scheduleTime: any): void;
111
111
  getAudioBuffer(program: any, noteNumber: any, velocity: any, voiceParams: any, isSF3: any): Promise<any>;
112
112
  createNote(channel: any, voice: any, noteNumber: any, velocity: any, startTime: any, isSF3: any): Promise<Note>;
113
113
  scheduleNoteOn(channelNumber: any, noteNumber: any, velocity: any, startTime: any): Promise<void>;
114
- noteOn(channelNumber: any, noteNumber: any, velocity: any): Promise<void>;
114
+ noteOn(channelNumber: any, noteNumber: any, velocity: any, scheduleTime: any): Promise<void>;
115
115
  stopNote(endTime: any, stopTime: any, scheduledNotes: any, index: any): Promise<any>;
116
- scheduleNoteRelease(channelNumber: any, noteNumber: any, _velocity: any, endTime: any, force: any): Promise<any> | undefined;
117
- releaseNote(channelNumber: any, noteNumber: any, velocity: any): Promise<any> | undefined;
118
- releaseSustainPedal(channelNumber: any, halfVelocity: any): any[];
119
- handleMIDIMessage(statusByte: any, data1: any, data2: any): void | Promise<any>;
120
- handleProgramChange(channelNumber: any, program: any): void;
121
- handlePitchBendMessage(channelNumber: any, lsb: any, msb: any): void;
122
- setPitchBend(channelNumber: any, value: any): void;
123
- setModLfoToPitch(channel: any, note: any): void;
124
- setModLfoToFilterFc(note: any): void;
125
- setModLfoToVolume(note: any): void;
126
- setDelayModLFO(note: any): void;
127
- setFreqModLFO(note: any): void;
116
+ scheduleNoteOff(channelNumber: any, noteNumber: any, _velocity: any, endTime: any, force: any): Promise<any> | undefined;
117
+ noteOff(channelNumber: any, noteNumber: any, velocity: any, scheduleTime: any): Promise<any> | undefined;
118
+ releaseSustainPedal(channelNumber: any, halfVelocity: any, scheduleTime: any): (Promise<any> | undefined)[];
119
+ handleMIDIMessage(statusByte: any, data1: any, data2: any, scheduleTime: any): void | Promise<any>;
120
+ handleProgramChange(channelNumber: any, program: any, _scheduleTime: any): void;
121
+ handlePitchBendMessage(channelNumber: any, lsb: any, msb: any, scheduleTime: any): void;
122
+ setPitchBend(channelNumber: any, value: any, scheduleTime: any): void;
123
+ setModLfoToPitch(channel: any, note: any, scheduleTime: any): void;
124
+ setModLfoToFilterFc(note: any, scheduleTime: any): void;
125
+ setModLfoToVolume(note: any, scheduleTime: any): void;
126
+ setDelayModLFO(note: any, scheduleTime: any): void;
127
+ setFreqModLFO(note: any, scheduleTime: any): void;
128
128
  createVoiceParamsHandlers(): {
129
- modLfoToPitch: (channel: any, note: any, _prevValue: any) => void;
130
- vibLfoToPitch: (_channel: any, _note: any, _prevValue: any) => void;
131
- modLfoToFilterFc: (channel: any, note: any, _prevValue: any) => void;
132
- modLfoToVolume: (channel: any, note: any, _prevValue: any) => void;
133
- chorusEffectsSend: (_channel: any, _note: any, _prevValue: any) => void;
134
- reverbEffectsSend: (_channel: any, _note: any, _prevValue: any) => void;
135
- delayModLFO: (_channel: any, note: any, _prevValue: any) => void;
136
- freqModLFO: (_channel: any, note: any, _prevValue: any) => void;
137
- delayVibLFO: (_channel: any, _note: any, _prevValue: any) => void;
138
- freqVibLFO: (_channel: any, _note: any, _prevValue: any) => void;
129
+ modLfoToPitch: (channel: any, note: any, _prevValue: any, scheduleTime: any) => void;
130
+ vibLfoToPitch: (_channel: any, _note: any, _prevValue: any, _scheduleTime: any) => void;
131
+ modLfoToFilterFc: (channel: any, note: any, _prevValue: any, scheduleTime: any) => void;
132
+ modLfoToVolume: (channel: any, note: any, _prevValue: any, scheduleTime: any) => void;
133
+ chorusEffectsSend: (_channel: any, _note: any, _prevValue: any, _scheduleTime: any) => void;
134
+ reverbEffectsSend: (_channel: any, _note: any, _prevValue: any, _scheduleTime: any) => void;
135
+ delayModLFO: (_channel: any, note: any, _prevValue: any, scheduleTime: any) => void;
136
+ freqModLFO: (_channel: any, note: any, _prevValue: any, scheduleTime: any) => void;
137
+ delayVibLFO: (_channel: any, _note: any, _prevValue: any, _scheduleTime: any) => void;
138
+ freqVibLFO: (_channel: any, _note: any, _prevValue: any, _scheduleTime: any) => void;
139
139
  };
140
140
  getControllerState(channel: any, noteNumber: any, velocity: any): Float32Array<any>;
141
- applyVoiceParams(channel: any, controllerType: any): void;
141
+ applyVoiceParams(channel: any, controllerType: any, scheduleTime: any): void;
142
142
  createControlChangeHandlers(): {
143
143
  1: (channelNumber: any, modulation: any, scheduleTime: any) => void;
144
- 6: (channelNumber: any, value: any) => void;
144
+ 6: (channelNumber: any, value: any, scheduleTime: any) => void;
145
145
  7: (channelNumber: any, volume: any, scheduleTime: any) => void;
146
146
  10: (channelNumber: any, pan: any, scheduleTime: any) => void;
147
147
  11: (channelNumber: any, expression: any, scheduleTime: any) => void;
148
- 38: (channelNumber: any, value: any) => void;
149
- 64: (channelNumber: any, value: any) => void;
148
+ 38: (channelNumber: any, value: any, scheduleTime: any) => void;
149
+ 64: (channelNumber: any, value: any, scheduleTime: any) => void;
150
150
  100: (channelNumber: any, value: any) => void;
151
151
  101: (channelNumber: any, value: any) => void;
152
- 120: (channelNumber: any) => Promise<void>;
152
+ 120: (channelNumber: any, _value: any, scheduleTime: any) => Promise<any[]>;
153
153
  121: (channelNumber: any) => void;
154
- 123: (channelNumber: any) => Promise<void>;
154
+ 123: (channelNumber: any, _value: any, scheduleTime: any) => Promise<any[]>;
155
155
  };
156
- handleControlChange(channelNumber: any, controllerType: any, value: any, startTime: any): void;
156
+ handleControlChange(channelNumber: any, controllerType: any, value: any, scheduleTime: any): void;
157
157
  updateModulation(channel: any, scheduleTime: any): void;
158
158
  setModulationDepth(channelNumber: any, modulation: any, scheduleTime: any): void;
159
159
  setVolume(channelNumber: any, volume: any, scheduleTime: any): void;
@@ -163,32 +163,31 @@ export class MidyGM1 {
163
163
  };
164
164
  setPan(channelNumber: any, pan: any, scheduleTime: any): void;
165
165
  setExpression(channelNumber: any, expression: any, scheduleTime: any): void;
166
- dataEntryLSB(channelNumber: any, value: any): void;
166
+ dataEntryLSB(channelNumber: any, value: any, scheduleTime: any): void;
167
167
  updateChannelVolume(channel: any, scheduleTime: any): void;
168
- setSustainPedal(channelNumber: any, value: any): void;
168
+ setSustainPedal(channelNumber: any, value: any, scheduleTime: any): void;
169
169
  limitData(channel: any, minMSB: any, maxMSB: any, minLSB: any, maxLSB: any): void;
170
170
  limitDataMSB(channel: any, minMSB: any, maxMSB: any): void;
171
- handleRPN(channelNumber: any): void;
171
+ handleRPN(channelNumber: any, scheduleTime: any): void;
172
172
  setRPNMSB(channelNumber: any, value: any): void;
173
173
  setRPNLSB(channelNumber: any, value: any): void;
174
- dataEntryMSB(channelNumber: any, value: any): void;
175
- handlePitchBendRangeRPN(channelNumber: any): void;
176
- setPitchBendRange(channelNumber: any, value: any): void;
177
- handleFineTuningRPN(channelNumber: any): void;
178
- setFineTuning(channelNumber: any, value: any): void;
179
- handleCoarseTuningRPN(channelNumber: any): void;
180
- setCoarseTuning(channelNumber: any, value: any): void;
181
- allSoundOff(channelNumber: any): Promise<void>;
174
+ dataEntryMSB(channelNumber: any, value: any, scheduleTime: any): void;
175
+ handlePitchBendRangeRPN(channelNumber: any, scheduleTime: any): void;
176
+ setPitchBendRange(channelNumber: any, value: any, scheduleTime: any): void;
177
+ handleFineTuningRPN(channelNumber: any, scheduleTime: any): void;
178
+ setFineTuning(channelNumber: any, value: any, scheduleTime: any): void;
179
+ handleCoarseTuningRPN(channelNumber: any, scheduleTime: any): void;
180
+ setCoarseTuning(channelNumber: any, value: any, scheduleTime: any): void;
181
+ allSoundOff(channelNumber: any, _value: any, scheduleTime: any): Promise<any[]>;
182
182
  resetAllControllers(channelNumber: any): void;
183
- allNotesOff(channelNumber: any): Promise<void>;
184
- handleUniversalNonRealTimeExclusiveMessage(data: any): void;
183
+ allNotesOff(channelNumber: any, _value: any, scheduleTime: any): Promise<any[]>;
184
+ handleUniversalNonRealTimeExclusiveMessage(data: any, _scheduleTime: any): void;
185
185
  GM1SystemOn(): void;
186
- handleUniversalRealTimeExclusiveMessage(data: any): void;
187
- handleMasterVolumeSysEx(data: any): void;
188
- setMasterVolume(volume: any): void;
189
- handleExclusiveMessage(data: any): void;
190
- handleSysEx(data: any): void;
191
- scheduleTask(callback: any, startTime: any): Promise<any>;
186
+ handleUniversalRealTimeExclusiveMessage(data: any, scheduleTime: any): void;
187
+ handleMasterVolumeSysEx(data: any, scheduleTime: any): void;
188
+ setMasterVolume(volume: any, scheduleTime: any): void;
189
+ handleSysEx(data: any, scheduleTime: any): void;
190
+ scheduleTask(callback: any, scheduleTime: any): Promise<any>;
192
191
  }
193
192
  declare class SparseMap {
194
193
  constructor(size: any);
@@ -1 +1 @@
1
- {"version":3,"file":"midy-GM1.d.ts","sourceRoot":"","sources":["../src/midy-GM1.js"],"names":[],"mappings":"AAiJA;IAsBE;;;;;;;;;;;;MAYE;IAEF,+BAQC;IA3CD,qBAAmB;IACnB,kBAAc;IACd,0BAAwB;IACxB,kBAAc;IACd,mBAAiB;IACjB,kBAAc;IACd,mBAAe;IACf,kBAAgB;IAChB,sBAA2C;IAC3C,kCAA+B;IAC/B,gCAA6B;IAC7B,mBAAkB;IAClB,mBAAkB;IAClB,kBAAiB;IACjB,oBAAmB;IACnB,mBAAkB;IAClB,gBAAc;IACd,mBAAiB;IACjB,oBAAkB;IAClB,6BAAuC;IAiBrC,kBAAgC;IAChC,kBAA8C;IAC9C;;;;;;;;;;;MAA2D;IAC3D;;;;;;;;;;;;;MAA+D;IAC/D,gBAAiD;IAKnD,4BAMC;IAED,mCAWC;IAED,gDAMC;IAED,sCASC;IAED;;;;MAeC;IAED,yCAUC;IAED,6DA2BC;IAED,8DASC;IAED,2EAqDC;IAED,mCAOC;IAED,0BAoDC;IAED,uDAEC;IAED,wDAEC;IAED,6EAEC;IAED;;;MA4EC;IAED,+EAmBC;IAED,qDAKC;IAED,uBAKC;IAED,aAGC;IAED,cAKC;IAED,wBAIC;IAED,0BAKC;IAED,wBAOC;IAED,sBAGC;IAED,4EASC;IAED,mDASC;IAED,6CAQC;IAED,2BAEC;IAED,8BAEC;IAED,8BAEC;IAED,4BAEC;IAED,qCAMC;IAED,wCAQC;IAED,4CAKC;IAED,mCAgBC;IAED,qDAqBC;IAED,6CAIC;IAED,mCAuBC;IAED,+DAoBC;IAED,yGAgBC;IAED,gHAuCC;IAED,kGAgDC;IAED,0EAGC;IAED,qFAwBC;IAED,6HAuBC;IAED,0FAGC;IAED,kEAeC;IAED,gFAiBC;IAED,4DAGC;IAED,qEAGC;IAED,mDASC;IAED,gDASC;IAED,qCAMC;IAED,mCAQC;IAED,gCAOC;IAED,+BAMC;IAED;;;;;;;;;;;MAqBC;IAED,oFAMC;IAED,0DA6CC;IAED;;;;;;;;;;;;;MAeC;IAED,+FAWC;IAED,wDAWC;IAED,iFAIC;IAED,oEAIC;IAED;;;MAMC;IAED,8DAIC;IAED,4EAIC;IAED,mDAGC;IAED,2DAWC;IAED,sDAKC;IAED,kFAeC;IAED,2DAMC;IAED,oCAkBC;IAED,gDAEC;IAED,gDAEC;IAED,mDAGC;IAED,kDAKC;IAED,wDASC;IAED,8CAKC;IAED,oDAOC;IAED,gDAKC;IAED,sDAOC;IAED,+CAEC;IAED,8CAqBC;IAED,+CAEC;IAED,4DAgBC;IAED,oBAMC;IAED,yDAaC;IAED,yCAGC;IAED,mCAQC;IAED,wCAEC;IAED,6BASC;IAED,0DAUC;CACF;AAz4CD;IACE,uBAGC;IAFC,YAA2B;IAC3B,qBAAuB;IAGzB,gCAKC;IAED,mBAEC;IAED,0BAUC;IAED,uBAEC;IAED,mBAEC;IAED,cAMC;IASD,6BAKC;IAZD,qDAKC;CAQF;AAED;IASE,0FAMC;IAdD,kBAAa;IACb,gBAAW;IACX,iBAAY;IACZ,wBAAmB;IACnB,iBAAY;IACZ,mBAAc;IACd,qBAAgB;IAGd,gBAA4B;IAC5B,cAAwB;IACxB,eAA0B;IAC1B,WAAkB;IAClB,iBAA8B;CAEjC"}
1
+ {"version":3,"file":"midy-GM1.d.ts","sourceRoot":"","sources":["../src/midy-GM1.js"],"names":[],"mappings":"AAiJA;IAsBE;;;;;;;;;;;;MAYE;IAEF,+BAQC;IA3CD,qBAAmB;IACnB,kBAAc;IACd,0BAAwB;IACxB,kBAAc;IACd,mBAAiB;IACjB,kBAAc;IACd,mBAAe;IACf,kBAAgB;IAChB,sBAA2C;IAC3C,kCAA+B;IAC/B,gCAA6B;IAC7B,mBAAkB;IAClB,mBAAkB;IAClB,kBAAiB;IACjB,oBAAmB;IACnB,mBAAkB;IAClB,gBAAc;IACd,mBAAiB;IACjB,oBAAkB;IAClB,6BAAuC;IAiBrC,kBAAgC;IAChC,kBAA8C;IAC9C;;;;;;;;;;;MAA2D;IAC3D;;;;;;;;;;;;;MAA+D;IAC/D,gBAAiD;IAKnD,4BAMC;IAED,mCAWC;IAED,gDAMC;IAED,sCASC;IAED;;;;MAeC;IAED,yCAWC;IAED,6DA2BC;IAED,8DASC;IAED,2EAsDC;IAED,mCAOC;IAED,0BAoDC;IAED,uDAEC;IAED,wDAEC;IAED,6EAEC;IAED;;;MA4EC;IAED,mGAgBC;IAED,wEAMC;IAED,uBAKC;IAED,aAGC;IAED,cAKC;IAED,wBAIC;IAED,0BAKC;IAED,wBAOC;IAED,sBAGC;IAED,yDAQC;IAED,2DASC;IAED,qDAQC;IAED,2BAEC;IAED,8BAEC;IAED,8BAEC;IAED,4BAEC;IAED,qCAMC;IAED,2DAIC;IAED,+DAIC;IAED,sDAeC;IAED,qDAoBC;IAED,6CAIC;IAED,sDAsBC;IAED,kEAoBC;IAED,yGAgBC;IAED,gHAwCC;IAED,kGAkDC;IAED,6FAQC;IAED,qFAwBC;IAED,yHAuBC;IAED,yGASC;IAED,4GAeC;IAED,mGA2BC;IAED,gFAGC;IAED,wFAGC;IAED,sEAUC;IAED,mEAQC;IAED,wDAKC;IAED,sDAOC;IAED,mDAMC;IAED,kDAKC;IAED;;;;;;;;;;;MA2BC;IAED,oFAMC;IAED,6EA2CC;IAED;;;;;;;;;;;;;MAeC;IAED,kGAWC;IAED,wDAUC;IAED,iFAKC;IAED,oEAKC;IAED;;;MAMC;IAED,8DAKC;IAED,4EAKC;IAED,sEAGC;IAED,2DAUC;IAED,yEAWC;IAED,kFAeC;IAED,2DAMC;IAED,uDAkBC;IAED,gDAEC;IAED,gDAEC;IAED,sEAGC;IAED,qEAKC;IAED,2EAUC;IAED,iEAKC;IAED,uEAQC;IAED,mEAKC;IAED,yEAQC;IAED,gFAGC;IAED,8CAqBC;IAED,gFAGC;IAED,gFAgBC;IAED,oBAMC;IAED,4EAaC;IAED,4DAGC;IAED,sDASC;IAED,gDAYC;IAED,6DAUC;CACF;AAr6CD;IACE,uBAGC;IAFC,YAA2B;IAC3B,qBAAuB;IAGzB,gCAKC;IAED,mBAEC;IAED,0BAUC;IAED,uBAEC;IAED,mBAEC;IAED,cAMC;IASD,6BAKC;IAZD,qDAKC;CAQF;AAED;IASE,0FAMC;IAdD,kBAAa;IACb,gBAAW;IACX,iBAAY;IACZ,wBAAmB;IACnB,iBAAY;IACZ,mBAAc;IACd,qBAAgB;IAGd,gBAA4B;IAC5B,cAAwB;IACxB,eAA0B;IAC1B,WAAkB;IAClB,iBAA8B;CAEjC"}