-
Notifications
You must be signed in to change notification settings - Fork 71
/
Copy pathpropdic.js
544 lines (515 loc) · 45.6 KB
/
propdic.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
/*
* Author: demi6od <[email protected]>
* Date: 2013 Oct 21st
*
* Note: the fuzzer is designed to run using Grinder Framework, if you want to run it without using Grinder:
* - remove all dependencies of logger element
*/
demicm.propBlackList = [
'id','idS', 'idR', 'demicm', 'console', 'logger', 'scripts', 'LOGGER',
'innerHTML', 'innerText', 'outerHTML', 'outerText', 'textContent',
'parentTextEdit', 'lastElementChild', 'firstElementChild', 'nextElementSibling', 'previousElementSibling',
'ownerDocument', 'nextSibling', 'previousSibling', 'lastChild', 'firstChild', 'childNodes', 'parentNode',
'parentElement', 'offsetParent', 'children', 'elements', 'body', 'head', 'all', 'view', 'self', 'window',
'location',
'URL', 'url', 'href',
'origin', 'host', 'protocol', 'hostname', 'port', 'pathname',
'search', 'name', 'history', 'hash', 'onbeforeunload', 'onunload',
'defaultView', 'Components', 'controllers',
'style', 'attributes', 'sheet', 'styleSheets', 'classList', // TODO
'logger',
// Auto prop black list begin
// Auto prop black list end
];
if (demicm.BROWSER == 'IE') {
demicm.propBlackList.push('designMode');
}
demicm.propDic = {
wrap: {type: 'string', normalVal: ['off', 'virtual', 'physical'], dirtyVal: ['physical'], readOnly: false},
behavior: {type: 'string', normalVal: ['scroll', 'slide', 'alternate'], dirtyVal: ['slide'], readOnly: false},
direction: {type: 'string', normalVal: ['right', 'left'], dirtyVal: demicm.dirtyStr, readOnly: false},
contentEditable: {type: 'string', normalVal: ['true', 'false', 'plaintext-only', 'inherit'], dirtyVal: ['true'], readOnly: false},
accessKey: {type: 'string', normalVal: demicm.alpha, dirtyVal: demicm.dirtyStr, readOnly: false},
dir: {type: 'string', normalVal: ['ltr', 'rtl', 'auto'], dirtyVal: ['rtl'], readOnly: false},
lang: {type: 'string', normalVal: demicm.langs, dirtyVal: demicm.dirtyStr, readOnly: false},
hreflang: {type: 'string', normalVal: demicm.langs, dirtyVal: demicm.dirtyStr, readOnly: false},
srclang: {type: 'string', normalVal: demicm.langs, dirtyVal: demicm.dirtyStr, readOnly: false},
title: {type: 'string', normalVal: demicm.str, dirtyVal: demicm.dirtyStr, readOnly: false},
name: {type: 'string', normalVal: demicm.str, dirtyVal: demicm.dirtyStr, readOnly: false},
type: {type: 'string', normalVal: demicm.inputTypes, dirtyVal: demicm.dirtyStr, readOnly: false},
wholeText: {type: 'string', normalVal: [], dirtyVal: demicm.dirtyStr, readOnly: true},
// objectSpec => non-element object
dataset: {type: 'objectSpec', normalVal: [{id: 'user', user: 'demi6od', dateOfBirty: '1960-10-03'}], dirtyVal: [], readOnly: false},
classList: {type: 'objectSpec', normalVal: [{0: 'a', 1: 'b', 2: 'c', length: 3}], dirtyVal: [], readOnly: false},
className: {type: 'string', normalVal: demicm.str, dirtyVal: demicm.dirtyStr, readOnly: false},
position: {type: 'string', normalVal: ['static', 'relative', 'absolute', 'fixed'], dirtyVal: demicm.dirtyStr, readOnly: false},
style: {type: 'objectSpec', normalVal: [], dirtyVal: [], readOnly: false},
attributes: {type: 'objectSpec', normalVal: [], dirtyVal: [], readOnly: false},
tagName: {type: 'string', normalVal: demicm.tags, dirtyVal: demicm.dirtyStr, readOnly: false},
textContent: {type: 'string', normalVal: [], dirtyVal: demicm.dirtyStr, readOnly: true},
localName: {type: 'string', normalVal: [], dirtyVal: demicm.dirtyStr, readOnly: true},
prefix: {type: 'string', normalVal: demicm.str, dirtyVal: demicm.dirtyStr, readOnly: false},
namespaceURI: {type: 'string', normalVal: demicm.nameSpaces, dirtyVal: demicm.dirtyStr, readOnly: false},
nodeVal: {type: 'string', normalVal: demicm.str, dirtyVal: demicm.dirtyStr, readOnly: false},
nodeName: {type: 'string', normalVal: [], dirtyVal: demicm.dirtyStr, readOnly: true},
text: {type: 'string', normalVal: demicm.str, dirtyVal: demicm.dirtyStr, readOnly: false},
shape: {type: 'string', normalVal: ['rect', 'circ', 'poly'], dirtyVal: demicm.dirtyStr, readOnly: false},
rev: {type: 'string', normalVal: ['alternate', 'stylesheet', 'start', 'next', 'prev', 'contents', 'index',
'glossary', 'copyright', 'chapter', 'section', 'subsection', 'appendix', 'help', 'bookmark', 'nofollow',
'licence', 'tag', 'friend'], dirtyVal: [], readOnly: false},
rel: {type: 'string', normalVal: ['alternate', 'stylesheet', 'start', 'next', 'prev', 'contents', 'index',
'glossary', 'copyright', 'chapter', 'section', 'subsection', 'appendix', 'help', 'bookmark', 'nofollow',
'licence', 'tag', 'friend'], dirtyVal: [], readOnly: false},
ping: {type: 'string', normalVal: [], dirtyVal: demicm.dirtyStr, readOnly: false},
charset: {type: 'string', normalVal: demicm.charsets, dirtyVal: demicm.dirtyStr, readOnly: false},
characterSet: {type: 'string', normalVal: demicm.charsets, dirtyVal: demicm.dirtyStr, readOnly: false},
defaultCharset: {type: 'string', normalVal: demicm.charsets, dirtyVal: demicm.dirtyStr, readOnly: false},
acceptCharset: {type: 'string', normalVal: demicm.charsets, dirtyVal: demicm.dirtyStr, readOnly: false},
encoding: {type: 'string', normalVal: demicm.charsets, dirtyVal: demicm.dirtyStr, readOnly: false},
alt: {type: 'string', normalVal: demicm.str, dirtyVal: demicm.dirtyStr, readOnly: false},
standby: {type: 'string', normalVal: demicm.str, dirtyVal: demicm.dirtyStr, readOnly: false},
clear: {type: 'string', normalVal: ['left', 'right', 'both'], dirtyVal: ['none'], readOnly: false},
labels: {type: 'object', normalVal: [], dirtyVal: [], readOnly: false},
validationMessage: {type: 'string', normalVal: demicm.str, dirtyVal: demicm.dirtyStr, readOnly: false},
validity: {type: 'objectSpec', normalVal: [], dirtyVal: [], readOnly: false},
value: {type: 'string', normalVal: demicm.str, dirtyVal: demicm.dirtyStr, readOnly: false},
defaultVal: {type: 'string', normalVal: demicm.str, dirtyVal: demicm.dirtyStr, readOnly: false},
align: {type: 'string', normalVal: ['left', 'right', 'middle', 'top', 'bottom', 'absmiddle', 'baseline', 'absbottom'],
dirtyVal: ['center', 'justify', 'char'], readOnly: false},
vAlign: {type: 'string', normalVal: ['top', 'middle', 'bottom', 'baseline'], dirtyVal: demicm.dirtyStr, readOnly: false},
ch: {type: 'string', normalVal: demicm.alpha, dirtyVal: demicm.dirtyStr, readOnly: false},
dateTime: {type: 'string', normalVal: demicm.dateTimes, dirtyVal: demicm.dirtyStr, readOnly: false},
autocomplete: {type: 'string', normalVal: demicm.autocompletes, dirtyVal: ['on'], readOnly: false},
version: {type: 'string', normalVal: ['-//W3C//DTD HTML 4.01//EN'], dirtyVal: demicm.dirtyStr, readOnly: true},
srcdoc: {type: 'string', normalVal: ["<iframe src='javascript: window.top.callBackJs();'></iframe>"], dirtyVal: demicm.dirtyStr, readOnly: false},
scrolling: {type: 'string', normalVal: ['auto', 'yes', 'no'], dirtyVal: ['auto'], readOnly: false},
sandbox: {type: 'string', normalVal: ['', 'allow-same-origin', 'allow-top-navigation', 'allow-forms', 'allow-scripts'],
dirtyVal: [], readOnly: false},
frameBorder: {type: 'string', normalVal: ['0', '1'], dirtyVal: ['0'], readOnly: false},
crossOrigin: {type: 'string', normalVal: ['anonymous', 'use-credentials'], dirtyVal: ['use-credentials'], readOnly: false},
selectionDirection: {type: 'string', normalVal: ['forward', 'backward', 'none'], dirtyVal: demicm.dirtyStr, readOnly: false},
// objectdate => date object
valueAsDate: {type: 'objectdate', normalVal: [], dirtyVal: [], readOnly: false},
placeholder: {type: 'string', normalVal: demicm.str, dirtyVal: demicm.dirtyStr, readOnly: false},
pattern: {type: 'string', normalVal: ['.*'], dirtyVal: demicm.dirtyStr, readOnly: false},
media: {type: 'string', normalVal: ['screen', 'tty', 'tv', 'projection', 'handheld', 'print', 'braille', 'aural', 'all'],
dirtyVal: [], readOnly: false},
valueType: {type: 'string', normalVal: ['data', 'ref', 'object'], dirtyVal: demicm.dirtyStr, readOnly: false},
label: {type: 'string', normalVal: demicm.str, dirtyVal: demicm.dirtyStr, readOnly: false},
rules: {type: 'string', normalVal: ['none', 'groups', 'rows', 'cols', 'all'], dirtyVal: demicm.dirtyStr, readOnly: false},
frame: {type: 'string', normalVal: ['void', 'above', 'below', 'hsides', 'lhs', 'rhs', 'vsides', 'box', 'border'],
dirtyVal: [], readOnly: false},
files: {type: 'objectList', normalVal: [], dirtyVal: [], readOnly: true},
dirName: {type: 'string', normalVal: demicm.str, dirtyVal: demicm.dirtyStr, readOnly: false},
accept: {type: 'string', normalVal: demicm.MIMETypes, dirtyVal: demicm.dirtyStr, readOnly: false},
codeType: {type: 'string', normalVal: demicm.MIMETypes, dirtyVal: demicm.dirtyStr, readOnly: false},
keytype: {type: 'string', normalVal: ['rsa', 'dsa', 'ec'], dirtyVal: demicm.dirtyStr, readOnly: false},
challenge: {type: 'string', normalVal: demicm.str, dirtyVal: demicm.dirtyStr, readOnly: false},
control: {type: 'objectSpec', normalVal: [], dirtyVal: [], readOnly: false},
sheet: {type: 'objectSpec', normalVal: [], dirtyVal: [], readOnly: false},
sizes: {type: 'objectSpec', normalVal: [], dirtyVal: [], readOnly: false},
areas: {type: 'objectSpec', normalVal: [], dirtyVal: [], readOnly: false},
event: {type: 'string', normalVal: [], dirtyVal: demicm.dirtyStr, readOnly: false},
scope: {type: 'string', normalVal: ['col', 'row', 'colgroup', 'rowgroup'], dirtyVal: demicm.dirtyStr, readOnly: false},
// stringId
hash: {type: 'stringHashId', normalVal: ['#6'], dirtyVal: [], readOnly: false},
search: {type: 'stringQueryId', normalVal: ['?id=6'], dirtyVal: [], readOnly: false},
useMap: {type: 'stringHashId', normalVal: ['#fuzzMap'], dirtyVal: [], readOnly: false},
htmlFor: {type: 'stringId', normalVal: ['6'], dirtyVal: [], readOnly: false},
headers: {type: 'stringId', normalVal: ['6'], dirtyVal: [], readOnly: false},
list: {type: 'stringId', normalVal: ['6'], dirtyVal: [], readOnly: false},
// stringColor => color string type
alink: {type: 'stringColor', normalVal: demicm.color, dirtyVal: [], readOnly: false},
vLink: {type: 'stringColor', normalVal: demicm.color, dirtyVal: [], readOnly: false},
link: {type: 'stringColor', normalVal: demicm.color, dirtyVal: [], readOnly: false},
bgColor: {type: 'stringColor', normalVal: demicm.color, dirtyVal: [], readOnly: false},
aLink: {type: 'stringColor', normalVal: demicm.color, dirtyVal: [], readOnly: false},
// stringPos => position string type
coords: {type: 'stringPos', normalVal: ['10,10,5', '2,2,5,5'], dirtyVal: ['-1,-1,-1', '-1,-1,-2,-2'], readOnly: false},
// DOMTree node iterator
lastElementChild: {type: 'object', normalVal: [], dirtyVal: [], readOnly: true},
firstElementChild: {type: 'object', normalVal: [], dirtyVal: [], readOnly: true},
nextElementSibling: {type: 'object', normalVal: [], dirtyVal: [], readOnly: true},
previousElementSibling: {type: 'object', normalVal: [], dirtyVal: [], readOnly: true},
offsetParent: {type: 'object', normalVal: [], dirtyVal: [], readOnly: true},
ownerDocument: {type: 'object', normalVal: [], dirtyVal: [], readOnly: true},
nextSibling: {type: 'object', normalVal: [], dirtyVal: [], readOnly: true},
previousSibling: {type: 'object', normalVal: [], dirtyVal: [], readOnly: true},
lastChild: {type: 'object', normalVal: [], dirtyVal: [], readOnly: true},
firstChild: {type: 'object', normalVal: [], dirtyVal: [], readOnly: true},
childNodes: {type: 'objectList', normalVal: [], dirtyVal: [], readOnly: true},
parentNode: {type: 'object', normalVal: [], dirtyVal: [], readOnly: true},
parentElement: {type: 'object', normalVal: [], dirtyVal: [], readOnly: true},
contentWindow: {type: 'object', normalVal: [], dirtyVal: [], readOnly: true},
contentDocument: {type: 'object', normalVal: [], dirtyVal: [], readOnly: true},
form: {type: 'object', normalVal: [], dirtyVal: [], readOnly: true},
// objectList => element collection
children: {type: 'objectList', normalVal: [], dirtyVal: [], readOnly: true},
elements: {type: 'objectList', normalVal: [], dirtyVal: [], readOnly: true},
// meta element
httpEquiv: {type: 'string', normalVal: ['cache-control', 'content-language', 'content-type', 'date', 'expires',
'last-modified', 'location', 'refresh', 'set-cookie', 'window-target'], dirtyVal: [], readOnly: false},
content: {type: 'string', normalVal: ['text/css', 'iso-8859-1', '31 Dec 2008'], dirtyVal: demicm.dirtyStr, readOnly: false},
scheme: {type: 'string', normalVal: ['YYYY-MM-DD', 'ISBN'], dirtyVal: demicm.dirtyStr, readOnly: false},
// Table & Select
tFoot: {type: 'object', normalVal: [], dirtyVal: [], readOnly: true},
tHead: {type: 'object', normalVal: [], dirtyVal: [], readOnly: true},
caption: {type: 'object', normalVal: [], dirtyVal: [], readOnly: true},
selectedOptions: {type: 'objectList', normalVal: [], dirtyVal: [], readOnly: true},
tBodies: {type: 'objectList', normalVal: [], dirtyVal: [], readOnly: true},
cells: {type: 'objectList', normalVal: [], dirtyVal: [], readOnly: true},
options: {type: 'objectList', normalVal: [], dirtyVal: [], readOnly: true},
cellPadding: {type: 'number', normalVal: demicm.normalNumPct, dirtyVal: demicm.dirtyNumPct, readOnly: false},
cellSpacing: {type: 'number', normalVal: demicm.normalNumPct, dirtyVal: demicm.dirtyNumPct, readOnly: false},
selectedIndex: {type: 'number', normalVal: demicm.normalNum, dirtyVal: demicm.dirtyNum, readOnly: false},
cellIndex: {type: 'number', normalVal: demicm.normalNum, dirtyVal: demicm.dirtyNum, readOnly: true},
rowIndex: {type: 'number', normalVal: demicm.normalNum, dirtyVal: demicm.dirtyNum, readOnly: true},
sectionRowIndex: {type: 'number', normalVal: demicm.normalNum, dirtyVal: demicm.dirtyNum, readOnly: true},
summary: {type: 'string', normalVal: demicm.str, dirtyVal: demicm.dirtyStr, readOnly: false},
axis: {type: 'string', normalVal: demicm.str, dirtyVal: demicm.dirtyStr, readOnly: false},
abbr: {type: 'string', normalVal: demicm.str, dirtyVal: demicm.dirtyStr, readOnly: false},
// Form
formNoValidate: {type: 'boolean', normalVal: demicm.bool, dirtyVal: [true], readOnly: false},
formMethod: {type: 'string', normalVal: ['get', 'post'], dirtyVal: ['post'], readOnly: false},
method: {type: 'string', normalVal: ['get', 'post'], dirtyVal: ['post'], readOnly: false},
formEnctype: {type: 'string', normalVal: ['application/x-www-form-urlencoded', 'multipart/form-data', 'text/plain'],
dirtyVal: [], readOnly: false},
enctype: {type: 'string', normalVal: ['application/x-www-form-urlencoded', 'multipart/form-data', 'text/plain'],
dirtyVal: [], readOnly: false},
// Audio & Video
defaultMuted: {type: 'boolean', normalVal: demicm.bool, dirtyVal: [false], readOnly: false},
muted: {type: 'boolean', normalVal: demicm.bool, dirtyVal: [false], readOnly: false},
controls: {type: 'boolean', normalVal: demicm.bool, dirtyVal: [true], readOnly: false},
autoplay: {type: 'boolean', normalVal: demicm.bool, dirtyVal: [true], readOnly: false},
ended: {type: 'boolean', normalVal: demicm.bool, dirtyVal: [true], readOnly: false},
paused: {type: 'boolean', normalVal: demicm.bool, dirtyVal: [true], readOnly: false},
seeking: {type: 'boolean', normalVal: demicm.bool, dirtyVal: [true], readOnly: false},
loop: {type: 'number', normalVal: demicm.normalNum, dirtyVal: ['infinite'], readOnly: false},
volume: {type: 'number', normalVal: demicm.tinyNum, dirtyVal: demicm.dirtyNum, readOnly: false},
playbackRate: {type: 'number', normalVal: [1, 0.5, 2, -1], dirtyVal: demicm.dirtyNum, readOnly: false},
defaultPlaybackRate: {type: 'number', normalVal: [1, 0.5, 2, -1], dirtyVal: demicm.dirtyNum, readOnly: false},
duration: {type: 'number', normalVal: [100], dirtyVal: demicm.dirtyNum, readOnly: true},
startTime: {type: 'number', normalVal: [0, 5, 10, 100], dirtyVal: demicm.dirtyNum, readOnly: false},
initialTime: {type: 'number', normalVal: [0, 5, 10, 100], dirtyVal: demicm.dirtyNum, readOnly: false},
currentTime: {type: 'number', normalVal: [0, 5, 10, 100], dirtyVal: demicm.dirtyNum, readOnly: false},
readyState: {type: 'number', normalVal: [0, 1, 2, 3, 4], dirtyVal: demicm.dirtyNum, readOnly: false},
networkState: {type: 'number', normalVal: [0, 1, 2, 3], dirtyVal: demicm.dirtyNum, readOnly: false},
kind: {type: 'string', normalVal: ['captions', 'chapters', 'descriptions', 'metadata', 'subtitles'], dirtyVal: demicm.dirtyStr, readOnly: false},
poster: {type: 'string', normalVal: ['demicmImg.gif'], dirtyVal: demicm.dirtyStr, readOnly: false},
mediaGroup: {type: 'string', normalVal: demicm.str, dirtyVal: demicm.dirtyStr, readOnly: false},
preload: {type: 'string', normalVal: ['auto', 'metadata', 'none'], dirtyVal: ['auto'], readOnly: false},
currentSrc: {type: 'string', normalVal: ['demicmVideo.mp4'], dirtyVal: demicm.dirtyStr, readOnly: true},
textTracks: {type: 'objectSpec', normalVal: [], dirtyVal: [], readOnly: false},
track: {type: 'objectSpec', normalVal: [], dirtyVal: [], readOnly: false},
controller: {type: 'objectSpec', normalVal: [], dirtyVal: [], readOnly: false},
seekable: {type: 'objectSpec', normalVal: [], dirtyVal: [], readOnly: false},
played: {type: 'objectSpec', normalVal: [], dirtyVal: [], readOnly: false},
buffered: {type: 'objectSpec', normalVal: [], dirtyVal: [], readOnly: false},
error: {type: 'objectSpec', normalVal: [], dirtyVal: [], readOnly: false},
// Range
collapsed: {type: 'boolean', normalVal: demicm.bool, dirtyVal: [false], readOnly: true},
commonAncestorContainer: {type: 'object', normalVal: [], dirtyVal: [], readOnly: true},
startContainer: {type: 'object', normalVal: [], dirtyVal: [], readOnly: true},
endContainer: {type: 'object', normalVal: [], dirtyVal: [], readOnly: true},
startOffset: {type: 'number', normalVal: demicm.normalNum, dirtyVal: demicm.dirtyNum, readOnly: true},
endOffset: {type: 'number', normalVal: demicm.normalNum, dirtyVal: demicm.dirtyNum, readOnly: true},
// Selection
isCollapsed: {type: 'boolean', normalVal: demicm.bool, dirtyVal: [false], readOnly: true},
anchorNode: {type: 'object', normalVal: [], dirtyVal: [], readOnly: true},
focusNode: {type: 'object', normalVal: [], dirtyVal: [], readOnly: true},
extentNode: {type: 'object', normalVal: [], dirtyVal: [], readOnly: true},
baseNode: {type: 'object', normalVal: [], dirtyVal: [], readOnly: true},
anchorOffset: {type: 'number', normalVal: demicm.normalNum, dirtyVal: demicm.dirtyNum, readOnly: true},
focusOffset: {type: 'number', normalVal: demicm.normalNum, dirtyVal: demicm.dirtyNum, readOnly: true},
extentOffset: {type: 'number', normalVal: demicm.normalNum, dirtyVal: demicm.dirtyNum, readOnly: true},
baseOffset: {type: 'number', normalVal: demicm.normalNum, dirtyVal: demicm.dirtyNum, readOnly: true},
rangeCount: {type: 'number', normalVal: demicm.normalNum, dirtyVal: demicm.dirtyNum, readOnly: true},
// NodeIterator and TreeWalker
expandEntityReferences: {type: 'boolean', normalVal: demicm.bool, dirtyVal: [false], readOnly: true},
pointerBeforeReferenceNode: {type: 'boolean', normalVal: demicm.bool, dirtyVal: [false], readOnly: true},
root: {type: 'object', normalVal: [], dirtyVal: [], readOnly: true},
filter: {type: 'object', normalVal: [], dirtyVal: [], readOnly: true},
referenceNode: {type: 'object', normalVal: [], dirtyVal: [], readOnly: true},
currentNode: {type: 'object', normalVal: [], dirtyVal: [], readOnly: true},
whatToShow: {type: 'number', normalVal: demicm.normalNum, dirtyVal: demicm.dirtyNum, readOnly: true},
// Canvas
fillStyle: {type: 'string', normalVal: ['#FF1122', '#00FF22', '#1100FF'], dirtyVal: ['#FFFFFF'], readOnly: false},
strokeStyle: {type: 'string', normalVal: ['#FF1122', '#00FF22', '#1100FF'], dirtyVal: ['#FFFFFF'], readOnly: false},
lineCap: {type: 'string', normalVal: ['butt', 'round', 'square'], dirtyVal: demicm.dirtyStr, readOnly: false},
lineJoin: {type: 'string', normalVal: ['bevel', 'round', 'miter'], dirtyVal: demicm.dirtyStr, readOnly: false},
shadowColor: {type: 'string', normalVal: demicm.color, dirtyVal: demicm.dirtyStr, readOnly: false},
shadowBlur: {type: 'number', normalVal: demicm.normalNum, dirtyVal: demicm.dirtyNum, readOnly: false},
shadowOffsetX: {type: 'number', normalVal: demicm.normalNum, dirtyVal: demicm.dirtyNum, readOnly: false},
shadowOffsetY: {type: 'number', normalVal: demicm.normalNum, dirtyVal: demicm.dirtyNum, readOnly: false},
lineWidth: {type: 'number', normalVal: demicm.normalNum, dirtyVal: demicm.dirtyNum, readOnly: false},
miterLimit: {type: 'number', normalVal: demicm.normalNum, dirtyVal: demicm.dirtyNum, readOnly: false},
font: {type: 'string', normalVal: ['italic small-caps bold 12px arial'], dirtyVal: demicm.dirtyStr, readOnly: false},
textAlign: {type: 'string', normalVal: ['center', 'end', 'left', 'right', 'start'], dirtyVal: demicm.dirtyStr, readOnly: false},
textBaseline: {type: 'string', normalVal: ['alphabetic', 'top', 'hanging', 'middle', 'ideographic', 'bottom'], dirtyVal: demicm.dirtyStr, readOnly: false},
globalAlpha: {type: 'number', normalVal: demicm.tinyNum, dirtyVal: demicm.dirtyNum, readOnly: false},
globalCompositeOperation: {type: 'string', normalVal: ['source-over', 'source-atop', 'source-in', 'source-out', 'destination-over', 'destination-atop', 'destination-in', 'destination-out', 'lighter', 'copy', 'xor'], dirtyVal: demicm.dirtyStr, readOnly: false},
// Attribute
isId: {type: 'boolean', normalVal: demicm.bool, dirtyVal: [true], readOnly: true},
specified: {type: 'boolean', normalVal: demicm.bool, dirtyVal: [true], readOnly: true},
offscreenBuffering: {type: 'boolean', normalVal: demicm.bool, dirtyVal: [true], readOnly: true},
frames: {type: 'objectList', normalVal: [], dirtyVal: [], readOnly: true},
history: {type: 'objectHis', normalVal: [], dirtyVal: [], readOnly: false},
// Window
closed: {type: 'boolean', normalVal: demicm.bool, dirtyVal: [true], readOnly: true},
offscreenBuffering: {type: 'boolean', normalVal: demicm.bool, dirtyVal: [true], readOnly: true},
frames: {type: 'objectList', normalVal: [], dirtyVal: [], readOnly: true},
history: {type: 'objectHis', normalVal: [], dirtyVal: [], readOnly: false},
navigator: {type: 'objectNavi', normalVal: [], dirtyVal: [], readOnly: false},
clientInformation: {type: 'objectNavi', normalVal: [], dirtyVal: [], readOnly: false},
opener: {type: 'objectWin', normalVal: [], dirtyVal: [], readOnly: false},
parent: {type: 'objectWin', normalVal: [], dirtyVal: [], readOnly: false},
self: {type: 'objectWin', normalVal: [], dirtyVal: [], readOnly: false},
top: {type: 'objectWin', normalVal: [], dirtyVal: [], readOnly: false},
screen: {type: 'objectScr', normalVal: [], dirtyVal: [], readOnly: false},
localStorage: {type: 'objectSto', normalVal: [], dirtyVal: [], readOnly: false},
sessionStorage: {type: 'objectSto', normalVal: [], dirtyVal: [], readOnly: false},
indexedDB: {type: 'objectDB', normalVal: [], dirtyVal: [], readOnly: false},
crypto: {type: 'objectCry', normalVal: [], dirtyVal: [], readOnly: false},
CSS: {type: 'objectCSS', normalVal: [], dirtyVal: [], readOnly: false},
performance: {type: 'objectPer', normalVal: [], dirtyVal: [], readOnly: false},
console: {type: 'objectCon', normalVal: [], dirtyVal: [], readOnly: false},
styleMedia: {type: 'objectSty', normalVal: [], dirtyVal: [], readOnly: false},
toolbar: {type: 'objectBar', normalVal: [], dirtyVal: [], readOnly: false},
statusbar: {type: 'objectBar', normalVal: [], dirtyVal: [], readOnly: false},
scrollbars: {type: 'objectBar', normalVal: [], dirtyVal: [], readOnly: false},
personalbar: {type: 'objectBar', normalVal: [], dirtyVal: [], readOnly: false},
menubar: {type: 'objectBar', normalVal: [], dirtyVal: [], readOnly: false},
locationbar: {type: 'objectBar', normalVal: [], dirtyVal: [], readOnly: false},
applicationCache: {type: 'objectCache', normalVal: [], dirtyVal: [], readOnly: false},
devicePixelRatio: {type: 'number', normalVal: demicm.normalNum, dirtyVal: demicm.dirtyNum, readOnly: false},
innerHeight: {type: 'number', normalVal: demicm.normalNum, dirtyVal: demicm.dirtyNum, readOnly: false},
innerWidth: {type: 'number', normalVal: demicm.normalNum, dirtyVal: demicm.dirtyNum, readOnly: false},
outerHeight: {type: 'number', normalVal: demicm.normalNum, dirtyVal: demicm.dirtyNum, readOnly: false},
outerWidth: {type: 'number', normalVal: demicm.normalNum, dirtyVal: demicm.dirtyNum, readOnly: false},
pageXOffset: {type: 'number', normalVal: demicm.normalNum, dirtyVal: demicm.dirtyNum, readOnly: false},
pageYOffset: {type: 'number', normalVal: demicm.normalNum, dirtyVal: demicm.dirtyNum, readOnly: false},
screenX: {type: 'number', normalVal: demicm.normalNum, dirtyVal: demicm.dirtyNum, readOnly: false},
screenY: {type: 'number', normalVal: demicm.normalNum, dirtyVal: demicm.dirtyNum, readOnly: false},
screenLeft: {type: 'number', normalVal: demicm.normalNum, dirtyVal: demicm.dirtyNum, readOnly: false},
screenTop: {type: 'number', normalVal: demicm.normalNum, dirtyVal: demicm.dirtyNum, readOnly: false},
status: {type: 'string', normalVal: demicm.str, dirtyVal: demicm.dirtyStr, readOnly: true},
defaultstatus: {type: 'string', normalVal: demicm.str, dirtyVal: demicm.dirtyStr, readOnly: true},
defaultStatus: {type: 'string', normalVal: demicm.str, dirtyVal: demicm.dirtyStr, readOnly: true},
p: {type: 'string', normalVal: demicm.str, dirtyVal: demicm.dirtyStr, readOnly: true},
external: {type: 'object', normalVal: [], dirtyVal: [], readOnly: true},
chrome: {type: 'object', normalVal: [], dirtyVal: [], readOnly: true},
elem: {type: 'object', normalVal: [], dirtyVal: [], readOnly: true},
frameElement: {type: 'object', normalVal: [], dirtyVal: [], readOnly: true},
// Document
anchors: {type: 'objectList', normalVal: [], dirtyVal: [], readOnly: true},
scripts: {type: 'objectList', normalVal: [], dirtyVal: [], readOnly: true},
plugins: {type: 'objectList', normalVal: [], dirtyVal: [], readOnly: true},
embeds: {type: 'objectList', normalVal: [], dirtyVal: [], readOnly: true},
applets: {type: 'objectList', normalVal: [], dirtyVal: [], readOnly: true},
forms: {type: 'objectList', normalVal: [], dirtyVal: [], readOnly: true},
images: {type: 'objectList', normalVal: [], dirtyVal: [], readOnly: true},
links: {type: 'objectList', normalVal: [], dirtyVal: [], readOnly: true},
activeElement: {type: 'object', normalVal: [], dirtyVal: [], readOnly: true},
defaultView: {type: 'object', normalVal: [], dirtyVal: [], readOnly: true},
preferredStylesheetSet: {type: 'object', normalVal: [], dirtyVal: [], readOnly: true},
selectedStylesheetSet : {type: 'object', normalVal: [], dirtyVal: [], readOnly: true},
baseURI: {type: 'string', normalVal: demicm.nameSpaces, dirtyVal: demicm.dirtyStr, readOnly: true},
documentURI: {type: 'string', normalVal: demicm.nameSpaces, dirtyVal: demicm.dirtyStr, readOnly: true},
cookie: {type: 'string', normalVal: [], dirtyVal: demicm.dirtyStr, readOnly: false},
domain: {type: 'string', normalVal: [], dirtyVal: demicm.dirtyStr, readOnly: true},
location: {type: 'string', normalVal: [], dirtyVal: demicm.dirtyStr, readOnly: true},
inputEncoding: {type: 'string', normalVal: demicm.charsets, dirtyVal: demicm.dirtyStr, readOnly: false},
implementation: {type: 'objectSpec', normalVal: [], dirtyVal: [], readOnly: true},
xmlVersion: {type: 'objectSpec', normalVal: [], dirtyVal: [], readOnly: false},
xmlEncoding: {type: 'objectSpec', normalVal: [], dirtyVal: [], readOnly: false},
styleSheets: {type: 'objectSpec', normalVal: [], dirtyVal: [], readOnly: false},
lastModified: {type: 'string', normalVal: [], dirtyVal: demicm.dirtyStr, readOnly: true},
readyState: {type: 'string', normalVal: [], dirtyVal: demicm.dirtyStr, readOnly: true},
URL: {type: 'string', normalVal: [], dirtyVal: [], readOnly: true},
referrer: {type: 'string', normalVal: [], dirtyVal: demicm.dirtyStr, readOnly: true},
doctype: {type: 'objectSpec', normalVal: [], dirtyVal: [], readOnly: true},
docMode: {type: 'objectSpec', normalVal: [], dirtyVal: [], readOnly: true},
currentScript: {type: 'object', normalVal: [], dirtyVal: [], readOnly: true},
strictErrorChecking: {type: 'boolean', normalVal: demicm.bool, dirtyVal: [true], readOnly: false},
xmlStandalone: {type: 'boolean', normalVal: demicm.bool, dirtyVal: [true], readOnly: false},
async: {type: 'boolean', normalVal: demicm.bool, dirtyVal: [true], readOnly: false},
vlinkColor: {type: 'string', normalVal: demicm.color, dirtyVal: demicm.dirtyStr, readOnly: false},
linkColor: {type: 'string', normalVal: demicm.color, dirtyVal: demicm.dirtyStr, readOnly: false},
alinkColor: {type: 'string', normalVal: demicm.color, dirtyVal: demicm.dirtyStr, readOnly: false},
fgColor: {type: 'string', normalVal: demicm.color, dirtyVal: demicm.dirtyStr, readOnly: false},
bgColor: {type: 'string', normalVal: demicm.color, dirtyVal: demicm.dirtyStr, readOnly: false},
compatMode: {type: 'string', normalVal: ['FrontCompat', 'BackCompat'], dirtyVal: demicm.dirtyStr, readOnly: false},
// URL related
href: {type: 'string', normalVal: [demicm.URL + 'demicmFuzz.html'], dirtyVal: demicm.dirtyStr, readOnly: false},
origin: {type: 'string', normalVal: ['http://127.0.0.1:80'], dirtyVal: demicm.dirtyStr, readOnly: false},
baseURI: {type: 'string', normalVal: ['http://127.0.0.1'], dirtyVal: demicm.dirtyStr, readOnly: false},
host: {type: 'string', normalVal: ['127.0.0.1:80'], dirtyVal: demicm.dirtyStr, readOnly: false},
protocol: {type: 'string', normalVal: ['http', 'https', 'ftp', 'file', 'javascript'], dirtyVal: [], readOnly: false},
hostname: {type: 'string', normalVal: ['127.0.0.1'], dirtyVal: demicm.dirtyStr, readOnly: false},
port: {type: 'string', normalVal: ['80'], dirtyVal: demicm.dirtyStr, readOnly: false},
pathname: {type: 'string', normalVal: ['demicmFuzz.html'], dirtyVal: demicm.dirtyStr, readOnly: false},
formTarget: {type: 'string', normalVal: ['_blank', '_self', '_parent', '_top', demicm.URL + 'demicmFuzz.html'],
dirtyVal: demicm.dirtyStr, readOnly: false},
target: {type: 'string', normalVal: ['_blank', '_self', '_parent', '_top', demicm.URL + 'demicmFuzz.html'],
dirtyVal: demicm.dirtyStr, readOnly: false},
profile: {type: 'string', normalVal: [demicm.URL + 'demicmProfile'], dirtyVal: demicm.dirtyStr, readOnly: false},
cite: {type: 'string', normalVal: [demicm.URL + 'demicmDoc'], dirtyVal: demicm.dirtyStr, readOnly: false},
lowsrc: {type: 'string', normalVal: demicm.dirtyStr, dirtyVal: demicm.dirtyStr, readOnly: false},
src: {type: 'string', normalVal: demicm.dirtyStr, dirtyVal: demicm.dirtyStr, readOnly: false},
background: {type: 'string', normalVal: [demicm.URL + 'demicmImg.gif'], dirtyVal: demicm.dirtyStr, readOnly: false},
codeBase: {type: 'string', normalVal: [demicm.URL + 'java/'], dirtyVal: demicm.dirtyStr, readOnly: false},
code: {type: 'string', normalVal: [demicm.URL + 'demicmCodeBase.class'], dirtyVal: demicm.dirtyStr, readOnly: false},
archive: {type: 'string', normalVal: [demicm.URL + 'demicmAchive.java'], dirtyVal: demicm.dirtyStr, readOnly: false},
manifest: {type: 'string', normalVal: [demicm.URL + 'demicmMani.cache'], dirtyVal: demicm.dirtyStr, readOnly: false},
data: {type: 'string', normalVal: [demicm.URL + 'demicmData.swf'], dirtyVal: demicm.dirtyStr, readOnly: false},
longDesc: {type: 'string', normalVal: [demicm.URL + 'demicmDesc.txt'], dirtyVal: demicm.dirtyStr, readOnly: false},
download: {type: 'string', normalVal: [demicm.URL + 'demicmDownload.txt'], dirtyVal: demicm.dirtyStr, readOnly: false},
formAction: {type: 'string', normalVal: [demicm.URL + 'demicmFuzz.html'], dirtyVal: demicm.dirtyStr, readOnly: false},
action: {type: 'string', normalVal: [demicm.URL + 'demicmFuzz.html'], dirtyVal: demicm.dirtyStr, readOnly: false},
// boolean type
noWrap: {type: 'boolean', normalVal: demicm.bool, dirtyVal: [false], readOnly: false},
default: {type: 'boolean', normalVal: demicm.bool, dirtyVal: [true], readOnly: false},
spellcheck: {type: 'boolean', normalVal: demicm.bool, dirtyVal: [true], readOnly: false},
isContentEditable: {type: 'boolean', normalVal: demicm.bool, dirtyVal: [true], readOnly: true},
hidden: {type: 'boolean', normalVal: demicm.bool, dirtyVal: [true], readOnly: false},
draggable: {type: 'boolean', normalVal: demicm.bool, dirtyVal: [true], readOnly: false},
translate: {type: 'boolean', normalVal: demicm.bool, dirtyVal: [true], readOnly: false},
noHref: {type: 'boolean', normalVal: demicm.bool, dirtyVal: [false], readOnly: false},
willValidate: {type: 'boolean', normalVal: demicm.bool, dirtyVal: [true], readOnly: false},
disabled: {type: 'boolean', normalVal: demicm.bool, dirtyVal: [false], readOnly: false},
autofocus: {type: 'boolean', normalVal: demicm.bool, dirtyVal: [true], readOnly: false},
open: {type: 'boolean', normalVal: demicm.bool, dirtyVal: [true], readOnly: false},
compact: {type: 'boolean', normalVal: demicm.bool, dirtyVal: [true], readOnly: false},
noValidate: {type: 'boolean', normalVal: demicm.bool, dirtyVal: [true], readOnly: false},
noShade: {type: 'boolean', normalVal: demicm.bool, dirtyVal: [true], readOnly: false},
complete: {type: 'boolean', normalVal: demicm.bool, dirtyVal: [false], readOnly: true},
isMap: {type: 'boolean', normalVal: demicm.bool, dirtyVal: [true], readOnly: false},
incremental: {type: 'boolean', normalVal: demicm.bool, dirtyVal: [true], readOnly: false},
required: {type: 'boolean', normalVal: demicm.bool, dirtyVal: [false], readOnly: false},
readOnly: {type: 'boolean', normalVal: demicm.bool, dirtyVal: [false], readOnly: false},
multiple: {type: 'boolean', normalVal: demicm.bool, dirtyVal: [true], readOnly: false},
indeterminate: {type: 'boolean', normalVal: demicm.bool, dirtyVal: [false], readOnly: false},
checked: {type: 'boolean', normalVal: demicm.bool, dirtyVal: [true], readOnly: false},
defaultChecked: {type: 'boolean', normalVal: demicm.bool, dirtyVal: [true], readOnly: false},
declare: {type: 'boolean', normalVal: demicm.bool, dirtyVal: [true], readOnly: false},
reversed: {type: 'boolean', normalVal: demicm.bool, dirtyVal: [true], readOnly: false},
selected: {type: 'boolean', normalVal: demicm.bool, dirtyVal: [true], readOnly: false},
defaultSelected: {type: 'boolean', normalVal: demicm.bool, dirtyVal: [true], readOnly: false},
defer: {type: 'boolean', normalVal: demicm.bool, dirtyVal: [true], readOnly: false},
async: {type: 'boolean', normalVal: demicm.bool, dirtyVal: [true], readOnly: false},
// number type
border: {type: 'number', normalVal: demicm.normalNum, dirtyVal: demicm.dirtyNum, readOnly: false},
tabIndex: {type: 'number', normalVal: demicm.normalNum, dirtyVal: demicm.dirtyNum, readOnly: false},
childElementCount: {type: 'number', normalVal: demicm.normalNum, dirtyVal: demicm.dirtyNum, readOnly: true},
scrollHeight: {type: 'number', normalVal: demicm.normalNum, dirtyVal: demicm.dirtyNum, readOnly: false},
scrollWidth: {type: 'number', normalVal: demicm.normalNum, dirtyVal: demicm.dirtyNum, readOnly: false},
scrollTop: {type: 'number', normalVal: demicm.normalNum, dirtyVal: demicm.dirtyNum, readOnly: false},
scrollLeft: {type: 'number', normalVal: demicm.normalNum, dirtyVal: demicm.dirtyNum, readOnly: false},
scrollamount: {type: 'number', normalVal: demicm.normalNum, dirtyVal: demicm.dirtyNum, readOnly: false},
scrolldelay: {type: 'number', normalVal: demicm.normalNum, dirtyVal: demicm.dirtyNum, readOnly: false},
clientHeight: {type: 'number', normalVal: demicm.normalNum, dirtyVal: demicm.dirtyNum, readOnly: false},
clientWidth: {type: 'number', normalVal: demicm.normalNum, dirtyVal: demicm.dirtyNum, readOnly: false},
clientTop: {type: 'number', normalVal: demicm.normalNum, dirtyVal: demicm.dirtyNum, readOnly: false},
clientLeft: {type: 'number', normalVal: demicm.normalNum, dirtyVal: demicm.dirtyNum, readOnly: false},
offsetHeight: {type: 'number', normalVal: demicm.normalNum, dirtyVal: demicm.dirtyNum, readOnly: false},
offsetWidth: {type: 'number', normalVal: demicm.normalNum, dirtyVal: demicm.dirtyNum, readOnly: false},
offsetTop: {type: 'number', normalVal: demicm.normalNum, dirtyVal: demicm.dirtyNum, readOnly: false},
offsetLeft: {type: 'number', normalVal: demicm.normalNum, dirtyVal: demicm.dirtyNum, readOnly: false},
height: {type: 'number', normalVal: demicm.normalNumPct, dirtyVal: demicm.dirtyNumPct, readOnly: false},
width: {type: 'number', normalVal: demicm.normalNum, dirtyVal: demicm.dirtyNum, readOnly: false},
naturalWidth: {type: 'number', normalVal: demicm.normalNum, dirtyVal: demicm.dirtyNum, readOnly: false},
naturalHeight: {type: 'number', normalVal: demicm.normalNum, dirtyVal: demicm.dirtyNum, readOnly: false},
videoHeight: {type: 'number', normalVal: demicm.normalNum, dirtyVal: demicm.dirtyNum, readOnly: false},
videoWidth: {type: 'number', normalVal: demicm.normalNum, dirtyVal: demicm.dirtyNum, readOnly: false},
marginWidth: {type: 'number', normalVal: demicm.normalNum, dirtyVal: demicm.dirtyNum, readOnly: false},
marginHeight: {type: 'number', normalVal: demicm.normalNum, dirtyVal: demicm.dirtyNum, readOnly: false},
min: {type: 'number', normalVal: demicm.normalNum, dirtyVal: demicm.dirtyNum, readOnly: false},
maxLength: {type: 'number', normalVal: [100, 200, 300], dirtyVal: demicm.dirtyNum, readOnly: false},
max: {type: 'number', normalVal: [100, 200, 300], dirtyVal: demicm.dirtyNum, readOnly: false},
nodeType: {type: 'number', normalVal: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], dirtyVal: demicm.dirtyNum, readOnly: false},
optimum: {type: 'number', normalVal: [5, 10, 15], dirtyVal: demicm.dirtyNum, readOnly: false},
high: {type: 'number', normalVal: [20, 40], dirtyVal: demicm.dirtyNum, readOnly: false},
low: {type: 'number', normalVal: [1, 5], dirtyVal: demicm.dirtyNum, readOnly: false},
span: {type: 'number', normalVal: [1, 5, 10], dirtyVal: demicm.dirtyNum, readOnly: false},
chOff: {type: 'number', normalVal: [1, 5, 10], dirtyVal: demicm.dirtyNum, readOnly: false},
length: {type: 'number', normalVal: [128, 256], dirtyVal: demicm.dirtyNum, readOnly: false},
size: {type: 'number', normalVal: [50, 100], dirtyVal: demicm.dirtyNum, readOnly: false},
y: {type: 'number', normalVal: demicm.normalNum, dirtyVal: demicm.dirtyNum, readOnly: false},
x: {type: 'number', normalVal: demicm.normalNum, dirtyVal: demicm.dirtyNum, readOnly: false},
vspace: {type: 'number', normalVal: demicm.normalNum, dirtyVal: demicm.dirtyNum, readOnly: false},
hspace: {type: 'number', normalVal: demicm.normalNum, dirtyVal: demicm.dirtyNum, readOnly: false},
selectionEnd: {type: 'number', normalVal: demicm.normalNum, dirtyVal: demicm.dirtyNum, readOnly: false},
selectionStart: {type: 'number', normalVal: demicm.normalNum, dirtyVal: demicm.dirtyNum, readOnly: false},
valueAsNumber: {type: 'number', normalVal: demicm.normalNum, dirtyVal: demicm.dirtyNum, readOnly: false},
step: {type: 'number', normalVal: [-3, 0, 3, 6], dirtyVal: demicm.dirtyNum, readOnly: false},
start: {type: 'number', normalVal: demicm.normalNum, dirtyVal: demicm.dirtyNum, readOnly: false},
index: {type: 'number', normalVal: demicm.normalNum, dirtyVal: demicm.dirtyNum, readOnly: false},
textLength: {type: 'number', normalVal: [128, 256], dirtyVal: demicm.dirtyNum, readOnly: false},
rows: {type: 'number', normalVal: demicm.normalNumPctStar, dirtyVal: demicm.dirtyNum, readOnly: false},
cols: {type: 'number', normalVal: demicm.normalNumPctStar, dirtyVal: demicm.dirtyNum, readOnly: false},
rowSpan: {type: 'number', normalVal: [1, 5, 10], dirtyVal: demicm.dirtyNum, readOnly: false},
colSpan: {type: 'number', normalVal: [1, 5, 10], dirtyVal: demicm.dirtyNum, readOnly: false},
// webkit special
webkitDisplayingFullscreen: {type: 'boolean', normalVal: demicm.bool, dirtyVal: [], readOnly: false},
webkitSupportsFullscreen: {type: 'boolean', normalVal: demicm.bool, dirtyVal: [], readOnly: false},
webkitClosedCaptionsVisible: {type: 'boolean', normalVal: demicm.bool, dirtyVal: [], readOnly: false},
webkitHasClosedCaptions: {type: 'boolean', normalVal: demicm.bool, dirtyVal: [], readOnly: false},
webkitPreservesPitch: {type: 'boolean', normalVal: demicm.bool, dirtyVal: [], readOnly: false},
webkitGrammar: {type: 'boolean', normalVal: demicm.bool, dirtyVal: [], readOnly: false},
webkitSpeech: {type: 'boolean', normalVal: demicm.bool, dirtyVal: [], readOnly: false},
webkitdirectory: {type: 'boolean', normalVal: demicm.bool, dirtyVal: [], readOnly: false},
webkitDroppedFrameCount: {type: 'number', normalVal: demicm.normalNum, dirtyVal: demicm.dirtyNum, readOnly: false},
webkitDecodedFrameCount: {type: 'number', normalVal: demicm.normalNum, dirtyVal: demicm.dirtyNum, readOnly: false},
webkitVideoDecodedByteCount: {type: 'number', normalVal: demicm.normalNum, dirtyVal: demicm.dirtyNum, readOnly: false},
webkitAudioDecodedByteCount: {type: 'number', normalVal: demicm.normalNum, dirtyVal: demicm.dirtyNum, readOnly: false},
webkitdropzone: {type: 'string', normalVal: [], dirtyVal: demicm.dirtyStr, readOnly: false},
webkitPseudo: {type: 'string', normalVal: [], dirtyVal: demicm.dirtyStr, readOnly: false},
webkitShadowRoot: {type: 'object', normalVal: [], dirtyVal: [], readOnly: false},
webkitFullscreenElement: {type: 'object', normalVal: [], dirtyVal: [], readOnly: false},
webkitFullscreenEnabled: {type: 'boolean', normalVal: demicm.bool, dirtyVal: [], readOnly: false},
webkitCurrentFullScreenElement: {type: 'object', normalVal: [], dirtyVal: [], readOnly: false},
webkitNotifications: {type: 'object', normalVal: [], dirtyVal: [], readOnly: false},
webkitFullScreenKeyboardInputAllowed: {type: 'boolean', normalVal: demicm.bool, dirtyVal: [], readOnly: false},
webkitHidden: {type: 'boolean', normalVal: demicm.bool, dirtyVal: [], readOnly: false},
webkitPointerLockElement: {type: 'object', normalVal: [], dirtyVal: [], readOnly: false},
webkitIsFullScreen: {type: 'boolean', normalVal: demicm.bool, dirtyVal: [], readOnly: false},
onwebkitneedkey: {type: 'object', normalVal: [], dirtyVal: [], readOnly: false},
onwebkitkeymessage: {type: 'object', normalVal: [], dirtyVal: [], readOnly: false},
onwebkitkeyerror: {type: 'object', normalVal: [], dirtyVal: [], readOnly: false},
onwebkitkeyadded: {type: 'object', normalVal: [], dirtyVal: [], readOnly: false},
webkitEntries: {type: 'object', normalVal: [], dirtyVal: [], readOnly: false},
webkitStorageInfo: {type: 'objectSto', normalVal: [], dirtyVal: [], readOnly: false},
// Enumeration
ALLOW_KEYBOARD_INPUT: {type: 'number', normalVal: [], dirtyVal: [], readOnly: true},
ELEMENT_NODE: {type: 'number', normalVal: [], dirtyVal: [], readOnly: true},
ATTRIBUTE_NODE: {type: 'number', normalVal: [], dirtyVal: [], readOnly: true},
TEXT_NODE: {type: 'number', normalVal: [], dirtyVal: [], readOnly: true},
CDATA_SECTION_NODE: {type: 'number', normalVal: [], dirtyVal: [], readOnly: true},
ENTITY_REFERENCE_NODE: {type: 'number', normalVal: [], dirtyVal: [], readOnly: true},
ENTITY_NODE: {type: 'number', normalVal: [], dirtyVal: [], readOnly: true},
PROCESSING_INSTRUCTION_NODE: {type: 'number', normalVal: [], dirtyVal: [], readOnly: true},
COMMENT_NODE: {type: 'number', normalVal: [], dirtyVal: [], readOnly: true},
DOCUMENT_NODE: {type: 'number', normalVal: [], dirtyVal: [], readOnly: true},
DOCUMENT_TYPE_NODE: {type: 'number', normalVal: [], dirtyVal: [], readOnly: true},
DOCUMENT_FRAGMENT_NODE: {type: 'number', normalVal: [], dirtyVal: [], readOnly: true},
NOTATION_NODE: {type: 'number', normalVal: [], dirtyVal: [], readOnly: true},
DOCUMENT_POSITION_DISCONNECTED: {type: 'number', normalVal: [], dirtyVal: [], readOnly: true},
DOCUMENT_POSITION_PRECEDING: {type: 'number', normalVal: [], dirtyVal: [], readOnly: true},
DOCUMENT_POSITION_FOLLOWING: {type: 'number', normalVal: [], dirtyVal: [], readOnly: true},
DOCUMENT_POSITION_CONTAINS: {type: 'number', normalVal: [], dirtyVal: [], readOnly: true},
DOCUMENT_POSITION_CONTAINED_BY: {type: 'number', normalVal: [], dirtyVal: [], readOnly: true},
DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: {type: 'number', normalVal: [], dirtyVal: [], readOnly: true},
NETWORK_EMPTY: {type: 'number', normalVal: [], dirtyVal: [], readOnly: true},
NETWORK_IDLE: {type: 'number', normalVal: [], dirtyVal: [], readOnly: true},
NETWORK_LOADING: {type: 'number', normalVal: [], dirtyVal: [], readOnly: true},
NETWORK_NO_SOURCE: {type: 'number', normalVal: [], dirtyVal: [], readOnly: true},
HAVE_NOTHING: {type: 'number', normalVal: [], dirtyVal: [], readOnly: true},
HAVE_METADATA: {type: 'number', normalVal: [], dirtyVal: [], readOnly: true},
HAVE_CURRENT_DATA: {type: 'number', normalVal: [], dirtyVal: [], readOnly: true},
HAVE_FUTURE_DATA: {type: 'number', normalVal: [], dirtyVal: [], readOnly: true},
HAVE_ENOUGH_DATA: {type: 'number', normalVal: [], dirtyVal: [], readOnly: true},
NONE: {type: 'number', normalVal: [], dirtyVal: [], readOnly: true},
LOADING: {type: 'number', normalVal: [], dirtyVal: [], readOnly: true},
LOADED: {type: 'number', normalVal: [], dirtyVal: [], readOnly: true},
ERROR: {type: 'number', normalVal: [], dirtyVal: [], readOnly: true},
};