OLD | NEW |
1 { | 1 { |
2 "version": 3, | 2 "version": 3, |
3 "file": "platform.concat.js", | 3 "file": "platform.concat.js", |
4 "sources": [ | 4 "sources": [ |
5 "build/boot.js", | 5 "build/boot.js", |
6 "../WeakMap/weakmap.js", | 6 "../WeakMap/weakmap.js", |
7 "build/if-poly.js", | 7 "build/if-poly.js", |
8 "../observe-js/src/observe.js", | 8 "../observe-js/src/observe.js", |
9 "../ShadowDOM/src/wrappers.js", | 9 "../ShadowDOM/src/wrappers.js", |
10 "../ShadowDOM/src/microtask.js", | 10 "../ShadowDOM/src/microtask.js", |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
71 "../CustomElements/src/scope.js", | 71 "../CustomElements/src/scope.js", |
72 "../CustomElements/src/Observer.js", | 72 "../CustomElements/src/Observer.js", |
73 "../CustomElements/src/CustomElements.js", | 73 "../CustomElements/src/CustomElements.js", |
74 "../CustomElements/src/Parser.js", | 74 "../CustomElements/src/Parser.js", |
75 "../CustomElements/src/boot.js", | 75 "../CustomElements/src/boot.js", |
76 "src/patches-custom-elements.js", | 76 "src/patches-custom-elements.js", |
77 "src/unresolved.js", | 77 "src/unresolved.js", |
78 "src/module.js" | 78 "src/module.js" |
79 ], | 79 ], |
80 "names": [], | 80 "names": [], |
81 "mappings": "AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;A;AClEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;A;AC5CA;AACA;A;ACDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;A;AC9rDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;A;AC/ZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;A;ACxXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;A;AChFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACv4BA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AC7HA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACjDA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACdA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AC/tBA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AC7QA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AC1EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;A;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;A;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;A;ACjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACrJA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;A;ACtUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;A;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACxCA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;A
ClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AC1CA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;A;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;A;ACxEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACvBA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;A;AC3CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;A;AC9DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AC/DA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACpCA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;A;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;A;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;
AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AC7CA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;A;ACnEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACzCA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;A;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;A;AChGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACvBA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AC5EA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACnpBA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;A;ACrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACpEA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AC5UA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;A;ACvFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACzBA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AC7BA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AC3GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACjGA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;A;AC3wBA,Q;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;A;AC3BA,C;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACjkBA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;A;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACxFA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AC
jiBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sD;ACRA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uB;ACjMA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AC/KA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;A;ACrUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;
AC3LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACtEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACjCA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA,4D;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AC1
VA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AC5dA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
,0B;AClEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACtEA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AChCA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AC9BA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;A", | 81 "mappings": "AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;A;AClEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;A;AC5CA;AACA;A;ACDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;A;AC9rDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;A
CxaA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;A;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACxXA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AChFA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;A;ACv4BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;A;AC7HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;A;ACjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;A;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;A;AC/tBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;A;AC7QA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;A;AC1EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AC
7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACzCA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACjDA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;A;ACrJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACtUA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AC/BA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;A;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;A;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;
AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACxEA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;A;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AC3CA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AC9DA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;A;ACjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;A;AC/DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACpCA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AC9BA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACnEA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;A;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACnDA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AChGA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;A;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;A;AC5EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACnpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACrDA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;A;ACpEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;A;AC5UA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACvFA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;A;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;A;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
;AC3GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;A;ACjGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AC3
wBA,Q;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AC3BA,C;ACAA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;A;ACjkBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACzBA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;A;ACxFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACjiBA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA,sD;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA,uB;ACjMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC
A;AACA;AACA;AACA;AACA;AACA;A;AC/KA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;ACrUA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AC3LA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;A;ACtEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;A;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4D;ACRA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;AC1VA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;A;AC5dA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0B;AClEA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
AACA;A;ACtEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA
CA;AACA;AACA;A;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
;AACA;AACA;A;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A
ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A", |
82 "sourcesContent": [ | 82 "sourcesContent": [ |
83 "/**\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved
.\n * This code may only be used under the BSD style license found at http://pol
ymer.github.io/LICENSE.txt\n * The complete set of authors may be found at http:
//polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be foun
d at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as
part of the polymer project is also\n * subject to an additional IP rights gran
t found at http://polymer.github.io/PATENTS.txt\n */\n\nwindow.Platform = window
.Platform || {};\n// prepopulate window.logFlags if necessary\nwindow.logFlags =
window.logFlags || {};\n// process flags\n(function(scope){\n // import\n var
flags = scope.flags || {};\n // populate flags from location\n location.searc
h.slice(1).split('&').forEach(function(o) {\n o = o.split('=');\n o[0] &&
(flags[o[0]] = o[1] || true);\n });\n var entryPoint = document.currentScript
||\n document.querySelector('script[src*=\"platform.js\"]');\n if (entryPo
int) {\n var a = entryPoint.attributes;\n for (var i = 0, n; i < a.length;
i++) {\n n = a[i];\n if (n.name !== 'src') {\n flags[n.name] =
n.value || true;\n }\n }\n }\n if (flags.log) {\n flags.log.split(
',').forEach(function(f) {\n window.logFlags[f] = true;\n });\n }\n //
If any of these flags match 'native', then force native ShadowDOM; any\n // ot
her truthy value, or failure to detect native\n // ShadowDOM, results in polyfi
ll\n flags.shadow = flags.shadow || flags.shadowdom || flags.polyfill;\n if (f
lags.shadow === 'native') {\n flags.shadow = false;\n } else {\n flags.sh
adow = flags.shadow || !HTMLElement.prototype.createShadowRoot;\n }\n\n if (fl
ags.shadow && document.querySelectorAll('script').length > 1) {\n console.war
n('platform.js is not the first script on the page. ' +\n 'See http://www
.polymer-project.org/docs/start/platform.html#setup ' +\n 'for details.')
;\n }\n\n // CustomElements polyfill flag\n if (flags.register) {\n window
.CustomElements = window.CustomElements || {flags: {}};\n window.CustomElemen
ts.flags.register = flags.register;\n }\n\n if (flags.imports) {\n window.H
TMLImports = window.HTMLImports || {flags: {}};\n window.HTMLImports.flags.im
ports = flags.imports;\n }\n\n // export\n scope.flags = flags;\n})(Platform)
;\n", | 83 "/**\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved
.\n * This code may only be used under the BSD style license found at http://pol
ymer.github.io/LICENSE.txt\n * The complete set of authors may be found at http:
//polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be foun
d at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as
part of the polymer project is also\n * subject to an additional IP rights gran
t found at http://polymer.github.io/PATENTS.txt\n */\n\nwindow.Platform = window
.Platform || {};\n// prepopulate window.logFlags if necessary\nwindow.logFlags =
window.logFlags || {};\n// process flags\n(function(scope){\n // import\n var
flags = scope.flags || {};\n // populate flags from location\n location.searc
h.slice(1).split('&').forEach(function(o) {\n o = o.split('=');\n o[0] &&
(flags[o[0]] = o[1] || true);\n });\n var entryPoint = document.currentScript
||\n document.querySelector('script[src*=\"platform.js\"]');\n if (entryPo
int) {\n var a = entryPoint.attributes;\n for (var i = 0, n; i < a.length;
i++) {\n n = a[i];\n if (n.name !== 'src') {\n flags[n.name] =
n.value || true;\n }\n }\n }\n if (flags.log) {\n flags.log.split(
',').forEach(function(f) {\n window.logFlags[f] = true;\n });\n }\n //
If any of these flags match 'native', then force native ShadowDOM; any\n // ot
her truthy value, or failure to detect native\n // ShadowDOM, results in polyfi
ll\n flags.shadow = flags.shadow || flags.shadowdom || flags.polyfill;\n if (f
lags.shadow === 'native') {\n flags.shadow = false;\n } else {\n flags.sh
adow = flags.shadow || !HTMLElement.prototype.createShadowRoot;\n }\n\n if (fl
ags.shadow && document.querySelectorAll('script').length > 1) {\n console.war
n('platform.js is not the first script on the page. ' +\n 'See http://www
.polymer-project.org/docs/start/platform.html#setup ' +\n 'for details.')
;\n }\n\n // CustomElements polyfill flag\n if (flags.register) {\n window
.CustomElements = window.CustomElements || {flags: {}};\n window.CustomElemen
ts.flags.register = flags.register;\n }\n\n if (flags.imports) {\n window.H
TMLImports = window.HTMLImports || {flags: {}};\n window.HTMLImports.flags.im
ports = flags.imports;\n }\n\n // export\n scope.flags = flags;\n})(Platform)
;\n", |
84 "/*\n * Copyright 2012 The Polymer Authors. All rights reserved.\n * Use of
this source code is governed by a BSD-style\n * license that can be found in the
LICENSE file.\n */\n\nif (typeof WeakMap === 'undefined') {\n (function() {\n
var defineProperty = Object.defineProperty;\n var counter = Date.now() % 1
e9;\n\n var WeakMap = function() {\n this.name = '__st' + (Math.random()
* 1e9 >>> 0) + (counter++ + '__');\n };\n\n WeakMap.prototype = {\n
set: function(key, value) {\n var entry = key[this.name];\n if (en
try && entry[0] === key)\n entry[1] = value;\n else\n d
efineProperty(key, this.name, {value: [key, value], writable: true});\n },\
n get: function(key) {\n var entry;\n return (entry = key[thi
s.name]) && entry[0] === key ?\n entry[1] : undefined;\n },\n
delete: function(key) {\n var entry = key[this.name];\n if (!en
try) return false;\n var hasValue = entry[0] === key;\n entry[0] =
entry[1] = undefined;\n return hasValue;\n },\n has: function(
key) {\n var entry = key[this.name];\n if (!entry) return false;\n
return entry[0] === key;\n }\n };\n\n window.WeakMap = WeakMa
p;\n })();\n}\n", | 84 "/*\n * Copyright 2012 The Polymer Authors. All rights reserved.\n * Use of
this source code is governed by a BSD-style\n * license that can be found in the
LICENSE file.\n */\n\nif (typeof WeakMap === 'undefined') {\n (function() {\n
var defineProperty = Object.defineProperty;\n var counter = Date.now() % 1
e9;\n\n var WeakMap = function() {\n this.name = '__st' + (Math.random()
* 1e9 >>> 0) + (counter++ + '__');\n };\n\n WeakMap.prototype = {\n
set: function(key, value) {\n var entry = key[this.name];\n if (en
try && entry[0] === key)\n entry[1] = value;\n else\n d
efineProperty(key, this.name, {value: [key, value], writable: true});\n },\
n get: function(key) {\n var entry;\n return (entry = key[thi
s.name]) && entry[0] === key ?\n entry[1] : undefined;\n },\n
delete: function(key) {\n var entry = key[this.name];\n if (!en
try) return false;\n var hasValue = entry[0] === key;\n entry[0] =
entry[1] = undefined;\n return hasValue;\n },\n has: function(
key) {\n var entry = key[this.name];\n if (!entry) return false;\n
return entry[0] === key;\n }\n };\n\n window.WeakMap = WeakMa
p;\n })();\n}\n", |
85 "// select ShadowDOM impl\r\nif (Platform.flags.shadow) {\r\n", | 85 "// select ShadowDOM impl\r\nif (Platform.flags.shadow) {\r\n", |
86 "// Copyright 2012 Google Inc.\n//\n// Licensed under the Apache License, Ve
rsion 2.0 (the \"License\");\n// you may not use this file except in compliance
with the License.\n// You may obtain a copy of the License at\n//\n// http:/
/www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law o
r agreed to in writing, software\n// distributed under the License is distribute
d on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, eithe
r express or implied.\n// See the License for the specific language governing pe
rmissions and\n// limitations under the License.\n\n(function(global) {\n 'use
strict';\n\n var testingExposeCycleCount = global.testingExposeCycleCount;\n\n
// Detect and do basic sanity checking on Object/Array.observe.\n function det
ectObjectObserve() {\n if (typeof Object.observe !== 'function' ||\n t
ypeof Array.observe !== 'function') {\n return false;\n }\n\n var rec
ords = [];\n\n function callback(recs) {\n records = recs;\n }\n\n
var test = {};\n var arr = [];\n Object.observe(test, callback);\n Arr
ay.observe(arr, callback);\n test.id = 1;\n test.id = 2;\n delete test.
id;\n arr.push(1, 2);\n arr.length = 0;\n\n Object.deliverChangeRecords
(callback);\n if (records.length !== 5)\n return false;\n\n if (recor
ds[0].type != 'add' ||\n records[1].type != 'update' ||\n records[
2].type != 'delete' ||\n records[3].type != 'splice' ||\n records[
4].type != 'splice') {\n return false;\n }\n\n Object.unobserve(test,
callback);\n Array.unobserve(arr, callback);\n\n return true;\n }\n\n v
ar hasObserve = detectObjectObserve();\n\n function detectEval() {\n // Don'
t test for eval if we're running in a Chrome App environment.\n // We check f
or APIs set that only exist in a Chrome App context.\n if (typeof chrome !==
'undefined' && chrome.app && chrome.app.runtime) {\n return false;\n }\n
\n // Firefox OS Apps do not allow eval. This feature detection is very hacky
\n // but even if some other platform adds support for this function this cod
e\n // will continue to work.\n if (navigator.getDeviceStorage) {\n r
eturn false;\n }\n\n try {\n var f = new Function('', 'return true;')
;\n return f();\n } catch (ex) {\n return false;\n }\n }\n\n v
ar hasEval = detectEval();\n\n function isIndex(s) {\n return +s === s >>> 0
;\n }\n\n function toNumber(s) {\n return +s;\n }\n\n function isObject(o
bj) {\n return obj === Object(obj);\n }\n\n var numberIsNaN = global.Number
.isNaN || function(value) {\n return typeof value === 'number' && global.isNa
N(value);\n }\n\n function areSameValue(left, right) {\n if (left === right
)\n return left !== 0 || 1 / left === 1 / right;\n if (numberIsNaN(left)
&& numberIsNaN(right))\n return true;\n\n return left !== left && right
!== right;\n }\n\n var createObject = ('__proto__' in {}) ?\n function(obj
) { return obj; } :\n function(obj) {\n var proto = obj.__proto__;\n
if (!proto)\n return obj;\n var newObject = Object.create(proto);\
n Object.getOwnPropertyNames(obj).forEach(function(name) {\n Object.
defineProperty(newObject, name,\n Object.getOwnPrope
rtyDescriptor(obj, name));\n });\n return newObject;\n };\n\n var
identStart = '[\\$_a-zA-Z]';\n var identPart = '[\\$_a-zA-Z0-9]';\n var identR
egExp = new RegExp('^' + identStart + '+' + identPart + '*' + '$');\n\n functio
n getPathCharType(char) {\n if (char === undefined)\n return 'eof';\n\n
var code = char.charCodeAt(0);\n\n switch(code) {\n case 0x5B: // [\n
case 0x5D: // ]\n case 0x2E: // .\n case 0x22: // \"\n case
0x27: // '\n case 0x30: // 0\n return char;\n\n case 0x5F: //
_\n case 0x24: // $\n return 'ident';\n\n case 0x20: // Space\n
case 0x09: // Tab\n case 0x0A: // Newline\n case 0x0D: // Return
\n case 0xA0: // No-break space\n case 0xFEFF: // Byte Order Mark\n
case 0x2028: // Line Separator\n case 0x2029: // Paragraph Separator
\n return 'ws';\n }\n\n // a-z, A-Z\n if ((0x61 <= code && code
<= 0x7A) || (0x41 <= code && code <= 0x5A))\n return 'ident';\n\n // 1-9
\n if (0x31 <= code && code <= 0x39)\n return 'number';\n\n return 'e
lse';\n }\n\n var pathStateMachine = {\n 'beforePath': {\n 'ws': ['bef
orePath'],\n 'ident': ['inIdent', 'append'],\n '[': ['beforeElement'],
\n 'eof': ['afterPath']\n },\n\n 'inPath': {\n 'ws': ['inPath'],
\n '.': ['beforeIdent'],\n '[': ['beforeElement'],\n 'eof': ['aft
erPath']\n },\n\n 'beforeIdent': {\n 'ws': ['beforeIdent'],\n 'i
dent': ['inIdent', 'append']\n },\n\n 'inIdent': {\n 'ident': ['inIde
nt', 'append'],\n '0': ['inIdent', 'append'],\n 'number': ['inIdent',
'append'],\n 'ws': ['inPath', 'push'],\n '.': ['beforeIdent', 'push'],
\n '[': ['beforeElement', 'push'],\n 'eof': ['afterPath', 'push']\n
},\n\n 'beforeElement': {\n 'ws': ['beforeElement'],\n '0': ['afte
rZero', 'append'],\n 'number': ['inIndex', 'append'],\n \"'\": ['inSin
gleQuote', 'append', ''],\n '\"': ['inDoubleQuote', 'append', '']\n },\n
\n 'afterZero': {\n 'ws': ['afterElement', 'push'],\n ']': ['inPath
', 'push']\n },\n\n 'inIndex': {\n '0': ['inIndex', 'append'],\n
'number': ['inIndex', 'append'],\n 'ws': ['afterElement'],\n ']': ['i
nPath', 'push']\n },\n\n 'inSingleQuote': {\n \"'\": ['afterElement']
,\n 'eof': ['error'],\n 'else': ['inSingleQuote', 'append']\n },\n\
n 'inDoubleQuote': {\n '\"': ['afterElement'],\n 'eof': ['error'],\
n 'else': ['inDoubleQuote', 'append']\n },\n\n 'afterElement': {\n
'ws': ['afterElement'],\n ']': ['inPath', 'push']\n }\n }\n\n funct
ion noop() {}\n\n function parsePath(path) {\n var keys = [];\n var index
= -1;\n var c, newChar, key, type, transition, action, typeMap, mode = 'befo
rePath';\n\n var actions = {\n push: function() {\n if (key === u
ndefined)\n return;\n\n keys.push(key);\n key = undefined
;\n },\n\n append: function() {\n if (key === undefined)\n
key = newChar\n else\n key += newChar;\n }\n };\n\n
function maybeUnescapeQuote() {\n if (index >= path.length)\n re
turn;\n\n var nextChar = path[index + 1];\n if ((mode == 'inSingleQuot
e' && nextChar == \"'\") ||\n (mode == 'inDoubleQuote' && nextChar == '
\"')) {\n index++;\n newChar = nextChar;\n actions.append()
;\n return true;\n }\n }\n\n while (mode) {\n index++;\n
c = path[index];\n\n if (c == '\\\\' && maybeUnescapeQuote(mode))\n
continue;\n\n type = getPathCharType(c);\n typeMap = pathStateMac
hine[mode];\n transition = typeMap[type] || typeMap['else'] || 'error';\n\n
if (transition == 'error')\n return; // parse error;\n\n mode
= transition[0];\n action = actions[transition[1]] || noop;\n newChar
= transition[2] === undefined ? c : transition[2];\n action();\n\n if
(mode === 'afterPath') {\n return keys;\n }\n }\n\n return; //
parse error\n }\n\n function isIdent(s) {\n return identRegExp.test(s);\n
}\n\n var constructorIsPrivate = {};\n\n function Path(parts, privateToken) {
\n if (privateToken !== constructorIsPrivate)\n throw Error('Use Path.ge
t to retrieve path objects');\n\n for (var i = 0; i < parts.length; i++) {\n
this.push(String(parts[i]));\n }\n\n if (hasEval && this.length) {\n
this.getValueFrom = this.compiledGetValueFromFn();\n }\n }\n\n // TODO
(rafaelw): Make simple LRU cache\n var pathCache = {};\n\n function getPath(pa
thString) {\n if (pathString instanceof Path)\n return pathString;\n\n
if (pathString == null || pathString.length == 0)\n pathString = '';\n\n
if (typeof pathString != 'string') {\n if (isIndex(pathString.length)) {
\n // Constructed with array-like (pre-parsed) keys\n return new P
ath(pathString, constructorIsPrivate);\n }\n\n pathString = String(pat
hString);\n }\n\n var path = pathCache[pathString];\n if (path)\n
return path;\n\n var parts = parsePath(pathString);\n if (!parts)\n r
eturn invalidPath;\n\n var path = new Path(parts, constructorIsPrivate);\n
pathCache[pathString] = path;\n return path;\n }\n\n Path.get = getPath;\n
\n function formatAccessor(key) {\n if (isIndex(key)) {\n return '[' +
key + ']';\n } else {\n return '[\"' + key.replace(/\"/g, '\\\\\"') + '\
"]';\n }\n }\n\n Path.prototype = createObject({\n __proto__: [],\n v
alid: true,\n\n toString: function() {\n var pathString = '';\n for
(var i = 0; i < this.length; i++) {\n var key = this[i];\n if (is
Ident(key)) {\n pathString += i ? '.' + key : key;\n } else {\n
pathString += formatAccessor(key);\n }\n }\n\n return
pathString;\n },\n\n getValueFrom: function(obj, directObserver) {\n
for (var i = 0; i < this.length; i++) {\n if (obj == null)\n ret
urn;\n obj = obj[this[i]];\n }\n return obj;\n },\n\n ite
rateObjects: function(obj, observe) {\n for (var i = 0; i < this.length; i+
+) {\n if (i)\n obj = obj[this[i - 1]];\n if (!isObject(o
bj))\n return;\n observe(obj, this[0]);\n }\n },\n\n
compiledGetValueFromFn: function() {\n var str = '';\n var pathString
= 'obj';\n str += 'if (obj != null';\n var i = 0;\n var key;\n
for (; i < (this.length - 1); i++) {\n key = this[i];\n pathStr
ing += isIdent(key) ? '.' + key : formatAccessor(key);\n str += ' &&\\n
' + pathString + ' != null';\n }\n str += ')\\n';\n\n var key
= this[i];\n pathString += isIdent(key) ? '.' + key : formatAccessor(key);\
n\n str += ' return ' + pathString + ';\\nelse\\n return undefined;';\n
return new Function('obj', str);\n },\n\n setValueFrom: function(obj,
value) {\n if (!this.length)\n return false;\n\n for (var i = 0
; i < this.length - 1; i++) {\n if (!isObject(obj))\n return fal
se;\n obj = obj[this[i]];\n }\n\n if (!isObject(obj))\n
return false;\n\n obj[this[i]] = value;\n return true;\n }\n });\n
\n var invalidPath = new Path('', constructorIsPrivate);\n invalidPath.valid =
false;\n invalidPath.getValueFrom = invalidPath.setValueFrom = function() {};\
n\n var MAX_DIRTY_CHECK_CYCLES = 1000;\n\n function dirtyCheck(observer) {\n
var cycles = 0;\n while (cycles < MAX_DIRTY_CHECK_CYCLES && observer.check_
()) {\n cycles++;\n }\n if (testingExposeCycleCount)\n global.di
rtyCheckCycleCount = cycles;\n\n return cycles > 0;\n }\n\n function object
IsEmpty(object) {\n for (var prop in object)\n return false;\n return
true;\n }\n\n function diffIsEmpty(diff) {\n return objectIsEmpty(diff.add
ed) &&\n objectIsEmpty(diff.removed) &&\n objectIsEmpty(diff
.changed);\n }\n\n function diffObjectFromOldObject(object, oldObject) {\n
var added = {};\n var removed = {};\n var changed = {};\n\n for (var pr
op in oldObject) {\n var newValue = object[prop];\n\n if (newValue !==
undefined && newValue === oldObject[prop])\n continue;\n\n if (!(pr
op in object)) {\n removed[prop] = undefined;\n continue;\n }
\n\n if (newValue !== oldObject[prop])\n changed[prop] = newValue;\n
}\n\n for (var prop in object) {\n if (prop in oldObject)\n c
ontinue;\n\n added[prop] = object[prop];\n }\n\n if (Array.isArray(ob
ject) && object.length !== oldObject.length)\n changed.length = object.leng
th;\n\n return {\n added: added,\n removed: removed,\n changed
: changed\n };\n }\n\n var eomTasks = [];\n function runEOMTasks() {\n
if (!eomTasks.length)\n return false;\n\n for (var i = 0; i < eomTasks.l
ength; i++) {\n eomTasks[i]();\n }\n eomTasks.length = 0;\n return
true;\n }\n\n var runEOM = hasObserve ? (function(){\n var eomObj = { ping
Pong: true };\n var eomRunScheduled = false;\n\n Object.observe(eomObj, fu
nction() {\n runEOMTasks();\n eomRunScheduled = false;\n });\n\n
return function(fn) {\n eomTasks.push(fn);\n if (!eomRunScheduled) {\
n eomRunScheduled = true;\n eomObj.pingPong = !eomObj.pingPong;\n
}\n };\n })() :\n (function() {\n return function(fn) {\n eomT
asks.push(fn);\n };\n })();\n\n var observedObjectCache = [];\n\n function
newObservedObject() {\n var observer;\n var object;\n var discardRecor
ds = false;\n var first = true;\n\n function callback(records) {\n if
(observer && observer.state_ === OPENED && !discardRecords)\n observer.c
heck_(records);\n }\n\n return {\n open: function(obs) {\n if
(observer)\n throw Error('ObservedObject in use');\n\n if (!firs
t)\n Object.deliverChangeRecords(callback);\n\n observer = obs;\
n first = false;\n },\n observe: function(obj, arrayObserve) {\
n object = obj;\n if (arrayObserve)\n Array.observe(objec
t, callback);\n else\n Object.observe(object, callback);\n
},\n deliver: function(discard) {\n discardRecords = discard;\n
Object.deliverChangeRecords(callback);\n discardRecords = false;\n
},\n close: function() {\n observer = undefined;\n Object.u
nobserve(object, callback);\n observedObjectCache.push(this);\n }\n
};\n }\n\n /*\n * The observedSet abstraction is a perf optimization whic
h reduces the total\n * number of Object.observe observations of a set of obje
cts. The idea is that\n * groups of Observers will have some object dependenci
es in common and this\n * observed set ensures that each object in the transit
ive closure of\n * dependencies is only observed once. The observedSet acts as
a write barrier\n * such that whenever any change comes through, all Observer
s are checked for\n * changed values.\n *\n * Note that this optimization
is explicitly moving work from setup-time to\n * change-time.\n *\n * TODO
(rafaelw): Implement \"garbage collection\". In order to move work off\n * the
critical path, when Observers are closed, their observed objects are\n * not
Object.unobserve(d). As a result, it's possible that if the observedSet\n * is
kept open, but some Observers have been closed, it could cause \"leaks\"\n *
(prevent otherwise collectable objects from being collected). At some\n * poin
t, we should implement incremental \"gc\" which keeps a list of\n * observedSe
ts which may need clean-up and does small amounts of cleanup on a\n * timeout
until all is clean.\n */\n\n function getObservedObject(observer, object, arr
ayObserve) {\n var dir = observedObjectCache.pop() || newObservedObject();\n
dir.open(observer);\n dir.observe(object, arrayObserve);\n return dir;\
n }\n\n var observedSetCache = [];\n\n function newObservedSet() {\n var o
bserverCount = 0;\n var observers = [];\n var objects = [];\n var rootO
bj;\n var rootObjProps;\n\n function observe(obj, prop) {\n if (!obj)
\n return;\n\n if (obj === rootObj)\n rootObjProps[prop] = tr
ue;\n\n if (objects.indexOf(obj) < 0) {\n objects.push(obj);\n
Object.observe(obj, callback);\n }\n\n observe(Object.getPrototypeOf
(obj), prop);\n }\n\n function allRootObjNonObservedProps(recs) {\n f
or (var i = 0; i < recs.length; i++) {\n var rec = recs[i];\n if (
rec.object !== rootObj ||\n rootObjProps[rec.name] ||\n re
c.type === 'setPrototype') {\n return false;\n }\n }\n
return true;\n }\n\n function callback(recs) {\n if (allRootObjNonOb
servedProps(recs))\n return;\n\n var observer;\n for (var i = 0
; i < observers.length; i++) {\n observer = observers[i];\n if (ob
server.state_ == OPENED) {\n observer.iterateObjects_(observe);\n
}\n }\n\n for (var i = 0; i < observers.length; i++) {\n obse
rver = observers[i];\n if (observer.state_ == OPENED) {\n observ
er.check_();\n }\n }\n }\n\n var record = {\n object: und
efined,\n objects: objects,\n open: function(obs, object) {\n i
f (!rootObj) {\n rootObj = object;\n rootObjProps = {};\n
}\n\n observers.push(obs);\n observerCount++;\n obs.iter
ateObjects_(observe);\n },\n close: function(obs) {\n observerC
ount--;\n if (observerCount > 0) {\n return;\n }\n\n
for (var i = 0; i < objects.length; i++) {\n Object.unobserve(object
s[i], callback);\n Observer.unobservedCount++;\n }\n\n ob
servers.length = 0;\n objects.length = 0;\n rootObj = undefined;\n
rootObjProps = undefined;\n observedSetCache.push(this);\n }
\n };\n\n return record;\n }\n\n var lastObservedSet;\n\n function getO
bservedSet(observer, obj) {\n if (!lastObservedSet || lastObservedSet.object
!== obj) {\n lastObservedSet = observedSetCache.pop() || newObservedSet();\
n lastObservedSet.object = obj;\n }\n lastObservedSet.open(observer,
obj);\n return lastObservedSet;\n }\n\n var UNOPENED = 0;\n var OPENED = 1
;\n var CLOSED = 2;\n var RESETTING = 3;\n\n var nextObserverId = 1;\n\n fun
ction Observer() {\n this.state_ = UNOPENED;\n this.callback_ = undefined;
\n this.target_ = undefined; // TODO(rafaelw): Should be WeakRef\n this.di
rectObserver_ = undefined;\n this.value_ = undefined;\n this.id_ = nextObs
erverId++;\n }\n\n Observer.prototype = {\n open: function(callback, target
) {\n if (this.state_ != UNOPENED)\n throw Error('Observer has alrea
dy been opened.');\n\n addToAll(this);\n this.callback_ = callback;\n
this.target_ = target;\n this.connect_();\n this.state_ = OPENED;
\n return this.value_;\n },\n\n close: function() {\n if (this.s
tate_ != OPENED)\n return;\n\n removeFromAll(this);\n this.disc
onnect_();\n this.value_ = undefined;\n this.callback_ = undefined;\n
this.target_ = undefined;\n this.state_ = CLOSED;\n },\n\n deliv
er: function() {\n if (this.state_ != OPENED)\n return;\n\n dir
tyCheck(this);\n },\n\n report_: function(changes) {\n try {\n
this.callback_.apply(this.target_, changes);\n } catch (ex) {\n Obs
erver._errorThrownDuringCallback = true;\n console.error('Exception caugh
t during observer callback: ' +\n (ex.stack || ex));\n
}\n },\n\n discardChanges: function() {\n this.check_(undefined, tr
ue);\n return this.value_;\n }\n }\n\n var collectObservers = !hasObse
rve;\n var allObservers;\n Observer._allObserversCount = 0;\n\n if (collectOb
servers) {\n allObservers = [];\n }\n\n function addToAll(observer) {\n
Observer._allObserversCount++;\n if (!collectObservers)\n return;\n\n
allObservers.push(observer);\n }\n\n function removeFromAll(observer) {\n
Observer._allObserversCount--;\n }\n\n var runningMicrotaskCheckpoint = false;
\n\n var hasDebugForceFullDelivery = hasObserve && hasEval && (function() {\n
try {\n eval('%RunMicrotasks()');\n return true;\n } catch (ex) {
\n return false;\n }\n })();\n\n global.Platform = global.Platform ||
{};\n\n global.Platform.performMicrotaskCheckpoint = function() {\n if (runn
ingMicrotaskCheckpoint)\n return;\n\n if (hasDebugForceFullDelivery) {\n
eval('%RunMicrotasks()');\n return;\n }\n\n if (!collectObserve
rs)\n return;\n\n runningMicrotaskCheckpoint = true;\n\n var cycles =
0;\n var anyChanged, toCheck;\n\n do {\n cycles++;\n toCheck =
allObservers;\n allObservers = [];\n anyChanged = false;\n\n for
(var i = 0; i < toCheck.length; i++) {\n var observer = toCheck[i];\n
if (observer.state_ != OPENED)\n continue;\n\n if (observer.
check_())\n anyChanged = true;\n\n allObservers.push(observer);\
n }\n if (runEOMTasks())\n anyChanged = true;\n } while (cyc
les < MAX_DIRTY_CHECK_CYCLES && anyChanged);\n\n if (testingExposeCycleCount)
\n global.dirtyCheckCycleCount = cycles;\n\n runningMicrotaskCheckpoint
= false;\n };\n\n if (collectObservers) {\n global.Platform.clearObservers
= function() {\n allObservers = [];\n };\n }\n\n function ObjectObserv
er(object) {\n Observer.call(this);\n this.value_ = object;\n this.oldO
bject_ = undefined;\n }\n\n ObjectObserver.prototype = createObject({\n __p
roto__: Observer.prototype,\n\n arrayObserve: false,\n\n connect_: functio
n(callback, target) {\n if (hasObserve) {\n this.directObserver_ = g
etObservedObject(this, this.value_,\n
this.arrayObserve);\n } else {\n this.oldObject_ = this.copyOb
ject(this.value_);\n }\n\n },\n\n copyObject: function(object) {\n
var copy = Array.isArray(object) ? [] : {};\n for (var prop in object) {
\n copy[prop] = object[prop];\n };\n if (Array.isArray(object))
\n copy.length = object.length;\n return copy;\n },\n\n check_
: function(changeRecords, skipChanges) {\n var diff;\n var oldValues;\
n if (hasObserve) {\n if (!changeRecords)\n return false;\n
\n oldValues = {};\n diff = diffObjectFromChangeRecords(this.value
_, changeRecords,\n oldValues);\n
} else {\n oldValues = this.oldObject_;\n diff = diffObjectFromOl
dObject(this.value_, this.oldObject_);\n }\n\n if (diffIsEmpty(diff))\
n return false;\n\n if (!hasObserve)\n this.oldObject_ = this
.copyObject(this.value_);\n\n this.report_([\n diff.added || {},\n
diff.removed || {},\n diff.changed || {},\n function(propert
y) {\n return oldValues[property];\n }\n ]);\n\n retur
n true;\n },\n\n disconnect_: function() {\n if (hasObserve) {\n
this.directObserver_.close();\n this.directObserver_ = undefined;\n
} else {\n this.oldObject_ = undefined;\n }\n },\n\n delive
r: function() {\n if (this.state_ != OPENED)\n return;\n\n if (
hasObserve)\n this.directObserver_.deliver(false);\n else\n d
irtyCheck(this);\n },\n\n discardChanges: function() {\n if (this.dir
ectObserver_)\n this.directObserver_.deliver(true);\n else\n
this.oldObject_ = this.copyObject(this.value_);\n\n return this.value_;\n
}\n });\n\n function ArrayObserver(array) {\n if (!Array.isArray(array))\
n throw Error('Provided object is not an Array');\n ObjectObserver.call(
this, array);\n }\n\n ArrayObserver.prototype = createObject({\n\n __proto_
_: ObjectObserver.prototype,\n\n arrayObserve: true,\n\n copyObject: funct
ion(arr) {\n return arr.slice();\n },\n\n check_: function(changeReco
rds) {\n var splices;\n if (hasObserve) {\n if (!changeRecords)
\n return false;\n splices = projectArraySplices(this.value_, ch
angeRecords);\n } else {\n splices = calcSplices(this.value_, 0, thi
s.value_.length,\n this.oldObject_, 0, this.oldObje
ct_.length);\n }\n\n if (!splices || !splices.length)\n return
false;\n\n if (!hasObserve)\n this.oldObject_ = this.copyObject(this
.value_);\n\n this.report_([splices]);\n return true;\n }\n });\n\
n ArrayObserver.applySplices = function(previous, current, splices) {\n spli
ces.forEach(function(splice) {\n var spliceArgs = [splice.index, splice.rem
oved.length];\n var addIndex = splice.index;\n while (addIndex < splic
e.index + splice.addedCount) {\n spliceArgs.push(current[addIndex]);\n
addIndex++;\n }\n\n Array.prototype.splice.apply(previous, splice
Args);\n });\n };\n\n function PathObserver(object, path) {\n Observer.c
all(this);\n\n this.object_ = object;\n this.path_ = getPath(path);\n t
his.directObserver_ = undefined;\n }\n\n PathObserver.prototype = createObject
({\n __proto__: Observer.prototype,\n\n get path() {\n return this.pa
th_;\n },\n\n connect_: function() {\n if (hasObserve)\n this.
directObserver_ = getObservedSet(this, this.object_);\n\n this.check_(undef
ined, true);\n },\n\n disconnect_: function() {\n this.value_ = undef
ined;\n\n if (this.directObserver_) {\n this.directObserver_.close(t
his);\n this.directObserver_ = undefined;\n }\n },\n\n iterate
Objects_: function(observe) {\n this.path_.iterateObjects(this.object_, obs
erve);\n },\n\n check_: function(changeRecords, skipChanges) {\n var
oldValue = this.value_;\n this.value_ = this.path_.getValueFrom(this.object
_);\n if (skipChanges || areSameValue(this.value_, oldValue))\n retu
rn false;\n\n this.report_([this.value_, oldValue, this]);\n return tr
ue;\n },\n\n setValue: function(newValue) {\n if (this.path_)\n
this.path_.setValueFrom(this.object_, newValue);\n }\n });\n\n function C
ompoundObserver(reportChangesOnOpen) {\n Observer.call(this);\n\n this.rep
ortChangesOnOpen_ = reportChangesOnOpen;\n this.value_ = [];\n this.direct
Observer_ = undefined;\n this.observed_ = [];\n }\n\n var observerSentinel
= {};\n\n CompoundObserver.prototype = createObject({\n __proto__: Observer.
prototype,\n\n connect_: function() {\n if (hasObserve) {\n var o
bject;\n var needsDirectObserver = false;\n for (var i = 0; i < th
is.observed_.length; i += 2) {\n object = this.observed_[i]\n
if (object !== observerSentinel) {\n needsDirectObserver = true;\n
break;\n }\n }\n\n if (needsDirectObserver)\n
this.directObserver_ = getObservedSet(this, object);\n }\n\n th
is.check_(undefined, !this.reportChangesOnOpen_);\n },\n\n disconnect_: fu
nction() {\n for (var i = 0; i < this.observed_.length; i += 2) {\n
if (this.observed_[i] === observerSentinel)\n this.observed_[i + 1].clo
se();\n }\n this.observed_.length = 0;\n this.value_.length = 0;\
n\n if (this.directObserver_) {\n this.directObserver_.close(this);\
n this.directObserver_ = undefined;\n }\n },\n\n addPath: func
tion(object, path) {\n if (this.state_ != UNOPENED && this.state_ != RESETT
ING)\n throw Error('Cannot add paths once started.');\n\n var path =
getPath(path);\n this.observed_.push(object, path);\n if (!this.repor
tChangesOnOpen_)\n return;\n var index = this.observed_.length / 2 -
1;\n this.value_[index] = path.getValueFrom(object);\n },\n\n addObs
erver: function(observer) {\n if (this.state_ != UNOPENED && this.state_ !=
RESETTING)\n throw Error('Cannot add observers once started.');\n\n
this.observed_.push(observerSentinel, observer);\n if (!this.reportChanges
OnOpen_)\n return;\n var index = this.observed_.length / 2 - 1;\n
this.value_[index] = observer.open(this.deliver, this);\n },\n\n startR
eset: function() {\n if (this.state_ != OPENED)\n throw Error('Can o
nly reset while open');\n\n this.state_ = RESETTING;\n this.disconnect
_();\n },\n\n finishReset: function() {\n if (this.state_ != RESETTIN
G)\n throw Error('Can only finishReset after startReset');\n this.st
ate_ = OPENED;\n this.connect_();\n\n return this.value_;\n },\n\n
iterateObjects_: function(observe) {\n var object;\n for (var i = 0
; i < this.observed_.length; i += 2) {\n object = this.observed_[i]\n
if (object !== observerSentinel)\n this.observed_[i + 1].iterateObj
ects(object, observe)\n }\n },\n\n check_: function(changeRecords, sk
ipChanges) {\n var oldValues;\n for (var i = 0; i < this.observed_.len
gth; i += 2) {\n var object = this.observed_[i];\n var path = this
.observed_[i+1];\n var value;\n if (object === observerSentinel) {
\n var observable = path;\n value = this.state_ === UNOPENED ?
\n observable.open(this.deliver, this) :\n observable.
discardChanges();\n } else {\n value = path.getValueFrom(object)
;\n }\n\n if (skipChanges) {\n this.value_[i / 2] = value
;\n continue;\n }\n\n if (areSameValue(value, this.value_
[i / 2]))\n continue;\n\n oldValues = oldValues || [];\n
oldValues[i / 2] = this.value_[i / 2];\n this.value_[i / 2] = value;\n
}\n\n if (!oldValues)\n return false;\n\n // TODO(rafaelw):
Having observed_ as the third callback arg here is\n // pretty lame API. Fi
x.\n this.report_([this.value_, oldValues, this.observed_]);\n return
true;\n }\n });\n\n function identFn(value) { return value; }\n\n function
ObserverTransform(observable, getValueFn, setValueFn,\n
dontPassThroughSet) {\n this.callback_ = undefined;\n this.target_ =
undefined;\n this.value_ = undefined;\n this.observable_ = observable;\n
this.getValueFn_ = getValueFn || identFn;\n this.setValueFn_ = setValueFn |
| identFn;\n // TODO(rafaelw): This is a temporary hack. PolymerExpressions n
eeds this\n // at the moment because of a bug in it's dependency tracking.\n
this.dontPassThroughSet_ = dontPassThroughSet;\n }\n\n ObserverTransform.pr
ototype = {\n open: function(callback, target) {\n this.callback_ = call
back;\n this.target_ = target;\n this.value_ =\n this.getValu
eFn_(this.observable_.open(this.observedCallback_, this));\n return this.va
lue_;\n },\n\n observedCallback_: function(value) {\n value = this.ge
tValueFn_(value);\n if (areSameValue(value, this.value_))\n return;\
n var oldValue = this.value_;\n this.value_ = value;\n this.callb
ack_.call(this.target_, this.value_, oldValue);\n },\n\n discardChanges: f
unction() {\n this.value_ = this.getValueFn_(this.observable_.discardChange
s());\n return this.value_;\n },\n\n deliver: function() {\n ret
urn this.observable_.deliver();\n },\n\n setValue: function(value) {\n
value = this.setValueFn_(value);\n if (!this.dontPassThroughSet_ && this.
observable_.setValue)\n return this.observable_.setValue(value);\n },\
n\n close: function() {\n if (this.observable_)\n this.observable
_.close();\n this.callback_ = undefined;\n this.target_ = undefined;\n
this.observable_ = undefined;\n this.value_ = undefined;\n this.
getValueFn_ = undefined;\n this.setValueFn_ = undefined;\n }\n }\n\n v
ar expectedRecordTypes = {\n add: true,\n update: true,\n delete: true\
n };\n\n function diffObjectFromChangeRecords(object, changeRecords, oldValues
) {\n var added = {};\n var removed = {};\n\n for (var i = 0; i < chang
eRecords.length; i++) {\n var record = changeRecords[i];\n if (!expect
edRecordTypes[record.type]) {\n console.error('Unknown changeRecord type:
' + record.type);\n console.error(record);\n continue;\n }\n
\n if (!(record.name in oldValues))\n oldValues[record.name] = recor
d.oldValue;\n\n if (record.type == 'update')\n continue;\n\n if
(record.type == 'add') {\n if (record.name in removed)\n delete
removed[record.name];\n else\n added[record.name] = true;\n\n
continue;\n }\n\n // type = 'delete'\n if (record.name in a
dded) {\n delete added[record.name];\n delete oldValues[record.nam
e];\n } else {\n removed[record.name] = true;\n }\n }\n\n
for (var prop in added)\n added[prop] = object[prop];\n\n for (var prop
in removed)\n removed[prop] = undefined;\n\n var changed = {};\n for
(var prop in oldValues) {\n if (prop in added || prop in removed)\n
continue;\n\n var newValue = object[prop];\n if (oldValues[prop] !==
newValue)\n changed[prop] = newValue;\n }\n\n return {\n added
: added,\n removed: removed,\n changed: changed\n };\n }\n\n func
tion newSplice(index, removed, addedCount) {\n return {\n index: index,\
n removed: removed,\n addedCount: addedCount\n };\n }\n\n var EDI
T_LEAVE = 0;\n var EDIT_UPDATE = 1;\n var EDIT_ADD = 2;\n var EDIT_DELETE = 3
;\n\n function ArraySplice() {}\n\n ArraySplice.prototype = {\n\n // Note:
This function is *based* on the computation of the Levenshtein\n // \"edit\"
distance. The one change is that \"updates\" are treated as two\n // edits -
not one. With Array splices, an update is really a delete\n // followed by an
add. By retaining this, we optimize for \"keeping\" the\n // maximum array i
tems in the original array. For example:\n //\n // 'xxxx123' -> '123yyyy
'\n //\n // With 1-edit updates, the shortest path would be just to update
all seven\n // characters. With 2-edit updates, we delete 4, leave 3, and ad
d 4. This\n // leaves the substring '123' intact.\n calcEditDistances: fun
ction(current, currentStart, currentEnd,\n old, o
ldStart, oldEnd) {\n // \"Deletion\" columns\n var rowCount = oldEnd -
oldStart + 1;\n var columnCount = currentEnd - currentStart + 1;\n va
r distances = new Array(rowCount);\n\n // \"Addition\" rows. Initialize nul
l column.\n for (var i = 0; i < rowCount; i++) {\n distances[i] = ne
w Array(columnCount);\n distances[i][0] = i;\n }\n\n // Initial
ize null row\n for (var j = 0; j < columnCount; j++)\n distances[0][
j] = j;\n\n for (var i = 1; i < rowCount; i++) {\n for (var j = 1; j
< columnCount; j++) {\n if (this.equals(current[currentStart + j - 1],
old[oldStart + i - 1]))\n distances[i][j] = distances[i - 1][j - 1];
\n else {\n var north = distances[i - 1][j] + 1;\n
var west = distances[i][j - 1] + 1;\n distances[i][j] = north < wes
t ? north : west;\n }\n }\n }\n\n return distances;\n
},\n\n // This starts at the final weight, and walks \"backward\" by findi
ng\n // the minimum previous weight recursively until the origin of the weigh
t\n // matrix.\n spliceOperationsFromEditDistances: function(distances) {\
n var i = distances.length - 1;\n var j = distances[0].length - 1;\n
var current = distances[i][j];\n var edits = [];\n while (i > 0 ||
j > 0) {\n if (i == 0) {\n edits.push(EDIT_ADD);\n j--
;\n continue;\n }\n if (j == 0) {\n edits.push(E
DIT_DELETE);\n i--;\n continue;\n }\n var northW
est = distances[i - 1][j - 1];\n var west = distances[i - 1][j];\n
var north = distances[i][j - 1];\n\n var min;\n if (west < north)
\n min = west < northWest ? west : northWest;\n else\n
min = north < northWest ? north : northWest;\n\n if (min == northWest) {\
n if (northWest == current) {\n edits.push(EDIT_LEAVE);\n
} else {\n edits.push(EDIT_UPDATE);\n current = nor
thWest;\n }\n i--;\n j--;\n } else if (min ==
west) {\n edits.push(EDIT_DELETE);\n i--;\n current =
west;\n } else {\n edits.push(EDIT_ADD);\n j--;\n
current = north;\n }\n }\n\n edits.reverse();\n retur
n edits;\n },\n\n /**\n * Splice Projection functions:\n *\n *
A splice map is a representation of how a previous array of items\n * was t
ransformed into a new array of items. Conceptually it is a list of\n * tuple
s of\n *\n * <index, removed, addedCount>\n *\n * which are ke
pt in ascending index order of. The tuple represents that at\n * the |index|
, |removed| sequence of items were removed, and counting forward\n * from |i
ndex|, |addedCount| items were added.\n */\n\n /**\n * Lacking indivi
dual splice mutation information, the minimal set of\n * splices can be synt
hesized given the previous state and final state of an\n * array. The basic
approach is to calculate the edit distance matrix and\n * choose the shortes
t path through it.\n *\n * Complexity: O(l * p)\n * l: The length
of the current array\n * p: The length of the old array\n */\n calc
Splices: function(current, currentStart, currentEnd,\n
old, oldStart, oldEnd) {\n var prefixCount = 0;\n var suffixCount = 0;
\n\n var minLength = Math.min(currentEnd - currentStart, oldEnd - oldStart)
;\n if (currentStart == 0 && oldStart == 0)\n prefixCount = this.sha
redPrefix(current, old, minLength);\n\n if (currentEnd == current.length &&
oldEnd == old.length)\n suffixCount = this.sharedSuffix(current, old, mi
nLength - prefixCount);\n\n currentStart += prefixCount;\n oldStart +=
prefixCount;\n currentEnd -= suffixCount;\n oldEnd -= suffixCount;\n\
n if (currentEnd - currentStart == 0 && oldEnd - oldStart == 0)\n re
turn [];\n\n if (currentStart == currentEnd) {\n var splice = newSpl
ice(currentStart, [], 0);\n while (oldStart < oldEnd)\n splice.r
emoved.push(old[oldStart++]);\n\n return [ splice ];\n } else if (ol
dStart == oldEnd)\n return [ newSplice(currentStart, [], currentEnd - cur
rentStart) ];\n\n var ops = this.spliceOperationsFromEditDistances(\n
this.calcEditDistances(current, currentStart, currentEnd,\n
old, oldStart, oldEnd));\n\n var splice = undefined;\n
var splices = [];\n var index = currentStart;\n var oldIndex = oldSta
rt;\n for (var i = 0; i < ops.length; i++) {\n switch(ops[i]) {\n
case EDIT_LEAVE:\n if (splice) {\n splices.push(s
plice);\n splice = undefined;\n }\n\n index++
;\n oldIndex++;\n break;\n case EDIT_UPDATE:\n
if (!splice)\n splice = newSplice(index, [], 0);\n\n
splice.addedCount++;\n index++;\n\n splice.removed.p
ush(old[oldIndex]);\n oldIndex++;\n break;\n case
EDIT_ADD:\n if (!splice)\n splice = newSplice(index, []
, 0);\n\n splice.addedCount++;\n index++;\n bre
ak;\n case EDIT_DELETE:\n if (!splice)\n splice
= newSplice(index, [], 0);\n\n splice.removed.push(old[oldIndex]);\n
oldIndex++;\n break;\n }\n }\n\n if (spl
ice) {\n splices.push(splice);\n }\n return splices;\n },\n\
n sharedPrefix: function(current, old, searchLength) {\n for (var i = 0;
i < searchLength; i++)\n if (!this.equals(current[i], old[i]))\n
return i;\n return searchLength;\n },\n\n sharedSuffix: function(cu
rrent, old, searchLength) {\n var index1 = current.length;\n var index
2 = old.length;\n var count = 0;\n while (count < searchLength && this
.equals(current[--index1], old[--index2]))\n count++;\n\n return cou
nt;\n },\n\n calculateSplices: function(current, previous) {\n return
this.calcSplices(current, 0, current.length, previous, 0,\n
previous.length);\n },\n\n equals: function(currentValue, previo
usValue) {\n return currentValue === previousValue;\n }\n };\n\n var a
rraySplice = new ArraySplice();\n\n function calcSplices(current, currentStart,
currentEnd,\n old, oldStart, oldEnd) {\n return arrayS
plice.calcSplices(current, currentStart, currentEnd,\n
old, oldStart, oldEnd);\n }\n\n function intersect(start1, end1, star
t2, end2) {\n // Disjoint\n if (end1 < start2 || end2 < start1)\n ret
urn -1;\n\n // Adjacent\n if (end1 == start2 || end2 == start1)\n ret
urn 0;\n\n // Non-zero intersect, span1 first\n if (start1 < start2) {\n
if (end1 < end2)\n return end1 - start2; // Overlap\n else\n
return end2 - start2; // Contained\n } else {\n // Non-zero intersec
t, span2 first\n if (end2 < end1)\n return end2 - start1; // Overlap
\n else\n return end1 - start1; // Contained\n }\n }\n\n functi
on mergeSplice(splices, index, removed, addedCount) {\n\n var splice = newSpl
ice(index, removed, addedCount);\n\n var inserted = false;\n var insertion
Offset = 0;\n\n for (var i = 0; i < splices.length; i++) {\n var current
= splices[i];\n current.index += insertionOffset;\n\n if (inserted)\n
continue;\n\n var intersectCount = intersect(splice.index,\n
splice.index + splice.removed.length,\n
current.index,\n c
urrent.index + current.addedCount);\n\n if (intersectCount >= 0) {\n
// Merge the two splices\n\n splices.splice(i, 1);\n i--;\n\n
insertionOffset -= current.addedCount - current.removed.length;\n\n s
plice.addedCount += current.addedCount - intersectCount;\n var deleteCoun
t = splice.removed.length +\n current.removed.length -
intersectCount;\n\n if (!splice.addedCount && !deleteCount) {\n
// merged splice is a noop. discard.\n inserted = true;\n } else
{\n var removed = current.removed;\n\n if (splice.index < cur
rent.index) {\n // some prefix of splice.removed is prepended to curr
ent.removed.\n var prepend = splice.removed.slice(0, current.index -
splice.index);\n Array.prototype.push.apply(prepend, removed);\n
removed = prepend;\n }\n\n if (splice.index + splice.re
moved.length > current.index + current.addedCount) {\n // some suffix
of splice.removed is appended to current.removed.\n var append = spl
ice.removed.slice(current.index + current.addedCount - splice.index);\n
Array.prototype.push.apply(removed, append);\n }\n\n splice
.removed = removed;\n if (current.index < splice.index) {\n
splice.index = current.index;\n }\n }\n } else if (splice.i
ndex < current.index) {\n // Insert splice here.\n\n inserted = tr
ue;\n\n splices.splice(i, 0, splice);\n i++;\n\n var offset
= splice.addedCount - splice.removed.length\n current.index += offset;\n
insertionOffset += offset;\n }\n }\n\n if (!inserted)\n
splices.push(splice);\n }\n\n function createInitialSplices(array, changeRecor
ds) {\n var splices = [];\n\n for (var i = 0; i < changeRecords.length; i+
+) {\n var record = changeRecords[i];\n switch(record.type) {\n
case 'splice':\n mergeSplice(splices, record.index, record.removed.sli
ce(), record.addedCount);\n break;\n case 'add':\n case '
update':\n case 'delete':\n if (!isIndex(record.name))\n
continue;\n var index = toNumber(record.name);\n if (index
< 0)\n continue;\n mergeSplice(splices, index, [record.oldV
alue], 1);\n break;\n default:\n console.error('Unexpec
ted record type: ' + JSON.stringify(record));\n break;\n }\n }\
n\n return splices;\n }\n\n function projectArraySplices(array, changeRecor
ds) {\n var splices = [];\n\n createInitialSplices(array, changeRecords).f
orEach(function(splice) {\n if (splice.addedCount == 1 && splice.removed.le
ngth == 1) {\n if (splice.removed[0] !== array[splice.index])\n
splices.push(splice);\n\n return\n };\n\n splices = splices.con
cat(calcSplices(array, splice.index, splice.index + splice.addedCount,\n
splice.removed, 0, splice.removed.length));\n
});\n\n return splices;\n }\n\n global.Observer = Observer;\n global.O
bserver.runEOM_ = runEOM;\n global.Observer.observerSentinel_ = observerSentine
l; // for testing.\n global.Observer.hasObjectObserve = hasObserve;\n global.A
rrayObserver = ArrayObserver;\n global.ArrayObserver.calculateSplices = functio
n(current, previous) {\n return arraySplice.calculateSplices(current, previou
s);\n };\n\n global.ArraySplice = ArraySplice;\n global.ObjectObserver = Obje
ctObserver;\n global.PathObserver = PathObserver;\n global.CompoundObserver =
CompoundObserver;\n global.Path = Path;\n global.ObserverTransform = ObserverT
ransform;\n})(typeof global !== 'undefined' && global && typeof module !== 'unde
fined' && module ? global : this || window);\n", | 86 "// Copyright 2012 Google Inc.\n//\n// Licensed under the Apache License, Ve
rsion 2.0 (the \"License\");\n// you may not use this file except in compliance
with the License.\n// You may obtain a copy of the License at\n//\n// http:/
/www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law o
r agreed to in writing, software\n// distributed under the License is distribute
d on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, eithe
r express or implied.\n// See the License for the specific language governing pe
rmissions and\n// limitations under the License.\n\n(function(global) {\n 'use
strict';\n\n var testingExposeCycleCount = global.testingExposeCycleCount;\n\n
// Detect and do basic sanity checking on Object/Array.observe.\n function det
ectObjectObserve() {\n if (typeof Object.observe !== 'function' ||\n t
ypeof Array.observe !== 'function') {\n return false;\n }\n\n var rec
ords = [];\n\n function callback(recs) {\n records = recs;\n }\n\n
var test = {};\n var arr = [];\n Object.observe(test, callback);\n Arr
ay.observe(arr, callback);\n test.id = 1;\n test.id = 2;\n delete test.
id;\n arr.push(1, 2);\n arr.length = 0;\n\n Object.deliverChangeRecords
(callback);\n if (records.length !== 5)\n return false;\n\n if (recor
ds[0].type != 'add' ||\n records[1].type != 'update' ||\n records[
2].type != 'delete' ||\n records[3].type != 'splice' ||\n records[
4].type != 'splice') {\n return false;\n }\n\n Object.unobserve(test,
callback);\n Array.unobserve(arr, callback);\n\n return true;\n }\n\n v
ar hasObserve = detectObjectObserve();\n\n function detectEval() {\n // Don'
t test for eval if we're running in a Chrome App environment.\n // We check f
or APIs set that only exist in a Chrome App context.\n if (typeof chrome !==
'undefined' && chrome.app && chrome.app.runtime) {\n return false;\n }\n
\n // Firefox OS Apps do not allow eval. This feature detection is very hacky
\n // but even if some other platform adds support for this function this cod
e\n // will continue to work.\n if (navigator.getDeviceStorage) {\n r
eturn false;\n }\n\n try {\n var f = new Function('', 'return true;')
;\n return f();\n } catch (ex) {\n return false;\n }\n }\n\n v
ar hasEval = detectEval();\n\n function isIndex(s) {\n return +s === s >>> 0
;\n }\n\n function toNumber(s) {\n return +s;\n }\n\n function isObject(o
bj) {\n return obj === Object(obj);\n }\n\n var numberIsNaN = global.Number
.isNaN || function(value) {\n return typeof value === 'number' && global.isNa
N(value);\n }\n\n function areSameValue(left, right) {\n if (left === right
)\n return left !== 0 || 1 / left === 1 / right;\n if (numberIsNaN(left)
&& numberIsNaN(right))\n return true;\n\n return left !== left && right
!== right;\n }\n\n var createObject = ('__proto__' in {}) ?\n function(obj
) { return obj; } :\n function(obj) {\n var proto = obj.__proto__;\n
if (!proto)\n return obj;\n var newObject = Object.create(proto);\
n Object.getOwnPropertyNames(obj).forEach(function(name) {\n Object.
defineProperty(newObject, name,\n Object.getOwnPrope
rtyDescriptor(obj, name));\n });\n return newObject;\n };\n\n var
identStart = '[\\$_a-zA-Z]';\n var identPart = '[\\$_a-zA-Z0-9]';\n var identR
egExp = new RegExp('^' + identStart + '+' + identPart + '*' + '$');\n\n functio
n getPathCharType(char) {\n if (char === undefined)\n return 'eof';\n\n
var code = char.charCodeAt(0);\n\n switch(code) {\n case 0x5B: // [\n
case 0x5D: // ]\n case 0x2E: // .\n case 0x22: // \"\n case
0x27: // '\n case 0x30: // 0\n return char;\n\n case 0x5F: //
_\n case 0x24: // $\n return 'ident';\n\n case 0x20: // Space\n
case 0x09: // Tab\n case 0x0A: // Newline\n case 0x0D: // Return
\n case 0xA0: // No-break space\n case 0xFEFF: // Byte Order Mark\n
case 0x2028: // Line Separator\n case 0x2029: // Paragraph Separator
\n return 'ws';\n }\n\n // a-z, A-Z\n if ((0x61 <= code && code
<= 0x7A) || (0x41 <= code && code <= 0x5A))\n return 'ident';\n\n // 1-9
\n if (0x31 <= code && code <= 0x39)\n return 'number';\n\n return 'e
lse';\n }\n\n var pathStateMachine = {\n 'beforePath': {\n 'ws': ['bef
orePath'],\n 'ident': ['inIdent', 'append'],\n '[': ['beforeElement'],
\n 'eof': ['afterPath']\n },\n\n 'inPath': {\n 'ws': ['inPath'],
\n '.': ['beforeIdent'],\n '[': ['beforeElement'],\n 'eof': ['aft
erPath']\n },\n\n 'beforeIdent': {\n 'ws': ['beforeIdent'],\n 'i
dent': ['inIdent', 'append']\n },\n\n 'inIdent': {\n 'ident': ['inIde
nt', 'append'],\n '0': ['inIdent', 'append'],\n 'number': ['inIdent',
'append'],\n 'ws': ['inPath', 'push'],\n '.': ['beforeIdent', 'push'],
\n '[': ['beforeElement', 'push'],\n 'eof': ['afterPath', 'push']\n
},\n\n 'beforeElement': {\n 'ws': ['beforeElement'],\n '0': ['afte
rZero', 'append'],\n 'number': ['inIndex', 'append'],\n \"'\": ['inSin
gleQuote', 'append', ''],\n '\"': ['inDoubleQuote', 'append', '']\n },\n
\n 'afterZero': {\n 'ws': ['afterElement', 'push'],\n ']': ['inPath
', 'push']\n },\n\n 'inIndex': {\n '0': ['inIndex', 'append'],\n
'number': ['inIndex', 'append'],\n 'ws': ['afterElement'],\n ']': ['i
nPath', 'push']\n },\n\n 'inSingleQuote': {\n \"'\": ['afterElement']
,\n 'eof': ['error'],\n 'else': ['inSingleQuote', 'append']\n },\n\
n 'inDoubleQuote': {\n '\"': ['afterElement'],\n 'eof': ['error'],\
n 'else': ['inDoubleQuote', 'append']\n },\n\n 'afterElement': {\n
'ws': ['afterElement'],\n ']': ['inPath', 'push']\n }\n }\n\n funct
ion noop() {}\n\n function parsePath(path) {\n var keys = [];\n var index
= -1;\n var c, newChar, key, type, transition, action, typeMap, mode = 'befo
rePath';\n\n var actions = {\n push: function() {\n if (key === u
ndefined)\n return;\n\n keys.push(key);\n key = undefined
;\n },\n\n append: function() {\n if (key === undefined)\n
key = newChar\n else\n key += newChar;\n }\n };\n\n
function maybeUnescapeQuote() {\n if (index >= path.length)\n re
turn;\n\n var nextChar = path[index + 1];\n if ((mode == 'inSingleQuot
e' && nextChar == \"'\") ||\n (mode == 'inDoubleQuote' && nextChar == '
\"')) {\n index++;\n newChar = nextChar;\n actions.append()
;\n return true;\n }\n }\n\n while (mode) {\n index++;\n
c = path[index];\n\n if (c == '\\\\' && maybeUnescapeQuote(mode))\n
continue;\n\n type = getPathCharType(c);\n typeMap = pathStateMac
hine[mode];\n transition = typeMap[type] || typeMap['else'] || 'error';\n\n
if (transition == 'error')\n return; // parse error;\n\n mode
= transition[0];\n action = actions[transition[1]] || noop;\n newChar
= transition[2] === undefined ? c : transition[2];\n action();\n\n if
(mode === 'afterPath') {\n return keys;\n }\n }\n\n return; //
parse error\n }\n\n function isIdent(s) {\n return identRegExp.test(s);\n
}\n\n var constructorIsPrivate = {};\n\n function Path(parts, privateToken) {
\n if (privateToken !== constructorIsPrivate)\n throw Error('Use Path.ge
t to retrieve path objects');\n\n for (var i = 0; i < parts.length; i++) {\n
this.push(String(parts[i]));\n }\n\n if (hasEval && this.length) {\n
this.getValueFrom = this.compiledGetValueFromFn();\n }\n }\n\n // TODO
(rafaelw): Make simple LRU cache\n var pathCache = {};\n\n function getPath(pa
thString) {\n if (pathString instanceof Path)\n return pathString;\n\n
if (pathString == null || pathString.length == 0)\n pathString = '';\n\n
if (typeof pathString != 'string') {\n if (isIndex(pathString.length)) {
\n // Constructed with array-like (pre-parsed) keys\n return new P
ath(pathString, constructorIsPrivate);\n }\n\n pathString = String(pat
hString);\n }\n\n var path = pathCache[pathString];\n if (path)\n
return path;\n\n var parts = parsePath(pathString);\n if (!parts)\n r
eturn invalidPath;\n\n var path = new Path(parts, constructorIsPrivate);\n
pathCache[pathString] = path;\n return path;\n }\n\n Path.get = getPath;\n
\n function formatAccessor(key) {\n if (isIndex(key)) {\n return '[' +
key + ']';\n } else {\n return '[\"' + key.replace(/\"/g, '\\\\\"') + '\
"]';\n }\n }\n\n Path.prototype = createObject({\n __proto__: [],\n v
alid: true,\n\n toString: function() {\n var pathString = '';\n for
(var i = 0; i < this.length; i++) {\n var key = this[i];\n if (is
Ident(key)) {\n pathString += i ? '.' + key : key;\n } else {\n
pathString += formatAccessor(key);\n }\n }\n\n return
pathString;\n },\n\n getValueFrom: function(obj, directObserver) {\n
for (var i = 0; i < this.length; i++) {\n if (obj == null)\n ret
urn;\n obj = obj[this[i]];\n }\n return obj;\n },\n\n ite
rateObjects: function(obj, observe) {\n for (var i = 0; i < this.length; i+
+) {\n if (i)\n obj = obj[this[i - 1]];\n if (!isObject(o
bj))\n return;\n observe(obj, this[0]);\n }\n },\n\n
compiledGetValueFromFn: function() {\n var str = '';\n var pathString
= 'obj';\n str += 'if (obj != null';\n var i = 0;\n var key;\n
for (; i < (this.length - 1); i++) {\n key = this[i];\n pathStr
ing += isIdent(key) ? '.' + key : formatAccessor(key);\n str += ' &&\\n
' + pathString + ' != null';\n }\n str += ')\\n';\n\n var key
= this[i];\n pathString += isIdent(key) ? '.' + key : formatAccessor(key);\
n\n str += ' return ' + pathString + ';\\nelse\\n return undefined;';\n
return new Function('obj', str);\n },\n\n setValueFrom: function(obj,
value) {\n if (!this.length)\n return false;\n\n for (var i = 0
; i < this.length - 1; i++) {\n if (!isObject(obj))\n return fal
se;\n obj = obj[this[i]];\n }\n\n if (!isObject(obj))\n
return false;\n\n obj[this[i]] = value;\n return true;\n }\n });\n
\n var invalidPath = new Path('', constructorIsPrivate);\n invalidPath.valid =
false;\n invalidPath.getValueFrom = invalidPath.setValueFrom = function() {};\
n\n var MAX_DIRTY_CHECK_CYCLES = 1000;\n\n function dirtyCheck(observer) {\n
var cycles = 0;\n while (cycles < MAX_DIRTY_CHECK_CYCLES && observer.check_
()) {\n cycles++;\n }\n if (testingExposeCycleCount)\n global.di
rtyCheckCycleCount = cycles;\n\n return cycles > 0;\n }\n\n function object
IsEmpty(object) {\n for (var prop in object)\n return false;\n return
true;\n }\n\n function diffIsEmpty(diff) {\n return objectIsEmpty(diff.add
ed) &&\n objectIsEmpty(diff.removed) &&\n objectIsEmpty(diff
.changed);\n }\n\n function diffObjectFromOldObject(object, oldObject) {\n
var added = {};\n var removed = {};\n var changed = {};\n\n for (var pr
op in oldObject) {\n var newValue = object[prop];\n\n if (newValue !==
undefined && newValue === oldObject[prop])\n continue;\n\n if (!(pr
op in object)) {\n removed[prop] = undefined;\n continue;\n }
\n\n if (newValue !== oldObject[prop])\n changed[prop] = newValue;\n
}\n\n for (var prop in object) {\n if (prop in oldObject)\n c
ontinue;\n\n added[prop] = object[prop];\n }\n\n if (Array.isArray(ob
ject) && object.length !== oldObject.length)\n changed.length = object.leng
th;\n\n return {\n added: added,\n removed: removed,\n changed
: changed\n };\n }\n\n var eomTasks = [];\n function runEOMTasks() {\n
if (!eomTasks.length)\n return false;\n\n for (var i = 0; i < eomTasks.l
ength; i++) {\n eomTasks[i]();\n }\n eomTasks.length = 0;\n return
true;\n }\n\n var runEOM = hasObserve ? (function(){\n var eomObj = { ping
Pong: true };\n var eomRunScheduled = false;\n\n Object.observe(eomObj, fu
nction() {\n runEOMTasks();\n eomRunScheduled = false;\n });\n\n
return function(fn) {\n eomTasks.push(fn);\n if (!eomRunScheduled) {\
n eomRunScheduled = true;\n eomObj.pingPong = !eomObj.pingPong;\n
}\n };\n })() :\n (function() {\n return function(fn) {\n eomT
asks.push(fn);\n };\n })();\n\n var observedObjectCache = [];\n\n function
newObservedObject() {\n var observer;\n var object;\n var discardRecor
ds = false;\n var first = true;\n\n function callback(records) {\n if
(observer && observer.state_ === OPENED && !discardRecords)\n observer.c
heck_(records);\n }\n\n return {\n open: function(obs) {\n if
(observer)\n throw Error('ObservedObject in use');\n\n if (!firs
t)\n Object.deliverChangeRecords(callback);\n\n observer = obs;\
n first = false;\n },\n observe: function(obj, arrayObserve) {\
n object = obj;\n if (arrayObserve)\n Array.observe(objec
t, callback);\n else\n Object.observe(object, callback);\n
},\n deliver: function(discard) {\n discardRecords = discard;\n
Object.deliverChangeRecords(callback);\n discardRecords = false;\n
},\n close: function() {\n observer = undefined;\n Object.u
nobserve(object, callback);\n observedObjectCache.push(this);\n }\n
};\n }\n\n /*\n * The observedSet abstraction is a perf optimization whic
h reduces the total\n * number of Object.observe observations of a set of obje
cts. The idea is that\n * groups of Observers will have some object dependenci
es in common and this\n * observed set ensures that each object in the transit
ive closure of\n * dependencies is only observed once. The observedSet acts as
a write barrier\n * such that whenever any change comes through, all Observer
s are checked for\n * changed values.\n *\n * Note that this optimization
is explicitly moving work from setup-time to\n * change-time.\n *\n * TODO
(rafaelw): Implement \"garbage collection\". In order to move work off\n * the
critical path, when Observers are closed, their observed objects are\n * not
Object.unobserve(d). As a result, it's possible that if the observedSet\n * is
kept open, but some Observers have been closed, it could cause \"leaks\"\n *
(prevent otherwise collectable objects from being collected). At some\n * poin
t, we should implement incremental \"gc\" which keeps a list of\n * observedSe
ts which may need clean-up and does small amounts of cleanup on a\n * timeout
until all is clean.\n */\n\n function getObservedObject(observer, object, arr
ayObserve) {\n var dir = observedObjectCache.pop() || newObservedObject();\n
dir.open(observer);\n dir.observe(object, arrayObserve);\n return dir;\
n }\n\n var observedSetCache = [];\n\n function newObservedSet() {\n var o
bserverCount = 0;\n var observers = [];\n var objects = [];\n var rootO
bj;\n var rootObjProps;\n\n function observe(obj, prop) {\n if (!obj)
\n return;\n\n if (obj === rootObj)\n rootObjProps[prop] = tr
ue;\n\n if (objects.indexOf(obj) < 0) {\n objects.push(obj);\n
Object.observe(obj, callback);\n }\n\n observe(Object.getPrototypeOf
(obj), prop);\n }\n\n function allRootObjNonObservedProps(recs) {\n f
or (var i = 0; i < recs.length; i++) {\n var rec = recs[i];\n if (
rec.object !== rootObj ||\n rootObjProps[rec.name] ||\n re
c.type === 'setPrototype') {\n return false;\n }\n }\n
return true;\n }\n\n function callback(recs) {\n if (allRootObjNonOb
servedProps(recs))\n return;\n\n var observer;\n for (var i = 0
; i < observers.length; i++) {\n observer = observers[i];\n if (ob
server.state_ == OPENED) {\n observer.iterateObjects_(observe);\n
}\n }\n\n for (var i = 0; i < observers.length; i++) {\n obse
rver = observers[i];\n if (observer.state_ == OPENED) {\n observ
er.check_();\n }\n }\n }\n\n var record = {\n object: und
efined,\n objects: objects,\n open: function(obs, object) {\n i
f (!rootObj) {\n rootObj = object;\n rootObjProps = {};\n
}\n\n observers.push(obs);\n observerCount++;\n obs.iter
ateObjects_(observe);\n },\n close: function(obs) {\n observerC
ount--;\n if (observerCount > 0) {\n return;\n }\n\n
for (var i = 0; i < objects.length; i++) {\n Object.unobserve(object
s[i], callback);\n Observer.unobservedCount++;\n }\n\n ob
servers.length = 0;\n objects.length = 0;\n rootObj = undefined;\n
rootObjProps = undefined;\n observedSetCache.push(this);\n }
\n };\n\n return record;\n }\n\n var lastObservedSet;\n\n function getO
bservedSet(observer, obj) {\n if (!lastObservedSet || lastObservedSet.object
!== obj) {\n lastObservedSet = observedSetCache.pop() || newObservedSet();\
n lastObservedSet.object = obj;\n }\n lastObservedSet.open(observer,
obj);\n return lastObservedSet;\n }\n\n var UNOPENED = 0;\n var OPENED = 1
;\n var CLOSED = 2;\n var RESETTING = 3;\n\n var nextObserverId = 1;\n\n fun
ction Observer() {\n this.state_ = UNOPENED;\n this.callback_ = undefined;
\n this.target_ = undefined; // TODO(rafaelw): Should be WeakRef\n this.di
rectObserver_ = undefined;\n this.value_ = undefined;\n this.id_ = nextObs
erverId++;\n }\n\n Observer.prototype = {\n open: function(callback, target
) {\n if (this.state_ != UNOPENED)\n throw Error('Observer has alrea
dy been opened.');\n\n addToAll(this);\n this.callback_ = callback;\n
this.target_ = target;\n this.connect_();\n this.state_ = OPENED;
\n return this.value_;\n },\n\n close: function() {\n if (this.s
tate_ != OPENED)\n return;\n\n removeFromAll(this);\n this.disc
onnect_();\n this.value_ = undefined;\n this.callback_ = undefined;\n
this.target_ = undefined;\n this.state_ = CLOSED;\n },\n\n deliv
er: function() {\n if (this.state_ != OPENED)\n return;\n\n dir
tyCheck(this);\n },\n\n report_: function(changes) {\n try {\n
this.callback_.apply(this.target_, changes);\n } catch (ex) {\n Obs
erver._errorThrownDuringCallback = true;\n console.error('Exception caugh
t during observer callback: ' +\n (ex.stack || ex));\n
}\n },\n\n discardChanges: function() {\n this.check_(undefined, tr
ue);\n return this.value_;\n }\n }\n\n var collectObservers = !hasObse
rve;\n var allObservers;\n Observer._allObserversCount = 0;\n\n if (collectOb
servers) {\n allObservers = [];\n }\n\n function addToAll(observer) {\n
Observer._allObserversCount++;\n if (!collectObservers)\n return;\n\n
allObservers.push(observer);\n }\n\n function removeFromAll(observer) {\n
Observer._allObserversCount--;\n }\n\n var runningMicrotaskCheckpoint = false;
\n\n var hasDebugForceFullDelivery = hasObserve && hasEval && (function() {\n
try {\n eval('%RunMicrotasks()');\n return true;\n } catch (ex) {
\n return false;\n }\n })();\n\n global.Platform = global.Platform ||
{};\n\n global.Platform.performMicrotaskCheckpoint = function() {\n if (runn
ingMicrotaskCheckpoint)\n return;\n\n if (hasDebugForceFullDelivery) {\n
eval('%RunMicrotasks()');\n return;\n }\n\n if (!collectObserve
rs)\n return;\n\n runningMicrotaskCheckpoint = true;\n\n var cycles =
0;\n var anyChanged, toCheck;\n\n do {\n cycles++;\n toCheck =
allObservers;\n allObservers = [];\n anyChanged = false;\n\n for
(var i = 0; i < toCheck.length; i++) {\n var observer = toCheck[i];\n
if (observer.state_ != OPENED)\n continue;\n\n if (observer.
check_())\n anyChanged = true;\n\n allObservers.push(observer);\
n }\n if (runEOMTasks())\n anyChanged = true;\n } while (cyc
les < MAX_DIRTY_CHECK_CYCLES && anyChanged);\n\n if (testingExposeCycleCount)
\n global.dirtyCheckCycleCount = cycles;\n\n runningMicrotaskCheckpoint
= false;\n };\n\n if (collectObservers) {\n global.Platform.clearObservers
= function() {\n allObservers = [];\n };\n }\n\n function ObjectObserv
er(object) {\n Observer.call(this);\n this.value_ = object;\n this.oldO
bject_ = undefined;\n }\n\n ObjectObserver.prototype = createObject({\n __p
roto__: Observer.prototype,\n\n arrayObserve: false,\n\n connect_: functio
n(callback, target) {\n if (hasObserve) {\n this.directObserver_ = g
etObservedObject(this, this.value_,\n
this.arrayObserve);\n } else {\n this.oldObject_ = this.copyOb
ject(this.value_);\n }\n\n },\n\n copyObject: function(object) {\n
var copy = Array.isArray(object) ? [] : {};\n for (var prop in object) {
\n copy[prop] = object[prop];\n };\n if (Array.isArray(object))
\n copy.length = object.length;\n return copy;\n },\n\n check_
: function(changeRecords, skipChanges) {\n var diff;\n var oldValues;\
n if (hasObserve) {\n if (!changeRecords)\n return false;\n
\n oldValues = {};\n diff = diffObjectFromChangeRecords(this.value
_, changeRecords,\n oldValues);\n
} else {\n oldValues = this.oldObject_;\n diff = diffObjectFromOl
dObject(this.value_, this.oldObject_);\n }\n\n if (diffIsEmpty(diff))\
n return false;\n\n if (!hasObserve)\n this.oldObject_ = this
.copyObject(this.value_);\n\n this.report_([\n diff.added || {},\n
diff.removed || {},\n diff.changed || {},\n function(propert
y) {\n return oldValues[property];\n }\n ]);\n\n retur
n true;\n },\n\n disconnect_: function() {\n if (hasObserve) {\n
this.directObserver_.close();\n this.directObserver_ = undefined;\n
} else {\n this.oldObject_ = undefined;\n }\n },\n\n delive
r: function() {\n if (this.state_ != OPENED)\n return;\n\n if (
hasObserve)\n this.directObserver_.deliver(false);\n else\n d
irtyCheck(this);\n },\n\n discardChanges: function() {\n if (this.dir
ectObserver_)\n this.directObserver_.deliver(true);\n else\n
this.oldObject_ = this.copyObject(this.value_);\n\n return this.value_;\n
}\n });\n\n function ArrayObserver(array) {\n if (!Array.isArray(array))\
n throw Error('Provided object is not an Array');\n ObjectObserver.call(
this, array);\n }\n\n ArrayObserver.prototype = createObject({\n\n __proto_
_: ObjectObserver.prototype,\n\n arrayObserve: true,\n\n copyObject: funct
ion(arr) {\n return arr.slice();\n },\n\n check_: function(changeReco
rds) {\n var splices;\n if (hasObserve) {\n if (!changeRecords)
\n return false;\n splices = projectArraySplices(this.value_, ch
angeRecords);\n } else {\n splices = calcSplices(this.value_, 0, thi
s.value_.length,\n this.oldObject_, 0, this.oldObje
ct_.length);\n }\n\n if (!splices || !splices.length)\n return
false;\n\n if (!hasObserve)\n this.oldObject_ = this.copyObject(this
.value_);\n\n this.report_([splices]);\n return true;\n }\n });\n\
n ArrayObserver.applySplices = function(previous, current, splices) {\n spli
ces.forEach(function(splice) {\n var spliceArgs = [splice.index, splice.rem
oved.length];\n var addIndex = splice.index;\n while (addIndex < splic
e.index + splice.addedCount) {\n spliceArgs.push(current[addIndex]);\n
addIndex++;\n }\n\n Array.prototype.splice.apply(previous, splice
Args);\n });\n };\n\n function PathObserver(object, path) {\n Observer.c
all(this);\n\n this.object_ = object;\n this.path_ = getPath(path);\n t
his.directObserver_ = undefined;\n }\n\n PathObserver.prototype = createObject
({\n __proto__: Observer.prototype,\n\n get path() {\n return this.pa
th_;\n },\n\n connect_: function() {\n if (hasObserve)\n this.
directObserver_ = getObservedSet(this, this.object_);\n\n this.check_(undef
ined, true);\n },\n\n disconnect_: function() {\n this.value_ = undef
ined;\n\n if (this.directObserver_) {\n this.directObserver_.close(t
his);\n this.directObserver_ = undefined;\n }\n },\n\n iterate
Objects_: function(observe) {\n this.path_.iterateObjects(this.object_, obs
erve);\n },\n\n check_: function(changeRecords, skipChanges) {\n var
oldValue = this.value_;\n this.value_ = this.path_.getValueFrom(this.object
_);\n if (skipChanges || areSameValue(this.value_, oldValue))\n retu
rn false;\n\n this.report_([this.value_, oldValue, this]);\n return tr
ue;\n },\n\n setValue: function(newValue) {\n if (this.path_)\n
this.path_.setValueFrom(this.object_, newValue);\n }\n });\n\n function C
ompoundObserver(reportChangesOnOpen) {\n Observer.call(this);\n\n this.rep
ortChangesOnOpen_ = reportChangesOnOpen;\n this.value_ = [];\n this.direct
Observer_ = undefined;\n this.observed_ = [];\n }\n\n var observerSentinel
= {};\n\n CompoundObserver.prototype = createObject({\n __proto__: Observer.
prototype,\n\n connect_: function() {\n if (hasObserve) {\n var o
bject;\n var needsDirectObserver = false;\n for (var i = 0; i < th
is.observed_.length; i += 2) {\n object = this.observed_[i]\n
if (object !== observerSentinel) {\n needsDirectObserver = true;\n
break;\n }\n }\n\n if (needsDirectObserver)\n
this.directObserver_ = getObservedSet(this, object);\n }\n\n th
is.check_(undefined, !this.reportChangesOnOpen_);\n },\n\n disconnect_: fu
nction() {\n for (var i = 0; i < this.observed_.length; i += 2) {\n
if (this.observed_[i] === observerSentinel)\n this.observed_[i + 1].clo
se();\n }\n this.observed_.length = 0;\n this.value_.length = 0;\
n\n if (this.directObserver_) {\n this.directObserver_.close(this);\
n this.directObserver_ = undefined;\n }\n },\n\n addPath: func
tion(object, path) {\n if (this.state_ != UNOPENED && this.state_ != RESETT
ING)\n throw Error('Cannot add paths once started.');\n\n var path =
getPath(path);\n this.observed_.push(object, path);\n if (!this.repor
tChangesOnOpen_)\n return;\n var index = this.observed_.length / 2 -
1;\n this.value_[index] = path.getValueFrom(object);\n },\n\n addObs
erver: function(observer) {\n if (this.state_ != UNOPENED && this.state_ !=
RESETTING)\n throw Error('Cannot add observers once started.');\n\n
this.observed_.push(observerSentinel, observer);\n if (!this.reportChanges
OnOpen_)\n return;\n var index = this.observed_.length / 2 - 1;\n
this.value_[index] = observer.open(this.deliver, this);\n },\n\n startR
eset: function() {\n if (this.state_ != OPENED)\n throw Error('Can o
nly reset while open');\n\n this.state_ = RESETTING;\n this.disconnect
_();\n },\n\n finishReset: function() {\n if (this.state_ != RESETTIN
G)\n throw Error('Can only finishReset after startReset');\n this.st
ate_ = OPENED;\n this.connect_();\n\n return this.value_;\n },\n\n
iterateObjects_: function(observe) {\n var object;\n for (var i = 0
; i < this.observed_.length; i += 2) {\n object = this.observed_[i]\n
if (object !== observerSentinel)\n this.observed_[i + 1].iterateObj
ects(object, observe)\n }\n },\n\n check_: function(changeRecords, sk
ipChanges) {\n var oldValues;\n for (var i = 0; i < this.observed_.len
gth; i += 2) {\n var object = this.observed_[i];\n var path = this
.observed_[i+1];\n var value;\n if (object === observerSentinel) {
\n var observable = path;\n value = this.state_ === UNOPENED ?
\n observable.open(this.deliver, this) :\n observable.
discardChanges();\n } else {\n value = path.getValueFrom(object)
;\n }\n\n if (skipChanges) {\n this.value_[i / 2] = value
;\n continue;\n }\n\n if (areSameValue(value, this.value_
[i / 2]))\n continue;\n\n oldValues = oldValues || [];\n
oldValues[i / 2] = this.value_[i / 2];\n this.value_[i / 2] = value;\n
}\n\n if (!oldValues)\n return false;\n\n // TODO(rafaelw):
Having observed_ as the third callback arg here is\n // pretty lame API. Fi
x.\n this.report_([this.value_, oldValues, this.observed_]);\n return
true;\n }\n });\n\n function identFn(value) { return value; }\n\n function
ObserverTransform(observable, getValueFn, setValueFn,\n
dontPassThroughSet) {\n this.callback_ = undefined;\n this.target_ =
undefined;\n this.value_ = undefined;\n this.observable_ = observable;\n
this.getValueFn_ = getValueFn || identFn;\n this.setValueFn_ = setValueFn |
| identFn;\n // TODO(rafaelw): This is a temporary hack. PolymerExpressions n
eeds this\n // at the moment because of a bug in it's dependency tracking.\n
this.dontPassThroughSet_ = dontPassThroughSet;\n }\n\n ObserverTransform.pr
ototype = {\n open: function(callback, target) {\n this.callback_ = call
back;\n this.target_ = target;\n this.value_ =\n this.getValu
eFn_(this.observable_.open(this.observedCallback_, this));\n return this.va
lue_;\n },\n\n observedCallback_: function(value) {\n value = this.ge
tValueFn_(value);\n if (areSameValue(value, this.value_))\n return;\
n var oldValue = this.value_;\n this.value_ = value;\n this.callb
ack_.call(this.target_, this.value_, oldValue);\n },\n\n discardChanges: f
unction() {\n this.value_ = this.getValueFn_(this.observable_.discardChange
s());\n return this.value_;\n },\n\n deliver: function() {\n ret
urn this.observable_.deliver();\n },\n\n setValue: function(value) {\n
value = this.setValueFn_(value);\n if (!this.dontPassThroughSet_ && this.
observable_.setValue)\n return this.observable_.setValue(value);\n },\
n\n close: function() {\n if (this.observable_)\n this.observable
_.close();\n this.callback_ = undefined;\n this.target_ = undefined;\n
this.observable_ = undefined;\n this.value_ = undefined;\n this.
getValueFn_ = undefined;\n this.setValueFn_ = undefined;\n }\n }\n\n v
ar expectedRecordTypes = {\n add: true,\n update: true,\n delete: true\
n };\n\n function diffObjectFromChangeRecords(object, changeRecords, oldValues
) {\n var added = {};\n var removed = {};\n\n for (var i = 0; i < chang
eRecords.length; i++) {\n var record = changeRecords[i];\n if (!expect
edRecordTypes[record.type]) {\n console.error('Unknown changeRecord type:
' + record.type);\n console.error(record);\n continue;\n }\n
\n if (!(record.name in oldValues))\n oldValues[record.name] = recor
d.oldValue;\n\n if (record.type == 'update')\n continue;\n\n if
(record.type == 'add') {\n if (record.name in removed)\n delete
removed[record.name];\n else\n added[record.name] = true;\n\n
continue;\n }\n\n // type = 'delete'\n if (record.name in a
dded) {\n delete added[record.name];\n delete oldValues[record.nam
e];\n } else {\n removed[record.name] = true;\n }\n }\n\n
for (var prop in added)\n added[prop] = object[prop];\n\n for (var prop
in removed)\n removed[prop] = undefined;\n\n var changed = {};\n for
(var prop in oldValues) {\n if (prop in added || prop in removed)\n
continue;\n\n var newValue = object[prop];\n if (oldValues[prop] !==
newValue)\n changed[prop] = newValue;\n }\n\n return {\n added
: added,\n removed: removed,\n changed: changed\n };\n }\n\n func
tion newSplice(index, removed, addedCount) {\n return {\n index: index,\
n removed: removed,\n addedCount: addedCount\n };\n }\n\n var EDI
T_LEAVE = 0;\n var EDIT_UPDATE = 1;\n var EDIT_ADD = 2;\n var EDIT_DELETE = 3
;\n\n function ArraySplice() {}\n\n ArraySplice.prototype = {\n\n // Note:
This function is *based* on the computation of the Levenshtein\n // \"edit\"
distance. The one change is that \"updates\" are treated as two\n // edits -
not one. With Array splices, an update is really a delete\n // followed by an
add. By retaining this, we optimize for \"keeping\" the\n // maximum array i
tems in the original array. For example:\n //\n // 'xxxx123' -> '123yyyy
'\n //\n // With 1-edit updates, the shortest path would be just to update
all seven\n // characters. With 2-edit updates, we delete 4, leave 3, and ad
d 4. This\n // leaves the substring '123' intact.\n calcEditDistances: fun
ction(current, currentStart, currentEnd,\n old, o
ldStart, oldEnd) {\n // \"Deletion\" columns\n var rowCount = oldEnd -
oldStart + 1;\n var columnCount = currentEnd - currentStart + 1;\n va
r distances = new Array(rowCount);\n\n // \"Addition\" rows. Initialize nul
l column.\n for (var i = 0; i < rowCount; i++) {\n distances[i] = ne
w Array(columnCount);\n distances[i][0] = i;\n }\n\n // Initial
ize null row\n for (var j = 0; j < columnCount; j++)\n distances[0][
j] = j;\n\n for (var i = 1; i < rowCount; i++) {\n for (var j = 1; j
< columnCount; j++) {\n if (this.equals(current[currentStart + j - 1],
old[oldStart + i - 1]))\n distances[i][j] = distances[i - 1][j - 1];
\n else {\n var north = distances[i - 1][j] + 1;\n
var west = distances[i][j - 1] + 1;\n distances[i][j] = north < wes
t ? north : west;\n }\n }\n }\n\n return distances;\n
},\n\n // This starts at the final weight, and walks \"backward\" by findi
ng\n // the minimum previous weight recursively until the origin of the weigh
t\n // matrix.\n spliceOperationsFromEditDistances: function(distances) {\
n var i = distances.length - 1;\n var j = distances[0].length - 1;\n
var current = distances[i][j];\n var edits = [];\n while (i > 0 ||
j > 0) {\n if (i == 0) {\n edits.push(EDIT_ADD);\n j--
;\n continue;\n }\n if (j == 0) {\n edits.push(E
DIT_DELETE);\n i--;\n continue;\n }\n var northW
est = distances[i - 1][j - 1];\n var west = distances[i - 1][j];\n
var north = distances[i][j - 1];\n\n var min;\n if (west < north)
\n min = west < northWest ? west : northWest;\n else\n
min = north < northWest ? north : northWest;\n\n if (min == northWest) {\
n if (northWest == current) {\n edits.push(EDIT_LEAVE);\n
} else {\n edits.push(EDIT_UPDATE);\n current = nor
thWest;\n }\n i--;\n j--;\n } else if (min ==
west) {\n edits.push(EDIT_DELETE);\n i--;\n current =
west;\n } else {\n edits.push(EDIT_ADD);\n j--;\n
current = north;\n }\n }\n\n edits.reverse();\n retur
n edits;\n },\n\n /**\n * Splice Projection functions:\n *\n *
A splice map is a representation of how a previous array of items\n * was t
ransformed into a new array of items. Conceptually it is a list of\n * tuple
s of\n *\n * <index, removed, addedCount>\n *\n * which are ke
pt in ascending index order of. The tuple represents that at\n * the |index|
, |removed| sequence of items were removed, and counting forward\n * from |i
ndex|, |addedCount| items were added.\n */\n\n /**\n * Lacking indivi
dual splice mutation information, the minimal set of\n * splices can be synt
hesized given the previous state and final state of an\n * array. The basic
approach is to calculate the edit distance matrix and\n * choose the shortes
t path through it.\n *\n * Complexity: O(l * p)\n * l: The length
of the current array\n * p: The length of the old array\n */\n calc
Splices: function(current, currentStart, currentEnd,\n
old, oldStart, oldEnd) {\n var prefixCount = 0;\n var suffixCount = 0;
\n\n var minLength = Math.min(currentEnd - currentStart, oldEnd - oldStart)
;\n if (currentStart == 0 && oldStart == 0)\n prefixCount = this.sha
redPrefix(current, old, minLength);\n\n if (currentEnd == current.length &&
oldEnd == old.length)\n suffixCount = this.sharedSuffix(current, old, mi
nLength - prefixCount);\n\n currentStart += prefixCount;\n oldStart +=
prefixCount;\n currentEnd -= suffixCount;\n oldEnd -= suffixCount;\n\
n if (currentEnd - currentStart == 0 && oldEnd - oldStart == 0)\n re
turn [];\n\n if (currentStart == currentEnd) {\n var splice = newSpl
ice(currentStart, [], 0);\n while (oldStart < oldEnd)\n splice.r
emoved.push(old[oldStart++]);\n\n return [ splice ];\n } else if (ol
dStart == oldEnd)\n return [ newSplice(currentStart, [], currentEnd - cur
rentStart) ];\n\n var ops = this.spliceOperationsFromEditDistances(\n
this.calcEditDistances(current, currentStart, currentEnd,\n
old, oldStart, oldEnd));\n\n var splice = undefined;\n
var splices = [];\n var index = currentStart;\n var oldIndex = oldSta
rt;\n for (var i = 0; i < ops.length; i++) {\n switch(ops[i]) {\n
case EDIT_LEAVE:\n if (splice) {\n splices.push(s
plice);\n splice = undefined;\n }\n\n index++
;\n oldIndex++;\n break;\n case EDIT_UPDATE:\n
if (!splice)\n splice = newSplice(index, [], 0);\n\n
splice.addedCount++;\n index++;\n\n splice.removed.p
ush(old[oldIndex]);\n oldIndex++;\n break;\n case
EDIT_ADD:\n if (!splice)\n splice = newSplice(index, []
, 0);\n\n splice.addedCount++;\n index++;\n bre
ak;\n case EDIT_DELETE:\n if (!splice)\n splice
= newSplice(index, [], 0);\n\n splice.removed.push(old[oldIndex]);\n
oldIndex++;\n break;\n }\n }\n\n if (spl
ice) {\n splices.push(splice);\n }\n return splices;\n },\n\
n sharedPrefix: function(current, old, searchLength) {\n for (var i = 0;
i < searchLength; i++)\n if (!this.equals(current[i], old[i]))\n
return i;\n return searchLength;\n },\n\n sharedSuffix: function(cu
rrent, old, searchLength) {\n var index1 = current.length;\n var index
2 = old.length;\n var count = 0;\n while (count < searchLength && this
.equals(current[--index1], old[--index2]))\n count++;\n\n return cou
nt;\n },\n\n calculateSplices: function(current, previous) {\n return
this.calcSplices(current, 0, current.length, previous, 0,\n
previous.length);\n },\n\n equals: function(currentValue, previo
usValue) {\n return currentValue === previousValue;\n }\n };\n\n var a
rraySplice = new ArraySplice();\n\n function calcSplices(current, currentStart,
currentEnd,\n old, oldStart, oldEnd) {\n return arrayS
plice.calcSplices(current, currentStart, currentEnd,\n
old, oldStart, oldEnd);\n }\n\n function intersect(start1, end1, star
t2, end2) {\n // Disjoint\n if (end1 < start2 || end2 < start1)\n ret
urn -1;\n\n // Adjacent\n if (end1 == start2 || end2 == start1)\n ret
urn 0;\n\n // Non-zero intersect, span1 first\n if (start1 < start2) {\n
if (end1 < end2)\n return end1 - start2; // Overlap\n else\n
return end2 - start2; // Contained\n } else {\n // Non-zero intersec
t, span2 first\n if (end2 < end1)\n return end2 - start1; // Overlap
\n else\n return end1 - start1; // Contained\n }\n }\n\n functi
on mergeSplice(splices, index, removed, addedCount) {\n\n var splice = newSpl
ice(index, removed, addedCount);\n\n var inserted = false;\n var insertion
Offset = 0;\n\n for (var i = 0; i < splices.length; i++) {\n var current
= splices[i];\n current.index += insertionOffset;\n\n if (inserted)\n
continue;\n\n var intersectCount = intersect(splice.index,\n
splice.index + splice.removed.length,\n
current.index,\n c
urrent.index + current.addedCount);\n\n if (intersectCount >= 0) {\n
// Merge the two splices\n\n splices.splice(i, 1);\n i--;\n\n
insertionOffset -= current.addedCount - current.removed.length;\n\n s
plice.addedCount += current.addedCount - intersectCount;\n var deleteCoun
t = splice.removed.length +\n current.removed.length -
intersectCount;\n\n if (!splice.addedCount && !deleteCount) {\n
// merged splice is a noop. discard.\n inserted = true;\n } else
{\n var removed = current.removed;\n\n if (splice.index < cur
rent.index) {\n // some prefix of splice.removed is prepended to curr
ent.removed.\n var prepend = splice.removed.slice(0, current.index -
splice.index);\n Array.prototype.push.apply(prepend, removed);\n
removed = prepend;\n }\n\n if (splice.index + splice.re
moved.length > current.index + current.addedCount) {\n // some suffix
of splice.removed is appended to current.removed.\n var append = spl
ice.removed.slice(current.index + current.addedCount - splice.index);\n
Array.prototype.push.apply(removed, append);\n }\n\n splice
.removed = removed;\n if (current.index < splice.index) {\n
splice.index = current.index;\n }\n }\n } else if (splice.i
ndex < current.index) {\n // Insert splice here.\n\n inserted = tr
ue;\n\n splices.splice(i, 0, splice);\n i++;\n\n var offset
= splice.addedCount - splice.removed.length\n current.index += offset;\n
insertionOffset += offset;\n }\n }\n\n if (!inserted)\n
splices.push(splice);\n }\n\n function createInitialSplices(array, changeRecor
ds) {\n var splices = [];\n\n for (var i = 0; i < changeRecords.length; i+
+) {\n var record = changeRecords[i];\n switch(record.type) {\n
case 'splice':\n mergeSplice(splices, record.index, record.removed.sli
ce(), record.addedCount);\n break;\n case 'add':\n case '
update':\n case 'delete':\n if (!isIndex(record.name))\n
continue;\n var index = toNumber(record.name);\n if (index
< 0)\n continue;\n mergeSplice(splices, index, [record.oldV
alue], 1);\n break;\n default:\n console.error('Unexpec
ted record type: ' + JSON.stringify(record));\n break;\n }\n }\
n\n return splices;\n }\n\n function projectArraySplices(array, changeRecor
ds) {\n var splices = [];\n\n createInitialSplices(array, changeRecords).f
orEach(function(splice) {\n if (splice.addedCount == 1 && splice.removed.le
ngth == 1) {\n if (splice.removed[0] !== array[splice.index])\n
splices.push(splice);\n\n return\n };\n\n splices = splices.con
cat(calcSplices(array, splice.index, splice.index + splice.addedCount,\n
splice.removed, 0, splice.removed.length));\n
});\n\n return splices;\n }\n\n global.Observer = Observer;\n global.O
bserver.runEOM_ = runEOM;\n global.Observer.observerSentinel_ = observerSentine
l; // for testing.\n global.Observer.hasObjectObserve = hasObserve;\n global.A
rrayObserver = ArrayObserver;\n global.ArrayObserver.calculateSplices = functio
n(current, previous) {\n return arraySplice.calculateSplices(current, previou
s);\n };\n\n global.ArraySplice = ArraySplice;\n global.ObjectObserver = Obje
ctObserver;\n global.PathObserver = PathObserver;\n global.CompoundObserver =
CompoundObserver;\n global.Path = Path;\n global.ObserverTransform = ObserverT
ransform;\n})(typeof global !== 'undefined' && global && typeof module !== 'unde
fined' && module ? global : this || window);\n", |
87 "// Copyright 2012 The Polymer Authors. All rights reserved.\n// Use of this
source code is goverened by a BSD-style\n// license that can be found in the LI
CENSE file.\n\nwindow.ShadowDOMPolyfill = {};\n\n(function(scope) {\n 'use stri
ct';\n\n var constructorTable = new WeakMap();\n var nativePrototypeTable = ne
w WeakMap();\n var wrappers = Object.create(null);\n\n function detectEval() {
\n // Don't test for eval if we're running in a Chrome App environment.\n
// We check for APIs set that only exist in a Chrome App context.\n if (typeo
f chrome !== 'undefined' && chrome.app && chrome.app.runtime) {\n return fa
lse;\n }\n\n // Firefox OS Apps do not allow eval. This feature detection
is very hacky\n // but even if some other platform adds support for this func
tion this code\n // will continue to work.\n if (navigator.getDeviceStorag
e) {\n return false;\n }\n\n try {\n var f = new Function('retur
n true;');\n return f();\n } catch (ex) {\n return false;\n }\n
}\n\n var hasEval = detectEval();\n\n function assert(b) {\n if (!b)\n
throw new Error('Assertion failed');\n };\n\n var defineProperty = Object.de
fineProperty;\n var getOwnPropertyNames = Object.getOwnPropertyNames;\n var ge
tOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n function mixin(to
, from) {\n var names = getOwnPropertyNames(from);\n for (var i = 0; i < n
ames.length; i++) {\n var name = names[i];\n defineProperty(to, name,
getOwnPropertyDescriptor(from, name));\n }\n return to;\n };\n\n functio
n mixinStatics(to, from) {\n var names = getOwnPropertyNames(from);\n for
(var i = 0; i < names.length; i++) {\n var name = names[i];\n switch (
name) {\n case 'arguments':\n case 'caller':\n case 'length
':\n case 'name':\n case 'prototype':\n case 'toString':\n
continue;\n }\n defineProperty(to, name, getOwnPropertyDescri
ptor(from, name));\n }\n return to;\n };\n\n function oneOf(object, prop
ertyNames) {\n for (var i = 0; i < propertyNames.length; i++) {\n if (pr
opertyNames[i] in object)\n return propertyNames[i];\n }\n }\n\n var
nonEnumerableDataDescriptor = {\n value: undefined,\n configurable: true,
\n enumerable: false,\n writable: true\n };\n\n function defineNonEnumer
ableDataProperty(object, name, value) {\n nonEnumerableDataDescriptor.value =
value;\n defineProperty(object, name, nonEnumerableDataDescriptor);\n }\n\n
// Mozilla's old DOM bindings are bretty busted:\n // https://bugzilla.mozill
a.org/show_bug.cgi?id=855844\n // Make sure they are create before we start mod
ifying things.\n getOwnPropertyNames(window);\n\n function getWrapperConstruct
or(node) {\n var nativePrototype = node.__proto__ || Object.getPrototypeOf(no
de);\n var wrapperConstructor = constructorTable.get(nativePrototype);\n i
f (wrapperConstructor)\n return wrapperConstructor;\n\n var parentWrappe
rConstructor = getWrapperConstructor(nativePrototype);\n\n var GeneratedWrapp
er = createWrapperConstructor(parentWrapperConstructor);\n registerInternal(n
ativePrototype, GeneratedWrapper, node);\n\n return GeneratedWrapper;\n }\n\
n function addForwardingProperties(nativePrototype, wrapperPrototype) {\n in
stallProperty(nativePrototype, wrapperPrototype, true);\n }\n\n function regis
terInstanceProperties(wrapperPrototype, instanceObject) {\n installProperty(i
nstanceObject, wrapperPrototype, false);\n }\n\n var isFirefox = /Firefox/.tes
t(navigator.userAgent);\n\n // This is used as a fallback when getting the desc
riptor fails in\n // installProperty.\n var dummyDescriptor = {\n get: func
tion() {},\n set: function(v) {},\n configurable: true,\n enumerable: t
rue\n };\n\n function isEventHandlerName(name) {\n return /^on[a-z]+$/.test
(name);\n }\n\n function isIdentifierName(name) {\n return /^\\w[a-zA-Z_0-9
]*$/.test(name);\n }\n\n // The name of the implementation property is intenti
onally hard to\n // remember. Unfortunately, browsers are slower doing obj[expr
] than\n // obj.foo so we resort to repeat this ugly name. This ugly name is ne
ver\n // used outside of this file though.\n\n function getGetter(name) {\n
return hasEval && isIdentifierName(name) ?\n new Function('return this._
_impl4cf1e782hg__.' + name) :\n function() { return this.__impl4cf1e782hg
__[name]; };\n }\n\n function getSetter(name) {\n return hasEval && isIdent
ifierName(name) ?\n new Function('v', 'this.__impl4cf1e782hg__.' + name +
' = v') :\n function(v) { this.__impl4cf1e782hg__[name] = v; };\n }\n\n
function getMethod(name) {\n return hasEval && isIdentifierName(name) ?\n
new Function('return this.__impl4cf1e782hg__.' + name +\n
'.apply(this.__impl4cf1e782hg__, arguments)') :\n function() {\n
return this.__impl4cf1e782hg__[name].apply(\n this.__impl4cf1e
782hg__, arguments);\n };\n }\n\n function getDescriptor(source, name)
{\n try {\n return Object.getOwnPropertyDescriptor(source, name);\n }
catch (ex) {\n // JSC and V8 both use data properties instead of accessors
which can\n // cause getting the property desciptor to throw an exception.
\n // https://bugs.webkit.org/show_bug.cgi?id=49739\n return dummyDesc
riptor;\n }\n }\n\n function installProperty(source, target, allowMethod, o
pt_blacklist) {\n var names = getOwnPropertyNames(source);\n for (var i =
0; i < names.length; i++) {\n var name = names[i];\n if (name === 'pol
ymerBlackList_')\n continue;\n\n if (name in target)\n contin
ue;\n\n if (source.polymerBlackList_ && source.polymerBlackList_[name])\n
continue;\n\n if (isFirefox) {\n // Tickle Firefox's old bindi
ngs.\n source.__lookupGetter__(name);\n }\n var descriptor = ge
tDescriptor(source, name);\n var getter, setter;\n if (allowMethod &&
typeof descriptor.value === 'function') {\n target[name] = getMethod(name
);\n continue;\n }\n\n var isEvent = isEventHandlerName(name);\
n if (isEvent)\n getter = scope.getEventHandlerGetter(name);\n
else\n getter = getGetter(name);\n\n if (descriptor.writable || desc
riptor.set) {\n if (isEvent)\n setter = scope.getEventHandlerSet
ter(name);\n else\n setter = getSetter(name);\n }\n\n
defineProperty(target, name, {\n get: getter,\n set: setter,\n
configurable: descriptor.configurable,\n enumerable: descriptor.enume
rable\n });\n }\n }\n\n /**\n * @param {Function} nativeConstructor\
n * @param {Function} wrapperConstructor\n * @param {Object=} opt_instance I
f present, this is used to extract\n * properties from an instance object.
\n */\n function register(nativeConstructor, wrapperConstructor, opt_instance
) {\n var nativePrototype = nativeConstructor.prototype;\n registerInterna
l(nativePrototype, wrapperConstructor, opt_instance);\n mixinStatics(wrapperC
onstructor, nativeConstructor);\n }\n\n function registerInternal(nativeProtot
ype, wrapperConstructor, opt_instance) {\n var wrapperPrototype = wrapperCons
tructor.prototype;\n assert(constructorTable.get(nativePrototype) === undefin
ed);\n\n constructorTable.set(nativePrototype, wrapperConstructor);\n nati
vePrototypeTable.set(wrapperPrototype, nativePrototype);\n\n addForwardingPro
perties(nativePrototype, wrapperPrototype);\n if (opt_instance)\n regist
erInstanceProperties(wrapperPrototype, opt_instance);\n\n defineNonEnumerable
DataProperty(\n wrapperPrototype, 'constructor', wrapperConstructor);\n
// Set it again. Some VMs optimizes objects that are used as prototypes.\n
wrapperConstructor.prototype = wrapperPrototype;\n }\n\n function isWrapperFor
(wrapperConstructor, nativeConstructor) {\n return constructorTable.get(nativ
eConstructor.prototype) ===\n wrapperConstructor;\n }\n\n /**\n * Cre
ates a generic wrapper constructor based on |object| and its\n * constructor.\
n * @param {Node} object\n * @return {Function} The generated constructor.\n
*/\n function registerObject(object) {\n var nativePrototype = Object.get
PrototypeOf(object);\n\n var superWrapperConstructor = getWrapperConstructor(
nativePrototype);\n var GeneratedWrapper = createWrapperConstructor(superWrap
perConstructor);\n registerInternal(nativePrototype, GeneratedWrapper, object
);\n\n return GeneratedWrapper;\n }\n\n function createWrapperConstructor(s
uperWrapperConstructor) {\n function GeneratedWrapper(node) {\n superWra
pperConstructor.call(this, node);\n }\n var p = Object.create(superWrapper
Constructor.prototype);\n p.constructor = GeneratedWrapper;\n GeneratedWra
pper.prototype = p;\n\n return GeneratedWrapper;\n }\n\n function isWrapper
(object) {\n return object && object.__impl4cf1e782hg__;\n }\n\n function i
sNative(object) {\n return !isWrapper(object);\n }\n\n /**\n * Wraps a no
de in a WrapperNode. If there already exists a wrapper for the\n * |node| that
wrapper is returned instead.\n * @param {Node} node\n * @return {WrapperNod
e}\n */\n function wrap(impl) {\n if (impl === null)\n return null;\n
\n assert(isNative(impl));\n return impl.__wrapper8e3dd93a60__ ||\n
(impl.__wrapper8e3dd93a60__ = new (getWrapperConstructor(impl))(impl));\n }\n\
n /**\n * Unwraps a wrapper and returns the node it is wrapping.\n * @param
{WrapperNode} wrapper\n * @return {Node}\n */\n function unwrap(wrapper) {
\n if (wrapper === null)\n return null;\n assert(isWrapper(wrapper));
\n return wrapper.__impl4cf1e782hg__;\n }\n\n function unsafeUnwrap(wrapper
) {\n return wrapper.__impl4cf1e782hg__;\n }\n\n function setWrapper(impl,
wrapper) {\n wrapper.__impl4cf1e782hg__ = impl;\n impl.__wrapper8e3dd93a60
__ = wrapper;\n }\n\n /**\n * Unwraps object if it is a wrapper.\n * @para
m {Object} object\n * @return {Object} The native implementation object.\n *
/\n function unwrapIfNeeded(object) {\n return object && isWrapper(object) ?
unwrap(object) : object;\n }\n\n /**\n * Wraps object if it is not a wrappe
r.\n * @param {Object} object\n * @return {Object} The wrapper for object.\n
*/\n function wrapIfNeeded(object) {\n return object && !isWrapper(object
) ? wrap(object) : object;\n }\n\n /**\n * Overrides the current wrapper (if
any) for node.\n * @param {Node} node\n * @param {WrapperNode=} wrapper If
left out the wrapper will be created as\n * needed next time someone wraps
the node.\n */\n function rewrap(node, wrapper) {\n if (wrapper === null)
\n return;\n assert(isNative(node));\n assert(wrapper === undefined |
| isWrapper(wrapper));\n node.__wrapper8e3dd93a60__ = wrapper;\n }\n\n var
getterDescriptor = {\n get: undefined,\n configurable: true,\n enumerab
le: true\n };\n\n function defineGetter(constructor, name, getter) {\n gett
erDescriptor.get = getter;\n defineProperty(constructor.prototype, name, gett
erDescriptor);\n }\n\n function defineWrapGetter(constructor, name) {\n def
ineGetter(constructor, name, function() {\n return wrap(this.__impl4cf1e782
hg__[name]);\n });\n }\n\n /**\n * Forwards existing methods on the nativ
e object to the wrapper methods.\n * This does not wrap any of the arguments o
r the return value since the\n * wrapper implementation already takes care of
that.\n * @param {Array.<Function>} constructors\n * @parem {Array.<string>}
names\n */\n function forwardMethodsToWrapper(constructors, names) {\n co
nstructors.forEach(function(constructor) {\n names.forEach(function(name) {
\n constructor.prototype[name] = function() {\n var w = wrapIfNe
eded(this);\n return w[name].apply(w, arguments);\n };\n })
;\n });\n }\n\n scope.assert = assert;\n scope.constructorTable = construc
torTable;\n scope.defineGetter = defineGetter;\n scope.defineWrapGetter = defi
neWrapGetter;\n scope.forwardMethodsToWrapper = forwardMethodsToWrapper;\n sco
pe.isWrapper = isWrapper;\n scope.isWrapperFor = isWrapperFor;\n scope.mixin =
mixin;\n scope.nativePrototypeTable = nativePrototypeTable;\n scope.oneOf = o
neOf;\n scope.registerObject = registerObject;\n scope.registerWrapper = regis
ter;\n scope.rewrap = rewrap;\n scope.setWrapper = setWrapper;\n scope.unsafe
Unwrap = unsafeUnwrap;\n scope.unwrap = unwrap;\n scope.unwrapIfNeeded = unwra
pIfNeeded;\n scope.wrap = wrap;\n scope.wrapIfNeeded = wrapIfNeeded;\n scope.
wrappers = wrappers;\n\n})(window.ShadowDOMPolyfill);\n", | 87 "// Copyright 2012 The Polymer Authors. All rights reserved.\n// Use of this
source code is goverened by a BSD-style\n// license that can be found in the LI
CENSE file.\n\nwindow.ShadowDOMPolyfill = {};\n\n(function(scope) {\n 'use stri
ct';\n\n var constructorTable = new WeakMap();\n var nativePrototypeTable = ne
w WeakMap();\n var wrappers = Object.create(null);\n\n function detectEval() {
\n // Don't test for eval if we're running in a Chrome App environment.\n
// We check for APIs set that only exist in a Chrome App context.\n if (typeo
f chrome !== 'undefined' && chrome.app && chrome.app.runtime) {\n return fa
lse;\n }\n\n // Firefox OS Apps do not allow eval. This feature detection
is very hacky\n // but even if some other platform adds support for this func
tion this code\n // will continue to work.\n if (navigator.getDeviceStorag
e) {\n return false;\n }\n\n try {\n var f = new Function('retur
n true;');\n return f();\n } catch (ex) {\n return false;\n }\n
}\n\n var hasEval = detectEval();\n\n function assert(b) {\n if (!b)\n
throw new Error('Assertion failed');\n };\n\n var defineProperty = Object.de
fineProperty;\n var getOwnPropertyNames = Object.getOwnPropertyNames;\n var ge
tOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n function mixin(to
, from) {\n var names = getOwnPropertyNames(from);\n for (var i = 0; i < n
ames.length; i++) {\n var name = names[i];\n defineProperty(to, name,
getOwnPropertyDescriptor(from, name));\n }\n return to;\n };\n\n functio
n mixinStatics(to, from) {\n var names = getOwnPropertyNames(from);\n for
(var i = 0; i < names.length; i++) {\n var name = names[i];\n switch (
name) {\n case 'arguments':\n case 'caller':\n case 'length
':\n case 'name':\n case 'prototype':\n case 'toString':\n
continue;\n }\n defineProperty(to, name, getOwnPropertyDescri
ptor(from, name));\n }\n return to;\n };\n\n function oneOf(object, prop
ertyNames) {\n for (var i = 0; i < propertyNames.length; i++) {\n if (pr
opertyNames[i] in object)\n return propertyNames[i];\n }\n }\n\n var
nonEnumerableDataDescriptor = {\n value: undefined,\n configurable: true,
\n enumerable: false,\n writable: true\n };\n\n function defineNonEnumer
ableDataProperty(object, name, value) {\n nonEnumerableDataDescriptor.value =
value;\n defineProperty(object, name, nonEnumerableDataDescriptor);\n }\n\n
// Mozilla's old DOM bindings are bretty busted:\n // https://bugzilla.mozill
a.org/show_bug.cgi?id=855844\n // Make sure they are create before we start mod
ifying things.\n getOwnPropertyNames(window);\n\n function getWrapperConstruct
or(node) {\n var nativePrototype = node.__proto__ || Object.getPrototypeOf(no
de);\n var wrapperConstructor = constructorTable.get(nativePrototype);\n i
f (wrapperConstructor)\n return wrapperConstructor;\n\n var parentWrappe
rConstructor = getWrapperConstructor(nativePrototype);\n\n var GeneratedWrapp
er = createWrapperConstructor(parentWrapperConstructor);\n registerInternal(n
ativePrototype, GeneratedWrapper, node);\n\n return GeneratedWrapper;\n }\n\
n function addForwardingProperties(nativePrototype, wrapperPrototype) {\n in
stallProperty(nativePrototype, wrapperPrototype, true);\n }\n\n function regis
terInstanceProperties(wrapperPrototype, instanceObject) {\n installProperty(i
nstanceObject, wrapperPrototype, false);\n }\n\n var isFirefox = /Firefox/.tes
t(navigator.userAgent);\n\n // This is used as a fallback when getting the desc
riptor fails in\n // installProperty.\n var dummyDescriptor = {\n get: func
tion() {},\n set: function(v) {},\n configurable: true,\n enumerable: t
rue\n };\n\n function isEventHandlerName(name) {\n return /^on[a-z]+$/.test
(name);\n }\n\n function isIdentifierName(name) {\n return /^\\w[a-zA-Z_0-9
]*$/.test(name);\n }\n\n // The name of the implementation property is intenti
onally hard to\n // remember. Unfortunately, browsers are slower doing obj[expr
] than\n // obj.foo so we resort to repeat this ugly name. This ugly name is ne
ver\n // used outside of this file though.\n\n function getGetter(name) {\n
return hasEval && isIdentifierName(name) ?\n new Function('return this._
_impl4cf1e782hg__.' + name) :\n function() { return this.__impl4cf1e782hg
__[name]; };\n }\n\n function getSetter(name) {\n return hasEval && isIdent
ifierName(name) ?\n new Function('v', 'this.__impl4cf1e782hg__.' + name +
' = v') :\n function(v) { this.__impl4cf1e782hg__[name] = v; };\n }\n\n
function getMethod(name) {\n return hasEval && isIdentifierName(name) ?\n
new Function('return this.__impl4cf1e782hg__.' + name +\n
'.apply(this.__impl4cf1e782hg__, arguments)') :\n function() {\n
return this.__impl4cf1e782hg__[name].apply(\n this.__impl4cf1e
782hg__, arguments);\n };\n }\n\n function getDescriptor(source, name)
{\n try {\n return Object.getOwnPropertyDescriptor(source, name);\n }
catch (ex) {\n // JSC and V8 both use data properties instead of accessors
which can\n // cause getting the property desciptor to throw an exception.
\n // https://bugs.webkit.org/show_bug.cgi?id=49739\n return dummyDesc
riptor;\n }\n }\n\n // Safari 8 exposes WebIDL attributes as an invalid acc
essor property. Its\n // descriptor has {get: undefined, set: undefined}. We th
erefore ignore the\n // shape of the descriptor and make all properties read-wr
ite.\n // https://bugs.webkit.org/show_bug.cgi?id=49739\n var isBrokenSafari =
function() {\n var descr = Object.getOwnPropertyDescriptor(Node.prototype, '
nodeType');\n return !!descr && 'set' in descr;\n }();\n\n function install
Property(source, target, allowMethod, opt_blacklist) {\n var names = getOwnPr
opertyNames(source);\n for (var i = 0; i < names.length; i++) {\n var na
me = names[i];\n if (name === 'polymerBlackList_')\n continue;\n\n
if (name in target)\n continue;\n\n if (source.polymerBlackList_
&& source.polymerBlackList_[name])\n continue;\n\n if (isFirefox) {
\n // Tickle Firefox's old bindings.\n source.__lookupGetter__(nam
e);\n }\n var descriptor = getDescriptor(source, name);\n var get
ter, setter;\n if (allowMethod && typeof descriptor.value === 'function') {
\n target[name] = getMethod(name);\n continue;\n }\n\n v
ar isEvent = isEventHandlerName(name);\n if (isEvent)\n getter = sco
pe.getEventHandlerGetter(name);\n else\n getter = getGetter(name);\n
\n if (descriptor.writable || descriptor.set || isBrokenSafari) {\n
if (isEvent)\n setter = scope.getEventHandlerSetter(name);\n els
e\n setter = getSetter(name);\n }\n\n defineProperty(target,
name, {\n get: getter,\n set: setter,\n configurable: descr
iptor.configurable,\n enumerable: descriptor.enumerable\n });\n }
\n }\n\n /**\n * @param {Function} nativeConstructor\n * @param {Function}
wrapperConstructor\n * @param {Object=} opt_instance If present, this is used
to extract\n * properties from an instance object.\n */\n function reg
ister(nativeConstructor, wrapperConstructor, opt_instance) {\n var nativeProt
otype = nativeConstructor.prototype;\n registerInternal(nativePrototype, wrap
perConstructor, opt_instance);\n mixinStatics(wrapperConstructor, nativeConst
ructor);\n }\n\n function registerInternal(nativePrototype, wrapperConstructor
, opt_instance) {\n var wrapperPrototype = wrapperConstructor.prototype;\n
assert(constructorTable.get(nativePrototype) === undefined);\n\n constructor
Table.set(nativePrototype, wrapperConstructor);\n nativePrototypeTable.set(wr
apperPrototype, nativePrototype);\n\n addForwardingProperties(nativePrototype
, wrapperPrototype);\n if (opt_instance)\n registerInstanceProperties(wr
apperPrototype, opt_instance);\n\n defineNonEnumerableDataProperty(\n
wrapperPrototype, 'constructor', wrapperConstructor);\n // Set it again. Some
VMs optimizes objects that are used as prototypes.\n wrapperConstructor.prot
otype = wrapperPrototype;\n }\n\n function isWrapperFor(wrapperConstructor, na
tiveConstructor) {\n return constructorTable.get(nativeConstructor.prototype)
===\n wrapperConstructor;\n }\n\n /**\n * Creates a generic wrapper
constructor based on |object| and its\n * constructor.\n * @param {Node} obj
ect\n * @return {Function} The generated constructor.\n */\n function regis
terObject(object) {\n var nativePrototype = Object.getPrototypeOf(object);\n\
n var superWrapperConstructor = getWrapperConstructor(nativePrototype);\n
var GeneratedWrapper = createWrapperConstructor(superWrapperConstructor);\n r
egisterInternal(nativePrototype, GeneratedWrapper, object);\n\n return Genera
tedWrapper;\n }\n\n function createWrapperConstructor(superWrapperConstructor)
{\n function GeneratedWrapper(node) {\n superWrapperConstructor.call(th
is, node);\n }\n var p = Object.create(superWrapperConstructor.prototype);
\n p.constructor = GeneratedWrapper;\n GeneratedWrapper.prototype = p;\n\n
return GeneratedWrapper;\n }\n\n function isWrapper(object) {\n return
object && object.__impl4cf1e782hg__;\n }\n\n function isNative(object) {\n
return !isWrapper(object);\n }\n\n /**\n * Wraps a node in a WrapperNode. If
there already exists a wrapper for the\n * |node| that wrapper is returned in
stead.\n * @param {Node} node\n * @return {WrapperNode}\n */\n function w
rap(impl) {\n if (impl === null)\n return null;\n\n assert(isNative(i
mpl));\n return impl.__wrapper8e3dd93a60__ ||\n (impl.__wrapper8e3dd93
a60__ = new (getWrapperConstructor(impl))(impl));\n }\n\n /**\n * Unwraps a
wrapper and returns the node it is wrapping.\n * @param {WrapperNode} wrapper\
n * @return {Node}\n */\n function unwrap(wrapper) {\n if (wrapper === n
ull)\n return null;\n assert(isWrapper(wrapper));\n return wrapper.__
impl4cf1e782hg__;\n }\n\n function unsafeUnwrap(wrapper) {\n return wrapper
.__impl4cf1e782hg__;\n }\n\n function setWrapper(impl, wrapper) {\n wrapper
.__impl4cf1e782hg__ = impl;\n impl.__wrapper8e3dd93a60__ = wrapper;\n }\n\n
/**\n * Unwraps object if it is a wrapper.\n * @param {Object} object\n *
@return {Object} The native implementation object.\n */\n function unwrapIfN
eeded(object) {\n return object && isWrapper(object) ? unwrap(object) : objec
t;\n }\n\n /**\n * Wraps object if it is not a wrapper.\n * @param {Object
} object\n * @return {Object} The wrapper for object.\n */\n function wrapI
fNeeded(object) {\n return object && !isWrapper(object) ? wrap(object) : obje
ct;\n }\n\n /**\n * Overrides the current wrapper (if any) for node.\n * @
param {Node} node\n * @param {WrapperNode=} wrapper If left out the wrapper wi
ll be created as\n * needed next time someone wraps the node.\n */\n fu
nction rewrap(node, wrapper) {\n if (wrapper === null)\n return;\n as
sert(isNative(node));\n assert(wrapper === undefined || isWrapper(wrapper));\
n node.__wrapper8e3dd93a60__ = wrapper;\n }\n\n var getterDescriptor = {\n
get: undefined,\n configurable: true,\n enumerable: true\n };\n\n fun
ction defineGetter(constructor, name, getter) {\n getterDescriptor.get = gett
er;\n defineProperty(constructor.prototype, name, getterDescriptor);\n }\n\n
function defineWrapGetter(constructor, name) {\n defineGetter(constructor,
name, function() {\n return wrap(this.__impl4cf1e782hg__[name]);\n });\n
}\n\n /**\n * Forwards existing methods on the native object to the wrapper
methods.\n * This does not wrap any of the arguments or the return value sinc
e the\n * wrapper implementation already takes care of that.\n * @param {Arr
ay.<Function>} constructors\n * @parem {Array.<string>} names\n */\n functi
on forwardMethodsToWrapper(constructors, names) {\n constructors.forEach(func
tion(constructor) {\n names.forEach(function(name) {\n constructor.p
rototype[name] = function() {\n var w = wrapIfNeeded(this);\n
return w[name].apply(w, arguments);\n };\n });\n });\n }\n\n sc
ope.assert = assert;\n scope.constructorTable = constructorTable;\n scope.defi
neGetter = defineGetter;\n scope.defineWrapGetter = defineWrapGetter;\n scope.
forwardMethodsToWrapper = forwardMethodsToWrapper;\n scope.isWrapper = isWrappe
r;\n scope.isWrapperFor = isWrapperFor;\n scope.mixin = mixin;\n scope.native
PrototypeTable = nativePrototypeTable;\n scope.oneOf = oneOf;\n scope.register
Object = registerObject;\n scope.registerWrapper = register;\n scope.rewrap =
rewrap;\n scope.setWrapper = setWrapper;\n scope.unsafeUnwrap = unsafeUnwrap;\
n scope.unwrap = unwrap;\n scope.unwrapIfNeeded = unwrapIfNeeded;\n scope.wra
p = wrap;\n scope.wrapIfNeeded = wrapIfNeeded;\n scope.wrappers = wrappers;\n\
n})(window.ShadowDOMPolyfill);\n", |
88 "/*\n * Copyright 2013 The Polymer Authors. All rights reserved.\n * Use of
this source code is goverened by a BSD-style\n * license that can be found in th
e LICENSE file.\n */\n\n(function(context) {\n 'use strict';\n\n var OriginalM
utationObserver = window.MutationObserver;\n var callbacks = [];\n var pending
= false;\n var timerFunc;\n\n function handle() {\n pending = false;\n
var copies = callbacks.slice(0);\n callbacks = [];\n for (var i = 0; i < c
opies.length; i++) {\n (0, copies[i])();\n }\n }\n\n if (OriginalMutat
ionObserver) {\n var counter = 1;\n var observer = new OriginalMutationObs
erver(handle);\n var textNode = document.createTextNode(counter);\n observ
er.observe(textNode, {characterData: true});\n\n timerFunc = function() {\n
counter = (counter + 1) % 2;\n textNode.data = counter;\n };\n\n }
else {\n timerFunc = window.setImmediate || window.setTimeout;\n }\n\n func
tion setEndOfMicrotask(func) {\n callbacks.push(func);\n if (pending)\n
return;\n pending = true;\n timerFunc(handle, 0);\n }\n\n context.set
EndOfMicrotask = setEndOfMicrotask;\n\n})(window.ShadowDOMPolyfill);\n", | 88 "/*\n * Copyright 2013 The Polymer Authors. All rights reserved.\n * Use of
this source code is goverened by a BSD-style\n * license that can be found in th
e LICENSE file.\n */\n\n(function(context) {\n 'use strict';\n\n var OriginalM
utationObserver = window.MutationObserver;\n var callbacks = [];\n var pending
= false;\n var timerFunc;\n\n function handle() {\n pending = false;\n
var copies = callbacks.slice(0);\n callbacks = [];\n for (var i = 0; i < c
opies.length; i++) {\n (0, copies[i])();\n }\n }\n\n if (OriginalMutat
ionObserver) {\n var counter = 1;\n var observer = new OriginalMutationObs
erver(handle);\n var textNode = document.createTextNode(counter);\n observ
er.observe(textNode, {characterData: true});\n\n timerFunc = function() {\n
counter = (counter + 1) % 2;\n textNode.data = counter;\n };\n\n }
else {\n timerFunc = window.setImmediate || window.setTimeout;\n }\n\n func
tion setEndOfMicrotask(func) {\n callbacks.push(func);\n if (pending)\n
return;\n pending = true;\n timerFunc(handle, 0);\n }\n\n context.set
EndOfMicrotask = setEndOfMicrotask;\n\n})(window.ShadowDOMPolyfill);\n", |
89 "/*\n * Copyright 2013 The Polymer Authors. All rights reserved.\n * Use of
this source code is goverened by a BSD-style\n * license that can be found in th
e LICENSE file.\n */\n\n(function(scope) {\n 'use strict';\n\n var setEndOfMic
rotask = scope.setEndOfMicrotask\n var wrapIfNeeded = scope.wrapIfNeeded\n var
wrappers = scope.wrappers;\n\n var registrationsTable = new WeakMap();\n var
globalMutationObservers = [];\n var isScheduled = false;\n\n function schedule
Callback() {\n if (isScheduled)\n return;\n setEndOfMicrotask(notifyO
bservers);\n isScheduled = true;\n }\n\n // http://dom.spec.whatwg.org/#mut
ation-observers\n function notifyObservers() {\n isScheduled = false;\n\n
while (globalMutationObservers.length) {\n var notifyList = globalMutation
Observers;\n globalMutationObservers = [];\n\n // Deliver changes in b
irth order of the MutationObservers.\n notifyList.sort(function(x, y) { ret
urn x.uid_ - y.uid_; });\n\n for (var i = 0; i < notifyList.length; i++) {\
n var mo = notifyList[i];\n var queue = mo.takeRecords();\n
removeTransientObserversFor(mo);\n if (queue.length) {\n mo.cal
lback_(queue, mo);\n }\n }\n }\n }\n\n\n /**\n * @param {stri
ng} type\n * @param {Node} target\n * @constructor\n */\n function Mutati
onRecord(type, target) {\n this.type = type;\n this.target = target;\n
this.addedNodes = new wrappers.NodeList();\n this.removedNodes = new wrappers
.NodeList();\n this.previousSibling = null;\n this.nextSibling = null;\n
this.attributeName = null;\n this.attributeNamespace = null;\n this.oldV
alue = null;\n }\n\n /**\n * Registers transient observers to ancestor and i
ts ancesors for the node\n * which was removed.\n * @param {!Node} ancestor\
n * @param {!Node} node\n */\n function registerTransientObservers(ancestor
, node) {\n for (; ancestor; ancestor = ancestor.parentNode) {\n var reg
istrations = registrationsTable.get(ancestor);\n if (!registrations)\n
continue;\n for (var i = 0; i < registrations.length; i++) {\n va
r registration = registrations[i];\n if (registration.options.subtree)\n
registration.addTransientObserver(node);\n }\n }\n }\n\n func
tion removeTransientObserversFor(observer) {\n for (var i = 0; i < observer.n
odes_.length; i++) {\n var node = observer.nodes_[i];\n var registrati
ons = registrationsTable.get(node);\n if (!registrations)\n return;\
n for (var j = 0; j < registrations.length; j++) {\n var registratio
n = registrations[j];\n if (registration.observer === observer)\n
registration.removeTransientObservers();\n }\n }\n }\n\n // http://d
om.spec.whatwg.org/#queue-a-mutation-record\n function enqueueMutation(target,
type, data) {\n // 1.\n var interestedObservers = Object.create(null);\n
var associatedStrings = Object.create(null);\n\n // 2.\n for (var node =
target; node; node = node.parentNode) {\n // 3.\n var registrations =
registrationsTable.get(node);\n if (!registrations)\n continue;\n
for (var j = 0; j < registrations.length; j++) {\n var registration =
registrations[j];\n var options = registration.options;\n // 1.\n
if (node !== target && !options.subtree)\n continue;\n\n
// 2.\n if (type === 'attributes' && !options.attributes)\n con
tinue;\n\n // 3. If type is \"attributes\", options's attributeFilter is
present, and\n // either options's attributeFilter does not contain name
or namespace\n // is non-null, continue.\n if (type === 'attribute
s' && options.attributeFilter &&\n (data.namespace !== null ||\n
options.attributeFilter.indexOf(data.name) === -1)) {\n continu
e;\n }\n\n // 4.\n if (type === 'characterData' && !options
.characterData)\n continue;\n\n // 5.\n if (type === 'chi
ldList' && !options.childList)\n continue;\n\n // 6.\n va
r observer = registration.observer;\n interestedObservers[observer.uid_]
= observer;\n\n // 7. If either type is \"attributes\" and options's attr
ibuteOldValue is\n // true, or type is \"characterData\" and options's ch
aracterDataOldValue\n // is true, set the paired string of registered obs
erver's observer in\n // interested observers to oldValue.\n if (t
ype === 'attributes' && options.attributeOldValue ||\n type === 'char
acterData' && options.characterDataOldValue) {\n associatedStrings[obse
rver.uid_] = data.oldValue;\n }\n }\n }\n\n var anyObserversEn
queued = false;\n\n // 4.\n for (var uid in interestedObservers) {\n
var observer = interestedObservers[uid];\n var record = new MutationRecord(
type, target);\n\n // 2.\n if ('name' in data && 'namespace' in data)
{\n record.attributeName = data.name;\n record.attributeNamespace
= data.namespace;\n }\n\n // 3.\n if (data.addedNodes)\n r
ecord.addedNodes = data.addedNodes;\n\n // 4.\n if (data.removedNodes)
\n record.removedNodes = data.removedNodes;\n\n // 5.\n if (dat
a.previousSibling)\n record.previousSibling = data.previousSibling;\n\n
// 6.\n if (data.nextSibling)\n record.nextSibling = data.nextSi
bling;\n\n // 7.\n if (associatedStrings[uid] !== undefined)\n
record.oldValue = associatedStrings[uid];\n\n // 8.\n if (!observer.re
cords_.length) {\n globalMutationObservers.push(observer);\n anyOb
serversEnqueued = true;\n }\n observer.records_.push(record);\n }\n
\n if (anyObserversEnqueued)\n scheduleCallback();\n }\n\n var slice =
Array.prototype.slice;\n\n /**\n * @param {!Object} options\n * @construct
or\n */\n function MutationObserverOptions(options) {\n this.childList = !
!options.childList;\n this.subtree = !!options.subtree;\n\n // 1. If eithe
r options' attributeOldValue or attributeFilter is present\n // and options'
attributes is omitted, set options' attributes to true.\n if (!('attributes'
in options) &&\n ('attributeOldValue' in options || 'attributeFilter' in
options)) {\n this.attributes = true;\n } else {\n this.attributes
= !!options.attributes;\n }\n\n // 2. If options' characterDataOldValue is
present and options'\n // characterData is omitted, set options' characterDa
ta to true.\n if ('characterDataOldValue' in options && !('characterData' in
options))\n this.characterData = true;\n else\n this.characterData
= !!options.characterData;\n\n // 3. & 4.\n if (!this.attributes &&\n
(options.attributeOldValue || 'attributeFilter' in options) ||\n // 5.
\n !this.characterData && options.characterDataOldValue) {\n throw n
ew TypeError();\n }\n\n this.characterData = !!options.characterData;\n
this.attributeOldValue = !!options.attributeOldValue;\n this.characterDataOl
dValue = !!options.characterDataOldValue;\n if ('attributeFilter' in options)
{\n if (options.attributeFilter == null ||\n typeof options.attri
buteFilter !== 'object') {\n throw new TypeError();\n }\n this.
attributeFilter = slice.call(options.attributeFilter);\n } else {\n this
.attributeFilter = null;\n }\n }\n\n var uidCounter = 0;\n\n /**\n * The
class that maps to the DOM MutationObserver interface.\n * @param {Function}
callback.\n * @constructor\n */\n function MutationObserver(callback) {\n
this.callback_ = callback;\n this.nodes_ = [];\n this.records_ = [];\n
this.uid_ = ++uidCounter;\n }\n\n MutationObserver.prototype = {\n constr
uctor: MutationObserver,\n\n // http://dom.spec.whatwg.org/#dom-mutationobser
ver-observe\n observe: function(target, options) {\n target = wrapIfNeed
ed(target);\n\n var newOptions = new MutationObserverOptions(options);\n\n
// 6.\n var registration;\n var registrations = registrationsTabl
e.get(target);\n if (!registrations)\n registrationsTable.set(target
, registrations = []);\n\n for (var i = 0; i < registrations.length; i++) {
\n if (registrations[i].observer === this) {\n registration = re
gistrations[i];\n // 6.1.\n registration.removeTransientObserv
ers();\n // 6.2.\n registration.options = newOptions;\n
}\n }\n\n // 7.\n if (!registration) {\n registration = n
ew Registration(this, target, newOptions);\n registrations.push(registrat
ion);\n this.nodes_.push(target);\n }\n },\n\n // http://dom.s
pec.whatwg.org/#dom-mutationobserver-disconnect\n disconnect: function() {\n
this.nodes_.forEach(function(node) {\n var registrations = registrat
ionsTable.get(node);\n for (var i = 0; i < registrations.length; i++) {\n
var registration = registrations[i];\n if (registration.obser
ver === this) {\n registrations.splice(i, 1);\n // Each no
de can only have one registered observer associated with\n // this ob
server.\n break;\n }\n }\n }, this);\n this
.records_ = [];\n },\n\n takeRecords: function() {\n var copyOfRecord
s = this.records_;\n this.records_ = [];\n return copyOfRecords;\n
}\n };\n\n /**\n * Class used to represent a registered observer.\n * @par
am {MutationObserver} observer\n * @param {Node} target\n * @param {Mutation
ObserverOptions} options\n * @constructor\n */\n function Registration(obse
rver, target, options) {\n this.observer = observer;\n this.target = targe
t;\n this.options = options;\n this.transientObservedNodes = [];\n }\n\n
Registration.prototype = {\n /**\n * Adds a transient observer on node.
The transient observer gets removed\n * next time we deliver the change reco
rds.\n * @param {Node} node\n */\n addTransientObserver: function(nod
e) {\n // Don't add transient observers on the target itself. We already ha
ve all\n // the required listeners set up on the target.\n if (node ==
= this.target)\n return;\n\n this.transientObservedNodes.push(node);
\n var registrations = registrationsTable.get(node);\n if (!registrati
ons)\n registrationsTable.set(node, registrations = []);\n\n // We k
now that registrations does not contain this because we already\n // checke
d if node === this.target.\n registrations.push(this);\n },\n\n remov
eTransientObservers: function() {\n var transientObservedNodes = this.trans
ientObservedNodes;\n this.transientObservedNodes = [];\n\n for (var i
= 0; i < transientObservedNodes.length; i++) {\n var node = transientObse
rvedNodes[i];\n var registrations = registrationsTable.get(node);\n
for (var j = 0; j < registrations.length; j++) {\n if (registrations[
j] === this) {\n registrations.splice(j, 1);\n // Each nod
e can only have one registered observer associated with\n // this obs
erver.\n break;\n }\n }\n }\n }\n };\n\n sc
ope.enqueueMutation = enqueueMutation;\n scope.registerTransientObservers = reg
isterTransientObservers;\n scope.wrappers.MutationObserver = MutationObserver;\
n scope.wrappers.MutationRecord = MutationRecord;\n\n})(window.ShadowDOMPolyfil
l);\n", | 89 "/*\n * Copyright 2013 The Polymer Authors. All rights reserved.\n * Use of
this source code is goverened by a BSD-style\n * license that can be found in th
e LICENSE file.\n */\n\n(function(scope) {\n 'use strict';\n\n var setEndOfMic
rotask = scope.setEndOfMicrotask\n var wrapIfNeeded = scope.wrapIfNeeded\n var
wrappers = scope.wrappers;\n\n var registrationsTable = new WeakMap();\n var
globalMutationObservers = [];\n var isScheduled = false;\n\n function schedule
Callback() {\n if (isScheduled)\n return;\n setEndOfMicrotask(notifyO
bservers);\n isScheduled = true;\n }\n\n // http://dom.spec.whatwg.org/#mut
ation-observers\n function notifyObservers() {\n isScheduled = false;\n\n
while (globalMutationObservers.length) {\n var notifyList = globalMutation
Observers;\n globalMutationObservers = [];\n\n // Deliver changes in b
irth order of the MutationObservers.\n notifyList.sort(function(x, y) { ret
urn x.uid_ - y.uid_; });\n\n for (var i = 0; i < notifyList.length; i++) {\
n var mo = notifyList[i];\n var queue = mo.takeRecords();\n
removeTransientObserversFor(mo);\n if (queue.length) {\n mo.cal
lback_(queue, mo);\n }\n }\n }\n }\n\n\n /**\n * @param {stri
ng} type\n * @param {Node} target\n * @constructor\n */\n function Mutati
onRecord(type, target) {\n this.type = type;\n this.target = target;\n
this.addedNodes = new wrappers.NodeList();\n this.removedNodes = new wrappers
.NodeList();\n this.previousSibling = null;\n this.nextSibling = null;\n
this.attributeName = null;\n this.attributeNamespace = null;\n this.oldV
alue = null;\n }\n\n /**\n * Registers transient observers to ancestor and i
ts ancesors for the node\n * which was removed.\n * @param {!Node} ancestor\
n * @param {!Node} node\n */\n function registerTransientObservers(ancestor
, node) {\n for (; ancestor; ancestor = ancestor.parentNode) {\n var reg
istrations = registrationsTable.get(ancestor);\n if (!registrations)\n
continue;\n for (var i = 0; i < registrations.length; i++) {\n va
r registration = registrations[i];\n if (registration.options.subtree)\n
registration.addTransientObserver(node);\n }\n }\n }\n\n func
tion removeTransientObserversFor(observer) {\n for (var i = 0; i < observer.n
odes_.length; i++) {\n var node = observer.nodes_[i];\n var registrati
ons = registrationsTable.get(node);\n if (!registrations)\n return;\
n for (var j = 0; j < registrations.length; j++) {\n var registratio
n = registrations[j];\n if (registration.observer === observer)\n
registration.removeTransientObservers();\n }\n }\n }\n\n // http://d
om.spec.whatwg.org/#queue-a-mutation-record\n function enqueueMutation(target,
type, data) {\n // 1.\n var interestedObservers = Object.create(null);\n
var associatedStrings = Object.create(null);\n\n // 2.\n for (var node =
target; node; node = node.parentNode) {\n // 3.\n var registrations =
registrationsTable.get(node);\n if (!registrations)\n continue;\n
for (var j = 0; j < registrations.length; j++) {\n var registration =
registrations[j];\n var options = registration.options;\n // 1.\n
if (node !== target && !options.subtree)\n continue;\n\n
// 2.\n if (type === 'attributes' && !options.attributes)\n con
tinue;\n\n // 3. If type is \"attributes\", options's attributeFilter is
present, and\n // either options's attributeFilter does not contain name
or namespace\n // is non-null, continue.\n if (type === 'attribute
s' && options.attributeFilter &&\n (data.namespace !== null ||\n
options.attributeFilter.indexOf(data.name) === -1)) {\n continu
e;\n }\n\n // 4.\n if (type === 'characterData' && !options
.characterData)\n continue;\n\n // 5.\n if (type === 'chi
ldList' && !options.childList)\n continue;\n\n // 6.\n va
r observer = registration.observer;\n interestedObservers[observer.uid_]
= observer;\n\n // 7. If either type is \"attributes\" and options's attr
ibuteOldValue is\n // true, or type is \"characterData\" and options's ch
aracterDataOldValue\n // is true, set the paired string of registered obs
erver's observer in\n // interested observers to oldValue.\n if (t
ype === 'attributes' && options.attributeOldValue ||\n type === 'char
acterData' && options.characterDataOldValue) {\n associatedStrings[obse
rver.uid_] = data.oldValue;\n }\n }\n }\n\n var anyObserversEn
queued = false;\n\n // 4.\n for (var uid in interestedObservers) {\n
var observer = interestedObservers[uid];\n var record = new MutationRecord(
type, target);\n\n // 2.\n if ('name' in data && 'namespace' in data)
{\n record.attributeName = data.name;\n record.attributeNamespace
= data.namespace;\n }\n\n // 3.\n if (data.addedNodes)\n r
ecord.addedNodes = data.addedNodes;\n\n // 4.\n if (data.removedNodes)
\n record.removedNodes = data.removedNodes;\n\n // 5.\n if (dat
a.previousSibling)\n record.previousSibling = data.previousSibling;\n\n
// 6.\n if (data.nextSibling)\n record.nextSibling = data.nextSi
bling;\n\n // 7.\n if (associatedStrings[uid] !== undefined)\n
record.oldValue = associatedStrings[uid];\n\n // 8.\n if (!observer.re
cords_.length) {\n globalMutationObservers.push(observer);\n anyOb
serversEnqueued = true;\n }\n observer.records_.push(record);\n }\n
\n if (anyObserversEnqueued)\n scheduleCallback();\n }\n\n var slice =
Array.prototype.slice;\n\n /**\n * @param {!Object} options\n * @construct
or\n */\n function MutationObserverOptions(options) {\n this.childList = !
!options.childList;\n this.subtree = !!options.subtree;\n\n // 1. If eithe
r options' attributeOldValue or attributeFilter is present\n // and options'
attributes is omitted, set options' attributes to true.\n if (!('attributes'
in options) &&\n ('attributeOldValue' in options || 'attributeFilter' in
options)) {\n this.attributes = true;\n } else {\n this.attributes
= !!options.attributes;\n }\n\n // 2. If options' characterDataOldValue is
present and options'\n // characterData is omitted, set options' characterDa
ta to true.\n if ('characterDataOldValue' in options && !('characterData' in
options))\n this.characterData = true;\n else\n this.characterData
= !!options.characterData;\n\n // 3. & 4.\n if (!this.attributes &&\n
(options.attributeOldValue || 'attributeFilter' in options) ||\n // 5.
\n !this.characterData && options.characterDataOldValue) {\n throw n
ew TypeError();\n }\n\n this.characterData = !!options.characterData;\n
this.attributeOldValue = !!options.attributeOldValue;\n this.characterDataOl
dValue = !!options.characterDataOldValue;\n if ('attributeFilter' in options)
{\n if (options.attributeFilter == null ||\n typeof options.attri
buteFilter !== 'object') {\n throw new TypeError();\n }\n this.
attributeFilter = slice.call(options.attributeFilter);\n } else {\n this
.attributeFilter = null;\n }\n }\n\n var uidCounter = 0;\n\n /**\n * The
class that maps to the DOM MutationObserver interface.\n * @param {Function}
callback.\n * @constructor\n */\n function MutationObserver(callback) {\n
this.callback_ = callback;\n this.nodes_ = [];\n this.records_ = [];\n
this.uid_ = ++uidCounter;\n }\n\n MutationObserver.prototype = {\n constr
uctor: MutationObserver,\n\n // http://dom.spec.whatwg.org/#dom-mutationobser
ver-observe\n observe: function(target, options) {\n target = wrapIfNeed
ed(target);\n\n var newOptions = new MutationObserverOptions(options);\n\n
// 6.\n var registration;\n var registrations = registrationsTabl
e.get(target);\n if (!registrations)\n registrationsTable.set(target
, registrations = []);\n\n for (var i = 0; i < registrations.length; i++) {
\n if (registrations[i].observer === this) {\n registration = re
gistrations[i];\n // 6.1.\n registration.removeTransientObserv
ers();\n // 6.2.\n registration.options = newOptions;\n
}\n }\n\n // 7.\n if (!registration) {\n registration = n
ew Registration(this, target, newOptions);\n registrations.push(registrat
ion);\n this.nodes_.push(target);\n }\n },\n\n // http://dom.s
pec.whatwg.org/#dom-mutationobserver-disconnect\n disconnect: function() {\n
this.nodes_.forEach(function(node) {\n var registrations = registrat
ionsTable.get(node);\n for (var i = 0; i < registrations.length; i++) {\n
var registration = registrations[i];\n if (registration.obser
ver === this) {\n registrations.splice(i, 1);\n // Each no
de can only have one registered observer associated with\n // this ob
server.\n break;\n }\n }\n }, this);\n this
.records_ = [];\n },\n\n takeRecords: function() {\n var copyOfRecord
s = this.records_;\n this.records_ = [];\n return copyOfRecords;\n
}\n };\n\n /**\n * Class used to represent a registered observer.\n * @par
am {MutationObserver} observer\n * @param {Node} target\n * @param {Mutation
ObserverOptions} options\n * @constructor\n */\n function Registration(obse
rver, target, options) {\n this.observer = observer;\n this.target = targe
t;\n this.options = options;\n this.transientObservedNodes = [];\n }\n\n
Registration.prototype = {\n /**\n * Adds a transient observer on node.
The transient observer gets removed\n * next time we deliver the change reco
rds.\n * @param {Node} node\n */\n addTransientObserver: function(nod
e) {\n // Don't add transient observers on the target itself. We already ha
ve all\n // the required listeners set up on the target.\n if (node ==
= this.target)\n return;\n\n this.transientObservedNodes.push(node);
\n var registrations = registrationsTable.get(node);\n if (!registrati
ons)\n registrationsTable.set(node, registrations = []);\n\n // We k
now that registrations does not contain this because we already\n // checke
d if node === this.target.\n registrations.push(this);\n },\n\n remov
eTransientObservers: function() {\n var transientObservedNodes = this.trans
ientObservedNodes;\n this.transientObservedNodes = [];\n\n for (var i
= 0; i < transientObservedNodes.length; i++) {\n var node = transientObse
rvedNodes[i];\n var registrations = registrationsTable.get(node);\n
for (var j = 0; j < registrations.length; j++) {\n if (registrations[
j] === this) {\n registrations.splice(j, 1);\n // Each nod
e can only have one registered observer associated with\n // this obs
erver.\n break;\n }\n }\n }\n }\n };\n\n sc
ope.enqueueMutation = enqueueMutation;\n scope.registerTransientObservers = reg
isterTransientObservers;\n scope.wrappers.MutationObserver = MutationObserver;\
n scope.wrappers.MutationRecord = MutationRecord;\n\n})(window.ShadowDOMPolyfil
l);\n", |
90 "/**\n * Copyright 2014 The Polymer Authors. All rights reserved.\n * Use of
this source code is goverened by a BSD-style\n * license that can be found in t
he LICENSE file.\n */\n\n(function(scope) {\n 'use strict';\n\n /**\n * A tr
ee scope represents the root of a tree. All nodes in a tree point to\n * the s
ame TreeScope object. The tree scope of a node get set the first time\n * it i
s accessed or when a node is added or remove to a tree.\n *\n * The root is
a Node that has no parent.\n *\n * The parent is another TreeScope. For Shad
owRoots, it is the TreeScope of\n * the host of the ShadowRoot.\n *\n * @p
aram {!Node} root\n * @param {TreeScope} parent\n * @constructor\n */\n f
unction TreeScope(root, parent) {\n /** @type {!Node} */\n this.root = roo
t;\n\n /** @type {TreeScope} */\n this.parent = parent;\n }\n\n TreeScop
e.prototype = {\n get renderer() {\n if (this.root instanceof scope.wrap
pers.ShadowRoot) {\n return scope.getRendererForHost(this.root.host);\n
}\n return null;\n },\n\n contains: function(treeScope) {\n
for (; treeScope; treeScope = treeScope.parent) {\n if (treeScope === thi
s)\n return true;\n }\n return false;\n }\n };\n\n funct
ion setTreeScope(node, treeScope) {\n if (node.treeScope_ !== treeScope) {\n
node.treeScope_ = treeScope;\n for (var sr = node.shadowRoot; sr; sr =
sr.olderShadowRoot) {\n sr.treeScope_.parent = treeScope;\n }\n
for (var child = node.firstChild; child; child = child.nextSibling) {\n
setTreeScope(child, treeScope);\n }\n }\n }\n\n function getTreeScope
(node) {\n if (node instanceof scope.wrappers.Window) {\n debugger;\n
}\n\n if (node.treeScope_)\n return node.treeScope_;\n var parent =
node.parentNode;\n var treeScope;\n if (parent)\n treeScope = getTree
Scope(parent);\n else\n treeScope = new TreeScope(node, null);\n retu
rn node.treeScope_ = treeScope;\n }\n\n scope.TreeScope = TreeScope;\n scope.
getTreeScope = getTreeScope;\n scope.setTreeScope = setTreeScope;\n\n})(window.
ShadowDOMPolyfill);\n", | 90 "/**\n * Copyright 2014 The Polymer Authors. All rights reserved.\n * Use of
this source code is goverened by a BSD-style\n * license that can be found in t
he LICENSE file.\n */\n\n(function(scope) {\n 'use strict';\n\n /**\n * A tr
ee scope represents the root of a tree. All nodes in a tree point to\n * the s
ame TreeScope object. The tree scope of a node get set the first time\n * it i
s accessed or when a node is added or remove to a tree.\n *\n * The root is
a Node that has no parent.\n *\n * The parent is another TreeScope. For Shad
owRoots, it is the TreeScope of\n * the host of the ShadowRoot.\n *\n * @p
aram {!Node} root\n * @param {TreeScope} parent\n * @constructor\n */\n f
unction TreeScope(root, parent) {\n /** @type {!Node} */\n this.root = roo
t;\n\n /** @type {TreeScope} */\n this.parent = parent;\n }\n\n TreeScop
e.prototype = {\n get renderer() {\n if (this.root instanceof scope.wrap
pers.ShadowRoot) {\n return scope.getRendererForHost(this.root.host);\n
}\n return null;\n },\n\n contains: function(treeScope) {\n
for (; treeScope; treeScope = treeScope.parent) {\n if (treeScope === thi
s)\n return true;\n }\n return false;\n }\n };\n\n funct
ion setTreeScope(node, treeScope) {\n if (node.treeScope_ !== treeScope) {\n
node.treeScope_ = treeScope;\n for (var sr = node.shadowRoot; sr; sr =
sr.olderShadowRoot) {\n sr.treeScope_.parent = treeScope;\n }\n
for (var child = node.firstChild; child; child = child.nextSibling) {\n
setTreeScope(child, treeScope);\n }\n }\n }\n\n function getTreeScope
(node) {\n if (node instanceof scope.wrappers.Window) {\n debugger;\n
}\n\n if (node.treeScope_)\n return node.treeScope_;\n var parent =
node.parentNode;\n var treeScope;\n if (parent)\n treeScope = getTree
Scope(parent);\n else\n treeScope = new TreeScope(node, null);\n retu
rn node.treeScope_ = treeScope;\n }\n\n scope.TreeScope = TreeScope;\n scope.
getTreeScope = getTreeScope;\n scope.setTreeScope = setTreeScope;\n\n})(window.
ShadowDOMPolyfill);\n", |
91 "// Copyright 2013 The Polymer Authors. All rights reserved.\n// Use of this
source code is goverened by a BSD-style\n// license that can be found in the LI
CENSE file.\n\n(function(scope) {\n 'use strict';\n\n var forwardMethodsToWrap
per = scope.forwardMethodsToWrapper;\n var getTreeScope = scope.getTreeScope;\n
var mixin = scope.mixin;\n var registerWrapper = scope.registerWrapper;\n va
r setWrapper = scope.setWrapper;\n var unsafeUnwrap = scope.unsafeUnwrap;\n va
r unwrap = scope.unwrap;\n var wrap = scope.wrap;\n var wrappers = scope.wrapp
ers;\n\n var wrappedFuns = new WeakMap();\n var listenersTable = new WeakMap()
;\n var handledEventsTable = new WeakMap();\n var currentlyDispatchingEvents =
new WeakMap();\n var targetTable = new WeakMap();\n var currentTargetTable =
new WeakMap();\n var relatedTargetTable = new WeakMap();\n var eventPhaseTable
= new WeakMap();\n var stopPropagationTable = new WeakMap();\n var stopImmedi
atePropagationTable = new WeakMap();\n var eventHandlersTable = new WeakMap();\
n var eventPathTable = new WeakMap();\n\n function isShadowRoot(node) {\n r
eturn node instanceof wrappers.ShadowRoot;\n }\n\n function rootOfNode(node) {
\n return getTreeScope(node).root;\n }\n\n // http://w3c.github.io/webcompo
nents/spec/shadow/#event-paths\n function getEventPath(node, event) {\n var
path = [];\n var current = node;\n path.push(current);\n while (current
) {\n // 4.1.\n var destinationInsertionPoints = getDestinationInserti
onPoints(current);\n if (destinationInsertionPoints && destinationInsertion
Points.length > 0) {\n // 4.1.1\n for (var i = 0; i < destinationI
nsertionPoints.length; i++) {\n var insertionPoint = destinationInserti
onPoints[i];\n // 4.1.1.1\n if (isShadowInsertionPoint(inserti
onPoint)) {\n var shadowRoot = rootOfNode(insertionPoint);\n
// 4.1.1.1.2\n var olderShadowRoot = shadowRoot.olderShadowRoot;\n
if (olderShadowRoot)\n path.push(olderShadowRoot);\n
}\n\n // 4.1.1.2\n path.push(insertionPoint);\n
}\n\n // 4.1.2\n current = destinationInsertionPoints[\n
destinationInsertionPoints.length - 1];\n\n // 4.2\n } else {\n
if (isShadowRoot(current)) {\n if (inSameTree(node, current) && even
tMustBeStopped(event)) {\n // Stop this algorithm\n break;
\n }\n current = current.host;\n path.push(current);\
n\n // 4.2.2\n } else {\n current = current.parentNode;\n
if (current)\n path.push(current);\n }\n }\n
}\n\n return path;\n }\n\n // http://w3c.github.io/webcomponents/spec/shad
ow/#dfn-events-always-stopped\n function eventMustBeStopped(event) {\n if (!
event)\n return false;\n\n switch (event.type) {\n case 'abort':\n
case 'error':\n case 'select':\n case 'change':\n case 'load
':\n case 'reset':\n case 'resize':\n case 'scroll':\n case
'selectstart':\n return true;\n }\n return false;\n }\n\n // http
://w3c.github.io/webcomponents/spec/shadow/#dfn-shadow-insertion-point\n functi
on isShadowInsertionPoint(node) {\n return node instanceof HTMLShadowElement;
\n // and make sure that there are no shadow precing this?\n // and that t
here is no content ancestor?\n }\n\n function getDestinationInsertionPoints(no
de) {\n return scope.getDestinationInsertionPoints(node);\n }\n\n // http:/
/w3c.github.io/webcomponents/spec/shadow/#event-retargeting\n function eventRet
argetting(path, currentTarget) {\n if (path.length === 0)\n return curre
ntTarget;\n\n // The currentTarget might be the window object. Use its docume
nt for the\n // purpose of finding the retargetted node.\n if (currentTarg
et instanceof wrappers.Window)\n currentTarget = currentTarget.document;\n\
n var currentTargetTree = getTreeScope(currentTarget);\n var originalTarge
t = path[0];\n var originalTargetTree = getTreeScope(originalTarget);\n va
r relativeTargetTree =\n lowestCommonInclusiveAncestor(currentTargetTree,
originalTargetTree);\n\n for (var i = 0; i < path.length; i++) {\n var
node = path[i];\n if (getTreeScope(node) === relativeTargetTree)\n r
eturn node;\n }\n\n return path[path.length - 1];\n }\n\n function getTr
eeScopeAncestors(treeScope) {\n var ancestors = [];\n for (;treeScope; tre
eScope = treeScope.parent) {\n ancestors.push(treeScope);\n }\n retur
n ancestors;\n }\n\n function lowestCommonInclusiveAncestor(tsA, tsB) {\n v
ar ancestorsA = getTreeScopeAncestors(tsA);\n var ancestorsB = getTreeScopeAn
cestors(tsB);\n\n var result = null;\n while (ancestorsA.length > 0 && anc
estorsB.length > 0) {\n var a = ancestorsA.pop();\n var b = ancestorsB
.pop();\n if (a === b)\n result = a;\n else\n break;\n
}\n return result;\n }\n\n function getTreeScopeRoot(ts) {\n if (!ts.p
arent)\n return ts;\n return getTreeScopeRoot(ts.parent);\n }\n\n func
tion relatedTargetResolution(event, currentTarget, relatedTarget) {\n // In c
ase the current target is a window use its document for the purpose\n // of r
etargetting the related target.\n if (currentTarget instanceof wrappers.Windo
w)\n currentTarget = currentTarget.document;\n\n var currentTargetTree =
getTreeScope(currentTarget);\n var relatedTargetTree = getTreeScope(relatedT
arget);\n\n var relatedTargetEventPath = getEventPath(relatedTarget, event);\
n\n var lowestCommonAncestorTree;\n\n // 4\n var lowestCommonAncestorTr
ee =\n lowestCommonInclusiveAncestor(currentTargetTree, relatedTargetTree
);\n\n // 5\n if (!lowestCommonAncestorTree)\n lowestCommonAncestorTr
ee = relatedTargetTree.root;\n\n // 6\n for (var commonAncestorTree = lowe
stCommonAncestorTree;\n commonAncestorTree;\n commonAncestorTree
= commonAncestorTree.parent) {\n // 6.1\n var adjustedRelatedTarget;\
n for (var i = 0; i < relatedTargetEventPath.length; i++) {\n var no
de = relatedTargetEventPath[i];\n if (getTreeScope(node) === commonAncest
orTree)\n return node;\n }\n }\n\n return null;\n }\n\n fu
nction inSameTree(a, b) {\n return getTreeScope(a) === getTreeScope(b);\n }\
n\n var NONE = 0;\n var CAPTURING_PHASE = 1;\n var AT_TARGET = 2;\n var BUBB
LING_PHASE = 3;\n\n // pendingError is used to rethrow the first error we got d
uring an event\n // dispatch. The browser actually reports all errors but to do
that we would\n // need to rethrow the error asynchronously.\n var pendingErr
or;\n\n function dispatchOriginalEvent(originalEvent) {\n // Make sure this
event is only dispatched once.\n if (handledEventsTable.get(originalEvent))\n
return;\n handledEventsTable.set(originalEvent, true);\n dispatchEve
nt(wrap(originalEvent), wrap(originalEvent.target));\n if (pendingError) {\n
var err = pendingError;\n pendingError = null;\n throw err;\n
}\n }\n\n function dispatchEvent(event, originalWrapperTarget) {\n if (curr
entlyDispatchingEvents.get(event))\n throw new Error('InvalidStateError');\
n\n currentlyDispatchingEvents.set(event, true);\n\n // Render to ensure t
hat the event path is correct.\n scope.renderAllPending();\n var eventPath
;\n\n // http://www.whatwg.org/specs/web-apps/current-work/multipage/webappap
is.html#events-and-the-window-object\n // All events dispatched on Nodes with
a default view, except load events,\n // should propagate to the Window.\n\n
// http://www.whatwg.org/specs/web-apps/current-work/multipage/the-end.html#
the-end\n var overrideTarget;\n var win;\n var type = event.type;\n\n
// Should really be not cancelable too but since Firefox has a bug there\n
// we skip that check.\n // https://bugzilla.mozilla.org/show_bug.cgi?id=9994
56\n if (type === 'load' && !event.bubbles) {\n var doc = originalWrappe
rTarget;\n if (doc instanceof wrappers.Document && (win = doc.defaultView))
{\n overrideTarget = doc;\n eventPath = [];\n }\n }\n\n
if (!eventPath) {\n if (originalWrapperTarget instanceof wrappers.Window)
{\n win = originalWrapperTarget;\n eventPath = [];\n } else
{\n eventPath = getEventPath(originalWrapperTarget, event);\n\n if
(event.type !== 'load') {\n var doc = eventPath[eventPath.length - 1];
\n if (doc instanceof wrappers.Document)\n win = doc.default
View;\n }\n }\n }\n\n eventPathTable.set(event, eventPath);\n\
n if (dispatchCapturing(event, eventPath, win, overrideTarget)) {\n if (
dispatchAtTarget(event, eventPath, win, overrideTarget)) {\n dispatchBubb
ling(event, eventPath, win, overrideTarget);\n }\n }\n\n eventPhaseTa
ble.set(event, NONE);\n currentTargetTable.delete(event, null);\n currentl
yDispatchingEvents.delete(event);\n\n return event.defaultPrevented;\n }\n\n
function dispatchCapturing(event, eventPath, win, overrideTarget) {\n var p
hase = CAPTURING_PHASE;\n\n if (win) {\n if (!invoke(win, event, phase,
eventPath, overrideTarget))\n return false;\n }\n\n for (var i = ev
entPath.length - 1; i > 0; i--) {\n if (!invoke(eventPath[i], event, phase,
eventPath, overrideTarget))\n return false;\n }\n\n return true;\n
}\n\n function dispatchAtTarget(event, eventPath, win, overrideTarget) {\n
var phase = AT_TARGET;\n var currentTarget = eventPath[0] || win;\n retur
n invoke(currentTarget, event, phase, eventPath, overrideTarget);\n }\n\n func
tion dispatchBubbling(event, eventPath, win, overrideTarget) {\n var phase =
BUBBLING_PHASE;\n for (var i = 1; i < eventPath.length; i++) {\n if (!in
voke(eventPath[i], event, phase, eventPath, overrideTarget))\n return;\n
}\n\n if (win && eventPath.length > 0) {\n invoke(win, event, phase,
eventPath, overrideTarget);\n }\n }\n\n function invoke(currentTarget, even
t, phase, eventPath, overrideTarget) {\n var listeners = listenersTable.get(c
urrentTarget);\n if (!listeners)\n return true;\n\n var target = over
rideTarget || eventRetargetting(eventPath, currentTarget);\n\n if (target ===
currentTarget) {\n if (phase === CAPTURING_PHASE)\n return true;\n\
n if (phase === BUBBLING_PHASE)\n phase = AT_TARGET;\n\n } else
if (phase === BUBBLING_PHASE && !event.bubbles) {\n return true;\n }\n\n
if ('relatedTarget' in event) {\n var originalEvent = unwrap(event);\n
var unwrappedRelatedTarget = originalEvent.relatedTarget;\n\n // X-Tag
sets relatedTarget on a CustomEvent. If they do that there is no\n // way
to have relatedTarget return the adjusted target but worse is that\n // the
originalEvent might not have a relatedTarget so we hit an assert\n // when
we try to wrap it.\n if (unwrappedRelatedTarget) {\n // In IE we ca
n get objects that are not EventTargets at this point.\n // Safari does n
ot have an EventTarget interface so revert to checking\n // for addEventL
istener as an approximation.\n if (unwrappedRelatedTarget instanceof Obje
ct &&\n unwrappedRelatedTarget.addEventListener) {\n var rel
atedTarget = wrap(unwrappedRelatedTarget);\n\n var adjusted =\n
relatedTargetResolution(event, currentTarget, relatedTarget);\n i
f (adjusted === target)\n return true;\n } else {\n a
djusted = null;\n }\n relatedTargetTable.set(event, adjusted);\n
}\n }\n\n eventPhaseTable.set(event, phase);\n var type = event.typ
e;\n\n var anyRemoved = false;\n // targetTable.set(event, target);\n t
argetTable.set(event, target);\n currentTargetTable.set(event, currentTarget)
;\n\n // Keep track of the invoke depth so that we only clean up the removed\
n // listeners if we are in the outermost invoke.\n listeners.depth++;\n\n
for (var i = 0, len = listeners.length; i < len; i++) {\n var listener
= listeners[i];\n if (listener.removed) {\n anyRemoved = true;\n
continue;\n }\n\n if (listener.type !== type ||\n !listen
er.capture && phase === CAPTURING_PHASE ||\n listener.capture && phase
=== BUBBLING_PHASE) {\n continue;\n }\n\n try {\n if (ty
peof listener.handler === 'function')\n listener.handler.call(currentTa
rget, event);\n else\n listener.handler.handleEvent(event);\n\n
if (stopImmediatePropagationTable.get(event))\n return false;\n\
n } catch (ex) {\n if (!pendingError)\n pendingError = ex;\
n }\n }\n\n listeners.depth--;\n\n if (anyRemoved && listeners.dep
th === 0) {\n var copy = listeners.slice();\n listeners.length = 0;\n
for (var i = 0; i < copy.length; i++) {\n if (!copy[i].removed)\n
listeners.push(copy[i]);\n }\n }\n\n return !stopPropagationTa
ble.get(event);\n }\n\n function Listener(type, handler, capture) {\n this.
type = type;\n this.handler = handler;\n this.capture = Boolean(capture);\
n }\n Listener.prototype = {\n equals: function(that) {\n return this.
handler === that.handler && this.type === that.type &&\n this.capture =
== that.capture;\n },\n get removed() {\n return this.handler === nul
l;\n },\n remove: function() {\n this.handler = null;\n }\n };\n\
n var OriginalEvent = window.Event;\n OriginalEvent.prototype.polymerBlackList
_ = {\n returnValue: true,\n // TODO(arv): keyLocation is part of Keyboard
Event but Firefox does not\n // support constructable KeyboardEvent so we kee
p it here for now.\n keyLocation: true\n };\n\n /**\n * Creates a new Eve
nt wrapper or wraps an existin native Event object.\n * @param {string|Event}
type\n * @param {Object=} options\n * @constructor\n */\n function Event(
type, options) {\n if (type instanceof OriginalEvent) {\n var impl = typ
e;\n if (!OriginalBeforeUnloadEvent && impl.type === 'beforeunload') {\n
return new BeforeUnloadEvent(impl);\n }\n setWrapper(impl, this);
\n } else {\n return wrap(constructEvent(OriginalEvent, 'Event', type, o
ptions));\n }\n }\n Event.prototype = {\n get target() {\n return t
argetTable.get(this);\n },\n get currentTarget() {\n return currentTa
rgetTable.get(this);\n },\n get eventPhase() {\n return eventPhaseTab
le.get(this);\n },\n get path() {\n var eventPath = eventPathTable.ge
t(this);\n if (!eventPath)\n return [];\n // TODO(arv): Event p
ath should contain window.\n return eventPath.slice();\n },\n stopPro
pagation: function() {\n stopPropagationTable.set(this, true);\n },\n
stopImmediatePropagation: function() {\n stopPropagationTable.set(this, tr
ue);\n stopImmediatePropagationTable.set(this, true);\n }\n };\n regis
terWrapper(OriginalEvent, Event, document.createEvent('Event'));\n\n function u
nwrapOptions(options) {\n if (!options || !options.relatedTarget)\n retu
rn options;\n return Object.create(options, {\n relatedTarget: {value: u
nwrap(options.relatedTarget)}\n });\n }\n\n function registerGenericEvent(n
ame, SuperEvent, prototype) {\n var OriginalEvent = window[name];\n var Ge
nericEvent = function(type, options) {\n if (type instanceof OriginalEvent)
\n setWrapper(type, this);\n else\n return wrap(constructEven
t(OriginalEvent, name, type, options));\n };\n GenericEvent.prototype = Ob
ject.create(SuperEvent.prototype);\n if (prototype)\n mixin(GenericEvent
.prototype, prototype);\n if (OriginalEvent) {\n // - Old versions of Sa
fari fails on new FocusEvent (and others?).\n // - IE does not support even
t constructors.\n // - createEvent('FocusEvent') throws in Firefox.\n
// => Try the best practice solution first and fallback to the old way\n //
if needed.\n try {\n registerWrapper(OriginalEvent, GenericEvent, n
ew OriginalEvent('temp'));\n } catch (ex) {\n registerWrapper(Origin
alEvent, GenericEvent,\n document.createEvent(name));\n
}\n }\n return GenericEvent;\n }\n\n var UIEvent = registerGenericEv
ent('UIEvent', Event);\n var CustomEvent = registerGenericEvent('CustomEvent',
Event);\n\n var relatedTargetProto = {\n get relatedTarget() {\n var re
latedTarget = relatedTargetTable.get(this);\n // relatedTarget can be null.
\n if (relatedTarget !== undefined)\n return relatedTarget;\n r
eturn wrap(unwrap(this).relatedTarget);\n }\n };\n\n function getInitFuncti
on(name, relatedTargetIndex) {\n return function() {\n arguments[related
TargetIndex] = unwrap(arguments[relatedTargetIndex]);\n var impl = unwrap(t
his);\n impl[name].apply(impl, arguments);\n };\n }\n\n var mouseEvent
Proto = mixin({\n initMouseEvent: getInitFunction('initMouseEvent', 14)\n },
relatedTargetProto);\n\n var focusEventProto = mixin({\n initFocusEvent: ge
tInitFunction('initFocusEvent', 5)\n }, relatedTargetProto);\n\n var MouseEven
t = registerGenericEvent('MouseEvent', UIEvent, mouseEventProto);\n var FocusEv
ent = registerGenericEvent('FocusEvent', UIEvent, focusEventProto);\n\n // In c
ase the browser does not support event constructors we polyfill that\n // by ca
lling `createEvent('Foo')` and `initFooEvent` where the arguments to\n // `init
FooEvent` are derived from the registered default event init dict.\n var defaul
tInitDicts = Object.create(null);\n\n var supportsEventConstructors = (function
() {\n try {\n new window.FocusEvent('focus');\n } catch (ex) {\n
return false;\n }\n return true;\n })();\n\n /**\n * Constructs a ne
w native event.\n */\n function constructEvent(OriginalEvent, name, type, opt
ions) {\n if (supportsEventConstructors)\n return new OriginalEvent(type
, unwrapOptions(options));\n\n // Create the arguments from the default dicti
onary.\n var event = unwrap(document.createEvent(name));\n var defaultDict
= defaultInitDicts[name];\n var args = [type];\n Object.keys(defaultDict)
.forEach(function(key) {\n var v = options != null && key in options ?\n
options[key] : defaultDict[key];\n if (key === 'relatedTarget')\n
v = unwrap(v);\n args.push(v);\n });\n event['init' + name].appl
y(event, args);\n return event;\n }\n\n if (!supportsEventConstructors) {\n
var configureEventConstructor = function(name, initDict, superName) {\n
if (superName) {\n var superDict = defaultInitDicts[superName];\n
initDict = mixin(mixin({}, superDict), initDict);\n }\n\n defaultInit
Dicts[name] = initDict;\n };\n\n // The order of the default event init di
ctionary keys is important, the\n // arguments to initFooEvent is derived fro
m that.\n configureEventConstructor('Event', {bubbles: false, cancelable: fal
se});\n configureEventConstructor('CustomEvent', {detail: null}, 'Event');\n
configureEventConstructor('UIEvent', {view: null, detail: 0}, 'Event');\n
configureEventConstructor('MouseEvent', {\n screenX: 0,\n screenY: 0,\
n clientX: 0,\n clientY: 0,\n ctrlKey: false,\n altKey: fals
e,\n shiftKey: false,\n metaKey: false,\n button: 0,\n relat
edTarget: null\n }, 'UIEvent');\n configureEventConstructor('FocusEvent',
{relatedTarget: null}, 'UIEvent');\n }\n\n // Safari 7 does not yet have Befor
eUnloadEvent.\n // https://bugs.webkit.org/show_bug.cgi?id=120849\n var Origin
alBeforeUnloadEvent = window.BeforeUnloadEvent;\n\n function BeforeUnloadEvent(
impl) {\n Event.call(this, impl);\n }\n BeforeUnloadEvent.prototype = Objec
t.create(Event.prototype);\n mixin(BeforeUnloadEvent.prototype, {\n get retu
rnValue() {\n return unsafeUnwrap(this).returnValue;\n },\n set retur
nValue(v) {\n unsafeUnwrap(this).returnValue = v;\n }\n });\n\n if (Or
iginalBeforeUnloadEvent)\n registerWrapper(OriginalBeforeUnloadEvent, BeforeU
nloadEvent);\n\n function isValidListener(fun) {\n if (typeof fun === 'funct
ion')\n return true;\n return fun && fun.handleEvent;\n }\n\n function
isMutationEvent(type) {\n switch (type) {\n case 'DOMAttrModified':\n
case 'DOMAttributeNameChanged':\n case 'DOMCharacterDataModified':\n
case 'DOMElementNameChanged':\n case 'DOMNodeInserted':\n case 'DOM
NodeInsertedIntoDocument':\n case 'DOMNodeRemoved':\n case 'DOMNodeRem
ovedFromDocument':\n case 'DOMSubtreeModified':\n return true;\n
}\n return false;\n }\n\n var OriginalEventTarget = window.EventTarget;\n\n
/**\n * This represents a wrapper for an EventTarget.\n * @param {!EventTa
rget} impl The original event target.\n * @constructor\n */\n function Even
tTarget(impl) {\n setWrapper(impl, this);\n }\n\n // Node and Window have d
ifferent internal type checks in WebKit so we cannot\n // use the same method a
s the original function.\n var methodNames = [\n 'addEventListener',\n 'r
emoveEventListener',\n 'dispatchEvent'\n ];\n\n [Node, Window].forEach(func
tion(constructor) {\n var p = constructor.prototype;\n methodNames.forEach
(function(name) {\n Object.defineProperty(p, name + '_', {value: p[name]});
\n });\n });\n\n function getTargetToListenAt(wrapper) {\n if (wrapper i
nstanceof wrappers.ShadowRoot)\n wrapper = wrapper.host;\n return unwrap
(wrapper);\n }\n\n EventTarget.prototype = {\n addEventListener: function(t
ype, fun, capture) {\n if (!isValidListener(fun) || isMutationEvent(type))\
n return;\n\n var listener = new Listener(type, fun, capture);\n
var listeners = listenersTable.get(this);\n if (!listeners) {\n li
steners = [];\n listeners.depth = 0;\n listenersTable.set(this, li
steners);\n } else {\n // Might have a duplicate.\n for (var
i = 0; i < listeners.length; i++) {\n if (listener.equals(listeners[i])
)\n return;\n }\n }\n\n listeners.push(listener);\n\
n var target = getTargetToListenAt(this);\n target.addEventListener_(t
ype, dispatchOriginalEvent, true);\n },\n removeEventListener: function(ty
pe, fun, capture) {\n capture = Boolean(capture);\n var listeners = li
stenersTable.get(this);\n if (!listeners)\n return;\n var count
= 0, found = false;\n for (var i = 0; i < listeners.length; i++) {\n
if (listeners[i].type === type && listeners[i].capture === capture) {\n
count++;\n if (listeners[i].handler === fun) {\n found =
true;\n listeners[i].remove();\n }\n }\n }\n\n
if (found && count === 1) {\n var target = getTargetToListenAt(this);
\n target.removeEventListener_(type, dispatchOriginalEvent, true);\n
}\n },\n dispatchEvent: function(event) {\n // We want to use the na
tive dispatchEvent because it triggers the default\n // actions (like check
ing a checkbox). However, if there are no listeners\n // in the composed tr
ee then there are no events that will trigger and\n // listeners in the non
composed tree that are part of the event path are\n // not notified.\n
//\n // If we find out that there are no listeners in the composed tree w
e add\n // a temporary listener to the target which makes us get called bac
k even\n // in that case.\n\n var nativeEvent = unwrap(event);\n
var eventType = nativeEvent.type;\n\n // Allow dispatching the same event a
gain. This is safe because if user\n // code calls this during an existing
dispatch of the same event the\n // native dispatchEvent throws (that is re
quired by the spec).\n handledEventsTable.set(nativeEvent, false);\n\n
// Force rendering since we prefer native dispatch and that works on the\n
// composed tree.\n scope.renderAllPending();\n\n var tempListener;\n
if (!hasListenerInAncestors(this, eventType)) {\n tempListener = fu
nction() {};\n this.addEventListener(eventType, tempListener, true);\n
}\n\n try {\n return unwrap(this).dispatchEvent_(nativeEvent);\n
} finally {\n if (tempListener)\n this.removeEventListener(
eventType, tempListener, true);\n }\n }\n };\n\n function hasListener(
node, type) {\n var listeners = listenersTable.get(node);\n if (listeners)
{\n for (var i = 0; i < listeners.length; i++) {\n if (!listeners[i
].removed && listeners[i].type === type)\n return true;\n }\n }
\n return false;\n }\n\n function hasListenerInAncestors(target, type) {\n
for (var node = unwrap(target); node; node = node.parentNode) {\n if (ha
sListener(wrap(node), type))\n return true;\n }\n return false;\n
}\n\n if (OriginalEventTarget)\n registerWrapper(OriginalEventTarget, EventT
arget);\n\n function wrapEventTargetMethods(constructors) {\n forwardMethods
ToWrapper(constructors, methodNames);\n }\n\n var originalElementFromPoint = d
ocument.elementFromPoint;\n\n function elementFromPoint(self, document, x, y) {
\n scope.renderAllPending();\n\n var element =\n wrap(originalEleme
ntFromPoint.call(unsafeUnwrap(document), x, y));\n if (!element)\n retur
n null;\n var path = getEventPath(element, null);\n\n // scope the path to
this TreeScope\n var idx = path.lastIndexOf(self);\n if (idx == -1)\n
return null;\n else\n path = path.slice(0, idx);\n\n // TODO(dfreed
m): pass idx to eventRetargetting to avoid array copy\n return eventRetargett
ing(path, self);\n }\n\n /**\n * Returns a function that is to be used as a
getter for `onfoo` properties.\n * @param {string} name\n * @return {Functio
n}\n */\n function getEventHandlerGetter(name) {\n return function() {\n
var inlineEventHandlers = eventHandlersTable.get(this);\n return inline
EventHandlers && inlineEventHandlers[name] &&\n inlineEventHandlers[nam
e].value || null;\n };\n }\n\n /**\n * Returns a function that is to be
used as a setter for `onfoo` properties.\n * @param {string} name\n * @retur
n {Function}\n */\n function getEventHandlerSetter(name) {\n var eventType
= name.slice(2);\n return function(value) {\n var inlineEventHandlers =
eventHandlersTable.get(this);\n if (!inlineEventHandlers) {\n inlin
eEventHandlers = Object.create(null);\n eventHandlersTable.set(this, inli
neEventHandlers);\n }\n\n var old = inlineEventHandlers[name];\n
if (old)\n this.removeEventListener(eventType, old.wrapped, false);\n\n
if (typeof value === 'function') {\n var wrapped = function(e) {\n
var rv = value.call(this, e);\n if (rv === false)\n e
.preventDefault();\n else if (name === 'onbeforeunload' && typeof rv ==
= 'string')\n e.returnValue = rv;\n // mouseover uses true f
or preventDefault but preventDefault for\n // mouseover is ignored by b
rowsers these day.\n };\n\n this.addEventListener(eventType, wrapp
ed, false);\n inlineEventHandlers[name] = {\n value: value,\n
wrapped: wrapped\n };\n }\n };\n }\n\n scope.elementFrom
Point = elementFromPoint;\n scope.getEventHandlerGetter = getEventHandlerGetter
;\n scope.getEventHandlerSetter = getEventHandlerSetter;\n scope.wrapEventTarg
etMethods = wrapEventTargetMethods;\n scope.wrappers.BeforeUnloadEvent = Before
UnloadEvent;\n scope.wrappers.CustomEvent = CustomEvent;\n scope.wrappers.Even
t = Event;\n scope.wrappers.EventTarget = EventTarget;\n scope.wrappers.FocusE
vent = FocusEvent;\n scope.wrappers.MouseEvent = MouseEvent;\n scope.wrappers.
UIEvent = UIEvent;\n\n})(window.ShadowDOMPolyfill);\n", | 91 "// Copyright 2013 The Polymer Authors. All rights reserved.\n// Use of this
source code is goverened by a BSD-style\n// license that can be found in the LI
CENSE file.\n\n(function(scope) {\n 'use strict';\n\n var forwardMethodsToWrap
per = scope.forwardMethodsToWrapper;\n var getTreeScope = scope.getTreeScope;\n
var mixin = scope.mixin;\n var registerWrapper = scope.registerWrapper;\n va
r setWrapper = scope.setWrapper;\n var unsafeUnwrap = scope.unsafeUnwrap;\n va
r unwrap = scope.unwrap;\n var wrap = scope.wrap;\n var wrappers = scope.wrapp
ers;\n\n var wrappedFuns = new WeakMap();\n var listenersTable = new WeakMap()
;\n var handledEventsTable = new WeakMap();\n var currentlyDispatchingEvents =
new WeakMap();\n var targetTable = new WeakMap();\n var currentTargetTable =
new WeakMap();\n var relatedTargetTable = new WeakMap();\n var eventPhaseTable
= new WeakMap();\n var stopPropagationTable = new WeakMap();\n var stopImmedi
atePropagationTable = new WeakMap();\n var eventHandlersTable = new WeakMap();\
n var eventPathTable = new WeakMap();\n\n function isShadowRoot(node) {\n r
eturn node instanceof wrappers.ShadowRoot;\n }\n\n function rootOfNode(node) {
\n return getTreeScope(node).root;\n }\n\n // http://w3c.github.io/webcompo
nents/spec/shadow/#event-paths\n function getEventPath(node, event) {\n var
path = [];\n var current = node;\n path.push(current);\n while (current
) {\n // 4.1.\n var destinationInsertionPoints = getDestinationInserti
onPoints(current);\n if (destinationInsertionPoints && destinationInsertion
Points.length > 0) {\n // 4.1.1\n for (var i = 0; i < destinationI
nsertionPoints.length; i++) {\n var insertionPoint = destinationInserti
onPoints[i];\n // 4.1.1.1\n if (isShadowInsertionPoint(inserti
onPoint)) {\n var shadowRoot = rootOfNode(insertionPoint);\n
// 4.1.1.1.2\n var olderShadowRoot = shadowRoot.olderShadowRoot;\n
if (olderShadowRoot)\n path.push(olderShadowRoot);\n
}\n\n // 4.1.1.2\n path.push(insertionPoint);\n
}\n\n // 4.1.2\n current = destinationInsertionPoints[\n
destinationInsertionPoints.length - 1];\n\n // 4.2\n } else {\n
if (isShadowRoot(current)) {\n if (inSameTree(node, current) && even
tMustBeStopped(event)) {\n // Stop this algorithm\n break;
\n }\n current = current.host;\n path.push(current);\
n\n // 4.2.2\n } else {\n current = current.parentNode;\n
if (current)\n path.push(current);\n }\n }\n
}\n\n return path;\n }\n\n // http://w3c.github.io/webcomponents/spec/shad
ow/#dfn-events-always-stopped\n function eventMustBeStopped(event) {\n if (!
event)\n return false;\n\n switch (event.type) {\n case 'abort':\n
case 'error':\n case 'select':\n case 'change':\n case 'load
':\n case 'reset':\n case 'resize':\n case 'scroll':\n case
'selectstart':\n return true;\n }\n return false;\n }\n\n // http
://w3c.github.io/webcomponents/spec/shadow/#dfn-shadow-insertion-point\n functi
on isShadowInsertionPoint(node) {\n return node instanceof HTMLShadowElement;
\n // and make sure that there are no shadow precing this?\n // and that t
here is no content ancestor?\n }\n\n function getDestinationInsertionPoints(no
de) {\n return scope.getDestinationInsertionPoints(node);\n }\n\n // http:/
/w3c.github.io/webcomponents/spec/shadow/#event-retargeting\n function eventRet
argetting(path, currentTarget) {\n if (path.length === 0)\n return curre
ntTarget;\n\n // The currentTarget might be the window object. Use its docume
nt for the\n // purpose of finding the retargetted node.\n if (currentTarg
et instanceof wrappers.Window)\n currentTarget = currentTarget.document;\n\
n var currentTargetTree = getTreeScope(currentTarget);\n var originalTarge
t = path[0];\n var originalTargetTree = getTreeScope(originalTarget);\n va
r relativeTargetTree =\n lowestCommonInclusiveAncestor(currentTargetTree,
originalTargetTree);\n\n for (var i = 0; i < path.length; i++) {\n var
node = path[i];\n if (getTreeScope(node) === relativeTargetTree)\n r
eturn node;\n }\n\n return path[path.length - 1];\n }\n\n function getTr
eeScopeAncestors(treeScope) {\n var ancestors = [];\n for (;treeScope; tre
eScope = treeScope.parent) {\n ancestors.push(treeScope);\n }\n retur
n ancestors;\n }\n\n function lowestCommonInclusiveAncestor(tsA, tsB) {\n v
ar ancestorsA = getTreeScopeAncestors(tsA);\n var ancestorsB = getTreeScopeAn
cestors(tsB);\n\n var result = null;\n while (ancestorsA.length > 0 && anc
estorsB.length > 0) {\n var a = ancestorsA.pop();\n var b = ancestorsB
.pop();\n if (a === b)\n result = a;\n else\n break;\n
}\n return result;\n }\n\n function getTreeScopeRoot(ts) {\n if (!ts.p
arent)\n return ts;\n return getTreeScopeRoot(ts.parent);\n }\n\n func
tion relatedTargetResolution(event, currentTarget, relatedTarget) {\n // In c
ase the current target is a window use its document for the purpose\n // of r
etargetting the related target.\n if (currentTarget instanceof wrappers.Windo
w)\n currentTarget = currentTarget.document;\n\n var currentTargetTree =
getTreeScope(currentTarget);\n var relatedTargetTree = getTreeScope(relatedT
arget);\n\n var relatedTargetEventPath = getEventPath(relatedTarget, event);\
n\n var lowestCommonAncestorTree;\n\n // 4\n var lowestCommonAncestorTr
ee =\n lowestCommonInclusiveAncestor(currentTargetTree, relatedTargetTree
);\n\n // 5\n if (!lowestCommonAncestorTree)\n lowestCommonAncestorTr
ee = relatedTargetTree.root;\n\n // 6\n for (var commonAncestorTree = lowe
stCommonAncestorTree;\n commonAncestorTree;\n commonAncestorTree
= commonAncestorTree.parent) {\n // 6.1\n var adjustedRelatedTarget;\
n for (var i = 0; i < relatedTargetEventPath.length; i++) {\n var no
de = relatedTargetEventPath[i];\n if (getTreeScope(node) === commonAncest
orTree)\n return node;\n }\n }\n\n return null;\n }\n\n fu
nction inSameTree(a, b) {\n return getTreeScope(a) === getTreeScope(b);\n }\
n\n var NONE = 0;\n var CAPTURING_PHASE = 1;\n var AT_TARGET = 2;\n var BUBB
LING_PHASE = 3;\n\n // pendingError is used to rethrow the first error we got d
uring an event\n // dispatch. The browser actually reports all errors but to do
that we would\n // need to rethrow the error asynchronously.\n var pendingErr
or;\n\n function dispatchOriginalEvent(originalEvent) {\n // Make sure this
event is only dispatched once.\n if (handledEventsTable.get(originalEvent))\n
return;\n handledEventsTable.set(originalEvent, true);\n dispatchEve
nt(wrap(originalEvent), wrap(originalEvent.target));\n if (pendingError) {\n
var err = pendingError;\n pendingError = null;\n throw err;\n
}\n }\n\n function dispatchEvent(event, originalWrapperTarget) {\n if (curr
entlyDispatchingEvents.get(event))\n throw new Error('InvalidStateError');\
n\n currentlyDispatchingEvents.set(event, true);\n\n // Render to ensure t
hat the event path is correct.\n scope.renderAllPending();\n var eventPath
;\n\n // http://www.whatwg.org/specs/web-apps/current-work/multipage/webappap
is.html#events-and-the-window-object\n // All events dispatched on Nodes with
a default view, except load events,\n // should propagate to the Window.\n\n
// http://www.whatwg.org/specs/web-apps/current-work/multipage/the-end.html#
the-end\n var overrideTarget;\n var win;\n var type = event.type;\n\n
// Should really be not cancelable too but since Firefox has a bug there\n
// we skip that check.\n // https://bugzilla.mozilla.org/show_bug.cgi?id=9994
56\n if (type === 'load' && !event.bubbles) {\n var doc = originalWrappe
rTarget;\n if (doc instanceof wrappers.Document && (win = doc.defaultView))
{\n overrideTarget = doc;\n eventPath = [];\n }\n }\n\n
if (!eventPath) {\n if (originalWrapperTarget instanceof wrappers.Window)
{\n win = originalWrapperTarget;\n eventPath = [];\n } else
{\n eventPath = getEventPath(originalWrapperTarget, event);\n\n if
(event.type !== 'load') {\n var doc = eventPath[eventPath.length - 1];
\n if (doc instanceof wrappers.Document)\n win = doc.default
View;\n }\n }\n }\n\n eventPathTable.set(event, eventPath);\n\
n if (dispatchCapturing(event, eventPath, win, overrideTarget)) {\n if (
dispatchAtTarget(event, eventPath, win, overrideTarget)) {\n dispatchBubb
ling(event, eventPath, win, overrideTarget);\n }\n }\n\n eventPhaseTa
ble.set(event, NONE);\n currentTargetTable.delete(event, null);\n currentl
yDispatchingEvents.delete(event);\n\n return event.defaultPrevented;\n }\n\n
function dispatchCapturing(event, eventPath, win, overrideTarget) {\n var p
hase = CAPTURING_PHASE;\n\n if (win) {\n if (!invoke(win, event, phase,
eventPath, overrideTarget))\n return false;\n }\n\n for (var i = ev
entPath.length - 1; i > 0; i--) {\n if (!invoke(eventPath[i], event, phase,
eventPath, overrideTarget))\n return false;\n }\n\n return true;\n
}\n\n function dispatchAtTarget(event, eventPath, win, overrideTarget) {\n
var phase = AT_TARGET;\n var currentTarget = eventPath[0] || win;\n retur
n invoke(currentTarget, event, phase, eventPath, overrideTarget);\n }\n\n func
tion dispatchBubbling(event, eventPath, win, overrideTarget) {\n var phase =
BUBBLING_PHASE;\n for (var i = 1; i < eventPath.length; i++) {\n if (!in
voke(eventPath[i], event, phase, eventPath, overrideTarget))\n return;\n
}\n\n if (win && eventPath.length > 0) {\n invoke(win, event, phase,
eventPath, overrideTarget);\n }\n }\n\n function invoke(currentTarget, even
t, phase, eventPath, overrideTarget) {\n var listeners = listenersTable.get(c
urrentTarget);\n if (!listeners)\n return true;\n\n var target = over
rideTarget || eventRetargetting(eventPath, currentTarget);\n\n if (target ===
currentTarget) {\n if (phase === CAPTURING_PHASE)\n return true;\n\
n if (phase === BUBBLING_PHASE)\n phase = AT_TARGET;\n\n } else
if (phase === BUBBLING_PHASE && !event.bubbles) {\n return true;\n }\n\n
if ('relatedTarget' in event) {\n var originalEvent = unwrap(event);\n
var unwrappedRelatedTarget = originalEvent.relatedTarget;\n\n // X-Tag
sets relatedTarget on a CustomEvent. If they do that there is no\n // way
to have relatedTarget return the adjusted target but worse is that\n // the
originalEvent might not have a relatedTarget so we hit an assert\n // when
we try to wrap it.\n if (unwrappedRelatedTarget) {\n // In IE we ca
n get objects that are not EventTargets at this point.\n // Safari does n
ot have an EventTarget interface so revert to checking\n // for addEventL
istener as an approximation.\n if (unwrappedRelatedTarget instanceof Obje
ct &&\n unwrappedRelatedTarget.addEventListener) {\n var rel
atedTarget = wrap(unwrappedRelatedTarget);\n\n var adjusted =\n
relatedTargetResolution(event, currentTarget, relatedTarget);\n i
f (adjusted === target)\n return true;\n } else {\n a
djusted = null;\n }\n relatedTargetTable.set(event, adjusted);\n
}\n }\n\n eventPhaseTable.set(event, phase);\n var type = event.typ
e;\n\n var anyRemoved = false;\n // targetTable.set(event, target);\n t
argetTable.set(event, target);\n currentTargetTable.set(event, currentTarget)
;\n\n // Keep track of the invoke depth so that we only clean up the removed\
n // listeners if we are in the outermost invoke.\n listeners.depth++;\n\n
for (var i = 0, len = listeners.length; i < len; i++) {\n var listener
= listeners[i];\n if (listener.removed) {\n anyRemoved = true;\n
continue;\n }\n\n if (listener.type !== type ||\n !listen
er.capture && phase === CAPTURING_PHASE ||\n listener.capture && phase
=== BUBBLING_PHASE) {\n continue;\n }\n\n try {\n if (ty
peof listener.handler === 'function')\n listener.handler.call(currentTa
rget, event);\n else\n listener.handler.handleEvent(event);\n\n
if (stopImmediatePropagationTable.get(event))\n return false;\n\
n } catch (ex) {\n if (!pendingError)\n pendingError = ex;\
n }\n }\n\n listeners.depth--;\n\n if (anyRemoved && listeners.dep
th === 0) {\n var copy = listeners.slice();\n listeners.length = 0;\n
for (var i = 0; i < copy.length; i++) {\n if (!copy[i].removed)\n
listeners.push(copy[i]);\n }\n }\n\n return !stopPropagationTa
ble.get(event);\n }\n\n function Listener(type, handler, capture) {\n this.
type = type;\n this.handler = handler;\n this.capture = Boolean(capture);\
n }\n Listener.prototype = {\n equals: function(that) {\n return this.
handler === that.handler && this.type === that.type &&\n this.capture =
== that.capture;\n },\n get removed() {\n return this.handler === nul
l;\n },\n remove: function() {\n this.handler = null;\n }\n };\n\
n var OriginalEvent = window.Event;\n OriginalEvent.prototype.polymerBlackList
_ = {\n returnValue: true,\n // TODO(arv): keyLocation is part of Keyboard
Event but Firefox does not\n // support constructable KeyboardEvent so we kee
p it here for now.\n keyLocation: true\n };\n\n /**\n * Creates a new Eve
nt wrapper or wraps an existin native Event object.\n * @param {string|Event}
type\n * @param {Object=} options\n * @constructor\n */\n function Event(
type, options) {\n if (type instanceof OriginalEvent) {\n var impl = typ
e;\n if (!OriginalBeforeUnloadEvent && impl.type === 'beforeunload') {\n
return new BeforeUnloadEvent(impl);\n }\n setWrapper(impl, this);
\n } else {\n return wrap(constructEvent(OriginalEvent, 'Event', type, o
ptions));\n }\n }\n Event.prototype = {\n get target() {\n return t
argetTable.get(this);\n },\n get currentTarget() {\n return currentTa
rgetTable.get(this);\n },\n get eventPhase() {\n return eventPhaseTab
le.get(this);\n },\n get path() {\n var eventPath = eventPathTable.ge
t(this);\n if (!eventPath)\n return [];\n // TODO(arv): Event p
ath should contain window.\n return eventPath.slice();\n },\n stopPro
pagation: function() {\n stopPropagationTable.set(this, true);\n },\n
stopImmediatePropagation: function() {\n stopPropagationTable.set(this, tr
ue);\n stopImmediatePropagationTable.set(this, true);\n }\n };\n regis
terWrapper(OriginalEvent, Event, document.createEvent('Event'));\n\n function u
nwrapOptions(options) {\n if (!options || !options.relatedTarget)\n retu
rn options;\n return Object.create(options, {\n relatedTarget: {value: u
nwrap(options.relatedTarget)}\n });\n }\n\n function registerGenericEvent(n
ame, SuperEvent, prototype) {\n var OriginalEvent = window[name];\n var Ge
nericEvent = function(type, options) {\n if (type instanceof OriginalEvent)
\n setWrapper(type, this);\n else\n return wrap(constructEven
t(OriginalEvent, name, type, options));\n };\n GenericEvent.prototype = Ob
ject.create(SuperEvent.prototype);\n if (prototype)\n mixin(GenericEvent
.prototype, prototype);\n if (OriginalEvent) {\n // - Old versions of Sa
fari fails on new FocusEvent (and others?).\n // - IE does not support even
t constructors.\n // - createEvent('FocusEvent') throws in Firefox.\n
// => Try the best practice solution first and fallback to the old way\n //
if needed.\n try {\n registerWrapper(OriginalEvent, GenericEvent, n
ew OriginalEvent('temp'));\n } catch (ex) {\n registerWrapper(Origin
alEvent, GenericEvent,\n document.createEvent(name));\n
}\n }\n return GenericEvent;\n }\n\n var UIEvent = registerGenericEv
ent('UIEvent', Event);\n var CustomEvent = registerGenericEvent('CustomEvent',
Event);\n\n var relatedTargetProto = {\n get relatedTarget() {\n var re
latedTarget = relatedTargetTable.get(this);\n // relatedTarget can be null.
\n if (relatedTarget !== undefined)\n return relatedTarget;\n r
eturn wrap(unwrap(this).relatedTarget);\n }\n };\n\n function getInitFuncti
on(name, relatedTargetIndex) {\n return function() {\n arguments[related
TargetIndex] = unwrap(arguments[relatedTargetIndex]);\n var impl = unwrap(t
his);\n impl[name].apply(impl, arguments);\n };\n }\n\n var mouseEvent
Proto = mixin({\n initMouseEvent: getInitFunction('initMouseEvent', 14)\n },
relatedTargetProto);\n\n var focusEventProto = mixin({\n initFocusEvent: ge
tInitFunction('initFocusEvent', 5)\n }, relatedTargetProto);\n\n var MouseEven
t = registerGenericEvent('MouseEvent', UIEvent, mouseEventProto);\n var FocusEv
ent = registerGenericEvent('FocusEvent', UIEvent, focusEventProto);\n\n // In c
ase the browser does not support event constructors we polyfill that\n // by ca
lling `createEvent('Foo')` and `initFooEvent` where the arguments to\n // `init
FooEvent` are derived from the registered default event init dict.\n var defaul
tInitDicts = Object.create(null);\n\n var supportsEventConstructors = (function
() {\n try {\n new window.FocusEvent('focus');\n } catch (ex) {\n
return false;\n }\n return true;\n })();\n\n /**\n * Constructs a ne
w native event.\n */\n function constructEvent(OriginalEvent, name, type, opt
ions) {\n if (supportsEventConstructors)\n return new OriginalEvent(type
, unwrapOptions(options));\n\n // Create the arguments from the default dicti
onary.\n var event = unwrap(document.createEvent(name));\n var defaultDict
= defaultInitDicts[name];\n var args = [type];\n Object.keys(defaultDict)
.forEach(function(key) {\n var v = options != null && key in options ?\n
options[key] : defaultDict[key];\n if (key === 'relatedTarget')\n
v = unwrap(v);\n args.push(v);\n });\n event['init' + name].appl
y(event, args);\n return event;\n }\n\n if (!supportsEventConstructors) {\n
var configureEventConstructor = function(name, initDict, superName) {\n
if (superName) {\n var superDict = defaultInitDicts[superName];\n
initDict = mixin(mixin({}, superDict), initDict);\n }\n\n defaultInit
Dicts[name] = initDict;\n };\n\n // The order of the default event init di
ctionary keys is important, the\n // arguments to initFooEvent is derived fro
m that.\n configureEventConstructor('Event', {bubbles: false, cancelable: fal
se});\n configureEventConstructor('CustomEvent', {detail: null}, 'Event');\n
configureEventConstructor('UIEvent', {view: null, detail: 0}, 'Event');\n
configureEventConstructor('MouseEvent', {\n screenX: 0,\n screenY: 0,\
n clientX: 0,\n clientY: 0,\n ctrlKey: false,\n altKey: fals
e,\n shiftKey: false,\n metaKey: false,\n button: 0,\n relat
edTarget: null\n }, 'UIEvent');\n configureEventConstructor('FocusEvent',
{relatedTarget: null}, 'UIEvent');\n }\n\n // Safari 7 does not yet have Befor
eUnloadEvent.\n // https://bugs.webkit.org/show_bug.cgi?id=120849\n var Origin
alBeforeUnloadEvent = window.BeforeUnloadEvent;\n\n function BeforeUnloadEvent(
impl) {\n Event.call(this, impl);\n }\n BeforeUnloadEvent.prototype = Objec
t.create(Event.prototype);\n mixin(BeforeUnloadEvent.prototype, {\n get retu
rnValue() {\n return unsafeUnwrap(this).returnValue;\n },\n set retur
nValue(v) {\n unsafeUnwrap(this).returnValue = v;\n }\n });\n\n if (Or
iginalBeforeUnloadEvent)\n registerWrapper(OriginalBeforeUnloadEvent, BeforeU
nloadEvent);\n\n function isValidListener(fun) {\n if (typeof fun === 'funct
ion')\n return true;\n return fun && fun.handleEvent;\n }\n\n function
isMutationEvent(type) {\n switch (type) {\n case 'DOMAttrModified':\n
case 'DOMAttributeNameChanged':\n case 'DOMCharacterDataModified':\n
case 'DOMElementNameChanged':\n case 'DOMNodeInserted':\n case 'DOM
NodeInsertedIntoDocument':\n case 'DOMNodeRemoved':\n case 'DOMNodeRem
ovedFromDocument':\n case 'DOMSubtreeModified':\n return true;\n
}\n return false;\n }\n\n var OriginalEventTarget = window.EventTarget;\n\n
/**\n * This represents a wrapper for an EventTarget.\n * @param {!EventTa
rget} impl The original event target.\n * @constructor\n */\n function Even
tTarget(impl) {\n setWrapper(impl, this);\n }\n\n // Node and Window have d
ifferent internal type checks in WebKit so we cannot\n // use the same method a
s the original function.\n var methodNames = [\n 'addEventListener',\n 'r
emoveEventListener',\n 'dispatchEvent'\n ];\n\n [Node, Window].forEach(func
tion(constructor) {\n var p = constructor.prototype;\n methodNames.forEach
(function(name) {\n Object.defineProperty(p, name + '_', {value: p[name]});
\n });\n });\n\n function getTargetToListenAt(wrapper) {\n if (wrapper i
nstanceof wrappers.ShadowRoot)\n wrapper = wrapper.host;\n return unwrap
(wrapper);\n }\n\n EventTarget.prototype = {\n addEventListener: function(t
ype, fun, capture) {\n if (!isValidListener(fun) || isMutationEvent(type))\
n return;\n\n var listener = new Listener(type, fun, capture);\n
var listeners = listenersTable.get(this);\n if (!listeners) {\n li
steners = [];\n listeners.depth = 0;\n listenersTable.set(this, li
steners);\n } else {\n // Might have a duplicate.\n for (var
i = 0; i < listeners.length; i++) {\n if (listener.equals(listeners[i])
)\n return;\n }\n }\n\n listeners.push(listener);\n\
n var target = getTargetToListenAt(this);\n target.addEventListener_(t
ype, dispatchOriginalEvent, true);\n },\n removeEventListener: function(ty
pe, fun, capture) {\n capture = Boolean(capture);\n var listeners = li
stenersTable.get(this);\n if (!listeners)\n return;\n var count
= 0, found = false;\n for (var i = 0; i < listeners.length; i++) {\n
if (listeners[i].type === type && listeners[i].capture === capture) {\n
count++;\n if (listeners[i].handler === fun) {\n found =
true;\n listeners[i].remove();\n }\n }\n }\n\n
if (found && count === 1) {\n var target = getTargetToListenAt(this);
\n target.removeEventListener_(type, dispatchOriginalEvent, true);\n
}\n },\n dispatchEvent: function(event) {\n // We want to use the na
tive dispatchEvent because it triggers the default\n // actions (like check
ing a checkbox). However, if there are no listeners\n // in the composed tr
ee then there are no events that will trigger and\n // listeners in the non
composed tree that are part of the event path are\n // not notified.\n
//\n // If we find out that there are no listeners in the composed tree w
e add\n // a temporary listener to the target which makes us get called bac
k even\n // in that case.\n\n var nativeEvent = unwrap(event);\n
var eventType = nativeEvent.type;\n\n // Allow dispatching the same event a
gain. This is safe because if user\n // code calls this during an existing
dispatch of the same event the\n // native dispatchEvent throws (that is re
quired by the spec).\n handledEventsTable.set(nativeEvent, false);\n\n
// Force rendering since we prefer native dispatch and that works on the\n
// composed tree.\n scope.renderAllPending();\n\n var tempListener;\n
if (!hasListenerInAncestors(this, eventType)) {\n tempListener = fu
nction() {};\n this.addEventListener(eventType, tempListener, true);\n
}\n\n try {\n return unwrap(this).dispatchEvent_(nativeEvent);\n
} finally {\n if (tempListener)\n this.removeEventListener(
eventType, tempListener, true);\n }\n }\n };\n\n function hasListener(
node, type) {\n var listeners = listenersTable.get(node);\n if (listeners)
{\n for (var i = 0; i < listeners.length; i++) {\n if (!listeners[i
].removed && listeners[i].type === type)\n return true;\n }\n }
\n return false;\n }\n\n function hasListenerInAncestors(target, type) {\n
for (var node = unwrap(target); node; node = node.parentNode) {\n if (ha
sListener(wrap(node), type))\n return true;\n }\n return false;\n
}\n\n if (OriginalEventTarget)\n registerWrapper(OriginalEventTarget, EventT
arget);\n\n function wrapEventTargetMethods(constructors) {\n forwardMethods
ToWrapper(constructors, methodNames);\n }\n\n var originalElementFromPoint = d
ocument.elementFromPoint;\n\n function elementFromPoint(self, document, x, y) {
\n scope.renderAllPending();\n\n var element =\n wrap(originalEleme
ntFromPoint.call(unsafeUnwrap(document), x, y));\n if (!element)\n retur
n null;\n var path = getEventPath(element, null);\n\n // scope the path to
this TreeScope\n var idx = path.lastIndexOf(self);\n if (idx == -1)\n
return null;\n else\n path = path.slice(0, idx);\n\n // TODO(dfreed
m): pass idx to eventRetargetting to avoid array copy\n return eventRetargett
ing(path, self);\n }\n\n /**\n * Returns a function that is to be used as a
getter for `onfoo` properties.\n * @param {string} name\n * @return {Functio
n}\n */\n function getEventHandlerGetter(name) {\n return function() {\n
var inlineEventHandlers = eventHandlersTable.get(this);\n return inline
EventHandlers && inlineEventHandlers[name] &&\n inlineEventHandlers[nam
e].value || null;\n };\n }\n\n /**\n * Returns a function that is to be
used as a setter for `onfoo` properties.\n * @param {string} name\n * @retur
n {Function}\n */\n function getEventHandlerSetter(name) {\n var eventType
= name.slice(2);\n return function(value) {\n var inlineEventHandlers =
eventHandlersTable.get(this);\n if (!inlineEventHandlers) {\n inlin
eEventHandlers = Object.create(null);\n eventHandlersTable.set(this, inli
neEventHandlers);\n }\n\n var old = inlineEventHandlers[name];\n
if (old)\n this.removeEventListener(eventType, old.wrapped, false);\n\n
if (typeof value === 'function') {\n var wrapped = function(e) {\n
var rv = value.call(this, e);\n if (rv === false)\n e
.preventDefault();\n else if (name === 'onbeforeunload' && typeof rv ==
= 'string')\n e.returnValue = rv;\n // mouseover uses true f
or preventDefault but preventDefault for\n // mouseover is ignored by b
rowsers these day.\n };\n\n this.addEventListener(eventType, wrapp
ed, false);\n inlineEventHandlers[name] = {\n value: value,\n
wrapped: wrapped\n };\n }\n };\n }\n\n scope.elementFrom
Point = elementFromPoint;\n scope.getEventHandlerGetter = getEventHandlerGetter
;\n scope.getEventHandlerSetter = getEventHandlerSetter;\n scope.wrapEventTarg
etMethods = wrapEventTargetMethods;\n scope.wrappers.BeforeUnloadEvent = Before
UnloadEvent;\n scope.wrappers.CustomEvent = CustomEvent;\n scope.wrappers.Even
t = Event;\n scope.wrappers.EventTarget = EventTarget;\n scope.wrappers.FocusE
vent = FocusEvent;\n scope.wrappers.MouseEvent = MouseEvent;\n scope.wrappers.
UIEvent = UIEvent;\n\n})(window.ShadowDOMPolyfill);\n", |
92 "/*\n * Copyright 2014 The Polymer Authors. All rights reserved.\n * Use of
this source code is goverened by a BSD-style\n * license that can be found in th
e LICENSE file.\n */\n\n(function(scope) {\n 'use strict';\n\n var UIEvent = s
cope.wrappers.UIEvent;\n var mixin = scope.mixin;\n var registerWrapper = scop
e.registerWrapper;\n var setWrapper = scope.setWrapper;\n var unsafeUnwrap = s
cope.unsafeUnwrap;\n var wrap = scope.wrap;\n\n // TouchEvent is WebKit/Blink
only.\n var OriginalTouchEvent = window.TouchEvent;\n if (!OriginalTouchEvent)
\n return;\n\n var nativeEvent;\n try {\n nativeEvent = document.createE
vent('TouchEvent');\n } catch (ex) {\n // In Chrome creating a TouchEvent fa
ils if the feature is not turned on\n // which it isn't on desktop Chrome.\n
return;\n }\n\n var nonEnumDescriptor = {enumerable: false};\n\n function
nonEnum(obj, prop) {\n Object.defineProperty(obj, prop, nonEnumDescriptor);\n
}\n\n function Touch(impl) {\n setWrapper(impl, this);\n }\n\n Touch.pro
totype = {\n get target() {\n return wrap(unsafeUnwrap(this).target);\n
}\n };\n\n var descr = {\n configurable: true,\n enumerable: true,\n
get: null\n };\n\n [\n 'clientX',\n 'clientY',\n 'screenX',\n '
screenY',\n 'pageX',\n 'pageY',\n 'identifier',\n 'webkitRadiusX',\n
'webkitRadiusY',\n 'webkitRotationAngle',\n 'webkitForce'\n ].forEach
(function(name) {\n descr.get = function() {\n return unsafeUnwrap(this)
[name];\n };\n Object.defineProperty(Touch.prototype, name, descr);\n });
\n\n function TouchList() {\n this.length = 0;\n nonEnum(this, 'length');
\n }\n\n TouchList.prototype = {\n item: function(index) {\n return th
is[index];\n }\n };\n\n function wrapTouchList(nativeTouchList) {\n var
list = new TouchList();\n for (var i = 0; i < nativeTouchList.length; i++) {\
n list[i] = new Touch(nativeTouchList[i]);\n }\n list.length = i;\n
return list;\n }\n\n function TouchEvent(impl) {\n UIEvent.call(this, imp
l);\n }\n\n TouchEvent.prototype = Object.create(UIEvent.prototype);\n\n mixi
n(TouchEvent.prototype, {\n get touches() {\n return wrapTouchList(unsaf
eUnwrap(this).touches);\n },\n\n get targetTouches() {\n return wrapT
ouchList(unsafeUnwrap(this).targetTouches);\n },\n\n get changedTouches()
{\n return wrapTouchList(unsafeUnwrap(this).changedTouches);\n },\n\n
initTouchEvent: function() {\n // The only way to use this is to reuse the
TouchList from an existing\n // TouchEvent. Since this is WebKit/Blink pro
prietary API we will not\n // implement this until someone screams.\n
throw new Error('Not implemented');\n }\n });\n\n registerWrapper(OriginalT
ouchEvent, TouchEvent, nativeEvent);\n\n scope.wrappers.Touch = Touch;\n scope
.wrappers.TouchEvent = TouchEvent;\n scope.wrappers.TouchList = TouchList;\n\n}
)(window.ShadowDOMPolyfill);\n\n", | 92 "/*\n * Copyright 2014 The Polymer Authors. All rights reserved.\n * Use of
this source code is goverened by a BSD-style\n * license that can be found in th
e LICENSE file.\n */\n\n(function(scope) {\n 'use strict';\n\n var UIEvent = s
cope.wrappers.UIEvent;\n var mixin = scope.mixin;\n var registerWrapper = scop
e.registerWrapper;\n var setWrapper = scope.setWrapper;\n var unsafeUnwrap = s
cope.unsafeUnwrap;\n var wrap = scope.wrap;\n\n // TouchEvent is WebKit/Blink
only.\n var OriginalTouchEvent = window.TouchEvent;\n if (!OriginalTouchEvent)
\n return;\n\n var nativeEvent;\n try {\n nativeEvent = document.createE
vent('TouchEvent');\n } catch (ex) {\n // In Chrome creating a TouchEvent fa
ils if the feature is not turned on\n // which it isn't on desktop Chrome.\n
return;\n }\n\n var nonEnumDescriptor = {enumerable: false};\n\n function
nonEnum(obj, prop) {\n Object.defineProperty(obj, prop, nonEnumDescriptor);\n
}\n\n function Touch(impl) {\n setWrapper(impl, this);\n }\n\n Touch.pro
totype = {\n get target() {\n return wrap(unsafeUnwrap(this).target);\n
}\n };\n\n var descr = {\n configurable: true,\n enumerable: true,\n
get: null\n };\n\n [\n 'clientX',\n 'clientY',\n 'screenX',\n '
screenY',\n 'pageX',\n 'pageY',\n 'identifier',\n 'webkitRadiusX',\n
'webkitRadiusY',\n 'webkitRotationAngle',\n 'webkitForce'\n ].forEach
(function(name) {\n descr.get = function() {\n return unsafeUnwrap(this)
[name];\n };\n Object.defineProperty(Touch.prototype, name, descr);\n });
\n\n function TouchList() {\n this.length = 0;\n nonEnum(this, 'length');
\n }\n\n TouchList.prototype = {\n item: function(index) {\n return th
is[index];\n }\n };\n\n function wrapTouchList(nativeTouchList) {\n var
list = new TouchList();\n for (var i = 0; i < nativeTouchList.length; i++) {\
n list[i] = new Touch(nativeTouchList[i]);\n }\n list.length = i;\n
return list;\n }\n\n function TouchEvent(impl) {\n UIEvent.call(this, imp
l);\n }\n\n TouchEvent.prototype = Object.create(UIEvent.prototype);\n\n mixi
n(TouchEvent.prototype, {\n get touches() {\n return wrapTouchList(unsaf
eUnwrap(this).touches);\n },\n\n get targetTouches() {\n return wrapT
ouchList(unsafeUnwrap(this).targetTouches);\n },\n\n get changedTouches()
{\n return wrapTouchList(unsafeUnwrap(this).changedTouches);\n },\n\n
initTouchEvent: function() {\n // The only way to use this is to reuse the
TouchList from an existing\n // TouchEvent. Since this is WebKit/Blink pro
prietary API we will not\n // implement this until someone screams.\n
throw new Error('Not implemented');\n }\n });\n\n registerWrapper(OriginalT
ouchEvent, TouchEvent, nativeEvent);\n\n scope.wrappers.Touch = Touch;\n scope
.wrappers.TouchEvent = TouchEvent;\n scope.wrappers.TouchList = TouchList;\n\n}
)(window.ShadowDOMPolyfill);\n\n", |
93 "// Copyright 2012 The Polymer Authors. All rights reserved.\n// Use of this
source code is goverened by a BSD-style\n// license that can be found in the LI
CENSE file.\n\n(function(scope) {\n 'use strict';\n\n var unsafeUnwrap = scope
.unsafeUnwrap;\n var wrap = scope.wrap;\n\n var nonEnumDescriptor = {enumerabl
e: false};\n\n function nonEnum(obj, prop) {\n Object.defineProperty(obj, pr
op, nonEnumDescriptor);\n }\n\n function NodeList() {\n this.length = 0;\n
nonEnum(this, 'length');\n }\n NodeList.prototype = {\n item: function(i
ndex) {\n return this[index];\n }\n };\n nonEnum(NodeList.prototype, '
item');\n\n function wrapNodeList(list) {\n if (list == null)\n return
list;\n var wrapperList = new NodeList();\n for (var i = 0, length = list.
length; i < length; i++) {\n wrapperList[i] = wrap(list[i]);\n }\n wr
apperList.length = length;\n return wrapperList;\n }\n\n function addWrapNo
deListMethod(wrapperConstructor, name) {\n wrapperConstructor.prototype[name]
= function() {\n return wrapNodeList(\n unsafeUnwrap(this)[name].
apply(unsafeUnwrap(this), arguments));\n };\n }\n\n scope.wrappers.NodeList
= NodeList;\n scope.addWrapNodeListMethod = addWrapNodeListMethod;\n scope.wr
apNodeList = wrapNodeList;\n\n})(window.ShadowDOMPolyfill);\n", | 93 "// Copyright 2012 The Polymer Authors. All rights reserved.\n// Use of this
source code is goverened by a BSD-style\n// license that can be found in the LI
CENSE file.\n\n(function(scope) {\n 'use strict';\n\n var unsafeUnwrap = scope
.unsafeUnwrap;\n var wrap = scope.wrap;\n\n var nonEnumDescriptor = {enumerabl
e: false};\n\n function nonEnum(obj, prop) {\n Object.defineProperty(obj, pr
op, nonEnumDescriptor);\n }\n\n function NodeList() {\n this.length = 0;\n
nonEnum(this, 'length');\n }\n NodeList.prototype = {\n item: function(i
ndex) {\n return this[index];\n }\n };\n nonEnum(NodeList.prototype, '
item');\n\n function wrapNodeList(list) {\n if (list == null)\n return
list;\n var wrapperList = new NodeList();\n for (var i = 0, length = list.
length; i < length; i++) {\n wrapperList[i] = wrap(list[i]);\n }\n wr
apperList.length = length;\n return wrapperList;\n }\n\n function addWrapNo
deListMethod(wrapperConstructor, name) {\n wrapperConstructor.prototype[name]
= function() {\n return wrapNodeList(\n unsafeUnwrap(this)[name].
apply(unsafeUnwrap(this), arguments));\n };\n }\n\n scope.wrappers.NodeList
= NodeList;\n scope.addWrapNodeListMethod = addWrapNodeListMethod;\n scope.wr
apNodeList = wrapNodeList;\n\n})(window.ShadowDOMPolyfill);\n", |
94 "/*\n * Copyright 2014 The Polymer Authors. All rights reserved.\n * Use of
this source code is goverened by a BSD-style\n * license that can be found in th
e LICENSE file.\n */\n\n(function(scope) {\n 'use strict';\n\n // TODO(arv): I
mplement.\n\n scope.wrapHTMLCollection = scope.wrapNodeList;\n scope.wrappers.
HTMLCollection = scope.wrappers.NodeList;\n\n})(window.ShadowDOMPolyfill);\n", | 94 "/*\n * Copyright 2014 The Polymer Authors. All rights reserved.\n * Use of
this source code is goverened by a BSD-style\n * license that can be found in th
e LICENSE file.\n */\n\n(function(scope) {\n 'use strict';\n\n // TODO(arv): I
mplement.\n\n scope.wrapHTMLCollection = scope.wrapNodeList;\n scope.wrappers.
HTMLCollection = scope.wrappers.NodeList;\n\n})(window.ShadowDOMPolyfill);\n", |
95 "/**\n * Copyright 2012 The Polymer Authors. All rights reserved.\n * Use of
this source code is goverened by a BSD-style\n * license that can be found in t
he LICENSE file.\n */\n\n(function(scope) {\n 'use strict';\n\n var EventTarge
t = scope.wrappers.EventTarget;\n var NodeList = scope.wrappers.NodeList;\n va
r TreeScope = scope.TreeScope;\n var assert = scope.assert;\n var defineWrapGe
tter = scope.defineWrapGetter;\n var enqueueMutation = scope.enqueueMutation;\n
var getTreeScope = scope.getTreeScope;\n var isWrapper = scope.isWrapper;\n
var mixin = scope.mixin;\n var registerTransientObservers = scope.registerTrans
ientObservers;\n var registerWrapper = scope.registerWrapper;\n var setTreeSco
pe = scope.setTreeScope;\n var unsafeUnwrap = scope.unsafeUnwrap;\n var unwrap
= scope.unwrap;\n var unwrapIfNeeded = scope.unwrapIfNeeded;\n var wrap = sco
pe.wrap;\n var wrapIfNeeded = scope.wrapIfNeeded;\n var wrappers = scope.wrapp
ers;\n\n function assertIsNodeWrapper(node) {\n assert(node instanceof Node)
;\n }\n\n function createOneElementNodeList(node) {\n var nodes = new NodeL
ist();\n nodes[0] = node;\n nodes.length = 1;\n return nodes;\n }\n\n
var surpressMutations = false;\n\n /**\n * Called before node is inserted in
to a node to enqueue its removal from its\n * old parent.\n * @param {!Node}
node The node that is about to be removed.\n * @param {!Node} parent The pare
nt node that the node is being removed from.\n * @param {!NodeList} nodes The
collected nodes.\n */\n function enqueueRemovalForInsertedNodes(node, parent,
nodes) {\n enqueueMutation(parent, 'childList', {\n removedNodes: nodes
,\n previousSibling: node.previousSibling,\n nextSibling: node.nextSib
ling\n });\n }\n\n function enqueueRemovalForInsertedDocumentFragment(df, n
odes) {\n enqueueMutation(df, 'childList', {\n removedNodes: nodes\n
});\n }\n\n /**\n * Collects nodes from a DocumentFragment or a Node for rem
oval followed\n * by an insertion.\n *\n * This updates the internal point
ers for node, previousNode and nextNode.\n */\n function collectNodes(node, p
arentNode, previousNode, nextNode) {\n if (node instanceof DocumentFragment)
{\n var nodes = collectNodesForDocumentFragment(node);\n\n // The extr
a loop is to work around bugs with DocumentFragments in IE.\n surpressMutat
ions = true;\n for (var i = nodes.length - 1; i >= 0; i--) {\n node.
removeChild(nodes[i]);\n nodes[i].parentNode_ = parentNode;\n }\n
surpressMutations = false;\n\n for (var i = 0; i < nodes.length; i++) {\
n nodes[i].previousSibling_ = nodes[i - 1] || previousNode;\n node
s[i].nextSibling_ = nodes[i + 1] || nextNode;\n }\n\n if (previousNode
)\n previousNode.nextSibling_ = nodes[0];\n if (nextNode)\n n
extNode.previousSibling_ = nodes[nodes.length - 1];\n\n return nodes;\n
}\n\n var nodes = createOneElementNodeList(node);\n var oldParent = node.p
arentNode;\n if (oldParent) {\n // This will enqueue the mutation record
for the removal as needed.\n oldParent.removeChild(node);\n }\n\n no
de.parentNode_ = parentNode;\n node.previousSibling_ = previousNode;\n nod
e.nextSibling_ = nextNode;\n if (previousNode)\n previousNode.nextSiblin
g_ = node;\n if (nextNode)\n nextNode.previousSibling_ = node;\n\n re
turn nodes;\n }\n\n function collectNodesNative(node) {\n if (node instance
of DocumentFragment)\n return collectNodesForDocumentFragment(node);\n\n
var nodes = createOneElementNodeList(node);\n var oldParent = node.parentNod
e;\n if (oldParent)\n enqueueRemovalForInsertedNodes(node, oldParent, no
des);\n return nodes;\n }\n\n function collectNodesForDocumentFragment(node
) {\n var nodes = new NodeList();\n var i = 0;\n for (var child = node.
firstChild; child; child = child.nextSibling) {\n nodes[i++] = child;\n
}\n nodes.length = i;\n enqueueRemovalForInsertedDocumentFragment(node, no
des);\n return nodes;\n }\n\n function snapshotNodeList(nodeList) {\n //
NodeLists are not live at the moment so just return the same object.\n retur
n nodeList;\n }\n\n // http://dom.spec.whatwg.org/#node-is-inserted\n functio
n nodeWasAdded(node, treeScope) {\n setTreeScope(node, treeScope);\n node.
nodeIsInserted_();\n }\n\n function nodesWereAdded(nodes, parent) {\n var t
reeScope = getTreeScope(parent);\n for (var i = 0; i < nodes.length; i++) {\n
nodeWasAdded(nodes[i], treeScope);\n }\n }\n\n // http://dom.spec.wha
twg.org/#node-is-removed\n function nodeWasRemoved(node) {\n setTreeScope(no
de, new TreeScope(node, null));\n }\n\n function nodesWereRemoved(nodes) {\n
for (var i = 0; i < nodes.length; i++) {\n nodeWasRemoved(nodes[i]);\n
}\n }\n\n function ensureSameOwnerDocument(parent, child) {\n var ownerDoc
= parent.nodeType === Node.DOCUMENT_NODE ?\n parent : parent.ownerDocume
nt;\n if (ownerDoc !== child.ownerDocument)\n ownerDoc.adoptNode(child);
\n }\n\n function adoptNodesIfNeeded(owner, nodes) {\n if (!nodes.length)\n
return;\n\n var ownerDoc = owner.ownerDocument;\n\n // All nodes hav
e the same ownerDocument when we get here.\n if (ownerDoc === nodes[0].ownerD
ocument)\n return;\n\n for (var i = 0; i < nodes.length; i++) {\n s
cope.adoptNodeNoRemove(nodes[i], ownerDoc);\n }\n }\n\n function unwrapNode
sForInsertion(owner, nodes) {\n adoptNodesIfNeeded(owner, nodes);\n var le
ngth = nodes.length;\n\n if (length === 1)\n return unwrap(nodes[0]);\n\
n var df = unwrap(owner.ownerDocument.createDocumentFragment());\n for (va
r i = 0; i < length; i++) {\n df.appendChild(unwrap(nodes[i]));\n }\n
return df;\n }\n\n function clearChildNodes(wrapper) {\n if (wrapper.first
Child_ !== undefined) {\n var child = wrapper.firstChild_;\n while (ch
ild) {\n var tmp = child;\n child = child.nextSibling_;\n t
mp.parentNode_ = tmp.previousSibling_ = tmp.nextSibling_ = undefined;\n }\n
}\n wrapper.firstChild_ = wrapper.lastChild_ = undefined;\n }\n\n funct
ion removeAllChildNodes(wrapper) {\n if (wrapper.invalidateShadowRenderer())
{\n var childWrapper = wrapper.firstChild;\n while (childWrapper) {\n
assert(childWrapper.parentNode === wrapper);\n var nextSibling = c
hildWrapper.nextSibling;\n var childNode = unwrap(childWrapper);\n
var parentNode = childNode.parentNode;\n if (parentNode)\n orig
inalRemoveChild.call(parentNode, childNode);\n childWrapper.previousSibli
ng_ = childWrapper.nextSibling_ =\n childWrapper.parentNode_ = null;\
n childWrapper = nextSibling;\n }\n wrapper.firstChild_ = wrapp
er.lastChild_ = null;\n } else {\n var node = unwrap(wrapper);\n va
r child = node.firstChild;\n var nextSibling;\n while (child) {\n
nextSibling = child.nextSibling;\n originalRemoveChild.call(node, chil
d);\n child = nextSibling;\n }\n }\n }\n\n function invalidateP
arent(node) {\n var p = node.parentNode;\n return p && p.invalidateShadowR
enderer();\n }\n\n function cleanupNodes(nodes) {\n for (var i = 0, n; i <
nodes.length; i++) {\n n = nodes[i];\n n.parentNode.removeChild(n);\n
}\n }\n\n var originalImportNode = document.importNode;\n var originalClon
eNode = window.Node.prototype.cloneNode;\n\n function cloneNode(node, deep, opt
_doc) {\n var clone;\n if (opt_doc)\n clone = wrap(originalImportNode
.call(opt_doc, unsafeUnwrap(node), false));\n else\n clone = wrap(origin
alCloneNode.call(unsafeUnwrap(node), false));\n\n if (deep) {\n for (var
child = node.firstChild; child; child = child.nextSibling) {\n clone.app
endChild(cloneNode(child, true, opt_doc));\n }\n\n if (node instanceof
wrappers.HTMLTemplateElement) {\n var cloneContent = clone.content;\n
for (var child = node.content.firstChild;\n child;\n
child = child.nextSibling) {\n cloneContent.appendChild(cloneNode(chil
d, true, opt_doc));\n }\n }\n }\n // TODO(arv): Some HTML elem
ents also clone other data like value.\n return clone;\n }\n\n function con
tains(self, child) {\n if (!child || getTreeScope(self) !== getTreeScope(chil
d))\n return false;\n\n for (var node = child; node; node = node.parentN
ode) {\n if (node === self)\n return true;\n }\n return false;
\n }\n\n var OriginalNode = window.Node;\n\n /**\n * This represents a wrap
per of a native DOM node.\n * @param {!Node} original The original DOM node, a
ka, the visual DOM node.\n * @constructor\n * @extends {EventTarget}\n */\
n function Node(original) {\n assert(original instanceof OriginalNode);\n\n
EventTarget.call(this, original);\n\n // These properties are used to over
ride the visual references with the\n // logical ones. If the value is undefi
ned it means that the logical is the\n // same as the visual.\n\n /**\n
* @type {Node|undefined}\n * @private\n */\n this.parentNode_ = und
efined;\n\n /**\n * @type {Node|undefined}\n * @private\n */\n
this.firstChild_ = undefined;\n\n /**\n * @type {Node|undefined}\n *
@private\n */\n this.lastChild_ = undefined;\n\n /**\n * @type {N
ode|undefined}\n * @private\n */\n this.nextSibling_ = undefined;\n\n
/**\n * @type {Node|undefined}\n * @private\n */\n this.previ
ousSibling_ = undefined;\n\n this.treeScope_ = undefined;\n }\n\n var Origi
nalDocumentFragment = window.DocumentFragment;\n var originalAppendChild = Orig
inalNode.prototype.appendChild;\n var originalCompareDocumentPosition =\n
OriginalNode.prototype.compareDocumentPosition;\n var originalInsertBefore = Or
iginalNode.prototype.insertBefore;\n var originalRemoveChild = OriginalNode.pro
totype.removeChild;\n var originalReplaceChild = OriginalNode.prototype.replace
Child;\n\n var isIe = /Trident/.test(navigator.userAgent);\n\n var removeChild
OriginalHelper = isIe ?\n function(parent, child) {\n try {\n
originalRemoveChild.call(parent, child);\n } catch (ex) {\n i
f (!(parent instanceof OriginalDocumentFragment))\n throw ex;\n
}\n } :\n function(parent, child) {\n originalRemoveChild.cal
l(parent, child);\n };\n\n Node.prototype = Object.create(EventTarget.prot
otype);\n mixin(Node.prototype, {\n appendChild: function(childWrapper) {\n
return this.insertBefore(childWrapper, null);\n },\n\n insertBefore:
function(childWrapper, refWrapper) {\n assertIsNodeWrapper(childWrapper);\n
\n var refNode;\n if (refWrapper) {\n if (isWrapper(refWrapper)
) {\n refNode = unwrap(refWrapper);\n } else {\n refNod
e = refWrapper;\n refWrapper = wrap(refNode);\n }\n } else
{\n refWrapper = null;\n refNode = null;\n }\n\n refWrap
per && assert(refWrapper.parentNode === this);\n\n var nodes;\n var pr
eviousNode =\n refWrapper ? refWrapper.previousSibling : this.lastChild
;\n\n var useNative = !this.invalidateShadowRenderer() &&\n
!invalidateParent(childWrapper);\n\n if (useNative)\n nodes =
collectNodesNative(childWrapper);\n else\n nodes = collectNodes(chil
dWrapper, this, previousNode, refWrapper);\n\n if (useNative) {\n en
sureSameOwnerDocument(this, childWrapper);\n clearChildNodes(this);\n
originalInsertBefore.call(unsafeUnwrap(this), unwrap(childWrapper), refNode)
;\n } else {\n if (!previousNode)\n this.firstChild_ = node
s[0];\n if (!refWrapper) {\n this.lastChild_ = nodes[nodes.lengt
h - 1];\n if (this.firstChild_ === undefined)\n this.firstCh
ild_ = this.firstChild;\n }\n\n var parentNode = refNode ? refNode
.parentNode : unsafeUnwrap(this);\n\n // insertBefore refWrapper no matte
r what the parent is?\n if (parentNode) {\n originalInsertBefore
.call(parentNode,\n unwrapNodesForInsertion(this, nodes), refNode);
\n } else {\n adoptNodesIfNeeded(this, nodes);\n }\n
}\n\n enqueueMutation(this, 'childList', {\n addedNodes: nodes,\n
nextSibling: refWrapper,\n previousSibling: previousNode\n });
\n\n nodesWereAdded(nodes, this);\n\n return childWrapper;\n },\n\n
removeChild: function(childWrapper) {\n assertIsNodeWrapper(childWrappe
r);\n if (childWrapper.parentNode !== this) {\n // IE has invalid DO
M trees at times.\n var found = false;\n var childNodes = this.chi
ldNodes;\n for (var ieChild = this.firstChild; ieChild;\n ieC
hild = ieChild.nextSibling) {\n if (ieChild === childWrapper) {\n
found = true;\n break;\n }\n }\n if (!fo
und) {\n // TODO(arv): DOMException\n throw new Error('NotFoun
dError');\n }\n }\n\n var childNode = unwrap(childWrapper);\n
var childWrapperNextSibling = childWrapper.nextSibling;\n var childWrap
perPreviousSibling = childWrapper.previousSibling;\n\n if (this.invalidateS
hadowRenderer()) {\n // We need to remove the real node from the DOM befo
re updating the\n // pointers. This is so that that mutation event is dis
patched before\n // the pointers have changed.\n var thisFirstChil
d = this.firstChild;\n var thisLastChild = this.lastChild;\n\n var
parentNode = childNode.parentNode;\n if (parentNode)\n removeCh
ildOriginalHelper(parentNode, childNode);\n\n if (thisFirstChild === chil
dWrapper)\n this.firstChild_ = childWrapperNextSibling;\n if (th
isLastChild === childWrapper)\n this.lastChild_ = childWrapperPreviousS
ibling;\n if (childWrapperPreviousSibling)\n childWrapperPreviou
sSibling.nextSibling_ = childWrapperNextSibling;\n if (childWrapperNextSi
bling) {\n childWrapperNextSibling.previousSibling_ =\n ch
ildWrapperPreviousSibling;\n }\n\n childWrapper.previousSibling_ =
childWrapper.nextSibling_ =\n childWrapper.parentNode_ = undefined;\
n } else {\n clearChildNodes(this);\n removeChildOriginalHelp
er(unsafeUnwrap(this), childNode);\n }\n\n if (!surpressMutations) {\n
enqueueMutation(this, 'childList', {\n removedNodes: createOneE
lementNodeList(childWrapper),\n nextSibling: childWrapperNextSibling,\n
previousSibling: childWrapperPreviousSibling\n });\n }\n\n
registerTransientObservers(this, childWrapper);\n\n return childWrapp
er;\n },\n\n replaceChild: function(newChildWrapper, oldChildWrapper) {\n
assertIsNodeWrapper(newChildWrapper);\n\n var oldChildNode;\n if
(isWrapper(oldChildWrapper)) {\n oldChildNode = unwrap(oldChildWrapper);\
n } else {\n oldChildNode = oldChildWrapper;\n oldChildWrappe
r = wrap(oldChildNode);\n }\n\n if (oldChildWrapper.parentNode !== thi
s) {\n // TODO(arv): DOMException\n throw new Error('NotFoundError
');\n }\n\n var nextNode = oldChildWrapper.nextSibling;\n var pre
viousNode = oldChildWrapper.previousSibling;\n var nodes;\n\n var useN
ative = !this.invalidateShadowRenderer() &&\n !invalidatePa
rent(newChildWrapper);\n\n if (useNative) {\n nodes = collectNodesNa
tive(newChildWrapper);\n } else {\n if (nextNode === newChildWrapper
)\n nextNode = newChildWrapper.nextSibling;\n nodes = collectNod
es(newChildWrapper, this, previousNode, nextNode);\n }\n\n if (!useNat
ive) {\n if (this.firstChild === oldChildWrapper)\n this.firstCh
ild_ = nodes[0];\n if (this.lastChild === oldChildWrapper)\n thi
s.lastChild_ = nodes[nodes.length - 1];\n\n oldChildWrapper.previousSibli
ng_ = oldChildWrapper.nextSibling_ =\n oldChildWrapper.parentNode_ =
undefined;\n\n // replaceChild no matter what the parent is?\n if
(oldChildNode.parentNode) {\n originalReplaceChild.call(\n
oldChildNode.parentNode,\n unwrapNodesForInsertion(this, nodes),\n
oldChildNode);\n }\n } else {\n ensureSameOwner
Document(this, newChildWrapper);\n clearChildNodes(this);\n origin
alReplaceChild.call(unsafeUnwrap(this), unwrap(newChildWrapper),\n
oldChildNode);\n }\n\n enqueueMutation(this, 'chil
dList', {\n addedNodes: nodes,\n removedNodes: createOneElementNod
eList(oldChildWrapper),\n nextSibling: nextNode,\n previousSibling
: previousNode\n });\n\n nodeWasRemoved(oldChildWrapper);\n nodes
WereAdded(nodes, this);\n\n return oldChildWrapper;\n },\n\n /**\n
* Called after a node was inserted. Subclasses override this to invalidate\n
* the renderer as needed.\n * @private\n */\n nodeIsInserted_: fun
ction() {\n for (var child = this.firstChild; child; child = child.nextSibl
ing) {\n child.nodeIsInserted_();\n }\n },\n\n hasChildNodes:
function() {\n return this.firstChild !== null;\n },\n\n /** @type {N
ode} */\n get parentNode() {\n // If the parentNode has not been overrid
den, use the original parentNode.\n return this.parentNode_ !== undefined ?
\n this.parentNode_ : wrap(unsafeUnwrap(this).parentNode);\n },\n\n
/** @type {Node} */\n get firstChild() {\n return this.firstChild_ !=
= undefined ?\n this.firstChild_ : wrap(unsafeUnwrap(this).firstChild);
\n },\n\n /** @type {Node} */\n get lastChild() {\n return this.la
stChild_ !== undefined ?\n this.lastChild_ : wrap(unsafeUnwrap(this).la
stChild);\n },\n\n /** @type {Node} */\n get nextSibling() {\n ret
urn this.nextSibling_ !== undefined ?\n this.nextSibling_ : wrap(unsafe
Unwrap(this).nextSibling);\n },\n\n /** @type {Node} */\n get previousS
ibling() {\n return this.previousSibling_ !== undefined ?\n this.p
reviousSibling_ : wrap(unsafeUnwrap(this).previousSibling);\n },\n\n get p
arentElement() {\n var p = this.parentNode;\n while (p && p.nodeType !
== Node.ELEMENT_NODE) {\n p = p.parentNode;\n }\n return p;\n
},\n\n get textContent() {\n // TODO(arv): This should fallback to uns
afeUnwrap(this).textContent if there\n // are no shadow trees below or abov
e the context node.\n var s = '';\n for (var child = this.firstChild;
child; child = child.nextSibling) {\n if (child.nodeType != Node.COMMENT_
NODE) {\n s += child.textContent;\n }\n }\n return s;\
n },\n set textContent(textContent) {\n var removedNodes = snapshotNo
deList(this.childNodes);\n\n if (this.invalidateShadowRenderer()) {\n
removeAllChildNodes(this);\n if (textContent !== '') {\n var t
extNode = unsafeUnwrap(this).ownerDocument.createTextNode(textContent);\n
this.appendChild(textNode);\n }\n } else {\n clearChildNod
es(this);\n unsafeUnwrap(this).textContent = textContent;\n }\n\n
var addedNodes = snapshotNodeList(this.childNodes);\n\n enqueueMutation(
this, 'childList', {\n addedNodes: addedNodes,\n removedNodes: rem
ovedNodes\n });\n\n nodesWereRemoved(removedNodes);\n nodesWereAd
ded(addedNodes, this);\n },\n\n get childNodes() {\n var wrapperList
= new NodeList();\n var i = 0;\n for (var child = this.firstChild; chi
ld; child = child.nextSibling) {\n wrapperList[i++] = child;\n }\n
wrapperList.length = i;\n return wrapperList;\n },\n\n cloneNode:
function(deep) {\n return cloneNode(this, deep);\n },\n\n contains:
function(child) {\n return contains(this, wrapIfNeeded(child));\n },\n\n
compareDocumentPosition: function(otherNode) {\n // This only wraps, it
therefore only operates on the composed DOM and not\n // the logical DOM.\
n return originalCompareDocumentPosition.call(unsafeUnwrap(this),\n
unwrapIfNeeded(otherNode));\n },\n\
n normalize: function() {\n var nodes = snapshotNodeList(this.childNodes
);\n var remNodes = [];\n var s = '';\n var modNode;\n\n for
(var i = 0, n; i < nodes.length; i++) {\n n = nodes[i];\n if (n.n
odeType === Node.TEXT_NODE) {\n if (!modNode && !n.data.length)\n
this.removeNode(n);\n else if (!modNode)\n modNode = n
;\n else {\n s += n.data;\n remNodes.push(n);\n
}\n } else {\n if (modNode && remNodes.length) {\n
modNode.data += s;\n cleanupNodes(remNodes);\n }\n
remNodes = [];\n s = '';\n modNode = null;\n if
(n.childNodes.length)\n n.normalize();\n }\n }\n\n
// handle case where >1 text nodes are the last children\n if (modNode && r
emNodes.length) {\n modNode.data += s;\n cleanupNodes(remNodes);\n
}\n }\n });\n\n defineWrapGetter(Node, 'ownerDocument');\n\n // We u
se a DocumentFragment as a base and then delete the properties of\n // Document
Fragment.prototype from the wrapper Node. Since delete makes\n // objects slow
in some JS engines we recreate the prototype object.\n registerWrapper(Original
Node, Node, document.createDocumentFragment());\n delete Node.prototype.querySe
lector;\n delete Node.prototype.querySelectorAll;\n Node.prototype = mixin(Obj
ect.create(EventTarget.prototype), Node.prototype);\n\n scope.cloneNode = clone
Node;\n scope.nodeWasAdded = nodeWasAdded;\n scope.nodeWasRemoved = nodeWasRem
oved;\n scope.nodesWereAdded = nodesWereAdded;\n scope.nodesWereRemoved = node
sWereRemoved;\n scope.snapshotNodeList = snapshotNodeList;\n scope.wrappers.No
de = Node;\n\n})(window.ShadowDOMPolyfill);\n", | 95 "/**\n * Copyright 2012 The Polymer Authors. All rights reserved.\n * Use of
this source code is goverened by a BSD-style\n * license that can be found in t
he LICENSE file.\n */\n\n(function(scope) {\n 'use strict';\n\n var EventTarge
t = scope.wrappers.EventTarget;\n var NodeList = scope.wrappers.NodeList;\n va
r TreeScope = scope.TreeScope;\n var assert = scope.assert;\n var defineWrapGe
tter = scope.defineWrapGetter;\n var enqueueMutation = scope.enqueueMutation;\n
var getTreeScope = scope.getTreeScope;\n var isWrapper = scope.isWrapper;\n
var mixin = scope.mixin;\n var registerTransientObservers = scope.registerTrans
ientObservers;\n var registerWrapper = scope.registerWrapper;\n var setTreeSco
pe = scope.setTreeScope;\n var unsafeUnwrap = scope.unsafeUnwrap;\n var unwrap
= scope.unwrap;\n var unwrapIfNeeded = scope.unwrapIfNeeded;\n var wrap = sco
pe.wrap;\n var wrapIfNeeded = scope.wrapIfNeeded;\n var wrappers = scope.wrapp
ers;\n\n function assertIsNodeWrapper(node) {\n assert(node instanceof Node)
;\n }\n\n function createOneElementNodeList(node) {\n var nodes = new NodeL
ist();\n nodes[0] = node;\n nodes.length = 1;\n return nodes;\n }\n\n
var surpressMutations = false;\n\n /**\n * Called before node is inserted in
to a node to enqueue its removal from its\n * old parent.\n * @param {!Node}
node The node that is about to be removed.\n * @param {!Node} parent The pare
nt node that the node is being removed from.\n * @param {!NodeList} nodes The
collected nodes.\n */\n function enqueueRemovalForInsertedNodes(node, parent,
nodes) {\n enqueueMutation(parent, 'childList', {\n removedNodes: nodes
,\n previousSibling: node.previousSibling,\n nextSibling: node.nextSib
ling\n });\n }\n\n function enqueueRemovalForInsertedDocumentFragment(df, n
odes) {\n enqueueMutation(df, 'childList', {\n removedNodes: nodes\n
});\n }\n\n /**\n * Collects nodes from a DocumentFragment or a Node for rem
oval followed\n * by an insertion.\n *\n * This updates the internal point
ers for node, previousNode and nextNode.\n */\n function collectNodes(node, p
arentNode, previousNode, nextNode) {\n if (node instanceof DocumentFragment)
{\n var nodes = collectNodesForDocumentFragment(node);\n\n // The extr
a loop is to work around bugs with DocumentFragments in IE.\n surpressMutat
ions = true;\n for (var i = nodes.length - 1; i >= 0; i--) {\n node.
removeChild(nodes[i]);\n nodes[i].parentNode_ = parentNode;\n }\n
surpressMutations = false;\n\n for (var i = 0; i < nodes.length; i++) {\
n nodes[i].previousSibling_ = nodes[i - 1] || previousNode;\n node
s[i].nextSibling_ = nodes[i + 1] || nextNode;\n }\n\n if (previousNode
)\n previousNode.nextSibling_ = nodes[0];\n if (nextNode)\n n
extNode.previousSibling_ = nodes[nodes.length - 1];\n\n return nodes;\n
}\n\n var nodes = createOneElementNodeList(node);\n var oldParent = node.p
arentNode;\n if (oldParent) {\n // This will enqueue the mutation record
for the removal as needed.\n oldParent.removeChild(node);\n }\n\n no
de.parentNode_ = parentNode;\n node.previousSibling_ = previousNode;\n nod
e.nextSibling_ = nextNode;\n if (previousNode)\n previousNode.nextSiblin
g_ = node;\n if (nextNode)\n nextNode.previousSibling_ = node;\n\n re
turn nodes;\n }\n\n function collectNodesNative(node) {\n if (node instance
of DocumentFragment)\n return collectNodesForDocumentFragment(node);\n\n
var nodes = createOneElementNodeList(node);\n var oldParent = node.parentNod
e;\n if (oldParent)\n enqueueRemovalForInsertedNodes(node, oldParent, no
des);\n return nodes;\n }\n\n function collectNodesForDocumentFragment(node
) {\n var nodes = new NodeList();\n var i = 0;\n for (var child = node.
firstChild; child; child = child.nextSibling) {\n nodes[i++] = child;\n
}\n nodes.length = i;\n enqueueRemovalForInsertedDocumentFragment(node, no
des);\n return nodes;\n }\n\n function snapshotNodeList(nodeList) {\n //
NodeLists are not live at the moment so just return the same object.\n retur
n nodeList;\n }\n\n // http://dom.spec.whatwg.org/#node-is-inserted\n functio
n nodeWasAdded(node, treeScope) {\n setTreeScope(node, treeScope);\n node.
nodeIsInserted_();\n }\n\n function nodesWereAdded(nodes, parent) {\n var t
reeScope = getTreeScope(parent);\n for (var i = 0; i < nodes.length; i++) {\n
nodeWasAdded(nodes[i], treeScope);\n }\n }\n\n // http://dom.spec.wha
twg.org/#node-is-removed\n function nodeWasRemoved(node) {\n setTreeScope(no
de, new TreeScope(node, null));\n }\n\n function nodesWereRemoved(nodes) {\n
for (var i = 0; i < nodes.length; i++) {\n nodeWasRemoved(nodes[i]);\n
}\n }\n\n function ensureSameOwnerDocument(parent, child) {\n var ownerDoc
= parent.nodeType === Node.DOCUMENT_NODE ?\n parent : parent.ownerDocume
nt;\n if (ownerDoc !== child.ownerDocument)\n ownerDoc.adoptNode(child);
\n }\n\n function adoptNodesIfNeeded(owner, nodes) {\n if (!nodes.length)\n
return;\n\n var ownerDoc = owner.ownerDocument;\n\n // All nodes hav
e the same ownerDocument when we get here.\n if (ownerDoc === nodes[0].ownerD
ocument)\n return;\n\n for (var i = 0; i < nodes.length; i++) {\n s
cope.adoptNodeNoRemove(nodes[i], ownerDoc);\n }\n }\n\n function unwrapNode
sForInsertion(owner, nodes) {\n adoptNodesIfNeeded(owner, nodes);\n var le
ngth = nodes.length;\n\n if (length === 1)\n return unwrap(nodes[0]);\n\
n var df = unwrap(owner.ownerDocument.createDocumentFragment());\n for (va
r i = 0; i < length; i++) {\n df.appendChild(unwrap(nodes[i]));\n }\n
return df;\n }\n\n function clearChildNodes(wrapper) {\n if (wrapper.first
Child_ !== undefined) {\n var child = wrapper.firstChild_;\n while (ch
ild) {\n var tmp = child;\n child = child.nextSibling_;\n t
mp.parentNode_ = tmp.previousSibling_ = tmp.nextSibling_ = undefined;\n }\n
}\n wrapper.firstChild_ = wrapper.lastChild_ = undefined;\n }\n\n funct
ion removeAllChildNodes(wrapper) {\n if (wrapper.invalidateShadowRenderer())
{\n var childWrapper = wrapper.firstChild;\n while (childWrapper) {\n
assert(childWrapper.parentNode === wrapper);\n var nextSibling = c
hildWrapper.nextSibling;\n var childNode = unwrap(childWrapper);\n
var parentNode = childNode.parentNode;\n if (parentNode)\n orig
inalRemoveChild.call(parentNode, childNode);\n childWrapper.previousSibli
ng_ = childWrapper.nextSibling_ =\n childWrapper.parentNode_ = null;\
n childWrapper = nextSibling;\n }\n wrapper.firstChild_ = wrapp
er.lastChild_ = null;\n } else {\n var node = unwrap(wrapper);\n va
r child = node.firstChild;\n var nextSibling;\n while (child) {\n
nextSibling = child.nextSibling;\n originalRemoveChild.call(node, chil
d);\n child = nextSibling;\n }\n }\n }\n\n function invalidateP
arent(node) {\n var p = node.parentNode;\n return p && p.invalidateShadowR
enderer();\n }\n\n function cleanupNodes(nodes) {\n for (var i = 0, n; i <
nodes.length; i++) {\n n = nodes[i];\n n.parentNode.removeChild(n);\n
}\n }\n\n var originalImportNode = document.importNode;\n var originalClon
eNode = window.Node.prototype.cloneNode;\n\n function cloneNode(node, deep, opt
_doc) {\n var clone;\n if (opt_doc)\n clone = wrap(originalImportNode
.call(opt_doc, unsafeUnwrap(node), false));\n else\n clone = wrap(origin
alCloneNode.call(unsafeUnwrap(node), false));\n\n if (deep) {\n for (var
child = node.firstChild; child; child = child.nextSibling) {\n clone.app
endChild(cloneNode(child, true, opt_doc));\n }\n\n if (node instanceof
wrappers.HTMLTemplateElement) {\n var cloneContent = clone.content;\n
for (var child = node.content.firstChild;\n child;\n
child = child.nextSibling) {\n cloneContent.appendChild(cloneNode(chil
d, true, opt_doc));\n }\n }\n }\n // TODO(arv): Some HTML elem
ents also clone other data like value.\n return clone;\n }\n\n function con
tains(self, child) {\n if (!child || getTreeScope(self) !== getTreeScope(chil
d))\n return false;\n\n for (var node = child; node; node = node.parentN
ode) {\n if (node === self)\n return true;\n }\n return false;
\n }\n\n var OriginalNode = window.Node;\n\n /**\n * This represents a wrap
per of a native DOM node.\n * @param {!Node} original The original DOM node, a
ka, the visual DOM node.\n * @constructor\n * @extends {EventTarget}\n */\
n function Node(original) {\n assert(original instanceof OriginalNode);\n\n
EventTarget.call(this, original);\n\n // These properties are used to over
ride the visual references with the\n // logical ones. If the value is undefi
ned it means that the logical is the\n // same as the visual.\n\n /**\n
* @type {Node|undefined}\n * @private\n */\n this.parentNode_ = und
efined;\n\n /**\n * @type {Node|undefined}\n * @private\n */\n
this.firstChild_ = undefined;\n\n /**\n * @type {Node|undefined}\n *
@private\n */\n this.lastChild_ = undefined;\n\n /**\n * @type {N
ode|undefined}\n * @private\n */\n this.nextSibling_ = undefined;\n\n
/**\n * @type {Node|undefined}\n * @private\n */\n this.previ
ousSibling_ = undefined;\n\n this.treeScope_ = undefined;\n }\n\n var Origi
nalDocumentFragment = window.DocumentFragment;\n var originalAppendChild = Orig
inalNode.prototype.appendChild;\n var originalCompareDocumentPosition =\n
OriginalNode.prototype.compareDocumentPosition;\n var originalInsertBefore = Or
iginalNode.prototype.insertBefore;\n var originalRemoveChild = OriginalNode.pro
totype.removeChild;\n var originalReplaceChild = OriginalNode.prototype.replace
Child;\n\n var isIe = /Trident/.test(navigator.userAgent);\n\n var removeChild
OriginalHelper = isIe ?\n function(parent, child) {\n try {\n
originalRemoveChild.call(parent, child);\n } catch (ex) {\n i
f (!(parent instanceof OriginalDocumentFragment))\n throw ex;\n
}\n } :\n function(parent, child) {\n originalRemoveChild.cal
l(parent, child);\n };\n\n Node.prototype = Object.create(EventTarget.prot
otype);\n mixin(Node.prototype, {\n appendChild: function(childWrapper) {\n
return this.insertBefore(childWrapper, null);\n },\n\n insertBefore:
function(childWrapper, refWrapper) {\n assertIsNodeWrapper(childWrapper);\n
\n var refNode;\n if (refWrapper) {\n if (isWrapper(refWrapper)
) {\n refNode = unwrap(refWrapper);\n } else {\n refNod
e = refWrapper;\n refWrapper = wrap(refNode);\n }\n } else
{\n refWrapper = null;\n refNode = null;\n }\n\n refWrap
per && assert(refWrapper.parentNode === this);\n\n var nodes;\n var pr
eviousNode =\n refWrapper ? refWrapper.previousSibling : this.lastChild
;\n\n var useNative = !this.invalidateShadowRenderer() &&\n
!invalidateParent(childWrapper);\n\n if (useNative)\n nodes =
collectNodesNative(childWrapper);\n else\n nodes = collectNodes(chil
dWrapper, this, previousNode, refWrapper);\n\n if (useNative) {\n en
sureSameOwnerDocument(this, childWrapper);\n clearChildNodes(this);\n
originalInsertBefore.call(unsafeUnwrap(this), unwrap(childWrapper), refNode)
;\n } else {\n if (!previousNode)\n this.firstChild_ = node
s[0];\n if (!refWrapper) {\n this.lastChild_ = nodes[nodes.lengt
h - 1];\n if (this.firstChild_ === undefined)\n this.firstCh
ild_ = this.firstChild;\n }\n\n var parentNode = refNode ? refNode
.parentNode : unsafeUnwrap(this);\n\n // insertBefore refWrapper no matte
r what the parent is?\n if (parentNode) {\n originalInsertBefore
.call(parentNode,\n unwrapNodesForInsertion(this, nodes), refNode);
\n } else {\n adoptNodesIfNeeded(this, nodes);\n }\n
}\n\n enqueueMutation(this, 'childList', {\n addedNodes: nodes,\n
nextSibling: refWrapper,\n previousSibling: previousNode\n });
\n\n nodesWereAdded(nodes, this);\n\n return childWrapper;\n },\n\n
removeChild: function(childWrapper) {\n assertIsNodeWrapper(childWrappe
r);\n if (childWrapper.parentNode !== this) {\n // IE has invalid DO
M trees at times.\n var found = false;\n var childNodes = this.chi
ldNodes;\n for (var ieChild = this.firstChild; ieChild;\n ieC
hild = ieChild.nextSibling) {\n if (ieChild === childWrapper) {\n
found = true;\n break;\n }\n }\n if (!fo
und) {\n // TODO(arv): DOMException\n throw new Error('NotFoun
dError');\n }\n }\n\n var childNode = unwrap(childWrapper);\n
var childWrapperNextSibling = childWrapper.nextSibling;\n var childWrap
perPreviousSibling = childWrapper.previousSibling;\n\n if (this.invalidateS
hadowRenderer()) {\n // We need to remove the real node from the DOM befo
re updating the\n // pointers. This is so that that mutation event is dis
patched before\n // the pointers have changed.\n var thisFirstChil
d = this.firstChild;\n var thisLastChild = this.lastChild;\n\n var
parentNode = childNode.parentNode;\n if (parentNode)\n removeCh
ildOriginalHelper(parentNode, childNode);\n\n if (thisFirstChild === chil
dWrapper)\n this.firstChild_ = childWrapperNextSibling;\n if (th
isLastChild === childWrapper)\n this.lastChild_ = childWrapperPreviousS
ibling;\n if (childWrapperPreviousSibling)\n childWrapperPreviou
sSibling.nextSibling_ = childWrapperNextSibling;\n if (childWrapperNextSi
bling) {\n childWrapperNextSibling.previousSibling_ =\n ch
ildWrapperPreviousSibling;\n }\n\n childWrapper.previousSibling_ =
childWrapper.nextSibling_ =\n childWrapper.parentNode_ = undefined;\
n } else {\n clearChildNodes(this);\n removeChildOriginalHelp
er(unsafeUnwrap(this), childNode);\n }\n\n if (!surpressMutations) {\n
enqueueMutation(this, 'childList', {\n removedNodes: createOneE
lementNodeList(childWrapper),\n nextSibling: childWrapperNextSibling,\n
previousSibling: childWrapperPreviousSibling\n });\n }\n\n
registerTransientObservers(this, childWrapper);\n\n return childWrapp
er;\n },\n\n replaceChild: function(newChildWrapper, oldChildWrapper) {\n
assertIsNodeWrapper(newChildWrapper);\n\n var oldChildNode;\n if
(isWrapper(oldChildWrapper)) {\n oldChildNode = unwrap(oldChildWrapper);\
n } else {\n oldChildNode = oldChildWrapper;\n oldChildWrappe
r = wrap(oldChildNode);\n }\n\n if (oldChildWrapper.parentNode !== thi
s) {\n // TODO(arv): DOMException\n throw new Error('NotFoundError
');\n }\n\n var nextNode = oldChildWrapper.nextSibling;\n var pre
viousNode = oldChildWrapper.previousSibling;\n var nodes;\n\n var useN
ative = !this.invalidateShadowRenderer() &&\n !invalidatePa
rent(newChildWrapper);\n\n if (useNative) {\n nodes = collectNodesNa
tive(newChildWrapper);\n } else {\n if (nextNode === newChildWrapper
)\n nextNode = newChildWrapper.nextSibling;\n nodes = collectNod
es(newChildWrapper, this, previousNode, nextNode);\n }\n\n if (!useNat
ive) {\n if (this.firstChild === oldChildWrapper)\n this.firstCh
ild_ = nodes[0];\n if (this.lastChild === oldChildWrapper)\n thi
s.lastChild_ = nodes[nodes.length - 1];\n\n oldChildWrapper.previousSibli
ng_ = oldChildWrapper.nextSibling_ =\n oldChildWrapper.parentNode_ =
undefined;\n\n // replaceChild no matter what the parent is?\n if
(oldChildNode.parentNode) {\n originalReplaceChild.call(\n
oldChildNode.parentNode,\n unwrapNodesForInsertion(this, nodes),\n
oldChildNode);\n }\n } else {\n ensureSameOwner
Document(this, newChildWrapper);\n clearChildNodes(this);\n origin
alReplaceChild.call(unsafeUnwrap(this), unwrap(newChildWrapper),\n
oldChildNode);\n }\n\n enqueueMutation(this, 'chil
dList', {\n addedNodes: nodes,\n removedNodes: createOneElementNod
eList(oldChildWrapper),\n nextSibling: nextNode,\n previousSibling
: previousNode\n });\n\n nodeWasRemoved(oldChildWrapper);\n nodes
WereAdded(nodes, this);\n\n return oldChildWrapper;\n },\n\n /**\n
* Called after a node was inserted. Subclasses override this to invalidate\n
* the renderer as needed.\n * @private\n */\n nodeIsInserted_: fun
ction() {\n for (var child = this.firstChild; child; child = child.nextSibl
ing) {\n child.nodeIsInserted_();\n }\n },\n\n hasChildNodes:
function() {\n return this.firstChild !== null;\n },\n\n /** @type {N
ode} */\n get parentNode() {\n // If the parentNode has not been overrid
den, use the original parentNode.\n return this.parentNode_ !== undefined ?
\n this.parentNode_ : wrap(unsafeUnwrap(this).parentNode);\n },\n\n
/** @type {Node} */\n get firstChild() {\n return this.firstChild_ !=
= undefined ?\n this.firstChild_ : wrap(unsafeUnwrap(this).firstChild);
\n },\n\n /** @type {Node} */\n get lastChild() {\n return this.la
stChild_ !== undefined ?\n this.lastChild_ : wrap(unsafeUnwrap(this).la
stChild);\n },\n\n /** @type {Node} */\n get nextSibling() {\n ret
urn this.nextSibling_ !== undefined ?\n this.nextSibling_ : wrap(unsafe
Unwrap(this).nextSibling);\n },\n\n /** @type {Node} */\n get previousS
ibling() {\n return this.previousSibling_ !== undefined ?\n this.p
reviousSibling_ : wrap(unsafeUnwrap(this).previousSibling);\n },\n\n get p
arentElement() {\n var p = this.parentNode;\n while (p && p.nodeType !
== Node.ELEMENT_NODE) {\n p = p.parentNode;\n }\n return p;\n
},\n\n get textContent() {\n // TODO(arv): This should fallback to uns
afeUnwrap(this).textContent if there\n // are no shadow trees below or abov
e the context node.\n var s = '';\n for (var child = this.firstChild;
child; child = child.nextSibling) {\n if (child.nodeType != Node.COMMENT_
NODE) {\n s += child.textContent;\n }\n }\n return s;\
n },\n set textContent(textContent) {\n var removedNodes = snapshotNo
deList(this.childNodes);\n\n if (this.invalidateShadowRenderer()) {\n
removeAllChildNodes(this);\n if (textContent !== '') {\n var t
extNode = unsafeUnwrap(this).ownerDocument.createTextNode(textContent);\n
this.appendChild(textNode);\n }\n } else {\n clearChildNod
es(this);\n unsafeUnwrap(this).textContent = textContent;\n }\n\n
var addedNodes = snapshotNodeList(this.childNodes);\n\n enqueueMutation(
this, 'childList', {\n addedNodes: addedNodes,\n removedNodes: rem
ovedNodes\n });\n\n nodesWereRemoved(removedNodes);\n nodesWereAd
ded(addedNodes, this);\n },\n\n get childNodes() {\n var wrapperList
= new NodeList();\n var i = 0;\n for (var child = this.firstChild; chi
ld; child = child.nextSibling) {\n wrapperList[i++] = child;\n }\n
wrapperList.length = i;\n return wrapperList;\n },\n\n cloneNode:
function(deep) {\n return cloneNode(this, deep);\n },\n\n contains:
function(child) {\n return contains(this, wrapIfNeeded(child));\n },\n\n
compareDocumentPosition: function(otherNode) {\n // This only wraps, it
therefore only operates on the composed DOM and not\n // the logical DOM.\
n return originalCompareDocumentPosition.call(unsafeUnwrap(this),\n
unwrapIfNeeded(otherNode));\n },\n\
n normalize: function() {\n var nodes = snapshotNodeList(this.childNodes
);\n var remNodes = [];\n var s = '';\n var modNode;\n\n for
(var i = 0, n; i < nodes.length; i++) {\n n = nodes[i];\n if (n.n
odeType === Node.TEXT_NODE) {\n if (!modNode && !n.data.length)\n
this.removeNode(n);\n else if (!modNode)\n modNode = n
;\n else {\n s += n.data;\n remNodes.push(n);\n
}\n } else {\n if (modNode && remNodes.length) {\n
modNode.data += s;\n cleanupNodes(remNodes);\n }\n
remNodes = [];\n s = '';\n modNode = null;\n if
(n.childNodes.length)\n n.normalize();\n }\n }\n\n
// handle case where >1 text nodes are the last children\n if (modNode && r
emNodes.length) {\n modNode.data += s;\n cleanupNodes(remNodes);\n
}\n }\n });\n\n defineWrapGetter(Node, 'ownerDocument');\n\n // We u
se a DocumentFragment as a base and then delete the properties of\n // Document
Fragment.prototype from the wrapper Node. Since delete makes\n // objects slow
in some JS engines we recreate the prototype object.\n registerWrapper(Original
Node, Node, document.createDocumentFragment());\n delete Node.prototype.querySe
lector;\n delete Node.prototype.querySelectorAll;\n Node.prototype = mixin(Obj
ect.create(EventTarget.prototype), Node.prototype);\n\n scope.cloneNode = clone
Node;\n scope.nodeWasAdded = nodeWasAdded;\n scope.nodeWasRemoved = nodeWasRem
oved;\n scope.nodesWereAdded = nodesWereAdded;\n scope.nodesWereRemoved = node
sWereRemoved;\n scope.snapshotNodeList = snapshotNodeList;\n scope.wrappers.No
de = Node;\n\n})(window.ShadowDOMPolyfill);\n", |
96 "// Copyright 2013 The Polymer Authors. All rights reserved.\n// Use of this
source code is governed by a BSD-style\n// license that can be found in the LIC
ENSE file.\n\n(function(scope) {\n 'use strict';\n\n var HTMLCollection = scop
e.wrappers.HTMLCollection;\n var NodeList = scope.wrappers.NodeList;\n var get
TreeScope = scope.getTreeScope;\n var unsafeUnwrap = scope.unsafeUnwrap;\n var
wrap = scope.wrap;\n\n var originalDocumentQuerySelector = document.querySelec
tor;\n var originalElementQuerySelector = document.documentElement.querySelecto
r;\n\n var originalDocumentQuerySelectorAll = document.querySelectorAll;\n var
originalElementQuerySelectorAll = document.documentElement.querySelectorAll;\n\
n var originalDocumentGetElementsByTagName = document.getElementsByTagName;\n
var originalElementGetElementsByTagName = document.documentElement.getElementsBy
TagName;\n\n var originalDocumentGetElementsByTagNameNS = document.getElementsB
yTagNameNS;\n var originalElementGetElementsByTagNameNS = document.documentElem
ent.getElementsByTagNameNS;\n\n var OriginalElement = window.Element;\n var Or
iginalDocument = window.HTMLDocument || window.Document;\n\n function filterNod
eList(list, index, result, deep) {\n var wrappedItem = null;\n var root =
null;\n for (var i = 0, length = list.length; i < length; i++) {\n wrapp
edItem = wrap(list[i]);\n if (!deep && (root = getTreeScope(wrappedItem).ro
ot)) {\n if (root instanceof scope.wrappers.ShadowRoot) {\n cont
inue;\n }\n }\n result[index++] = wrappedItem;\n }\n\n re
turn index;\n }\n\n function shimSelector(selector) {\n return String(selec
tor).replace(/\\/deep\\//g, ' ');\n }\n\n function findOne(node, selector) {\n
var m, el = node.firstElementChild;\n while (el) {\n if (el.matches(
selector))\n return el;\n m = findOne(el, selector);\n if (m)\n
return m;\n el = el.nextElementSibling;\n }\n return null;\n
}\n\n function matchesSelector(el, selector) {\n return el.matches(selector
);\n }\n\n var XHTML_NS = 'http://www.w3.org/1999/xhtml';\n\n function matche
sTagName(el, localName, localNameLowerCase) {\n var ln = el.localName;\n r
eturn ln === localName ||\n ln === localNameLowerCase && el.namespaceURI
=== XHTML_NS;\n }\n\n function matchesEveryThing() {\n return true;\n }\n\
n function matchesLocalNameOnly(el, ns, localName) {\n return el.localName =
== localName;\n }\n\n function matchesNameSpace(el, ns) {\n return el.names
paceURI === ns;\n }\n\n function matchesLocalNameNS(el, ns, localName) {\n
return el.namespaceURI === ns && el.localName === localName;\n }\n\n function
findElements(node, index, result, p, arg0, arg1) {\n var el = node.firstEleme
ntChild;\n while (el) {\n if (p(el, arg0, arg1))\n result[index++
] = el;\n index = findElements(el, index, result, p, arg0, arg1);\n el
= el.nextElementSibling;\n }\n return index;\n }\n\n // find and findAl
l will only match Simple Selectors,\n // Structural Pseudo Classes are not guar
enteed to be correct\n // http://www.w3.org/TR/css3-selectors/#simple-selectors
\n\n function querySelectorAllFiltered(p, index, result, selector, deep) {\n
var target = unsafeUnwrap(this);\n var list;\n var root = getTreeScope(th
is).root;\n if (root instanceof scope.wrappers.ShadowRoot) {\n // We are
in the shadow tree and the logical tree is\n // going to be disconnected s
o we do a manual tree traversal\n return findElements(this, index, result,
p, selector, null);\n } else if (target instanceof OriginalElement) {\n
list = originalElementQuerySelectorAll.call(target, selector);\n } else if (t
arget instanceof OriginalDocument) {\n list = originalDocumentQuerySelector
All.call(target, selector);\n } else {\n // When we get a ShadowRoot the
logical tree is going to be disconnected\n // so we do a manual tree trave
rsal\n return findElements(this, index, result, p, selector, null);\n }\
n\n return filterNodeList(list, index, result, deep);\n }\n\n var Selectors
Interface = {\n querySelector: function(selector) {\n var shimmed = shim
Selector(selector);\n var deep = shimmed !== selector;\n selector = sh
immed;\n\n var target = unsafeUnwrap(this);\n var wrappedItem;\n
var root = getTreeScope(this).root;\n if (root instanceof scope.wrappers.Sh
adowRoot) {\n // We are in the shadow tree and the logical tree is\n
// going to be disconnected so we do a manual tree traversal\n return
findOne(this, selector);\n } else if (target instanceof OriginalElement) {\
n wrappedItem = wrap(originalElementQuerySelector.call(target, selector))
;\n } else if (target instanceof OriginalDocument) {\n wrappedItem =
wrap(originalDocumentQuerySelector.call(target, selector));\n } else {\n
// When we get a ShadowRoot the logical tree is going to be disconnected\n
// so we do a manual tree traversal\n return findOne(this, select
or);\n }\n\n if (!wrappedItem) {\n // When the original query r
eturns nothing\n // we return nothing (to be consistent with the other wr
apped calls)\n return wrappedItem;\n } else if (!deep && (root = get
TreeScope(wrappedItem).root)) {\n if (root instanceof scope.wrappers.Shad
owRoot) {\n // When the original query returns an element in the Shadow
DOM\n // we must do a manual tree traversal\n return findOne(t
his, selector);\n }\n }\n\n return wrappedItem;\n },\n qu
erySelectorAll: function(selector) {\n var shimmed = shimSelector(selector)
;\n var deep = shimmed !== selector;\n selector = shimmed;\n\n va
r result = new NodeList();\n\n result.length = querySelectorAllFiltered.cal
l(this,\n matchesSelector,\n 0,\n result,\n
selector,\n deep);\n\n return result;\n }\n };\n\n function g
etElementsByTagNameFiltered(p, index, result, localName,\n
lowercase) {\n var target = unsafeUnwrap(this);\n var li
st;\n var root = getTreeScope(this).root;\n if (root instanceof scope.wrap
pers.ShadowRoot) {\n // We are in the shadow tree and the logical tree is\n
// going to be disconnected so we do a manual tree traversal\n return
findElements(this, index, result, p, localName, lowercase);\n } else if (tar
get instanceof OriginalElement) {\n list = originalElementGetElementsByTagN
ame.call(target, localName,\n
lowercase);\n } else if (target instanceof OriginalDocument) {\n list
= originalDocumentGetElementsByTagName.call(target, localName,\n
lowercase);\n } else {\n // When
we get a ShadowRoot the logical tree is going to be disconnected\n // so w
e do a manual tree traversal\n return findElements(this, index, result, p,
localName, lowercase);\n }\n\n return filterNodeList(list, index, result,
false);\n }\n\n function getElementsByTagNameNSFiltered(p, index, result, ns,
localName) {\n var target = unsafeUnwrap(this);\n var list;\n var root
= getTreeScope(this).root;\n if (root instanceof scope.wrappers.ShadowRoot) {
\n // We are in the shadow tree and the logical tree is\n // going to
be disconnected so we do a manual tree traversal\n return findElements(this
, index, result, p, ns, localName);\n } else if (target instanceof OriginalEl
ement) {\n list = originalElementGetElementsByTagNameNS.call(target, ns, lo
calName);\n } else if (target instanceof OriginalDocument) {\n list = or
iginalDocumentGetElementsByTagNameNS.call(target, ns, localName);\n } else {\
n // When we get a ShadowRoot the logical tree is going to be disconnected\
n // so we do a manual tree traversal\n return findElements(this, inde
x, result, p, ns, localName);\n }\n\n return filterNodeList(list, index, r
esult, false);\n }\n\n var GetElementsByInterface = {\n getElementsByTagNam
e: function(localName) {\n var result = new HTMLCollection();\n var ma
tch = localName === '*' ? matchesEveryThing : matchesTagName;\n\n result.le
ngth = getElementsByTagNameFiltered.call(this,\n match,\n 0,\n
result,\n localName,\n localName.toLowerCase());\n\n
return result;\n },\n\n getElementsByClassName: function(className)
{\n // TODO(arv): Check className?\n return this.querySelectorAll('.'
+ className);\n },\n\n getElementsByTagNameNS: function(ns, localName) {\n
var result = new HTMLCollection();\n var match = null;\n\n if (n
s === '*') {\n match = localName === '*' ? matchesEveryThing : matchesLoc
alNameOnly;\n } else {\n match = localName === '*' ? matchesNameSpac
e : matchesLocalNameNS;\n }\n\n result.length = getElementsByTagNameNS
Filtered.call(this,\n match,\n 0,\n result,\n
ns || null,\n localName);\n\n return result;\n }\n };\n\n s
cope.GetElementsByInterface = GetElementsByInterface;\n scope.SelectorsInterfac
e = SelectorsInterface;\n\n})(window.ShadowDOMPolyfill);\n", | 96 "// Copyright 2013 The Polymer Authors. All rights reserved.\n// Use of this
source code is governed by a BSD-style\n// license that can be found in the LIC
ENSE file.\n\n(function(scope) {\n 'use strict';\n\n var HTMLCollection = scop
e.wrappers.HTMLCollection;\n var NodeList = scope.wrappers.NodeList;\n var get
TreeScope = scope.getTreeScope;\n var unsafeUnwrap = scope.unsafeUnwrap;\n var
wrap = scope.wrap;\n\n var originalDocumentQuerySelector = document.querySelec
tor;\n var originalElementQuerySelector = document.documentElement.querySelecto
r;\n\n var originalDocumentQuerySelectorAll = document.querySelectorAll;\n var
originalElementQuerySelectorAll = document.documentElement.querySelectorAll;\n\
n var originalDocumentGetElementsByTagName = document.getElementsByTagName;\n
var originalElementGetElementsByTagName = document.documentElement.getElementsBy
TagName;\n\n var originalDocumentGetElementsByTagNameNS = document.getElementsB
yTagNameNS;\n var originalElementGetElementsByTagNameNS = document.documentElem
ent.getElementsByTagNameNS;\n\n var OriginalElement = window.Element;\n var Or
iginalDocument = window.HTMLDocument || window.Document;\n\n function filterNod
eList(list, index, result, deep) {\n var wrappedItem = null;\n var root =
null;\n for (var i = 0, length = list.length; i < length; i++) {\n wrapp
edItem = wrap(list[i]);\n if (!deep && (root = getTreeScope(wrappedItem).ro
ot)) {\n if (root instanceof scope.wrappers.ShadowRoot) {\n cont
inue;\n }\n }\n result[index++] = wrappedItem;\n }\n\n re
turn index;\n }\n\n function shimSelector(selector) {\n return String(selec
tor).replace(/\\/deep\\//g, ' ');\n }\n\n function findOne(node, selector) {\n
var m, el = node.firstElementChild;\n while (el) {\n if (el.matches(
selector))\n return el;\n m = findOne(el, selector);\n if (m)\n
return m;\n el = el.nextElementSibling;\n }\n return null;\n
}\n\n function matchesSelector(el, selector) {\n return el.matches(selector
);\n }\n\n var XHTML_NS = 'http://www.w3.org/1999/xhtml';\n\n function matche
sTagName(el, localName, localNameLowerCase) {\n var ln = el.localName;\n r
eturn ln === localName ||\n ln === localNameLowerCase && el.namespaceURI
=== XHTML_NS;\n }\n\n function matchesEveryThing() {\n return true;\n }\n\
n function matchesLocalNameOnly(el, ns, localName) {\n return el.localName =
== localName;\n }\n\n function matchesNameSpace(el, ns) {\n return el.names
paceURI === ns;\n }\n\n function matchesLocalNameNS(el, ns, localName) {\n
return el.namespaceURI === ns && el.localName === localName;\n }\n\n function
findElements(node, index, result, p, arg0, arg1) {\n var el = node.firstEleme
ntChild;\n while (el) {\n if (p(el, arg0, arg1))\n result[index++
] = el;\n index = findElements(el, index, result, p, arg0, arg1);\n el
= el.nextElementSibling;\n }\n return index;\n }\n\n // find and findAl
l will only match Simple Selectors,\n // Structural Pseudo Classes are not guar
enteed to be correct\n // http://www.w3.org/TR/css3-selectors/#simple-selectors
\n\n function querySelectorAllFiltered(p, index, result, selector, deep) {\n
var target = unsafeUnwrap(this);\n var list;\n var root = getTreeScope(th
is).root;\n if (root instanceof scope.wrappers.ShadowRoot) {\n // We are
in the shadow tree and the logical tree is\n // going to be disconnected s
o we do a manual tree traversal\n return findElements(this, index, result,
p, selector, null);\n } else if (target instanceof OriginalElement) {\n
list = originalElementQuerySelectorAll.call(target, selector);\n } else if (t
arget instanceof OriginalDocument) {\n list = originalDocumentQuerySelector
All.call(target, selector);\n } else {\n // When we get a ShadowRoot the
logical tree is going to be disconnected\n // so we do a manual tree trave
rsal\n return findElements(this, index, result, p, selector, null);\n }\
n\n return filterNodeList(list, index, result, deep);\n }\n\n var Selectors
Interface = {\n querySelector: function(selector) {\n var shimmed = shim
Selector(selector);\n var deep = shimmed !== selector;\n selector = sh
immed;\n\n var target = unsafeUnwrap(this);\n var wrappedItem;\n
var root = getTreeScope(this).root;\n if (root instanceof scope.wrappers.Sh
adowRoot) {\n // We are in the shadow tree and the logical tree is\n
// going to be disconnected so we do a manual tree traversal\n return
findOne(this, selector);\n } else if (target instanceof OriginalElement) {\
n wrappedItem = wrap(originalElementQuerySelector.call(target, selector))
;\n } else if (target instanceof OriginalDocument) {\n wrappedItem =
wrap(originalDocumentQuerySelector.call(target, selector));\n } else {\n
// When we get a ShadowRoot the logical tree is going to be disconnected\n
// so we do a manual tree traversal\n return findOne(this, select
or);\n }\n\n if (!wrappedItem) {\n // When the original query r
eturns nothing\n // we return nothing (to be consistent with the other wr
apped calls)\n return wrappedItem;\n } else if (!deep && (root = get
TreeScope(wrappedItem).root)) {\n if (root instanceof scope.wrappers.Shad
owRoot) {\n // When the original query returns an element in the Shadow
DOM\n // we must do a manual tree traversal\n return findOne(t
his, selector);\n }\n }\n\n return wrappedItem;\n },\n qu
erySelectorAll: function(selector) {\n var shimmed = shimSelector(selector)
;\n var deep = shimmed !== selector;\n selector = shimmed;\n\n va
r result = new NodeList();\n\n result.length = querySelectorAllFiltered.cal
l(this,\n matchesSelector,\n 0,\n result,\n
selector,\n deep);\n\n return result;\n }\n };\n\n function g
etElementsByTagNameFiltered(p, index, result, localName,\n
lowercase) {\n var target = unsafeUnwrap(this);\n var li
st;\n var root = getTreeScope(this).root;\n if (root instanceof scope.wrap
pers.ShadowRoot) {\n // We are in the shadow tree and the logical tree is\n
// going to be disconnected so we do a manual tree traversal\n return
findElements(this, index, result, p, localName, lowercase);\n } else if (tar
get instanceof OriginalElement) {\n list = originalElementGetElementsByTagN
ame.call(target, localName,\n
lowercase);\n } else if (target instanceof OriginalDocument) {\n list
= originalDocumentGetElementsByTagName.call(target, localName,\n
lowercase);\n } else {\n // When
we get a ShadowRoot the logical tree is going to be disconnected\n // so w
e do a manual tree traversal\n return findElements(this, index, result, p,
localName, lowercase);\n }\n\n return filterNodeList(list, index, result,
false);\n }\n\n function getElementsByTagNameNSFiltered(p, index, result, ns,
localName) {\n var target = unsafeUnwrap(this);\n var list;\n var root
= getTreeScope(this).root;\n if (root instanceof scope.wrappers.ShadowRoot) {
\n // We are in the shadow tree and the logical tree is\n // going to
be disconnected so we do a manual tree traversal\n return findElements(this
, index, result, p, ns, localName);\n } else if (target instanceof OriginalEl
ement) {\n list = originalElementGetElementsByTagNameNS.call(target, ns, lo
calName);\n } else if (target instanceof OriginalDocument) {\n list = or
iginalDocumentGetElementsByTagNameNS.call(target, ns, localName);\n } else {\
n // When we get a ShadowRoot the logical tree is going to be disconnected\
n // so we do a manual tree traversal\n return findElements(this, inde
x, result, p, ns, localName);\n }\n\n return filterNodeList(list, index, r
esult, false);\n }\n\n var GetElementsByInterface = {\n getElementsByTagNam
e: function(localName) {\n var result = new HTMLCollection();\n var ma
tch = localName === '*' ? matchesEveryThing : matchesTagName;\n\n result.le
ngth = getElementsByTagNameFiltered.call(this,\n match,\n 0,\n
result,\n localName,\n localName.toLowerCase());\n\n
return result;\n },\n\n getElementsByClassName: function(className)
{\n // TODO(arv): Check className?\n return this.querySelectorAll('.'
+ className);\n },\n\n getElementsByTagNameNS: function(ns, localName) {\n
var result = new HTMLCollection();\n var match = null;\n\n if (n
s === '*') {\n match = localName === '*' ? matchesEveryThing : matchesLoc
alNameOnly;\n } else {\n match = localName === '*' ? matchesNameSpac
e : matchesLocalNameNS;\n }\n\n result.length = getElementsByTagNameNS
Filtered.call(this,\n match,\n 0,\n result,\n
ns || null,\n localName);\n\n return result;\n }\n };\n\n s
cope.GetElementsByInterface = GetElementsByInterface;\n scope.SelectorsInterfac
e = SelectorsInterface;\n\n})(window.ShadowDOMPolyfill);\n", |
97 "// Copyright 2013 The Polymer Authors. All rights reserved.\n// Use of this
source code is goverened by a BSD-style\n// license that can be found in the LI
CENSE file.\n\n(function(scope) {\n 'use strict';\n\n var NodeList = scope.wra
ppers.NodeList;\n\n function forwardElement(node) {\n while (node && node.no
deType !== Node.ELEMENT_NODE) {\n node = node.nextSibling;\n }\n retu
rn node;\n }\n\n function backwardsElement(node) {\n while (node && node.no
deType !== Node.ELEMENT_NODE) {\n node = node.previousSibling;\n }\n
return node;\n }\n\n var ParentNodeInterface = {\n get firstElementChild()
{\n return forwardElement(this.firstChild);\n },\n\n get lastElementC
hild() {\n return backwardsElement(this.lastChild);\n },\n\n get chil
dElementCount() {\n var count = 0;\n for (var child = this.firstElemen
tChild;\n child;\n child = child.nextElementSibling) {\n
count++;\n }\n return count;\n },\n\n get children() {\n
var wrapperList = new NodeList();\n var i = 0;\n for (var child = th
is.firstElementChild;\n child;\n child = child.nextElementSi
bling) {\n wrapperList[i++] = child;\n }\n wrapperList.length =
i;\n return wrapperList;\n },\n\n remove: function() {\n var p
= this.parentNode;\n if (p)\n p.removeChild(this);\n }\n };\n\n
var ChildNodeInterface = {\n get nextElementSibling() {\n return forwar
dElement(this.nextSibling);\n },\n\n get previousElementSibling() {\n
return backwardsElement(this.previousSibling);\n }\n };\n\n scope.ChildNod
eInterface = ChildNodeInterface;\n scope.ParentNodeInterface = ParentNodeInterf
ace;\n\n})(window.ShadowDOMPolyfill);\n", | 97 "// Copyright 2013 The Polymer Authors. All rights reserved.\n// Use of this
source code is goverened by a BSD-style\n// license that can be found in the LI
CENSE file.\n\n(function(scope) {\n 'use strict';\n\n var NodeList = scope.wra
ppers.NodeList;\n\n function forwardElement(node) {\n while (node && node.no
deType !== Node.ELEMENT_NODE) {\n node = node.nextSibling;\n }\n retu
rn node;\n }\n\n function backwardsElement(node) {\n while (node && node.no
deType !== Node.ELEMENT_NODE) {\n node = node.previousSibling;\n }\n
return node;\n }\n\n var ParentNodeInterface = {\n get firstElementChild()
{\n return forwardElement(this.firstChild);\n },\n\n get lastElementC
hild() {\n return backwardsElement(this.lastChild);\n },\n\n get chil
dElementCount() {\n var count = 0;\n for (var child = this.firstElemen
tChild;\n child;\n child = child.nextElementSibling) {\n
count++;\n }\n return count;\n },\n\n get children() {\n
var wrapperList = new NodeList();\n var i = 0;\n for (var child = th
is.firstElementChild;\n child;\n child = child.nextElementSi
bling) {\n wrapperList[i++] = child;\n }\n wrapperList.length =
i;\n return wrapperList;\n },\n\n remove: function() {\n var p
= this.parentNode;\n if (p)\n p.removeChild(this);\n }\n };\n\n
var ChildNodeInterface = {\n get nextElementSibling() {\n return forwar
dElement(this.nextSibling);\n },\n\n get previousElementSibling() {\n
return backwardsElement(this.previousSibling);\n }\n };\n\n scope.ChildNod
eInterface = ChildNodeInterface;\n scope.ParentNodeInterface = ParentNodeInterf
ace;\n\n})(window.ShadowDOMPolyfill);\n", |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
149 "/*\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
\n * This code may only be used under the BSD style license found at http://poly
mer.github.io/LICENSE.txt\n * The complete set of authors may be found at http:/
/polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found
at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as
part of the polymer project is also\n * subject to an additional IP rights grant
found at http://polymer.github.io/PATENTS.txt\n */\nwindow.CustomElements = win
dow.CustomElements || {flags:{}};", | 149 "/*\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
\n * This code may only be used under the BSD style license found at http://poly
mer.github.io/LICENSE.txt\n * The complete set of authors may be found at http:/
/polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found
at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as
part of the polymer project is also\n * subject to an additional IP rights grant
found at http://polymer.github.io/PATENTS.txt\n */\nwindow.CustomElements = win
dow.CustomElements || {flags:{}};", |
150 "/*\r\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserve
d.\r\n * This code may only be used under the BSD style license found at http://
polymer.github.io/LICENSE.txt\r\n * The complete set of authors may be found at
http://polymer.github.io/AUTHORS.txt\r\n * The complete set of contributors may
be found at http://polymer.github.io/CONTRIBUTORS.txt\r\n * Code distributed by
Google as part of the polymer project is also\r\n * subject to an additional IP
rights grant found at http://polymer.github.io/PATENTS.txt\r\n */\r\n\r\n(functi
on(scope){\r\n\r\nvar logFlags = window.logFlags || {};\r\nvar IMPORT_LINK_TYPE
= window.HTMLImports ? HTMLImports.IMPORT_LINK_TYPE : 'none';\r\n\r\n// walk the
subtree rooted at node, applying 'find(element, data)' function\r\n// to each e
lement\r\n// if 'find' returns true for 'element', do not search element's subtr
ee\r\nfunction findAll(node, find, data) {\r\n var e = node.firstElementChild;\
r\n if (!e) {\r\n e = node.firstChild;\r\n while (e && e.nodeType !== Nod
e.ELEMENT_NODE) {\r\n e = e.nextSibling;\r\n }\r\n }\r\n while (e) {\r
\n if (find(e, data) !== true) {\r\n findAll(e, find, data);\r\n }\r\
n e = e.nextElementSibling;\r\n }\r\n return null;\r\n}\r\n\r\n// walk all
shadowRoots on a given node.\r\nfunction forRoots(node, cb) {\r\n var root = no
de.shadowRoot;\r\n while(root) {\r\n forSubtree(root, cb);\r\n root = roo
t.olderShadowRoot;\r\n }\r\n}\r\n\r\n// walk the subtree rooted at node, includ
ing descent into shadow-roots,\r\n// applying 'cb' to each element\r\nfunction f
orSubtree(node, cb) {\r\n //logFlags.dom && node.childNodes && node.childNodes.
length && console.group('subTree: ', node);\r\n findAll(node, function(e) {\r\n
if (cb(e)) {\r\n return true;\r\n }\r\n forRoots(e, cb);\r\n });
\r\n forRoots(node, cb);\r\n //logFlags.dom && node.childNodes && node.childNo
des.length && console.groupEnd();\r\n}\r\n\r\n// manage lifecycle on added node\
r\nfunction added(node) {\r\n if (upgrade(node)) {\r\n insertedNode(node);\r
\n return true;\r\n }\r\n inserted(node);\r\n}\r\n\r\n// manage lifecycle o
n added node's subtree only\r\nfunction addedSubtree(node) {\r\n forSubtree(nod
e, function(e) {\r\n if (added(e)) {\r\n return true;\r\n }\r\n });\
r\n}\r\n\r\n// manage lifecycle on added node and it's subtree\r\nfunction added
Node(node) {\r\n return added(node) || addedSubtree(node);\r\n}\r\n\r\n// upgra
de custom elements at node, if applicable\r\nfunction upgrade(node) {\r\n if (!
node.__upgraded__ && node.nodeType === Node.ELEMENT_NODE) {\r\n var type = no
de.getAttribute('is') || node.localName;\r\n var definition = scope.registry[
type];\r\n if (definition) {\r\n logFlags.dom && console.group('upgrade:
', node.localName);\r\n scope.upgrade(node);\r\n logFlags.dom && conso
le.groupEnd();\r\n return true;\r\n }\r\n }\r\n}\r\n\r\nfunction insert
edNode(node) {\r\n inserted(node);\r\n if (inDocument(node)) {\r\n forSubtr
ee(node, function(e) {\r\n inserted(e);\r\n });\r\n }\r\n}\r\n\r\n// TO
DO(sorvell): on platforms without MutationObserver, mutations may not be\r\n// r
eliable and therefore attached/detached are not reliable.\r\n// To make these ca
llbacks less likely to fail, we defer all inserts and removes\r\n// to give a ch
ance for elements to be inserted into dom.\r\n// This ensures attachedCallback f
ires for elements that are created and\r\n// immediately added to dom.\r\nvar ha
sPolyfillMutations = (!window.MutationObserver ||\r\n (window.MutationObserve
r === window.JsMutationObserver));\r\nscope.hasPolyfillMutations = hasPolyfillMu
tations;\r\n\r\nvar isPendingMutations = false;\r\nvar pendingMutations = [];\r\
nfunction deferMutation(fn) {\r\n pendingMutations.push(fn);\r\n if (!isPendin
gMutations) {\r\n isPendingMutations = true;\r\n var async = (window.Platf
orm && window.Platform.endOfMicrotask) ||\r\n setTimeout;\r\n async(ta
keMutations);\r\n }\r\n}\r\n\r\nfunction takeMutations() {\r\n isPendingMutati
ons = false;\r\n var $p = pendingMutations;\r\n for (var i=0, l=$p.length, p;
(i<l) && (p=$p[i]); i++) {\r\n p();\r\n }\r\n pendingMutations = [];\r\n}\r
\n\r\nfunction inserted(element) {\r\n if (hasPolyfillMutations) {\r\n defer
Mutation(function() {\r\n _inserted(element);\r\n });\r\n } else {\r\n
_inserted(element);\r\n }\r\n}\r\n\r\n// TODO(sjmiles): if there are descent
s into trees that can never have inDocument(*) true, fix this\r\nfunction _inser
ted(element) {\r\n // TODO(sjmiles): it's possible we were inserted and removed
in the space\r\n // of one microtask, in which case we won't be 'inDocument' h
ere\r\n // But there are other cases where we are testing for inserted without\
r\n // specific knowledge of mutations, and must test 'inDocument' to determine
\r\n // whether to call inserted\r\n // If we can factor these cases into sepa
rate code paths we can have\r\n // better diagnostics.\r\n // TODO(sjmiles): w
hen logging, do work on all custom elements so we can\r\n // track behavior eve
n when callbacks not defined\r\n //console.log('inserted: ', element.localName)
;\r\n if (element.attachedCallback || element.detachedCallback || (element.__up
graded__ && logFlags.dom)) {\r\n logFlags.dom && console.group('inserted:', e
lement.localName);\r\n if (inDocument(element)) {\r\n element.__inserted
= (element.__inserted || 0) + 1;\r\n // if we are in a 'removed' state, bl
untly adjust to an 'inserted' state\r\n if (element.__inserted < 1) {\r\n
element.__inserted = 1;\r\n }\r\n // if we are 'over inserted',
squelch the callback\r\n if (element.__inserted > 1) {\r\n logFlags.
dom && console.warn('inserted:', element.localName,\r\n 'insert/remove
count:', element.__inserted)\r\n } else if (element.attachedCallback) {\r\n
logFlags.dom && console.log('inserted:', element.localName);\r\n
element.attachedCallback();\r\n }\r\n }\r\n logFlags.dom && console.g
roupEnd();\r\n }\r\n}\r\n\r\nfunction removedNode(node) {\r\n removed(node);\r
\n forSubtree(node, function(e) {\r\n removed(e);\r\n });\r\n}\r\n\r\nfunct
ion removed(element) {\r\n if (hasPolyfillMutations) {\r\n deferMutation(fun
ction() {\r\n _removed(element);\r\n });\r\n } else {\r\n _removed(e
lement);\r\n }\r\n}\r\n\r\nfunction _removed(element) {\r\n // TODO(sjmiles):
temporary: do work on all custom elements so we can track\r\n // behavior even
when callbacks not defined\r\n if (element.attachedCallback || element.detached
Callback || (element.__upgraded__ && logFlags.dom)) {\r\n logFlags.dom && con
sole.group('removed:', element.localName);\r\n if (!inDocument(element)) {\r\
n element.__inserted = (element.__inserted || 0) - 1;\r\n // if we are
in a 'inserted' state, bluntly adjust to an 'removed' state\r\n if (elemen
t.__inserted > 0) {\r\n element.__inserted = 0;\r\n }\r\n // if
we are 'over removed', squelch the callback\r\n if (element.__inserted < 0
) {\r\n logFlags.dom && console.warn('removed:', element.localName,\r\n
'insert/remove count:', element.__inserted)\r\n } else if (elemen
t.detachedCallback) {\r\n element.detachedCallback();\r\n }\r\n }
\r\n logFlags.dom && console.groupEnd();\r\n }\r\n}\r\n\r\n// SD polyfill in
trustion due mainly to the fact that 'document'\r\n// is not entirely wrapped\r\
nfunction wrapIfNeeded(node) {\r\n return window.ShadowDOMPolyfill ? ShadowDOMP
olyfill.wrapIfNeeded(node)\r\n : node;\r\n}\r\n\r\nfunction inDocument(elem
ent) {\r\n var p = element;\r\n var doc = wrapIfNeeded(document);\r\n while (
p) {\r\n if (p == doc) {\r\n return true;\r\n }\r\n p = p.parentNo
de || p.host;\r\n }\r\n}\r\n\r\nfunction watchShadow(node) {\r\n if (node.shad
owRoot && !node.shadowRoot.__watched) {\r\n logFlags.dom && console.log('watc
hing shadow-root for: ', node.localName);\r\n // watch all unwatched roots...
\r\n var root = node.shadowRoot;\r\n while (root) {\r\n watchRoot(roo
t);\r\n root = root.olderShadowRoot;\r\n }\r\n }\r\n}\r\n\r\nfunction w
atchRoot(root) {\r\n if (!root.__watched) {\r\n observe(root);\r\n root._
_watched = true;\r\n }\r\n}\r\n\r\nfunction handler(mutations) {\r\n //\r\n i
f (logFlags.dom) {\r\n var mx = mutations[0];\r\n if (mx && mx.type === 'c
hildList' && mx.addedNodes) {\r\n if (mx.addedNodes) {\r\n var d
= mx.addedNodes[0];\r\n while (d && d !== document && !d.host) {\r\n
d = d.parentNode;\r\n }\r\n var u = d && (d.URL || d
._URL || (d.host && d.host.localName)) || '';\r\n u = u.split('/?').shi
ft().split('/').pop();\r\n }\r\n }\r\n console.group('mutations (%d
) [%s]', mutations.length, u || '');\r\n }\r\n //\r\n mutations.forEach(funct
ion(mx) {\r\n //logFlags.dom && console.group('mutation');\r\n if (mx.type
=== 'childList') {\r\n forEach(mx.addedNodes, function(n) {\r\n //l
ogFlags.dom && console.log(n.localName);\r\n if (!n.localName) {\r\n
return;\r\n }\r\n // nodes added may need lifecycle managemen
t\r\n addedNode(n);\r\n });\r\n // removed nodes may need lifec
ycle management\r\n forEach(mx.removedNodes, function(n) {\r\n //log
Flags.dom && console.log(n.localName);\r\n if (!n.localName) {\r\n
return;\r\n }\r\n removedNode(n);\r\n });\r\n }\r\n
//logFlags.dom && console.groupEnd();\r\n });\r\n logFlags.dom && console.grou
pEnd();\r\n};\r\n\r\nvar observer = new MutationObserver(handler);\r\n\r\nfuncti
on takeRecords() {\r\n // TODO(sjmiles): ask Raf why we have to call handler ou
rselves\r\n handler(observer.takeRecords());\r\n takeMutations();\r\n}\r\n\r\n
var forEach = Array.prototype.forEach.call.bind(Array.prototype.forEach);\r\n\r\
nfunction observe(inRoot) {\r\n observer.observe(inRoot, {childList: true, subt
ree: true});\r\n}\r\n\r\nfunction observeDocument(doc) {\r\n observe(doc);\r\n}
\r\n\r\nfunction upgradeDocument(doc) {\r\n logFlags.dom && console.group('upgr
adeDocument: ', (doc.baseURI).split('/').pop());\r\n addedNode(doc);\r\n logFl
ags.dom && console.groupEnd();\r\n}\r\n\r\nfunction upgradeDocumentTree(doc) {\r
\n doc = wrapIfNeeded(doc);\r\n //console.log('upgradeDocumentTree: ', (doc.ba
seURI).split('/').pop());\r\n // upgrade contained imported documents\r\n var
imports = doc.querySelectorAll('link[rel=' + IMPORT_LINK_TYPE + ']');\r\n for (
var i=0, l=imports.length, n; (i<l) && (n=imports[i]); i++) {\r\n if (n.impor
t && n.import.__parsed) {\r\n upgradeDocumentTree(n.import);\r\n }\r\n
}\r\n upgradeDocument(doc);\r\n}\r\n\r\n// exports\r\nscope.IMPORT_LINK_TYPE =
IMPORT_LINK_TYPE;\r\nscope.watchShadow = watchShadow;\r\nscope.upgradeDocumentTr
ee = upgradeDocumentTree;\r\nscope.upgradeAll = addedNode;\r\nscope.upgradeSubtr
ee = addedSubtree;\r\nscope.insertedNode = insertedNode;\r\n\r\nscope.observeDoc
ument = observeDocument;\r\nscope.upgradeDocument = upgradeDocument;\r\n\r\nscop
e.takeRecords = takeRecords;\r\n\r\n})(window.CustomElements);\r\n", | 150 "/*\r\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserve
d.\r\n * This code may only be used under the BSD style license found at http://
polymer.github.io/LICENSE.txt\r\n * The complete set of authors may be found at
http://polymer.github.io/AUTHORS.txt\r\n * The complete set of contributors may
be found at http://polymer.github.io/CONTRIBUTORS.txt\r\n * Code distributed by
Google as part of the polymer project is also\r\n * subject to an additional IP
rights grant found at http://polymer.github.io/PATENTS.txt\r\n */\r\n\r\n(functi
on(scope){\r\n\r\nvar logFlags = window.logFlags || {};\r\nvar IMPORT_LINK_TYPE
= window.HTMLImports ? HTMLImports.IMPORT_LINK_TYPE : 'none';\r\n\r\n// walk the
subtree rooted at node, applying 'find(element, data)' function\r\n// to each e
lement\r\n// if 'find' returns true for 'element', do not search element's subtr
ee\r\nfunction findAll(node, find, data) {\r\n var e = node.firstElementChild;\
r\n if (!e) {\r\n e = node.firstChild;\r\n while (e && e.nodeType !== Nod
e.ELEMENT_NODE) {\r\n e = e.nextSibling;\r\n }\r\n }\r\n while (e) {\r
\n if (find(e, data) !== true) {\r\n findAll(e, find, data);\r\n }\r\
n e = e.nextElementSibling;\r\n }\r\n return null;\r\n}\r\n\r\n// walk all
shadowRoots on a given node.\r\nfunction forRoots(node, cb) {\r\n var root = no
de.shadowRoot;\r\n while(root) {\r\n forSubtree(root, cb);\r\n root = roo
t.olderShadowRoot;\r\n }\r\n}\r\n\r\n// walk the subtree rooted at node, includ
ing descent into shadow-roots,\r\n// applying 'cb' to each element\r\nfunction f
orSubtree(node, cb) {\r\n //logFlags.dom && node.childNodes && node.childNodes.
length && console.group('subTree: ', node);\r\n findAll(node, function(e) {\r\n
if (cb(e)) {\r\n return true;\r\n }\r\n forRoots(e, cb);\r\n });
\r\n forRoots(node, cb);\r\n //logFlags.dom && node.childNodes && node.childNo
des.length && console.groupEnd();\r\n}\r\n\r\n// manage lifecycle on added node\
r\nfunction added(node) {\r\n if (upgrade(node)) {\r\n insertedNode(node);\r
\n return true;\r\n }\r\n inserted(node);\r\n}\r\n\r\n// manage lifecycle o
n added node's subtree only\r\nfunction addedSubtree(node) {\r\n forSubtree(nod
e, function(e) {\r\n if (added(e)) {\r\n return true;\r\n }\r\n });\
r\n}\r\n\r\n// manage lifecycle on added node and it's subtree\r\nfunction added
Node(node) {\r\n return added(node) || addedSubtree(node);\r\n}\r\n\r\n// upgra
de custom elements at node, if applicable\r\nfunction upgrade(node) {\r\n if (!
node.__upgraded__ && node.nodeType === Node.ELEMENT_NODE) {\r\n var type = no
de.getAttribute('is') || node.localName;\r\n var definition = scope.registry[
type];\r\n if (definition) {\r\n logFlags.dom && console.group('upgrade:
', node.localName);\r\n scope.upgrade(node);\r\n logFlags.dom && conso
le.groupEnd();\r\n return true;\r\n }\r\n }\r\n}\r\n\r\nfunction insert
edNode(node) {\r\n inserted(node);\r\n if (inDocument(node)) {\r\n forSubtr
ee(node, function(e) {\r\n inserted(e);\r\n });\r\n }\r\n}\r\n\r\n// TO
DO(sorvell): on platforms without MutationObserver, mutations may not be\r\n// r
eliable and therefore attached/detached are not reliable.\r\n// To make these ca
llbacks less likely to fail, we defer all inserts and removes\r\n// to give a ch
ance for elements to be inserted into dom.\r\n// This ensures attachedCallback f
ires for elements that are created and\r\n// immediately added to dom.\r\nvar ha
sPolyfillMutations = (!window.MutationObserver ||\r\n (window.MutationObserve
r === window.JsMutationObserver));\r\nscope.hasPolyfillMutations = hasPolyfillMu
tations;\r\n\r\nvar isPendingMutations = false;\r\nvar pendingMutations = [];\r\
nfunction deferMutation(fn) {\r\n pendingMutations.push(fn);\r\n if (!isPendin
gMutations) {\r\n isPendingMutations = true;\r\n var async = (window.Platf
orm && window.Platform.endOfMicrotask) ||\r\n setTimeout;\r\n async(ta
keMutations);\r\n }\r\n}\r\n\r\nfunction takeMutations() {\r\n isPendingMutati
ons = false;\r\n var $p = pendingMutations;\r\n for (var i=0, l=$p.length, p;
(i<l) && (p=$p[i]); i++) {\r\n p();\r\n }\r\n pendingMutations = [];\r\n}\r
\n\r\nfunction inserted(element) {\r\n if (hasPolyfillMutations) {\r\n defer
Mutation(function() {\r\n _inserted(element);\r\n });\r\n } else {\r\n
_inserted(element);\r\n }\r\n}\r\n\r\n// TODO(sjmiles): if there are descent
s into trees that can never have inDocument(*) true, fix this\r\nfunction _inser
ted(element) {\r\n // TODO(sjmiles): it's possible we were inserted and removed
in the space\r\n // of one microtask, in which case we won't be 'inDocument' h
ere\r\n // But there are other cases where we are testing for inserted without\
r\n // specific knowledge of mutations, and must test 'inDocument' to determine
\r\n // whether to call inserted\r\n // If we can factor these cases into sepa
rate code paths we can have\r\n // better diagnostics.\r\n // TODO(sjmiles): w
hen logging, do work on all custom elements so we can\r\n // track behavior eve
n when callbacks not defined\r\n //console.log('inserted: ', element.localName)
;\r\n if (element.attachedCallback || element.detachedCallback || (element.__up
graded__ && logFlags.dom)) {\r\n logFlags.dom && console.group('inserted:', e
lement.localName);\r\n if (inDocument(element)) {\r\n element.__inserted
= (element.__inserted || 0) + 1;\r\n // if we are in a 'removed' state, bl
untly adjust to an 'inserted' state\r\n if (element.__inserted < 1) {\r\n
element.__inserted = 1;\r\n }\r\n // if we are 'over inserted',
squelch the callback\r\n if (element.__inserted > 1) {\r\n logFlags.
dom && console.warn('inserted:', element.localName,\r\n 'insert/remove
count:', element.__inserted)\r\n } else if (element.attachedCallback) {\r\n
logFlags.dom && console.log('inserted:', element.localName);\r\n
element.attachedCallback();\r\n }\r\n }\r\n logFlags.dom && console.g
roupEnd();\r\n }\r\n}\r\n\r\nfunction removedNode(node) {\r\n removed(node);\r
\n forSubtree(node, function(e) {\r\n removed(e);\r\n });\r\n}\r\n\r\nfunct
ion removed(element) {\r\n if (hasPolyfillMutations) {\r\n deferMutation(fun
ction() {\r\n _removed(element);\r\n });\r\n } else {\r\n _removed(e
lement);\r\n }\r\n}\r\n\r\nfunction _removed(element) {\r\n // TODO(sjmiles):
temporary: do work on all custom elements so we can track\r\n // behavior even
when callbacks not defined\r\n if (element.attachedCallback || element.detached
Callback || (element.__upgraded__ && logFlags.dom)) {\r\n logFlags.dom && con
sole.group('removed:', element.localName);\r\n if (!inDocument(element)) {\r\
n element.__inserted = (element.__inserted || 0) - 1;\r\n // if we are
in a 'inserted' state, bluntly adjust to an 'removed' state\r\n if (elemen
t.__inserted > 0) {\r\n element.__inserted = 0;\r\n }\r\n // if
we are 'over removed', squelch the callback\r\n if (element.__inserted < 0
) {\r\n logFlags.dom && console.warn('removed:', element.localName,\r\n
'insert/remove count:', element.__inserted)\r\n } else if (elemen
t.detachedCallback) {\r\n element.detachedCallback();\r\n }\r\n }
\r\n logFlags.dom && console.groupEnd();\r\n }\r\n}\r\n\r\n// SD polyfill in
trustion due mainly to the fact that 'document'\r\n// is not entirely wrapped\r\
nfunction wrapIfNeeded(node) {\r\n return window.ShadowDOMPolyfill ? ShadowDOMP
olyfill.wrapIfNeeded(node)\r\n : node;\r\n}\r\n\r\nfunction inDocument(elem
ent) {\r\n var p = element;\r\n var doc = wrapIfNeeded(document);\r\n while (
p) {\r\n if (p == doc) {\r\n return true;\r\n }\r\n p = p.parentNo
de || p.host;\r\n }\r\n}\r\n\r\nfunction watchShadow(node) {\r\n if (node.shad
owRoot && !node.shadowRoot.__watched) {\r\n logFlags.dom && console.log('watc
hing shadow-root for: ', node.localName);\r\n // watch all unwatched roots...
\r\n var root = node.shadowRoot;\r\n while (root) {\r\n watchRoot(roo
t);\r\n root = root.olderShadowRoot;\r\n }\r\n }\r\n}\r\n\r\nfunction w
atchRoot(root) {\r\n if (!root.__watched) {\r\n observe(root);\r\n root._
_watched = true;\r\n }\r\n}\r\n\r\nfunction handler(mutations) {\r\n //\r\n i
f (logFlags.dom) {\r\n var mx = mutations[0];\r\n if (mx && mx.type === 'c
hildList' && mx.addedNodes) {\r\n if (mx.addedNodes) {\r\n var d
= mx.addedNodes[0];\r\n while (d && d !== document && !d.host) {\r\n
d = d.parentNode;\r\n }\r\n var u = d && (d.URL || d
._URL || (d.host && d.host.localName)) || '';\r\n u = u.split('/?').shi
ft().split('/').pop();\r\n }\r\n }\r\n console.group('mutations (%d
) [%s]', mutations.length, u || '');\r\n }\r\n //\r\n mutations.forEach(funct
ion(mx) {\r\n //logFlags.dom && console.group('mutation');\r\n if (mx.type
=== 'childList') {\r\n forEach(mx.addedNodes, function(n) {\r\n //l
ogFlags.dom && console.log(n.localName);\r\n if (!n.localName) {\r\n
return;\r\n }\r\n // nodes added may need lifecycle managemen
t\r\n addedNode(n);\r\n });\r\n // removed nodes may need lifec
ycle management\r\n forEach(mx.removedNodes, function(n) {\r\n //log
Flags.dom && console.log(n.localName);\r\n if (!n.localName) {\r\n
return;\r\n }\r\n removedNode(n);\r\n });\r\n }\r\n
//logFlags.dom && console.groupEnd();\r\n });\r\n logFlags.dom && console.grou
pEnd();\r\n};\r\n\r\nvar observer = new MutationObserver(handler);\r\n\r\nfuncti
on takeRecords() {\r\n // TODO(sjmiles): ask Raf why we have to call handler ou
rselves\r\n handler(observer.takeRecords());\r\n takeMutations();\r\n}\r\n\r\n
var forEach = Array.prototype.forEach.call.bind(Array.prototype.forEach);\r\n\r\
nfunction observe(inRoot) {\r\n observer.observe(inRoot, {childList: true, subt
ree: true});\r\n}\r\n\r\nfunction observeDocument(doc) {\r\n observe(doc);\r\n}
\r\n\r\nfunction upgradeDocument(doc) {\r\n logFlags.dom && console.group('upgr
adeDocument: ', (doc.baseURI).split('/').pop());\r\n addedNode(doc);\r\n logFl
ags.dom && console.groupEnd();\r\n}\r\n\r\nfunction upgradeDocumentTree(doc) {\r
\n doc = wrapIfNeeded(doc);\r\n //console.log('upgradeDocumentTree: ', (doc.ba
seURI).split('/').pop());\r\n // upgrade contained imported documents\r\n var
imports = doc.querySelectorAll('link[rel=' + IMPORT_LINK_TYPE + ']');\r\n for (
var i=0, l=imports.length, n; (i<l) && (n=imports[i]); i++) {\r\n if (n.impor
t && n.import.__parsed) {\r\n upgradeDocumentTree(n.import);\r\n }\r\n
}\r\n upgradeDocument(doc);\r\n}\r\n\r\n// exports\r\nscope.IMPORT_LINK_TYPE =
IMPORT_LINK_TYPE;\r\nscope.watchShadow = watchShadow;\r\nscope.upgradeDocumentTr
ee = upgradeDocumentTree;\r\nscope.upgradeAll = addedNode;\r\nscope.upgradeSubtr
ee = addedSubtree;\r\nscope.insertedNode = insertedNode;\r\n\r\nscope.observeDoc
ument = observeDocument;\r\nscope.upgradeDocument = upgradeDocument;\r\n\r\nscop
e.takeRecords = takeRecords;\r\n\r\n})(window.CustomElements);\r\n", |
151 "/*\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
\n * This code may only be used under the BSD style license found at http://poly
mer.github.io/LICENSE.txt\n * The complete set of authors may be found at http:/
/polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found
at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as
part of the polymer project is also\n * subject to an additional IP rights grant
found at http://polymer.github.io/PATENTS.txt\n */\n\n/**\n * Implements `docum
ent.registerElement`\n * @module CustomElements\n*/\n\n/**\n * Polyfilled extens
ions to the `document` object.\n * @class Document\n*/\n\n(function(scope) {\n\n
// imports\n\nif (!scope) {\n scope = window.CustomElements = {flags:{}};\n}\nv
ar flags = scope.flags;\n\n// native document.registerElement?\n\nvar hasNative
= Boolean(document.registerElement);\n// For consistent timing, use native custo
m elements only when not polyfilling\n// other key related web components featur
es.\nvar useNative = !flags.register && hasNative && !window.ShadowDOMPolyfill &
& (!window.HTMLImports || HTMLImports.useNative);\n\nif (useNative) {\n\n // st
ub\n var nop = function() {};\n\n // exports\n scope.registry = {};\n scope.
upgradeElement = nop;\n\n scope.watchShadow = nop;\n scope.upgrade = nop;\n s
cope.upgradeAll = nop;\n scope.upgradeSubtree = nop;\n scope.observeDocument =
nop;\n scope.upgradeDocument = nop;\n scope.upgradeDocumentTree = nop;\n sco
pe.takeRecords = nop;\n scope.reservedTagList = [];\n\n} else {\n\n /**\n *
Registers a custom tag name with the document.\n *\n * When a registered ele
ment is created, a `readyCallback` method is called\n * in the scope of the el
ement. The `readyCallback` method can be specified on\n * either `options.prot
otype` or `options.lifecycle` with the latter taking\n * precedence.\n *\n
* @method register\n * @param {String} name The tag name to register. Must in
clude a dash ('-'),\n * for example 'x-component'.\n * @param {Object} op
tions\n * @param {String} [options.extends]\n * (_off spec_) Tag nam
e of an element to extend (or blank for a new\n * element). This paramete
r is not part of the specification, but instead\n * is a hint for the pol
yfill because the extendee is difficult to infer.\n * Remember that the i
nput prototype must chain to the extended element's\n * prototype (or HTM
LElement.prototype) regardless of the value of\n * `extends`.\n * @p
aram {Object} options.prototype The prototype to use for the new\n * elem
ent. The prototype must inherit from HTMLElement.\n * @param {Object} [opti
ons.lifecycle]\n * Callbacks that fire at important phases in the life of
the custom\n * element.\n *\n * @example\n * FancyButton = do
cument.registerElement(\"fancy-button\", {\n * extends: 'button',\n *
prototype: Object.create(HTMLButtonElement.prototype, {\n * r
eadyCallback: {\n * value: function() {\n * console.
log(\"a fancy-button was created\",\n * }\n * }\n *
})\n * });\n * @return {Function} Constructor for the newly regist
ered type.\n */\n function register(name, options) {\n //console.warn('doc
ument.registerElement(\"' + name + '\", ', options, ')');\n // construct a de
fintion out of options\n // TODO(sjmiles): probably should clone options inst
ead of mutating it\n var definition = options || {};\n if (!name) {\n
// TODO(sjmiles): replace with more appropriate error (EricB can probably\n
// offer guidance)\n throw new Error('document.registerElement: first arg
ument `name` must not be empty');\n }\n if (name.indexOf('-') < 0) {\n
// TODO(sjmiles): replace with more appropriate error (EricB can probably\n
// offer guidance)\n throw new Error('document.registerElement: first ar
gument (\\'name\\') must contain a dash (\\'-\\'). Argument provided was \\'' +
String(name) + '\\'.');\n }\n // prevent registering reserved names\n i
f (isReservedTag(name)) {\n throw new Error('Failed to execute \\'registerE
lement\\' on \\'Document\\': Registration failed for type \\'' + String(name) +
'\\'. The type name is invalid.');\n }\n // elements may only be registere
d once\n if (getRegisteredDefinition(name)) {\n throw new Error('Duplica
teDefinitionError: a type with name \\'' + String(name) + '\\' is already regist
ered');\n }\n // must have a prototype, default to an extension of HTMLEle
ment\n // TODO(sjmiles): probably should throw if no prototype, check spec\n
if (!definition.prototype) {\n // TODO(sjmiles): replace with more appro
priate error (EricB can probably\n // offer guidance)\n throw new Erro
r('Options missing required prototype property');\n }\n // record name\n
definition.__name = name.toLowerCase();\n // ensure a lifecycle object so w
e don't have to null test it\n definition.lifecycle = definition.lifecycle ||
{};\n // build a list of ancestral custom elements (for native base detectio
n)\n // TODO(sjmiles): we used to need to store this, but current code only\n
// uses it in 'resolveTagName': it should probably be inlined\n definitio
n.ancestry = ancestry(definition.extends);\n // extensions of native speciali
zations of HTMLElement require localName\n // to remain native, and use secon
dary 'is' specifier for extension type\n resolveTagName(definition);\n //
some platforms require modifications to the user-supplied prototype\n // chai
n\n resolvePrototypeChain(definition);\n // overrides to implement attribu
teChanged callback\n overrideAttributeApi(definition.prototype);\n // 7.1.
5: Register the DEFINITION with DOCUMENT\n registerDefinition(definition.__na
me, definition);\n // 7.1.7. Run custom element constructor generation algori
thm with PROTOTYPE\n // 7.1.8. Return the output of the previous step.\n d
efinition.ctor = generateConstructor(definition);\n definition.ctor.prototype
= definition.prototype;\n // force our .constructor to be our actual constru
ctor\n definition.prototype.constructor = definition.ctor;\n // if initial
parsing is complete\n if (scope.ready) {\n // upgrade any pre-existing
nodes of this type\n scope.upgradeDocumentTree(document);\n }\n retur
n definition.ctor;\n }\n\n function isReservedTag(name) {\n for (var i = 0;
i < reservedTagList.length; i++) {\n if (name === reservedTagList[i]) {\n
return true;\n }\n }\n }\n\n var reservedTagList = [\n 'anno
tation-xml', 'color-profile', 'font-face', 'font-face-src',\n 'font-face-uri'
, 'font-face-format', 'font-face-name', 'missing-glyph'\n ];\n\n function ance
stry(extnds) {\n var extendee = getRegisteredDefinition(extnds);\n if (ext
endee) {\n return ancestry(extendee.extends).concat([extendee]);\n }\n
return [];\n }\n\n function resolveTagName(definition) {\n // if we are e
xplicitly extending something, that thing is our\n // baseTag, unless it repr
esents a custom component\n var baseTag = definition.extends;\n // if our
ancestry includes custom components, we only have a\n // baseTag if one of th
em does\n for (var i=0, a; (a=definition.ancestry[i]); i++) {\n baseTag
= a.is && a.tag;\n }\n // our tag is our baseTag, if it exists, and otherw
ise just our name\n definition.tag = baseTag || definition.__name;\n if (b
aseTag) {\n // if there is a base tag, use secondary 'is' specifier\n
definition.is = definition.__name;\n }\n }\n\n function resolvePrototypeCha
in(definition) {\n // if we don't support __proto__ we need to locate the nat
ive level\n // prototype for precise mixing in\n if (!Object.__proto__) {\
n // default prototype\n var nativePrototype = HTMLElement.prototype;\
n // work out prototype when using type-extension\n if (definition.is)
{\n var inst = document.createElement(definition.tag);\n var expe
ctedPrototype = Object.getPrototypeOf(inst);\n // only set nativePrototyp
e if it will actually appear in the definition's chain\n if (expectedProt
otype === definition.prototype) {\n nativePrototype = expectedPrototype
;\n }\n }\n // ensure __proto__ reference is installed at each
point on the prototype\n // chain.\n // NOTE: On platforms without __p
roto__, a mixin strategy is used instead\n // of prototype swizzling. In th
is case, this generated __proto__ provides\n // limited support for prototy
pe traversal.\n var proto = definition.prototype, ancestor;\n while (p
roto && (proto !== nativePrototype)) {\n ancestor = Object.getPrototypeOf
(proto);\n proto.__proto__ = ancestor;\n proto = ancestor;\n
}\n // cache this in case of mixin\n definition.native = nativePrototy
pe;\n }\n }\n\n // SECTION 4\n\n function instantiate(definition) {\n /
/ 4.a.1. Create a new object that implements PROTOTYPE\n // 4.a.2. Let ELEMEN
T by this new object\n //\n // the custom element instantiation algorithm
must also ensure that the\n // output is a valid DOM element with the proper
wrapper in place.\n //\n return upgrade(domCreateElement(definition.tag),
definition);\n }\n\n function upgrade(element, definition) {\n // some defi
nitions specify an 'is' attribute\n if (definition.is) {\n element.setAt
tribute('is', definition.is);\n }\n // make 'element' implement definition
.prototype\n implement(element, definition);\n // flag as upgraded\n el
ement.__upgraded__ = true;\n // lifecycle management\n created(element);\n
// attachedCallback fires in tree order, call before recursing\n scope.in
sertedNode(element);\n // there should never be a shadow root on element at t
his point\n scope.upgradeSubtree(element);\n // OUTPUT\n return element
;\n }\n\n function implement(element, definition) {\n // prototype swizzlin
g is best\n if (Object.__proto__) {\n element.__proto__ = definition.pro
totype;\n } else {\n // where above we can re-acquire inPrototype via\n
// getPrototypeOf(Element), we cannot do so when\n // we use mixin, so
we install a magic reference\n customMixin(element, definition.prototype,
definition.native);\n element.__proto__ = definition.prototype;\n }\n }
\n\n function customMixin(inTarget, inSrc, inNative) {\n // TODO(sjmiles): '
used' allows us to only copy the 'youngest' version of\n // any property. Thi
s set should be precalculated. We also need to\n // consider this for support
ing 'super'.\n var used = {};\n // start with inSrc\n var p = inSrc;\n
// The default is HTMLElement.prototype, so we add a test to avoid mixing in\
n // native prototypes\n while (p !== inNative && p !== HTMLElement.protot
ype) {\n var keys = Object.getOwnPropertyNames(p);\n for (var i=0, k;
k=keys[i]; i++) {\n if (!used[k]) {\n Object.defineProperty(inTa
rget, k,\n Object.getOwnPropertyDescriptor(p, k));\n used[
k] = 1;\n }\n }\n p = Object.getPrototypeOf(p);\n }\n }\n\n
function created(element) {\n // invoke createdCallback\n if (element.cr
eatedCallback) {\n element.createdCallback();\n }\n }\n\n // attribute
watching\n\n function overrideAttributeApi(prototype) {\n // overrides to i
mplement callbacks\n // TODO(sjmiles): should support access via .attributes
NamedNodeMap\n // TODO(sjmiles): preserves user defined overrides, if any\n
if (prototype.setAttribute._polyfilled) {\n return;\n }\n var setAt
tribute = prototype.setAttribute;\n prototype.setAttribute = function(name, v
alue) {\n changeAttribute.call(this, name, value, setAttribute);\n }\n
var removeAttribute = prototype.removeAttribute;\n prototype.removeAttribut
e = function(name) {\n changeAttribute.call(this, name, null, removeAttribu
te);\n }\n prototype.setAttribute._polyfilled = true;\n }\n\n // https:/
/dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/custom/\n // index.html#dfn-att
ribute-changed-callback\n function changeAttribute(name, value, operation) {\n
name = name.toLowerCase();\n var oldValue = this.getAttribute(name);\n
operation.apply(this, arguments);\n var newValue = this.getAttribute(name);\n
if (this.attributeChangedCallback\n && (newValue !== oldValue)) {\n
this.attributeChangedCallback(name, oldValue, newValue);\n }\n }\n\n //
element registry (maps tag names to definitions)\n\n var registry = {};\n\n f
unction getRegisteredDefinition(name) {\n if (name) {\n return registry[
name.toLowerCase()];\n }\n }\n\n function registerDefinition(name, definiti
on) {\n registry[name] = definition;\n }\n\n function generateConstructor(d
efinition) {\n return function() {\n return instantiate(definition);\n
};\n }\n\n var HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\n function
createElementNS(namespace, tag, typeExtension) {\n // NOTE: we do not support
non-HTML elements,\n // just call createElementNS for non HTML Elements\n
if (namespace === HTML_NAMESPACE) {\n return createElement(tag, typeExtens
ion);\n } else {\n return domCreateElementNS(namespace, tag);\n }\n
}\n\n function createElement(tag, typeExtension) {\n // TODO(sjmiles): ignor
e 'tag' when using 'typeExtension', we could\n // error check it, or perhaps
there should only ever be one argument\n var definition = getRegisteredDefini
tion(typeExtension || tag);\n if (definition) {\n if (tag == definition.
tag && typeExtension == definition.is) {\n return new definition.ctor();\
n }\n // Handle empty string for type extension.\n if (!typeExten
sion && !definition.is) {\n return new definition.ctor();\n }\n }
\n\n if (typeExtension) {\n var element = createElement(tag);\n ele
ment.setAttribute('is', typeExtension);\n return element;\n }\n var e
lement = domCreateElement(tag);\n // Custom tags should be HTMLElements even
if not upgraded.\n if (tag.indexOf('-') >= 0) {\n implement(element, HTM
LElement);\n }\n return element;\n }\n\n function upgradeElement(element
) {\n if (!element.__upgraded__ && (element.nodeType === Node.ELEMENT_NODE))
{\n var is = element.getAttribute('is');\n var definition = getRegiste
redDefinition(is || element.localName);\n if (definition) {\n if (is
&& definition.tag == element.localName) {\n return upgrade(element, de
finition);\n } else if (!is && !definition.extends) {\n return u
pgrade(element, definition);\n }\n }\n }\n }\n\n function clone
Node(deep) {\n // call original clone\n var n = domCloneNode.call(this, de
ep);\n // upgrade the element and subtree\n scope.upgradeAll(n);\n // r
eturn the clone\n return n;\n }\n // capture native createElement before we
override it\n\n var domCreateElement = document.createElement.bind(document);\
n var domCreateElementNS = document.createElementNS.bind(document);\n\n // cap
ture native cloneNode before we override it\n\n var domCloneNode = Node.prototy
pe.cloneNode;\n\n // exports\n\n document.registerElement = register;\n docum
ent.createElement = createElement; // override\n document.createElementNS = cre
ateElementNS; // override\n Node.prototype.cloneNode = cloneNode; // override\n
\n scope.registry = registry;\n\n /**\n * Upgrade an element to a custom ele
ment. Upgrading an element\n * causes the custom prototype to be applied, an `
is` attribute\n * to be attached (as needed), and invocation of the `readyCall
back`.\n * `upgrade` does nothing if the element is already upgraded, or\n *
if it matches no registered custom tag name.\n *\n * @method ugprade\n *
@param {Element} element The element to upgrade.\n * @return {Element} The upg
raded element.\n */\n scope.upgrade = upgradeElement;\n}\n\n// Create a custo
m 'instanceof'. This is necessary when CustomElements\n// are implemented via a
mixin strategy, as for example on IE10.\nvar isInstance;\nif (!Object.__proto__
&& !useNative) {\n isInstance = function(obj, ctor) {\n var p = obj;\n wh
ile (p) {\n // NOTE: this is not technically correct since we're not checki
ng if\n // an object is an instance of a constructor; however, this should\
n // be good enough for the mixin strategy.\n if (p === ctor.prototype
) {\n return true;\n }\n p = p.__proto__;\n }\n return fa
lse;\n }\n} else {\n isInstance = function(obj, base) {\n return obj instan
ceof base;\n }\n}\n\n// exports\nscope.instanceof = isInstance;\nscope.reserved
TagList = reservedTagList;\n\n// bc\ndocument.register = document.registerElemen
t;\n\nscope.hasNative = hasNative;\nscope.useNative = useNative;\n\n})(window.Cu
stomElements);\n", | 151 "/*\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
\n * This code may only be used under the BSD style license found at http://poly
mer.github.io/LICENSE.txt\n * The complete set of authors may be found at http:/
/polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found
at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as
part of the polymer project is also\n * subject to an additional IP rights grant
found at http://polymer.github.io/PATENTS.txt\n */\n\n/**\n * Implements `docum
ent.registerElement`\n * @module CustomElements\n*/\n\n/**\n * Polyfilled extens
ions to the `document` object.\n * @class Document\n*/\n\n(function(scope) {\n\n
// imports\n\nif (!scope) {\n scope = window.CustomElements = {flags:{}};\n}\nv
ar flags = scope.flags;\n\n// native document.registerElement?\n\nvar hasNative
= Boolean(document.registerElement);\n// For consistent timing, use native custo
m elements only when not polyfilling\n// other key related web components featur
es.\nvar useNative = !flags.register && hasNative && !window.ShadowDOMPolyfill &
& (!window.HTMLImports || HTMLImports.useNative);\n\nif (useNative) {\n\n // st
ub\n var nop = function() {};\n\n // exports\n scope.registry = {};\n scope.
upgradeElement = nop;\n\n scope.watchShadow = nop;\n scope.upgrade = nop;\n s
cope.upgradeAll = nop;\n scope.upgradeSubtree = nop;\n scope.observeDocument =
nop;\n scope.upgradeDocument = nop;\n scope.upgradeDocumentTree = nop;\n sco
pe.takeRecords = nop;\n scope.reservedTagList = [];\n\n} else {\n\n /**\n *
Registers a custom tag name with the document.\n *\n * When a registered ele
ment is created, a `readyCallback` method is called\n * in the scope of the el
ement. The `readyCallback` method can be specified on\n * either `options.prot
otype` or `options.lifecycle` with the latter taking\n * precedence.\n *\n
* @method register\n * @param {String} name The tag name to register. Must in
clude a dash ('-'),\n * for example 'x-component'.\n * @param {Object} op
tions\n * @param {String} [options.extends]\n * (_off spec_) Tag nam
e of an element to extend (or blank for a new\n * element). This paramete
r is not part of the specification, but instead\n * is a hint for the pol
yfill because the extendee is difficult to infer.\n * Remember that the i
nput prototype must chain to the extended element's\n * prototype (or HTM
LElement.prototype) regardless of the value of\n * `extends`.\n * @p
aram {Object} options.prototype The prototype to use for the new\n * elem
ent. The prototype must inherit from HTMLElement.\n * @param {Object} [opti
ons.lifecycle]\n * Callbacks that fire at important phases in the life of
the custom\n * element.\n *\n * @example\n * FancyButton = do
cument.registerElement(\"fancy-button\", {\n * extends: 'button',\n *
prototype: Object.create(HTMLButtonElement.prototype, {\n * r
eadyCallback: {\n * value: function() {\n * console.
log(\"a fancy-button was created\",\n * }\n * }\n *
})\n * });\n * @return {Function} Constructor for the newly regist
ered type.\n */\n function register(name, options) {\n //console.warn('doc
ument.registerElement(\"' + name + '\", ', options, ')');\n // construct a de
fintion out of options\n // TODO(sjmiles): probably should clone options inst
ead of mutating it\n var definition = options || {};\n if (!name) {\n
// TODO(sjmiles): replace with more appropriate error (EricB can probably\n
// offer guidance)\n throw new Error('document.registerElement: first arg
ument `name` must not be empty');\n }\n if (name.indexOf('-') < 0) {\n
// TODO(sjmiles): replace with more appropriate error (EricB can probably\n
// offer guidance)\n throw new Error('document.registerElement: first ar
gument (\\'name\\') must contain a dash (\\'-\\'). Argument provided was \\'' +
String(name) + '\\'.');\n }\n // prevent registering reserved names\n i
f (isReservedTag(name)) {\n throw new Error('Failed to execute \\'registerE
lement\\' on \\'Document\\': Registration failed for type \\'' + String(name) +
'\\'. The type name is invalid.');\n }\n // elements may only be registere
d once\n if (getRegisteredDefinition(name)) {\n throw new Error('Duplica
teDefinitionError: a type with name \\'' + String(name) + '\\' is already regist
ered');\n }\n // must have a prototype, default to an extension of HTMLEle
ment\n // TODO(sjmiles): probably should throw if no prototype, check spec\n
if (!definition.prototype) {\n // TODO(sjmiles): replace with more appro
priate error (EricB can probably\n // offer guidance)\n throw new Erro
r('Options missing required prototype property');\n }\n // record name\n
definition.__name = name.toLowerCase();\n // ensure a lifecycle object so w
e don't have to null test it\n definition.lifecycle = definition.lifecycle ||
{};\n // build a list of ancestral custom elements (for native base detectio
n)\n // TODO(sjmiles): we used to need to store this, but current code only\n
// uses it in 'resolveTagName': it should probably be inlined\n definitio
n.ancestry = ancestry(definition.extends);\n // extensions of native speciali
zations of HTMLElement require localName\n // to remain native, and use secon
dary 'is' specifier for extension type\n resolveTagName(definition);\n //
some platforms require modifications to the user-supplied prototype\n // chai
n\n resolvePrototypeChain(definition);\n // overrides to implement attribu
teChanged callback\n overrideAttributeApi(definition.prototype);\n // 7.1.
5: Register the DEFINITION with DOCUMENT\n registerDefinition(definition.__na
me, definition);\n // 7.1.7. Run custom element constructor generation algori
thm with PROTOTYPE\n // 7.1.8. Return the output of the previous step.\n d
efinition.ctor = generateConstructor(definition);\n definition.ctor.prototype
= definition.prototype;\n // force our .constructor to be our actual constru
ctor\n definition.prototype.constructor = definition.ctor;\n // if initial
parsing is complete\n if (scope.ready) {\n // upgrade any pre-existing
nodes of this type\n scope.upgradeDocumentTree(document);\n }\n retur
n definition.ctor;\n }\n\n function isReservedTag(name) {\n for (var i = 0;
i < reservedTagList.length; i++) {\n if (name === reservedTagList[i]) {\n
return true;\n }\n }\n }\n\n var reservedTagList = [\n 'anno
tation-xml', 'color-profile', 'font-face', 'font-face-src',\n 'font-face-uri'
, 'font-face-format', 'font-face-name', 'missing-glyph'\n ];\n\n function ance
stry(extnds) {\n var extendee = getRegisteredDefinition(extnds);\n if (ext
endee) {\n return ancestry(extendee.extends).concat([extendee]);\n }\n
return [];\n }\n\n function resolveTagName(definition) {\n // if we are e
xplicitly extending something, that thing is our\n // baseTag, unless it repr
esents a custom component\n var baseTag = definition.extends;\n // if our
ancestry includes custom components, we only have a\n // baseTag if one of th
em does\n for (var i=0, a; (a=definition.ancestry[i]); i++) {\n baseTag
= a.is && a.tag;\n }\n // our tag is our baseTag, if it exists, and otherw
ise just our name\n definition.tag = baseTag || definition.__name;\n if (b
aseTag) {\n // if there is a base tag, use secondary 'is' specifier\n
definition.is = definition.__name;\n }\n }\n\n function resolvePrototypeCha
in(definition) {\n // if we don't support __proto__ we need to locate the nat
ive level\n // prototype for precise mixing in\n if (!Object.__proto__) {\
n // default prototype\n var nativePrototype = HTMLElement.prototype;\
n // work out prototype when using type-extension\n if (definition.is)
{\n var inst = document.createElement(definition.tag);\n var expe
ctedPrototype = Object.getPrototypeOf(inst);\n // only set nativePrototyp
e if it will actually appear in the definition's chain\n if (expectedProt
otype === definition.prototype) {\n nativePrototype = expectedPrototype
;\n }\n }\n // ensure __proto__ reference is installed at each
point on the prototype\n // chain.\n // NOTE: On platforms without __p
roto__, a mixin strategy is used instead\n // of prototype swizzling. In th
is case, this generated __proto__ provides\n // limited support for prototy
pe traversal.\n var proto = definition.prototype, ancestor;\n while (p
roto && (proto !== nativePrototype)) {\n ancestor = Object.getPrototypeOf
(proto);\n proto.__proto__ = ancestor;\n proto = ancestor;\n
}\n // cache this in case of mixin\n definition.native = nativePrototy
pe;\n }\n }\n\n // SECTION 4\n\n function instantiate(definition) {\n /
/ 4.a.1. Create a new object that implements PROTOTYPE\n // 4.a.2. Let ELEMEN
T by this new object\n //\n // the custom element instantiation algorithm
must also ensure that the\n // output is a valid DOM element with the proper
wrapper in place.\n //\n return upgrade(domCreateElement(definition.tag),
definition);\n }\n\n function upgrade(element, definition) {\n // some defi
nitions specify an 'is' attribute\n if (definition.is) {\n element.setAt
tribute('is', definition.is);\n }\n // make 'element' implement definition
.prototype\n implement(element, definition);\n // flag as upgraded\n el
ement.__upgraded__ = true;\n // lifecycle management\n created(element);\n
// attachedCallback fires in tree order, call before recursing\n scope.in
sertedNode(element);\n // there should never be a shadow root on element at t
his point\n scope.upgradeSubtree(element);\n // OUTPUT\n return element
;\n }\n\n function implement(element, definition) {\n // prototype swizzlin
g is best\n if (Object.__proto__) {\n element.__proto__ = definition.pro
totype;\n } else {\n // where above we can re-acquire inPrototype via\n
// getPrototypeOf(Element), we cannot do so when\n // we use mixin, so
we install a magic reference\n customMixin(element, definition.prototype,
definition.native);\n element.__proto__ = definition.prototype;\n }\n }
\n\n function customMixin(inTarget, inSrc, inNative) {\n // TODO(sjmiles): '
used' allows us to only copy the 'youngest' version of\n // any property. Thi
s set should be precalculated. We also need to\n // consider this for support
ing 'super'.\n var used = {};\n // start with inSrc\n var p = inSrc;\n
// The default is HTMLElement.prototype, so we add a test to avoid mixing in\
n // native prototypes\n while (p !== inNative && p !== HTMLElement.protot
ype) {\n var keys = Object.getOwnPropertyNames(p);\n for (var i=0, k;
k=keys[i]; i++) {\n if (!used[k]) {\n Object.defineProperty(inTa
rget, k,\n Object.getOwnPropertyDescriptor(p, k));\n used[
k] = 1;\n }\n }\n p = Object.getPrototypeOf(p);\n }\n }\n\n
function created(element) {\n // invoke createdCallback\n if (element.cr
eatedCallback) {\n element.createdCallback();\n }\n }\n\n // attribute
watching\n\n function overrideAttributeApi(prototype) {\n // overrides to i
mplement callbacks\n // TODO(sjmiles): should support access via .attributes
NamedNodeMap\n // TODO(sjmiles): preserves user defined overrides, if any\n
if (prototype.setAttribute._polyfilled) {\n return;\n }\n var setAt
tribute = prototype.setAttribute;\n prototype.setAttribute = function(name, v
alue) {\n changeAttribute.call(this, name, value, setAttribute);\n }\n
var removeAttribute = prototype.removeAttribute;\n prototype.removeAttribut
e = function(name) {\n changeAttribute.call(this, name, null, removeAttribu
te);\n }\n prototype.setAttribute._polyfilled = true;\n }\n\n // https:/
/dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/custom/\n // index.html#dfn-att
ribute-changed-callback\n function changeAttribute(name, value, operation) {\n
name = name.toLowerCase();\n var oldValue = this.getAttribute(name);\n
operation.apply(this, arguments);\n var newValue = this.getAttribute(name);\n
if (this.attributeChangedCallback\n && (newValue !== oldValue)) {\n
this.attributeChangedCallback(name, oldValue, newValue);\n }\n }\n\n //
element registry (maps tag names to definitions)\n\n var registry = {};\n\n f
unction getRegisteredDefinition(name) {\n if (name) {\n return registry[
name.toLowerCase()];\n }\n }\n\n function registerDefinition(name, definiti
on) {\n registry[name] = definition;\n }\n\n function generateConstructor(d
efinition) {\n return function() {\n return instantiate(definition);\n
};\n }\n\n var HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\n function
createElementNS(namespace, tag, typeExtension) {\n // NOTE: we do not support
non-HTML elements,\n // just call createElementNS for non HTML Elements\n
if (namespace === HTML_NAMESPACE) {\n return createElement(tag, typeExtens
ion);\n } else {\n return domCreateElementNS(namespace, tag);\n }\n
}\n\n function createElement(tag, typeExtension) {\n // TODO(sjmiles): ignor
e 'tag' when using 'typeExtension', we could\n // error check it, or perhaps
there should only ever be one argument\n var definition = getRegisteredDefini
tion(typeExtension || tag);\n if (definition) {\n if (tag == definition.
tag && typeExtension == definition.is) {\n return new definition.ctor();\
n }\n // Handle empty string for type extension.\n if (!typeExten
sion && !definition.is) {\n return new definition.ctor();\n }\n }
\n\n if (typeExtension) {\n var element = createElement(tag);\n ele
ment.setAttribute('is', typeExtension);\n return element;\n }\n var e
lement = domCreateElement(tag);\n // Custom tags should be HTMLElements even
if not upgraded.\n if (tag.indexOf('-') >= 0) {\n implement(element, HTM
LElement);\n }\n return element;\n }\n\n function upgradeElement(element
) {\n if (!element.__upgraded__ && (element.nodeType === Node.ELEMENT_NODE))
{\n var is = element.getAttribute('is');\n var definition = getRegiste
redDefinition(is || element.localName);\n if (definition) {\n if (is
&& definition.tag == element.localName) {\n return upgrade(element, de
finition);\n } else if (!is && !definition.extends) {\n return u
pgrade(element, definition);\n }\n }\n }\n }\n\n function clone
Node(deep) {\n // call original clone\n var n = domCloneNode.call(this, de
ep);\n // upgrade the element and subtree\n scope.upgradeAll(n);\n // r
eturn the clone\n return n;\n }\n // capture native createElement before we
override it\n\n var domCreateElement = document.createElement.bind(document);\
n var domCreateElementNS = document.createElementNS.bind(document);\n\n // cap
ture native cloneNode before we override it\n\n var domCloneNode = Node.prototy
pe.cloneNode;\n\n // exports\n\n document.registerElement = register;\n docum
ent.createElement = createElement; // override\n document.createElementNS = cre
ateElementNS; // override\n Node.prototype.cloneNode = cloneNode; // override\n
\n scope.registry = registry;\n\n /**\n * Upgrade an element to a custom ele
ment. Upgrading an element\n * causes the custom prototype to be applied, an `
is` attribute\n * to be attached (as needed), and invocation of the `readyCall
back`.\n * `upgrade` does nothing if the element is already upgraded, or\n *
if it matches no registered custom tag name.\n *\n * @method ugprade\n *
@param {Element} element The element to upgrade.\n * @return {Element} The upg
raded element.\n */\n scope.upgrade = upgradeElement;\n}\n\n// Create a custo
m 'instanceof'. This is necessary when CustomElements\n// are implemented via a
mixin strategy, as for example on IE10.\nvar isInstance;\nif (!Object.__proto__
&& !useNative) {\n isInstance = function(obj, ctor) {\n var p = obj;\n wh
ile (p) {\n // NOTE: this is not technically correct since we're not checki
ng if\n // an object is an instance of a constructor; however, this should\
n // be good enough for the mixin strategy.\n if (p === ctor.prototype
) {\n return true;\n }\n p = p.__proto__;\n }\n return fa
lse;\n }\n} else {\n isInstance = function(obj, base) {\n return obj instan
ceof base;\n }\n}\n\n// exports\nscope.instanceof = isInstance;\nscope.reserved
TagList = reservedTagList;\n\n// bc\ndocument.register = document.registerElemen
t;\n\nscope.hasNative = hasNative;\nscope.useNative = useNative;\n\n})(window.Cu
stomElements);\n", |
152 "/*\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
\n * This code may only be used under the BSD style license found at http://poly
mer.github.io/LICENSE.txt\n * The complete set of authors may be found at http:/
/polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found
at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as
part of the polymer project is also\n * subject to an additional IP rights grant
found at http://polymer.github.io/PATENTS.txt\n */\n\n(function(scope) {\n\n//
import\n\nvar IMPORT_LINK_TYPE = scope.IMPORT_LINK_TYPE;\n\n// highlander object
for parsing a document tree\n\nvar parser = {\n selectors: [\n 'link[rel='
+ IMPORT_LINK_TYPE + ']'\n ],\n map: {\n link: 'parseLink'\n },\n parse:
function(inDocument) {\n if (!inDocument.__parsed) {\n // only parse onc
e\n inDocument.__parsed = true;\n // all parsable elements in inDocume
nt (depth-first pre-order traversal)\n var elts = inDocument.querySelectorA
ll(parser.selectors);\n // for each parsable node type, call the mapped par
sing method\n forEach(elts, function(e) {\n parser[parser.map[e.loca
lName]](e);\n });\n // upgrade all upgradeable static elements, anythi
ng dynamically\n // created should be caught by observer\n CustomEleme
nts.upgradeDocument(inDocument);\n // observe document for dom changes\n
CustomElements.observeDocument(inDocument);\n }\n },\n parseLink: functi
on(linkElt) {\n // imports\n if (isDocumentLink(linkElt)) {\n this.pa
rseImport(linkElt);\n }\n },\n parseImport: function(linkElt) {\n if (li
nkElt.import) {\n parser.parse(linkElt.import);\n }\n }\n};\n\nfunction
isDocumentLink(inElt) {\n return (inElt.localName === 'link'\n && inElt.g
etAttribute('rel') === IMPORT_LINK_TYPE);\n}\n\nvar forEach = Array.prototype.fo
rEach.call.bind(Array.prototype.forEach);\n\n// exports\n\nscope.parser = parser
;\nscope.IMPORT_LINK_TYPE = IMPORT_LINK_TYPE;\n\n})(window.CustomElements);", | 152 "/*\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
\n * This code may only be used under the BSD style license found at http://poly
mer.github.io/LICENSE.txt\n * The complete set of authors may be found at http:/
/polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found
at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as
part of the polymer project is also\n * subject to an additional IP rights grant
found at http://polymer.github.io/PATENTS.txt\n */\n\n(function(scope) {\n\n//
import\n\nvar IMPORT_LINK_TYPE = scope.IMPORT_LINK_TYPE;\n\n// highlander object
for parsing a document tree\n\nvar parser = {\n selectors: [\n 'link[rel='
+ IMPORT_LINK_TYPE + ']'\n ],\n map: {\n link: 'parseLink'\n },\n parse:
function(inDocument) {\n if (!inDocument.__parsed) {\n // only parse onc
e\n inDocument.__parsed = true;\n // all parsable elements in inDocume
nt (depth-first pre-order traversal)\n var elts = inDocument.querySelectorA
ll(parser.selectors);\n // for each parsable node type, call the mapped par
sing method\n forEach(elts, function(e) {\n parser[parser.map[e.loca
lName]](e);\n });\n // upgrade all upgradeable static elements, anythi
ng dynamically\n // created should be caught by observer\n CustomEleme
nts.upgradeDocument(inDocument);\n // observe document for dom changes\n
CustomElements.observeDocument(inDocument);\n }\n },\n parseLink: functi
on(linkElt) {\n // imports\n if (isDocumentLink(linkElt)) {\n this.pa
rseImport(linkElt);\n }\n },\n parseImport: function(linkElt) {\n if (li
nkElt.import) {\n parser.parse(linkElt.import);\n }\n }\n};\n\nfunction
isDocumentLink(inElt) {\n return (inElt.localName === 'link'\n && inElt.g
etAttribute('rel') === IMPORT_LINK_TYPE);\n}\n\nvar forEach = Array.prototype.fo
rEach.call.bind(Array.prototype.forEach);\n\n// exports\n\nscope.parser = parser
;\nscope.IMPORT_LINK_TYPE = IMPORT_LINK_TYPE;\n\n})(window.CustomElements);", |
153 "/*\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
\n * This code may only be used under the BSD style license found at http://poly
mer.github.io/LICENSE.txt\n * The complete set of authors may be found at http:/
/polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found
at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as
part of the polymer project is also\n * subject to an additional IP rights grant
found at http://polymer.github.io/PATENTS.txt\n */\n(function(scope){\n\n// boo
tstrap parsing\nfunction bootstrap() {\n // parse document\n CustomElements.pa
rser.parse(document);\n // one more pass before register is 'live'\n CustomEle
ments.upgradeDocument(document);\n // install upgrade hook if HTMLImports are a
vailable\n if (window.HTMLImports) {\n HTMLImports.__importsParsingHook = fu
nction(elt) {\n CustomElements.parser.parse(elt.import);\n }\n }\n //
set internal 'ready' flag, now document.registerElement will trigger \n // sync
hronous upgrades\n CustomElements.ready = true;\n // async to ensure *native*
custom elements upgrade prior to this\n // DOMContentLoaded can fire before ele
ments upgrade (e.g. when there's\n // an external script)\n setTimeout(functio
n() {\n // capture blunt profiling data\n CustomElements.readyTime = Date.
now();\n if (window.HTMLImports) {\n CustomElements.elapsed = CustomElem
ents.readyTime - HTMLImports.readyTime;\n }\n // notify the system that we
are bootstrapped\n document.dispatchEvent(\n new CustomEvent('WebCompon
entsReady', {bubbles: true})\n );\n });\n}\n\n// CustomEvent shim for IE\nif
(typeof window.CustomEvent !== 'function') {\n window.CustomEvent = function(i
nType, params) {\n params = params || {};\n var e = document.createEvent('
CustomEvent');\n e.initCustomEvent(inType, Boolean(params.bubbles), Boolean(p
arams.cancelable), params.detail);\n return e;\n };\n window.CustomEvent.pr
ototype = window.Event.prototype;\n}\n\n// When loading at readyState complete t
ime (or via flag), boot custom elements\n// immediately.\n// If relevant, HTMLIm
ports must already be loaded.\nif (document.readyState === 'complete' || scope.f
lags.eager) {\n bootstrap();\n// When loading at readyState interactive time, b
ootstrap only if HTMLImports\n// are not pending. Also avoid IE as the semantics
of this state are unreliable.\n} else if (document.readyState === 'interactive'
&& !window.attachEvent &&\n (!window.HTMLImports || window.HTMLImports.ready
)) {\n bootstrap();\n// When loading at other readyStates, wait for the appropr
iate DOM event to \n// bootstrap.\n} else {\n var loadEvent = window.HTMLImport
s && !HTMLImports.ready ?\n 'HTMLImportsLoaded' : 'DOMContentLoaded';\n wi
ndow.addEventListener(loadEvent, bootstrap);\n}\n\n})(window.CustomElements);\n"
, | 153 "/*\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
\n * This code may only be used under the BSD style license found at http://poly
mer.github.io/LICENSE.txt\n * The complete set of authors may be found at http:/
/polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found
at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as
part of the polymer project is also\n * subject to an additional IP rights grant
found at http://polymer.github.io/PATENTS.txt\n */\n(function(scope){\n\n// boo
tstrap parsing\nfunction bootstrap() {\n // parse document\n CustomElements.pa
rser.parse(document);\n // one more pass before register is 'live'\n CustomEle
ments.upgradeDocument(document);\n // install upgrade hook if HTMLImports are a
vailable\n if (window.HTMLImports) {\n HTMLImports.__importsParsingHook = fu
nction(elt) {\n CustomElements.parser.parse(elt.import);\n }\n }\n //
set internal 'ready' flag, now document.registerElement will trigger \n // sync
hronous upgrades\n CustomElements.ready = true;\n // async to ensure *native*
custom elements upgrade prior to this\n // DOMContentLoaded can fire before ele
ments upgrade (e.g. when there's\n // an external script)\n setTimeout(functio
n() {\n // capture blunt profiling data\n CustomElements.readyTime = Date.
now();\n if (window.HTMLImports) {\n CustomElements.elapsed = CustomElem
ents.readyTime - HTMLImports.readyTime;\n }\n // notify the system that we
are bootstrapped\n document.dispatchEvent(\n new CustomEvent('WebCompon
entsReady', {bubbles: true})\n );\n });\n}\n\n// CustomEvent shim for IE\nif
(typeof window.CustomEvent !== 'function') {\n window.CustomEvent = function(i
nType, params) {\n params = params || {};\n var e = document.createEvent('
CustomEvent');\n e.initCustomEvent(inType, Boolean(params.bubbles), Boolean(p
arams.cancelable), params.detail);\n return e;\n };\n window.CustomEvent.pr
ototype = window.Event.prototype;\n}\n\n// When loading at readyState complete t
ime (or via flag), boot custom elements\n// immediately.\n// If relevant, HTMLIm
ports must already be loaded.\nif (document.readyState === 'complete' || scope.f
lags.eager) {\n bootstrap();\n// When loading at readyState interactive time, b
ootstrap only if HTMLImports\n// are not pending. Also avoid IE as the semantics
of this state are unreliable.\n} else if (document.readyState === 'interactive'
&& !window.attachEvent &&\n (!window.HTMLImports || window.HTMLImports.ready
)) {\n bootstrap();\n// When loading at other readyStates, wait for the appropr
iate DOM event to \n// bootstrap.\n} else {\n var loadEvent = window.HTMLImport
s && !HTMLImports.ready ?\n 'HTMLImportsLoaded' : 'DOMContentLoaded';\n wi
ndow.addEventListener(loadEvent, bootstrap);\n}\n\n})(window.CustomElements);\n"
, |
154 "/*\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
\n * This code may only be used under the BSD style license found at http://poly
mer.github.io/LICENSE.txt\n * The complete set of authors may be found at http:/
/polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found
at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as
part of the polymer project is also\n * subject to an additional IP rights grant
found at http://polymer.github.io/PATENTS.txt\n */\n\n(function() {\n\nif (wind
ow.ShadowDOMPolyfill) {\n\n // ensure wrapped inputs for these functions\n var
fns = ['upgradeAll', 'upgradeSubtree', 'observeDocument',\n 'upgradeDocume
nt'];\n\n // cache originals\n var original = {};\n fns.forEach(function(fn)
{\n original[fn] = CustomElements[fn];\n });\n\n // override\n fns.forEach
(function(fn) {\n CustomElements[fn] = function(inNode) {\n return origi
nal[fn](wrap(inNode));\n };\n });\n\n}\n\n})();\n", | 154 "/*\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
\n * This code may only be used under the BSD style license found at http://poly
mer.github.io/LICENSE.txt\n * The complete set of authors may be found at http:/
/polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found
at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as
part of the polymer project is also\n * subject to an additional IP rights grant
found at http://polymer.github.io/PATENTS.txt\n */\n\n(function() {\n\nif (wind
ow.ShadowDOMPolyfill) {\n\n // ensure wrapped inputs for these functions\n var
fns = ['upgradeAll', 'upgradeSubtree', 'observeDocument',\n 'upgradeDocume
nt'];\n\n // cache originals\n var original = {};\n fns.forEach(function(fn)
{\n original[fn] = CustomElements[fn];\n });\n\n // override\n fns.forEach
(function(fn) {\n CustomElements[fn] = function(inNode) {\n return origi
nal[fn](wrap(inNode));\n };\n });\n\n}\n\n})();\n", |
155 "/*\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
\n * This code may only be used under the BSD style license found at http://poly
mer.github.io/LICENSE.txt\n * The complete set of authors may be found at http:/
/polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found
at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as
part of the polymer project is also\n * subject to an additional IP rights grant
found at http://polymer.github.io/PATENTS.txt\n */\n\n(function(scope) {\n\n /
/ TODO(sorvell): It's desireable to provide a default stylesheet \n // that's c
onvenient for styling unresolved elements, but\n // it's cumbersome to have to
include this manually in every page.\n // It would make sense to put inside som
e HTMLImport but \n // the HTMLImports polyfill does not allow loading of style
sheets \n // that block rendering. Therefore this injection is tolerated here.\
n\n var style = document.createElement('style');\n style.textContent = ''\n
+ 'body {'\n + 'transition: opacity ease-in 0.2s;' \n + ' } \\n'\n
+ 'body[unresolved] {'\n + 'opacity: 0; display: block; overflow: hidd
en;' \n + ' } \\n'\n ;\n var head = document.querySelector('head');\n
head.insertBefore(style, head.firstChild);\n\n})(Platform);\n", | 155 "/*\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
\n * This code may only be used under the BSD style license found at http://poly
mer.github.io/LICENSE.txt\n * The complete set of authors may be found at http:/
/polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found
at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as
part of the polymer project is also\n * subject to an additional IP rights grant
found at http://polymer.github.io/PATENTS.txt\n */\n\n(function(scope) {\n\n /
/ TODO(sorvell): It's desireable to provide a default stylesheet \n // that's c
onvenient for styling unresolved elements, but\n // it's cumbersome to have to
include this manually in every page.\n // It would make sense to put inside som
e HTMLImport but \n // the HTMLImports polyfill does not allow loading of style
sheets \n // that block rendering. Therefore this injection is tolerated here.\
n\n var style = document.createElement('style');\n style.textContent = ''\n
+ 'body {'\n + 'transition: opacity ease-in 0.2s;' \n + ' } \\n'\n
+ 'body[unresolved] {'\n + 'opacity: 0; display: block; overflow: hidd
en;' \n + ' } \\n'\n ;\n var head = document.querySelector('head');\n
head.insertBefore(style, head.firstChild);\n\n})(Platform);\n", |
156 "/*\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
\n * This code may only be used under the BSD style license found at http://poly
mer.github.io/LICENSE.txt\n * The complete set of authors may be found at http:/
/polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found
at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as
part of the polymer project is also\n * subject to an additional IP rights grant
found at http://polymer.github.io/PATENTS.txt\n */\n\n(function(scope) {\n\n f
unction withDependencies(task, depends) {\n depends = depends || [];\n if
(!depends.map) {\n depends = [depends];\n }\n return task.apply(this,
depends.map(marshal));\n }\n\n function module(name, dependsOrFactory, module
Factory) {\n var module;\n switch (arguments.length) {\n case 0:\n
return;\n case 1:\n module = null;\n break;\n case
2:\n // dependsOrFactory is `factory` in this case\n module = depe
ndsOrFactory.apply(this);\n break;\n default:\n // dependsOrF
actory is `depends` in this case\n module = withDependencies(moduleFactor
y, dependsOrFactory);\n break;\n }\n modules[name] = module;\n };\
n\n function marshal(name) {\n return modules[name];\n }\n\n var modules =
{};\n\n function using(depends, task) {\n HTMLImports.whenImportsReady(func
tion() {\n withDependencies(task, depends);\n });\n };\n\n // exports\
n\n scope.marshal = marshal;\n // `module` confuses commonjs detectors\n scop
e.modularize = module;\n scope.using = using;\n\n})(window);\n" | 156 "/*\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
\n * This code may only be used under the BSD style license found at http://poly
mer.github.io/LICENSE.txt\n * The complete set of authors may be found at http:/
/polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found
at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as
part of the polymer project is also\n * subject to an additional IP rights grant
found at http://polymer.github.io/PATENTS.txt\n */\n\n(function(scope) {\n\n f
unction withDependencies(task, depends) {\n depends = depends || [];\n if
(!depends.map) {\n depends = [depends];\n }\n return task.apply(this,
depends.map(marshal));\n }\n\n function module(name, dependsOrFactory, module
Factory) {\n var module;\n switch (arguments.length) {\n case 0:\n
return;\n case 1:\n module = null;\n break;\n case
2:\n // dependsOrFactory is `factory` in this case\n module = depe
ndsOrFactory.apply(this);\n break;\n default:\n // dependsOrF
actory is `depends` in this case\n module = withDependencies(moduleFactor
y, dependsOrFactory);\n break;\n }\n modules[name] = module;\n };\
n\n function marshal(name) {\n return modules[name];\n }\n\n var modules =
{};\n\n function using(depends, task) {\n HTMLImports.whenImportsReady(func
tion() {\n withDependencies(task, depends);\n });\n };\n\n // exports\
n\n scope.marshal = marshal;\n // `module` confuses commonjs detectors\n scop
e.modularize = module;\n scope.using = using;\n\n})(window);\n" |
157 ] | 157 ] |
158 } | 158 } |
OLD | NEW |