@dooboostore/dom-render 1.0.99 → 1.0.100
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 +172 -0
- package/components/ComponentBase.d.ts +17 -0
- package/components/ComponentBase.js +116 -77
- package/package.json +2 -2
- package/rawsets/RawSet.js +31 -27
- package/css/parse/index.d.ts +0 -49
- package/css/parse/index.js +0 -498
- package/css/stringify/compiler.d.ts +0 -34
- package/css/stringify/compiler.js +0 -36
- package/css/stringify/compress.d.ts +0 -104
- package/css/stringify/compress.js +0 -147
- package/css/stringify/identity.d.ts +0 -109
- package/css/stringify/identity.js +0 -183
- package/css/stringify/index.d.ts +0 -24
- package/css/stringify/index.js +0 -27
- package/css/stringify/types.d.ts +0 -15
- package/css/stringify/types.js +0 -2
- package/css/types.d.ts +0 -10
- package/css/types.js +0 -2
|
@@ -1,147 +0,0 @@
|
|
|
1
|
-
import { Compiler as BaseCompiler } from './compiler';
|
|
2
|
-
/**
|
|
3
|
-
* Compressed CSS compiler
|
|
4
|
-
*/
|
|
5
|
-
export class CompressCompiler extends BaseCompiler {
|
|
6
|
-
/**
|
|
7
|
-
* Override emit to handle position
|
|
8
|
-
*/
|
|
9
|
-
emit(str, pos) {
|
|
10
|
-
return super.emit(str);
|
|
11
|
-
}
|
|
12
|
-
/**
|
|
13
|
-
* Compile `node`.
|
|
14
|
-
*/
|
|
15
|
-
compile(node) {
|
|
16
|
-
return node.stylesheet.rules.map(rule => this.visit(rule)).join('');
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* Visit comment node.
|
|
20
|
-
*/
|
|
21
|
-
comment(node) {
|
|
22
|
-
return this.emit('', node.position);
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* Visit import node.
|
|
26
|
-
*/
|
|
27
|
-
import(node) {
|
|
28
|
-
return this.emit('@import ' + node.import + ';', node.position);
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Visit media node.
|
|
32
|
-
*/
|
|
33
|
-
media(node) {
|
|
34
|
-
return this.emit('@media ' + node.media, node.position)
|
|
35
|
-
+ this.emit('{')
|
|
36
|
-
+ this.mapVisit(node.rules)
|
|
37
|
-
+ this.emit('}');
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* Visit document node.
|
|
41
|
-
*/
|
|
42
|
-
document(node) {
|
|
43
|
-
const doc = '@' + (node.vendor || '') + 'document ' + node.document;
|
|
44
|
-
return this.emit(doc, node.position)
|
|
45
|
-
+ this.emit('{')
|
|
46
|
-
+ this.mapVisit(node.rules)
|
|
47
|
-
+ this.emit('}');
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* Visit charset node.
|
|
51
|
-
*/
|
|
52
|
-
charset(node) {
|
|
53
|
-
return this.emit('@charset ' + node.charset + ';', node.position);
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Visit namespace node.
|
|
57
|
-
*/
|
|
58
|
-
namespace(node) {
|
|
59
|
-
return this.emit('@namespace ' + node.namespace + ';', node.position);
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* Visit supports node.
|
|
63
|
-
*/
|
|
64
|
-
supports(node) {
|
|
65
|
-
return this.emit('@supports ' + node.supports, node.position)
|
|
66
|
-
+ this.emit('{')
|
|
67
|
-
+ this.mapVisit(node.rules)
|
|
68
|
-
+ this.emit('}');
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* Visit keyframes node.
|
|
72
|
-
*/
|
|
73
|
-
keyframes(node) {
|
|
74
|
-
return this.emit('@'
|
|
75
|
-
+ (node.vendor || '')
|
|
76
|
-
+ 'keyframes '
|
|
77
|
-
+ node.name, node.position)
|
|
78
|
-
+ this.emit('{')
|
|
79
|
-
+ this.mapVisit(node.keyframes)
|
|
80
|
-
+ this.emit('}');
|
|
81
|
-
}
|
|
82
|
-
/**
|
|
83
|
-
* Visit keyframe node.
|
|
84
|
-
*/
|
|
85
|
-
keyframe(node) {
|
|
86
|
-
const decls = node.declarations;
|
|
87
|
-
return this.emit(node.values.join(','), node.position)
|
|
88
|
-
+ this.emit('{')
|
|
89
|
-
+ this.mapVisit(decls)
|
|
90
|
-
+ this.emit('}');
|
|
91
|
-
}
|
|
92
|
-
/**
|
|
93
|
-
* Visit page node.
|
|
94
|
-
*/
|
|
95
|
-
page(node) {
|
|
96
|
-
const sel = node.selectors.length
|
|
97
|
-
? node.selectors.join(', ')
|
|
98
|
-
: '';
|
|
99
|
-
return this.emit('@page ' + sel, node.position)
|
|
100
|
-
+ this.emit('{')
|
|
101
|
-
+ this.mapVisit(node.declarations)
|
|
102
|
-
+ this.emit('}');
|
|
103
|
-
}
|
|
104
|
-
/**
|
|
105
|
-
* Visit font-face node.
|
|
106
|
-
*/
|
|
107
|
-
'font-face'(node) {
|
|
108
|
-
return this.emit('@font-face', node.position)
|
|
109
|
-
+ this.emit('{')
|
|
110
|
-
+ this.mapVisit(node.declarations)
|
|
111
|
-
+ this.emit('}');
|
|
112
|
-
}
|
|
113
|
-
/**
|
|
114
|
-
* Visit host node.
|
|
115
|
-
*/
|
|
116
|
-
host(node) {
|
|
117
|
-
return this.emit('@host', node.position)
|
|
118
|
-
+ this.emit('{')
|
|
119
|
-
+ this.mapVisit(node.rules)
|
|
120
|
-
+ this.emit('}');
|
|
121
|
-
}
|
|
122
|
-
/**
|
|
123
|
-
* Visit custom-media node.
|
|
124
|
-
*/
|
|
125
|
-
'custom-media'(node) {
|
|
126
|
-
return this.emit('@custom-media ' + node.name + ' ' + node.media + ';', node.position);
|
|
127
|
-
}
|
|
128
|
-
/**
|
|
129
|
-
* Visit rule node.
|
|
130
|
-
*/
|
|
131
|
-
rule(node) {
|
|
132
|
-
const decls = node.declarations;
|
|
133
|
-
if (!decls.length)
|
|
134
|
-
return '';
|
|
135
|
-
return this.emit(node.selectors.join(','), node.position)
|
|
136
|
-
+ this.emit('{')
|
|
137
|
-
+ this.mapVisit(decls)
|
|
138
|
-
+ this.emit('}');
|
|
139
|
-
}
|
|
140
|
-
/**
|
|
141
|
-
* Visit declaration node.
|
|
142
|
-
*/
|
|
143
|
-
declaration(node) {
|
|
144
|
-
return this.emit(node.property + ':' + node.value, node.position) + this.emit(';');
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
//# sourceMappingURL=compress.js.map
|
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
import { Compiler as BaseCompiler } from './compiler';
|
|
2
|
-
interface Node {
|
|
3
|
-
type: string;
|
|
4
|
-
position?: any;
|
|
5
|
-
stylesheet?: {
|
|
6
|
-
rules: Node[];
|
|
7
|
-
};
|
|
8
|
-
comment?: string;
|
|
9
|
-
import?: string;
|
|
10
|
-
media?: string;
|
|
11
|
-
vendor?: string;
|
|
12
|
-
document?: string;
|
|
13
|
-
charset?: string;
|
|
14
|
-
namespace?: string;
|
|
15
|
-
supports?: string;
|
|
16
|
-
name?: string;
|
|
17
|
-
keyframes?: Node[];
|
|
18
|
-
values?: string[];
|
|
19
|
-
declarations?: Node[];
|
|
20
|
-
selectors?: string[];
|
|
21
|
-
rules?: Node[];
|
|
22
|
-
property?: string;
|
|
23
|
-
value?: string;
|
|
24
|
-
}
|
|
25
|
-
interface CompilerOptions {
|
|
26
|
-
indent?: string;
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* Initialize a new `Compiler`.
|
|
30
|
-
*/
|
|
31
|
-
export declare class IdentityCompiler extends BaseCompiler {
|
|
32
|
-
private indentation;
|
|
33
|
-
private level;
|
|
34
|
-
constructor(options?: CompilerOptions);
|
|
35
|
-
/**
|
|
36
|
-
* Compile `node`.
|
|
37
|
-
*/
|
|
38
|
-
compile(node: Node): string;
|
|
39
|
-
/**
|
|
40
|
-
* Visit stylesheet node.
|
|
41
|
-
*/
|
|
42
|
-
stylesheet(node: Node): string;
|
|
43
|
-
/**
|
|
44
|
-
* Visit comment node.
|
|
45
|
-
*/
|
|
46
|
-
comment(node: Node): string;
|
|
47
|
-
/**
|
|
48
|
-
* Visit import node.
|
|
49
|
-
*/
|
|
50
|
-
import(node: Node): string;
|
|
51
|
-
/**
|
|
52
|
-
* Visit media node.
|
|
53
|
-
*/
|
|
54
|
-
media(node: Node): string;
|
|
55
|
-
/**
|
|
56
|
-
* Visit document node.
|
|
57
|
-
*/
|
|
58
|
-
document(node: Node): string;
|
|
59
|
-
/**
|
|
60
|
-
* Visit charset node.
|
|
61
|
-
*/
|
|
62
|
-
charset(node: Node): string;
|
|
63
|
-
/**
|
|
64
|
-
* Visit namespace node.
|
|
65
|
-
*/
|
|
66
|
-
namespace(node: Node): string;
|
|
67
|
-
/**
|
|
68
|
-
* Visit supports node.
|
|
69
|
-
*/
|
|
70
|
-
supports(node: Node): string;
|
|
71
|
-
/**
|
|
72
|
-
* Visit keyframes node.
|
|
73
|
-
*/
|
|
74
|
-
keyframes(node: Node): string;
|
|
75
|
-
/**
|
|
76
|
-
* Visit keyframe node.
|
|
77
|
-
*/
|
|
78
|
-
keyframe(node: Node): string;
|
|
79
|
-
/**
|
|
80
|
-
* Visit page node.
|
|
81
|
-
*/
|
|
82
|
-
page(node: Node): string;
|
|
83
|
-
/**
|
|
84
|
-
* Visit font-face node.
|
|
85
|
-
*/
|
|
86
|
-
'font-face'(node: Node): string;
|
|
87
|
-
/**
|
|
88
|
-
* Visit host node.
|
|
89
|
-
*/
|
|
90
|
-
host(node: Node): string;
|
|
91
|
-
/**
|
|
92
|
-
* Visit custom-media node.
|
|
93
|
-
*/
|
|
94
|
-
'custom-media'(node: Node): string;
|
|
95
|
-
/**
|
|
96
|
-
* Visit rule node.
|
|
97
|
-
*/
|
|
98
|
-
rule(node: Node): string;
|
|
99
|
-
/**
|
|
100
|
-
* Visit declaration node.
|
|
101
|
-
*/
|
|
102
|
-
declaration(node: Node): string;
|
|
103
|
-
/**
|
|
104
|
-
* Increase, decrease or return current indentation.
|
|
105
|
-
*/
|
|
106
|
-
indent(level?: number): string;
|
|
107
|
-
}
|
|
108
|
-
export {};
|
|
109
|
-
//# sourceMappingURL=identity.d.ts.map
|
|
@@ -1,183 +0,0 @@
|
|
|
1
|
-
import { Compiler as BaseCompiler } from './compiler';
|
|
2
|
-
/**
|
|
3
|
-
* Initialize a new `Compiler`.
|
|
4
|
-
*/
|
|
5
|
-
export class IdentityCompiler extends BaseCompiler {
|
|
6
|
-
constructor(options = {}) {
|
|
7
|
-
super(options);
|
|
8
|
-
this.indentation = typeof options.indent === 'string' ? options.indent : ' ';
|
|
9
|
-
this.level = 1;
|
|
10
|
-
}
|
|
11
|
-
/**
|
|
12
|
-
* Compile `node`.
|
|
13
|
-
*/
|
|
14
|
-
compile(node) {
|
|
15
|
-
return this.stylesheet(node);
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* Visit stylesheet node.
|
|
19
|
-
*/
|
|
20
|
-
stylesheet(node) {
|
|
21
|
-
return this.mapVisit(node.stylesheet.rules, '\n\n');
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* Visit comment node.
|
|
25
|
-
*/
|
|
26
|
-
comment(node) {
|
|
27
|
-
return this.emit(this.indent() + '/*' + node.comment + '*/');
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Visit import node.
|
|
31
|
-
*/
|
|
32
|
-
import(node) {
|
|
33
|
-
return this.emit('@import ' + node.import + ';');
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* Visit media node.
|
|
37
|
-
*/
|
|
38
|
-
media(node) {
|
|
39
|
-
return this.emit('@media ' + node.media)
|
|
40
|
-
+ this.emit(' {\n'
|
|
41
|
-
+ this.indent(1))
|
|
42
|
-
+ this.mapVisit(node.rules, '\n\n')
|
|
43
|
-
+ this.emit(this.indent(-1)
|
|
44
|
-
+ '\n}');
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* Visit document node.
|
|
48
|
-
*/
|
|
49
|
-
document(node) {
|
|
50
|
-
const doc = '@' + (node.vendor || '') + 'document ' + node.document;
|
|
51
|
-
return this.emit(doc)
|
|
52
|
-
+ this.emit(' '
|
|
53
|
-
+ ' {\n'
|
|
54
|
-
+ this.indent(1))
|
|
55
|
-
+ this.mapVisit(node.rules, '\n\n')
|
|
56
|
-
+ this.emit(this.indent(-1)
|
|
57
|
-
+ '\n}');
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* Visit charset node.
|
|
61
|
-
*/
|
|
62
|
-
charset(node) {
|
|
63
|
-
return this.emit('@charset ' + node.charset + ';');
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* Visit namespace node.
|
|
67
|
-
*/
|
|
68
|
-
namespace(node) {
|
|
69
|
-
return this.emit('@namespace ' + node.namespace + ';');
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
* Visit supports node.
|
|
73
|
-
*/
|
|
74
|
-
supports(node) {
|
|
75
|
-
return this.emit('@supports ' + node.supports)
|
|
76
|
-
+ this.emit(' {\n'
|
|
77
|
-
+ this.indent(1))
|
|
78
|
-
+ this.mapVisit(node.rules, '\n\n')
|
|
79
|
-
+ this.emit(this.indent(-1)
|
|
80
|
-
+ '\n}');
|
|
81
|
-
}
|
|
82
|
-
/**
|
|
83
|
-
* Visit keyframes node.
|
|
84
|
-
*/
|
|
85
|
-
keyframes(node) {
|
|
86
|
-
return this.emit('@' + (node.vendor || '') + 'keyframes ' + node.name)
|
|
87
|
-
+ this.emit(' {\n'
|
|
88
|
-
+ this.indent(1))
|
|
89
|
-
+ this.mapVisit(node.keyframes, '\n')
|
|
90
|
-
+ this.emit(this.indent(-1)
|
|
91
|
-
+ '}');
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* Visit keyframe node.
|
|
95
|
-
*/
|
|
96
|
-
keyframe(node) {
|
|
97
|
-
const decls = node.declarations;
|
|
98
|
-
return this.emit(this.indent())
|
|
99
|
-
+ this.emit(node.values.join(', '))
|
|
100
|
-
+ this.emit(' {\n'
|
|
101
|
-
+ this.indent(1))
|
|
102
|
-
+ this.mapVisit(decls, '\n')
|
|
103
|
-
+ this.emit(this.indent(-1)
|
|
104
|
-
+ '\n'
|
|
105
|
-
+ this.indent() + '}\n');
|
|
106
|
-
}
|
|
107
|
-
/**
|
|
108
|
-
* Visit page node.
|
|
109
|
-
*/
|
|
110
|
-
page(node) {
|
|
111
|
-
const sel = node.selectors.length
|
|
112
|
-
? node.selectors.join(', ') + ' '
|
|
113
|
-
: '';
|
|
114
|
-
return this.emit('@page ' + sel)
|
|
115
|
-
+ this.emit('{\n')
|
|
116
|
-
+ this.emit(this.indent(1))
|
|
117
|
-
+ this.mapVisit(node.declarations, '\n')
|
|
118
|
-
+ this.emit(this.indent(-1))
|
|
119
|
-
+ this.emit('\n}');
|
|
120
|
-
}
|
|
121
|
-
/**
|
|
122
|
-
* Visit font-face node.
|
|
123
|
-
*/
|
|
124
|
-
'font-face'(node) {
|
|
125
|
-
return this.emit('@font-face ')
|
|
126
|
-
+ this.emit('{\n')
|
|
127
|
-
+ this.emit(this.indent(1))
|
|
128
|
-
+ this.mapVisit(node.declarations, '\n')
|
|
129
|
-
+ this.emit(this.indent(-1))
|
|
130
|
-
+ this.emit('\n}');
|
|
131
|
-
}
|
|
132
|
-
/**
|
|
133
|
-
* Visit host node.
|
|
134
|
-
*/
|
|
135
|
-
host(node) {
|
|
136
|
-
return this.emit('@host')
|
|
137
|
-
+ this.emit(' {\n'
|
|
138
|
-
+ this.indent(1))
|
|
139
|
-
+ this.mapVisit(node.rules, '\n\n')
|
|
140
|
-
+ this.emit(this.indent(-1)
|
|
141
|
-
+ '\n}');
|
|
142
|
-
}
|
|
143
|
-
/**
|
|
144
|
-
* Visit custom-media node.
|
|
145
|
-
*/
|
|
146
|
-
'custom-media'(node) {
|
|
147
|
-
return this.emit('@custom-media ' + node.name + ' ' + node.media + ';');
|
|
148
|
-
}
|
|
149
|
-
/**
|
|
150
|
-
* Visit rule node.
|
|
151
|
-
*/
|
|
152
|
-
rule(node) {
|
|
153
|
-
const indent = this.indent();
|
|
154
|
-
const decls = node.declarations;
|
|
155
|
-
if (!decls.length)
|
|
156
|
-
return '';
|
|
157
|
-
return this.emit(node.selectors.map(s => indent + s).join(',\n'))
|
|
158
|
-
+ this.emit(' {\n')
|
|
159
|
-
+ this.emit(this.indent(1))
|
|
160
|
-
+ this.mapVisit(decls, '\n')
|
|
161
|
-
+ this.emit(this.indent(-1))
|
|
162
|
-
+ this.emit('\n' + this.indent() + '}');
|
|
163
|
-
}
|
|
164
|
-
/**
|
|
165
|
-
* Visit declaration node.
|
|
166
|
-
*/
|
|
167
|
-
declaration(node) {
|
|
168
|
-
return this.emit(this.indent())
|
|
169
|
-
+ this.emit(node.property + ': ' + node.value)
|
|
170
|
-
+ this.emit(';');
|
|
171
|
-
}
|
|
172
|
-
/**
|
|
173
|
-
* Increase, decrease or return current indentation.
|
|
174
|
-
*/
|
|
175
|
-
indent(level) {
|
|
176
|
-
if (level != null) {
|
|
177
|
-
this.level += level;
|
|
178
|
-
return '';
|
|
179
|
-
}
|
|
180
|
-
return Array(this.level).join(this.indentation);
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
//# sourceMappingURL=identity.js.map
|
package/css/stringify/index.d.ts
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Module dependencies.
|
|
3
|
-
*/
|
|
4
|
-
import { CompileResult, CompilerOptions } from './types';
|
|
5
|
-
/**
|
|
6
|
-
* Stringfy the given AST `node`.
|
|
7
|
-
*
|
|
8
|
-
* Options:
|
|
9
|
-
*
|
|
10
|
-
* - `compress` space-optimized output
|
|
11
|
-
* - `sourcemap` return an object with `.code` and `.map`
|
|
12
|
-
*
|
|
13
|
-
* @param {Object} node
|
|
14
|
-
* @param {Object} [options]
|
|
15
|
-
* @return {String}
|
|
16
|
-
* @api public
|
|
17
|
-
*/
|
|
18
|
-
interface StringifyOptions extends CompilerOptions {
|
|
19
|
-
compress?: boolean;
|
|
20
|
-
sourcemap?: boolean | 'generator';
|
|
21
|
-
}
|
|
22
|
-
export default function (node: any, options?: StringifyOptions): string | CompileResult;
|
|
23
|
-
export {};
|
|
24
|
-
//# sourceMappingURL=index.d.ts.map
|
package/css/stringify/index.js
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Module dependencies.
|
|
3
|
-
*/
|
|
4
|
-
import { CompressCompiler } from './compress';
|
|
5
|
-
import { IdentityCompiler } from './identity';
|
|
6
|
-
export default function (node, options = {}) {
|
|
7
|
-
const compiler = options.compress
|
|
8
|
-
? new CompressCompiler(options)
|
|
9
|
-
: new IdentityCompiler(options);
|
|
10
|
-
// source maps
|
|
11
|
-
// if (options.sourcemap) {
|
|
12
|
-
// var sourcemaps = require('./source-map-support');
|
|
13
|
-
// sourcemaps(compiler);
|
|
14
|
-
//
|
|
15
|
-
// var code = compiler.compile(node);
|
|
16
|
-
// compiler.applySourceMaps();
|
|
17
|
-
//
|
|
18
|
-
// var map = options.sourcemap === 'generator'
|
|
19
|
-
// ? compiler.map
|
|
20
|
-
// : compiler.map.toJSON();
|
|
21
|
-
//
|
|
22
|
-
// return { code: code, map: map };
|
|
23
|
-
// }
|
|
24
|
-
const code = compiler.compile(node);
|
|
25
|
-
return code;
|
|
26
|
-
}
|
|
27
|
-
//# sourceMappingURL=index.js.map
|
package/css/stringify/types.d.ts
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
export interface CompileResult {
|
|
2
|
-
code: string;
|
|
3
|
-
map?: any;
|
|
4
|
-
}
|
|
5
|
-
export interface Compiler {
|
|
6
|
-
compile(node: any): string;
|
|
7
|
-
map?: any;
|
|
8
|
-
applySourceMaps?(): void;
|
|
9
|
-
}
|
|
10
|
-
export interface CompilerOptions {
|
|
11
|
-
compress?: boolean;
|
|
12
|
-
sourcemap?: boolean | 'generator';
|
|
13
|
-
indent?: string;
|
|
14
|
-
}
|
|
15
|
-
//# sourceMappingURL=types.d.ts.map
|
package/css/stringify/types.js
DELETED
package/css/types.d.ts
DELETED
package/css/types.js
DELETED