selenium-webdriver 2.44.0 → 2.45.0.dev

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGES CHANGED
@@ -1,3 +1,6 @@
1
+ 2.45.0.dev (???)
2
+ ============
3
+
1
4
  2.44.0 (2014-10-05)
2
5
  ===================
3
6
 
@@ -0,0 +1,48 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ selenium-webdriver (2.45.0.dev)
5
+ childprocess (~> 0.5)
6
+ multi_json (~> 1.0)
7
+ rubyzip (~> 1.0)
8
+ websocket (~> 1.0)
9
+
10
+ GEM
11
+ remote: https://rubygems.org/
12
+ specs:
13
+ addressable (2.3.6)
14
+ builder (3.2.2)
15
+ childprocess (0.5.5)
16
+ ffi (~> 1.0, >= 1.0.11)
17
+ ci_reporter (1.9.2)
18
+ builder (>= 2.1.2)
19
+ crack (0.4.2)
20
+ safe_yaml (~> 1.0.0)
21
+ diff-lcs (1.2.5)
22
+ ffi (1.9.6)
23
+ multi_json (1.10.1)
24
+ rack (1.5.2)
25
+ rspec (2.99.0)
26
+ rspec-core (~> 2.99.0)
27
+ rspec-expectations (~> 2.99.0)
28
+ rspec-mocks (~> 2.99.0)
29
+ rspec-core (2.99.2)
30
+ rspec-expectations (2.99.2)
31
+ diff-lcs (>= 1.1.3, < 2.0)
32
+ rspec-mocks (2.99.2)
33
+ rubyzip (1.1.6)
34
+ safe_yaml (1.0.3)
35
+ webmock (1.18.0)
36
+ addressable (>= 2.3.6)
37
+ crack (>= 0.3.2)
38
+ websocket (1.2.1)
39
+
40
+ PLATFORMS
41
+ ruby
42
+
43
+ DEPENDENCIES
44
+ ci_reporter (~> 1.6, >= 1.6.2)
45
+ rack (~> 1.0)
46
+ rspec (~> 2.99.0)
47
+ selenium-webdriver!
48
+ webmock (~> 1.7, >= 1.7.5)
@@ -0,0 +1,46 @@
1
+ module Selenium
2
+ module WebDriver
3
+ module DriverExtensions
4
+ module HasNetworkConnection
5
+ def network_connection_type
6
+ connection_value = @bridge.getNetworkConnection
7
+
8
+ # Convert connection value to type. In case the connection type is
9
+ # not recognized return the connection value.
10
+ case connection_value
11
+ when 1
12
+ :airplane_mode
13
+ when 2
14
+ :wifi
15
+ when 4
16
+ :data
17
+ when 6
18
+ :all
19
+ when 0
20
+ :none
21
+ else
22
+ connection_value
23
+ end
24
+ end
25
+
26
+ def network_connection_type=(connection_type)
27
+ # convert connection type to value
28
+ connection_value = case connection_type
29
+ when :airplane_mode
30
+ 1
31
+ when :wifi
32
+ 2
33
+ when :data
34
+ 4
35
+ when :all
36
+ 6
37
+ when :none
38
+ 0
39
+ end
40
+
41
+ @bridge.setNetworkConnection connection_value
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
@@ -38,18 +38,19 @@ module Selenium
38
38
 
39
39
  def window(id)
40
40
  if block_given?
41
- original = @bridge.getCurrentWindowHandle
41
+ original = begin
42
+ @bridge.getCurrentWindowHandle
43
+ rescue Error::NoSuchWindowError
44
+ nil
45
+ end
46
+
42
47
  @bridge.switchToWindow id
43
48
 
44
49
  begin
45
50
  returned = yield
46
51
  ensure
47
52
  current_handles = @bridge.getWindowHandles
48
-
49
- if current_handles.size == 1
50
- original = current_handles.shift
51
- end
52
-
53
+ original = current_handles.first unless current_handles.include? original
53
54
  @bridge.switchToWindow original
54
55
  returned
55
56
  end
@@ -43,10 +43,11 @@ module Selenium
43
43
  class << self
44
44
  def android(opts = {})
45
45
  new({
46
- :browser_name => "android",
47
- :platform => :android,
48
- :rotatable => true,
49
- :takes_screenshot => true
46
+ :browser_name => "android",
47
+ :platform => :android,
48
+ :javascript_enabled => true,
49
+ :rotatable => true,
50
+ :takes_screenshot => true
50
51
  }.merge(opts))
51
52
  end
52
53
 
@@ -21,19 +21,23 @@ goog.LOCALE = "en";
21
21
  goog.TRUSTED_SITE = !0;
22
22
  goog.STRICT_MODE_COMPATIBLE = !1;
23
23
  goog.provide = function(a) {
24
+ if (!COMPILED && goog.isProvided_(a)) {
25
+ throw Error('Namespace "' + a + '" already declared.');
26
+ }
27
+ goog.constructNamespace_(a);
28
+ };
29
+ goog.constructNamespace_ = function(a, b) {
24
30
  if (!COMPILED) {
25
- if (goog.isProvided_(a)) {
26
- throw Error('Namespace "' + a + '" already declared.');
27
- }
28
31
  delete goog.implicitNamespaces_[a];
29
- for (var b = a;(b = b.substring(0, b.lastIndexOf("."))) && !goog.getObjectByName(b);) {
30
- goog.implicitNamespaces_[b] = !0;
32
+ for (var c = a;(c = c.substring(0, c.lastIndexOf("."))) && !goog.getObjectByName(c);) {
33
+ goog.implicitNamespaces_[c] = !0;
31
34
  }
32
35
  }
33
- goog.exportPath_(a);
36
+ goog.exportPath_(a, b);
34
37
  };
38
+ goog.VALID_MODULE_RE_ = /^[a-zA-Z_$][a-zA-Z0-9._$]*$/;
35
39
  goog.module = function(a) {
36
- if (!goog.isString(a) || !a) {
40
+ if (!goog.isString(a) || !a || -1 == a.search(goog.VALID_MODULE_RE_)) {
37
41
  throw Error("Invalid module identifier");
38
42
  }
39
43
  if (!goog.isInModuleLoader_()) {
@@ -50,15 +54,32 @@ goog.module = function(a) {
50
54
  delete goog.implicitNamespaces_[a];
51
55
  }
52
56
  };
57
+ goog.module.get = function(a) {
58
+ return goog.module.getInternal_(a);
59
+ };
60
+ goog.module.getInternal_ = function(a) {
61
+ if (!COMPILED) {
62
+ return goog.isProvided_(a) ? a in goog.loadedModules_ ? goog.loadedModules_[a] : goog.getObjectByName(a) : null;
63
+ }
64
+ };
53
65
  goog.moduleLoaderState_ = null;
54
66
  goog.isInModuleLoader_ = function() {
55
67
  return null != goog.moduleLoaderState_;
56
68
  };
57
- goog.module.exportTestMethods = function() {
69
+ goog.module.declareTestMethods = function() {
58
70
  if (!goog.isInModuleLoader_()) {
59
- throw Error("goog.module.exportTestMethods must be called from within a goog.module");
71
+ throw Error("goog.module.declareTestMethods must be called from within a goog.module");
72
+ }
73
+ goog.moduleLoaderState_.declareTestMethods = !0;
74
+ };
75
+ goog.module.declareLegacyNamespace = function() {
76
+ if (!COMPILED && !goog.isInModuleLoader_()) {
77
+ throw Error("goog.module.declareLegacyNamespace must be called from within a goog.module");
78
+ }
79
+ if (!COMPILED && !goog.moduleLoaderState_.moduleName) {
80
+ throw Error("goog.module must be called prior to goog.module.declareLegacyNamespace.");
60
81
  }
61
- goog.moduleLoaderState_.exportTestMethods = !0;
82
+ goog.moduleLoaderState_.declareLegacyNamespace = !0;
62
83
  };
63
84
  goog.setTestOnly = function(a) {
64
85
  if (COMPILED && !goog.DEBUG) {
@@ -104,8 +125,9 @@ goog.logToConsole_ = function(a) {
104
125
  };
105
126
  goog.require = function(a) {
106
127
  if (!COMPILED) {
128
+ goog.ENABLE_DEBUG_LOADER && goog.IS_OLD_IE_ && goog.maybeProcessDeferredDep_(a);
107
129
  if (goog.isProvided_(a)) {
108
- return goog.isInModuleLoader_() ? a in goog.loadedModules_ ? goog.loadedModules_[a] : goog.getObjectByName(a) : null;
130
+ return goog.isInModuleLoader_() ? goog.module.getInternal_(a) : null;
109
131
  }
110
132
  if (goog.ENABLE_DEBUG_LOADER) {
111
133
  var b = goog.getPathFromDeps_(a);
@@ -138,9 +160,10 @@ goog.addSingletonGetter = function(a) {
138
160
  };
139
161
  goog.instantiatedSingletons_ = [];
140
162
  goog.LOAD_MODULE_USING_EVAL = !0;
163
+ goog.SEAL_MODULE_EXPORTS = goog.DEBUG;
141
164
  goog.loadedModules_ = {};
142
165
  goog.DEPENDENCIES_ENABLED = !COMPILED && goog.ENABLE_DEBUG_LOADER;
143
- goog.DEPENDENCIES_ENABLED && (goog.included_ = {}, goog.dependencies_ = {pathIsModule:{}, nameToPath:{}, requires:{}, visited:{}, written:{}}, goog.inHtmlDocument_ = function() {
166
+ goog.DEPENDENCIES_ENABLED && (goog.included_ = {}, goog.dependencies_ = {pathIsModule:{}, nameToPath:{}, requires:{}, visited:{}, written:{}, deferred:{}}, goog.inHtmlDocument_ = function() {
144
167
  var a = goog.global.document;
145
168
  return "undefined" != typeof a && "write" in a;
146
169
  }, goog.findBasePath_ = function() {
@@ -161,20 +184,7 @@ goog.DEPENDENCIES_ENABLED && (goog.included_ = {}, goog.dependencies_ = {pathIsM
161
184
  (goog.global.CLOSURE_IMPORT_SCRIPT || goog.writeScriptTag_)(a, b) && (goog.dependencies_.written[a] = !0);
162
185
  }, goog.IS_OLD_IE_ = goog.global.document && goog.global.document.all && !goog.global.atob, goog.importModule_ = function(a) {
163
186
  goog.importScript_("", 'goog.retrieveAndExecModule_("' + a + '");') && (goog.dependencies_.written[a] = !0);
164
- }, goog.queuedModules_ = [], goog.retrieveAndExecModule_ = function(a) {
165
- var b = goog.global.CLOSURE_IMPORT_SCRIPT || goog.writeScriptTag_, c = null, d = new goog.global.XMLHttpRequest;
166
- d.onload = function() {
167
- c = this.responseText;
168
- };
169
- d.open("get", a, !1);
170
- d.send();
171
- c = d.responseText;
172
- if (null != c) {
173
- d = goog.wrapModule_(a, c), goog.IS_OLD_IE_ ? goog.queuedModules_.push(d) : b(a, d), goog.dependencies_.written[a] = !0;
174
- } else {
175
- throw Error("load of " + a + "failed");
176
- }
177
- }, goog.wrapModule_ = function(a, b) {
187
+ }, goog.queuedModules_ = [], goog.wrapModule_ = function(a, b) {
178
188
  return goog.LOAD_MODULE_USING_EVAL && goog.isDef(goog.global.JSON) ? "goog.loadModule(" + goog.global.JSON.stringify(b + "\n//# sourceURL=" + a + "\n") + ");" : 'goog.loadModule(function(exports) {"use strict";' + b + "\n;return exports});\n//# sourceURL=" + a + "\n";
179
189
  }, goog.loadQueuedModules_ = function() {
180
190
  var a = goog.queuedModules_.length;
@@ -182,37 +192,57 @@ goog.DEPENDENCIES_ENABLED && (goog.included_ = {}, goog.dependencies_ = {pathIsM
182
192
  var b = goog.queuedModules_;
183
193
  goog.queuedModules_ = [];
184
194
  for (var c = 0;c < a;c++) {
185
- goog.globalEval(b[c]);
195
+ goog.maybeProcessDeferredPath_(b[c]);
186
196
  }
187
197
  }
198
+ }, goog.maybeProcessDeferredDep_ = function(a) {
199
+ goog.isDeferredModule_(a) && goog.allDepsAreAvailable_(a) && (a = goog.getPathFromDeps_(a), goog.maybeProcessDeferredPath_(goog.basePath + a));
200
+ }, goog.isDeferredModule_ = function(a) {
201
+ return(a = goog.getPathFromDeps_(a)) && goog.dependencies_.pathIsModule[a] ? goog.basePath + a in goog.dependencies_.deferred : !1;
202
+ }, goog.allDepsAreAvailable_ = function(a) {
203
+ if ((a = goog.getPathFromDeps_(a)) && a in goog.dependencies_.requires) {
204
+ for (var b in goog.dependencies_.requires[a]) {
205
+ if (!goog.isProvided_(b) && !goog.isDeferredModule_(b)) {
206
+ return!1;
207
+ }
208
+ }
209
+ }
210
+ return!0;
211
+ }, goog.maybeProcessDeferredPath_ = function(a) {
212
+ if (a in goog.dependencies_.deferred) {
213
+ var b = goog.dependencies_.deferred[a];
214
+ delete goog.dependencies_.deferred[a];
215
+ goog.globalEval(b);
216
+ }
188
217
  }, goog.loadModule = function(a) {
218
+ var b = goog.moduleLoaderState_;
189
219
  try {
190
- goog.moduleLoaderState_ = {moduleName:void 0, exportTestMethods:!1};
191
- var b;
220
+ goog.moduleLoaderState_ = {moduleName:void 0, declareTestMethods:!1};
221
+ var c;
192
222
  if (goog.isFunction(a)) {
193
- b = a.call(goog.global, {});
223
+ c = a.call(goog.global, {});
194
224
  } else {
195
225
  if (goog.isString(a)) {
196
- b = goog.loadModuleFromSource_.call(goog.global, a);
226
+ c = goog.loadModuleFromSource_.call(goog.global, a);
197
227
  } else {
198
228
  throw Error("Invalid module definition");
199
229
  }
200
230
  }
201
- Object.seal && Object.seal(b);
202
- var c = goog.moduleLoaderState_.moduleName;
203
- if (!goog.isString(c) || !c) {
204
- throw Error('Invalid module name "' + c + '"');
231
+ var d = goog.moduleLoaderState_.moduleName;
232
+ if (!goog.isString(d) || !d) {
233
+ throw Error('Invalid module name "' + d + '"');
205
234
  }
206
- goog.loadedModules_[c] = b;
207
- if (goog.moduleLoaderState_.exportTestMethods) {
208
- for (var d in b) {
209
- if (0 === d.indexOf("test", 0) || "tearDown" == d || "setup" == d) {
210
- goog.global[d] = b[d];
235
+ goog.moduleLoaderState_.declareLegacyNamespace ? goog.constructNamespace_(d, c) : goog.SEAL_MODULE_EXPORTS && Object.seal && Object.seal(c);
236
+ goog.loadedModules_[d] = c;
237
+ if (goog.moduleLoaderState_.declareTestMethods) {
238
+ for (var e in c) {
239
+ if (0 === e.indexOf("test", 0) || "tearDown" == e || "setUp" == e || "setUpPage" == e || "tearDownPage" == e) {
240
+ goog.global[e] = c[e];
211
241
  }
212
242
  }
213
243
  }
214
244
  } finally {
215
- goog.moduleLoaderState_ = null;
245
+ goog.moduleLoaderState_ = b;
216
246
  }
217
247
  }, goog.loadModuleFromSource_ = function(a) {
218
248
  eval(a);
@@ -271,6 +301,31 @@ goog.DEPENDENCIES_ENABLED && (goog.included_ = {}, goog.dependencies_ = {pathIsM
271
301
  }, goog.getPathFromDeps_ = function(a) {
272
302
  return a in goog.dependencies_.nameToPath ? goog.dependencies_.nameToPath[a] : null;
273
303
  }, goog.findBasePath_(), goog.global.CLOSURE_NO_DEPS || goog.importScript_(goog.basePath + "deps.js"));
304
+ goog.normalizePath_ = function(a) {
305
+ a = a.split("/");
306
+ for (var b = 0;b < a.length;) {
307
+ "." == a[b] ? a.splice(b, 1) : b && ".." == a[b] && a[b - 1] && ".." != a[b - 1] ? a.splice(--b, 2) : b++;
308
+ }
309
+ return a.join("/");
310
+ };
311
+ goog.retrieveAndExecModule_ = function(a) {
312
+ if (!COMPILED) {
313
+ var b = a;
314
+ a = goog.normalizePath_(a);
315
+ var c = goog.global.CLOSURE_IMPORT_SCRIPT || goog.writeScriptTag_, d = null, e = new goog.global.XMLHttpRequest;
316
+ e.onload = function() {
317
+ d = this.responseText;
318
+ };
319
+ e.open("get", a, !1);
320
+ e.send();
321
+ d = e.responseText;
322
+ if (null != d) {
323
+ e = goog.wrapModule_(a, d), goog.IS_OLD_IE_ ? (goog.dependencies_.deferred[b] = e, goog.queuedModules_.push(b)) : c(a, e);
324
+ } else {
325
+ throw Error("load of " + a + "failed");
326
+ }
327
+ }
328
+ };
274
329
  goog.typeOf = function(a) {
275
330
  var b = typeof a;
276
331
  if ("object" == b) {
@@ -554,6 +609,7 @@ goog.dom = {};
554
609
  goog.dom.NodeType = {ELEMENT:1, ATTRIBUTE:2, TEXT:3, CDATA_SECTION:4, ENTITY_REFERENCE:5, ENTITY:6, PROCESSING_INSTRUCTION:7, COMMENT:8, DOCUMENT:9, DOCUMENT_TYPE:10, DOCUMENT_FRAGMENT:11, NOTATION:12};
555
610
  goog.string = {};
556
611
  goog.string.DETECT_DOUBLE_ESCAPING = !1;
612
+ goog.string.FORCE_NON_DOM_HTML_UNESCAPING = !1;
557
613
  goog.string.Unicode = {NBSP:"\u00a0"};
558
614
  goog.string.startsWith = function(a, b) {
559
615
  return 0 == a.lastIndexOf(b, 0);
@@ -580,12 +636,17 @@ goog.string.subs = function(a, b) {
580
636
  goog.string.collapseWhitespace = function(a) {
581
637
  return a.replace(/[\s\xa0]+/g, " ").replace(/^\s+|\s+$/g, "");
582
638
  };
583
- goog.string.isEmpty = function(a) {
639
+ goog.string.isEmptyOrWhitespace = function(a) {
584
640
  return/^[\s\xa0]*$/.test(a);
585
641
  };
586
- goog.string.isEmptySafe = function(a) {
587
- return goog.string.isEmpty(goog.string.makeSafe(a));
642
+ goog.string.isEmptyString = function(a) {
643
+ return 0 == a.length;
644
+ };
645
+ goog.string.isEmpty = goog.string.isEmptyOrWhitespace;
646
+ goog.string.isEmptyOrWhitespaceSafe = function(a) {
647
+ return goog.string.isEmptyOrWhitespace(goog.string.makeSafe(a));
588
648
  };
649
+ goog.string.isEmptySafe = goog.string.isEmptyOrWhitespaceSafe;
589
650
  goog.string.isBreakingWhitespace = function(a) {
590
651
  return!/[^\t\n\r ]/.test(a);
591
652
  };
@@ -619,7 +680,9 @@ goog.string.normalizeSpaces = function(a) {
619
680
  goog.string.collapseBreakingSpaces = function(a) {
620
681
  return a.replace(/[\t\r\n ]+/g, " ").replace(/^[\t\r\n ]+|[\t\r\n ]+$/g, "");
621
682
  };
622
- goog.string.trim = function(a) {
683
+ goog.string.trim = goog.TRUSTED_SITE && String.prototype.trim ? function(a) {
684
+ return a.trim();
685
+ } : function(a) {
623
686
  return a.replace(/^[\s\xa0]+|[\s\xa0]+$/g, "");
624
687
  };
625
688
  goog.string.trimLeft = function(a) {
@@ -686,7 +749,7 @@ goog.string.NULL_RE_ = /\x00/g;
686
749
  goog.string.E_RE_ = /e/g;
687
750
  goog.string.ALL_RE_ = goog.string.DETECT_DOUBLE_ESCAPING ? /[\x00&<>"'e]/ : /[\x00&<>"']/;
688
751
  goog.string.unescapeEntities = function(a) {
689
- return goog.string.contains(a, "&") ? "document" in goog.global ? goog.string.unescapeEntitiesUsingDom_(a) : goog.string.unescapePureXmlEntities_(a) : a;
752
+ return goog.string.contains(a, "&") ? !goog.string.FORCE_NON_DOM_HTML_UNESCAPING && "document" in goog.global ? goog.string.unescapeEntitiesUsingDom_(a) : goog.string.unescapePureXmlEntities_(a) : a;
690
753
  };
691
754
  goog.string.unescapeEntitiesWithDocument = function(a, b) {
692
755
  return goog.string.contains(a, "&") ? goog.string.unescapeEntitiesUsingDom_(a, b) : a;
@@ -877,7 +940,7 @@ goog.string.createUniqueString = function() {
877
940
  };
878
941
  goog.string.toNumber = function(a) {
879
942
  var b = Number(a);
880
- return 0 == b && goog.string.isEmpty(a) ? NaN : b;
943
+ return 0 == b && goog.string.isEmptyOrWhitespace(a) ? NaN : b;
881
944
  };
882
945
  goog.string.isLowerCamelCase = function(a) {
883
946
  return/^[a-z]+([A-Z][a-z]*)*$/.test(a);
@@ -899,6 +962,9 @@ goog.string.toTitleCase = function(a, b) {
899
962
  return b + c.toUpperCase();
900
963
  });
901
964
  };
965
+ goog.string.capitalize = function(a) {
966
+ return String(a.charAt(0)).toUpperCase() + String(a.substr(1)).toLowerCase();
967
+ };
902
968
  goog.string.parseInt = function(a) {
903
969
  isFinite(a) && (a = String(a));
904
970
  return goog.isString(a) ? /^\s*-?0x/i.test(a) ? parseInt(a, 16) : parseInt(a, 10) : NaN;
@@ -911,6 +977,28 @@ goog.string.splitLimit = function(a, b, c) {
911
977
  a.length && d.push(a.join(b));
912
978
  return d;
913
979
  };
980
+ goog.string.editDistance = function(a, b) {
981
+ var c = [], d = [];
982
+ if (a == b) {
983
+ return 0;
984
+ }
985
+ if (!a.length || !b.length) {
986
+ return Math.max(a.length, b.length);
987
+ }
988
+ for (var e = 0;e < b.length + 1;e++) {
989
+ c[e] = e;
990
+ }
991
+ for (e = 0;e < a.length;e++) {
992
+ d[0] = e + 1;
993
+ for (var f = 0;f < b.length;f++) {
994
+ d[f + 1] = Math.min(d[f] + 1, c[f + 1] + 1, c[f] + (a[e] != b[f]));
995
+ }
996
+ for (f = 0;f < c.length;f++) {
997
+ c[f] = d[f];
998
+ }
999
+ }
1000
+ return d[b.length];
1001
+ };
914
1002
  goog.asserts = {};
915
1003
  goog.asserts.ENABLE_ASSERTS = goog.DEBUG;
916
1004
  goog.asserts.AssertionError = function(a, b) {
@@ -974,7 +1062,7 @@ goog.asserts.assertElement = function(a, b, c) {
974
1062
  return a;
975
1063
  };
976
1064
  goog.asserts.assertInstanceof = function(a, b, c, d) {
977
- !goog.asserts.ENABLE_ASSERTS || a instanceof b || goog.asserts.doAssertFailure_("instanceof check failed.", null, c, Array.prototype.slice.call(arguments, 3));
1065
+ !goog.asserts.ENABLE_ASSERTS || a instanceof b || goog.asserts.doAssertFailure_("Expected instanceof %s but got %s.", [goog.asserts.getType_(b), goog.asserts.getType_(a)], c, Array.prototype.slice.call(arguments, 3));
978
1066
  return a;
979
1067
  };
980
1068
  goog.asserts.assertObjectPrototypeIsIntact = function() {
@@ -982,6 +1070,9 @@ goog.asserts.assertObjectPrototypeIsIntact = function() {
982
1070
  goog.asserts.fail(a + " should not be enumerable in Object.prototype.");
983
1071
  }
984
1072
  };
1073
+ goog.asserts.getType_ = function(a) {
1074
+ return a instanceof Function ? a.displayName || a.name || "unknown type name" : a instanceof Object ? a.constructor.displayName || a.constructor.name || Object.prototype.toString.call(a) : null === a ? "null" : typeof a;
1075
+ };
985
1076
  goog.array = {};
986
1077
  goog.NATIVE_ARRAY_PROTOTYPES = goog.TRUSTED_SITE;
987
1078
  goog.array.ASSUME_NATIVE_FUNCTIONS = !1;
@@ -1196,17 +1287,15 @@ goog.array.toArray = function(a) {
1196
1287
  goog.array.clone = goog.array.toArray;
1197
1288
  goog.array.extend = function(a, b) {
1198
1289
  for (var c = 1;c < arguments.length;c++) {
1199
- var d = arguments[c], e;
1200
- if (goog.isArray(d) || (e = goog.isArrayLike(d)) && Object.prototype.hasOwnProperty.call(d, "callee")) {
1201
- a.push.apply(a, d);
1202
- } else {
1203
- if (e) {
1204
- for (var f = a.length, g = d.length, h = 0;h < g;h++) {
1205
- a[f + h] = d[h];
1206
- }
1207
- } else {
1208
- a.push(d);
1290
+ var d = arguments[c];
1291
+ if (goog.isArrayLike(d)) {
1292
+ var e = a.length || 0, f = d.length || 0;
1293
+ a.length = e + f;
1294
+ for (var g = 0;g < f;g++) {
1295
+ a[e + g] = d[g];
1209
1296
  }
1297
+ } else {
1298
+ a.push(d);
1210
1299
  }
1211
1300
  }
1212
1301
  };
@@ -1259,12 +1348,17 @@ goog.array.stableSort = function(a, b) {
1259
1348
  a[c] = a[c].value;
1260
1349
  }
1261
1350
  };
1262
- goog.array.sortObjectsByKey = function(a, b, c) {
1351
+ goog.array.sortByKey = function(a, b, c) {
1263
1352
  var d = c || goog.array.defaultCompare;
1264
1353
  goog.array.sort(a, function(a, c) {
1265
- return d(a[b], c[b]);
1354
+ return d(b(a), b(c));
1266
1355
  });
1267
1356
  };
1357
+ goog.array.sortObjectsByKey = function(a, b, c) {
1358
+ goog.array.sortByKey(a, function(a) {
1359
+ return a[b];
1360
+ }, c);
1361
+ };
1268
1362
  goog.array.isSorted = function(a, b, c) {
1269
1363
  b = b || goog.array.defaultCompare;
1270
1364
  for (var d = 1;d < a.length;d++) {
@@ -1353,7 +1447,15 @@ goog.array.repeat = function(a, b) {
1353
1447
  goog.array.flatten = function(a) {
1354
1448
  for (var b = [], c = 0;c < arguments.length;c++) {
1355
1449
  var d = arguments[c];
1356
- goog.isArray(d) ? b.push.apply(b, goog.array.flatten.apply(null, d)) : b.push(d);
1450
+ if (goog.isArray(d)) {
1451
+ for (var e = 0;e < d.length;e += 8192) {
1452
+ for (var f = goog.array.slice(d, e, e + 8192), f = goog.array.flatten.apply(null, f), g = 0;g < f.length;g++) {
1453
+ b.push(f[g]);
1454
+ }
1455
+ }
1456
+ } else {
1457
+ b.push(d);
1458
+ }
1357
1459
  }
1358
1460
  return b;
1359
1461
  };
@@ -1518,11 +1620,13 @@ goog.object.setIfUndefined = function(a, b, c) {
1518
1620
  return b in a ? a[b] : a[b] = c;
1519
1621
  };
1520
1622
  goog.object.equals = function(a, b) {
1521
- if (!goog.array.equals(goog.object.getKeys(a), goog.object.getKeys(b))) {
1522
- return!1;
1523
- }
1524
1623
  for (var c in a) {
1525
- if (a[c] !== b[c]) {
1624
+ if (!(c in b) || a[c] !== b[c]) {
1625
+ return!1;
1626
+ }
1627
+ }
1628
+ for (c in b) {
1629
+ if (!(c in a)) {
1526
1630
  return!1;
1527
1631
  }
1528
1632
  }
@@ -1760,6 +1864,11 @@ goog.functions.nth = function(a) {
1760
1864
  goog.functions.withReturnValue = function(a, b) {
1761
1865
  return goog.functions.sequence(a, goog.functions.constant(b));
1762
1866
  };
1867
+ goog.functions.equalTo = function(a, b) {
1868
+ return function(c) {
1869
+ return b ? a == c : a === c;
1870
+ };
1871
+ };
1763
1872
  goog.functions.compose = function(a, b) {
1764
1873
  var c = arguments, d = c.length;
1765
1874
  return function() {
@@ -2079,27 +2188,29 @@ goog.iter.every = function(a, b, c) {
2079
2188
  return!0;
2080
2189
  };
2081
2190
  goog.iter.chain = function(a) {
2082
- var b = goog.iter.toIterator(arguments), c = new goog.iter.Iterator, d = null;
2083
- c.next = function() {
2191
+ return goog.iter.chainFromIterable(arguments);
2192
+ };
2193
+ goog.iter.chainFromIterable = function(a) {
2194
+ var b = goog.iter.toIterator(a);
2195
+ a = new goog.iter.Iterator;
2196
+ var c = null;
2197
+ a.next = function() {
2084
2198
  for (;;) {
2085
- if (null == d) {
2199
+ if (null == c) {
2086
2200
  var a = b.next();
2087
- d = goog.iter.toIterator(a);
2201
+ c = goog.iter.toIterator(a);
2088
2202
  }
2089
2203
  try {
2090
- return d.next();
2091
- } catch (c) {
2092
- if (c !== goog.iter.StopIteration) {
2093
- throw c;
2204
+ return c.next();
2205
+ } catch (e) {
2206
+ if (e !== goog.iter.StopIteration) {
2207
+ throw e;
2094
2208
  }
2095
- d = null;
2209
+ c = null;
2096
2210
  }
2097
2211
  }
2098
2212
  };
2099
- return c;
2100
- };
2101
- goog.iter.chainFromIterable = function(a) {
2102
- return goog.iter.chain.apply(void 0, a);
2213
+ return a;
2103
2214
  };
2104
2215
  goog.iter.dropWhile = function(a, b, c) {
2105
2216
  var d = goog.iter.toIterator(a);
@@ -2118,19 +2229,12 @@ goog.iter.dropWhile = function(a, b, c) {
2118
2229
  goog.iter.takeWhile = function(a, b, c) {
2119
2230
  var d = goog.iter.toIterator(a);
2120
2231
  a = new goog.iter.Iterator;
2121
- var e = !0;
2122
2232
  a.next = function() {
2123
- for (;;) {
2124
- if (e) {
2125
- var a = d.next();
2126
- if (b.call(c, a, void 0, d)) {
2127
- return a;
2128
- }
2129
- e = !1;
2130
- } else {
2131
- throw goog.iter.StopIteration;
2132
- }
2233
+ var a = d.next();
2234
+ if (b.call(c, a, void 0, d)) {
2235
+ return a;
2133
2236
  }
2237
+ throw goog.iter.StopIteration;
2134
2238
  };
2135
2239
  return a;
2136
2240
  };
@@ -2145,10 +2249,11 @@ goog.iter.toArray = function(a) {
2145
2249
  });
2146
2250
  return b;
2147
2251
  };
2148
- goog.iter.equals = function(a, b) {
2149
- var c = goog.iter.zipLongest({}, a, b);
2150
- return goog.iter.every(c, function(a) {
2151
- return a[0] == a[1];
2252
+ goog.iter.equals = function(a, b, c) {
2253
+ a = goog.iter.zipLongest({}, a, b);
2254
+ var d = c || goog.array.defaultCompareEquality;
2255
+ return goog.iter.every(a, function(a) {
2256
+ return d(a[0], a[1]);
2152
2257
  });
2153
2258
  };
2154
2259
  goog.iter.nextOrValue = function(a, b) {
@@ -2592,6 +2697,12 @@ goog.labs.userAgent.browser.matchFirefox_ = function() {
2592
2697
  goog.labs.userAgent.browser.matchSafari_ = function() {
2593
2698
  return goog.labs.userAgent.util.matchUserAgent("Safari") && !goog.labs.userAgent.util.matchUserAgent("Chrome") && !goog.labs.userAgent.util.matchUserAgent("CriOS") && !goog.labs.userAgent.util.matchUserAgent("Android");
2594
2699
  };
2700
+ goog.labs.userAgent.browser.matchCoast_ = function() {
2701
+ return goog.labs.userAgent.util.matchUserAgent("Coast");
2702
+ };
2703
+ goog.labs.userAgent.browser.matchIosWebview_ = function() {
2704
+ return(goog.labs.userAgent.util.matchUserAgent("iPad") || goog.labs.userAgent.util.matchUserAgent("iPhone")) && !goog.labs.userAgent.browser.matchSafari_() && !goog.labs.userAgent.browser.matchChrome_() && !goog.labs.userAgent.browser.matchCoast_() && goog.labs.userAgent.util.matchUserAgent("AppleWebKit");
2705
+ };
2595
2706
  goog.labs.userAgent.browser.matchChrome_ = function() {
2596
2707
  return goog.labs.userAgent.util.matchUserAgent("Chrome") || goog.labs.userAgent.util.matchUserAgent("CriOS");
2597
2708
  };
@@ -2602,6 +2713,8 @@ goog.labs.userAgent.browser.isOpera = goog.labs.userAgent.browser.matchOpera_;
2602
2713
  goog.labs.userAgent.browser.isIE = goog.labs.userAgent.browser.matchIE_;
2603
2714
  goog.labs.userAgent.browser.isFirefox = goog.labs.userAgent.browser.matchFirefox_;
2604
2715
  goog.labs.userAgent.browser.isSafari = goog.labs.userAgent.browser.matchSafari_;
2716
+ goog.labs.userAgent.browser.isCoast = goog.labs.userAgent.browser.matchCoast_;
2717
+ goog.labs.userAgent.browser.isIosWebview = goog.labs.userAgent.browser.matchIosWebview_;
2605
2718
  goog.labs.userAgent.browser.isChrome = goog.labs.userAgent.browser.matchChrome_;
2606
2719
  goog.labs.userAgent.browser.isAndroidBrowser = goog.labs.userAgent.browser.matchAndroidBrowser_;
2607
2720
  goog.labs.userAgent.browser.isSilk = function() {
@@ -2693,6 +2806,43 @@ goog.labs.userAgent.engine.getVersionForKey_ = function(a, b) {
2693
2806
  });
2694
2807
  return c && c[1] || "";
2695
2808
  };
2809
+ goog.labs.userAgent.platform = {};
2810
+ goog.labs.userAgent.platform.isAndroid = function() {
2811
+ return goog.labs.userAgent.util.matchUserAgent("Android");
2812
+ };
2813
+ goog.labs.userAgent.platform.isIpod = function() {
2814
+ return goog.labs.userAgent.util.matchUserAgent("iPod");
2815
+ };
2816
+ goog.labs.userAgent.platform.isIphone = function() {
2817
+ return goog.labs.userAgent.util.matchUserAgent("iPhone") && !goog.labs.userAgent.util.matchUserAgent("iPod") && !goog.labs.userAgent.util.matchUserAgent("iPad");
2818
+ };
2819
+ goog.labs.userAgent.platform.isIpad = function() {
2820
+ return goog.labs.userAgent.util.matchUserAgent("iPad");
2821
+ };
2822
+ goog.labs.userAgent.platform.isIos = function() {
2823
+ return goog.labs.userAgent.platform.isIphone() || goog.labs.userAgent.platform.isIpad() || goog.labs.userAgent.platform.isIpod();
2824
+ };
2825
+ goog.labs.userAgent.platform.isMacintosh = function() {
2826
+ return goog.labs.userAgent.util.matchUserAgent("Macintosh");
2827
+ };
2828
+ goog.labs.userAgent.platform.isLinux = function() {
2829
+ return goog.labs.userAgent.util.matchUserAgent("Linux");
2830
+ };
2831
+ goog.labs.userAgent.platform.isWindows = function() {
2832
+ return goog.labs.userAgent.util.matchUserAgent("Windows");
2833
+ };
2834
+ goog.labs.userAgent.platform.isChromeOS = function() {
2835
+ return goog.labs.userAgent.util.matchUserAgent("CrOS");
2836
+ };
2837
+ goog.labs.userAgent.platform.getVersion = function() {
2838
+ var a = goog.labs.userAgent.util.getUserAgent(), b = "";
2839
+ goog.labs.userAgent.platform.isWindows() ? (b = /Windows (?:NT|Phone) ([0-9.]+)/, b = (a = b.exec(a)) ? a[1] : "0.0") : goog.labs.userAgent.platform.isIos() ? (b = /(?:iPhone|iPod|iPad|CPU)\s+OS\s+(\S+)/, b = (a = b.exec(a)) && a[1].replace(/_/g, ".")) : goog.labs.userAgent.platform.isMacintosh() ? (b = /Mac OS X ([0-9_.]+)/, b = (a = b.exec(a)) ? a[1].replace(/_/g, ".") : "10") : goog.labs.userAgent.platform.isAndroid() ? (b = /Android\s+([^\);]+)(\)|;)/, b = (a = b.exec(a)) && a[1]) : goog.labs.userAgent.platform.isChromeOS() &&
2840
+ (b = /(?:CrOS\s+(?:i686|x86_64)\s+([0-9.]+))/, b = (a = b.exec(a)) && a[1]);
2841
+ return b || "";
2842
+ };
2843
+ goog.labs.userAgent.platform.isVersionOrHigher = function(a) {
2844
+ return 0 <= goog.string.compareVersions(goog.labs.userAgent.platform.getVersion(), a);
2845
+ };
2696
2846
  goog.userAgent = {};
2697
2847
  goog.userAgent.ASSUME_IE = !1;
2698
2848
  goog.userAgent.ASSUME_GECKO = !1;
@@ -2729,24 +2879,20 @@ goog.userAgent.ASSUME_ANDROID = !1;
2729
2879
  goog.userAgent.ASSUME_IPHONE = !1;
2730
2880
  goog.userAgent.ASSUME_IPAD = !1;
2731
2881
  goog.userAgent.PLATFORM_KNOWN_ = goog.userAgent.ASSUME_MAC || goog.userAgent.ASSUME_WINDOWS || goog.userAgent.ASSUME_LINUX || goog.userAgent.ASSUME_X11 || goog.userAgent.ASSUME_ANDROID || goog.userAgent.ASSUME_IPHONE || goog.userAgent.ASSUME_IPAD;
2732
- goog.userAgent.initPlatform_ = function() {
2733
- goog.userAgent.detectedMac_ = goog.string.contains(goog.userAgent.PLATFORM, "Mac");
2734
- goog.userAgent.detectedWindows_ = goog.string.contains(goog.userAgent.PLATFORM, "Win");
2735
- goog.userAgent.detectedLinux_ = goog.string.contains(goog.userAgent.PLATFORM, "Linux");
2736
- goog.userAgent.detectedX11_ = !!goog.userAgent.getNavigator() && goog.string.contains(goog.userAgent.getNavigator().appVersion || "", "X11");
2737
- var a = goog.userAgent.getUserAgentString();
2738
- goog.userAgent.detectedAndroid_ = !!a && goog.string.contains(a, "Android");
2739
- goog.userAgent.detectedIPhone_ = !!a && goog.string.contains(a, "iPhone");
2740
- goog.userAgent.detectedIPad_ = !!a && goog.string.contains(a, "iPad");
2741
- };
2742
- goog.userAgent.PLATFORM_KNOWN_ || goog.userAgent.initPlatform_();
2743
- goog.userAgent.MAC = goog.userAgent.PLATFORM_KNOWN_ ? goog.userAgent.ASSUME_MAC : goog.userAgent.detectedMac_;
2744
- goog.userAgent.WINDOWS = goog.userAgent.PLATFORM_KNOWN_ ? goog.userAgent.ASSUME_WINDOWS : goog.userAgent.detectedWindows_;
2745
- goog.userAgent.LINUX = goog.userAgent.PLATFORM_KNOWN_ ? goog.userAgent.ASSUME_LINUX : goog.userAgent.detectedLinux_;
2746
- goog.userAgent.X11 = goog.userAgent.PLATFORM_KNOWN_ ? goog.userAgent.ASSUME_X11 : goog.userAgent.detectedX11_;
2747
- goog.userAgent.ANDROID = goog.userAgent.PLATFORM_KNOWN_ ? goog.userAgent.ASSUME_ANDROID : goog.userAgent.detectedAndroid_;
2748
- goog.userAgent.IPHONE = goog.userAgent.PLATFORM_KNOWN_ ? goog.userAgent.ASSUME_IPHONE : goog.userAgent.detectedIPhone_;
2749
- goog.userAgent.IPAD = goog.userAgent.PLATFORM_KNOWN_ ? goog.userAgent.ASSUME_IPAD : goog.userAgent.detectedIPad_;
2882
+ goog.userAgent.MAC = goog.userAgent.PLATFORM_KNOWN_ ? goog.userAgent.ASSUME_MAC : goog.labs.userAgent.platform.isMacintosh();
2883
+ goog.userAgent.WINDOWS = goog.userAgent.PLATFORM_KNOWN_ ? goog.userAgent.ASSUME_WINDOWS : goog.labs.userAgent.platform.isWindows();
2884
+ goog.userAgent.isLegacyLinux_ = function() {
2885
+ return goog.labs.userAgent.platform.isLinux() || goog.labs.userAgent.platform.isChromeOS();
2886
+ };
2887
+ goog.userAgent.LINUX = goog.userAgent.PLATFORM_KNOWN_ ? goog.userAgent.ASSUME_LINUX : goog.userAgent.isLegacyLinux_();
2888
+ goog.userAgent.isX11_ = function() {
2889
+ var a = goog.userAgent.getNavigator();
2890
+ return!!a && goog.string.contains(a.appVersion || "", "X11");
2891
+ };
2892
+ goog.userAgent.X11 = goog.userAgent.PLATFORM_KNOWN_ ? goog.userAgent.ASSUME_X11 : goog.userAgent.isX11_();
2893
+ goog.userAgent.ANDROID = goog.userAgent.PLATFORM_KNOWN_ ? goog.userAgent.ASSUME_ANDROID : goog.labs.userAgent.platform.isAndroid();
2894
+ goog.userAgent.IPHONE = goog.userAgent.PLATFORM_KNOWN_ ? goog.userAgent.ASSUME_IPHONE : goog.labs.userAgent.platform.isIphone();
2895
+ goog.userAgent.IPAD = goog.userAgent.PLATFORM_KNOWN_ ? goog.userAgent.ASSUME_IPAD : goog.labs.userAgent.platform.isIpad();
2750
2896
  goog.userAgent.determineVersion_ = function() {
2751
2897
  var a = "", b;
2752
2898
  if (goog.userAgent.OPERA && goog.global.opera) {
@@ -3432,113 +3578,6 @@ goog.Uri.QueryData.prototype.extend = function(a) {
3432
3578
  }, this);
3433
3579
  }
3434
3580
  };
3435
- goog.debug.RelativeTimeProvider = function() {
3436
- this.relativeTimeStart_ = goog.now();
3437
- };
3438
- goog.debug.RelativeTimeProvider.defaultInstance_ = new goog.debug.RelativeTimeProvider;
3439
- goog.debug.RelativeTimeProvider.prototype.set = function(a) {
3440
- this.relativeTimeStart_ = a;
3441
- };
3442
- goog.debug.RelativeTimeProvider.prototype.reset = function() {
3443
- this.set(goog.now());
3444
- };
3445
- goog.debug.RelativeTimeProvider.prototype.get = function() {
3446
- return this.relativeTimeStart_;
3447
- };
3448
- goog.debug.RelativeTimeProvider.getDefaultInstance = function() {
3449
- return goog.debug.RelativeTimeProvider.defaultInstance_;
3450
- };
3451
- goog.debug.Formatter = function(a) {
3452
- this.prefix_ = a || "";
3453
- this.startTimeProvider_ = goog.debug.RelativeTimeProvider.getDefaultInstance();
3454
- };
3455
- goog.debug.Formatter.prototype.appendNewline = !0;
3456
- goog.debug.Formatter.prototype.showAbsoluteTime = !0;
3457
- goog.debug.Formatter.prototype.showRelativeTime = !0;
3458
- goog.debug.Formatter.prototype.showLoggerName = !0;
3459
- goog.debug.Formatter.prototype.showExceptionText = !1;
3460
- goog.debug.Formatter.prototype.showSeverityLevel = !1;
3461
- goog.debug.Formatter.prototype.setStartTimeProvider = function(a) {
3462
- this.startTimeProvider_ = a;
3463
- };
3464
- goog.debug.Formatter.prototype.getStartTimeProvider = function() {
3465
- return this.startTimeProvider_;
3466
- };
3467
- goog.debug.Formatter.prototype.resetRelativeTimeStart = function() {
3468
- this.startTimeProvider_.reset();
3469
- };
3470
- goog.debug.Formatter.getDateTimeStamp_ = function(a) {
3471
- a = new Date(a.getMillis());
3472
- return goog.debug.Formatter.getTwoDigitString_(a.getFullYear() - 2E3) + goog.debug.Formatter.getTwoDigitString_(a.getMonth() + 1) + goog.debug.Formatter.getTwoDigitString_(a.getDate()) + " " + goog.debug.Formatter.getTwoDigitString_(a.getHours()) + ":" + goog.debug.Formatter.getTwoDigitString_(a.getMinutes()) + ":" + goog.debug.Formatter.getTwoDigitString_(a.getSeconds()) + "." + goog.debug.Formatter.getTwoDigitString_(Math.floor(a.getMilliseconds() / 10));
3473
- };
3474
- goog.debug.Formatter.getTwoDigitString_ = function(a) {
3475
- return 10 > a ? "0" + a : String(a);
3476
- };
3477
- goog.debug.Formatter.getRelativeTime_ = function(a, b) {
3478
- var c = (a.getMillis() - b) / 1E3, d = c.toFixed(3), e = 0;
3479
- if (1 > c) {
3480
- e = 2;
3481
- } else {
3482
- for (;100 > c;) {
3483
- e++, c *= 10;
3484
- }
3485
- }
3486
- for (;0 < e--;) {
3487
- d = " " + d;
3488
- }
3489
- return d;
3490
- };
3491
- goog.debug.HtmlFormatter = function(a) {
3492
- goog.debug.Formatter.call(this, a);
3493
- };
3494
- goog.inherits(goog.debug.HtmlFormatter, goog.debug.Formatter);
3495
- goog.debug.HtmlFormatter.prototype.showExceptionText = !0;
3496
- goog.debug.HtmlFormatter.prototype.formatRecord = function(a) {
3497
- var b;
3498
- switch(a.getLevel().value) {
3499
- case goog.debug.Logger.Level.SHOUT.value:
3500
- b = "dbg-sh";
3501
- break;
3502
- case goog.debug.Logger.Level.SEVERE.value:
3503
- b = "dbg-sev";
3504
- break;
3505
- case goog.debug.Logger.Level.WARNING.value:
3506
- b = "dbg-w";
3507
- break;
3508
- case goog.debug.Logger.Level.INFO.value:
3509
- b = "dbg-i";
3510
- break;
3511
- default:
3512
- b = "dbg-f";
3513
- }
3514
- var c = [];
3515
- c.push(this.prefix_, " ");
3516
- this.showAbsoluteTime && c.push("[", goog.debug.Formatter.getDateTimeStamp_(a), "] ");
3517
- this.showRelativeTime && c.push("[", goog.string.whitespaceEscape(goog.debug.Formatter.getRelativeTime_(a, this.startTimeProvider_.get())), "s] ");
3518
- this.showLoggerName && c.push("[", goog.string.htmlEscape(a.getLoggerName()), "] ");
3519
- this.showSeverityLevel && c.push("[", goog.string.htmlEscape(a.getLevel().name), "] ");
3520
- c.push('<span class="', b, '">', goog.string.newLineToBr(goog.string.whitespaceEscape(goog.string.htmlEscape(a.getMessage()))));
3521
- this.showExceptionText && a.getException() && c.push("<br>", goog.string.newLineToBr(goog.string.whitespaceEscape(a.getExceptionText() || "")));
3522
- c.push("</span>");
3523
- this.appendNewline && c.push("<br>");
3524
- return c.join("");
3525
- };
3526
- goog.debug.TextFormatter = function(a) {
3527
- goog.debug.Formatter.call(this, a);
3528
- };
3529
- goog.inherits(goog.debug.TextFormatter, goog.debug.Formatter);
3530
- goog.debug.TextFormatter.prototype.formatRecord = function(a) {
3531
- var b = [];
3532
- b.push(this.prefix_, " ");
3533
- this.showAbsoluteTime && b.push("[", goog.debug.Formatter.getDateTimeStamp_(a), "] ");
3534
- this.showRelativeTime && b.push("[", goog.debug.Formatter.getRelativeTime_(a, this.startTimeProvider_.get()), "s] ");
3535
- this.showLoggerName && b.push("[", a.getLoggerName(), "] ");
3536
- this.showSeverityLevel && b.push("[", a.getLevel().name, "] ");
3537
- b.push(a.getMessage());
3538
- this.showExceptionText && a.getException() && b.push("\n", a.getExceptionText());
3539
- this.appendNewline && b.push("\n");
3540
- return b.join("");
3541
- };
3542
3581
  goog.structs.Collection = function() {
3543
3582
  };
3544
3583
  goog.structs.Set = function(a) {
@@ -4044,9 +4083,14 @@ goog.debug.Logger.prototype.log = function(a, b, c) {
4044
4083
  goog.debug.LOGGING_ENABLED && this.isLoggable(a) && (goog.isFunction(b) && (b = b()), this.doLogRecord_(this.getLogRecord(a, b, c, goog.debug.Logger.prototype.log)));
4045
4084
  };
4046
4085
  goog.debug.Logger.prototype.getLogRecord = function(a, b, c, d) {
4047
- a = goog.debug.LogBuffer.isBufferingEnabled() ? goog.debug.LogBuffer.getInstance().addRecord(a, b, this.name_) : new goog.debug.LogRecord(a, String(b), this.name_);
4048
- c && (a.setException(c), a.setExceptionText(goog.debug.exposeException(c, d || goog.debug.Logger.prototype.getLogRecord)));
4049
- return a;
4086
+ var e = goog.debug.LogBuffer.isBufferingEnabled() ? goog.debug.LogBuffer.getInstance().addRecord(a, b, this.name_) : new goog.debug.LogRecord(a, String(b), this.name_);
4087
+ if (c) {
4088
+ var f;
4089
+ f = goog.STRICT_MODE_COMPATIBLE ? d || goog.debug.Logger.prototype.getLogRecord : d || arguments.callee.caller;
4090
+ e.setException(c);
4091
+ e.setExceptionText(goog.debug.exposeException(c, f));
4092
+ }
4093
+ return e;
4050
4094
  };
4051
4095
  goog.debug.Logger.prototype.shout = function(a, b) {
4052
4096
  goog.debug.LOGGING_ENABLED && this.log(goog.debug.Logger.Level.SHOUT, a, b);
@@ -4131,6 +4175,571 @@ goog.debug.LogManager.createLogger_ = function(a) {
4131
4175
  }
4132
4176
  return goog.debug.LogManager.loggers_[a] = b;
4133
4177
  };
4178
+ goog.debug.RelativeTimeProvider = function() {
4179
+ this.relativeTimeStart_ = goog.now();
4180
+ };
4181
+ goog.debug.RelativeTimeProvider.defaultInstance_ = new goog.debug.RelativeTimeProvider;
4182
+ goog.debug.RelativeTimeProvider.prototype.set = function(a) {
4183
+ this.relativeTimeStart_ = a;
4184
+ };
4185
+ goog.debug.RelativeTimeProvider.prototype.reset = function() {
4186
+ this.set(goog.now());
4187
+ };
4188
+ goog.debug.RelativeTimeProvider.prototype.get = function() {
4189
+ return this.relativeTimeStart_;
4190
+ };
4191
+ goog.debug.RelativeTimeProvider.getDefaultInstance = function() {
4192
+ return goog.debug.RelativeTimeProvider.defaultInstance_;
4193
+ };
4194
+ goog.dom.tags = {};
4195
+ goog.dom.tags.VOID_TAGS_ = goog.object.createSet("area base br col command embed hr img input keygen link meta param source track wbr".split(" "));
4196
+ goog.dom.tags.isVoidTag = function(a) {
4197
+ return!0 === goog.dom.tags.VOID_TAGS_[a];
4198
+ };
4199
+ goog.string.TypedString = function() {
4200
+ };
4201
+ goog.string.Const = function() {
4202
+ this.stringConstValueWithSecurityContract__googStringSecurityPrivate_ = "";
4203
+ this.STRING_CONST_TYPE_MARKER__GOOG_STRING_SECURITY_PRIVATE_ = goog.string.Const.TYPE_MARKER_;
4204
+ };
4205
+ goog.string.Const.prototype.implementsGoogStringTypedString = !0;
4206
+ goog.string.Const.prototype.getTypedStringValue = function() {
4207
+ return this.stringConstValueWithSecurityContract__googStringSecurityPrivate_;
4208
+ };
4209
+ goog.string.Const.prototype.toString = function() {
4210
+ return "Const{" + this.stringConstValueWithSecurityContract__googStringSecurityPrivate_ + "}";
4211
+ };
4212
+ goog.string.Const.unwrap = function(a) {
4213
+ if (a instanceof goog.string.Const && a.constructor === goog.string.Const && a.STRING_CONST_TYPE_MARKER__GOOG_STRING_SECURITY_PRIVATE_ === goog.string.Const.TYPE_MARKER_) {
4214
+ return a.stringConstValueWithSecurityContract__googStringSecurityPrivate_;
4215
+ }
4216
+ goog.asserts.fail("expected object of type Const, got '" + a + "'");
4217
+ return "type_error:Const";
4218
+ };
4219
+ goog.string.Const.from = function(a) {
4220
+ return goog.string.Const.create__googStringSecurityPrivate_(a);
4221
+ };
4222
+ goog.string.Const.TYPE_MARKER_ = {};
4223
+ goog.string.Const.create__googStringSecurityPrivate_ = function(a) {
4224
+ var b = new goog.string.Const;
4225
+ b.stringConstValueWithSecurityContract__googStringSecurityPrivate_ = a;
4226
+ return b;
4227
+ };
4228
+ goog.html = {};
4229
+ goog.html.SafeStyle = function() {
4230
+ this.privateDoNotAccessOrElseSafeStyleWrappedValue_ = "";
4231
+ this.SAFE_STYLE_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ = goog.html.SafeStyle.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_;
4232
+ };
4233
+ goog.html.SafeStyle.prototype.implementsGoogStringTypedString = !0;
4234
+ goog.html.SafeStyle.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ = {};
4235
+ goog.html.SafeStyle.fromConstant = function(a) {
4236
+ a = goog.string.Const.unwrap(a);
4237
+ if (0 === a.length) {
4238
+ return goog.html.SafeStyle.EMPTY;
4239
+ }
4240
+ goog.html.SafeStyle.checkStyle_(a);
4241
+ goog.asserts.assert(goog.string.endsWith(a, ";"), "Last character of style string is not ';': " + a);
4242
+ goog.asserts.assert(goog.string.contains(a, ":"), "Style string must contain at least one ':', to specify a \"name: value\" pair: " + a);
4243
+ return goog.html.SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(a);
4244
+ };
4245
+ goog.html.SafeStyle.checkStyle_ = function(a) {
4246
+ goog.asserts.assert(!/[<>]/.test(a), "Forbidden characters in style string: " + a);
4247
+ };
4248
+ goog.html.SafeStyle.prototype.getTypedStringValue = function() {
4249
+ return this.privateDoNotAccessOrElseSafeStyleWrappedValue_;
4250
+ };
4251
+ goog.DEBUG && (goog.html.SafeStyle.prototype.toString = function() {
4252
+ return "SafeStyle{" + this.privateDoNotAccessOrElseSafeStyleWrappedValue_ + "}";
4253
+ });
4254
+ goog.html.SafeStyle.unwrap = function(a) {
4255
+ if (a instanceof goog.html.SafeStyle && a.constructor === goog.html.SafeStyle && a.SAFE_STYLE_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ === goog.html.SafeStyle.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_) {
4256
+ return a.privateDoNotAccessOrElseSafeStyleWrappedValue_;
4257
+ }
4258
+ goog.asserts.fail("expected object of type SafeStyle, got '" + a + "'");
4259
+ return "type_error:SafeStyle";
4260
+ };
4261
+ goog.html.SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse = function(a) {
4262
+ var b = new goog.html.SafeStyle;
4263
+ b.privateDoNotAccessOrElseSafeStyleWrappedValue_ = a;
4264
+ return b;
4265
+ };
4266
+ goog.html.SafeStyle.EMPTY = goog.html.SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse("");
4267
+ goog.html.SafeStyle.INNOCUOUS_STRING = "zClosurez";
4268
+ goog.html.SafeStyle.create = function(a) {
4269
+ var b = "", c;
4270
+ for (c in a) {
4271
+ if (!/^[-_a-zA-Z0-9]+$/.test(c)) {
4272
+ throw Error("Name allows only [-_a-zA-Z0-9], got: " + c);
4273
+ }
4274
+ var d = a[c];
4275
+ null != d && (d instanceof goog.string.Const ? (d = goog.string.Const.unwrap(d), goog.asserts.assert(!/[{;}]/.test(d), "Value does not allow [{;}].")) : goog.html.SafeStyle.VALUE_RE_.test(d) || (goog.asserts.fail("String value allows only [-.%_!# a-zA-Z0-9], got: " + d), d = goog.html.SafeStyle.INNOCUOUS_STRING), b += c + ":" + d + ";");
4276
+ }
4277
+ if (!b) {
4278
+ return goog.html.SafeStyle.EMPTY;
4279
+ }
4280
+ goog.html.SafeStyle.checkStyle_(b);
4281
+ return goog.html.SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(b);
4282
+ };
4283
+ goog.html.SafeStyle.VALUE_RE_ = /^[-.%_!# a-zA-Z0-9]+$/;
4284
+ goog.html.SafeStyle.concat = function(a) {
4285
+ var b = "", c = function(a) {
4286
+ goog.isArray(a) ? goog.array.forEach(a, c) : b += goog.html.SafeStyle.unwrap(a);
4287
+ };
4288
+ goog.array.forEach(arguments, c);
4289
+ return b ? goog.html.SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(b) : goog.html.SafeStyle.EMPTY;
4290
+ };
4291
+ goog.i18n = {};
4292
+ goog.i18n.bidi = {};
4293
+ goog.i18n.bidi.FORCE_RTL = !1;
4294
+ goog.i18n.bidi.IS_RTL = goog.i18n.bidi.FORCE_RTL || ("ar" == goog.LOCALE.substring(0, 2).toLowerCase() || "fa" == goog.LOCALE.substring(0, 2).toLowerCase() || "he" == goog.LOCALE.substring(0, 2).toLowerCase() || "iw" == goog.LOCALE.substring(0, 2).toLowerCase() || "ps" == goog.LOCALE.substring(0, 2).toLowerCase() || "sd" == goog.LOCALE.substring(0, 2).toLowerCase() || "ug" == goog.LOCALE.substring(0, 2).toLowerCase() || "ur" == goog.LOCALE.substring(0, 2).toLowerCase() || "yi" == goog.LOCALE.substring(0,
4295
+ 2).toLowerCase()) && (2 == goog.LOCALE.length || "-" == goog.LOCALE.substring(2, 3) || "_" == goog.LOCALE.substring(2, 3)) || 3 <= goog.LOCALE.length && "ckb" == goog.LOCALE.substring(0, 3).toLowerCase() && (3 == goog.LOCALE.length || "-" == goog.LOCALE.substring(3, 4) || "_" == goog.LOCALE.substring(3, 4));
4296
+ goog.i18n.bidi.Format = {LRE:"\u202a", RLE:"\u202b", PDF:"\u202c", LRM:"\u200e", RLM:"\u200f"};
4297
+ goog.i18n.bidi.Dir = {LTR:1, RTL:-1, NEUTRAL:0};
4298
+ goog.i18n.bidi.RIGHT = "right";
4299
+ goog.i18n.bidi.LEFT = "left";
4300
+ goog.i18n.bidi.I18N_RIGHT = goog.i18n.bidi.IS_RTL ? goog.i18n.bidi.LEFT : goog.i18n.bidi.RIGHT;
4301
+ goog.i18n.bidi.I18N_LEFT = goog.i18n.bidi.IS_RTL ? goog.i18n.bidi.RIGHT : goog.i18n.bidi.LEFT;
4302
+ goog.i18n.bidi.toDir = function(a, b) {
4303
+ return "number" == typeof a ? 0 < a ? goog.i18n.bidi.Dir.LTR : 0 > a ? goog.i18n.bidi.Dir.RTL : b ? null : goog.i18n.bidi.Dir.NEUTRAL : null == a ? null : a ? goog.i18n.bidi.Dir.RTL : goog.i18n.bidi.Dir.LTR;
4304
+ };
4305
+ goog.i18n.bidi.ltrChars_ = "A-Za-z\u00c0-\u00d6\u00d8-\u00f6\u00f8-\u02b8\u0300-\u0590\u0800-\u1fff\u200e\u2c00-\ufb1c\ufe00-\ufe6f\ufefd-\uffff";
4306
+ goog.i18n.bidi.rtlChars_ = "\u0591-\u07ff\u200f\ufb1d-\ufdff\ufe70-\ufefc";
4307
+ goog.i18n.bidi.htmlSkipReg_ = /<[^>]*>|&[^;]+;/g;
4308
+ goog.i18n.bidi.stripHtmlIfNeeded_ = function(a, b) {
4309
+ return b ? a.replace(goog.i18n.bidi.htmlSkipReg_, "") : a;
4310
+ };
4311
+ goog.i18n.bidi.rtlCharReg_ = new RegExp("[" + goog.i18n.bidi.rtlChars_ + "]");
4312
+ goog.i18n.bidi.ltrCharReg_ = new RegExp("[" + goog.i18n.bidi.ltrChars_ + "]");
4313
+ goog.i18n.bidi.hasAnyRtl = function(a, b) {
4314
+ return goog.i18n.bidi.rtlCharReg_.test(goog.i18n.bidi.stripHtmlIfNeeded_(a, b));
4315
+ };
4316
+ goog.i18n.bidi.hasRtlChar = goog.i18n.bidi.hasAnyRtl;
4317
+ goog.i18n.bidi.hasAnyLtr = function(a, b) {
4318
+ return goog.i18n.bidi.ltrCharReg_.test(goog.i18n.bidi.stripHtmlIfNeeded_(a, b));
4319
+ };
4320
+ goog.i18n.bidi.ltrRe_ = new RegExp("^[" + goog.i18n.bidi.ltrChars_ + "]");
4321
+ goog.i18n.bidi.rtlRe_ = new RegExp("^[" + goog.i18n.bidi.rtlChars_ + "]");
4322
+ goog.i18n.bidi.isRtlChar = function(a) {
4323
+ return goog.i18n.bidi.rtlRe_.test(a);
4324
+ };
4325
+ goog.i18n.bidi.isLtrChar = function(a) {
4326
+ return goog.i18n.bidi.ltrRe_.test(a);
4327
+ };
4328
+ goog.i18n.bidi.isNeutralChar = function(a) {
4329
+ return!goog.i18n.bidi.isLtrChar(a) && !goog.i18n.bidi.isRtlChar(a);
4330
+ };
4331
+ goog.i18n.bidi.ltrDirCheckRe_ = new RegExp("^[^" + goog.i18n.bidi.rtlChars_ + "]*[" + goog.i18n.bidi.ltrChars_ + "]");
4332
+ goog.i18n.bidi.rtlDirCheckRe_ = new RegExp("^[^" + goog.i18n.bidi.ltrChars_ + "]*[" + goog.i18n.bidi.rtlChars_ + "]");
4333
+ goog.i18n.bidi.startsWithRtl = function(a, b) {
4334
+ return goog.i18n.bidi.rtlDirCheckRe_.test(goog.i18n.bidi.stripHtmlIfNeeded_(a, b));
4335
+ };
4336
+ goog.i18n.bidi.isRtlText = goog.i18n.bidi.startsWithRtl;
4337
+ goog.i18n.bidi.startsWithLtr = function(a, b) {
4338
+ return goog.i18n.bidi.ltrDirCheckRe_.test(goog.i18n.bidi.stripHtmlIfNeeded_(a, b));
4339
+ };
4340
+ goog.i18n.bidi.isLtrText = goog.i18n.bidi.startsWithLtr;
4341
+ goog.i18n.bidi.isRequiredLtrRe_ = /^http:\/\/.*/;
4342
+ goog.i18n.bidi.isNeutralText = function(a, b) {
4343
+ a = goog.i18n.bidi.stripHtmlIfNeeded_(a, b);
4344
+ return goog.i18n.bidi.isRequiredLtrRe_.test(a) || !goog.i18n.bidi.hasAnyLtr(a) && !goog.i18n.bidi.hasAnyRtl(a);
4345
+ };
4346
+ goog.i18n.bidi.ltrExitDirCheckRe_ = new RegExp("[" + goog.i18n.bidi.ltrChars_ + "][^" + goog.i18n.bidi.rtlChars_ + "]*$");
4347
+ goog.i18n.bidi.rtlExitDirCheckRe_ = new RegExp("[" + goog.i18n.bidi.rtlChars_ + "][^" + goog.i18n.bidi.ltrChars_ + "]*$");
4348
+ goog.i18n.bidi.endsWithLtr = function(a, b) {
4349
+ return goog.i18n.bidi.ltrExitDirCheckRe_.test(goog.i18n.bidi.stripHtmlIfNeeded_(a, b));
4350
+ };
4351
+ goog.i18n.bidi.isLtrExitText = goog.i18n.bidi.endsWithLtr;
4352
+ goog.i18n.bidi.endsWithRtl = function(a, b) {
4353
+ return goog.i18n.bidi.rtlExitDirCheckRe_.test(goog.i18n.bidi.stripHtmlIfNeeded_(a, b));
4354
+ };
4355
+ goog.i18n.bidi.isRtlExitText = goog.i18n.bidi.endsWithRtl;
4356
+ goog.i18n.bidi.rtlLocalesRe_ = /^(ar|ckb|dv|he|iw|fa|nqo|ps|sd|ug|ur|yi|.*[-_](Arab|Hebr|Thaa|Nkoo|Tfng))(?!.*[-_](Latn|Cyrl)($|-|_))($|-|_)/i;
4357
+ goog.i18n.bidi.isRtlLanguage = function(a) {
4358
+ return goog.i18n.bidi.rtlLocalesRe_.test(a);
4359
+ };
4360
+ goog.i18n.bidi.bracketGuardHtmlRe_ = /(\(.*?\)+)|(\[.*?\]+)|(\{.*?\}+)|(&lt;.*?(&gt;)+)/g;
4361
+ goog.i18n.bidi.bracketGuardTextRe_ = /(\(.*?\)+)|(\[.*?\]+)|(\{.*?\}+)|(<.*?>+)/g;
4362
+ goog.i18n.bidi.guardBracketInHtml = function(a, b) {
4363
+ return(void 0 === b ? goog.i18n.bidi.hasAnyRtl(a) : b) ? a.replace(goog.i18n.bidi.bracketGuardHtmlRe_, "<span dir=rtl>$&</span>") : a.replace(goog.i18n.bidi.bracketGuardHtmlRe_, "<span dir=ltr>$&</span>");
4364
+ };
4365
+ goog.i18n.bidi.guardBracketInText = function(a, b) {
4366
+ var c = (void 0 === b ? goog.i18n.bidi.hasAnyRtl(a) : b) ? goog.i18n.bidi.Format.RLM : goog.i18n.bidi.Format.LRM;
4367
+ return a.replace(goog.i18n.bidi.bracketGuardTextRe_, c + "$&" + c);
4368
+ };
4369
+ goog.i18n.bidi.enforceRtlInHtml = function(a) {
4370
+ return "<" == a.charAt(0) ? a.replace(/<\w+/, "$& dir=rtl") : "\n<span dir=rtl>" + a + "</span>";
4371
+ };
4372
+ goog.i18n.bidi.enforceRtlInText = function(a) {
4373
+ return goog.i18n.bidi.Format.RLE + a + goog.i18n.bidi.Format.PDF;
4374
+ };
4375
+ goog.i18n.bidi.enforceLtrInHtml = function(a) {
4376
+ return "<" == a.charAt(0) ? a.replace(/<\w+/, "$& dir=ltr") : "\n<span dir=ltr>" + a + "</span>";
4377
+ };
4378
+ goog.i18n.bidi.enforceLtrInText = function(a) {
4379
+ return goog.i18n.bidi.Format.LRE + a + goog.i18n.bidi.Format.PDF;
4380
+ };
4381
+ goog.i18n.bidi.dimensionsRe_ = /:\s*([.\d][.\w]*)\s+([.\d][.\w]*)\s+([.\d][.\w]*)\s+([.\d][.\w]*)/g;
4382
+ goog.i18n.bidi.leftRe_ = /left/gi;
4383
+ goog.i18n.bidi.rightRe_ = /right/gi;
4384
+ goog.i18n.bidi.tempRe_ = /%%%%/g;
4385
+ goog.i18n.bidi.mirrorCSS = function(a) {
4386
+ return a.replace(goog.i18n.bidi.dimensionsRe_, ":$1 $4 $3 $2").replace(goog.i18n.bidi.leftRe_, "%%%%").replace(goog.i18n.bidi.rightRe_, goog.i18n.bidi.LEFT).replace(goog.i18n.bidi.tempRe_, goog.i18n.bidi.RIGHT);
4387
+ };
4388
+ goog.i18n.bidi.doubleQuoteSubstituteRe_ = /([\u0591-\u05f2])"/g;
4389
+ goog.i18n.bidi.singleQuoteSubstituteRe_ = /([\u0591-\u05f2])'/g;
4390
+ goog.i18n.bidi.normalizeHebrewQuote = function(a) {
4391
+ return a.replace(goog.i18n.bidi.doubleQuoteSubstituteRe_, "$1\u05f4").replace(goog.i18n.bidi.singleQuoteSubstituteRe_, "$1\u05f3");
4392
+ };
4393
+ goog.i18n.bidi.wordSeparatorRe_ = /\s+/;
4394
+ goog.i18n.bidi.hasNumeralsRe_ = /\d/;
4395
+ goog.i18n.bidi.rtlDetectionThreshold_ = .4;
4396
+ goog.i18n.bidi.estimateDirection = function(a, b) {
4397
+ for (var c = 0, d = 0, e = !1, f = goog.i18n.bidi.stripHtmlIfNeeded_(a, b).split(goog.i18n.bidi.wordSeparatorRe_), g = 0;g < f.length;g++) {
4398
+ var h = f[g];
4399
+ goog.i18n.bidi.startsWithRtl(h) ? (c++, d++) : goog.i18n.bidi.isRequiredLtrRe_.test(h) ? e = !0 : goog.i18n.bidi.hasAnyLtr(h) ? d++ : goog.i18n.bidi.hasNumeralsRe_.test(h) && (e = !0);
4400
+ }
4401
+ return 0 == d ? e ? goog.i18n.bidi.Dir.LTR : goog.i18n.bidi.Dir.NEUTRAL : c / d > goog.i18n.bidi.rtlDetectionThreshold_ ? goog.i18n.bidi.Dir.RTL : goog.i18n.bidi.Dir.LTR;
4402
+ };
4403
+ goog.i18n.bidi.detectRtlDirectionality = function(a, b) {
4404
+ return goog.i18n.bidi.estimateDirection(a, b) == goog.i18n.bidi.Dir.RTL;
4405
+ };
4406
+ goog.i18n.bidi.setElementDirAndAlign = function(a, b) {
4407
+ a && (b = goog.i18n.bidi.toDir(b)) && (a.style.textAlign = b == goog.i18n.bidi.Dir.RTL ? goog.i18n.bidi.RIGHT : goog.i18n.bidi.LEFT, a.dir = b == goog.i18n.bidi.Dir.RTL ? "rtl" : "ltr");
4408
+ };
4409
+ goog.i18n.bidi.DirectionalString = function() {
4410
+ };
4411
+ goog.html.SafeUrl = function() {
4412
+ this.privateDoNotAccessOrElseSafeHtmlWrappedValue_ = "";
4413
+ this.SAFE_URL_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ = goog.html.SafeUrl.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_;
4414
+ };
4415
+ goog.html.SafeUrl.INNOCUOUS_STRING = "about:invalid#zClosurez";
4416
+ goog.html.SafeUrl.prototype.implementsGoogStringTypedString = !0;
4417
+ goog.html.SafeUrl.prototype.getTypedStringValue = function() {
4418
+ return this.privateDoNotAccessOrElseSafeHtmlWrappedValue_;
4419
+ };
4420
+ goog.html.SafeUrl.prototype.implementsGoogI18nBidiDirectionalString = !0;
4421
+ goog.html.SafeUrl.prototype.getDirection = function() {
4422
+ return goog.i18n.bidi.Dir.LTR;
4423
+ };
4424
+ goog.DEBUG && (goog.html.SafeUrl.prototype.toString = function() {
4425
+ return "SafeUrl{" + this.privateDoNotAccessOrElseSafeHtmlWrappedValue_ + "}";
4426
+ });
4427
+ goog.html.SafeUrl.unwrap = function(a) {
4428
+ if (a instanceof goog.html.SafeUrl && a.constructor === goog.html.SafeUrl && a.SAFE_URL_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ === goog.html.SafeUrl.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_) {
4429
+ return a.privateDoNotAccessOrElseSafeHtmlWrappedValue_;
4430
+ }
4431
+ goog.asserts.fail("expected object of type SafeUrl, got '" + a + "'");
4432
+ return "type_error:SafeUrl";
4433
+ };
4434
+ goog.html.SafeUrl.fromConstant = function(a) {
4435
+ return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(goog.string.Const.unwrap(a));
4436
+ };
4437
+ goog.html.SAFE_URL_PATTERN_ = /^(?:(?:https?|mailto):|[^&:/?#]*(?:[/?#]|$))/i;
4438
+ goog.html.SafeUrl.sanitize = function(a) {
4439
+ if (a instanceof goog.html.SafeUrl) {
4440
+ return a;
4441
+ }
4442
+ a = a.implementsGoogStringTypedString ? a.getTypedStringValue() : String(a);
4443
+ a = goog.html.SAFE_URL_PATTERN_.test(a) ? goog.html.SafeUrl.normalize_(a) : goog.html.SafeUrl.INNOCUOUS_STRING;
4444
+ return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a);
4445
+ };
4446
+ goog.html.SafeUrl.normalize_ = function(a) {
4447
+ try {
4448
+ var b = encodeURI(a);
4449
+ } catch (c) {
4450
+ return goog.html.SafeUrl.INNOCUOUS_STRING;
4451
+ }
4452
+ return b.replace(goog.html.SafeUrl.NORMALIZE_MATCHER_, function(a) {
4453
+ return goog.html.SafeUrl.NORMALIZE_REPLACER_MAP_[a];
4454
+ });
4455
+ };
4456
+ goog.html.SafeUrl.NORMALIZE_MATCHER_ = /[()']|%5B|%5D|%25/g;
4457
+ goog.html.SafeUrl.NORMALIZE_REPLACER_MAP_ = {"'":"%27", "(":"%28", ")":"%29", "%5B":"[", "%5D":"]", "%25":"%"};
4458
+ goog.html.SafeUrl.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ = {};
4459
+ goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse = function(a) {
4460
+ var b = new goog.html.SafeUrl;
4461
+ b.privateDoNotAccessOrElseSafeHtmlWrappedValue_ = a;
4462
+ return b;
4463
+ };
4464
+ goog.html.TrustedResourceUrl = function() {
4465
+ this.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_ = "";
4466
+ this.TRUSTED_RESOURCE_URL_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ = goog.html.TrustedResourceUrl.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_;
4467
+ };
4468
+ goog.html.TrustedResourceUrl.prototype.implementsGoogStringTypedString = !0;
4469
+ goog.html.TrustedResourceUrl.prototype.getTypedStringValue = function() {
4470
+ return this.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_;
4471
+ };
4472
+ goog.html.TrustedResourceUrl.prototype.implementsGoogI18nBidiDirectionalString = !0;
4473
+ goog.html.TrustedResourceUrl.prototype.getDirection = function() {
4474
+ return goog.i18n.bidi.Dir.LTR;
4475
+ };
4476
+ goog.DEBUG && (goog.html.TrustedResourceUrl.prototype.toString = function() {
4477
+ return "TrustedResourceUrl{" + this.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_ + "}";
4478
+ });
4479
+ goog.html.TrustedResourceUrl.unwrap = function(a) {
4480
+ if (a instanceof goog.html.TrustedResourceUrl && a.constructor === goog.html.TrustedResourceUrl && a.TRUSTED_RESOURCE_URL_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ === goog.html.TrustedResourceUrl.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_) {
4481
+ return a.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_;
4482
+ }
4483
+ goog.asserts.fail("expected object of type TrustedResourceUrl, got '" + a + "'");
4484
+ return "type_error:TrustedResourceUrl";
4485
+ };
4486
+ goog.html.TrustedResourceUrl.fromConstant = function(a) {
4487
+ return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(goog.string.Const.unwrap(a));
4488
+ };
4489
+ goog.html.TrustedResourceUrl.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ = {};
4490
+ goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse = function(a) {
4491
+ var b = new goog.html.TrustedResourceUrl;
4492
+ b.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_ = a;
4493
+ return b;
4494
+ };
4495
+ goog.html.SafeHtml = function() {
4496
+ this.privateDoNotAccessOrElseSafeHtmlWrappedValue_ = "";
4497
+ this.SAFE_HTML_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ = goog.html.SafeHtml.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_;
4498
+ this.dir_ = null;
4499
+ };
4500
+ goog.html.SafeHtml.prototype.implementsGoogI18nBidiDirectionalString = !0;
4501
+ goog.html.SafeHtml.prototype.getDirection = function() {
4502
+ return this.dir_;
4503
+ };
4504
+ goog.html.SafeHtml.prototype.implementsGoogStringTypedString = !0;
4505
+ goog.html.SafeHtml.prototype.getTypedStringValue = function() {
4506
+ return this.privateDoNotAccessOrElseSafeHtmlWrappedValue_;
4507
+ };
4508
+ goog.DEBUG && (goog.html.SafeHtml.prototype.toString = function() {
4509
+ return "SafeHtml{" + this.privateDoNotAccessOrElseSafeHtmlWrappedValue_ + "}";
4510
+ });
4511
+ goog.html.SafeHtml.unwrap = function(a) {
4512
+ if (a instanceof goog.html.SafeHtml && a.constructor === goog.html.SafeHtml && a.SAFE_HTML_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ === goog.html.SafeHtml.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_) {
4513
+ return a.privateDoNotAccessOrElseSafeHtmlWrappedValue_;
4514
+ }
4515
+ goog.asserts.fail("expected object of type SafeHtml, got '" + a + "'");
4516
+ return "type_error:SafeHtml";
4517
+ };
4518
+ goog.html.SafeHtml.htmlEscape = function(a) {
4519
+ if (a instanceof goog.html.SafeHtml) {
4520
+ return a;
4521
+ }
4522
+ var b = null;
4523
+ a.implementsGoogI18nBidiDirectionalString && (b = a.getDirection());
4524
+ a = a.implementsGoogStringTypedString ? a.getTypedStringValue() : String(a);
4525
+ return goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(goog.string.htmlEscape(a), b);
4526
+ };
4527
+ goog.html.SafeHtml.htmlEscapePreservingNewlines = function(a) {
4528
+ if (a instanceof goog.html.SafeHtml) {
4529
+ return a;
4530
+ }
4531
+ a = goog.html.SafeHtml.htmlEscape(a);
4532
+ return goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(goog.string.newLineToBr(goog.html.SafeHtml.unwrap(a)), a.getDirection());
4533
+ };
4534
+ goog.html.SafeHtml.htmlEscapePreservingNewlinesAndSpaces = function(a) {
4535
+ if (a instanceof goog.html.SafeHtml) {
4536
+ return a;
4537
+ }
4538
+ a = goog.html.SafeHtml.htmlEscape(a);
4539
+ return goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(goog.string.whitespaceEscape(goog.html.SafeHtml.unwrap(a)), a.getDirection());
4540
+ };
4541
+ goog.html.SafeHtml.from = goog.html.SafeHtml.htmlEscape;
4542
+ goog.html.SafeHtml.VALID_NAMES_IN_TAG_ = /^[a-zA-Z0-9-]+$/;
4543
+ goog.html.SafeHtml.URL_ATTRIBUTES_ = goog.object.createSet("action", "cite", "data", "formaction", "href", "manifest", "poster", "src");
4544
+ goog.html.SafeHtml.NOT_ALLOWED_TAG_NAMES_ = goog.object.createSet("embed", "iframe", "link", "script", "style", "template");
4545
+ goog.html.SafeHtml.create = function(a, b, c) {
4546
+ if (!goog.html.SafeHtml.VALID_NAMES_IN_TAG_.test(a)) {
4547
+ throw Error("Invalid tag name <" + a + ">.");
4548
+ }
4549
+ if (a.toLowerCase() in goog.html.SafeHtml.NOT_ALLOWED_TAG_NAMES_) {
4550
+ throw Error("Tag name <" + a + "> is not allowed for SafeHtml.");
4551
+ }
4552
+ return goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse(a, b, c);
4553
+ };
4554
+ goog.html.SafeHtml.getAttrNameAndValue_ = function(a, b, c) {
4555
+ if (c instanceof goog.string.Const) {
4556
+ c = goog.string.Const.unwrap(c);
4557
+ } else {
4558
+ if ("style" == b.toLowerCase()) {
4559
+ c = goog.html.SafeHtml.getStyleValue_(c);
4560
+ } else {
4561
+ if (/^on/i.test(b)) {
4562
+ throw Error('Attribute "' + b + '" requires goog.string.Const value, "' + c + '" given.');
4563
+ }
4564
+ if (b.toLowerCase() in goog.html.SafeHtml.URL_ATTRIBUTES_) {
4565
+ if (c instanceof goog.html.TrustedResourceUrl) {
4566
+ c = goog.html.TrustedResourceUrl.unwrap(c);
4567
+ } else {
4568
+ if (c instanceof goog.html.SafeUrl) {
4569
+ c = goog.html.SafeUrl.unwrap(c);
4570
+ } else {
4571
+ throw Error('Attribute "' + b + '" on tag "' + a + '" requires goog.html.SafeUrl or goog.string.Const value, "' + c + '" given.');
4572
+ }
4573
+ }
4574
+ }
4575
+ }
4576
+ }
4577
+ c.implementsGoogStringTypedString && (c = c.getTypedStringValue());
4578
+ goog.asserts.assert(goog.isString(c) || goog.isNumber(c), "String or number value expected, got " + typeof c + " with value: " + c);
4579
+ return b + '="' + goog.string.htmlEscape(String(c)) + '"';
4580
+ };
4581
+ goog.html.SafeHtml.getStyleValue_ = function(a) {
4582
+ if (!goog.isObject(a)) {
4583
+ throw Error('The "style" attribute requires goog.html.SafeStyle or map of style properties, ' + typeof a + " given: " + a);
4584
+ }
4585
+ a instanceof goog.html.SafeStyle || (a = goog.html.SafeStyle.create(a));
4586
+ return goog.html.SafeStyle.unwrap(a);
4587
+ };
4588
+ goog.html.SafeHtml.createWithDir = function(a, b, c, d) {
4589
+ b = goog.html.SafeHtml.create(b, c, d);
4590
+ b.dir_ = a;
4591
+ return b;
4592
+ };
4593
+ goog.html.SafeHtml.concat = function(a) {
4594
+ var b = goog.i18n.bidi.Dir.NEUTRAL, c = "", d = function(a) {
4595
+ goog.isArray(a) ? goog.array.forEach(a, d) : (a = goog.html.SafeHtml.htmlEscape(a), c += goog.html.SafeHtml.unwrap(a), a = a.getDirection(), b == goog.i18n.bidi.Dir.NEUTRAL ? b = a : a != goog.i18n.bidi.Dir.NEUTRAL && b != a && (b = null));
4596
+ };
4597
+ goog.array.forEach(arguments, d);
4598
+ return goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(c, b);
4599
+ };
4600
+ goog.html.SafeHtml.concatWithDir = function(a, b) {
4601
+ var c = goog.html.SafeHtml.concat(goog.array.slice(arguments, 1));
4602
+ c.dir_ = a;
4603
+ return c;
4604
+ };
4605
+ goog.html.SafeHtml.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ = {};
4606
+ goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse = function(a, b) {
4607
+ var c = new goog.html.SafeHtml;
4608
+ c.privateDoNotAccessOrElseSafeHtmlWrappedValue_ = a;
4609
+ c.dir_ = b;
4610
+ return c;
4611
+ };
4612
+ goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse = function(a, b, c) {
4613
+ var d = null, e = "<" + a;
4614
+ if (b) {
4615
+ for (var f in b) {
4616
+ if (!goog.html.SafeHtml.VALID_NAMES_IN_TAG_.test(f)) {
4617
+ throw Error('Invalid attribute name "' + f + '".');
4618
+ }
4619
+ var g = b[f];
4620
+ goog.isDefAndNotNull(g) && (e += " " + goog.html.SafeHtml.getAttrNameAndValue_(a, f, g));
4621
+ }
4622
+ }
4623
+ goog.isDef(c) ? goog.isArray(c) || (c = [c]) : c = [];
4624
+ goog.dom.tags.isVoidTag(a.toLowerCase()) ? (goog.asserts.assert(!c.length, "Void tag <" + a + "> does not allow content."), e += ">") : (d = goog.html.SafeHtml.concat(c), e += ">" + goog.html.SafeHtml.unwrap(d) + "</" + a + ">", d = d.getDirection());
4625
+ (a = b && b.dir) && (d = /^(ltr|rtl|auto)$/i.test(a) ? goog.i18n.bidi.Dir.NEUTRAL : null);
4626
+ return goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(e, d);
4627
+ };
4628
+ goog.html.SafeHtml.EMPTY = goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse("", goog.i18n.bidi.Dir.NEUTRAL);
4629
+ goog.debug.Formatter = function(a) {
4630
+ this.prefix_ = a || "";
4631
+ this.startTimeProvider_ = goog.debug.RelativeTimeProvider.getDefaultInstance();
4632
+ };
4633
+ goog.debug.Formatter.prototype.appendNewline = !0;
4634
+ goog.debug.Formatter.prototype.showAbsoluteTime = !0;
4635
+ goog.debug.Formatter.prototype.showRelativeTime = !0;
4636
+ goog.debug.Formatter.prototype.showLoggerName = !0;
4637
+ goog.debug.Formatter.prototype.showExceptionText = !1;
4638
+ goog.debug.Formatter.prototype.showSeverityLevel = !1;
4639
+ goog.debug.Formatter.prototype.setStartTimeProvider = function(a) {
4640
+ this.startTimeProvider_ = a;
4641
+ };
4642
+ goog.debug.Formatter.prototype.getStartTimeProvider = function() {
4643
+ return this.startTimeProvider_;
4644
+ };
4645
+ goog.debug.Formatter.prototype.resetRelativeTimeStart = function() {
4646
+ this.startTimeProvider_.reset();
4647
+ };
4648
+ goog.debug.Formatter.getDateTimeStamp_ = function(a) {
4649
+ a = new Date(a.getMillis());
4650
+ return goog.debug.Formatter.getTwoDigitString_(a.getFullYear() - 2E3) + goog.debug.Formatter.getTwoDigitString_(a.getMonth() + 1) + goog.debug.Formatter.getTwoDigitString_(a.getDate()) + " " + goog.debug.Formatter.getTwoDigitString_(a.getHours()) + ":" + goog.debug.Formatter.getTwoDigitString_(a.getMinutes()) + ":" + goog.debug.Formatter.getTwoDigitString_(a.getSeconds()) + "." + goog.debug.Formatter.getTwoDigitString_(Math.floor(a.getMilliseconds() / 10));
4651
+ };
4652
+ goog.debug.Formatter.getTwoDigitString_ = function(a) {
4653
+ return 10 > a ? "0" + a : String(a);
4654
+ };
4655
+ goog.debug.Formatter.getRelativeTime_ = function(a, b) {
4656
+ var c = (a.getMillis() - b) / 1E3, d = c.toFixed(3), e = 0;
4657
+ if (1 > c) {
4658
+ e = 2;
4659
+ } else {
4660
+ for (;100 > c;) {
4661
+ e++, c *= 10;
4662
+ }
4663
+ }
4664
+ for (;0 < e--;) {
4665
+ d = " " + d;
4666
+ }
4667
+ return d;
4668
+ };
4669
+ goog.debug.HtmlFormatter = function(a) {
4670
+ goog.debug.Formatter.call(this, a);
4671
+ };
4672
+ goog.inherits(goog.debug.HtmlFormatter, goog.debug.Formatter);
4673
+ goog.debug.HtmlFormatter.prototype.showExceptionText = !0;
4674
+ goog.debug.HtmlFormatter.prototype.formatRecord = function(a) {
4675
+ return a ? this.formatRecordAsHtml(a).getTypedStringValue() : "";
4676
+ };
4677
+ goog.debug.HtmlFormatter.prototype.formatRecordAsHtml = function(a) {
4678
+ var b;
4679
+ switch(a.getLevel().value) {
4680
+ case goog.debug.Logger.Level.SHOUT.value:
4681
+ b = "dbg-sh";
4682
+ break;
4683
+ case goog.debug.Logger.Level.SEVERE.value:
4684
+ b = "dbg-sev";
4685
+ break;
4686
+ case goog.debug.Logger.Level.WARNING.value:
4687
+ b = "dbg-w";
4688
+ break;
4689
+ case goog.debug.Logger.Level.INFO.value:
4690
+ b = "dbg-i";
4691
+ break;
4692
+ default:
4693
+ b = "dbg-f";
4694
+ }
4695
+ var c = [];
4696
+ c.push(this.prefix_, " ");
4697
+ this.showAbsoluteTime && c.push("[", goog.debug.Formatter.getDateTimeStamp_(a), "] ");
4698
+ this.showRelativeTime && c.push("[", goog.debug.Formatter.getRelativeTime_(a, this.startTimeProvider_.get()), "s] ");
4699
+ this.showLoggerName && c.push("[", a.getLoggerName(), "] ");
4700
+ this.showSeverityLevel && c.push("[", a.getLevel().name, "] ");
4701
+ var c = goog.html.SafeHtml.htmlEscapePreservingNewlinesAndSpaces(c.join("")), d = goog.html.SafeHtml.EMPTY;
4702
+ this.showExceptionText && a.getException() && (d = goog.html.SafeHtml.concat(goog.html.SafeHtml.create("br"), goog.html.SafeHtml.htmlEscapePreservingNewlinesAndSpaces(a.getExceptionText() || "")));
4703
+ a = goog.html.SafeHtml.htmlEscapePreservingNewlinesAndSpaces(a.getMessage());
4704
+ b = goog.html.SafeHtml.create("span", {"class":b}, goog.html.SafeHtml.concat(a, d));
4705
+ return this.appendNewline ? goog.html.SafeHtml.concat(c, b, goog.html.SafeHtml.create("br")) : goog.html.SafeHtml.concat(c, b);
4706
+ };
4707
+ goog.debug.TextFormatter = function(a) {
4708
+ goog.debug.Formatter.call(this, a);
4709
+ };
4710
+ goog.inherits(goog.debug.TextFormatter, goog.debug.Formatter);
4711
+ goog.debug.TextFormatter.prototype.formatRecord = function(a) {
4712
+ var b = [];
4713
+ b.push(this.prefix_, " ");
4714
+ this.showAbsoluteTime && b.push("[", goog.debug.Formatter.getDateTimeStamp_(a), "] ");
4715
+ this.showRelativeTime && b.push("[", goog.debug.Formatter.getRelativeTime_(a, this.startTimeProvider_.get()), "s] ");
4716
+ this.showLoggerName && b.push("[", a.getLoggerName(), "] ");
4717
+ this.showSeverityLevel && b.push("[", a.getLevel().name, "] ");
4718
+ b.push(a.getMessage());
4719
+ this.showExceptionText && a.getException() && b.push("\n", a.getExceptionText());
4720
+ this.appendNewline && b.push("\n");
4721
+ return b.join("");
4722
+ };
4723
+ goog.dom.safe = {};
4724
+ goog.dom.safe.setInnerHtml = function(a, b) {
4725
+ a.innerHTML = goog.html.SafeHtml.unwrap(b);
4726
+ };
4727
+ goog.dom.safe.setOuterHtml = function(a, b) {
4728
+ a.outerHTML = goog.html.SafeHtml.unwrap(b);
4729
+ };
4730
+ goog.dom.safe.documentWrite = function(a, b) {
4731
+ a.write(goog.html.SafeHtml.unwrap(b));
4732
+ };
4733
+ goog.dom.safe.setAnchorHref = function(a, b) {
4734
+ var c;
4735
+ c = b instanceof goog.html.SafeUrl ? b : goog.html.SafeUrl.sanitize(b);
4736
+ a.href = goog.html.SafeUrl.unwrap(c);
4737
+ };
4738
+ goog.dom.safe.setLocationHref = function(a, b) {
4739
+ var c;
4740
+ c = b instanceof goog.html.SafeUrl ? b : goog.html.SafeUrl.sanitize(b);
4741
+ a.href = goog.html.SafeUrl.unwrap(c);
4742
+ };
4134
4743
  goog.dom.BrowserFeature = {CAN_ADD_NAME_OR_TYPE_ATTRIBUTES:!goog.userAgent.IE || goog.userAgent.isDocumentModeOrHigher(9), CAN_USE_CHILDREN_ATTRIBUTE:!goog.userAgent.GECKO && !goog.userAgent.IE || goog.userAgent.IE && goog.userAgent.isDocumentModeOrHigher(9) || goog.userAgent.GECKO && goog.userAgent.isVersionOrHigher("1.9.1"), CAN_USE_INNER_TEXT:goog.userAgent.IE && !goog.userAgent.isVersionOrHigher("9"), CAN_USE_PARENT_ELEMENT_PROPERTY:goog.userAgent.IE || goog.userAgent.OPERA || goog.userAgent.WEBKIT,
4135
4744
  INNER_HTML_NEEDS_SCOPED_ELEMENT:goog.userAgent.IE, LEGACY_IE_RANGES:goog.userAgent.IE && !goog.userAgent.isDocumentModeOrHigher(9)};
4136
4745
  goog.dom.TagName = {A:"A", ABBR:"ABBR", ACRONYM:"ACRONYM", ADDRESS:"ADDRESS", APPLET:"APPLET", AREA:"AREA", ARTICLE:"ARTICLE", ASIDE:"ASIDE", AUDIO:"AUDIO", B:"B", BASE:"BASE", BASEFONT:"BASEFONT", BDI:"BDI", BDO:"BDO", BIG:"BIG", BLOCKQUOTE:"BLOCKQUOTE", BODY:"BODY", BR:"BR", BUTTON:"BUTTON", CANVAS:"CANVAS", CAPTION:"CAPTION", CENTER:"CENTER", CITE:"CITE", CODE:"CODE", COL:"COL", COLGROUP:"COLGROUP", COMMAND:"COMMAND", DATA:"DATA", DATALIST:"DATALIST", DD:"DD", DEL:"DEL", DETAILS:"DETAILS", DFN:"DFN",
@@ -4882,17 +5491,17 @@ goog.dom.isNodeList = function(a) {
4882
5491
  }
4883
5492
  return!1;
4884
5493
  };
4885
- goog.dom.getAncestorByTagNameAndClass = function(a, b, c) {
5494
+ goog.dom.getAncestorByTagNameAndClass = function(a, b, c, d) {
4886
5495
  if (!b && !c) {
4887
5496
  return null;
4888
5497
  }
4889
- var d = b ? b.toUpperCase() : null;
5498
+ var e = b ? b.toUpperCase() : null;
4890
5499
  return goog.dom.getAncestor(a, function(a) {
4891
- return(!d || a.nodeName == d) && (!c || goog.isString(a.className) && goog.array.contains(a.className.split(/\s+/), c));
4892
- }, !0);
5500
+ return(!e || a.nodeName == e) && (!c || goog.isString(a.className) && goog.array.contains(a.className.split(/\s+/), c));
5501
+ }, !0, d);
4893
5502
  };
4894
- goog.dom.getAncestorByClass = function(a, b) {
4895
- return goog.dom.getAncestorByTagNameAndClass(a, null, b);
5503
+ goog.dom.getAncestorByClass = function(a, b, c) {
5504
+ return goog.dom.getAncestorByTagNameAndClass(a, null, b, c);
4896
5505
  };
4897
5506
  goog.dom.getAncestor = function(a, b, c, d) {
4898
5507
  c || (a = a.parentNode);
@@ -5853,11 +6462,13 @@ goog.debug.DivConsole.prototype.setCapturing = function(a) {
5853
6462
  }
5854
6463
  };
5855
6464
  goog.debug.DivConsole.prototype.addLogRecord = function(a) {
5856
- var b = 100 >= this.element_.scrollHeight - this.element_.scrollTop - this.element_.clientHeight, c = this.elementOwnerDocument_.createElement("div");
5857
- c.className = "logmsg";
5858
- c.innerHTML = this.formatter_.formatRecord(a);
5859
- this.element_.appendChild(c);
5860
- b && (this.element_.scrollTop = this.element_.scrollHeight);
6465
+ if (a) {
6466
+ var b = 100 >= this.element_.scrollHeight - this.element_.scrollTop - this.element_.clientHeight, c = this.elementOwnerDocument_.createElement("div");
6467
+ c.className = "logmsg";
6468
+ goog.dom.safe.setInnerHtml(c, this.formatter_.formatRecordAsHtml(a));
6469
+ this.element_.appendChild(c);
6470
+ b && (this.element_.scrollTop = this.element_.scrollHeight);
6471
+ }
5861
6472
  };
5862
6473
  goog.debug.DivConsole.prototype.getFormatter = function() {
5863
6474
  return this.formatter_;
@@ -5871,7 +6482,7 @@ goog.debug.DivConsole.prototype.addSeparator = function() {
5871
6482
  this.element_.appendChild(a);
5872
6483
  };
5873
6484
  goog.debug.DivConsole.prototype.clear = function() {
5874
- this.element_.innerHTML = "";
6485
+ this.element_ && goog.dom.safe.setInnerHtml(this.element_, goog.html.SafeHtml.EMPTY);
5875
6486
  };
5876
6487
  goog.log = {};
5877
6488
  goog.log.ENABLED = goog.debug.LOGGING_ENABLED;
@@ -5926,7 +6537,7 @@ goog.userAgent.product.init_ = function() {
5926
6537
  goog.userAgent.product.detectedChrome_ = !1;
5927
6538
  goog.userAgent.product.detectedSafari_ = !1;
5928
6539
  var a = goog.userAgent.getUserAgentString();
5929
- a && (-1 != a.indexOf("Firefox") ? goog.userAgent.product.detectedFirefox_ = !0 : -1 != a.indexOf("Camino") ? goog.userAgent.product.detectedCamino_ = !0 : -1 != a.indexOf("iPhone") || -1 != a.indexOf("iPod") ? goog.userAgent.product.detectedIphone_ = !0 : -1 != a.indexOf("iPad") ? goog.userAgent.product.detectedIpad_ = !0 : -1 != a.indexOf("Chrome") ? goog.userAgent.product.detectedChrome_ = !0 : -1 != a.indexOf("Android") ? goog.userAgent.product.detectedAndroid_ = !0 : -1 != a.indexOf("Safari") &&
6540
+ a && (-1 != a.indexOf("Firefox") ? goog.userAgent.product.detectedFirefox_ = !0 : -1 != a.indexOf("Camino") ? goog.userAgent.product.detectedCamino_ = !0 : -1 != a.indexOf("iPad") ? goog.userAgent.product.detectedIpad_ = !0 : -1 != a.indexOf("iPhone") || -1 != a.indexOf("iPod") ? goog.userAgent.product.detectedIphone_ = !0 : -1 != a.indexOf("Chrome") ? goog.userAgent.product.detectedChrome_ = !0 : -1 != a.indexOf("Android") ? goog.userAgent.product.detectedAndroid_ = !0 : -1 != a.indexOf("Safari") &&
5930
6541
  (goog.userAgent.product.detectedSafari_ = !0));
5931
6542
  };
5932
6543
  goog.userAgent.product.PRODUCT_KNOWN_ || goog.userAgent.product.init_();