@unvired/cordova-plugin-unvired-electron-db 0.0.36

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,375 @@
1
+ //#region Database Apis
2
+
3
+ const DBType = {
4
+ AppDb: "AppDb",
5
+ FrameworkDb: "FrameworkDb"
6
+ }
7
+
8
+ module.exports.create = async function (sucessCallback, errorCallback, options) {
9
+ const userId = options[0].userId
10
+ const appName = options[0].appName
11
+
12
+ if (userId == undefined || userId == null || userId == "") {
13
+ errorCallback("userId is required")
14
+ return;
15
+ }
16
+ try {
17
+ let dbCreationResponse = await webDb.initialize(userId);
18
+ sucessCallback(dbCreationResponse);
19
+ }
20
+ catch (err) {
21
+ errorCallback(err);
22
+ }
23
+ };
24
+
25
+ // Execute raw query without returned result
26
+ module.exports.execute = async function (sucessCallback, errorCallback, options) {
27
+ const dbType = options[0].dbType
28
+ const query = options[0].query;
29
+ try {
30
+ const db = dbType == DBType.FrameworkDb ? webDb.fwDb : webDb.appDb;
31
+
32
+ if (query.toUpperCase().includes("SELECT")) {
33
+ let rows = [];
34
+ var stmt = db.prepare(query);
35
+ while (stmt.step()) {
36
+ var row = stmt.getAsObject();
37
+ rows.push(row);
38
+ }
39
+ stmt.free();
40
+ sucessCallback(rows);
41
+ } else {
42
+ // Parse query and convert to prepared statement with bound values
43
+ const parsedQuery = webDb.parseQueryToPrepared(query);
44
+ if (parsedQuery.isPrepared) {
45
+ var stmt = db.prepare(parsedQuery.query);
46
+ stmt.run(parsedQuery.values);
47
+ stmt.free();
48
+ } else {
49
+ // Fallback to exec for queries without parameters
50
+ db.exec(query);
51
+ }
52
+ sucessCallback("Success");
53
+ }
54
+ }
55
+ catch (err) {
56
+ errorCallback(err);
57
+ }
58
+ };
59
+
60
+ // Execute raw query without returned result
61
+ module.exports.close = async function (sucessCallback, errorCallback, options) {
62
+ try {
63
+ let fwDbResult = await webDb.fwDb.close();
64
+ let appDbResult = await webDb.appDb.close();
65
+ sucessCallback(true);
66
+ }
67
+ catch (err) {
68
+ errorCallback(err);
69
+ }
70
+ };
71
+
72
+ module.exports.saveWebDB = async function(successCallback, errorCallback, options) {
73
+ const userId = options[0].userId
74
+ if (userId == undefined || userId == null || userId == "") {
75
+ errorCallback("userId is required")
76
+ return;
77
+
78
+ }
79
+ if (window.unvired_db_worker) {
80
+ await window.unvired_db_worker.saveWebDb(userId + "_fw_db", webDb.fwDb.export(), "fwData");
81
+ await window.unvired_db_worker.saveWebDb(userId + "_app_db", webDb.appDb.export(), "appData");
82
+ }
83
+ else {
84
+ console.error('Could not save the data in indexedDB because the script: unvired_db_worker is not loaded. Please make sure that this script is loaded in your application.')
85
+ }
86
+ }
87
+
88
+ // Execute raw query without returned result
89
+ module.exports.getDBFilePath = async function (sucessCallback, errorCallback, options) {
90
+ sucessCallback("");
91
+ };
92
+
93
+ // Execute raw query without returned result
94
+ module.exports.getUserDirectoryPath = async function (sucessCallback, errorCallback, options) {
95
+ sucessCallback("");
96
+ };
97
+
98
+ // Delete user-specific databases (folders)
99
+ module.exports.deleteUserData = async function (successCallback, errorCallback, options) {
100
+ const userId = options[0].userId;
101
+ if (userId == undefined || userId == null || userId == "") {
102
+ errorCallback("userId is required");
103
+ return;
104
+ }
105
+ try {
106
+ webDb.fwDb.close()
107
+ webDb.appDb.close()
108
+ webDb.fwDb = null
109
+ webDb.appDb = null
110
+ // Delete Framework DB
111
+ await new Promise((resolve, reject) => {
112
+ const fwDbDeleteRequest = window.indexedDB.deleteDatabase(userId + "_fw_db");
113
+ fwDbDeleteRequest.onsuccess = function() { resolve(); };
114
+ fwDbDeleteRequest.onerror = function(event) { reject(event); };
115
+ fwDbDeleteRequest.onblocked = function() { reject("Delete blocked for fwDb"); };
116
+ });
117
+ // Delete App DB
118
+ await new Promise((resolve, reject) => {
119
+ const appDbDeleteRequest = window.indexedDB.deleteDatabase(userId + "_app_db");
120
+ appDbDeleteRequest.onsuccess = function() { resolve(); };
121
+ appDbDeleteRequest.onerror = function(event) { reject(event); };
122
+ appDbDeleteRequest.onblocked = function() { reject("Delete blocked for appDb"); };
123
+ });
124
+ successCallback(true);
125
+ } catch (err) {
126
+ errorCallback(err);
127
+ }
128
+ };
129
+
130
+ //#endregion
131
+
132
+
133
+ //#region WebDb Module
134
+
135
+ var webDb = /** @class */ (function () {
136
+ function webDb() { }
137
+
138
+ webDb.initialize = async function (userId) {
139
+ var initSqlJs = window.initSqlJs;
140
+ config = {
141
+ locateFile: filename => "assets/js/sql-wasm.wasm"
142
+ };
143
+ try {
144
+ let SQL = await initSqlJs(config);
145
+ if (webDb.fwDb == null) {
146
+ webDb.fwDb = new SQL.Database();
147
+ // Set PRAGMA for framework database
148
+ webDb.fwDb.run("PRAGMA journal_mode = WAL;");
149
+ webDb.fwDb.run("PRAGMA read_uncommitted = 1;");
150
+ await webDb.populateWebDb(SQL, true, userId);
151
+ }
152
+ if (webDb.appDb == null) {
153
+ webDb.appDb = new SQL.Database();
154
+ // Set PRAGMA for app database
155
+ webDb.appDb.run("PRAGMA journal_mode = WAL;");
156
+ webDb.appDb.run("PRAGMA read_uncommitted = 1;");
157
+ webDb.appDb.run("PRAGMA foreign_keys = ON;");
158
+ await webDb.populateWebDb(SQL, false, userId);
159
+ }
160
+ return "DB Created Successfully";
161
+ }
162
+ catch (err) {
163
+ throw err;
164
+ }
165
+ };
166
+
167
+ webDb.populateWebDb = async function (SQL, isFwDb, userId) {
168
+ return new Promise((resolve, reject) => {
169
+ var db;
170
+ var request = isFwDb ? window.indexedDB.open(userId + "_fw_db") : window.indexedDB.open(userId + "_app_db");
171
+ var storeName = isFwDb ? "fwData" : "appData";
172
+ request.onupgradeneeded = function (event) {
173
+ db = event.target.result;
174
+ db.createObjectStore(storeName, { keyPath: "id" });
175
+ resolve();
176
+ };
177
+ request.onerror = function (event) {
178
+ console.log("The database failed to open: " + event);
179
+ resolve();
180
+ };
181
+ request.onsuccess = function (event) {
182
+ db = request.result;
183
+ if (!db.objectStoreNames.contains(storeName)) {
184
+ resolve();
185
+ return;
186
+ }
187
+
188
+ db.onversionchange = function() {
189
+ console.log('Unvired Plugin Proxy: Received version change event, we would also this receive event when an attempt is made to delete the database. Closing the database connection in order to facilitate the process.')
190
+ db.close()
191
+ }
192
+
193
+ var transaction = db.transaction([storeName]);
194
+ var objectStore = transaction.objectStore(storeName);
195
+ var dataRequest = objectStore.get(1);
196
+
197
+ dataRequest.onerror = function (event) {
198
+ console.log("Unable to read " + storeName + " index DB table");
199
+ resolve();
200
+ };
201
+ dataRequest.onsuccess = function (event) {
202
+ if (dataRequest.result) {
203
+ if (isFwDb) {
204
+ webDb.fwDb = new SQL.Database(dataRequest.result.data);
205
+ } else {
206
+ webDb.appDb = new SQL.Database(dataRequest.result.data);
207
+ }
208
+ } else {
209
+ console.log("Error while populatig web db - no db found in index DB");
210
+ }
211
+ resolve();
212
+ };
213
+ };
214
+ });
215
+ };
216
+
217
+ // Parse SQL query and convert to prepared statement with bound values
218
+ webDb.parseQueryToPrepared = function (query) {
219
+ try {
220
+ // DDL statements (CREATE, DROP, ALTER) and other statements that don't support parameters
221
+ const queryUpper = query.trim().toUpperCase();
222
+
223
+ // If query already contains positional placeholders, don't attempt to re-parameterize it.
224
+ if (query.indexOf('?') !== -1) {
225
+ return { isPrepared: false, query: query, values: [] };
226
+ }
227
+ if (queryUpper.startsWith('CREATE') ||
228
+ queryUpper.startsWith('DROP') ||
229
+ queryUpper.startsWith('ALTER') ||
230
+ queryUpper.startsWith('PRAGMA') ||
231
+ queryUpper.startsWith('BEGIN') ||
232
+ queryUpper.startsWith('COMMIT') ||
233
+ queryUpper.startsWith('ROLLBACK') ||
234
+ queryUpper.startsWith('SAVEPOINT') ||
235
+ queryUpper.startsWith('RELEASE') ||
236
+ queryUpper.startsWith('BEGIN TRANSACTION') ||
237
+ queryUpper.startsWith('COMMIT TRANSACTION') ||
238
+ queryUpper.startsWith('ROLLBACK TRANSACTION') ||
239
+ queryUpper.startsWith('BEGIN IMMEDIATE') ||
240
+ queryUpper.startsWith('COMMIT IMMEDIATE') ||
241
+ queryUpper.startsWith('ROLLBACK IMMEDIATE') ||
242
+ queryUpper.startsWith('BEGIN EXCLUSIVE') ||
243
+ queryUpper.startsWith('COMMIT EXCLUSIVE') ||
244
+ queryUpper.startsWith('ROLLBACK EXCLUSIVE')
245
+ ) {
246
+ // DDL/transactional statements and similar should not be parameterized.
247
+ // Note: INSERT ... VALUES will be parameterized below so large
248
+ // string/numeric literals (eg. base64 blobs) can be bound safely.
249
+ return { isPrepared: false, query: query, values: [] };
250
+ }
251
+
252
+
253
+ // Check if query contains string literals or numeric values that can be parameterized
254
+ const hasStringLiterals = /'[^']*'/.test(query);
255
+ const hasNumericLiterals = /\b\d+\.?\d*\b/.test(query);
256
+
257
+ if (!hasStringLiterals && !hasNumericLiterals) {
258
+ return { isPrepared: false, query: query, values: [] };
259
+ }
260
+
261
+ // We'll scan the original query left-to-right and replace literals with
262
+ // '?' while pushing values in the exact same order so binding works.
263
+ // Use a manual scanner instead of a complex global regex to avoid
264
+ // catastrophic backtracking on very long literals (base64, JSON, etc.).
265
+ const values = [];
266
+ let preparedQuery = '';
267
+ let lastIndex = 0;
268
+ const len = query.length;
269
+
270
+ const isDigit = (ch) => ch >= '0' && ch <= '9';
271
+ const isWordChar = (ch) => /[A-Za-z0-9_]/.test(ch);
272
+
273
+ let i = 0;
274
+ while (i < len) {
275
+ const ch = query.charAt(i);
276
+
277
+ if (ch === "'") {
278
+ // start of quoted string; find the closing quote handling escaped ''
279
+ let j = i + 1;
280
+ let inner = '';
281
+ let closed = false;
282
+ while (j < len) {
283
+ const cj = query.charAt(j);
284
+ if (cj === "'") {
285
+ // escaped quote?
286
+ if (j + 1 < len && query.charAt(j + 1) === "'") {
287
+ inner += "'"; // represent escaped single-quote
288
+ j += 2;
289
+ continue;
290
+ } else {
291
+ closed = true;
292
+ break; // closing quote at j
293
+ }
294
+ } else {
295
+ inner += cj;
296
+ j++;
297
+ }
298
+ }
299
+
300
+ if (!closed) {
301
+ // Unmatched quote; bail out to safe fallback to avoid errors
302
+ return { isPrepared: false, query: query, values: [] };
303
+ }
304
+
305
+ // Append text before this literal
306
+ preparedQuery += query.slice(lastIndex, i);
307
+
308
+ if (inner.toUpperCase() === 'NULL') {
309
+ // keep quoted NULL as-is
310
+ preparedQuery += query.slice(i, j + 1);
311
+ } else {
312
+ values.push(inner);
313
+ preparedQuery += '?';
314
+ }
315
+
316
+ lastIndex = j + 1;
317
+ i = j + 1;
318
+ continue;
319
+ }
320
+
321
+ // Numeric literal detection: standalone number (digits with optional single dot)
322
+ if (isDigit(ch)) {
323
+ let j = i;
324
+ while (j < len) {
325
+ const cj = query.charAt(j);
326
+ if ((cj >= '0' && cj <= '9') || cj === '.') {
327
+ j++;
328
+ } else {
329
+ break;
330
+ }
331
+ }
332
+
333
+ // ensure it's not part of an identifier
334
+ const beforeChar = i > 0 ? query.charAt(i - 1) : '';
335
+ const afterChar = j < len ? query.charAt(j) : '';
336
+ if (isWordChar(beforeChar) || isWordChar(afterChar)) {
337
+ // not a standalone number, skip it
338
+ i = j;
339
+ continue;
340
+ }
341
+
342
+ // Append text before this literal
343
+ preparedQuery += query.slice(lastIndex, i);
344
+ const numStr = query.slice(i, j);
345
+ values.push(parseFloat(numStr));
346
+ preparedQuery += '?';
347
+ lastIndex = j;
348
+ i = j;
349
+ continue;
350
+ }
351
+
352
+ i++;
353
+ }
354
+
355
+ // Append the rest of the query
356
+ preparedQuery += query.slice(lastIndex);
357
+
358
+ // If we didn't find any bindable literals, don't treat as prepared
359
+ if (values.length === 0) {
360
+ return { isPrepared: false, query: query, values: [] };
361
+ }
362
+
363
+ return { isPrepared: true, query: preparedQuery, values: values };
364
+ } catch (err) {
365
+ console.warn('Error parsing query to prepared statement:', err);
366
+ return { isPrepared: false, query: query, values: [] };
367
+ }
368
+ };
369
+
370
+ return webDb;
371
+ }());
372
+
373
+ //#endregion
374
+
375
+ require('cordova/exec/proxy').add('UnviredDB', module.exports);
@@ -0,0 +1,17 @@
1
+ /*!
2
+ * Bootstrap v4.0.0-alpha.6 (https://getbootstrap.com)
3
+ * Copyright 2011-2017 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
4
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
5
+ */
6
+ if ("undefined" == typeof jQuery) throw new Error("Bootstrap's JavaScript requires jQuery. jQuery must be included before Bootstrap's JavaScript."); +function (t) { var e = t.fn.jquery.split(" ")[0].split("."); if (e[0] < 2 && e[1] < 9 || 1 == e[0] && 9 == e[1] && e[2] < 1 || e[0] >= 4) throw new Error("Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0") }(jQuery), +function () {
7
+ function t(t, e) { if (!t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return !e || "object" != typeof e && "function" != typeof e ? t : e } function e(t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function, not " + typeof e); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, enumerable: !1, writable: !0, configurable: !0 } }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e) } function n(t, e) { if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function") } var i = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (t) { return typeof t } : function (t) { return t && "function" == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype ? "symbol" : typeof t }, o = function () { function t(t, e) { for (var n = 0; n < e.length; n++) { var i = e[n]; i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(t, i.key, i) } } return function (e, n, i) { return n && t(e.prototype, n), i && t(e, i), e } }(), r = function (t) { function e(t) { return {}.toString.call(t).match(/\s([a-zA-Z]+)/)[1].toLowerCase() } function n(t) { return (t[0] || t).nodeType } function i() { return { bindType: a.end, delegateType: a.end, handle: function (e) { if (t(e.target).is(this)) return e.handleObj.handler.apply(this, arguments) } } } function o() { if (window.QUnit) return !1; var t = document.createElement("bootstrap"); for (var e in h) if (void 0 !== t.style[e]) return { end: h[e] }; return !1 } function r(e) { var n = this, i = !1; return t(this).one(c.TRANSITION_END, function () { i = !0 }), setTimeout(function () { i || c.triggerTransitionEnd(n) }, e), this } function s() { a = o(), t.fn.emulateTransitionEnd = r, c.supportsTransitionEnd() && (t.event.special[c.TRANSITION_END] = i()) } var a = !1, l = 1e6, h = { WebkitTransition: "webkitTransitionEnd", MozTransition: "transitionend", OTransition: "oTransitionEnd otransitionend", transition: "transitionend" }, c = { TRANSITION_END: "bsTransitionEnd", getUID: function (t) { do t += ~~(Math.random() * l); while (document.getElementById(t)); return t }, getSelectorFromElement: function (t) { var e = t.getAttribute("data-target"); return e || (e = t.getAttribute("href") || "", e = /^#[a-z]/i.test(e) ? e : null), e }, reflow: function (t) { return t.offsetHeight }, triggerTransitionEnd: function (e) { t(e).trigger(a.end) }, supportsTransitionEnd: function () { return Boolean(a) }, typeCheckConfig: function (t, i, o) { for (var r in o) if (o.hasOwnProperty(r)) { var s = o[r], a = i[r], l = a && n(a) ? "element" : e(a); if (!new RegExp(s).test(l)) throw new Error(t.toUpperCase() + ": " + ('Option "' + r + '" provided type "' + l + '" ') + ('but expected type "' + s + '".')) } } }; return s(), c }(jQuery), s = (function (t) { var e = "alert", i = "4.0.0-alpha.6", s = "bs.alert", a = "." + s, l = ".data-api", h = t.fn[e], c = 150, u = { DISMISS: '[data-dismiss="alert"]' }, d = { CLOSE: "close" + a, CLOSED: "closed" + a, CLICK_DATA_API: "click" + a + l }, f = { ALERT: "alert", FADE: "fade", SHOW: "show" }, _ = function () { function e(t) { n(this, e), this._element = t } return e.prototype.close = function (t) { t = t || this._element; var e = this._getRootElement(t), n = this._triggerCloseEvent(e); n.isDefaultPrevented() || this._removeElement(e) }, e.prototype.dispose = function () { t.removeData(this._element, s), this._element = null }, e.prototype._getRootElement = function (e) { var n = r.getSelectorFromElement(e), i = !1; return n && (i = t(n)[0]), i || (i = t(e).closest("." + f.ALERT)[0]), i }, e.prototype._triggerCloseEvent = function (e) { var n = t.Event(d.CLOSE); return t(e).trigger(n), n }, e.prototype._removeElement = function (e) { var n = this; return t(e).removeClass(f.SHOW), r.supportsTransitionEnd() && t(e).hasClass(f.FADE) ? void t(e).one(r.TRANSITION_END, function (t) { return n._destroyElement(e, t) }).emulateTransitionEnd(c) : void this._destroyElement(e) }, e.prototype._destroyElement = function (e) { t(e).detach().trigger(d.CLOSED).remove() }, e._jQueryInterface = function (n) { return this.each(function () { var i = t(this), o = i.data(s); o || (o = new e(this), i.data(s, o)), "close" === n && o[n](this) }) }, e._handleDismiss = function (t) { return function (e) { e && e.preventDefault(), t.close(this) } }, o(e, null, [{ key: "VERSION", get: function () { return i } }]), e }(); return t(document).on(d.CLICK_DATA_API, u.DISMISS, _._handleDismiss(new _)), t.fn[e] = _._jQueryInterface, t.fn[e].Constructor = _, t.fn[e].noConflict = function () { return t.fn[e] = h, _._jQueryInterface }, _ }(jQuery), function (t) { var e = "button", i = "4.0.0-alpha.6", r = "bs.button", s = "." + r, a = ".data-api", l = t.fn[e], h = { ACTIVE: "active", BUTTON: "btn", FOCUS: "focus" }, c = { DATA_TOGGLE_CARROT: '[data-toggle^="button"]', DATA_TOGGLE: '[data-toggle="buttons"]', INPUT: "input", ACTIVE: ".active", BUTTON: ".btn" }, u = { CLICK_DATA_API: "click" + s + a, FOCUS_BLUR_DATA_API: "focus" + s + a + " " + ("blur" + s + a) }, d = function () { function e(t) { n(this, e), this._element = t } return e.prototype.toggle = function () { var e = !0, n = t(this._element).closest(c.DATA_TOGGLE)[0]; if (n) { var i = t(this._element).find(c.INPUT)[0]; if (i) { if ("radio" === i.type) if (i.checked && t(this._element).hasClass(h.ACTIVE)) e = !1; else { var o = t(n).find(c.ACTIVE)[0]; o && t(o).removeClass(h.ACTIVE) } e && (i.checked = !t(this._element).hasClass(h.ACTIVE), t(i).trigger("change")), i.focus() } } this._element.setAttribute("aria-pressed", !t(this._element).hasClass(h.ACTIVE)), e && t(this._element).toggleClass(h.ACTIVE) }, e.prototype.dispose = function () { t.removeData(this._element, r), this._element = null }, e._jQueryInterface = function (n) { return this.each(function () { var i = t(this).data(r); i || (i = new e(this), t(this).data(r, i)), "toggle" === n && i[n]() }) }, o(e, null, [{ key: "VERSION", get: function () { return i } }]), e }(); return t(document).on(u.CLICK_DATA_API, c.DATA_TOGGLE_CARROT, function (e) { e.preventDefault(); var n = e.target; t(n).hasClass(h.BUTTON) || (n = t(n).closest(c.BUTTON)), d._jQueryInterface.call(t(n), "toggle") }).on(u.FOCUS_BLUR_DATA_API, c.DATA_TOGGLE_CARROT, function (e) { var n = t(e.target).closest(c.BUTTON)[0]; t(n).toggleClass(h.FOCUS, /^focus(in)?$/.test(e.type)) }), t.fn[e] = d._jQueryInterface, t.fn[e].Constructor = d, t.fn[e].noConflict = function () { return t.fn[e] = l, d._jQueryInterface }, d }(jQuery), function (t) { var e = "carousel", s = "4.0.0-alpha.6", a = "bs.carousel", l = "." + a, h = ".data-api", c = t.fn[e], u = 600, d = 37, f = 39, _ = { interval: 5e3, keyboard: !0, slide: !1, pause: "hover", wrap: !0 }, g = { interval: "(number|boolean)", keyboard: "boolean", slide: "(boolean|string)", pause: "(string|boolean)", wrap: "boolean" }, p = { NEXT: "next", PREV: "prev", LEFT: "left", RIGHT: "right" }, m = { SLIDE: "slide" + l, SLID: "slid" + l, KEYDOWN: "keydown" + l, MOUSEENTER: "mouseenter" + l, MOUSELEAVE: "mouseleave" + l, LOAD_DATA_API: "load" + l + h, CLICK_DATA_API: "click" + l + h }, E = { CAROUSEL: "carousel", ACTIVE: "active", SLIDE: "slide", RIGHT: "carousel-item-right", LEFT: "carousel-item-left", NEXT: "carousel-item-next", PREV: "carousel-item-prev", ITEM: "carousel-item" }, v = { ACTIVE: ".active", ACTIVE_ITEM: ".active.carousel-item", ITEM: ".carousel-item", NEXT_PREV: ".carousel-item-next, .carousel-item-prev", INDICATORS: ".carousel-indicators", DATA_SLIDE: "[data-slide], [data-slide-to]", DATA_RIDE: '[data-ride="carousel"]' }, T = function () { function h(e, i) { n(this, h), this._items = null, this._interval = null, this._activeElement = null, this._isPaused = !1, this._isSliding = !1, this._config = this._getConfig(i), this._element = t(e)[0], this._indicatorsElement = t(this._element).find(v.INDICATORS)[0], this._addEventListeners() } return h.prototype.next = function () { if (this._isSliding) throw new Error("Carousel is sliding"); this._slide(p.NEXT) }, h.prototype.nextWhenVisible = function () { document.hidden || this.next() }, h.prototype.prev = function () { if (this._isSliding) throw new Error("Carousel is sliding"); this._slide(p.PREVIOUS) }, h.prototype.pause = function (e) { e || (this._isPaused = !0), t(this._element).find(v.NEXT_PREV)[0] && r.supportsTransitionEnd() && (r.triggerTransitionEnd(this._element), this.cycle(!0)), clearInterval(this._interval), this._interval = null }, h.prototype.cycle = function (t) { t || (this._isPaused = !1), this._interval && (clearInterval(this._interval), this._interval = null), this._config.interval && !this._isPaused && (this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval)) }, h.prototype.to = function (e) { var n = this; this._activeElement = t(this._element).find(v.ACTIVE_ITEM)[0]; var i = this._getItemIndex(this._activeElement); if (!(e > this._items.length - 1 || e < 0)) { if (this._isSliding) return void t(this._element).one(m.SLID, function () { return n.to(e) }); if (i === e) return this.pause(), void this.cycle(); var o = e > i ? p.NEXT : p.PREVIOUS; this._slide(o, this._items[e]) } }, h.prototype.dispose = function () { t(this._element).off(l), t.removeData(this._element, a), this._items = null, this._config = null, this._element = null, this._interval = null, this._isPaused = null, this._isSliding = null, this._activeElement = null, this._indicatorsElement = null }, h.prototype._getConfig = function (n) { return n = t.extend({}, _, n), r.typeCheckConfig(e, n, g), n }, h.prototype._addEventListeners = function () { var e = this; this._config.keyboard && t(this._element).on(m.KEYDOWN, function (t) { return e._keydown(t) }), "hover" !== this._config.pause || "ontouchstart" in document.documentElement || t(this._element).on(m.MOUSEENTER, function (t) { return e.pause(t) }).on(m.MOUSELEAVE, function (t) { return e.cycle(t) }) }, h.prototype._keydown = function (t) { if (!/input|textarea/i.test(t.target.tagName)) switch (t.which) { case d: t.preventDefault(), this.prev(); break; case f: t.preventDefault(), this.next(); break; default: return } }, h.prototype._getItemIndex = function (e) { return this._items = t.makeArray(t(e).parent().find(v.ITEM)), this._items.indexOf(e) }, h.prototype._getItemByDirection = function (t, e) { var n = t === p.NEXT, i = t === p.PREVIOUS, o = this._getItemIndex(e), r = this._items.length - 1, s = i && 0 === o || n && o === r; if (s && !this._config.wrap) return e; var a = t === p.PREVIOUS ? -1 : 1, l = (o + a) % this._items.length; return l === -1 ? this._items[this._items.length - 1] : this._items[l] }, h.prototype._triggerSlideEvent = function (e, n) { var i = t.Event(m.SLIDE, { relatedTarget: e, direction: n }); return t(this._element).trigger(i), i }, h.prototype._setActiveIndicatorElement = function (e) { if (this._indicatorsElement) { t(this._indicatorsElement).find(v.ACTIVE).removeClass(E.ACTIVE); var n = this._indicatorsElement.children[this._getItemIndex(e)]; n && t(n).addClass(E.ACTIVE) } }, h.prototype._slide = function (e, n) { var i = this, o = t(this._element).find(v.ACTIVE_ITEM)[0], s = n || o && this._getItemByDirection(e, o), a = Boolean(this._interval), l = void 0, h = void 0, c = void 0; if (e === p.NEXT ? (l = E.LEFT, h = E.NEXT, c = p.LEFT) : (l = E.RIGHT, h = E.PREV, c = p.RIGHT), s && t(s).hasClass(E.ACTIVE)) return void (this._isSliding = !1); var d = this._triggerSlideEvent(s, c); if (!d.isDefaultPrevented() && o && s) { this._isSliding = !0, a && this.pause(), this._setActiveIndicatorElement(s); var f = t.Event(m.SLID, { relatedTarget: s, direction: c }); r.supportsTransitionEnd() && t(this._element).hasClass(E.SLIDE) ? (t(s).addClass(h), r.reflow(s), t(o).addClass(l), t(s).addClass(l), t(o).one(r.TRANSITION_END, function () { t(s).removeClass(l + " " + h).addClass(E.ACTIVE), t(o).removeClass(E.ACTIVE + " " + h + " " + l), i._isSliding = !1, setTimeout(function () { return t(i._element).trigger(f) }, 0) }).emulateTransitionEnd(u)) : (t(o).removeClass(E.ACTIVE), t(s).addClass(E.ACTIVE), this._isSliding = !1, t(this._element).trigger(f)), a && this.cycle() } }, h._jQueryInterface = function (e) { return this.each(function () { var n = t(this).data(a), o = t.extend({}, _, t(this).data()); "object" === ("undefined" == typeof e ? "undefined" : i(e)) && t.extend(o, e); var r = "string" == typeof e ? e : o.slide; if (n || (n = new h(this, o), t(this).data(a, n)), "number" == typeof e) n.to(e); else if ("string" == typeof r) { if (void 0 === n[r]) throw new Error('No method named "' + r + '"'); n[r]() } else o.interval && (n.pause(), n.cycle()) }) }, h._dataApiClickHandler = function (e) { var n = r.getSelectorFromElement(this); if (n) { var i = t(n)[0]; if (i && t(i).hasClass(E.CAROUSEL)) { var o = t.extend({}, t(i).data(), t(this).data()), s = this.getAttribute("data-slide-to"); s && (o.interval = !1), h._jQueryInterface.call(t(i), o), s && t(i).data(a).to(s), e.preventDefault() } } }, o(h, null, [{ key: "VERSION", get: function () { return s } }, { key: "Default", get: function () { return _ } }]), h }(); return t(document).on(m.CLICK_DATA_API, v.DATA_SLIDE, T._dataApiClickHandler), t(window).on(m.LOAD_DATA_API, function () { t(v.DATA_RIDE).each(function () { var e = t(this); T._jQueryInterface.call(e, e.data()) }) }), t.fn[e] = T._jQueryInterface, t.fn[e].Constructor = T, t.fn[e].noConflict = function () { return t.fn[e] = c, T._jQueryInterface }, T }(jQuery), function (t) { var e = "collapse", s = "4.0.0-alpha.6", a = "bs.collapse", l = "." + a, h = ".data-api", c = t.fn[e], u = 600, d = { toggle: !0, parent: "" }, f = { toggle: "boolean", parent: "string" }, _ = { SHOW: "show" + l, SHOWN: "shown" + l, HIDE: "hide" + l, HIDDEN: "hidden" + l, CLICK_DATA_API: "click" + l + h }, g = { SHOW: "show", COLLAPSE: "collapse", COLLAPSING: "collapsing", COLLAPSED: "collapsed" }, p = { WIDTH: "width", HEIGHT: "height" }, m = { ACTIVES: ".card > .show, .card > .collapsing", DATA_TOGGLE: '[data-toggle="collapse"]' }, E = function () { function l(e, i) { n(this, l), this._isTransitioning = !1, this._element = e, this._config = this._getConfig(i), this._triggerArray = t.makeArray(t('[data-toggle="collapse"][href="#' + e.id + '"],' + ('[data-toggle="collapse"][data-target="#' + e.id + '"]'))), this._parent = this._config.parent ? this._getParent() : null, this._config.parent || this._addAriaAndCollapsedClass(this._element, this._triggerArray), this._config.toggle && this.toggle() } return l.prototype.toggle = function () { t(this._element).hasClass(g.SHOW) ? this.hide() : this.show() }, l.prototype.show = function () { var e = this; if (this._isTransitioning) throw new Error("Collapse is transitioning"); if (!t(this._element).hasClass(g.SHOW)) { var n = void 0, i = void 0; if (this._parent && (n = t.makeArray(t(this._parent).find(m.ACTIVES)), n.length || (n = null)), !(n && (i = t(n).data(a), i && i._isTransitioning))) { var o = t.Event(_.SHOW); if (t(this._element).trigger(o), !o.isDefaultPrevented()) { n && (l._jQueryInterface.call(t(n), "hide"), i || t(n).data(a, null)); var s = this._getDimension(); t(this._element).removeClass(g.COLLAPSE).addClass(g.COLLAPSING), this._element.style[s] = 0, this._element.setAttribute("aria-expanded", !0), this._triggerArray.length && t(this._triggerArray).removeClass(g.COLLAPSED).attr("aria-expanded", !0), this.setTransitioning(!0); var h = function () { t(e._element).removeClass(g.COLLAPSING).addClass(g.COLLAPSE).addClass(g.SHOW), e._element.style[s] = "", e.setTransitioning(!1), t(e._element).trigger(_.SHOWN) }; if (!r.supportsTransitionEnd()) return void h(); var c = s[0].toUpperCase() + s.slice(1), d = "scroll" + c; t(this._element).one(r.TRANSITION_END, h).emulateTransitionEnd(u), this._element.style[s] = this._element[d] + "px" } } } }, l.prototype.hide = function () { var e = this; if (this._isTransitioning) throw new Error("Collapse is transitioning"); if (t(this._element).hasClass(g.SHOW)) { var n = t.Event(_.HIDE); if (t(this._element).trigger(n), !n.isDefaultPrevented()) { var i = this._getDimension(), o = i === p.WIDTH ? "offsetWidth" : "offsetHeight"; this._element.style[i] = this._element[o] + "px", r.reflow(this._element), t(this._element).addClass(g.COLLAPSING).removeClass(g.COLLAPSE).removeClass(g.SHOW), this._element.setAttribute("aria-expanded", !1), this._triggerArray.length && t(this._triggerArray).addClass(g.COLLAPSED).attr("aria-expanded", !1), this.setTransitioning(!0); var s = function () { e.setTransitioning(!1), t(e._element).removeClass(g.COLLAPSING).addClass(g.COLLAPSE).trigger(_.HIDDEN) }; return this._element.style[i] = "", r.supportsTransitionEnd() ? void t(this._element).one(r.TRANSITION_END, s).emulateTransitionEnd(u) : void s() } } }, l.prototype.setTransitioning = function (t) { this._isTransitioning = t }, l.prototype.dispose = function () { t.removeData(this._element, a), this._config = null, this._parent = null, this._element = null, this._triggerArray = null, this._isTransitioning = null }, l.prototype._getConfig = function (n) { return n = t.extend({}, d, n), n.toggle = Boolean(n.toggle), r.typeCheckConfig(e, n, f), n }, l.prototype._getDimension = function () { var e = t(this._element).hasClass(p.WIDTH); return e ? p.WIDTH : p.HEIGHT }, l.prototype._getParent = function () { var e = this, n = t(this._config.parent)[0], i = '[data-toggle="collapse"][data-parent="' + this._config.parent + '"]'; return t(n).find(i).each(function (t, n) { e._addAriaAndCollapsedClass(l._getTargetFromElement(n), [n]) }), n }, l.prototype._addAriaAndCollapsedClass = function (e, n) { if (e) { var i = t(e).hasClass(g.SHOW); e.setAttribute("aria-expanded", i), n.length && t(n).toggleClass(g.COLLAPSED, !i).attr("aria-expanded", i) } }, l._getTargetFromElement = function (e) { var n = r.getSelectorFromElement(e); return n ? t(n)[0] : null }, l._jQueryInterface = function (e) { return this.each(function () { var n = t(this), o = n.data(a), r = t.extend({}, d, n.data(), "object" === ("undefined" == typeof e ? "undefined" : i(e)) && e); if (!o && r.toggle && /show|hide/.test(e) && (r.toggle = !1), o || (o = new l(this, r), n.data(a, o)), "string" == typeof e) { if (void 0 === o[e]) throw new Error('No method named "' + e + '"'); o[e]() } }) }, o(l, null, [{ key: "VERSION", get: function () { return s } }, { key: "Default", get: function () { return d } }]), l }(); return t(document).on(_.CLICK_DATA_API, m.DATA_TOGGLE, function (e) { e.preventDefault(); var n = E._getTargetFromElement(this), i = t(n).data(a), o = i ? "toggle" : t(this).data(); E._jQueryInterface.call(t(n), o) }), t.fn[e] = E._jQueryInterface, t.fn[e].Constructor = E, t.fn[e].noConflict = function () { return t.fn[e] = c, E._jQueryInterface }, E }(jQuery), function (t) { var e = "dropdown", i = "4.0.0-alpha.6", s = "bs.dropdown", a = "." + s, l = ".data-api", h = t.fn[e], c = 27, u = 38, d = 40, f = 3, _ = { HIDE: "hide" + a, HIDDEN: "hidden" + a, SHOW: "show" + a, SHOWN: "shown" + a, CLICK: "click" + a, CLICK_DATA_API: "click" + a + l, FOCUSIN_DATA_API: "focusin" + a + l, KEYDOWN_DATA_API: "keydown" + a + l }, g = { BACKDROP: "dropdown-backdrop", DISABLED: "disabled", SHOW: "show" }, p = { BACKDROP: ".dropdown-backdrop", DATA_TOGGLE: '[data-toggle="dropdown"]', FORM_CHILD: ".dropdown form", ROLE_MENU: '[role="menu"]', ROLE_LISTBOX: '[role="listbox"]', NAVBAR_NAV: ".navbar-nav", VISIBLE_ITEMS: '[role="menu"] li:not(.disabled) a, [role="listbox"] li:not(.disabled) a' }, m = function () { function e(t) { n(this, e), this._element = t, this._addEventListeners() } return e.prototype.toggle = function () { if (this.disabled || t(this).hasClass(g.DISABLED)) return !1; var n = e._getParentFromElement(this), i = t(n).hasClass(g.SHOW); if (e._clearMenus(), i) return !1; if ("ontouchstart" in document.documentElement && !t(n).closest(p.NAVBAR_NAV).length) { var o = document.createElement("div"); o.className = g.BACKDROP, t(o).insertBefore(this), t(o).on("click", e._clearMenus) } var r = { relatedTarget: this }, s = t.Event(_.SHOW, r); return t(n).trigger(s), !s.isDefaultPrevented() && (this.focus(), this.setAttribute("aria-expanded", !0), t(n).toggleClass(g.SHOW), t(n).trigger(t.Event(_.SHOWN, r)), !1) }, e.prototype.dispose = function () { t.removeData(this._element, s), t(this._element).off(a), this._element = null }, e.prototype._addEventListeners = function () { t(this._element).on(_.CLICK, this.toggle) }, e._jQueryInterface = function (n) { return this.each(function () { var i = t(this).data(s); if (i || (i = new e(this), t(this).data(s, i)), "string" == typeof n) { if (void 0 === i[n]) throw new Error('No method named "' + n + '"'); i[n].call(this) } }) }, e._clearMenus = function (n) { if (!n || n.which !== f) { var i = t(p.BACKDROP)[0]; i && i.parentNode.removeChild(i); for (var o = t.makeArray(t(p.DATA_TOGGLE)), r = 0; r < o.length; r++) { var s = e._getParentFromElement(o[r]), a = { relatedTarget: o[r] }; if (t(s).hasClass(g.SHOW) && !(n && ("click" === n.type && /input|textarea/i.test(n.target.tagName) || "focusin" === n.type) && t.contains(s, n.target))) { var l = t.Event(_.HIDE, a); t(s).trigger(l), l.isDefaultPrevented() || (o[r].setAttribute("aria-expanded", "false"), t(s).removeClass(g.SHOW).trigger(t.Event(_.HIDDEN, a))) } } } }, e._getParentFromElement = function (e) { var n = void 0, i = r.getSelectorFromElement(e); return i && (n = t(i)[0]), n || e.parentNode }, e._dataApiKeydownHandler = function (n) { if (/(38|40|27|32)/.test(n.which) && !/input|textarea/i.test(n.target.tagName) && (n.preventDefault(), n.stopPropagation(), !this.disabled && !t(this).hasClass(g.DISABLED))) { var i = e._getParentFromElement(this), o = t(i).hasClass(g.SHOW); if (!o && n.which !== c || o && n.which === c) { if (n.which === c) { var r = t(i).find(p.DATA_TOGGLE)[0]; t(r).trigger("focus") } return void t(this).trigger("click") } var s = t(i).find(p.VISIBLE_ITEMS).get(); if (s.length) { var a = s.indexOf(n.target); n.which === u && a > 0 && a-- , n.which === d && a < s.length - 1 && a++ , a < 0 && (a = 0), s[a].focus() } } }, o(e, null, [{ key: "VERSION", get: function () { return i } }]), e }(); return t(document).on(_.KEYDOWN_DATA_API, p.DATA_TOGGLE, m._dataApiKeydownHandler).on(_.KEYDOWN_DATA_API, p.ROLE_MENU, m._dataApiKeydownHandler).on(_.KEYDOWN_DATA_API, p.ROLE_LISTBOX, m._dataApiKeydownHandler).on(_.CLICK_DATA_API + " " + _.FOCUSIN_DATA_API, m._clearMenus).on(_.CLICK_DATA_API, p.DATA_TOGGLE, m.prototype.toggle).on(_.CLICK_DATA_API, p.FORM_CHILD, function (t) { t.stopPropagation() }), t.fn[e] = m._jQueryInterface, t.fn[e].Constructor = m, t.fn[e].noConflict = function () { return t.fn[e] = h, m._jQueryInterface }, m }(jQuery), function (t) { var e = "modal", s = "4.0.0-alpha.6", a = "bs.modal", l = "." + a, h = ".data-api", c = t.fn[e], u = 300, d = 150, f = 27, _ = { backdrop: !0, keyboard: !0, focus: !0, show: !0 }, g = { backdrop: "(boolean|string)", keyboard: "boolean", focus: "boolean", show: "boolean" }, p = { HIDE: "hide" + l, HIDDEN: "hidden" + l, SHOW: "show" + l, SHOWN: "shown" + l, FOCUSIN: "focusin" + l, RESIZE: "resize" + l, CLICK_DISMISS: "click.dismiss" + l, KEYDOWN_DISMISS: "keydown.dismiss" + l, MOUSEUP_DISMISS: "mouseup.dismiss" + l, MOUSEDOWN_DISMISS: "mousedown.dismiss" + l, CLICK_DATA_API: "click" + l + h }, m = { SCROLLBAR_MEASURER: "modal-scrollbar-measure", BACKDROP: "modal-backdrop", OPEN: "modal-open", FADE: "fade", SHOW: "show" }, E = { DIALOG: ".modal-dialog", DATA_TOGGLE: '[data-toggle="modal"]', DATA_DISMISS: '[data-dismiss="modal"]', FIXED_CONTENT: ".fixed-top, .fixed-bottom, .is-fixed, .sticky-top" }, v = function () { function h(e, i) { n(this, h), this._config = this._getConfig(i), this._element = e, this._dialog = t(e).find(E.DIALOG)[0], this._backdrop = null, this._isShown = !1, this._isBodyOverflowing = !1, this._ignoreBackdropClick = !1, this._isTransitioning = !1, this._originalBodyPadding = 0, this._scrollbarWidth = 0 } return h.prototype.toggle = function (t) { return this._isShown ? this.hide() : this.show(t) }, h.prototype.show = function (e) { var n = this; if (this._isTransitioning) throw new Error("Modal is transitioning"); r.supportsTransitionEnd() && t(this._element).hasClass(m.FADE) && (this._isTransitioning = !0); var i = t.Event(p.SHOW, { relatedTarget: e }); t(this._element).trigger(i), this._isShown || i.isDefaultPrevented() || (this._isShown = !0, this._checkScrollbar(), this._setScrollbar(), t(document.body).addClass(m.OPEN), this._setEscapeEvent(), this._setResizeEvent(), t(this._element).on(p.CLICK_DISMISS, E.DATA_DISMISS, function (t) { return n.hide(t) }), t(this._dialog).on(p.MOUSEDOWN_DISMISS, function () { t(n._element).one(p.MOUSEUP_DISMISS, function (e) { t(e.target).is(n._element) && (n._ignoreBackdropClick = !0) }) }), this._showBackdrop(function () { return n._showElement(e) })) }, h.prototype.hide = function (e) { var n = this; if (e && e.preventDefault(), this._isTransitioning) throw new Error("Modal is transitioning"); var i = r.supportsTransitionEnd() && t(this._element).hasClass(m.FADE); i && (this._isTransitioning = !0); var o = t.Event(p.HIDE); t(this._element).trigger(o), this._isShown && !o.isDefaultPrevented() && (this._isShown = !1, this._setEscapeEvent(), this._setResizeEvent(), t(document).off(p.FOCUSIN), t(this._element).removeClass(m.SHOW), t(this._element).off(p.CLICK_DISMISS), t(this._dialog).off(p.MOUSEDOWN_DISMISS), i ? t(this._element).one(r.TRANSITION_END, function (t) { return n._hideModal(t) }).emulateTransitionEnd(u) : this._hideModal()) }, h.prototype.dispose = function () { t.removeData(this._element, a), t(window, document, this._element, this._backdrop).off(l), this._config = null, this._element = null, this._dialog = null, this._backdrop = null, this._isShown = null, this._isBodyOverflowing = null, this._ignoreBackdropClick = null, this._originalBodyPadding = null, this._scrollbarWidth = null }, h.prototype._getConfig = function (n) { return n = t.extend({}, _, n), r.typeCheckConfig(e, n, g), n }, h.prototype._showElement = function (e) { var n = this, i = r.supportsTransitionEnd() && t(this._element).hasClass(m.FADE); this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE || document.body.appendChild(this._element), this._element.style.display = "block", this._element.removeAttribute("aria-hidden"), this._element.scrollTop = 0, i && r.reflow(this._element), t(this._element).addClass(m.SHOW), this._config.focus && this._enforceFocus(); var o = t.Event(p.SHOWN, { relatedTarget: e }), s = function () { n._config.focus && n._element.focus(), n._isTransitioning = !1, t(n._element).trigger(o) }; i ? t(this._dialog).one(r.TRANSITION_END, s).emulateTransitionEnd(u) : s() }, h.prototype._enforceFocus = function () { var e = this; t(document).off(p.FOCUSIN).on(p.FOCUSIN, function (n) { document === n.target || e._element === n.target || t(e._element).has(n.target).length || e._element.focus() }) }, h.prototype._setEscapeEvent = function () { var e = this; this._isShown && this._config.keyboard ? t(this._element).on(p.KEYDOWN_DISMISS, function (t) { t.which === f && e.hide() }) : this._isShown || t(this._element).off(p.KEYDOWN_DISMISS) }, h.prototype._setResizeEvent = function () { var e = this; this._isShown ? t(window).on(p.RESIZE, function (t) { return e._handleUpdate(t) }) : t(window).off(p.RESIZE) }, h.prototype._hideModal = function () { var e = this; this._element.style.display = "none", this._element.setAttribute("aria-hidden", "true"), this._isTransitioning = !1, this._showBackdrop(function () { t(document.body).removeClass(m.OPEN), e._resetAdjustments(), e._resetScrollbar(), t(e._element).trigger(p.HIDDEN) }) }, h.prototype._removeBackdrop = function () { this._backdrop && (t(this._backdrop).remove(), this._backdrop = null) }, h.prototype._showBackdrop = function (e) { var n = this, i = t(this._element).hasClass(m.FADE) ? m.FADE : ""; if (this._isShown && this._config.backdrop) { var o = r.supportsTransitionEnd() && i; if (this._backdrop = document.createElement("div"), this._backdrop.className = m.BACKDROP, i && t(this._backdrop).addClass(i), t(this._backdrop).appendTo(document.body), t(this._element).on(p.CLICK_DISMISS, function (t) { return n._ignoreBackdropClick ? void (n._ignoreBackdropClick = !1) : void (t.target === t.currentTarget && ("static" === n._config.backdrop ? n._element.focus() : n.hide())) }), o && r.reflow(this._backdrop), t(this._backdrop).addClass(m.SHOW), !e) return; if (!o) return void e(); t(this._backdrop).one(r.TRANSITION_END, e).emulateTransitionEnd(d) } else if (!this._isShown && this._backdrop) { t(this._backdrop).removeClass(m.SHOW); var s = function () { n._removeBackdrop(), e && e() }; r.supportsTransitionEnd() && t(this._element).hasClass(m.FADE) ? t(this._backdrop).one(r.TRANSITION_END, s).emulateTransitionEnd(d) : s() } else e && e() }, h.prototype._handleUpdate = function () { this._adjustDialog() }, h.prototype._adjustDialog = function () { var t = this._element.scrollHeight > document.documentElement.clientHeight; !this._isBodyOverflowing && t && (this._element.style.paddingLeft = this._scrollbarWidth + "px"), this._isBodyOverflowing && !t && (this._element.style.paddingRight = this._scrollbarWidth + "px") }, h.prototype._resetAdjustments = function () { this._element.style.paddingLeft = "", this._element.style.paddingRight = "" }, h.prototype._checkScrollbar = function () { this._isBodyOverflowing = document.body.clientWidth < window.innerWidth, this._scrollbarWidth = this._getScrollbarWidth() }, h.prototype._setScrollbar = function () { var e = parseInt(t(E.FIXED_CONTENT).css("padding-right") || 0, 10); this._originalBodyPadding = document.body.style.paddingRight || "", this._isBodyOverflowing && (document.body.style.paddingRight = e + this._scrollbarWidth + "px") }, h.prototype._resetScrollbar = function () { document.body.style.paddingRight = this._originalBodyPadding }, h.prototype._getScrollbarWidth = function () { var t = document.createElement("div"); t.className = m.SCROLLBAR_MEASURER, document.body.appendChild(t); var e = t.offsetWidth - t.clientWidth; return document.body.removeChild(t), e }, h._jQueryInterface = function (e, n) { return this.each(function () { var o = t(this).data(a), r = t.extend({}, h.Default, t(this).data(), "object" === ("undefined" == typeof e ? "undefined" : i(e)) && e); if (o || (o = new h(this, r), t(this).data(a, o)), "string" == typeof e) { if (void 0 === o[e]) throw new Error('No method named "' + e + '"'); o[e](n) } else r.show && o.show(n) }) }, o(h, null, [{ key: "VERSION", get: function () { return s } }, { key: "Default", get: function () { return _ } }]), h }(); return t(document).on(p.CLICK_DATA_API, E.DATA_TOGGLE, function (e) { var n = this, i = void 0, o = r.getSelectorFromElement(this); o && (i = t(o)[0]); var s = t(i).data(a) ? "toggle" : t.extend({}, t(i).data(), t(this).data()); "A" !== this.tagName && "AREA" !== this.tagName || e.preventDefault(); var l = t(i).one(p.SHOW, function (e) { e.isDefaultPrevented() || l.one(p.HIDDEN, function () { t(n).is(":visible") && n.focus() }) }); v._jQueryInterface.call(t(i), s, this) }), t.fn[e] = v._jQueryInterface, t.fn[e].Constructor = v, t.fn[e].noConflict = function () { return t.fn[e] = c, v._jQueryInterface }, v }(jQuery), function (t) {
8
+ var e = "scrollspy", s = "4.0.0-alpha.6", a = "bs.scrollspy", l = "." + a, h = ".data-api", c = t.fn[e], u = { offset: 10, method: "auto", target: "" }, d = { offset: "number", method: "string", target: "(string|element)" }, f = { ACTIVATE: "activate" + l, SCROLL: "scroll" + l, LOAD_DATA_API: "load" + l + h }, _ = { DROPDOWN_ITEM: "dropdown-item", DROPDOWN_MENU: "dropdown-menu", NAV_LINK: "nav-link", NAV: "nav", ACTIVE: "active" }, g = { DATA_SPY: '[data-spy="scroll"]', ACTIVE: ".active", LIST_ITEM: ".list-item", LI: "li", LI_DROPDOWN: "li.dropdown", NAV_LINKS: ".nav-link", DROPDOWN: ".dropdown", DROPDOWN_ITEMS: ".dropdown-item", DROPDOWN_TOGGLE: ".dropdown-toggle" }, p = { OFFSET: "offset", POSITION: "position" }, m = function () {
9
+ function h(e, i) { var o = this; n(this, h), this._element = e, this._scrollElement = "BODY" === e.tagName ? window : e, this._config = this._getConfig(i), this._selector = this._config.target + " " + g.NAV_LINKS + "," + (this._config.target + " " + g.DROPDOWN_ITEMS), this._offsets = [], this._targets = [], this._activeTarget = null, this._scrollHeight = 0, t(this._scrollElement).on(f.SCROLL, function (t) { return o._process(t) }), this.refresh(), this._process() } return h.prototype.refresh = function () { var e = this, n = this._scrollElement !== this._scrollElement.window ? p.POSITION : p.OFFSET, i = "auto" === this._config.method ? n : this._config.method, o = i === p.POSITION ? this._getScrollTop() : 0; this._offsets = [], this._targets = [], this._scrollHeight = this._getScrollHeight(); var s = t.makeArray(t(this._selector)); s.map(function (e) { var n = void 0, s = r.getSelectorFromElement(e); return s && (n = t(s)[0]), n && (n.offsetWidth || n.offsetHeight) ? [t(n)[i]().top + o, s] : null }).filter(function (t) { return t }).sort(function (t, e) { return t[0] - e[0] }).forEach(function (t) { e._offsets.push(t[0]), e._targets.push(t[1]) }) }, h.prototype.dispose = function () { t.removeData(this._element, a), t(this._scrollElement).off(l), this._element = null, this._scrollElement = null, this._config = null, this._selector = null, this._offsets = null, this._targets = null, this._activeTarget = null, this._scrollHeight = null }, h.prototype._getConfig = function (n) { if (n = t.extend({}, u, n), "string" != typeof n.target) { var i = t(n.target).attr("id"); i || (i = r.getUID(e), t(n.target).attr("id", i)), n.target = "#" + i } return r.typeCheckConfig(e, n, d), n }, h.prototype._getScrollTop = function () { return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop }, h.prototype._getScrollHeight = function () { return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight) }, h.prototype._getOffsetHeight = function () { return this._scrollElement === window ? window.innerHeight : this._scrollElement.offsetHeight }, h.prototype._process = function () { var t = this._getScrollTop() + this._config.offset, e = this._getScrollHeight(), n = this._config.offset + e - this._getOffsetHeight(); if (this._scrollHeight !== e && this.refresh(), t >= n) { var i = this._targets[this._targets.length - 1]; return void (this._activeTarget !== i && this._activate(i)) } if (this._activeTarget && t < this._offsets[0] && this._offsets[0] > 0) return this._activeTarget = null, void this._clear(); for (var o = this._offsets.length; o--;) { var r = this._activeTarget !== this._targets[o] && t >= this._offsets[o] && (void 0 === this._offsets[o + 1] || t < this._offsets[o + 1]); r && this._activate(this._targets[o]) } }, h.prototype._activate = function (e) { this._activeTarget = e, this._clear(); var n = this._selector.split(","); n = n.map(function (t) { return t + '[data-target="' + e + '"],' + (t + '[href="' + e + '"]') }); var i = t(n.join(",")); i.hasClass(_.DROPDOWN_ITEM) ? (i.closest(g.DROPDOWN).find(g.DROPDOWN_TOGGLE).addClass(_.ACTIVE), i.addClass(_.ACTIVE)) : i.parents(g.LI).find("> " + g.NAV_LINKS).addClass(_.ACTIVE), t(this._scrollElement).trigger(f.ACTIVATE, { relatedTarget: e }) }, h.prototype._clear = function () { t(this._selector).filter(g.ACTIVE).removeClass(_.ACTIVE) }, h._jQueryInterface = function (e) {
10
+ return this.each(function () {
11
+ var n = t(this).data(a), o = "object" === ("undefined" == typeof e ? "undefined" : i(e)) && e;
12
+ if (n || (n = new h(this, o), t(this).data(a, n)), "string" == typeof e) { if (void 0 === n[e]) throw new Error('No method named "' + e + '"'); n[e]() }
13
+ })
14
+ }, o(h, null, [{ key: "VERSION", get: function () { return s } }, { key: "Default", get: function () { return u } }]), h
15
+ }(); return t(window).on(f.LOAD_DATA_API, function () { for (var e = t.makeArray(t(g.DATA_SPY)), n = e.length; n--;) { var i = t(e[n]); m._jQueryInterface.call(i, i.data()) } }), t.fn[e] = m._jQueryInterface, t.fn[e].Constructor = m, t.fn[e].noConflict = function () { return t.fn[e] = c, m._jQueryInterface }, m
16
+ }(jQuery), function (t) { var e = "tab", i = "4.0.0-alpha.6", s = "bs.tab", a = "." + s, l = ".data-api", h = t.fn[e], c = 150, u = { HIDE: "hide" + a, HIDDEN: "hidden" + a, SHOW: "show" + a, SHOWN: "shown" + a, CLICK_DATA_API: "click" + a + l }, d = { DROPDOWN_MENU: "dropdown-menu", ACTIVE: "active", DISABLED: "disabled", FADE: "fade", SHOW: "show" }, f = { A: "a", LI: "li", DROPDOWN: ".dropdown", LIST: "ul:not(.dropdown-menu), ol:not(.dropdown-menu), nav:not(.dropdown-menu)", FADE_CHILD: "> .nav-item .fade, > .fade", ACTIVE: ".active", ACTIVE_CHILD: "> .nav-item > .active, > .active", DATA_TOGGLE: '[data-toggle="tab"], [data-toggle="pill"]', DROPDOWN_TOGGLE: ".dropdown-toggle", DROPDOWN_ACTIVE_CHILD: "> .dropdown-menu .active" }, _ = function () { function e(t) { n(this, e), this._element = t } return e.prototype.show = function () { var e = this; if (!(this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && t(this._element).hasClass(d.ACTIVE) || t(this._element).hasClass(d.DISABLED))) { var n = void 0, i = void 0, o = t(this._element).closest(f.LIST)[0], s = r.getSelectorFromElement(this._element); o && (i = t.makeArray(t(o).find(f.ACTIVE)), i = i[i.length - 1]); var a = t.Event(u.HIDE, { relatedTarget: this._element }), l = t.Event(u.SHOW, { relatedTarget: i }); if (i && t(i).trigger(a), t(this._element).trigger(l), !l.isDefaultPrevented() && !a.isDefaultPrevented()) { s && (n = t(s)[0]), this._activate(this._element, o); var h = function () { var n = t.Event(u.HIDDEN, { relatedTarget: e._element }), o = t.Event(u.SHOWN, { relatedTarget: i }); t(i).trigger(n), t(e._element).trigger(o) }; n ? this._activate(n, n.parentNode, h) : h() } } }, e.prototype.dispose = function () { t.removeClass(this._element, s), this._element = null }, e.prototype._activate = function (e, n, i) { var o = this, s = t(n).find(f.ACTIVE_CHILD)[0], a = i && r.supportsTransitionEnd() && (s && t(s).hasClass(d.FADE) || Boolean(t(n).find(f.FADE_CHILD)[0])), l = function () { return o._transitionComplete(e, s, a, i) }; s && a ? t(s).one(r.TRANSITION_END, l).emulateTransitionEnd(c) : l(), s && t(s).removeClass(d.SHOW) }, e.prototype._transitionComplete = function (e, n, i, o) { if (n) { t(n).removeClass(d.ACTIVE); var s = t(n.parentNode).find(f.DROPDOWN_ACTIVE_CHILD)[0]; s && t(s).removeClass(d.ACTIVE), n.setAttribute("aria-expanded", !1) } if (t(e).addClass(d.ACTIVE), e.setAttribute("aria-expanded", !0), i ? (r.reflow(e), t(e).addClass(d.SHOW)) : t(e).removeClass(d.FADE), e.parentNode && t(e.parentNode).hasClass(d.DROPDOWN_MENU)) { var a = t(e).closest(f.DROPDOWN)[0]; a && t(a).find(f.DROPDOWN_TOGGLE).addClass(d.ACTIVE), e.setAttribute("aria-expanded", !0) } o && o() }, e._jQueryInterface = function (n) { return this.each(function () { var i = t(this), o = i.data(s); if (o || (o = new e(this), i.data(s, o)), "string" == typeof n) { if (void 0 === o[n]) throw new Error('No method named "' + n + '"'); o[n]() } }) }, o(e, null, [{ key: "VERSION", get: function () { return i } }]), e }(); return t(document).on(u.CLICK_DATA_API, f.DATA_TOGGLE, function (e) { e.preventDefault(), _._jQueryInterface.call(t(this), "show") }), t.fn[e] = _._jQueryInterface, t.fn[e].Constructor = _, t.fn[e].noConflict = function () { return t.fn[e] = h, _._jQueryInterface }, _ }(jQuery), function (t) { if ("undefined" == typeof Tether) throw new Error("Bootstrap tooltips require Tether (http://tether.io/)"); var e = "tooltip", s = "4.0.0-alpha.6", a = "bs.tooltip", l = "." + a, h = t.fn[e], c = 150, u = "bs-tether", d = { animation: !0, template: '<div class="tooltip" role="tooltip"><div class="tooltip-inner"></div></div>', trigger: "hover focus", title: "", delay: 0, html: !1, selector: !1, placement: "top", offset: "0 0", constraints: [], container: !1 }, f = { animation: "boolean", template: "string", title: "(string|element|function)", trigger: "string", delay: "(number|object)", html: "boolean", selector: "(string|boolean)", placement: "(string|function)", offset: "string", constraints: "array", container: "(string|element|boolean)" }, _ = { TOP: "bottom center", RIGHT: "middle left", BOTTOM: "top center", LEFT: "middle right" }, g = { SHOW: "show", OUT: "out" }, p = { HIDE: "hide" + l, HIDDEN: "hidden" + l, SHOW: "show" + l, SHOWN: "shown" + l, INSERTED: "inserted" + l, CLICK: "click" + l, FOCUSIN: "focusin" + l, FOCUSOUT: "focusout" + l, MOUSEENTER: "mouseenter" + l, MOUSELEAVE: "mouseleave" + l }, m = { FADE: "fade", SHOW: "show" }, E = { TOOLTIP: ".tooltip", TOOLTIP_INNER: ".tooltip-inner" }, v = { element: !1, enabled: !1 }, T = { HOVER: "hover", FOCUS: "focus", CLICK: "click", MANUAL: "manual" }, I = function () { function h(t, e) { n(this, h), this._isEnabled = !0, this._timeout = 0, this._hoverState = "", this._activeTrigger = {}, this._isTransitioning = !1, this._tether = null, this.element = t, this.config = this._getConfig(e), this.tip = null, this._setListeners() } return h.prototype.enable = function () { this._isEnabled = !0 }, h.prototype.disable = function () { this._isEnabled = !1 }, h.prototype.toggleEnabled = function () { this._isEnabled = !this._isEnabled }, h.prototype.toggle = function (e) { if (e) { var n = this.constructor.DATA_KEY, i = t(e.currentTarget).data(n); i || (i = new this.constructor(e.currentTarget, this._getDelegateConfig()), t(e.currentTarget).data(n, i)), i._activeTrigger.click = !i._activeTrigger.click, i._isWithActiveTrigger() ? i._enter(null, i) : i._leave(null, i) } else { if (t(this.getTipElement()).hasClass(m.SHOW)) return void this._leave(null, this); this._enter(null, this) } }, h.prototype.dispose = function () { clearTimeout(this._timeout), this.cleanupTether(), t.removeData(this.element, this.constructor.DATA_KEY), t(this.element).off(this.constructor.EVENT_KEY), t(this.element).closest(".modal").off("hide.bs.modal"), this.tip && t(this.tip).remove(), this._isEnabled = null, this._timeout = null, this._hoverState = null, this._activeTrigger = null, this._tether = null, this.element = null, this.config = null, this.tip = null }, h.prototype.show = function () { var e = this; if ("none" === t(this.element).css("display")) throw new Error("Please use show on visible elements"); var n = t.Event(this.constructor.Event.SHOW); if (this.isWithContent() && this._isEnabled) { if (this._isTransitioning) throw new Error("Tooltip is transitioning"); t(this.element).trigger(n); var i = t.contains(this.element.ownerDocument.documentElement, this.element); if (n.isDefaultPrevented() || !i) return; var o = this.getTipElement(), s = r.getUID(this.constructor.NAME); o.setAttribute("id", s), this.element.setAttribute("aria-describedby", s), this.setContent(), this.config.animation && t(o).addClass(m.FADE); var a = "function" == typeof this.config.placement ? this.config.placement.call(this, o, this.element) : this.config.placement, l = this._getAttachment(a), c = this.config.container === !1 ? document.body : t(this.config.container); t(o).data(this.constructor.DATA_KEY, this).appendTo(c), t(this.element).trigger(this.constructor.Event.INSERTED), this._tether = new Tether({ attachment: l, element: o, target: this.element, classes: v, classPrefix: u, offset: this.config.offset, constraints: this.config.constraints, addTargetClasses: !1 }), r.reflow(o), this._tether.position(), t(o).addClass(m.SHOW); var d = function () { var n = e._hoverState; e._hoverState = null, e._isTransitioning = !1, t(e.element).trigger(e.constructor.Event.SHOWN), n === g.OUT && e._leave(null, e) }; if (r.supportsTransitionEnd() && t(this.tip).hasClass(m.FADE)) return this._isTransitioning = !0, void t(this.tip).one(r.TRANSITION_END, d).emulateTransitionEnd(h._TRANSITION_DURATION); d() } }, h.prototype.hide = function (e) { var n = this, i = this.getTipElement(), o = t.Event(this.constructor.Event.HIDE); if (this._isTransitioning) throw new Error("Tooltip is transitioning"); var s = function () { n._hoverState !== g.SHOW && i.parentNode && i.parentNode.removeChild(i), n.element.removeAttribute("aria-describedby"), t(n.element).trigger(n.constructor.Event.HIDDEN), n._isTransitioning = !1, n.cleanupTether(), e && e() }; t(this.element).trigger(o), o.isDefaultPrevented() || (t(i).removeClass(m.SHOW), this._activeTrigger[T.CLICK] = !1, this._activeTrigger[T.FOCUS] = !1, this._activeTrigger[T.HOVER] = !1, r.supportsTransitionEnd() && t(this.tip).hasClass(m.FADE) ? (this._isTransitioning = !0, t(i).one(r.TRANSITION_END, s).emulateTransitionEnd(c)) : s(), this._hoverState = "") }, h.prototype.isWithContent = function () { return Boolean(this.getTitle()) }, h.prototype.getTipElement = function () { return this.tip = this.tip || t(this.config.template)[0] }, h.prototype.setContent = function () { var e = t(this.getTipElement()); this.setElementContent(e.find(E.TOOLTIP_INNER), this.getTitle()), e.removeClass(m.FADE + " " + m.SHOW), this.cleanupTether() }, h.prototype.setElementContent = function (e, n) { var o = this.config.html; "object" === ("undefined" == typeof n ? "undefined" : i(n)) && (n.nodeType || n.jquery) ? o ? t(n).parent().is(e) || e.empty().append(n) : e.text(t(n).text()) : e[o ? "html" : "text"](n) }, h.prototype.getTitle = function () { var t = this.element.getAttribute("data-original-title"); return t || (t = "function" == typeof this.config.title ? this.config.title.call(this.element) : this.config.title), t }, h.prototype.cleanupTether = function () { this._tether && this._tether.destroy() }, h.prototype._getAttachment = function (t) { return _[t.toUpperCase()] }, h.prototype._setListeners = function () { var e = this, n = this.config.trigger.split(" "); n.forEach(function (n) { if ("click" === n) t(e.element).on(e.constructor.Event.CLICK, e.config.selector, function (t) { return e.toggle(t) }); else if (n !== T.MANUAL) { var i = n === T.HOVER ? e.constructor.Event.MOUSEENTER : e.constructor.Event.FOCUSIN, o = n === T.HOVER ? e.constructor.Event.MOUSELEAVE : e.constructor.Event.FOCUSOUT; t(e.element).on(i, e.config.selector, function (t) { return e._enter(t) }).on(o, e.config.selector, function (t) { return e._leave(t) }) } t(e.element).closest(".modal").on("hide.bs.modal", function () { return e.hide() }) }), this.config.selector ? this.config = t.extend({}, this.config, { trigger: "manual", selector: "" }) : this._fixTitle() }, h.prototype._fixTitle = function () { var t = i(this.element.getAttribute("data-original-title")); (this.element.getAttribute("title") || "string" !== t) && (this.element.setAttribute("data-original-title", this.element.getAttribute("title") || ""), this.element.setAttribute("title", "")) }, h.prototype._enter = function (e, n) { var i = this.constructor.DATA_KEY; return n = n || t(e.currentTarget).data(i), n || (n = new this.constructor(e.currentTarget, this._getDelegateConfig()), t(e.currentTarget).data(i, n)), e && (n._activeTrigger["focusin" === e.type ? T.FOCUS : T.HOVER] = !0), t(n.getTipElement()).hasClass(m.SHOW) || n._hoverState === g.SHOW ? void (n._hoverState = g.SHOW) : (clearTimeout(n._timeout), n._hoverState = g.SHOW, n.config.delay && n.config.delay.show ? void (n._timeout = setTimeout(function () { n._hoverState === g.SHOW && n.show() }, n.config.delay.show)) : void n.show()) }, h.prototype._leave = function (e, n) { var i = this.constructor.DATA_KEY; if (n = n || t(e.currentTarget).data(i), n || (n = new this.constructor(e.currentTarget, this._getDelegateConfig()), t(e.currentTarget).data(i, n)), e && (n._activeTrigger["focusout" === e.type ? T.FOCUS : T.HOVER] = !1), !n._isWithActiveTrigger()) return clearTimeout(n._timeout), n._hoverState = g.OUT, n.config.delay && n.config.delay.hide ? void (n._timeout = setTimeout(function () { n._hoverState === g.OUT && n.hide() }, n.config.delay.hide)) : void n.hide() }, h.prototype._isWithActiveTrigger = function () { for (var t in this._activeTrigger) if (this._activeTrigger[t]) return !0; return !1 }, h.prototype._getConfig = function (n) { return n = t.extend({}, this.constructor.Default, t(this.element).data(), n), n.delay && "number" == typeof n.delay && (n.delay = { show: n.delay, hide: n.delay }), r.typeCheckConfig(e, n, this.constructor.DefaultType), n }, h.prototype._getDelegateConfig = function () { var t = {}; if (this.config) for (var e in this.config) this.constructor.Default[e] !== this.config[e] && (t[e] = this.config[e]); return t }, h._jQueryInterface = function (e) { return this.each(function () { var n = t(this).data(a), o = "object" === ("undefined" == typeof e ? "undefined" : i(e)) && e; if ((n || !/dispose|hide/.test(e)) && (n || (n = new h(this, o), t(this).data(a, n)), "string" == typeof e)) { if (void 0 === n[e]) throw new Error('No method named "' + e + '"'); n[e]() } }) }, o(h, null, [{ key: "VERSION", get: function () { return s } }, { key: "Default", get: function () { return d } }, { key: "NAME", get: function () { return e } }, { key: "DATA_KEY", get: function () { return a } }, { key: "Event", get: function () { return p } }, { key: "EVENT_KEY", get: function () { return l } }, { key: "DefaultType", get: function () { return f } }]), h }(); return t.fn[e] = I._jQueryInterface, t.fn[e].Constructor = I, t.fn[e].noConflict = function () { return t.fn[e] = h, I._jQueryInterface }, I }(jQuery)); (function (r) { var a = "popover", l = "4.0.0-alpha.6", h = "bs.popover", c = "." + h, u = r.fn[a], d = r.extend({}, s.Default, { placement: "right", trigger: "click", content: "", template: '<div class="popover" role="tooltip"><h3 class="popover-title"></h3><div class="popover-content"></div></div>' }), f = r.extend({}, s.DefaultType, { content: "(string|element|function)" }), _ = { FADE: "fade", SHOW: "show" }, g = { TITLE: ".popover-title", CONTENT: ".popover-content" }, p = { HIDE: "hide" + c, HIDDEN: "hidden" + c, SHOW: "show" + c, SHOWN: "shown" + c, INSERTED: "inserted" + c, CLICK: "click" + c, FOCUSIN: "focusin" + c, FOCUSOUT: "focusout" + c, MOUSEENTER: "mouseenter" + c, MOUSELEAVE: "mouseleave" + c }, m = function (s) { function u() { return n(this, u), t(this, s.apply(this, arguments)) } return e(u, s), u.prototype.isWithContent = function () { return this.getTitle() || this._getContent() }, u.prototype.getTipElement = function () { return this.tip = this.tip || r(this.config.template)[0] }, u.prototype.setContent = function () { var t = r(this.getTipElement()); this.setElementContent(t.find(g.TITLE), this.getTitle()), this.setElementContent(t.find(g.CONTENT), this._getContent()), t.removeClass(_.FADE + " " + _.SHOW), this.cleanupTether() }, u.prototype._getContent = function () { return this.element.getAttribute("data-content") || ("function" == typeof this.config.content ? this.config.content.call(this.element) : this.config.content) }, u._jQueryInterface = function (t) { return this.each(function () { var e = r(this).data(h), n = "object" === ("undefined" == typeof t ? "undefined" : i(t)) ? t : null; if ((e || !/destroy|hide/.test(t)) && (e || (e = new u(this, n), r(this).data(h, e)), "string" == typeof t)) { if (void 0 === e[t]) throw new Error('No method named "' + t + '"'); e[t]() } }) }, o(u, null, [{ key: "VERSION", get: function () { return l } }, { key: "Default", get: function () { return d } }, { key: "NAME", get: function () { return a } }, { key: "DATA_KEY", get: function () { return h } }, { key: "Event", get: function () { return p } }, { key: "EVENT_KEY", get: function () { return c } }, { key: "DefaultType", get: function () { return f } }]), u }(s); return r.fn[a] = m._jQueryInterface, r.fn[a].Constructor = m, r.fn[a].noConflict = function () { return r.fn[a] = u, m._jQueryInterface }, m })(jQuery)
17
+ }();