##// END OF EJS Templates
angular: reorganize files
ergo -
Show More
This diff has been collapsed as it changes many lines, (1069 lines changed) Show them Hide them
@@ -1,13189 +1,13162 b''
1 // Underscore.js 1.6.0
1 // Underscore.js 1.6.0
2 // http://underscorejs.org
2 // http://underscorejs.org
3 // (c) 2009-2014 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
3 // (c) 2009-2014 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
4 // Underscore may be freely distributed under the MIT license.
4 // Underscore may be freely distributed under the MIT license.
5
5
6 (function() {
6 (function() {
7
7
8 // Baseline setup
8 // Baseline setup
9 // --------------
9 // --------------
10
10
11 // Establish the root object, `window` in the browser, or `exports` on the server.
11 // Establish the root object, `window` in the browser, or `exports` on the server.
12 var root = this;
12 var root = this;
13
13
14 // Save the previous value of the `_` variable.
14 // Save the previous value of the `_` variable.
15 var previousUnderscore = root._;
15 var previousUnderscore = root._;
16
16
17 // Establish the object that gets returned to break out of a loop iteration.
17 // Establish the object that gets returned to break out of a loop iteration.
18 var breaker = {};
18 var breaker = {};
19
19
20 // Save bytes in the minified (but not gzipped) version:
20 // Save bytes in the minified (but not gzipped) version:
21 var ArrayProto = Array.prototype, ObjProto = Object.prototype, FuncProto = Function.prototype;
21 var ArrayProto = Array.prototype, ObjProto = Object.prototype, FuncProto = Function.prototype;
22
22
23 // Create quick reference variables for speed access to core prototypes.
23 // Create quick reference variables for speed access to core prototypes.
24 var
24 var
25 push = ArrayProto.push,
25 push = ArrayProto.push,
26 slice = ArrayProto.slice,
26 slice = ArrayProto.slice,
27 concat = ArrayProto.concat,
27 concat = ArrayProto.concat,
28 toString = ObjProto.toString,
28 toString = ObjProto.toString,
29 hasOwnProperty = ObjProto.hasOwnProperty;
29 hasOwnProperty = ObjProto.hasOwnProperty;
30
30
31 // All **ECMAScript 5** native function implementations that we hope to use
31 // All **ECMAScript 5** native function implementations that we hope to use
32 // are declared here.
32 // are declared here.
33 var
33 var
34 nativeForEach = ArrayProto.forEach,
34 nativeForEach = ArrayProto.forEach,
35 nativeMap = ArrayProto.map,
35 nativeMap = ArrayProto.map,
36 nativeReduce = ArrayProto.reduce,
36 nativeReduce = ArrayProto.reduce,
37 nativeReduceRight = ArrayProto.reduceRight,
37 nativeReduceRight = ArrayProto.reduceRight,
38 nativeFilter = ArrayProto.filter,
38 nativeFilter = ArrayProto.filter,
39 nativeEvery = ArrayProto.every,
39 nativeEvery = ArrayProto.every,
40 nativeSome = ArrayProto.some,
40 nativeSome = ArrayProto.some,
41 nativeIndexOf = ArrayProto.indexOf,
41 nativeIndexOf = ArrayProto.indexOf,
42 nativeLastIndexOf = ArrayProto.lastIndexOf,
42 nativeLastIndexOf = ArrayProto.lastIndexOf,
43 nativeIsArray = Array.isArray,
43 nativeIsArray = Array.isArray,
44 nativeKeys = Object.keys,
44 nativeKeys = Object.keys,
45 nativeBind = FuncProto.bind;
45 nativeBind = FuncProto.bind;
46
46
47 // Create a safe reference to the Underscore object for use below.
47 // Create a safe reference to the Underscore object for use below.
48 var _ = function(obj) {
48 var _ = function(obj) {
49 if (obj instanceof _) return obj;
49 if (obj instanceof _) return obj;
50 if (!(this instanceof _)) return new _(obj);
50 if (!(this instanceof _)) return new _(obj);
51 this._wrapped = obj;
51 this._wrapped = obj;
52 };
52 };
53
53
54 // Export the Underscore object for **Node.js**, with
54 // Export the Underscore object for **Node.js**, with
55 // backwards-compatibility for the old `require()` API. If we're in
55 // backwards-compatibility for the old `require()` API. If we're in
56 // the browser, add `_` as a global object via a string identifier,
56 // the browser, add `_` as a global object via a string identifier,
57 // for Closure Compiler "advanced" mode.
57 // for Closure Compiler "advanced" mode.
58 if (typeof exports !== 'undefined') {
58 if (typeof exports !== 'undefined') {
59 if (typeof module !== 'undefined' && module.exports) {
59 if (typeof module !== 'undefined' && module.exports) {
60 exports = module.exports = _;
60 exports = module.exports = _;
61 }
61 }
62 exports._ = _;
62 exports._ = _;
63 } else {
63 } else {
64 root._ = _;
64 root._ = _;
65 }
65 }
66
66
67 // Current version.
67 // Current version.
68 _.VERSION = '1.6.0';
68 _.VERSION = '1.6.0';
69
69
70 // Collection Functions
70 // Collection Functions
71 // --------------------
71 // --------------------
72
72
73 // The cornerstone, an `each` implementation, aka `forEach`.
73 // The cornerstone, an `each` implementation, aka `forEach`.
74 // Handles objects with the built-in `forEach`, arrays, and raw objects.
74 // Handles objects with the built-in `forEach`, arrays, and raw objects.
75 // Delegates to **ECMAScript 5**'s native `forEach` if available.
75 // Delegates to **ECMAScript 5**'s native `forEach` if available.
76 var each = _.each = _.forEach = function(obj, iterator, context) {
76 var each = _.each = _.forEach = function(obj, iterator, context) {
77 if (obj == null) return obj;
77 if (obj == null) return obj;
78 if (nativeForEach && obj.forEach === nativeForEach) {
78 if (nativeForEach && obj.forEach === nativeForEach) {
79 obj.forEach(iterator, context);
79 obj.forEach(iterator, context);
80 } else if (obj.length === +obj.length) {
80 } else if (obj.length === +obj.length) {
81 for (var i = 0, length = obj.length; i < length; i++) {
81 for (var i = 0, length = obj.length; i < length; i++) {
82 if (iterator.call(context, obj[i], i, obj) === breaker) return;
82 if (iterator.call(context, obj[i], i, obj) === breaker) return;
83 }
83 }
84 } else {
84 } else {
85 var keys = _.keys(obj);
85 var keys = _.keys(obj);
86 for (var i = 0, length = keys.length; i < length; i++) {
86 for (var i = 0, length = keys.length; i < length; i++) {
87 if (iterator.call(context, obj[keys[i]], keys[i], obj) === breaker) return;
87 if (iterator.call(context, obj[keys[i]], keys[i], obj) === breaker) return;
88 }
88 }
89 }
89 }
90 return obj;
90 return obj;
91 };
91 };
92
92
93 // Return the results of applying the iterator to each element.
93 // Return the results of applying the iterator to each element.
94 // Delegates to **ECMAScript 5**'s native `map` if available.
94 // Delegates to **ECMAScript 5**'s native `map` if available.
95 _.map = _.collect = function(obj, iterator, context) {
95 _.map = _.collect = function(obj, iterator, context) {
96 var results = [];
96 var results = [];
97 if (obj == null) return results;
97 if (obj == null) return results;
98 if (nativeMap && obj.map === nativeMap) return obj.map(iterator, context);
98 if (nativeMap && obj.map === nativeMap) return obj.map(iterator, context);
99 each(obj, function(value, index, list) {
99 each(obj, function(value, index, list) {
100 results.push(iterator.call(context, value, index, list));
100 results.push(iterator.call(context, value, index, list));
101 });
101 });
102 return results;
102 return results;
103 };
103 };
104
104
105 var reduceError = 'Reduce of empty array with no initial value';
105 var reduceError = 'Reduce of empty array with no initial value';
106
106
107 // **Reduce** builds up a single result from a list of values, aka `inject`,
107 // **Reduce** builds up a single result from a list of values, aka `inject`,
108 // or `foldl`. Delegates to **ECMAScript 5**'s native `reduce` if available.
108 // or `foldl`. Delegates to **ECMAScript 5**'s native `reduce` if available.
109 _.reduce = _.foldl = _.inject = function(obj, iterator, memo, context) {
109 _.reduce = _.foldl = _.inject = function(obj, iterator, memo, context) {
110 var initial = arguments.length > 2;
110 var initial = arguments.length > 2;
111 if (obj == null) obj = [];
111 if (obj == null) obj = [];
112 if (nativeReduce && obj.reduce === nativeReduce) {
112 if (nativeReduce && obj.reduce === nativeReduce) {
113 if (context) iterator = _.bind(iterator, context);
113 if (context) iterator = _.bind(iterator, context);
114 return initial ? obj.reduce(iterator, memo) : obj.reduce(iterator);
114 return initial ? obj.reduce(iterator, memo) : obj.reduce(iterator);
115 }
115 }
116 each(obj, function(value, index, list) {
116 each(obj, function(value, index, list) {
117 if (!initial) {
117 if (!initial) {
118 memo = value;
118 memo = value;
119 initial = true;
119 initial = true;
120 } else {
120 } else {
121 memo = iterator.call(context, memo, value, index, list);
121 memo = iterator.call(context, memo, value, index, list);
122 }
122 }
123 });
123 });
124 if (!initial) throw new TypeError(reduceError);
124 if (!initial) throw new TypeError(reduceError);
125 return memo;
125 return memo;
126 };
126 };
127
127
128 // The right-associative version of reduce, also known as `foldr`.
128 // The right-associative version of reduce, also known as `foldr`.
129 // Delegates to **ECMAScript 5**'s native `reduceRight` if available.
129 // Delegates to **ECMAScript 5**'s native `reduceRight` if available.
130 _.reduceRight = _.foldr = function(obj, iterator, memo, context) {
130 _.reduceRight = _.foldr = function(obj, iterator, memo, context) {
131 var initial = arguments.length > 2;
131 var initial = arguments.length > 2;
132 if (obj == null) obj = [];
132 if (obj == null) obj = [];
133 if (nativeReduceRight && obj.reduceRight === nativeReduceRight) {
133 if (nativeReduceRight && obj.reduceRight === nativeReduceRight) {
134 if (context) iterator = _.bind(iterator, context);
134 if (context) iterator = _.bind(iterator, context);
135 return initial ? obj.reduceRight(iterator, memo) : obj.reduceRight(iterator);
135 return initial ? obj.reduceRight(iterator, memo) : obj.reduceRight(iterator);
136 }
136 }
137 var length = obj.length;
137 var length = obj.length;
138 if (length !== +length) {
138 if (length !== +length) {
139 var keys = _.keys(obj);
139 var keys = _.keys(obj);
140 length = keys.length;
140 length = keys.length;
141 }
141 }
142 each(obj, function(value, index, list) {
142 each(obj, function(value, index, list) {
143 index = keys ? keys[--length] : --length;
143 index = keys ? keys[--length] : --length;
144 if (!initial) {
144 if (!initial) {
145 memo = obj[index];
145 memo = obj[index];
146 initial = true;
146 initial = true;
147 } else {
147 } else {
148 memo = iterator.call(context, memo, obj[index], index, list);
148 memo = iterator.call(context, memo, obj[index], index, list);
149 }
149 }
150 });
150 });
151 if (!initial) throw new TypeError(reduceError);
151 if (!initial) throw new TypeError(reduceError);
152 return memo;
152 return memo;
153 };
153 };
154
154
155 // Return the first value which passes a truth test. Aliased as `detect`.
155 // Return the first value which passes a truth test. Aliased as `detect`.
156 _.find = _.detect = function(obj, predicate, context) {
156 _.find = _.detect = function(obj, predicate, context) {
157 var result;
157 var result;
158 any(obj, function(value, index, list) {
158 any(obj, function(value, index, list) {
159 if (predicate.call(context, value, index, list)) {
159 if (predicate.call(context, value, index, list)) {
160 result = value;
160 result = value;
161 return true;
161 return true;
162 }
162 }
163 });
163 });
164 return result;
164 return result;
165 };
165 };
166
166
167 // Return all the elements that pass a truth test.
167 // Return all the elements that pass a truth test.
168 // Delegates to **ECMAScript 5**'s native `filter` if available.
168 // Delegates to **ECMAScript 5**'s native `filter` if available.
169 // Aliased as `select`.
169 // Aliased as `select`.
170 _.filter = _.select = function(obj, predicate, context) {
170 _.filter = _.select = function(obj, predicate, context) {
171 var results = [];
171 var results = [];
172 if (obj == null) return results;
172 if (obj == null) return results;
173 if (nativeFilter && obj.filter === nativeFilter) return obj.filter(predicate, context);
173 if (nativeFilter && obj.filter === nativeFilter) return obj.filter(predicate, context);
174 each(obj, function(value, index, list) {
174 each(obj, function(value, index, list) {
175 if (predicate.call(context, value, index, list)) results.push(value);
175 if (predicate.call(context, value, index, list)) results.push(value);
176 });
176 });
177 return results;
177 return results;
178 };
178 };
179
179
180 // Return all the elements for which a truth test fails.
180 // Return all the elements for which a truth test fails.
181 _.reject = function(obj, predicate, context) {
181 _.reject = function(obj, predicate, context) {
182 return _.filter(obj, function(value, index, list) {
182 return _.filter(obj, function(value, index, list) {
183 return !predicate.call(context, value, index, list);
183 return !predicate.call(context, value, index, list);
184 }, context);
184 }, context);
185 };
185 };
186
186
187 // Determine whether all of the elements match a truth test.
187 // Determine whether all of the elements match a truth test.
188 // Delegates to **ECMAScript 5**'s native `every` if available.
188 // Delegates to **ECMAScript 5**'s native `every` if available.
189 // Aliased as `all`.
189 // Aliased as `all`.
190 _.every = _.all = function(obj, predicate, context) {
190 _.every = _.all = function(obj, predicate, context) {
191 predicate || (predicate = _.identity);
191 predicate || (predicate = _.identity);
192 var result = true;
192 var result = true;
193 if (obj == null) return result;
193 if (obj == null) return result;
194 if (nativeEvery && obj.every === nativeEvery) return obj.every(predicate, context);
194 if (nativeEvery && obj.every === nativeEvery) return obj.every(predicate, context);
195 each(obj, function(value, index, list) {
195 each(obj, function(value, index, list) {
196 if (!(result = result && predicate.call(context, value, index, list))) return breaker;
196 if (!(result = result && predicate.call(context, value, index, list))) return breaker;
197 });
197 });
198 return !!result;
198 return !!result;
199 };
199 };
200
200
201 // Determine if at least one element in the object matches a truth test.
201 // Determine if at least one element in the object matches a truth test.
202 // Delegates to **ECMAScript 5**'s native `some` if available.
202 // Delegates to **ECMAScript 5**'s native `some` if available.
203 // Aliased as `any`.
203 // Aliased as `any`.
204 var any = _.some = _.any = function(obj, predicate, context) {
204 var any = _.some = _.any = function(obj, predicate, context) {
205 predicate || (predicate = _.identity);
205 predicate || (predicate = _.identity);
206 var result = false;
206 var result = false;
207 if (obj == null) return result;
207 if (obj == null) return result;
208 if (nativeSome && obj.some === nativeSome) return obj.some(predicate, context);
208 if (nativeSome && obj.some === nativeSome) return obj.some(predicate, context);
209 each(obj, function(value, index, list) {
209 each(obj, function(value, index, list) {
210 if (result || (result = predicate.call(context, value, index, list))) return breaker;
210 if (result || (result = predicate.call(context, value, index, list))) return breaker;
211 });
211 });
212 return !!result;
212 return !!result;
213 };
213 };
214
214
215 // Determine if the array or object contains a given value (using `===`).
215 // Determine if the array or object contains a given value (using `===`).
216 // Aliased as `include`.
216 // Aliased as `include`.
217 _.contains = _.include = function(obj, target) {
217 _.contains = _.include = function(obj, target) {
218 if (obj == null) return false;
218 if (obj == null) return false;
219 if (nativeIndexOf && obj.indexOf === nativeIndexOf) return obj.indexOf(target) != -1;
219 if (nativeIndexOf && obj.indexOf === nativeIndexOf) return obj.indexOf(target) != -1;
220 return any(obj, function(value) {
220 return any(obj, function(value) {
221 return value === target;
221 return value === target;
222 });
222 });
223 };
223 };
224
224
225 // Invoke a method (with arguments) on every item in a collection.
225 // Invoke a method (with arguments) on every item in a collection.
226 _.invoke = function(obj, method) {
226 _.invoke = function(obj, method) {
227 var args = slice.call(arguments, 2);
227 var args = slice.call(arguments, 2);
228 var isFunc = _.isFunction(method);
228 var isFunc = _.isFunction(method);
229 return _.map(obj, function(value) {
229 return _.map(obj, function(value) {
230 return (isFunc ? method : value[method]).apply(value, args);
230 return (isFunc ? method : value[method]).apply(value, args);
231 });
231 });
232 };
232 };
233
233
234 // Convenience version of a common use case of `map`: fetching a property.
234 // Convenience version of a common use case of `map`: fetching a property.
235 _.pluck = function(obj, key) {
235 _.pluck = function(obj, key) {
236 return _.map(obj, _.property(key));
236 return _.map(obj, _.property(key));
237 };
237 };
238
238
239 // Convenience version of a common use case of `filter`: selecting only objects
239 // Convenience version of a common use case of `filter`: selecting only objects
240 // containing specific `key:value` pairs.
240 // containing specific `key:value` pairs.
241 _.where = function(obj, attrs) {
241 _.where = function(obj, attrs) {
242 return _.filter(obj, _.matches(attrs));
242 return _.filter(obj, _.matches(attrs));
243 };
243 };
244
244
245 // Convenience version of a common use case of `find`: getting the first object
245 // Convenience version of a common use case of `find`: getting the first object
246 // containing specific `key:value` pairs.
246 // containing specific `key:value` pairs.
247 _.findWhere = function(obj, attrs) {
247 _.findWhere = function(obj, attrs) {
248 return _.find(obj, _.matches(attrs));
248 return _.find(obj, _.matches(attrs));
249 };
249 };
250
250
251 // Return the maximum element or (element-based computation).
251 // Return the maximum element or (element-based computation).
252 // Can't optimize arrays of integers longer than 65,535 elements.
252 // Can't optimize arrays of integers longer than 65,535 elements.
253 // See [WebKit Bug 80797](https://bugs.webkit.org/show_bug.cgi?id=80797)
253 // See [WebKit Bug 80797](https://bugs.webkit.org/show_bug.cgi?id=80797)
254 _.max = function(obj, iterator, context) {
254 _.max = function(obj, iterator, context) {
255 if (!iterator && _.isArray(obj) && obj[0] === +obj[0] && obj.length < 65535) {
255 if (!iterator && _.isArray(obj) && obj[0] === +obj[0] && obj.length < 65535) {
256 return Math.max.apply(Math, obj);
256 return Math.max.apply(Math, obj);
257 }
257 }
258 var result = -Infinity, lastComputed = -Infinity;
258 var result = -Infinity, lastComputed = -Infinity;
259 each(obj, function(value, index, list) {
259 each(obj, function(value, index, list) {
260 var computed = iterator ? iterator.call(context, value, index, list) : value;
260 var computed = iterator ? iterator.call(context, value, index, list) : value;
261 if (computed > lastComputed) {
261 if (computed > lastComputed) {
262 result = value;
262 result = value;
263 lastComputed = computed;
263 lastComputed = computed;
264 }
264 }
265 });
265 });
266 return result;
266 return result;
267 };
267 };
268
268
269 // Return the minimum element (or element-based computation).
269 // Return the minimum element (or element-based computation).
270 _.min = function(obj, iterator, context) {
270 _.min = function(obj, iterator, context) {
271 if (!iterator && _.isArray(obj) && obj[0] === +obj[0] && obj.length < 65535) {
271 if (!iterator && _.isArray(obj) && obj[0] === +obj[0] && obj.length < 65535) {
272 return Math.min.apply(Math, obj);
272 return Math.min.apply(Math, obj);
273 }
273 }
274 var result = Infinity, lastComputed = Infinity;
274 var result = Infinity, lastComputed = Infinity;
275 each(obj, function(value, index, list) {
275 each(obj, function(value, index, list) {
276 var computed = iterator ? iterator.call(context, value, index, list) : value;
276 var computed = iterator ? iterator.call(context, value, index, list) : value;
277 if (computed < lastComputed) {
277 if (computed < lastComputed) {
278 result = value;
278 result = value;
279 lastComputed = computed;
279 lastComputed = computed;
280 }
280 }
281 });
281 });
282 return result;
282 return result;
283 };
283 };
284
284
285 // Shuffle an array, using the modern version of the
285 // Shuffle an array, using the modern version of the
286 // [Fisher-Yates shuffle](http://en.wikipedia.org/wiki/Fisher–Yates_shuffle).
286 // [Fisher-Yates shuffle](http://en.wikipedia.org/wiki/Fisher–Yates_shuffle).
287 _.shuffle = function(obj) {
287 _.shuffle = function(obj) {
288 var rand;
288 var rand;
289 var index = 0;
289 var index = 0;
290 var shuffled = [];
290 var shuffled = [];
291 each(obj, function(value) {
291 each(obj, function(value) {
292 rand = _.random(index++);
292 rand = _.random(index++);
293 shuffled[index - 1] = shuffled[rand];
293 shuffled[index - 1] = shuffled[rand];
294 shuffled[rand] = value;
294 shuffled[rand] = value;
295 });
295 });
296 return shuffled;
296 return shuffled;
297 };
297 };
298
298
299 // Sample **n** random values from a collection.
299 // Sample **n** random values from a collection.
300 // If **n** is not specified, returns a single random element.
300 // If **n** is not specified, returns a single random element.
301 // The internal `guard` argument allows it to work with `map`.
301 // The internal `guard` argument allows it to work with `map`.
302 _.sample = function(obj, n, guard) {
302 _.sample = function(obj, n, guard) {
303 if (n == null || guard) {
303 if (n == null || guard) {
304 if (obj.length !== +obj.length) obj = _.values(obj);
304 if (obj.length !== +obj.length) obj = _.values(obj);
305 return obj[_.random(obj.length - 1)];
305 return obj[_.random(obj.length - 1)];
306 }
306 }
307 return _.shuffle(obj).slice(0, Math.max(0, n));
307 return _.shuffle(obj).slice(0, Math.max(0, n));
308 };
308 };
309
309
310 // An internal function to generate lookup iterators.
310 // An internal function to generate lookup iterators.
311 var lookupIterator = function(value) {
311 var lookupIterator = function(value) {
312 if (value == null) return _.identity;
312 if (value == null) return _.identity;
313 if (_.isFunction(value)) return value;
313 if (_.isFunction(value)) return value;
314 return _.property(value);
314 return _.property(value);
315 };
315 };
316
316
317 // Sort the object's values by a criterion produced by an iterator.
317 // Sort the object's values by a criterion produced by an iterator.
318 _.sortBy = function(obj, iterator, context) {
318 _.sortBy = function(obj, iterator, context) {
319 iterator = lookupIterator(iterator);
319 iterator = lookupIterator(iterator);
320 return _.pluck(_.map(obj, function(value, index, list) {
320 return _.pluck(_.map(obj, function(value, index, list) {
321 return {
321 return {
322 value: value,
322 value: value,
323 index: index,
323 index: index,
324 criteria: iterator.call(context, value, index, list)
324 criteria: iterator.call(context, value, index, list)
325 };
325 };
326 }).sort(function(left, right) {
326 }).sort(function(left, right) {
327 var a = left.criteria;
327 var a = left.criteria;
328 var b = right.criteria;
328 var b = right.criteria;
329 if (a !== b) {
329 if (a !== b) {
330 if (a > b || a === void 0) return 1;
330 if (a > b || a === void 0) return 1;
331 if (a < b || b === void 0) return -1;
331 if (a < b || b === void 0) return -1;
332 }
332 }
333 return left.index - right.index;
333 return left.index - right.index;
334 }), 'value');
334 }), 'value');
335 };
335 };
336
336
337 // An internal function used for aggregate "group by" operations.
337 // An internal function used for aggregate "group by" operations.
338 var group = function(behavior) {
338 var group = function(behavior) {
339 return function(obj, iterator, context) {
339 return function(obj, iterator, context) {
340 var result = {};
340 var result = {};
341 iterator = lookupIterator(iterator);
341 iterator = lookupIterator(iterator);
342 each(obj, function(value, index) {
342 each(obj, function(value, index) {
343 var key = iterator.call(context, value, index, obj);
343 var key = iterator.call(context, value, index, obj);
344 behavior(result, key, value);
344 behavior(result, key, value);
345 });
345 });
346 return result;
346 return result;
347 };
347 };
348 };
348 };
349
349
350 // Groups the object's values by a criterion. Pass either a string attribute
350 // Groups the object's values by a criterion. Pass either a string attribute
351 // to group by, or a function that returns the criterion.
351 // to group by, or a function that returns the criterion.
352 _.groupBy = group(function(result, key, value) {
352 _.groupBy = group(function(result, key, value) {
353 _.has(result, key) ? result[key].push(value) : result[key] = [value];
353 _.has(result, key) ? result[key].push(value) : result[key] = [value];
354 });
354 });
355
355
356 // Indexes the object's values by a criterion, similar to `groupBy`, but for
356 // Indexes the object's values by a criterion, similar to `groupBy`, but for
357 // when you know that your index values will be unique.
357 // when you know that your index values will be unique.
358 _.indexBy = group(function(result, key, value) {
358 _.indexBy = group(function(result, key, value) {
359 result[key] = value;
359 result[key] = value;
360 });
360 });
361
361
362 // Counts instances of an object that group by a certain criterion. Pass
362 // Counts instances of an object that group by a certain criterion. Pass
363 // either a string attribute to count by, or a function that returns the
363 // either a string attribute to count by, or a function that returns the
364 // criterion.
364 // criterion.
365 _.countBy = group(function(result, key) {
365 _.countBy = group(function(result, key) {
366 _.has(result, key) ? result[key]++ : result[key] = 1;
366 _.has(result, key) ? result[key]++ : result[key] = 1;
367 });
367 });
368
368
369 // Use a comparator function to figure out the smallest index at which
369 // Use a comparator function to figure out the smallest index at which
370 // an object should be inserted so as to maintain order. Uses binary search.
370 // an object should be inserted so as to maintain order. Uses binary search.
371 _.sortedIndex = function(array, obj, iterator, context) {
371 _.sortedIndex = function(array, obj, iterator, context) {
372 iterator = lookupIterator(iterator);
372 iterator = lookupIterator(iterator);
373 var value = iterator.call(context, obj);
373 var value = iterator.call(context, obj);
374 var low = 0, high = array.length;
374 var low = 0, high = array.length;
375 while (low < high) {
375 while (low < high) {
376 var mid = (low + high) >>> 1;
376 var mid = (low + high) >>> 1;
377 iterator.call(context, array[mid]) < value ? low = mid + 1 : high = mid;
377 iterator.call(context, array[mid]) < value ? low = mid + 1 : high = mid;
378 }
378 }
379 return low;
379 return low;
380 };
380 };
381
381
382 // Safely create a real, live array from anything iterable.
382 // Safely create a real, live array from anything iterable.
383 _.toArray = function(obj) {
383 _.toArray = function(obj) {
384 if (!obj) return [];
384 if (!obj) return [];
385 if (_.isArray(obj)) return slice.call(obj);
385 if (_.isArray(obj)) return slice.call(obj);
386 if (obj.length === +obj.length) return _.map(obj, _.identity);
386 if (obj.length === +obj.length) return _.map(obj, _.identity);
387 return _.values(obj);
387 return _.values(obj);
388 };
388 };
389
389
390 // Return the number of elements in an object.
390 // Return the number of elements in an object.
391 _.size = function(obj) {
391 _.size = function(obj) {
392 if (obj == null) return 0;
392 if (obj == null) return 0;
393 return (obj.length === +obj.length) ? obj.length : _.keys(obj).length;
393 return (obj.length === +obj.length) ? obj.length : _.keys(obj).length;
394 };
394 };
395
395
396 // Array Functions
396 // Array Functions
397 // ---------------
397 // ---------------
398
398
399 // Get the first element of an array. Passing **n** will return the first N
399 // Get the first element of an array. Passing **n** will return the first N
400 // values in the array. Aliased as `head` and `take`. The **guard** check
400 // values in the array. Aliased as `head` and `take`. The **guard** check
401 // allows it to work with `_.map`.
401 // allows it to work with `_.map`.
402 _.first = _.head = _.take = function(array, n, guard) {
402 _.first = _.head = _.take = function(array, n, guard) {
403 if (array == null) return void 0;
403 if (array == null) return void 0;
404 if ((n == null) || guard) return array[0];
404 if ((n == null) || guard) return array[0];
405 if (n < 0) return [];
405 if (n < 0) return [];
406 return slice.call(array, 0, n);
406 return slice.call(array, 0, n);
407 };
407 };
408
408
409 // Returns everything but the last entry of the array. Especially useful on
409 // Returns everything but the last entry of the array. Especially useful on
410 // the arguments object. Passing **n** will return all the values in
410 // the arguments object. Passing **n** will return all the values in
411 // the array, excluding the last N. The **guard** check allows it to work with
411 // the array, excluding the last N. The **guard** check allows it to work with
412 // `_.map`.
412 // `_.map`.
413 _.initial = function(array, n, guard) {
413 _.initial = function(array, n, guard) {
414 return slice.call(array, 0, array.length - ((n == null) || guard ? 1 : n));
414 return slice.call(array, 0, array.length - ((n == null) || guard ? 1 : n));
415 };
415 };
416
416
417 // Get the last element of an array. Passing **n** will return the last N
417 // Get the last element of an array. Passing **n** will return the last N
418 // values in the array. The **guard** check allows it to work with `_.map`.
418 // values in the array. The **guard** check allows it to work with `_.map`.
419 _.last = function(array, n, guard) {
419 _.last = function(array, n, guard) {
420 if (array == null) return void 0;
420 if (array == null) return void 0;
421 if ((n == null) || guard) return array[array.length - 1];
421 if ((n == null) || guard) return array[array.length - 1];
422 return slice.call(array, Math.max(array.length - n, 0));
422 return slice.call(array, Math.max(array.length - n, 0));
423 };
423 };
424
424
425 // Returns everything but the first entry of the array. Aliased as `tail` and `drop`.
425 // Returns everything but the first entry of the array. Aliased as `tail` and `drop`.
426 // Especially useful on the arguments object. Passing an **n** will return
426 // Especially useful on the arguments object. Passing an **n** will return
427 // the rest N values in the array. The **guard**
427 // the rest N values in the array. The **guard**
428 // check allows it to work with `_.map`.
428 // check allows it to work with `_.map`.
429 _.rest = _.tail = _.drop = function(array, n, guard) {
429 _.rest = _.tail = _.drop = function(array, n, guard) {
430 return slice.call(array, (n == null) || guard ? 1 : n);
430 return slice.call(array, (n == null) || guard ? 1 : n);
431 };
431 };
432
432
433 // Trim out all falsy values from an array.
433 // Trim out all falsy values from an array.
434 _.compact = function(array) {
434 _.compact = function(array) {
435 return _.filter(array, _.identity);
435 return _.filter(array, _.identity);
436 };
436 };
437
437
438 // Internal implementation of a recursive `flatten` function.
438 // Internal implementation of a recursive `flatten` function.
439 var flatten = function(input, shallow, output) {
439 var flatten = function(input, shallow, output) {
440 if (shallow && _.every(input, _.isArray)) {
440 if (shallow && _.every(input, _.isArray)) {
441 return concat.apply(output, input);
441 return concat.apply(output, input);
442 }
442 }
443 each(input, function(value) {
443 each(input, function(value) {
444 if (_.isArray(value) || _.isArguments(value)) {
444 if (_.isArray(value) || _.isArguments(value)) {
445 shallow ? push.apply(output, value) : flatten(value, shallow, output);
445 shallow ? push.apply(output, value) : flatten(value, shallow, output);
446 } else {
446 } else {
447 output.push(value);
447 output.push(value);
448 }
448 }
449 });
449 });
450 return output;
450 return output;
451 };
451 };
452
452
453 // Flatten out an array, either recursively (by default), or just one level.
453 // Flatten out an array, either recursively (by default), or just one level.
454 _.flatten = function(array, shallow) {
454 _.flatten = function(array, shallow) {
455 return flatten(array, shallow, []);
455 return flatten(array, shallow, []);
456 };
456 };
457
457
458 // Return a version of the array that does not contain the specified value(s).
458 // Return a version of the array that does not contain the specified value(s).
459 _.without = function(array) {
459 _.without = function(array) {
460 return _.difference(array, slice.call(arguments, 1));
460 return _.difference(array, slice.call(arguments, 1));
461 };
461 };
462
462
463 // Split an array into two arrays: one whose elements all satisfy the given
463 // Split an array into two arrays: one whose elements all satisfy the given
464 // predicate, and one whose elements all do not satisfy the predicate.
464 // predicate, and one whose elements all do not satisfy the predicate.
465 _.partition = function(array, predicate) {
465 _.partition = function(array, predicate) {
466 var pass = [], fail = [];
466 var pass = [], fail = [];
467 each(array, function(elem) {
467 each(array, function(elem) {
468 (predicate(elem) ? pass : fail).push(elem);
468 (predicate(elem) ? pass : fail).push(elem);
469 });
469 });
470 return [pass, fail];
470 return [pass, fail];
471 };
471 };
472
472
473 // Produce a duplicate-free version of the array. If the array has already
473 // Produce a duplicate-free version of the array. If the array has already
474 // been sorted, you have the option of using a faster algorithm.
474 // been sorted, you have the option of using a faster algorithm.
475 // Aliased as `unique`.
475 // Aliased as `unique`.
476 _.uniq = _.unique = function(array, isSorted, iterator, context) {
476 _.uniq = _.unique = function(array, isSorted, iterator, context) {
477 if (_.isFunction(isSorted)) {
477 if (_.isFunction(isSorted)) {
478 context = iterator;
478 context = iterator;
479 iterator = isSorted;
479 iterator = isSorted;
480 isSorted = false;
480 isSorted = false;
481 }
481 }
482 var initial = iterator ? _.map(array, iterator, context) : array;
482 var initial = iterator ? _.map(array, iterator, context) : array;
483 var results = [];
483 var results = [];
484 var seen = [];
484 var seen = [];
485 each(initial, function(value, index) {
485 each(initial, function(value, index) {
486 if (isSorted ? (!index || seen[seen.length - 1] !== value) : !_.contains(seen, value)) {
486 if (isSorted ? (!index || seen[seen.length - 1] !== value) : !_.contains(seen, value)) {
487 seen.push(value);
487 seen.push(value);
488 results.push(array[index]);
488 results.push(array[index]);
489 }
489 }
490 });
490 });
491 return results;
491 return results;
492 };
492 };
493
493
494 // Produce an array that contains the union: each distinct element from all of
494 // Produce an array that contains the union: each distinct element from all of
495 // the passed-in arrays.
495 // the passed-in arrays.
496 _.union = function() {
496 _.union = function() {
497 return _.uniq(_.flatten(arguments, true));
497 return _.uniq(_.flatten(arguments, true));
498 };
498 };
499
499
500 // Produce an array that contains every item shared between all the
500 // Produce an array that contains every item shared between all the
501 // passed-in arrays.
501 // passed-in arrays.
502 _.intersection = function(array) {
502 _.intersection = function(array) {
503 var rest = slice.call(arguments, 1);
503 var rest = slice.call(arguments, 1);
504 return _.filter(_.uniq(array), function(item) {
504 return _.filter(_.uniq(array), function(item) {
505 return _.every(rest, function(other) {
505 return _.every(rest, function(other) {
506 return _.contains(other, item);
506 return _.contains(other, item);
507 });
507 });
508 });
508 });
509 };
509 };
510
510
511 // Take the difference between one array and a number of other arrays.
511 // Take the difference between one array and a number of other arrays.
512 // Only the elements present in just the first array will remain.
512 // Only the elements present in just the first array will remain.
513 _.difference = function(array) {
513 _.difference = function(array) {
514 var rest = concat.apply(ArrayProto, slice.call(arguments, 1));
514 var rest = concat.apply(ArrayProto, slice.call(arguments, 1));
515 return _.filter(array, function(value){ return !_.contains(rest, value); });
515 return _.filter(array, function(value){ return !_.contains(rest, value); });
516 };
516 };
517
517
518 // Zip together multiple lists into a single array -- elements that share
518 // Zip together multiple lists into a single array -- elements that share
519 // an index go together.
519 // an index go together.
520 _.zip = function() {
520 _.zip = function() {
521 var length = _.max(_.pluck(arguments, 'length').concat(0));
521 var length = _.max(_.pluck(arguments, 'length').concat(0));
522 var results = new Array(length);
522 var results = new Array(length);
523 for (var i = 0; i < length; i++) {
523 for (var i = 0; i < length; i++) {
524 results[i] = _.pluck(arguments, '' + i);
524 results[i] = _.pluck(arguments, '' + i);
525 }
525 }
526 return results;
526 return results;
527 };
527 };
528
528
529 // Converts lists into objects. Pass either a single array of `[key, value]`
529 // Converts lists into objects. Pass either a single array of `[key, value]`
530 // pairs, or two parallel arrays of the same length -- one of keys, and one of
530 // pairs, or two parallel arrays of the same length -- one of keys, and one of
531 // the corresponding values.
531 // the corresponding values.
532 _.object = function(list, values) {
532 _.object = function(list, values) {
533 if (list == null) return {};
533 if (list == null) return {};
534 var result = {};
534 var result = {};
535 for (var i = 0, length = list.length; i < length; i++) {
535 for (var i = 0, length = list.length; i < length; i++) {
536 if (values) {
536 if (values) {
537 result[list[i]] = values[i];
537 result[list[i]] = values[i];
538 } else {
538 } else {
539 result[list[i][0]] = list[i][1];
539 result[list[i][0]] = list[i][1];
540 }
540 }
541 }
541 }
542 return result;
542 return result;
543 };
543 };
544
544
545 // If the browser doesn't supply us with indexOf (I'm looking at you, **MSIE**),
545 // If the browser doesn't supply us with indexOf (I'm looking at you, **MSIE**),
546 // we need this function. Return the position of the first occurrence of an
546 // we need this function. Return the position of the first occurrence of an
547 // item in an array, or -1 if the item is not included in the array.
547 // item in an array, or -1 if the item is not included in the array.
548 // Delegates to **ECMAScript 5**'s native `indexOf` if available.
548 // Delegates to **ECMAScript 5**'s native `indexOf` if available.
549 // If the array is large and already in sort order, pass `true`
549 // If the array is large and already in sort order, pass `true`
550 // for **isSorted** to use binary search.
550 // for **isSorted** to use binary search.
551 _.indexOf = function(array, item, isSorted) {
551 _.indexOf = function(array, item, isSorted) {
552 if (array == null) return -1;
552 if (array == null) return -1;
553 var i = 0, length = array.length;
553 var i = 0, length = array.length;
554 if (isSorted) {
554 if (isSorted) {
555 if (typeof isSorted == 'number') {
555 if (typeof isSorted == 'number') {
556 i = (isSorted < 0 ? Math.max(0, length + isSorted) : isSorted);
556 i = (isSorted < 0 ? Math.max(0, length + isSorted) : isSorted);
557 } else {
557 } else {
558 i = _.sortedIndex(array, item);
558 i = _.sortedIndex(array, item);
559 return array[i] === item ? i : -1;
559 return array[i] === item ? i : -1;
560 }
560 }
561 }
561 }
562 if (nativeIndexOf && array.indexOf === nativeIndexOf) return array.indexOf(item, isSorted);
562 if (nativeIndexOf && array.indexOf === nativeIndexOf) return array.indexOf(item, isSorted);
563 for (; i < length; i++) if (array[i] === item) return i;
563 for (; i < length; i++) if (array[i] === item) return i;
564 return -1;
564 return -1;
565 };
565 };
566
566
567 // Delegates to **ECMAScript 5**'s native `lastIndexOf` if available.
567 // Delegates to **ECMAScript 5**'s native `lastIndexOf` if available.
568 _.lastIndexOf = function(array, item, from) {
568 _.lastIndexOf = function(array, item, from) {
569 if (array == null) return -1;
569 if (array == null) return -1;
570 var hasIndex = from != null;
570 var hasIndex = from != null;
571 if (nativeLastIndexOf && array.lastIndexOf === nativeLastIndexOf) {
571 if (nativeLastIndexOf && array.lastIndexOf === nativeLastIndexOf) {
572 return hasIndex ? array.lastIndexOf(item, from) : array.lastIndexOf(item);
572 return hasIndex ? array.lastIndexOf(item, from) : array.lastIndexOf(item);
573 }
573 }
574 var i = (hasIndex ? from : array.length);
574 var i = (hasIndex ? from : array.length);
575 while (i--) if (array[i] === item) return i;
575 while (i--) if (array[i] === item) return i;
576 return -1;
576 return -1;
577 };
577 };
578
578
579 // Generate an integer Array containing an arithmetic progression. A port of
579 // Generate an integer Array containing an arithmetic progression. A port of
580 // the native Python `range()` function. See
580 // the native Python `range()` function. See
581 // [the Python documentation](http://docs.python.org/library/functions.html#range).
581 // [the Python documentation](http://docs.python.org/library/functions.html#range).
582 _.range = function(start, stop, step) {
582 _.range = function(start, stop, step) {
583 if (arguments.length <= 1) {
583 if (arguments.length <= 1) {
584 stop = start || 0;
584 stop = start || 0;
585 start = 0;
585 start = 0;
586 }
586 }
587 step = arguments[2] || 1;
587 step = arguments[2] || 1;
588
588
589 var length = Math.max(Math.ceil((stop - start) / step), 0);
589 var length = Math.max(Math.ceil((stop - start) / step), 0);
590 var idx = 0;
590 var idx = 0;
591 var range = new Array(length);
591 var range = new Array(length);
592
592
593 while(idx < length) {
593 while(idx < length) {
594 range[idx++] = start;
594 range[idx++] = start;
595 start += step;
595 start += step;
596 }
596 }
597
597
598 return range;
598 return range;
599 };
599 };
600
600
601 // Function (ahem) Functions
601 // Function (ahem) Functions
602 // ------------------
602 // ------------------
603
603
604 // Reusable constructor function for prototype setting.
604 // Reusable constructor function for prototype setting.
605 var ctor = function(){};
605 var ctor = function(){};
606
606
607 // Create a function bound to a given object (assigning `this`, and arguments,
607 // Create a function bound to a given object (assigning `this`, and arguments,
608 // optionally). Delegates to **ECMAScript 5**'s native `Function.bind` if
608 // optionally). Delegates to **ECMAScript 5**'s native `Function.bind` if
609 // available.
609 // available.
610 _.bind = function(func, context) {
610 _.bind = function(func, context) {
611 var args, bound;
611 var args, bound;
612 if (nativeBind && func.bind === nativeBind) return nativeBind.apply(func, slice.call(arguments, 1));
612 if (nativeBind && func.bind === nativeBind) return nativeBind.apply(func, slice.call(arguments, 1));
613 if (!_.isFunction(func)) throw new TypeError;
613 if (!_.isFunction(func)) throw new TypeError;
614 args = slice.call(arguments, 2);
614 args = slice.call(arguments, 2);
615 return bound = function() {
615 return bound = function() {
616 if (!(this instanceof bound)) return func.apply(context, args.concat(slice.call(arguments)));
616 if (!(this instanceof bound)) return func.apply(context, args.concat(slice.call(arguments)));
617 ctor.prototype = func.prototype;
617 ctor.prototype = func.prototype;
618 var self = new ctor;
618 var self = new ctor;
619 ctor.prototype = null;
619 ctor.prototype = null;
620 var result = func.apply(self, args.concat(slice.call(arguments)));
620 var result = func.apply(self, args.concat(slice.call(arguments)));
621 if (Object(result) === result) return result;
621 if (Object(result) === result) return result;
622 return self;
622 return self;
623 };
623 };
624 };
624 };
625
625
626 // Partially apply a function by creating a version that has had some of its
626 // Partially apply a function by creating a version that has had some of its
627 // arguments pre-filled, without changing its dynamic `this` context. _ acts
627 // arguments pre-filled, without changing its dynamic `this` context. _ acts
628 // as a placeholder, allowing any combination of arguments to be pre-filled.
628 // as a placeholder, allowing any combination of arguments to be pre-filled.
629 _.partial = function(func) {
629 _.partial = function(func) {
630 var boundArgs = slice.call(arguments, 1);
630 var boundArgs = slice.call(arguments, 1);
631 return function() {
631 return function() {
632 var position = 0;
632 var position = 0;
633 var args = boundArgs.slice();
633 var args = boundArgs.slice();
634 for (var i = 0, length = args.length; i < length; i++) {
634 for (var i = 0, length = args.length; i < length; i++) {
635 if (args[i] === _) args[i] = arguments[position++];
635 if (args[i] === _) args[i] = arguments[position++];
636 }
636 }
637 while (position < arguments.length) args.push(arguments[position++]);
637 while (position < arguments.length) args.push(arguments[position++]);
638 return func.apply(this, args);
638 return func.apply(this, args);
639 };
639 };
640 };
640 };
641
641
642 // Bind a number of an object's methods to that object. Remaining arguments
642 // Bind a number of an object's methods to that object. Remaining arguments
643 // are the method names to be bound. Useful for ensuring that all callbacks
643 // are the method names to be bound. Useful for ensuring that all callbacks
644 // defined on an object belong to it.
644 // defined on an object belong to it.
645 _.bindAll = function(obj) {
645 _.bindAll = function(obj) {
646 var funcs = slice.call(arguments, 1);
646 var funcs = slice.call(arguments, 1);
647 if (funcs.length === 0) throw new Error('bindAll must be passed function names');
647 if (funcs.length === 0) throw new Error('bindAll must be passed function names');
648 each(funcs, function(f) { obj[f] = _.bind(obj[f], obj); });
648 each(funcs, function(f) { obj[f] = _.bind(obj[f], obj); });
649 return obj;
649 return obj;
650 };
650 };
651
651
652 // Memoize an expensive function by storing its results.
652 // Memoize an expensive function by storing its results.
653 _.memoize = function(func, hasher) {
653 _.memoize = function(func, hasher) {
654 var memo = {};
654 var memo = {};
655 hasher || (hasher = _.identity);
655 hasher || (hasher = _.identity);
656 return function() {
656 return function() {
657 var key = hasher.apply(this, arguments);
657 var key = hasher.apply(this, arguments);
658 return _.has(memo, key) ? memo[key] : (memo[key] = func.apply(this, arguments));
658 return _.has(memo, key) ? memo[key] : (memo[key] = func.apply(this, arguments));
659 };
659 };
660 };
660 };
661
661
662 // Delays a function for the given number of milliseconds, and then calls
662 // Delays a function for the given number of milliseconds, and then calls
663 // it with the arguments supplied.
663 // it with the arguments supplied.
664 _.delay = function(func, wait) {
664 _.delay = function(func, wait) {
665 var args = slice.call(arguments, 2);
665 var args = slice.call(arguments, 2);
666 return setTimeout(function(){ return func.apply(null, args); }, wait);
666 return setTimeout(function(){ return func.apply(null, args); }, wait);
667 };
667 };
668
668
669 // Defers a function, scheduling it to run after the current call stack has
669 // Defers a function, scheduling it to run after the current call stack has
670 // cleared.
670 // cleared.
671 _.defer = function(func) {
671 _.defer = function(func) {
672 return _.delay.apply(_, [func, 1].concat(slice.call(arguments, 1)));
672 return _.delay.apply(_, [func, 1].concat(slice.call(arguments, 1)));
673 };
673 };
674
674
675 // Returns a function, that, when invoked, will only be triggered at most once
675 // Returns a function, that, when invoked, will only be triggered at most once
676 // during a given window of time. Normally, the throttled function will run
676 // during a given window of time. Normally, the throttled function will run
677 // as much as it can, without ever going more than once per `wait` duration;
677 // as much as it can, without ever going more than once per `wait` duration;
678 // but if you'd like to disable the execution on the leading edge, pass
678 // but if you'd like to disable the execution on the leading edge, pass
679 // `{leading: false}`. To disable execution on the trailing edge, ditto.
679 // `{leading: false}`. To disable execution on the trailing edge, ditto.
680 _.throttle = function(func, wait, options) {
680 _.throttle = function(func, wait, options) {
681 var context, args, result;
681 var context, args, result;
682 var timeout = null;
682 var timeout = null;
683 var previous = 0;
683 var previous = 0;
684 options || (options = {});
684 options || (options = {});
685 var later = function() {
685 var later = function() {
686 previous = options.leading === false ? 0 : _.now();
686 previous = options.leading === false ? 0 : _.now();
687 timeout = null;
687 timeout = null;
688 result = func.apply(context, args);
688 result = func.apply(context, args);
689 context = args = null;
689 context = args = null;
690 };
690 };
691 return function() {
691 return function() {
692 var now = _.now();
692 var now = _.now();
693 if (!previous && options.leading === false) previous = now;
693 if (!previous && options.leading === false) previous = now;
694 var remaining = wait - (now - previous);
694 var remaining = wait - (now - previous);
695 context = this;
695 context = this;
696 args = arguments;
696 args = arguments;
697 if (remaining <= 0) {
697 if (remaining <= 0) {
698 clearTimeout(timeout);
698 clearTimeout(timeout);
699 timeout = null;
699 timeout = null;
700 previous = now;
700 previous = now;
701 result = func.apply(context, args);
701 result = func.apply(context, args);
702 context = args = null;
702 context = args = null;
703 } else if (!timeout && options.trailing !== false) {
703 } else if (!timeout && options.trailing !== false) {
704 timeout = setTimeout(later, remaining);
704 timeout = setTimeout(later, remaining);
705 }
705 }
706 return result;
706 return result;
707 };
707 };
708 };
708 };
709
709
710 // Returns a function, that, as long as it continues to be invoked, will not
710 // Returns a function, that, as long as it continues to be invoked, will not
711 // be triggered. The function will be called after it stops being called for
711 // be triggered. The function will be called after it stops being called for
712 // N milliseconds. If `immediate` is passed, trigger the function on the
712 // N milliseconds. If `immediate` is passed, trigger the function on the
713 // leading edge, instead of the trailing.
713 // leading edge, instead of the trailing.
714 _.debounce = function(func, wait, immediate) {
714 _.debounce = function(func, wait, immediate) {
715 var timeout, args, context, timestamp, result;
715 var timeout, args, context, timestamp, result;
716
716
717 var later = function() {
717 var later = function() {
718 var last = _.now() - timestamp;
718 var last = _.now() - timestamp;
719 if (last < wait) {
719 if (last < wait) {
720 timeout = setTimeout(later, wait - last);
720 timeout = setTimeout(later, wait - last);
721 } else {
721 } else {
722 timeout = null;
722 timeout = null;
723 if (!immediate) {
723 if (!immediate) {
724 result = func.apply(context, args);
724 result = func.apply(context, args);
725 context = args = null;
725 context = args = null;
726 }
726 }
727 }
727 }
728 };
728 };
729
729
730 return function() {
730 return function() {
731 context = this;
731 context = this;
732 args = arguments;
732 args = arguments;
733 timestamp = _.now();
733 timestamp = _.now();
734 var callNow = immediate && !timeout;
734 var callNow = immediate && !timeout;
735 if (!timeout) {
735 if (!timeout) {
736 timeout = setTimeout(later, wait);
736 timeout = setTimeout(later, wait);
737 }
737 }
738 if (callNow) {
738 if (callNow) {
739 result = func.apply(context, args);
739 result = func.apply(context, args);
740 context = args = null;
740 context = args = null;
741 }
741 }
742
742
743 return result;
743 return result;
744 };
744 };
745 };
745 };
746
746
747 // Returns a function that will be executed at most one time, no matter how
747 // Returns a function that will be executed at most one time, no matter how
748 // often you call it. Useful for lazy initialization.
748 // often you call it. Useful for lazy initialization.
749 _.once = function(func) {
749 _.once = function(func) {
750 var ran = false, memo;
750 var ran = false, memo;
751 return function() {
751 return function() {
752 if (ran) return memo;
752 if (ran) return memo;
753 ran = true;
753 ran = true;
754 memo = func.apply(this, arguments);
754 memo = func.apply(this, arguments);
755 func = null;
755 func = null;
756 return memo;
756 return memo;
757 };
757 };
758 };
758 };
759
759
760 // Returns the first function passed as an argument to the second,
760 // Returns the first function passed as an argument to the second,
761 // allowing you to adjust arguments, run code before and after, and
761 // allowing you to adjust arguments, run code before and after, and
762 // conditionally execute the original function.
762 // conditionally execute the original function.
763 _.wrap = function(func, wrapper) {
763 _.wrap = function(func, wrapper) {
764 return _.partial(wrapper, func);
764 return _.partial(wrapper, func);
765 };
765 };
766
766
767 // Returns a function that is the composition of a list of functions, each
767 // Returns a function that is the composition of a list of functions, each
768 // consuming the return value of the function that follows.
768 // consuming the return value of the function that follows.
769 _.compose = function() {
769 _.compose = function() {
770 var funcs = arguments;
770 var funcs = arguments;
771 return function() {
771 return function() {
772 var args = arguments;
772 var args = arguments;
773 for (var i = funcs.length - 1; i >= 0; i--) {
773 for (var i = funcs.length - 1; i >= 0; i--) {
774 args = [funcs[i].apply(this, args)];
774 args = [funcs[i].apply(this, args)];
775 }
775 }
776 return args[0];
776 return args[0];
777 };
777 };
778 };
778 };
779
779
780 // Returns a function that will only be executed after being called N times.
780 // Returns a function that will only be executed after being called N times.
781 _.after = function(times, func) {
781 _.after = function(times, func) {
782 return function() {
782 return function() {
783 if (--times < 1) {
783 if (--times < 1) {
784 return func.apply(this, arguments);
784 return func.apply(this, arguments);
785 }
785 }
786 };
786 };
787 };
787 };
788
788
789 // Object Functions
789 // Object Functions
790 // ----------------
790 // ----------------
791
791
792 // Retrieve the names of an object's properties.
792 // Retrieve the names of an object's properties.
793 // Delegates to **ECMAScript 5**'s native `Object.keys`
793 // Delegates to **ECMAScript 5**'s native `Object.keys`
794 _.keys = function(obj) {
794 _.keys = function(obj) {
795 if (!_.isObject(obj)) return [];
795 if (!_.isObject(obj)) return [];
796 if (nativeKeys) return nativeKeys(obj);
796 if (nativeKeys) return nativeKeys(obj);
797 var keys = [];
797 var keys = [];
798 for (var key in obj) if (_.has(obj, key)) keys.push(key);
798 for (var key in obj) if (_.has(obj, key)) keys.push(key);
799 return keys;
799 return keys;
800 };
800 };
801
801
802 // Retrieve the values of an object's properties.
802 // Retrieve the values of an object's properties.
803 _.values = function(obj) {
803 _.values = function(obj) {
804 var keys = _.keys(obj);
804 var keys = _.keys(obj);
805 var length = keys.length;
805 var length = keys.length;
806 var values = new Array(length);
806 var values = new Array(length);
807 for (var i = 0; i < length; i++) {
807 for (var i = 0; i < length; i++) {
808 values[i] = obj[keys[i]];
808 values[i] = obj[keys[i]];
809 }
809 }
810 return values;
810 return values;
811 };
811 };
812
812
813 // Convert an object into a list of `[key, value]` pairs.
813 // Convert an object into a list of `[key, value]` pairs.
814 _.pairs = function(obj) {
814 _.pairs = function(obj) {
815 var keys = _.keys(obj);
815 var keys = _.keys(obj);
816 var length = keys.length;
816 var length = keys.length;
817 var pairs = new Array(length);
817 var pairs = new Array(length);
818 for (var i = 0; i < length; i++) {
818 for (var i = 0; i < length; i++) {
819 pairs[i] = [keys[i], obj[keys[i]]];
819 pairs[i] = [keys[i], obj[keys[i]]];
820 }
820 }
821 return pairs;
821 return pairs;
822 };
822 };
823
823
824 // Invert the keys and values of an object. The values must be serializable.
824 // Invert the keys and values of an object. The values must be serializable.
825 _.invert = function(obj) {
825 _.invert = function(obj) {
826 var result = {};
826 var result = {};
827 var keys = _.keys(obj);
827 var keys = _.keys(obj);
828 for (var i = 0, length = keys.length; i < length; i++) {
828 for (var i = 0, length = keys.length; i < length; i++) {
829 result[obj[keys[i]]] = keys[i];
829 result[obj[keys[i]]] = keys[i];
830 }
830 }
831 return result;
831 return result;
832 };
832 };
833
833
834 // Return a sorted list of the function names available on the object.
834 // Return a sorted list of the function names available on the object.
835 // Aliased as `methods`
835 // Aliased as `methods`
836 _.functions = _.methods = function(obj) {
836 _.functions = _.methods = function(obj) {
837 var names = [];
837 var names = [];
838 for (var key in obj) {
838 for (var key in obj) {
839 if (_.isFunction(obj[key])) names.push(key);
839 if (_.isFunction(obj[key])) names.push(key);
840 }
840 }
841 return names.sort();
841 return names.sort();
842 };
842 };
843
843
844 // Extend a given object with all the properties in passed-in object(s).
844 // Extend a given object with all the properties in passed-in object(s).
845 _.extend = function(obj) {
845 _.extend = function(obj) {
846 each(slice.call(arguments, 1), function(source) {
846 each(slice.call(arguments, 1), function(source) {
847 if (source) {
847 if (source) {
848 for (var prop in source) {
848 for (var prop in source) {
849 obj[prop] = source[prop];
849 obj[prop] = source[prop];
850 }
850 }
851 }
851 }
852 });
852 });
853 return obj;
853 return obj;
854 };
854 };
855
855
856 // Return a copy of the object only containing the whitelisted properties.
856 // Return a copy of the object only containing the whitelisted properties.
857 _.pick = function(obj) {
857 _.pick = function(obj) {
858 var copy = {};
858 var copy = {};
859 var keys = concat.apply(ArrayProto, slice.call(arguments, 1));
859 var keys = concat.apply(ArrayProto, slice.call(arguments, 1));
860 each(keys, function(key) {
860 each(keys, function(key) {
861 if (key in obj) copy[key] = obj[key];
861 if (key in obj) copy[key] = obj[key];
862 });
862 });
863 return copy;
863 return copy;
864 };
864 };
865
865
866 // Return a copy of the object without the blacklisted properties.
866 // Return a copy of the object without the blacklisted properties.
867 _.omit = function(obj) {
867 _.omit = function(obj) {
868 var copy = {};
868 var copy = {};
869 var keys = concat.apply(ArrayProto, slice.call(arguments, 1));
869 var keys = concat.apply(ArrayProto, slice.call(arguments, 1));
870 for (var key in obj) {
870 for (var key in obj) {
871 if (!_.contains(keys, key)) copy[key] = obj[key];
871 if (!_.contains(keys, key)) copy[key] = obj[key];
872 }
872 }
873 return copy;
873 return copy;
874 };
874 };
875
875
876 // Fill in a given object with default properties.
876 // Fill in a given object with default properties.
877 _.defaults = function(obj) {
877 _.defaults = function(obj) {
878 each(slice.call(arguments, 1), function(source) {
878 each(slice.call(arguments, 1), function(source) {
879 if (source) {
879 if (source) {
880 for (var prop in source) {
880 for (var prop in source) {
881 if (obj[prop] === void 0) obj[prop] = source[prop];
881 if (obj[prop] === void 0) obj[prop] = source[prop];
882 }
882 }
883 }
883 }
884 });
884 });
885 return obj;
885 return obj;
886 };
886 };
887
887
888 // Create a (shallow-cloned) duplicate of an object.
888 // Create a (shallow-cloned) duplicate of an object.
889 _.clone = function(obj) {
889 _.clone = function(obj) {
890 if (!_.isObject(obj)) return obj;
890 if (!_.isObject(obj)) return obj;
891 return _.isArray(obj) ? obj.slice() : _.extend({}, obj);
891 return _.isArray(obj) ? obj.slice() : _.extend({}, obj);
892 };
892 };
893
893
894 // Invokes interceptor with the obj, and then returns obj.
894 // Invokes interceptor with the obj, and then returns obj.
895 // The primary purpose of this method is to "tap into" a method chain, in
895 // The primary purpose of this method is to "tap into" a method chain, in
896 // order to perform operations on intermediate results within the chain.
896 // order to perform operations on intermediate results within the chain.
897 _.tap = function(obj, interceptor) {
897 _.tap = function(obj, interceptor) {
898 interceptor(obj);
898 interceptor(obj);
899 return obj;
899 return obj;
900 };
900 };
901
901
902 // Internal recursive comparison function for `isEqual`.
902 // Internal recursive comparison function for `isEqual`.
903 var eq = function(a, b, aStack, bStack) {
903 var eq = function(a, b, aStack, bStack) {
904 // Identical objects are equal. `0 === -0`, but they aren't identical.
904 // Identical objects are equal. `0 === -0`, but they aren't identical.
905 // See the [Harmony `egal` proposal](http://wiki.ecmascript.org/doku.php?id=harmony:egal).
905 // See the [Harmony `egal` proposal](http://wiki.ecmascript.org/doku.php?id=harmony:egal).
906 if (a === b) return a !== 0 || 1 / a == 1 / b;
906 if (a === b) return a !== 0 || 1 / a == 1 / b;
907 // A strict comparison is necessary because `null == undefined`.
907 // A strict comparison is necessary because `null == undefined`.
908 if (a == null || b == null) return a === b;
908 if (a == null || b == null) return a === b;
909 // Unwrap any wrapped objects.
909 // Unwrap any wrapped objects.
910 if (a instanceof _) a = a._wrapped;
910 if (a instanceof _) a = a._wrapped;
911 if (b instanceof _) b = b._wrapped;
911 if (b instanceof _) b = b._wrapped;
912 // Compare `[[Class]]` names.
912 // Compare `[[Class]]` names.
913 var className = toString.call(a);
913 var className = toString.call(a);
914 if (className != toString.call(b)) return false;
914 if (className != toString.call(b)) return false;
915 switch (className) {
915 switch (className) {
916 // Strings, numbers, dates, and booleans are compared by value.
916 // Strings, numbers, dates, and booleans are compared by value.
917 case '[object String]':
917 case '[object String]':
918 // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is
918 // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is
919 // equivalent to `new String("5")`.
919 // equivalent to `new String("5")`.
920 return a == String(b);
920 return a == String(b);
921 case '[object Number]':
921 case '[object Number]':
922 // `NaN`s are equivalent, but non-reflexive. An `egal` comparison is performed for
922 // `NaN`s are equivalent, but non-reflexive. An `egal` comparison is performed for
923 // other numeric values.
923 // other numeric values.
924 return a != +a ? b != +b : (a == 0 ? 1 / a == 1 / b : a == +b);
924 return a != +a ? b != +b : (a == 0 ? 1 / a == 1 / b : a == +b);
925 case '[object Date]':
925 case '[object Date]':
926 case '[object Boolean]':
926 case '[object Boolean]':
927 // Coerce dates and booleans to numeric primitive values. Dates are compared by their
927 // Coerce dates and booleans to numeric primitive values. Dates are compared by their
928 // millisecond representations. Note that invalid dates with millisecond representations
928 // millisecond representations. Note that invalid dates with millisecond representations
929 // of `NaN` are not equivalent.
929 // of `NaN` are not equivalent.
930 return +a == +b;
930 return +a == +b;
931 // RegExps are compared by their source patterns and flags.
931 // RegExps are compared by their source patterns and flags.
932 case '[object RegExp]':
932 case '[object RegExp]':
933 return a.source == b.source &&
933 return a.source == b.source &&
934 a.global == b.global &&
934 a.global == b.global &&
935 a.multiline == b.multiline &&
935 a.multiline == b.multiline &&
936 a.ignoreCase == b.ignoreCase;
936 a.ignoreCase == b.ignoreCase;
937 }
937 }
938 if (typeof a != 'object' || typeof b != 'object') return false;
938 if (typeof a != 'object' || typeof b != 'object') return false;
939 // Assume equality for cyclic structures. The algorithm for detecting cyclic
939 // Assume equality for cyclic structures. The algorithm for detecting cyclic
940 // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.
940 // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.
941 var length = aStack.length;
941 var length = aStack.length;
942 while (length--) {
942 while (length--) {
943 // Linear search. Performance is inversely proportional to the number of
943 // Linear search. Performance is inversely proportional to the number of
944 // unique nested structures.
944 // unique nested structures.
945 if (aStack[length] == a) return bStack[length] == b;
945 if (aStack[length] == a) return bStack[length] == b;
946 }
946 }
947 // Objects with different constructors are not equivalent, but `Object`s
947 // Objects with different constructors are not equivalent, but `Object`s
948 // from different frames are.
948 // from different frames are.
949 var aCtor = a.constructor, bCtor = b.constructor;
949 var aCtor = a.constructor, bCtor = b.constructor;
950 if (aCtor !== bCtor && !(_.isFunction(aCtor) && (aCtor instanceof aCtor) &&
950 if (aCtor !== bCtor && !(_.isFunction(aCtor) && (aCtor instanceof aCtor) &&
951 _.isFunction(bCtor) && (bCtor instanceof bCtor))
951 _.isFunction(bCtor) && (bCtor instanceof bCtor))
952 && ('constructor' in a && 'constructor' in b)) {
952 && ('constructor' in a && 'constructor' in b)) {
953 return false;
953 return false;
954 }
954 }
955 // Add the first object to the stack of traversed objects.
955 // Add the first object to the stack of traversed objects.
956 aStack.push(a);
956 aStack.push(a);
957 bStack.push(b);
957 bStack.push(b);
958 var size = 0, result = true;
958 var size = 0, result = true;
959 // Recursively compare objects and arrays.
959 // Recursively compare objects and arrays.
960 if (className == '[object Array]') {
960 if (className == '[object Array]') {
961 // Compare array lengths to determine if a deep comparison is necessary.
961 // Compare array lengths to determine if a deep comparison is necessary.
962 size = a.length;
962 size = a.length;
963 result = size == b.length;
963 result = size == b.length;
964 if (result) {
964 if (result) {
965 // Deep compare the contents, ignoring non-numeric properties.
965 // Deep compare the contents, ignoring non-numeric properties.
966 while (size--) {
966 while (size--) {
967 if (!(result = eq(a[size], b[size], aStack, bStack))) break;
967 if (!(result = eq(a[size], b[size], aStack, bStack))) break;
968 }
968 }
969 }
969 }
970 } else {
970 } else {
971 // Deep compare objects.
971 // Deep compare objects.
972 for (var key in a) {
972 for (var key in a) {
973 if (_.has(a, key)) {
973 if (_.has(a, key)) {
974 // Count the expected number of properties.
974 // Count the expected number of properties.
975 size++;
975 size++;
976 // Deep compare each member.
976 // Deep compare each member.
977 if (!(result = _.has(b, key) && eq(a[key], b[key], aStack, bStack))) break;
977 if (!(result = _.has(b, key) && eq(a[key], b[key], aStack, bStack))) break;
978 }
978 }
979 }
979 }
980 // Ensure that both objects contain the same number of properties.
980 // Ensure that both objects contain the same number of properties.
981 if (result) {
981 if (result) {
982 for (key in b) {
982 for (key in b) {
983 if (_.has(b, key) && !(size--)) break;
983 if (_.has(b, key) && !(size--)) break;
984 }
984 }
985 result = !size;
985 result = !size;
986 }
986 }
987 }
987 }
988 // Remove the first object from the stack of traversed objects.
988 // Remove the first object from the stack of traversed objects.
989 aStack.pop();
989 aStack.pop();
990 bStack.pop();
990 bStack.pop();
991 return result;
991 return result;
992 };
992 };
993
993
994 // Perform a deep comparison to check if two objects are equal.
994 // Perform a deep comparison to check if two objects are equal.
995 _.isEqual = function(a, b) {
995 _.isEqual = function(a, b) {
996 return eq(a, b, [], []);
996 return eq(a, b, [], []);
997 };
997 };
998
998
999 // Is a given array, string, or object empty?
999 // Is a given array, string, or object empty?
1000 // An "empty" object has no enumerable own-properties.
1000 // An "empty" object has no enumerable own-properties.
1001 _.isEmpty = function(obj) {
1001 _.isEmpty = function(obj) {
1002 if (obj == null) return true;
1002 if (obj == null) return true;
1003 if (_.isArray(obj) || _.isString(obj)) return obj.length === 0;
1003 if (_.isArray(obj) || _.isString(obj)) return obj.length === 0;
1004 for (var key in obj) if (_.has(obj, key)) return false;
1004 for (var key in obj) if (_.has(obj, key)) return false;
1005 return true;
1005 return true;
1006 };
1006 };
1007
1007
1008 // Is a given value a DOM element?
1008 // Is a given value a DOM element?
1009 _.isElement = function(obj) {
1009 _.isElement = function(obj) {
1010 return !!(obj && obj.nodeType === 1);
1010 return !!(obj && obj.nodeType === 1);
1011 };
1011 };
1012
1012
1013 // Is a given value an array?
1013 // Is a given value an array?
1014 // Delegates to ECMA5's native Array.isArray
1014 // Delegates to ECMA5's native Array.isArray
1015 _.isArray = nativeIsArray || function(obj) {
1015 _.isArray = nativeIsArray || function(obj) {
1016 return toString.call(obj) == '[object Array]';
1016 return toString.call(obj) == '[object Array]';
1017 };
1017 };
1018
1018
1019 // Is a given variable an object?
1019 // Is a given variable an object?
1020 _.isObject = function(obj) {
1020 _.isObject = function(obj) {
1021 return obj === Object(obj);
1021 return obj === Object(obj);
1022 };
1022 };
1023
1023
1024 // Add some isType methods: isArguments, isFunction, isString, isNumber, isDate, isRegExp.
1024 // Add some isType methods: isArguments, isFunction, isString, isNumber, isDate, isRegExp.
1025 each(['Arguments', 'Function', 'String', 'Number', 'Date', 'RegExp'], function(name) {
1025 each(['Arguments', 'Function', 'String', 'Number', 'Date', 'RegExp'], function(name) {
1026 _['is' + name] = function(obj) {
1026 _['is' + name] = function(obj) {
1027 return toString.call(obj) == '[object ' + name + ']';
1027 return toString.call(obj) == '[object ' + name + ']';
1028 };
1028 };
1029 });
1029 });
1030
1030
1031 // Define a fallback version of the method in browsers (ahem, IE), where
1031 // Define a fallback version of the method in browsers (ahem, IE), where
1032 // there isn't any inspectable "Arguments" type.
1032 // there isn't any inspectable "Arguments" type.
1033 if (!_.isArguments(arguments)) {
1033 if (!_.isArguments(arguments)) {
1034 _.isArguments = function(obj) {
1034 _.isArguments = function(obj) {
1035 return !!(obj && _.has(obj, 'callee'));
1035 return !!(obj && _.has(obj, 'callee'));
1036 };
1036 };
1037 }
1037 }
1038
1038
1039 // Optimize `isFunction` if appropriate.
1039 // Optimize `isFunction` if appropriate.
1040 if (typeof (/./) !== 'function') {
1040 if (typeof (/./) !== 'function') {
1041 _.isFunction = function(obj) {
1041 _.isFunction = function(obj) {
1042 return typeof obj === 'function';
1042 return typeof obj === 'function';
1043 };
1043 };
1044 }
1044 }
1045
1045
1046 // Is a given object a finite number?
1046 // Is a given object a finite number?
1047 _.isFinite = function(obj) {
1047 _.isFinite = function(obj) {
1048 return isFinite(obj) && !isNaN(parseFloat(obj));
1048 return isFinite(obj) && !isNaN(parseFloat(obj));
1049 };
1049 };
1050
1050
1051 // Is the given value `NaN`? (NaN is the only number which does not equal itself).
1051 // Is the given value `NaN`? (NaN is the only number which does not equal itself).
1052 _.isNaN = function(obj) {
1052 _.isNaN = function(obj) {
1053 return _.isNumber(obj) && obj != +obj;
1053 return _.isNumber(obj) && obj != +obj;
1054 };
1054 };
1055
1055
1056 // Is a given value a boolean?
1056 // Is a given value a boolean?
1057 _.isBoolean = function(obj) {
1057 _.isBoolean = function(obj) {
1058 return obj === true || obj === false || toString.call(obj) == '[object Boolean]';
1058 return obj === true || obj === false || toString.call(obj) == '[object Boolean]';
1059 };
1059 };
1060
1060
1061 // Is a given value equal to null?
1061 // Is a given value equal to null?
1062 _.isNull = function(obj) {
1062 _.isNull = function(obj) {
1063 return obj === null;
1063 return obj === null;
1064 };
1064 };
1065
1065
1066 // Is a given variable undefined?
1066 // Is a given variable undefined?
1067 _.isUndefined = function(obj) {
1067 _.isUndefined = function(obj) {
1068 return obj === void 0;
1068 return obj === void 0;
1069 };
1069 };
1070
1070
1071 // Shortcut function for checking if an object has a given property directly
1071 // Shortcut function for checking if an object has a given property directly
1072 // on itself (in other words, not on a prototype).
1072 // on itself (in other words, not on a prototype).
1073 _.has = function(obj, key) {
1073 _.has = function(obj, key) {
1074 return hasOwnProperty.call(obj, key);
1074 return hasOwnProperty.call(obj, key);
1075 };
1075 };
1076
1076
1077 // Utility Functions
1077 // Utility Functions
1078 // -----------------
1078 // -----------------
1079
1079
1080 // Run Underscore.js in *noConflict* mode, returning the `_` variable to its
1080 // Run Underscore.js in *noConflict* mode, returning the `_` variable to its
1081 // previous owner. Returns a reference to the Underscore object.
1081 // previous owner. Returns a reference to the Underscore object.
1082 _.noConflict = function() {
1082 _.noConflict = function() {
1083 root._ = previousUnderscore;
1083 root._ = previousUnderscore;
1084 return this;
1084 return this;
1085 };
1085 };
1086
1086
1087 // Keep the identity function around for default iterators.
1087 // Keep the identity function around for default iterators.
1088 _.identity = function(value) {
1088 _.identity = function(value) {
1089 return value;
1089 return value;
1090 };
1090 };
1091
1091
1092 _.constant = function(value) {
1092 _.constant = function(value) {
1093 return function () {
1093 return function () {
1094 return value;
1094 return value;
1095 };
1095 };
1096 };
1096 };
1097
1097
1098 _.property = function(key) {
1098 _.property = function(key) {
1099 return function(obj) {
1099 return function(obj) {
1100 return obj[key];
1100 return obj[key];
1101 };
1101 };
1102 };
1102 };
1103
1103
1104 // Returns a predicate for checking whether an object has a given set of `key:value` pairs.
1104 // Returns a predicate for checking whether an object has a given set of `key:value` pairs.
1105 _.matches = function(attrs) {
1105 _.matches = function(attrs) {
1106 return function(obj) {
1106 return function(obj) {
1107 if (obj === attrs) return true; //avoid comparing an object to itself.
1107 if (obj === attrs) return true; //avoid comparing an object to itself.
1108 for (var key in attrs) {
1108 for (var key in attrs) {
1109 if (attrs[key] !== obj[key])
1109 if (attrs[key] !== obj[key])
1110 return false;
1110 return false;
1111 }
1111 }
1112 return true;
1112 return true;
1113 }
1113 }
1114 };
1114 };
1115
1115
1116 // Run a function **n** times.
1116 // Run a function **n** times.
1117 _.times = function(n, iterator, context) {
1117 _.times = function(n, iterator, context) {
1118 var accum = Array(Math.max(0, n));
1118 var accum = Array(Math.max(0, n));
1119 for (var i = 0; i < n; i++) accum[i] = iterator.call(context, i);
1119 for (var i = 0; i < n; i++) accum[i] = iterator.call(context, i);
1120 return accum;
1120 return accum;
1121 };
1121 };
1122
1122
1123 // Return a random integer between min and max (inclusive).
1123 // Return a random integer between min and max (inclusive).
1124 _.random = function(min, max) {
1124 _.random = function(min, max) {
1125 if (max == null) {
1125 if (max == null) {
1126 max = min;
1126 max = min;
1127 min = 0;
1127 min = 0;
1128 }
1128 }
1129 return min + Math.floor(Math.random() * (max - min + 1));
1129 return min + Math.floor(Math.random() * (max - min + 1));
1130 };
1130 };
1131
1131
1132 // A (possibly faster) way to get the current timestamp as an integer.
1132 // A (possibly faster) way to get the current timestamp as an integer.
1133 _.now = Date.now || function() { return new Date().getTime(); };
1133 _.now = Date.now || function() { return new Date().getTime(); };
1134
1134
1135 // List of HTML entities for escaping.
1135 // List of HTML entities for escaping.
1136 var entityMap = {
1136 var entityMap = {
1137 escape: {
1137 escape: {
1138 '&': '&amp;',
1138 '&': '&amp;',
1139 '<': '&lt;',
1139 '<': '&lt;',
1140 '>': '&gt;',
1140 '>': '&gt;',
1141 '"': '&quot;',
1141 '"': '&quot;',
1142 "'": '&#x27;'
1142 "'": '&#x27;'
1143 }
1143 }
1144 };
1144 };
1145 entityMap.unescape = _.invert(entityMap.escape);
1145 entityMap.unescape = _.invert(entityMap.escape);
1146
1146
1147 // Regexes containing the keys and values listed immediately above.
1147 // Regexes containing the keys and values listed immediately above.
1148 var entityRegexes = {
1148 var entityRegexes = {
1149 escape: new RegExp('[' + _.keys(entityMap.escape).join('') + ']', 'g'),
1149 escape: new RegExp('[' + _.keys(entityMap.escape).join('') + ']', 'g'),
1150 unescape: new RegExp('(' + _.keys(entityMap.unescape).join('|') + ')', 'g')
1150 unescape: new RegExp('(' + _.keys(entityMap.unescape).join('|') + ')', 'g')
1151 };
1151 };
1152
1152
1153 // Functions for escaping and unescaping strings to/from HTML interpolation.
1153 // Functions for escaping and unescaping strings to/from HTML interpolation.
1154 _.each(['escape', 'unescape'], function(method) {
1154 _.each(['escape', 'unescape'], function(method) {
1155 _[method] = function(string) {
1155 _[method] = function(string) {
1156 if (string == null) return '';
1156 if (string == null) return '';
1157 return ('' + string).replace(entityRegexes[method], function(match) {
1157 return ('' + string).replace(entityRegexes[method], function(match) {
1158 return entityMap[method][match];
1158 return entityMap[method][match];
1159 });
1159 });
1160 };
1160 };
1161 });
1161 });
1162
1162
1163 // If the value of the named `property` is a function then invoke it with the
1163 // If the value of the named `property` is a function then invoke it with the
1164 // `object` as context; otherwise, return it.
1164 // `object` as context; otherwise, return it.
1165 _.result = function(object, property) {
1165 _.result = function(object, property) {
1166 if (object == null) return void 0;
1166 if (object == null) return void 0;
1167 var value = object[property];
1167 var value = object[property];
1168 return _.isFunction(value) ? value.call(object) : value;
1168 return _.isFunction(value) ? value.call(object) : value;
1169 };
1169 };
1170
1170
1171 // Add your own custom functions to the Underscore object.
1171 // Add your own custom functions to the Underscore object.
1172 _.mixin = function(obj) {
1172 _.mixin = function(obj) {
1173 each(_.functions(obj), function(name) {
1173 each(_.functions(obj), function(name) {
1174 var func = _[name] = obj[name];
1174 var func = _[name] = obj[name];
1175 _.prototype[name] = function() {
1175 _.prototype[name] = function() {
1176 var args = [this._wrapped];
1176 var args = [this._wrapped];
1177 push.apply(args, arguments);
1177 push.apply(args, arguments);
1178 return result.call(this, func.apply(_, args));
1178 return result.call(this, func.apply(_, args));
1179 };
1179 };
1180 });
1180 });
1181 };
1181 };
1182
1182
1183 // Generate a unique integer id (unique within the entire client session).
1183 // Generate a unique integer id (unique within the entire client session).
1184 // Useful for temporary DOM ids.
1184 // Useful for temporary DOM ids.
1185 var idCounter = 0;
1185 var idCounter = 0;
1186 _.uniqueId = function(prefix) {
1186 _.uniqueId = function(prefix) {
1187 var id = ++idCounter + '';
1187 var id = ++idCounter + '';
1188 return prefix ? prefix + id : id;
1188 return prefix ? prefix + id : id;
1189 };
1189 };
1190
1190
1191 // By default, Underscore uses ERB-style template delimiters, change the
1191 // By default, Underscore uses ERB-style template delimiters, change the
1192 // following template settings to use alternative delimiters.
1192 // following template settings to use alternative delimiters.
1193 _.templateSettings = {
1193 _.templateSettings = {
1194 evaluate : /<%([\s\S]+?)%>/g,
1194 evaluate : /<%([\s\S]+?)%>/g,
1195 interpolate : /<%=([\s\S]+?)%>/g,
1195 interpolate : /<%=([\s\S]+?)%>/g,
1196 escape : /<%-([\s\S]+?)%>/g
1196 escape : /<%-([\s\S]+?)%>/g
1197 };
1197 };
1198
1198
1199 // When customizing `templateSettings`, if you don't want to define an
1199 // When customizing `templateSettings`, if you don't want to define an
1200 // interpolation, evaluation or escaping regex, we need one that is
1200 // interpolation, evaluation or escaping regex, we need one that is
1201 // guaranteed not to match.
1201 // guaranteed not to match.
1202 var noMatch = /(.)^/;
1202 var noMatch = /(.)^/;
1203
1203
1204 // Certain characters need to be escaped so that they can be put into a
1204 // Certain characters need to be escaped so that they can be put into a
1205 // string literal.
1205 // string literal.
1206 var escapes = {
1206 var escapes = {
1207 "'": "'",
1207 "'": "'",
1208 '\\': '\\',
1208 '\\': '\\',
1209 '\r': 'r',
1209 '\r': 'r',
1210 '\n': 'n',
1210 '\n': 'n',
1211 '\t': 't',
1211 '\t': 't',
1212 '\u2028': 'u2028',
1212 '\u2028': 'u2028',
1213 '\u2029': 'u2029'
1213 '\u2029': 'u2029'
1214 };
1214 };
1215
1215
1216 var escaper = /\\|'|\r|\n|\t|\u2028|\u2029/g;
1216 var escaper = /\\|'|\r|\n|\t|\u2028|\u2029/g;
1217
1217
1218 // JavaScript micro-templating, similar to John Resig's implementation.
1218 // JavaScript micro-templating, similar to John Resig's implementation.
1219 // Underscore templating handles arbitrary delimiters, preserves whitespace,
1219 // Underscore templating handles arbitrary delimiters, preserves whitespace,
1220 // and correctly escapes quotes within interpolated code.
1220 // and correctly escapes quotes within interpolated code.
1221 _.template = function(text, data, settings) {
1221 _.template = function(text, data, settings) {
1222 var render;
1222 var render;
1223 settings = _.defaults({}, settings, _.templateSettings);
1223 settings = _.defaults({}, settings, _.templateSettings);
1224
1224
1225 // Combine delimiters into one regular expression via alternation.
1225 // Combine delimiters into one regular expression via alternation.
1226 var matcher = new RegExp([
1226 var matcher = new RegExp([
1227 (settings.escape || noMatch).source,
1227 (settings.escape || noMatch).source,
1228 (settings.interpolate || noMatch).source,
1228 (settings.interpolate || noMatch).source,
1229 (settings.evaluate || noMatch).source
1229 (settings.evaluate || noMatch).source
1230 ].join('|') + '|$', 'g');
1230 ].join('|') + '|$', 'g');
1231
1231
1232 // Compile the template source, escaping string literals appropriately.
1232 // Compile the template source, escaping string literals appropriately.
1233 var index = 0;
1233 var index = 0;
1234 var source = "__p+='";
1234 var source = "__p+='";
1235 text.replace(matcher, function(match, escape, interpolate, evaluate, offset) {
1235 text.replace(matcher, function(match, escape, interpolate, evaluate, offset) {
1236 source += text.slice(index, offset)
1236 source += text.slice(index, offset)
1237 .replace(escaper, function(match) { return '\\' + escapes[match]; });
1237 .replace(escaper, function(match) { return '\\' + escapes[match]; });
1238
1238
1239 if (escape) {
1239 if (escape) {
1240 source += "'+\n((__t=(" + escape + "))==null?'':_.escape(__t))+\n'";
1240 source += "'+\n((__t=(" + escape + "))==null?'':_.escape(__t))+\n'";
1241 }
1241 }
1242 if (interpolate) {
1242 if (interpolate) {
1243 source += "'+\n((__t=(" + interpolate + "))==null?'':__t)+\n'";
1243 source += "'+\n((__t=(" + interpolate + "))==null?'':__t)+\n'";
1244 }
1244 }
1245 if (evaluate) {
1245 if (evaluate) {
1246 source += "';\n" + evaluate + "\n__p+='";
1246 source += "';\n" + evaluate + "\n__p+='";
1247 }
1247 }
1248 index = offset + match.length;
1248 index = offset + match.length;
1249 return match;
1249 return match;
1250 });
1250 });
1251 source += "';\n";
1251 source += "';\n";
1252
1252
1253 // If a variable is not specified, place data values in local scope.
1253 // If a variable is not specified, place data values in local scope.
1254 if (!settings.variable) source = 'with(obj||{}){\n' + source + '}\n';
1254 if (!settings.variable) source = 'with(obj||{}){\n' + source + '}\n';
1255
1255
1256 source = "var __t,__p='',__j=Array.prototype.join," +
1256 source = "var __t,__p='',__j=Array.prototype.join," +
1257 "print=function(){__p+=__j.call(arguments,'');};\n" +
1257 "print=function(){__p+=__j.call(arguments,'');};\n" +
1258 source + "return __p;\n";
1258 source + "return __p;\n";
1259
1259
1260 try {
1260 try {
1261 render = new Function(settings.variable || 'obj', '_', source);
1261 render = new Function(settings.variable || 'obj', '_', source);
1262 } catch (e) {
1262 } catch (e) {
1263 e.source = source;
1263 e.source = source;
1264 throw e;
1264 throw e;
1265 }
1265 }
1266
1266
1267 if (data) return render(data, _);
1267 if (data) return render(data, _);
1268 var template = function(data) {
1268 var template = function(data) {
1269 return render.call(this, data, _);
1269 return render.call(this, data, _);
1270 };
1270 };
1271
1271
1272 // Provide the compiled function source as a convenience for precompilation.
1272 // Provide the compiled function source as a convenience for precompilation.
1273 template.source = 'function(' + (settings.variable || 'obj') + '){\n' + source + '}';
1273 template.source = 'function(' + (settings.variable || 'obj') + '){\n' + source + '}';
1274
1274
1275 return template;
1275 return template;
1276 };
1276 };
1277
1277
1278 // Add a "chain" function, which will delegate to the wrapper.
1278 // Add a "chain" function, which will delegate to the wrapper.
1279 _.chain = function(obj) {
1279 _.chain = function(obj) {
1280 return _(obj).chain();
1280 return _(obj).chain();
1281 };
1281 };
1282
1282
1283 // OOP
1283 // OOP
1284 // ---------------
1284 // ---------------
1285 // If Underscore is called as a function, it returns a wrapped object that
1285 // If Underscore is called as a function, it returns a wrapped object that
1286 // can be used OO-style. This wrapper holds altered versions of all the
1286 // can be used OO-style. This wrapper holds altered versions of all the
1287 // underscore functions. Wrapped objects may be chained.
1287 // underscore functions. Wrapped objects may be chained.
1288
1288
1289 // Helper function to continue chaining intermediate results.
1289 // Helper function to continue chaining intermediate results.
1290 var result = function(obj) {
1290 var result = function(obj) {
1291 return this._chain ? _(obj).chain() : obj;
1291 return this._chain ? _(obj).chain() : obj;
1292 };
1292 };
1293
1293
1294 // Add all of the Underscore functions to the wrapper object.
1294 // Add all of the Underscore functions to the wrapper object.
1295 _.mixin(_);
1295 _.mixin(_);
1296
1296
1297 // Add all mutator Array functions to the wrapper.
1297 // Add all mutator Array functions to the wrapper.
1298 each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) {
1298 each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) {
1299 var method = ArrayProto[name];
1299 var method = ArrayProto[name];
1300 _.prototype[name] = function() {
1300 _.prototype[name] = function() {
1301 var obj = this._wrapped;
1301 var obj = this._wrapped;
1302 method.apply(obj, arguments);
1302 method.apply(obj, arguments);
1303 if ((name == 'shift' || name == 'splice') && obj.length === 0) delete obj[0];
1303 if ((name == 'shift' || name == 'splice') && obj.length === 0) delete obj[0];
1304 return result.call(this, obj);
1304 return result.call(this, obj);
1305 };
1305 };
1306 });
1306 });
1307
1307
1308 // Add all accessor Array functions to the wrapper.
1308 // Add all accessor Array functions to the wrapper.
1309 each(['concat', 'join', 'slice'], function(name) {
1309 each(['concat', 'join', 'slice'], function(name) {
1310 var method = ArrayProto[name];
1310 var method = ArrayProto[name];
1311 _.prototype[name] = function() {
1311 _.prototype[name] = function() {
1312 return result.call(this, method.apply(this._wrapped, arguments));
1312 return result.call(this, method.apply(this._wrapped, arguments));
1313 };
1313 };
1314 });
1314 });
1315
1315
1316 _.extend(_.prototype, {
1316 _.extend(_.prototype, {
1317
1317
1318 // Start chaining a wrapped Underscore object.
1318 // Start chaining a wrapped Underscore object.
1319 chain: function() {
1319 chain: function() {
1320 this._chain = true;
1320 this._chain = true;
1321 return this;
1321 return this;
1322 },
1322 },
1323
1323
1324 // Extracts the result from a wrapped and chained object.
1324 // Extracts the result from a wrapped and chained object.
1325 value: function() {
1325 value: function() {
1326 return this._wrapped;
1326 return this._wrapped;
1327 }
1327 }
1328
1328
1329 });
1329 });
1330
1330
1331 // AMD registration happens at the end for compatibility with AMD loaders
1331 // AMD registration happens at the end for compatibility with AMD loaders
1332 // that may not enforce next-turn semantics on modules. Even though general
1332 // that may not enforce next-turn semantics on modules. Even though general
1333 // practice for AMD registration is to be anonymous, underscore registers
1333 // practice for AMD registration is to be anonymous, underscore registers
1334 // as a named module because, like jQuery, it is a base library that is
1334 // as a named module because, like jQuery, it is a base library that is
1335 // popular enough to be bundled in a third party lib, but not be part of
1335 // popular enough to be bundled in a third party lib, but not be part of
1336 // an AMD load request. Those cases could generate an error when an
1336 // an AMD load request. Those cases could generate an error when an
1337 // anonymous define() is called outside of a loader request.
1337 // anonymous define() is called outside of a loader request.
1338 if (typeof define === 'function' && define.amd) {
1338 if (typeof define === 'function' && define.amd) {
1339 define('underscore', [], function() {
1339 define('underscore', [], function() {
1340 return _;
1340 return _;
1341 });
1341 });
1342 }
1342 }
1343 }).call(this);
1343 }).call(this);
1344
1344
1345 ;/*
1345 ;/*
1346 AngularJS v1.5.5
1346 AngularJS v1.5.5
1347 (c) 2010-2016 Google, Inc. http://angularjs.org
1347 (c) 2010-2016 Google, Inc. http://angularjs.org
1348 License: MIT
1348 License: MIT
1349 */
1349 */
1350 (function(v){'use strict';function O(a){return function(){var b=arguments[0],d;d="["+(a?a+":":"")+b+"] http://errors.angularjs.org/1.5.5/"+(a?a+"/":"")+b;for(b=1;b<arguments.length;b++){d=d+(1==b?"?":"&")+"p"+(b-1)+"=";var c=encodeURIComponent,e;e=arguments[b];e="function"==typeof e?e.toString().replace(/ \{[\s\S]*$/,""):"undefined"==typeof e?"undefined":"string"!=typeof e?JSON.stringify(e):e;d+=c(e)}return Error(d)}}function ya(a){if(null==a||Va(a))return!1;if(K(a)||F(a)||B&&a instanceof B)return!0;
1350 (function(v){'use strict';function O(a){return function(){var b=arguments[0],d;d="["+(a?a+":":"")+b+"] http://errors.angularjs.org/1.5.5/"+(a?a+"/":"")+b;for(b=1;b<arguments.length;b++){d=d+(1==b?"?":"&")+"p"+(b-1)+"=";var c=encodeURIComponent,e;e=arguments[b];e="function"==typeof e?e.toString().replace(/ \{[\s\S]*$/,""):"undefined"==typeof e?"undefined":"string"!=typeof e?JSON.stringify(e):e;d+=c(e)}return Error(d)}}function ya(a){if(null==a||Va(a))return!1;if(K(a)||F(a)||B&&a instanceof B)return!0;
1351 var b="length"in Object(a)&&a.length;return Q(b)&&(0<=b&&(b-1 in a||a instanceof Array)||"function"==typeof a.item)}function q(a,b,d){var c,e;if(a)if(E(a))for(c in a)"prototype"==c||"length"==c||"name"==c||a.hasOwnProperty&&!a.hasOwnProperty(c)||b.call(d,a[c],c,a);else if(K(a)||ya(a)){var f="object"!==typeof a;c=0;for(e=a.length;c<e;c++)(f||c in a)&&b.call(d,a[c],c,a)}else if(a.forEach&&a.forEach!==q)a.forEach(b,d,a);else if(oc(a))for(c in a)b.call(d,a[c],c,a);else if("function"===typeof a.hasOwnProperty)for(c in a)a.hasOwnProperty(c)&&
1351 var b="length"in Object(a)&&a.length;return Q(b)&&(0<=b&&(b-1 in a||a instanceof Array)||"function"==typeof a.item)}function q(a,b,d){var c,e;if(a)if(E(a))for(c in a)"prototype"==c||"length"==c||"name"==c||a.hasOwnProperty&&!a.hasOwnProperty(c)||b.call(d,a[c],c,a);else if(K(a)||ya(a)){var f="object"!==typeof a;c=0;for(e=a.length;c<e;c++)(f||c in a)&&b.call(d,a[c],c,a)}else if(a.forEach&&a.forEach!==q)a.forEach(b,d,a);else if(oc(a))for(c in a)b.call(d,a[c],c,a);else if("function"===typeof a.hasOwnProperty)for(c in a)a.hasOwnProperty(c)&&
1352 b.call(d,a[c],c,a);else for(c in a)ua.call(a,c)&&b.call(d,a[c],c,a);return a}function pc(a,b,d){for(var c=Object.keys(a).sort(),e=0;e<c.length;e++)b.call(d,a[c[e]],c[e]);return c}function qc(a){return function(b,d){a(d,b)}}function Xd(){return++nb}function Nb(a,b,d){for(var c=a.$$hashKey,e=0,f=b.length;e<f;++e){var g=b[e];if(G(g)||E(g))for(var h=Object.keys(g),k=0,l=h.length;k<l;k++){var n=h[k],m=g[n];d&&G(m)?fa(m)?a[n]=new Date(m.valueOf()):Wa(m)?a[n]=new RegExp(m):m.nodeName?a[n]=m.cloneNode(!0):
1352 b.call(d,a[c],c,a);else for(c in a)ua.call(a,c)&&b.call(d,a[c],c,a);return a}function pc(a,b,d){for(var c=Object.keys(a).sort(),e=0;e<c.length;e++)b.call(d,a[c[e]],c[e]);return c}function qc(a){return function(b,d){a(d,b)}}function Xd(){return++nb}function Nb(a,b,d){for(var c=a.$$hashKey,e=0,f=b.length;e<f;++e){var g=b[e];if(G(g)||E(g))for(var h=Object.keys(g),k=0,l=h.length;k<l;k++){var n=h[k],m=g[n];d&&G(m)?fa(m)?a[n]=new Date(m.valueOf()):Wa(m)?a[n]=new RegExp(m):m.nodeName?a[n]=m.cloneNode(!0):
1353 Ob(m)?a[n]=m.clone():(G(a[n])||(a[n]=K(m)?[]:{}),Nb(a[n],[m],!0)):a[n]=m}}c?a.$$hashKey=c:delete a.$$hashKey;return a}function R(a){return Nb(a,za.call(arguments,1),!1)}function Yd(a){return Nb(a,za.call(arguments,1),!0)}function X(a){return parseInt(a,10)}function Pb(a,b){return R(Object.create(a),b)}function C(){}function Xa(a){return a}function da(a){return function(){return a}}function rc(a){return E(a.toString)&&a.toString!==ma}function y(a){return"undefined"===typeof a}function x(a){return"undefined"!==
1353 Ob(m)?a[n]=m.clone():(G(a[n])||(a[n]=K(m)?[]:{}),Nb(a[n],[m],!0)):a[n]=m}}c?a.$$hashKey=c:delete a.$$hashKey;return a}function R(a){return Nb(a,za.call(arguments,1),!1)}function Yd(a){return Nb(a,za.call(arguments,1),!0)}function X(a){return parseInt(a,10)}function Pb(a,b){return R(Object.create(a),b)}function C(){}function Xa(a){return a}function da(a){return function(){return a}}function rc(a){return E(a.toString)&&a.toString!==ma}function y(a){return"undefined"===typeof a}function x(a){return"undefined"!==
1354 typeof a}function G(a){return null!==a&&"object"===typeof a}function oc(a){return null!==a&&"object"===typeof a&&!sc(a)}function F(a){return"string"===typeof a}function Q(a){return"number"===typeof a}function fa(a){return"[object Date]"===ma.call(a)}function E(a){return"function"===typeof a}function Wa(a){return"[object RegExp]"===ma.call(a)}function Va(a){return a&&a.window===a}function Ya(a){return a&&a.$evalAsync&&a.$watch}function Da(a){return"boolean"===typeof a}function Zd(a){return a&&Q(a.length)&&
1354 typeof a}function G(a){return null!==a&&"object"===typeof a}function oc(a){return null!==a&&"object"===typeof a&&!sc(a)}function F(a){return"string"===typeof a}function Q(a){return"number"===typeof a}function fa(a){return"[object Date]"===ma.call(a)}function E(a){return"function"===typeof a}function Wa(a){return"[object RegExp]"===ma.call(a)}function Va(a){return a&&a.window===a}function Ya(a){return a&&a.$evalAsync&&a.$watch}function Da(a){return"boolean"===typeof a}function Zd(a){return a&&Q(a.length)&&
1355 $d.test(ma.call(a))}function Ob(a){return!(!a||!(a.nodeName||a.prop&&a.attr&&a.find))}function ae(a){var b={};a=a.split(",");var d;for(d=0;d<a.length;d++)b[a[d]]=!0;return b}function va(a){return P(a.nodeName||a[0]&&a[0].nodeName)}function Za(a,b){var d=a.indexOf(b);0<=d&&a.splice(d,1);return d}function qa(a,b){function d(a,b){var d=b.$$hashKey,e;if(K(a)){e=0;for(var f=a.length;e<f;e++)b.push(c(a[e]))}else if(oc(a))for(e in a)b[e]=c(a[e]);else if(a&&"function"===typeof a.hasOwnProperty)for(e in a)a.hasOwnProperty(e)&&
1355 $d.test(ma.call(a))}function Ob(a){return!(!a||!(a.nodeName||a.prop&&a.attr&&a.find))}function ae(a){var b={};a=a.split(",");var d;for(d=0;d<a.length;d++)b[a[d]]=!0;return b}function va(a){return P(a.nodeName||a[0]&&a[0].nodeName)}function Za(a,b){var d=a.indexOf(b);0<=d&&a.splice(d,1);return d}function qa(a,b){function d(a,b){var d=b.$$hashKey,e;if(K(a)){e=0;for(var f=a.length;e<f;e++)b.push(c(a[e]))}else if(oc(a))for(e in a)b[e]=c(a[e]);else if(a&&"function"===typeof a.hasOwnProperty)for(e in a)a.hasOwnProperty(e)&&
1356 (b[e]=c(a[e]));else for(e in a)ua.call(a,e)&&(b[e]=c(a[e]));d?b.$$hashKey=d:delete b.$$hashKey;return b}function c(a){if(!G(a))return a;var b=f.indexOf(a);if(-1!==b)return g[b];if(Va(a)||Ya(a))throw Aa("cpws");var b=!1,c=e(a);void 0===c&&(c=K(a)?[]:Object.create(sc(a)),b=!0);f.push(a);g.push(c);return b?d(a,c):c}function e(a){switch(ma.call(a)){case "[object Int8Array]":case "[object Int16Array]":case "[object Int32Array]":case "[object Float32Array]":case "[object Float64Array]":case "[object Uint8Array]":case "[object Uint8ClampedArray]":case "[object Uint16Array]":case "[object Uint32Array]":return new a.constructor(c(a.buffer));
1356 (b[e]=c(a[e]));else for(e in a)ua.call(a,e)&&(b[e]=c(a[e]));d?b.$$hashKey=d:delete b.$$hashKey;return b}function c(a){if(!G(a))return a;var b=f.indexOf(a);if(-1!==b)return g[b];if(Va(a)||Ya(a))throw Aa("cpws");var b=!1,c=e(a);void 0===c&&(c=K(a)?[]:Object.create(sc(a)),b=!0);f.push(a);g.push(c);return b?d(a,c):c}function e(a){switch(ma.call(a)){case "[object Int8Array]":case "[object Int16Array]":case "[object Int32Array]":case "[object Float32Array]":case "[object Float64Array]":case "[object Uint8Array]":case "[object Uint8ClampedArray]":case "[object Uint16Array]":case "[object Uint32Array]":return new a.constructor(c(a.buffer));
1357 case "[object ArrayBuffer]":if(!a.slice){var b=new ArrayBuffer(a.byteLength);(new Uint8Array(b)).set(new Uint8Array(a));return b}return a.slice(0);case "[object Boolean]":case "[object Number]":case "[object String]":case "[object Date]":return new a.constructor(a.valueOf());case "[object RegExp]":return b=new RegExp(a.source,a.toString().match(/[^\/]*$/)[0]),b.lastIndex=a.lastIndex,b;case "[object Blob]":return new a.constructor([a],{type:a.type})}if(E(a.cloneNode))return a.cloneNode(!0)}var f=[],
1357 case "[object ArrayBuffer]":if(!a.slice){var b=new ArrayBuffer(a.byteLength);(new Uint8Array(b)).set(new Uint8Array(a));return b}return a.slice(0);case "[object Boolean]":case "[object Number]":case "[object String]":case "[object Date]":return new a.constructor(a.valueOf());case "[object RegExp]":return b=new RegExp(a.source,a.toString().match(/[^\/]*$/)[0]),b.lastIndex=a.lastIndex,b;case "[object Blob]":return new a.constructor([a],{type:a.type})}if(E(a.cloneNode))return a.cloneNode(!0)}var f=[],
1358 g=[];if(b){if(Zd(b)||"[object ArrayBuffer]"===ma.call(b))throw Aa("cpta");if(a===b)throw Aa("cpi");K(b)?b.length=0:q(b,function(a,d){"$$hashKey"!==d&&delete b[d]});f.push(a);g.push(b);return d(a,b)}return c(a)}function ha(a,b){if(K(a)){b=b||[];for(var d=0,c=a.length;d<c;d++)b[d]=a[d]}else if(G(a))for(d in b=b||{},a)if("$"!==d.charAt(0)||"$"!==d.charAt(1))b[d]=a[d];return b||a}function pa(a,b){if(a===b)return!0;if(null===a||null===b)return!1;if(a!==a&&b!==b)return!0;var d=typeof a,c;if(d==typeof b&&
1358 g=[];if(b){if(Zd(b)||"[object ArrayBuffer]"===ma.call(b))throw Aa("cpta");if(a===b)throw Aa("cpi");K(b)?b.length=0:q(b,function(a,d){"$$hashKey"!==d&&delete b[d]});f.push(a);g.push(b);return d(a,b)}return c(a)}function ha(a,b){if(K(a)){b=b||[];for(var d=0,c=a.length;d<c;d++)b[d]=a[d]}else if(G(a))for(d in b=b||{},a)if("$"!==d.charAt(0)||"$"!==d.charAt(1))b[d]=a[d];return b||a}function pa(a,b){if(a===b)return!0;if(null===a||null===b)return!1;if(a!==a&&b!==b)return!0;var d=typeof a,c;if(d==typeof b&&
1359 "object"==d)if(K(a)){if(!K(b))return!1;if((d=a.length)==b.length){for(c=0;c<d;c++)if(!pa(a[c],b[c]))return!1;return!0}}else{if(fa(a))return fa(b)?pa(a.getTime(),b.getTime()):!1;if(Wa(a))return Wa(b)?a.toString()==b.toString():!1;if(Ya(a)||Ya(b)||Va(a)||Va(b)||K(b)||fa(b)||Wa(b))return!1;d=T();for(c in a)if("$"!==c.charAt(0)&&!E(a[c])){if(!pa(a[c],b[c]))return!1;d[c]=!0}for(c in b)if(!(c in d)&&"$"!==c.charAt(0)&&x(b[c])&&!E(b[c]))return!1;return!0}return!1}function $a(a,b,d){return a.concat(za.call(b,
1359 "object"==d)if(K(a)){if(!K(b))return!1;if((d=a.length)==b.length){for(c=0;c<d;c++)if(!pa(a[c],b[c]))return!1;return!0}}else{if(fa(a))return fa(b)?pa(a.getTime(),b.getTime()):!1;if(Wa(a))return Wa(b)?a.toString()==b.toString():!1;if(Ya(a)||Ya(b)||Va(a)||Va(b)||K(b)||fa(b)||Wa(b))return!1;d=T();for(c in a)if("$"!==c.charAt(0)&&!E(a[c])){if(!pa(a[c],b[c]))return!1;d[c]=!0}for(c in b)if(!(c in d)&&"$"!==c.charAt(0)&&x(b[c])&&!E(b[c]))return!1;return!0}return!1}function $a(a,b,d){return a.concat(za.call(b,
1360 d))}function tc(a,b){var d=2<arguments.length?za.call(arguments,2):[];return!E(b)||b instanceof RegExp?b:d.length?function(){return arguments.length?b.apply(a,$a(d,arguments,0)):b.apply(a,d)}:function(){return arguments.length?b.apply(a,arguments):b.call(a)}}function be(a,b){var d=b;"string"===typeof a&&"$"===a.charAt(0)&&"$"===a.charAt(1)?d=void 0:Va(b)?d="$WINDOW":b&&v.document===b?d="$DOCUMENT":Ya(b)&&(d="$SCOPE");return d}function ab(a,b){if(!y(a))return Q(b)||(b=b?2:null),JSON.stringify(a,be,
1360 d))}function tc(a,b){var d=2<arguments.length?za.call(arguments,2):[];return!E(b)||b instanceof RegExp?b:d.length?function(){return arguments.length?b.apply(a,$a(d,arguments,0)):b.apply(a,d)}:function(){return arguments.length?b.apply(a,arguments):b.call(a)}}function be(a,b){var d=b;"string"===typeof a&&"$"===a.charAt(0)&&"$"===a.charAt(1)?d=void 0:Va(b)?d="$WINDOW":b&&v.document===b?d="$DOCUMENT":Ya(b)&&(d="$SCOPE");return d}function ab(a,b){if(!y(a))return Q(b)||(b=b?2:null),JSON.stringify(a,be,
1361 b)}function uc(a){return F(a)?JSON.parse(a):a}function vc(a,b){a=a.replace(ce,"");var d=Date.parse("Jan 01, 1970 00:00:00 "+a)/6E4;return isNaN(d)?b:d}function Qb(a,b,d){d=d?-1:1;var c=a.getTimezoneOffset();b=vc(b,c);d*=b-c;a=new Date(a.getTime());a.setMinutes(a.getMinutes()+d);return a}function wa(a){a=B(a).clone();try{a.empty()}catch(b){}var d=B("<div>").append(a).html();try{return a[0].nodeType===Ma?P(d):d.match(/^(<[^>]+>)/)[1].replace(/^<([\w\-]+)/,function(a,b){return"<"+P(b)})}catch(c){return P(d)}}
1361 b)}function uc(a){return F(a)?JSON.parse(a):a}function vc(a,b){a=a.replace(ce,"");var d=Date.parse("Jan 01, 1970 00:00:00 "+a)/6E4;return isNaN(d)?b:d}function Qb(a,b,d){d=d?-1:1;var c=a.getTimezoneOffset();b=vc(b,c);d*=b-c;a=new Date(a.getTime());a.setMinutes(a.getMinutes()+d);return a}function wa(a){a=B(a).clone();try{a.empty()}catch(b){}var d=B("<div>").append(a).html();try{return a[0].nodeType===Ma?P(d):d.match(/^(<[^>]+>)/)[1].replace(/^<([\w\-]+)/,function(a,b){return"<"+P(b)})}catch(c){return P(d)}}
1362 function wc(a){try{return decodeURIComponent(a)}catch(b){}}function xc(a){var b={};q((a||"").split("&"),function(a){var c,e,f;a&&(e=a=a.replace(/\+/g,"%20"),c=a.indexOf("="),-1!==c&&(e=a.substring(0,c),f=a.substring(c+1)),e=wc(e),x(e)&&(f=x(f)?wc(f):!0,ua.call(b,e)?K(b[e])?b[e].push(f):b[e]=[b[e],f]:b[e]=f))});return b}function Rb(a){var b=[];q(a,function(a,c){K(a)?q(a,function(a){b.push(ja(c,!0)+(!0===a?"":"="+ja(a,!0)))}):b.push(ja(c,!0)+(!0===a?"":"="+ja(a,!0)))});return b.length?b.join("&"):""}
1362 function wc(a){try{return decodeURIComponent(a)}catch(b){}}function xc(a){var b={};q((a||"").split("&"),function(a){var c,e,f;a&&(e=a=a.replace(/\+/g,"%20"),c=a.indexOf("="),-1!==c&&(e=a.substring(0,c),f=a.substring(c+1)),e=wc(e),x(e)&&(f=x(f)?wc(f):!0,ua.call(b,e)?K(b[e])?b[e].push(f):b[e]=[b[e],f]:b[e]=f))});return b}function Rb(a){var b=[];q(a,function(a,c){K(a)?q(a,function(a){b.push(ja(c,!0)+(!0===a?"":"="+ja(a,!0)))}):b.push(ja(c,!0)+(!0===a?"":"="+ja(a,!0)))});return b.length?b.join("&"):""}
1363 function ob(a){return ja(a,!0).replace(/%26/gi,"&").replace(/%3D/gi,"=").replace(/%2B/gi,"+")}function ja(a,b){return encodeURIComponent(a).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%3B/gi,";").replace(/%20/g,b?"%20":"+")}function de(a,b){var d,c,e=Na.length;for(c=0;c<e;++c)if(d=Na[c]+b,F(d=a.getAttribute(d)))return d;return null}function ee(a,b){var d,c,e={};q(Na,function(b){b+="app";!d&&a.hasAttribute&&a.hasAttribute(b)&&(d=a,c=a.getAttribute(b))});
1363 function ob(a){return ja(a,!0).replace(/%26/gi,"&").replace(/%3D/gi,"=").replace(/%2B/gi,"+")}function ja(a,b){return encodeURIComponent(a).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%3B/gi,";").replace(/%20/g,b?"%20":"+")}function de(a,b){var d,c,e=Na.length;for(c=0;c<e;++c)if(d=Na[c]+b,F(d=a.getAttribute(d)))return d;return null}function ee(a,b){var d,c,e={};q(Na,function(b){b+="app";!d&&a.hasAttribute&&a.hasAttribute(b)&&(d=a,c=a.getAttribute(b))});
1364 q(Na,function(b){b+="app";var e;!d&&(e=a.querySelector("["+b.replace(":","\\:")+"]"))&&(d=e,c=e.getAttribute(b))});d&&(e.strictDi=null!==de(d,"strict-di"),b(d,c?[c]:[],e))}function yc(a,b,d){G(d)||(d={});d=R({strictDi:!1},d);var c=function(){a=B(a);if(a.injector()){var c=a[0]===v.document?"document":wa(a);throw Aa("btstrpd",c.replace(/</,"&lt;").replace(/>/,"&gt;"));}b=b||[];b.unshift(["$provide",function(b){b.value("$rootElement",a)}]);d.debugInfoEnabled&&b.push(["$compileProvider",function(a){a.debugInfoEnabled(!0)}]);
1364 q(Na,function(b){b+="app";var e;!d&&(e=a.querySelector("["+b.replace(":","\\:")+"]"))&&(d=e,c=e.getAttribute(b))});d&&(e.strictDi=null!==de(d,"strict-di"),b(d,c?[c]:[],e))}function yc(a,b,d){G(d)||(d={});d=R({strictDi:!1},d);var c=function(){a=B(a);if(a.injector()){var c=a[0]===v.document?"document":wa(a);throw Aa("btstrpd",c.replace(/</,"&lt;").replace(/>/,"&gt;"));}b=b||[];b.unshift(["$provide",function(b){b.value("$rootElement",a)}]);d.debugInfoEnabled&&b.push(["$compileProvider",function(a){a.debugInfoEnabled(!0)}]);
1365 b.unshift("ng");c=bb(b,d.strictDi);c.invoke(["$rootScope","$rootElement","$compile","$injector",function(a,b,c,d){a.$apply(function(){b.data("$injector",d);c(b)(a)})}]);return c},e=/^NG_ENABLE_DEBUG_INFO!/,f=/^NG_DEFER_BOOTSTRAP!/;v&&e.test(v.name)&&(d.debugInfoEnabled=!0,v.name=v.name.replace(e,""));if(v&&!f.test(v.name))return c();v.name=v.name.replace(f,"");ea.resumeBootstrap=function(a){q(a,function(a){b.push(a)});return c()};E(ea.resumeDeferredBootstrap)&&ea.resumeDeferredBootstrap()}function fe(){v.name=
1365 b.unshift("ng");c=bb(b,d.strictDi);c.invoke(["$rootScope","$rootElement","$compile","$injector",function(a,b,c,d){a.$apply(function(){b.data("$injector",d);c(b)(a)})}]);return c},e=/^NG_ENABLE_DEBUG_INFO!/,f=/^NG_DEFER_BOOTSTRAP!/;v&&e.test(v.name)&&(d.debugInfoEnabled=!0,v.name=v.name.replace(e,""));if(v&&!f.test(v.name))return c();v.name=v.name.replace(f,"");ea.resumeBootstrap=function(a){q(a,function(a){b.push(a)});return c()};E(ea.resumeDeferredBootstrap)&&ea.resumeDeferredBootstrap()}function fe(){v.name=
1366 "NG_ENABLE_DEBUG_INFO!"+v.name;v.location.reload()}function ge(a){a=ea.element(a).injector();if(!a)throw Aa("test");return a.get("$$testability")}function zc(a,b){b=b||"_";return a.replace(he,function(a,c){return(c?b:"")+a.toLowerCase()})}function ie(){var a;if(!Ac){var b=pb();(Z=y(b)?v.jQuery:b?v[b]:void 0)&&Z.fn.on?(B=Z,R(Z.fn,{scope:Oa.scope,isolateScope:Oa.isolateScope,controller:Oa.controller,injector:Oa.injector,inheritedData:Oa.inheritedData}),a=Z.cleanData,Z.cleanData=function(b){for(var c,
1366 "NG_ENABLE_DEBUG_INFO!"+v.name;v.location.reload()}function ge(a){a=ea.element(a).injector();if(!a)throw Aa("test");return a.get("$$testability")}function zc(a,b){b=b||"_";return a.replace(he,function(a,c){return(c?b:"")+a.toLowerCase()})}function ie(){var a;if(!Ac){var b=pb();(Z=y(b)?v.jQuery:b?v[b]:void 0)&&Z.fn.on?(B=Z,R(Z.fn,{scope:Oa.scope,isolateScope:Oa.isolateScope,controller:Oa.controller,injector:Oa.injector,inheritedData:Oa.inheritedData}),a=Z.cleanData,Z.cleanData=function(b){for(var c,
1367 e=0,f;null!=(f=b[e]);e++)(c=Z._data(f,"events"))&&c.$destroy&&Z(f).triggerHandler("$destroy");a(b)}):B=U;ea.element=B;Ac=!0}}function qb(a,b,d){if(!a)throw Aa("areq",b||"?",d||"required");return a}function Pa(a,b,d){d&&K(a)&&(a=a[a.length-1]);qb(E(a),b,"not a function, got "+(a&&"object"===typeof a?a.constructor.name||"Object":typeof a));return a}function Qa(a,b){if("hasOwnProperty"===a)throw Aa("badname",b);}function Bc(a,b,d){if(!b)return a;b=b.split(".");for(var c,e=a,f=b.length,g=0;g<f;g++)c=
1367 e=0,f;null!=(f=b[e]);e++)(c=Z._data(f,"events"))&&c.$destroy&&Z(f).triggerHandler("$destroy");a(b)}):B=U;ea.element=B;Ac=!0}}function qb(a,b,d){if(!a)throw Aa("areq",b||"?",d||"required");return a}function Pa(a,b,d){d&&K(a)&&(a=a[a.length-1]);qb(E(a),b,"not a function, got "+(a&&"object"===typeof a?a.constructor.name||"Object":typeof a));return a}function Qa(a,b){if("hasOwnProperty"===a)throw Aa("badname",b);}function Bc(a,b,d){if(!b)return a;b=b.split(".");for(var c,e=a,f=b.length,g=0;g<f;g++)c=
1368 b[g],a&&(a=(e=a)[c]);return!d&&E(a)?tc(e,a):a}function rb(a){for(var b=a[0],d=a[a.length-1],c,e=1;b!==d&&(b=b.nextSibling);e++)if(c||a[e]!==b)c||(c=B(za.call(a,0,e))),c.push(b);return c||a}function T(){return Object.create(null)}function je(a){function b(a,b,c){return a[b]||(a[b]=c())}var d=O("$injector"),c=O("ng");a=b(a,"angular",Object);a.$$minErr=a.$$minErr||O;return b(a,"module",function(){var a={};return function(f,g,h){if("hasOwnProperty"===f)throw c("badname","module");g&&a.hasOwnProperty(f)&&
1368 b[g],a&&(a=(e=a)[c]);return!d&&E(a)?tc(e,a):a}function rb(a){for(var b=a[0],d=a[a.length-1],c,e=1;b!==d&&(b=b.nextSibling);e++)if(c||a[e]!==b)c||(c=B(za.call(a,0,e))),c.push(b);return c||a}function T(){return Object.create(null)}function je(a){function b(a,b,c){return a[b]||(a[b]=c())}var d=O("$injector"),c=O("ng");a=b(a,"angular",Object);a.$$minErr=a.$$minErr||O;return b(a,"module",function(){var a={};return function(f,g,h){if("hasOwnProperty"===f)throw c("badname","module");g&&a.hasOwnProperty(f)&&
1369 (a[f]=null);return b(a,f,function(){function a(b,d,e,f){f||(f=c);return function(){f[e||"push"]([b,d,arguments]);return M}}function b(a,d){return function(b,e){e&&E(e)&&(e.$$moduleName=f);c.push([a,d,arguments]);return M}}if(!g)throw d("nomod",f);var c=[],e=[],r=[],N=a("$injector","invoke","push",e),M={_invokeQueue:c,_configBlocks:e,_runBlocks:r,requires:g,name:f,provider:b("$provide","provider"),factory:b("$provide","factory"),service:b("$provide","service"),value:a("$provide","value"),constant:a("$provide",
1369 (a[f]=null);return b(a,f,function(){function a(b,d,e,f){f||(f=c);return function(){f[e||"push"]([b,d,arguments]);return M}}function b(a,d){return function(b,e){e&&E(e)&&(e.$$moduleName=f);c.push([a,d,arguments]);return M}}if(!g)throw d("nomod",f);var c=[],e=[],r=[],N=a("$injector","invoke","push",e),M={_invokeQueue:c,_configBlocks:e,_runBlocks:r,requires:g,name:f,provider:b("$provide","provider"),factory:b("$provide","factory"),service:b("$provide","service"),value:a("$provide","value"),constant:a("$provide",
1370 "constant","unshift"),decorator:b("$provide","decorator"),animation:b("$animateProvider","register"),filter:b("$filterProvider","register"),controller:b("$controllerProvider","register"),directive:b("$compileProvider","directive"),component:b("$compileProvider","component"),config:N,run:function(a){r.push(a);return this}};h&&N(h);return M})}})}function ke(a){R(a,{bootstrap:yc,copy:qa,extend:R,merge:Yd,equals:pa,element:B,forEach:q,injector:bb,noop:C,bind:tc,toJson:ab,fromJson:uc,identity:Xa,isUndefined:y,
1370 "constant","unshift"),decorator:b("$provide","decorator"),animation:b("$animateProvider","register"),filter:b("$filterProvider","register"),controller:b("$controllerProvider","register"),directive:b("$compileProvider","directive"),component:b("$compileProvider","component"),config:N,run:function(a){r.push(a);return this}};h&&N(h);return M})}})}function ke(a){R(a,{bootstrap:yc,copy:qa,extend:R,merge:Yd,equals:pa,element:B,forEach:q,injector:bb,noop:C,bind:tc,toJson:ab,fromJson:uc,identity:Xa,isUndefined:y,
1371 isDefined:x,isString:F,isFunction:E,isObject:G,isNumber:Q,isElement:Ob,isArray:K,version:le,isDate:fa,lowercase:P,uppercase:sb,callbacks:{counter:0},getTestability:ge,$$minErr:O,$$csp:Ea,reloadWithDebugInfo:fe});Sb=je(v);Sb("ng",["ngLocale"],["$provide",function(a){a.provider({$$sanitizeUri:me});a.provider("$compile",Cc).directive({a:ne,input:Dc,textarea:Dc,form:oe,script:pe,select:qe,style:re,option:se,ngBind:te,ngBindHtml:ue,ngBindTemplate:ve,ngClass:we,ngClassEven:xe,ngClassOdd:ye,ngCloak:ze,ngController:Ae,
1371 isDefined:x,isString:F,isFunction:E,isObject:G,isNumber:Q,isElement:Ob,isArray:K,version:le,isDate:fa,lowercase:P,uppercase:sb,callbacks:{counter:0},getTestability:ge,$$minErr:O,$$csp:Ea,reloadWithDebugInfo:fe});Sb=je(v);Sb("ng",["ngLocale"],["$provide",function(a){a.provider({$$sanitizeUri:me});a.provider("$compile",Cc).directive({a:ne,input:Dc,textarea:Dc,form:oe,script:pe,select:qe,style:re,option:se,ngBind:te,ngBindHtml:ue,ngBindTemplate:ve,ngClass:we,ngClassEven:xe,ngClassOdd:ye,ngCloak:ze,ngController:Ae,
1372 ngForm:Be,ngHide:Ce,ngIf:De,ngInclude:Ee,ngInit:Fe,ngNonBindable:Ge,ngPluralize:He,ngRepeat:Ie,ngShow:Je,ngStyle:Ke,ngSwitch:Le,ngSwitchWhen:Me,ngSwitchDefault:Ne,ngOptions:Oe,ngTransclude:Pe,ngModel:Qe,ngList:Re,ngChange:Se,pattern:Ec,ngPattern:Ec,required:Fc,ngRequired:Fc,minlength:Gc,ngMinlength:Gc,maxlength:Hc,ngMaxlength:Hc,ngValue:Te,ngModelOptions:Ue}).directive({ngInclude:Ve}).directive(tb).directive(Ic);a.provider({$anchorScroll:We,$animate:Xe,$animateCss:Ye,$$animateJs:Ze,$$animateQueue:$e,
1372 ngForm:Be,ngHide:Ce,ngIf:De,ngInclude:Ee,ngInit:Fe,ngNonBindable:Ge,ngPluralize:He,ngRepeat:Ie,ngShow:Je,ngStyle:Ke,ngSwitch:Le,ngSwitchWhen:Me,ngSwitchDefault:Ne,ngOptions:Oe,ngTransclude:Pe,ngModel:Qe,ngList:Re,ngChange:Se,pattern:Ec,ngPattern:Ec,required:Fc,ngRequired:Fc,minlength:Gc,ngMinlength:Gc,maxlength:Hc,ngMaxlength:Hc,ngValue:Te,ngModelOptions:Ue}).directive({ngInclude:Ve}).directive(tb).directive(Ic);a.provider({$anchorScroll:We,$animate:Xe,$animateCss:Ye,$$animateJs:Ze,$$animateQueue:$e,
1373 $$AnimateRunner:af,$$animateAsyncRun:bf,$browser:cf,$cacheFactory:df,$controller:ef,$document:ff,$exceptionHandler:gf,$filter:Jc,$$forceReflow:hf,$interpolate:jf,$interval:kf,$http:lf,$httpParamSerializer:mf,$httpParamSerializerJQLike:nf,$httpBackend:of,$xhrFactory:pf,$location:qf,$log:rf,$parse:sf,$rootScope:tf,$q:uf,$$q:vf,$sce:wf,$sceDelegate:xf,$sniffer:yf,$templateCache:zf,$templateRequest:Af,$$testability:Bf,$timeout:Cf,$window:Df,$$rAF:Ef,$$jqLite:Ff,$$HashMap:Gf,$$cookieReader:Hf})}])}function cb(a){return a.replace(If,
1373 $$AnimateRunner:af,$$animateAsyncRun:bf,$browser:cf,$cacheFactory:df,$controller:ef,$document:ff,$exceptionHandler:gf,$filter:Jc,$$forceReflow:hf,$interpolate:jf,$interval:kf,$http:lf,$httpParamSerializer:mf,$httpParamSerializerJQLike:nf,$httpBackend:of,$xhrFactory:pf,$location:qf,$log:rf,$parse:sf,$rootScope:tf,$q:uf,$$q:vf,$sce:wf,$sceDelegate:xf,$sniffer:yf,$templateCache:zf,$templateRequest:Af,$$testability:Bf,$timeout:Cf,$window:Df,$$rAF:Ef,$$jqLite:Ff,$$HashMap:Gf,$$cookieReader:Hf})}])}function cb(a){return a.replace(If,
1374 function(a,d,c,e){return e?c.toUpperCase():c}).replace(Jf,"Moz$1")}function Kc(a){a=a.nodeType;return 1===a||!a||9===a}function Lc(a,b){var d,c,e=b.createDocumentFragment(),f=[];if(Tb.test(a)){d=d||e.appendChild(b.createElement("div"));c=(Kf.exec(a)||["",""])[1].toLowerCase();c=ia[c]||ia._default;d.innerHTML=c[1]+a.replace(Lf,"<$1></$2>")+c[2];for(c=c[0];c--;)d=d.lastChild;f=$a(f,d.childNodes);d=e.firstChild;d.textContent=""}else f.push(b.createTextNode(a));e.textContent="";e.innerHTML="";q(f,function(a){e.appendChild(a)});
1374 function(a,d,c,e){return e?c.toUpperCase():c}).replace(Jf,"Moz$1")}function Kc(a){a=a.nodeType;return 1===a||!a||9===a}function Lc(a,b){var d,c,e=b.createDocumentFragment(),f=[];if(Tb.test(a)){d=d||e.appendChild(b.createElement("div"));c=(Kf.exec(a)||["",""])[1].toLowerCase();c=ia[c]||ia._default;d.innerHTML=c[1]+a.replace(Lf,"<$1></$2>")+c[2];for(c=c[0];c--;)d=d.lastChild;f=$a(f,d.childNodes);d=e.firstChild;d.textContent=""}else f.push(b.createTextNode(a));e.textContent="";e.innerHTML="";q(f,function(a){e.appendChild(a)});
1375 return e}function Mc(a,b){var d=a.parentNode;d&&d.replaceChild(b,a);b.appendChild(a)}function U(a){if(a instanceof U)return a;var b;F(a)&&(a=V(a),b=!0);if(!(this instanceof U)){if(b&&"<"!=a.charAt(0))throw Ub("nosel");return new U(a)}if(b){b=v.document;var d;a=(d=Mf.exec(a))?[b.createElement(d[1])]:(d=Lc(a,b))?d.childNodes:[]}Nc(this,a)}function Vb(a){return a.cloneNode(!0)}function ub(a,b){b||db(a);if(a.querySelectorAll)for(var d=a.querySelectorAll("*"),c=0,e=d.length;c<e;c++)db(d[c])}function Oc(a,
1375 return e}function Mc(a,b){var d=a.parentNode;d&&d.replaceChild(b,a);b.appendChild(a)}function U(a){if(a instanceof U)return a;var b;F(a)&&(a=V(a),b=!0);if(!(this instanceof U)){if(b&&"<"!=a.charAt(0))throw Ub("nosel");return new U(a)}if(b){b=v.document;var d;a=(d=Mf.exec(a))?[b.createElement(d[1])]:(d=Lc(a,b))?d.childNodes:[]}Nc(this,a)}function Vb(a){return a.cloneNode(!0)}function ub(a,b){b||db(a);if(a.querySelectorAll)for(var d=a.querySelectorAll("*"),c=0,e=d.length;c<e;c++)db(d[c])}function Oc(a,
1376 b,d,c){if(x(c))throw Ub("offargs");var e=(c=vb(a))&&c.events,f=c&&c.handle;if(f)if(b){var g=function(b){var c=e[b];x(d)&&Za(c||[],d);x(d)&&c&&0<c.length||(a.removeEventListener(b,f,!1),delete e[b])};q(b.split(" "),function(a){g(a);wb[a]&&g(wb[a])})}else for(b in e)"$destroy"!==b&&a.removeEventListener(b,f,!1),delete e[b]}function db(a,b){var d=a.ng339,c=d&&eb[d];c&&(b?delete c.data[b]:(c.handle&&(c.events.$destroy&&c.handle({},"$destroy"),Oc(a)),delete eb[d],a.ng339=void 0))}function vb(a,b){var d=
1376 b,d,c){if(x(c))throw Ub("offargs");var e=(c=vb(a))&&c.events,f=c&&c.handle;if(f)if(b){var g=function(b){var c=e[b];x(d)&&Za(c||[],d);x(d)&&c&&0<c.length||(a.removeEventListener(b,f,!1),delete e[b])};q(b.split(" "),function(a){g(a);wb[a]&&g(wb[a])})}else for(b in e)"$destroy"!==b&&a.removeEventListener(b,f,!1),delete e[b]}function db(a,b){var d=a.ng339,c=d&&eb[d];c&&(b?delete c.data[b]:(c.handle&&(c.events.$destroy&&c.handle({},"$destroy"),Oc(a)),delete eb[d],a.ng339=void 0))}function vb(a,b){var d=
1377 a.ng339,d=d&&eb[d];b&&!d&&(a.ng339=d=++Nf,d=eb[d]={events:{},data:{},handle:void 0});return d}function Wb(a,b,d){if(Kc(a)){var c=x(d),e=!c&&b&&!G(b),f=!b;a=(a=vb(a,!e))&&a.data;if(c)a[b]=d;else{if(f)return a;if(e)return a&&a[b];R(a,b)}}}function xb(a,b){return a.getAttribute?-1<(" "+(a.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ").indexOf(" "+b+" "):!1}function yb(a,b){b&&a.setAttribute&&q(b.split(" "),function(b){a.setAttribute("class",V((" "+(a.getAttribute("class")||"")+" ").replace(/[\n\t]/g,
1377 a.ng339,d=d&&eb[d];b&&!d&&(a.ng339=d=++Nf,d=eb[d]={events:{},data:{},handle:void 0});return d}function Wb(a,b,d){if(Kc(a)){var c=x(d),e=!c&&b&&!G(b),f=!b;a=(a=vb(a,!e))&&a.data;if(c)a[b]=d;else{if(f)return a;if(e)return a&&a[b];R(a,b)}}}function xb(a,b){return a.getAttribute?-1<(" "+(a.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ").indexOf(" "+b+" "):!1}function yb(a,b){b&&a.setAttribute&&q(b.split(" "),function(b){a.setAttribute("class",V((" "+(a.getAttribute("class")||"")+" ").replace(/[\n\t]/g,
1378 " ").replace(" "+V(b)+" "," ")))})}function zb(a,b){if(b&&a.setAttribute){var d=(" "+(a.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ");q(b.split(" "),function(a){a=V(a);-1===d.indexOf(" "+a+" ")&&(d+=a+" ")});a.setAttribute("class",V(d))}}function Nc(a,b){if(b)if(b.nodeType)a[a.length++]=b;else{var d=b.length;if("number"===typeof d&&b.window!==b){if(d)for(var c=0;c<d;c++)a[a.length++]=b[c]}else a[a.length++]=b}}function Pc(a,b){return Ab(a,"$"+(b||"ngController")+"Controller")}function Ab(a,
1378 " ").replace(" "+V(b)+" "," ")))})}function zb(a,b){if(b&&a.setAttribute){var d=(" "+(a.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ");q(b.split(" "),function(a){a=V(a);-1===d.indexOf(" "+a+" ")&&(d+=a+" ")});a.setAttribute("class",V(d))}}function Nc(a,b){if(b)if(b.nodeType)a[a.length++]=b;else{var d=b.length;if("number"===typeof d&&b.window!==b){if(d)for(var c=0;c<d;c++)a[a.length++]=b[c]}else a[a.length++]=b}}function Pc(a,b){return Ab(a,"$"+(b||"ngController")+"Controller")}function Ab(a,
1379 b,d){9==a.nodeType&&(a=a.documentElement);for(b=K(b)?b:[b];a;){for(var c=0,e=b.length;c<e;c++)if(x(d=B.data(a,b[c])))return d;a=a.parentNode||11===a.nodeType&&a.host}}function Qc(a){for(ub(a,!0);a.firstChild;)a.removeChild(a.firstChild)}function Bb(a,b){b||ub(a);var d=a.parentNode;d&&d.removeChild(a)}function Of(a,b){b=b||v;if("complete"===b.document.readyState)b.setTimeout(a);else B(b).on("load",a)}function Rc(a,b){var d=Cb[b.toLowerCase()];return d&&Sc[va(a)]&&d}function Pf(a,b){var d=function(c,
1379 b,d){9==a.nodeType&&(a=a.documentElement);for(b=K(b)?b:[b];a;){for(var c=0,e=b.length;c<e;c++)if(x(d=B.data(a,b[c])))return d;a=a.parentNode||11===a.nodeType&&a.host}}function Qc(a){for(ub(a,!0);a.firstChild;)a.removeChild(a.firstChild)}function Bb(a,b){b||ub(a);var d=a.parentNode;d&&d.removeChild(a)}function Of(a,b){b=b||v;if("complete"===b.document.readyState)b.setTimeout(a);else B(b).on("load",a)}function Rc(a,b){var d=Cb[b.toLowerCase()];return d&&Sc[va(a)]&&d}function Pf(a,b){var d=function(c,
1380 d){c.isDefaultPrevented=function(){return c.defaultPrevented};var f=b[d||c.type],g=f?f.length:0;if(g){if(y(c.immediatePropagationStopped)){var h=c.stopImmediatePropagation;c.stopImmediatePropagation=function(){c.immediatePropagationStopped=!0;c.stopPropagation&&c.stopPropagation();h&&h.call(c)}}c.isImmediatePropagationStopped=function(){return!0===c.immediatePropagationStopped};var k=f.specialHandlerWrapper||Qf;1<g&&(f=ha(f));for(var l=0;l<g;l++)c.isImmediatePropagationStopped()||k(a,c,f[l])}};d.elem=
1380 d){c.isDefaultPrevented=function(){return c.defaultPrevented};var f=b[d||c.type],g=f?f.length:0;if(g){if(y(c.immediatePropagationStopped)){var h=c.stopImmediatePropagation;c.stopImmediatePropagation=function(){c.immediatePropagationStopped=!0;c.stopPropagation&&c.stopPropagation();h&&h.call(c)}}c.isImmediatePropagationStopped=function(){return!0===c.immediatePropagationStopped};var k=f.specialHandlerWrapper||Qf;1<g&&(f=ha(f));for(var l=0;l<g;l++)c.isImmediatePropagationStopped()||k(a,c,f[l])}};d.elem=
1381 a;return d}function Qf(a,b,d){d.call(a,b)}function Rf(a,b,d){var c=b.relatedTarget;c&&(c===a||Sf.call(a,c))||d.call(a,b)}function Ff(){this.$get=function(){return R(U,{hasClass:function(a,b){a.attr&&(a=a[0]);return xb(a,b)},addClass:function(a,b){a.attr&&(a=a[0]);return zb(a,b)},removeClass:function(a,b){a.attr&&(a=a[0]);return yb(a,b)}})}}function Fa(a,b){var d=a&&a.$$hashKey;if(d)return"function"===typeof d&&(d=a.$$hashKey()),d;d=typeof a;return d="function"==d||"object"==d&&null!==a?a.$$hashKey=
1381 a;return d}function Qf(a,b,d){d.call(a,b)}function Rf(a,b,d){var c=b.relatedTarget;c&&(c===a||Sf.call(a,c))||d.call(a,b)}function Ff(){this.$get=function(){return R(U,{hasClass:function(a,b){a.attr&&(a=a[0]);return xb(a,b)},addClass:function(a,b){a.attr&&(a=a[0]);return zb(a,b)},removeClass:function(a,b){a.attr&&(a=a[0]);return yb(a,b)}})}}function Fa(a,b){var d=a&&a.$$hashKey;if(d)return"function"===typeof d&&(d=a.$$hashKey()),d;d=typeof a;return d="function"==d||"object"==d&&null!==a?a.$$hashKey=
1382 d+":"+(b||Xd)():d+":"+a}function Ra(a,b){if(b){var d=0;this.nextUid=function(){return++d}}q(a,this.put,this)}function Tc(a){a=Function.prototype.toString.call(a).replace(Tf,"");return a.match(Uf)||a.match(Vf)}function Wf(a){return(a=Tc(a))?"function("+(a[1]||"").replace(/[\s\r\n]+/," ")+")":"fn"}function bb(a,b){function d(a){return function(b,c){if(G(b))q(b,qc(a));else return a(b,c)}}function c(a,b){Qa(a,"service");if(E(b)||K(b))b=r.instantiate(b);if(!b.$get)throw Ga("pget",a);return m[a+"Provider"]=
1382 d+":"+(b||Xd)():d+":"+a}function Ra(a,b){if(b){var d=0;this.nextUid=function(){return++d}}q(a,this.put,this)}function Tc(a){a=Function.prototype.toString.call(a).replace(Tf,"");return a.match(Uf)||a.match(Vf)}function Wf(a){return(a=Tc(a))?"function("+(a[1]||"").replace(/[\s\r\n]+/," ")+")":"fn"}function bb(a,b){function d(a){return function(b,c){if(G(b))q(b,qc(a));else return a(b,c)}}function c(a,b){Qa(a,"service");if(E(b)||K(b))b=r.instantiate(b);if(!b.$get)throw Ga("pget",a);return m[a+"Provider"]=
1383 b}function e(a,b){return function(){var c=w.invoke(b,this);if(y(c))throw Ga("undef",a);return c}}function f(a,b,d){return c(a,{$get:!1!==d?e(a,b):b})}function g(a){qb(y(a)||K(a),"modulesToLoad","not an array");var b=[],c;q(a,function(a){function d(a){var b,c;b=0;for(c=a.length;b<c;b++){var e=a[b],f=r.get(e[0]);f[e[1]].apply(f,e[2])}}if(!n.get(a)){n.put(a,!0);try{F(a)?(c=Sb(a),b=b.concat(g(c.requires)).concat(c._runBlocks),d(c._invokeQueue),d(c._configBlocks)):E(a)?b.push(r.invoke(a)):K(a)?b.push(r.invoke(a)):
1383 b}function e(a,b){return function(){var c=w.invoke(b,this);if(y(c))throw Ga("undef",a);return c}}function f(a,b,d){return c(a,{$get:!1!==d?e(a,b):b})}function g(a){qb(y(a)||K(a),"modulesToLoad","not an array");var b=[],c;q(a,function(a){function d(a){var b,c;b=0;for(c=a.length;b<c;b++){var e=a[b],f=r.get(e[0]);f[e[1]].apply(f,e[2])}}if(!n.get(a)){n.put(a,!0);try{F(a)?(c=Sb(a),b=b.concat(g(c.requires)).concat(c._runBlocks),d(c._invokeQueue),d(c._configBlocks)):E(a)?b.push(r.invoke(a)):K(a)?b.push(r.invoke(a)):
1384 Pa(a,"module")}catch(e){throw K(a)&&(a=a[a.length-1]),e.message&&e.stack&&-1==e.stack.indexOf(e.message)&&(e=e.message+"\n"+e.stack),Ga("modulerr",a,e.stack||e.message||e);}}});return b}function h(a,c){function d(b,e){if(a.hasOwnProperty(b)){if(a[b]===k)throw Ga("cdep",b+" <- "+l.join(" <- "));return a[b]}try{return l.unshift(b),a[b]=k,a[b]=c(b,e)}catch(f){throw a[b]===k&&delete a[b],f;}finally{l.shift()}}function e(a,c,f){var g=[];a=bb.$$annotate(a,b,f);for(var h=0,k=a.length;h<k;h++){var l=a[h];
1384 Pa(a,"module")}catch(e){throw K(a)&&(a=a[a.length-1]),e.message&&e.stack&&-1==e.stack.indexOf(e.message)&&(e=e.message+"\n"+e.stack),Ga("modulerr",a,e.stack||e.message||e);}}});return b}function h(a,c){function d(b,e){if(a.hasOwnProperty(b)){if(a[b]===k)throw Ga("cdep",b+" <- "+l.join(" <- "));return a[b]}try{return l.unshift(b),a[b]=k,a[b]=c(b,e)}catch(f){throw a[b]===k&&delete a[b],f;}finally{l.shift()}}function e(a,c,f){var g=[];a=bb.$$annotate(a,b,f);for(var h=0,k=a.length;h<k;h++){var l=a[h];
1385 if("string"!==typeof l)throw Ga("itkn",l);g.push(c&&c.hasOwnProperty(l)?c[l]:d(l,f))}return g}return{invoke:function(a,b,c,d){"string"===typeof c&&(d=c,c=null);c=e(a,c,d);K(a)&&(a=a[a.length-1]);d=11>=Ca?!1:"function"===typeof a&&/^(?:class\s|constructor\()/.test(Function.prototype.toString.call(a));return d?(c.unshift(null),new (Function.prototype.bind.apply(a,c))):a.apply(b,c)},instantiate:function(a,b,c){var d=K(a)?a[a.length-1]:a;a=e(a,b,c);a.unshift(null);return new (Function.prototype.bind.apply(d,
1385 if("string"!==typeof l)throw Ga("itkn",l);g.push(c&&c.hasOwnProperty(l)?c[l]:d(l,f))}return g}return{invoke:function(a,b,c,d){"string"===typeof c&&(d=c,c=null);c=e(a,c,d);K(a)&&(a=a[a.length-1]);d=11>=Ca?!1:"function"===typeof a&&/^(?:class\s|constructor\()/.test(Function.prototype.toString.call(a));return d?(c.unshift(null),new (Function.prototype.bind.apply(a,c))):a.apply(b,c)},instantiate:function(a,b,c){var d=K(a)?a[a.length-1]:a;a=e(a,b,c);a.unshift(null);return new (Function.prototype.bind.apply(d,
1386 a))},get:d,annotate:bb.$$annotate,has:function(b){return m.hasOwnProperty(b+"Provider")||a.hasOwnProperty(b)}}}b=!0===b;var k={},l=[],n=new Ra([],!0),m={$provide:{provider:d(c),factory:d(f),service:d(function(a,b){return f(a,["$injector",function(a){return a.instantiate(b)}])}),value:d(function(a,b){return f(a,da(b),!1)}),constant:d(function(a,b){Qa(a,"constant");m[a]=b;N[a]=b}),decorator:function(a,b){var c=r.get(a+"Provider"),d=c.$get;c.$get=function(){var a=w.invoke(d,c);return w.invoke(b,null,
1386 a))},get:d,annotate:bb.$$annotate,has:function(b){return m.hasOwnProperty(b+"Provider")||a.hasOwnProperty(b)}}}b=!0===b;var k={},l=[],n=new Ra([],!0),m={$provide:{provider:d(c),factory:d(f),service:d(function(a,b){return f(a,["$injector",function(a){return a.instantiate(b)}])}),value:d(function(a,b){return f(a,da(b),!1)}),constant:d(function(a,b){Qa(a,"constant");m[a]=b;N[a]=b}),decorator:function(a,b){var c=r.get(a+"Provider"),d=c.$get;c.$get=function(){var a=w.invoke(d,c);return w.invoke(b,null,
1387 {$delegate:a})}}}},r=m.$injector=h(m,function(a,b){ea.isString(b)&&l.push(b);throw Ga("unpr",l.join(" <- "));}),N={},M=h(N,function(a,b){var c=r.get(a+"Provider",b);return w.invoke(c.$get,c,void 0,a)}),w=M;m.$injectorProvider={$get:da(M)};var p=g(a),w=M.get("$injector");w.strictDi=b;q(p,function(a){a&&w.invoke(a)});return w}function We(){var a=!0;this.disableAutoScrolling=function(){a=!1};this.$get=["$window","$location","$rootScope",function(b,d,c){function e(a){var b=null;Array.prototype.some.call(a,
1387 {$delegate:a})}}}},r=m.$injector=h(m,function(a,b){ea.isString(b)&&l.push(b);throw Ga("unpr",l.join(" <- "));}),N={},M=h(N,function(a,b){var c=r.get(a+"Provider",b);return w.invoke(c.$get,c,void 0,a)}),w=M;m.$injectorProvider={$get:da(M)};var p=g(a),w=M.get("$injector");w.strictDi=b;q(p,function(a){a&&w.invoke(a)});return w}function We(){var a=!0;this.disableAutoScrolling=function(){a=!1};this.$get=["$window","$location","$rootScope",function(b,d,c){function e(a){var b=null;Array.prototype.some.call(a,
1388 function(a){if("a"===va(a))return b=a,!0});return b}function f(a){if(a){a.scrollIntoView();var c;c=g.yOffset;E(c)?c=c():Ob(c)?(c=c[0],c="fixed"!==b.getComputedStyle(c).position?0:c.getBoundingClientRect().bottom):Q(c)||(c=0);c&&(a=a.getBoundingClientRect().top,b.scrollBy(0,a-c))}else b.scrollTo(0,0)}function g(a){a=F(a)?a:d.hash();var b;a?(b=h.getElementById(a))?f(b):(b=e(h.getElementsByName(a)))?f(b):"top"===a&&f(null):f(null)}var h=b.document;a&&c.$watch(function(){return d.hash()},function(a,b){a===
1388 function(a){if("a"===va(a))return b=a,!0});return b}function f(a){if(a){a.scrollIntoView();var c;c=g.yOffset;E(c)?c=c():Ob(c)?(c=c[0],c="fixed"!==b.getComputedStyle(c).position?0:c.getBoundingClientRect().bottom):Q(c)||(c=0);c&&(a=a.getBoundingClientRect().top,b.scrollBy(0,a-c))}else b.scrollTo(0,0)}function g(a){a=F(a)?a:d.hash();var b;a?(b=h.getElementById(a))?f(b):(b=e(h.getElementsByName(a)))?f(b):"top"===a&&f(null):f(null)}var h=b.document;a&&c.$watch(function(){return d.hash()},function(a,b){a===
1389 b&&""===a||Of(function(){c.$evalAsync(g)})});return g}]}function fb(a,b){if(!a&&!b)return"";if(!a)return b;if(!b)return a;K(a)&&(a=a.join(" "));K(b)&&(b=b.join(" "));return a+" "+b}function Xf(a){F(a)&&(a=a.split(" "));var b=T();q(a,function(a){a.length&&(b[a]=!0)});return b}function Ha(a){return G(a)?a:{}}function Yf(a,b,d,c){function e(a){try{a.apply(null,za.call(arguments,1))}finally{if(M--,0===M)for(;w.length;)try{w.pop()()}catch(b){d.error(b)}}}function f(){u=null;g();h()}function g(){p=I();
1389 b&&""===a||Of(function(){c.$evalAsync(g)})});return g}]}function fb(a,b){if(!a&&!b)return"";if(!a)return b;if(!b)return a;K(a)&&(a=a.join(" "));K(b)&&(b=b.join(" "));return a+" "+b}function Xf(a){F(a)&&(a=a.split(" "));var b=T();q(a,function(a){a.length&&(b[a]=!0)});return b}function Ha(a){return G(a)?a:{}}function Yf(a,b,d,c){function e(a){try{a.apply(null,za.call(arguments,1))}finally{if(M--,0===M)for(;w.length;)try{w.pop()()}catch(b){d.error(b)}}}function f(){u=null;g();h()}function g(){p=I();
1390 p=y(p)?null:p;pa(p,L)&&(p=L);L=p}function h(){if(t!==k.url()||H!==p)t=k.url(),H=p,q(J,function(a){a(k.url(),p)})}var k=this,l=a.location,n=a.history,m=a.setTimeout,r=a.clearTimeout,N={};k.isMock=!1;var M=0,w=[];k.$$completeOutstandingRequest=e;k.$$incOutstandingRequestCount=function(){M++};k.notifyWhenNoOutstandingRequests=function(a){0===M?a():w.push(a)};var p,H,t=l.href,z=b.find("base"),u=null,I=c.history?function(){try{return n.state}catch(a){}}:C;g();H=p;k.url=function(b,d,e){y(e)&&(e=null);l!==
1390 p=y(p)?null:p;pa(p,L)&&(p=L);L=p}function h(){if(t!==k.url()||H!==p)t=k.url(),H=p,q(J,function(a){a(k.url(),p)})}var k=this,l=a.location,n=a.history,m=a.setTimeout,r=a.clearTimeout,N={};k.isMock=!1;var M=0,w=[];k.$$completeOutstandingRequest=e;k.$$incOutstandingRequestCount=function(){M++};k.notifyWhenNoOutstandingRequests=function(a){0===M?a():w.push(a)};var p,H,t=l.href,z=b.find("base"),u=null,I=c.history?function(){try{return n.state}catch(a){}}:C;g();H=p;k.url=function(b,d,e){y(e)&&(e=null);l!==
1391 a.location&&(l=a.location);n!==a.history&&(n=a.history);if(b){var f=H===e;if(t===b&&(!c.history||f))return k;var h=t&&Ia(t)===Ia(b);t=b;H=e;if(!c.history||h&&f){if(!h||u)u=b;d?l.replace(b):h?(d=l,e=b.indexOf("#"),e=-1===e?"":b.substr(e),d.hash=e):l.href=b;l.href!==b&&(u=b)}else n[d?"replaceState":"pushState"](e,"",b),g(),H=p;return k}return u||l.href.replace(/%27/g,"'")};k.state=function(){return p};var J=[],D=!1,L=null;k.onUrlChange=function(b){if(!D){if(c.history)B(a).on("popstate",f);B(a).on("hashchange",
1391 a.location&&(l=a.location);n!==a.history&&(n=a.history);if(b){var f=H===e;if(t===b&&(!c.history||f))return k;var h=t&&Ia(t)===Ia(b);t=b;H=e;if(!c.history||h&&f){if(!h||u)u=b;d?l.replace(b):h?(d=l,e=b.indexOf("#"),e=-1===e?"":b.substr(e),d.hash=e):l.href=b;l.href!==b&&(u=b)}else n[d?"replaceState":"pushState"](e,"",b),g(),H=p;return k}return u||l.href.replace(/%27/g,"'")};k.state=function(){return p};var J=[],D=!1,L=null;k.onUrlChange=function(b){if(!D){if(c.history)B(a).on("popstate",f);B(a).on("hashchange",
1392 f);D=!0}J.push(b);return b};k.$$applicationDestroyed=function(){B(a).off("hashchange popstate",f)};k.$$checkUrlChange=h;k.baseHref=function(){var a=z.attr("href");return a?a.replace(/^(https?\:)?\/\/[^\/]*/,""):""};k.defer=function(a,b){var c;M++;c=m(function(){delete N[c];e(a)},b||0);N[c]=!0;return c};k.defer.cancel=function(a){return N[a]?(delete N[a],r(a),e(C),!0):!1}}function cf(){this.$get=["$window","$log","$sniffer","$document",function(a,b,d,c){return new Yf(a,c,b,d)}]}function df(){this.$get=
1392 f);D=!0}J.push(b);return b};k.$$applicationDestroyed=function(){B(a).off("hashchange popstate",f)};k.$$checkUrlChange=h;k.baseHref=function(){var a=z.attr("href");return a?a.replace(/^(https?\:)?\/\/[^\/]*/,""):""};k.defer=function(a,b){var c;M++;c=m(function(){delete N[c];e(a)},b||0);N[c]=!0;return c};k.defer.cancel=function(a){return N[a]?(delete N[a],r(a),e(C),!0):!1}}function cf(){this.$get=["$window","$log","$sniffer","$document",function(a,b,d,c){return new Yf(a,c,b,d)}]}function df(){this.$get=
1393 function(){function a(a,c){function e(a){a!=m&&(r?r==a&&(r=a.n):r=a,f(a.n,a.p),f(a,m),m=a,m.n=null)}function f(a,b){a!=b&&(a&&(a.p=b),b&&(b.n=a))}if(a in b)throw O("$cacheFactory")("iid",a);var g=0,h=R({},c,{id:a}),k=T(),l=c&&c.capacity||Number.MAX_VALUE,n=T(),m=null,r=null;return b[a]={put:function(a,b){if(!y(b)){if(l<Number.MAX_VALUE){var c=n[a]||(n[a]={key:a});e(c)}a in k||g++;k[a]=b;g>l&&this.remove(r.key);return b}},get:function(a){if(l<Number.MAX_VALUE){var b=n[a];if(!b)return;e(b)}return k[a]},
1393 function(){function a(a,c){function e(a){a!=m&&(r?r==a&&(r=a.n):r=a,f(a.n,a.p),f(a,m),m=a,m.n=null)}function f(a,b){a!=b&&(a&&(a.p=b),b&&(b.n=a))}if(a in b)throw O("$cacheFactory")("iid",a);var g=0,h=R({},c,{id:a}),k=T(),l=c&&c.capacity||Number.MAX_VALUE,n=T(),m=null,r=null;return b[a]={put:function(a,b){if(!y(b)){if(l<Number.MAX_VALUE){var c=n[a]||(n[a]={key:a});e(c)}a in k||g++;k[a]=b;g>l&&this.remove(r.key);return b}},get:function(a){if(l<Number.MAX_VALUE){var b=n[a];if(!b)return;e(b)}return k[a]},
1394 remove:function(a){if(l<Number.MAX_VALUE){var b=n[a];if(!b)return;b==m&&(m=b.p);b==r&&(r=b.n);f(b.n,b.p);delete n[a]}a in k&&(delete k[a],g--)},removeAll:function(){k=T();g=0;n=T();m=r=null},destroy:function(){n=h=k=null;delete b[a]},info:function(){return R({},h,{size:g})}}}var b={};a.info=function(){var a={};q(b,function(b,e){a[e]=b.info()});return a};a.get=function(a){return b[a]};return a}}function zf(){this.$get=["$cacheFactory",function(a){return a("templates")}]}function Cc(a,b){function d(a,
1394 remove:function(a){if(l<Number.MAX_VALUE){var b=n[a];if(!b)return;b==m&&(m=b.p);b==r&&(r=b.n);f(b.n,b.p);delete n[a]}a in k&&(delete k[a],g--)},removeAll:function(){k=T();g=0;n=T();m=r=null},destroy:function(){n=h=k=null;delete b[a]},info:function(){return R({},h,{size:g})}}}var b={};a.info=function(){var a={};q(b,function(b,e){a[e]=b.info()});return a};a.get=function(a){return b[a]};return a}}function zf(){this.$get=["$cacheFactory",function(a){return a("templates")}]}function Cc(a,b){function d(a,
1395 b,c){var d=/^\s*([@&<]|=(\*?))(\??)\s*(\w*)\s*$/,e=T();q(a,function(a,f){if(a in n)e[f]=n[a];else{var g=a.match(d);if(!g)throw ga("iscp",b,f,a,c?"controller bindings definition":"isolate scope definition");e[f]={mode:g[1][0],collection:"*"===g[2],optional:"?"===g[3],attrName:g[4]||f};g[4]&&(n[a]=e[f])}});return e}function c(a){var b=a.charAt(0);if(!b||b!==P(b))throw ga("baddir",a);if(a!==a.trim())throw ga("baddir",a);}var e={},f=/^\s*directive\:\s*([\w\-]+)\s+(.*)$/,g=/(([\w\-]+)(?:\:([^;]+))?;?)/,
1395 b,c){var d=/^\s*([@&<]|=(\*?))(\??)\s*(\w*)\s*$/,e=T();q(a,function(a,f){if(a in n)e[f]=n[a];else{var g=a.match(d);if(!g)throw ga("iscp",b,f,a,c?"controller bindings definition":"isolate scope definition");e[f]={mode:g[1][0],collection:"*"===g[2],optional:"?"===g[3],attrName:g[4]||f};g[4]&&(n[a]=e[f])}});return e}function c(a){var b=a.charAt(0);if(!b||b!==P(b))throw ga("baddir",a);if(a!==a.trim())throw ga("baddir",a);}var e={},f=/^\s*directive\:\s*([\w\-]+)\s+(.*)$/,g=/(([\w\-]+)(?:\:([^;]+))?;?)/,
1396 h=ae("ngSrc,ngSrcset,src,srcset"),k=/^(?:(\^\^?)?(\?)?(\^\^?)?)?/,l=/^(on[a-z]+|formaction)$/,n=T();this.directive=function M(b,d){Qa(b,"directive");F(b)?(c(b),qb(d,"directiveFactory"),e.hasOwnProperty(b)||(e[b]=[],a.factory(b+"Directive",["$injector","$exceptionHandler",function(a,c){var d=[];q(e[b],function(e,f){try{var g=a.invoke(e);E(g)?g={compile:da(g)}:!g.compile&&g.link&&(g.compile=da(g.link));g.priority=g.priority||0;g.index=f;g.name=g.name||b;g.require=g.require||g.controller&&g.name;g.restrict=
1396 h=ae("ngSrc,ngSrcset,src,srcset"),k=/^(?:(\^\^?)?(\?)?(\^\^?)?)?/,l=/^(on[a-z]+|formaction)$/,n=T();this.directive=function M(b,d){Qa(b,"directive");F(b)?(c(b),qb(d,"directiveFactory"),e.hasOwnProperty(b)||(e[b]=[],a.factory(b+"Directive",["$injector","$exceptionHandler",function(a,c){var d=[];q(e[b],function(e,f){try{var g=a.invoke(e);E(g)?g={compile:da(g)}:!g.compile&&g.link&&(g.compile=da(g.link));g.priority=g.priority||0;g.index=f;g.name=g.name||b;g.require=g.require||g.controller&&g.name;g.restrict=
1397 g.restrict||"EA";g.$$moduleName=e.$$moduleName;d.push(g)}catch(h){c(h)}});return d}])),e[b].push(d)):q(b,qc(M));return this};this.component=function(a,b){function c(a){function e(b){return E(b)||K(b)?function(c,d){return a.invoke(b,this,{$element:c,$attrs:d})}:b}var f=b.template||b.templateUrl?b.template:"",g={controller:d,controllerAs:Uc(b.controller)||b.controllerAs||"$ctrl",template:e(f),templateUrl:e(b.templateUrl),transclude:b.transclude,scope:{},bindToController:b.bindings||{},restrict:"E",
1397 g.restrict||"EA";g.$$moduleName=e.$$moduleName;d.push(g)}catch(h){c(h)}});return d}])),e[b].push(d)):q(b,qc(M));return this};this.component=function(a,b){function c(a){function e(b){return E(b)||K(b)?function(c,d){return a.invoke(b,this,{$element:c,$attrs:d})}:b}var f=b.template||b.templateUrl?b.template:"",g={controller:d,controllerAs:Uc(b.controller)||b.controllerAs||"$ctrl",template:e(f),templateUrl:e(b.templateUrl),transclude:b.transclude,scope:{},bindToController:b.bindings||{},restrict:"E",
1398 require:b.require};q(b,function(a,b){"$"===b.charAt(0)&&(g[b]=a)});return g}var d=b.controller||function(){};q(b,function(a,b){"$"===b.charAt(0)&&(c[b]=a,E(d)&&(d[b]=a))});c.$inject=["$injector"];return this.directive(a,c)};this.aHrefSanitizationWhitelist=function(a){return x(a)?(b.aHrefSanitizationWhitelist(a),this):b.aHrefSanitizationWhitelist()};this.imgSrcSanitizationWhitelist=function(a){return x(a)?(b.imgSrcSanitizationWhitelist(a),this):b.imgSrcSanitizationWhitelist()};var m=!0;this.debugInfoEnabled=
1398 require:b.require};q(b,function(a,b){"$"===b.charAt(0)&&(g[b]=a)});return g}var d=b.controller||function(){};q(b,function(a,b){"$"===b.charAt(0)&&(c[b]=a,E(d)&&(d[b]=a))});c.$inject=["$injector"];return this.directive(a,c)};this.aHrefSanitizationWhitelist=function(a){return x(a)?(b.aHrefSanitizationWhitelist(a),this):b.aHrefSanitizationWhitelist()};this.imgSrcSanitizationWhitelist=function(a){return x(a)?(b.imgSrcSanitizationWhitelist(a),this):b.imgSrcSanitizationWhitelist()};var m=!0;this.debugInfoEnabled=
1399 function(a){return x(a)?(m=a,this):m};var r=10;this.onChangesTtl=function(a){return arguments.length?(r=a,this):r};this.$get=["$injector","$interpolate","$exceptionHandler","$templateRequest","$parse","$controller","$rootScope","$sce","$animate","$$sanitizeUri",function(a,b,c,n,t,z,u,I,J,D){function L(){try{if(!--qa)throw Z=void 0,ga("infchng",r);u.$apply(function(){for(var a=0,b=Z.length;a<b;++a)Z[a]();Z=void 0})}finally{qa++}}function S(a,b){if(b){var c=Object.keys(b),d,e,f;d=0;for(e=c.length;d<
1399 function(a){return x(a)?(m=a,this):m};var r=10;this.onChangesTtl=function(a){return arguments.length?(r=a,this):r};this.$get=["$injector","$interpolate","$exceptionHandler","$templateRequest","$parse","$controller","$rootScope","$sce","$animate","$$sanitizeUri",function(a,b,c,n,t,z,u,I,J,D){function L(){try{if(!--qa)throw Z=void 0,ga("infchng",r);u.$apply(function(){for(var a=0,b=Z.length;a<b;++a)Z[a]();Z=void 0})}finally{qa++}}function S(a,b){if(b){var c=Object.keys(b),d,e,f;d=0;for(e=c.length;d<
1400 e;d++)f=c[d],this[f]=b[f]}else this.$attr={};this.$$element=a}function $(a,b,c){na.innerHTML="<span "+b+">";b=na.firstChild.attributes;var d=b[0];b.removeNamedItem(d.name);d.value=c;a.attributes.setNamedItem(d)}function A(a,b){try{a.addClass(b)}catch(c){}}function ba(a,b,c,d,e){a instanceof B||(a=B(a));for(var f=/\S+/,g=0,h=a.length;g<h;g++){var k=a[g];k.nodeType===Ma&&k.nodeValue.match(f)&&Mc(k,a[g]=v.document.createElement("span"))}var l=s(a,b,a,c,d,e);ba.$$addScopeClass(a);var m=null;return function(b,
1400 e;d++)f=c[d],this[f]=b[f]}else this.$attr={};this.$$element=a}function $(a,b,c){na.innerHTML="<span "+b+">";b=na.firstChild.attributes;var d=b[0];b.removeNamedItem(d.name);d.value=c;a.attributes.setNamedItem(d)}function A(a,b){try{a.addClass(b)}catch(c){}}function ba(a,b,c,d,e){a instanceof B||(a=B(a));for(var f=/\S+/,g=0,h=a.length;g<h;g++){var k=a[g];k.nodeType===Ma&&k.nodeValue.match(f)&&Mc(k,a[g]=v.document.createElement("span"))}var l=s(a,b,a,c,d,e);ba.$$addScopeClass(a);var m=null;return function(b,
1401 c,d){qb(b,"scope");e&&e.needsNewScope&&(b=b.$parent.$new());d=d||{};var f=d.parentBoundTranscludeFn,g=d.transcludeControllers;d=d.futureParentElement;f&&f.$$boundTransclude&&(f=f.$$boundTransclude);m||(m=(d=d&&d[0])?"foreignobject"!==va(d)&&ma.call(d).match(/SVG/)?"svg":"html":"html");d="html"!==m?B(ca(m,B("<div>").append(a).html())):c?Oa.clone.call(a):a;if(g)for(var h in g)d.data("$"+h+"Controller",g[h].instance);ba.$$addScopeInfo(d,b);c&&c(d,b);l&&l(b,d,d,f);return d}}function s(a,b,c,d,e,f){function g(a,
1401 c,d){qb(b,"scope");e&&e.needsNewScope&&(b=b.$parent.$new());d=d||{};var f=d.parentBoundTranscludeFn,g=d.transcludeControllers;d=d.futureParentElement;f&&f.$$boundTransclude&&(f=f.$$boundTransclude);m||(m=(d=d&&d[0])?"foreignobject"!==va(d)&&ma.call(d).match(/SVG/)?"svg":"html":"html");d="html"!==m?B(ca(m,B("<div>").append(a).html())):c?Oa.clone.call(a):a;if(g)for(var h in g)d.data("$"+h+"Controller",g[h].instance);ba.$$addScopeInfo(d,b);c&&c(d,b);l&&l(b,d,d,f);return d}}function s(a,b,c,d,e,f){function g(a,
1402 c,d,e){var f,k,l,m,n,t,p;if(r)for(p=Array(c.length),m=0;m<h.length;m+=3)f=h[m],p[f]=c[f];else p=c;m=0;for(n=h.length;m<n;)k=p[h[m++]],c=h[m++],f=h[m++],c?(c.scope?(l=a.$new(),ba.$$addScopeInfo(B(k),l)):l=a,t=c.transcludeOnThisElement?ka(a,c.transclude,e):!c.templateOnThisElement&&e?e:!e&&b?ka(a,b):null,c(f,l,k,d,t)):f&&f(a,k.childNodes,void 0,e)}for(var h=[],k,l,m,n,r,t=0;t<a.length;t++){k=new S;l=x(a[t],[],k,0===t?d:void 0,e);(f=l.length?Ba(l,a[t],k,b,c,null,[],[],f):null)&&f.scope&&ba.$$addScopeClass(k.$$element);
1402 c,d,e){var f,k,l,m,n,t,p;if(r)for(p=Array(c.length),m=0;m<h.length;m+=3)f=h[m],p[f]=c[f];else p=c;m=0;for(n=h.length;m<n;)k=p[h[m++]],c=h[m++],f=h[m++],c?(c.scope?(l=a.$new(),ba.$$addScopeInfo(B(k),l)):l=a,t=c.transcludeOnThisElement?ka(a,c.transclude,e):!c.templateOnThisElement&&e?e:!e&&b?ka(a,b):null,c(f,l,k,d,t)):f&&f(a,k.childNodes,void 0,e)}for(var h=[],k,l,m,n,r,t=0;t<a.length;t++){k=new S;l=x(a[t],[],k,0===t?d:void 0,e);(f=l.length?Ba(l,a[t],k,b,c,null,[],[],f):null)&&f.scope&&ba.$$addScopeClass(k.$$element);
1403 k=f&&f.terminal||!(m=a[t].childNodes)||!m.length?null:s(m,f?(f.transcludeOnThisElement||!f.templateOnThisElement)&&f.transclude:b);if(f||k)h.push(t,f,k),n=!0,r=r||f;f=null}return n?g:null}function ka(a,b,c){function d(e,f,g,h,k){e||(e=a.$new(!1,k),e.$$transcluded=!0);return b(e,f,{parentBoundTranscludeFn:c,transcludeControllers:g,futureParentElement:h})}var e=d.$$slots=T(),f;for(f in b.$$slots)e[f]=b.$$slots[f]?ka(a,b.$$slots[f],c):null;return d}function x(a,b,c,d,e){var h=c.$attr,k;switch(a.nodeType){case 1:la(b,
1403 k=f&&f.terminal||!(m=a[t].childNodes)||!m.length?null:s(m,f?(f.transcludeOnThisElement||!f.templateOnThisElement)&&f.transclude:b);if(f||k)h.push(t,f,k),n=!0,r=r||f;f=null}return n?g:null}function ka(a,b,c){function d(e,f,g,h,k){e||(e=a.$new(!1,k),e.$$transcluded=!0);return b(e,f,{parentBoundTranscludeFn:c,transcludeControllers:g,futureParentElement:h})}var e=d.$$slots=T(),f;for(f in b.$$slots)e[f]=b.$$slots[f]?ka(a,b.$$slots[f],c):null;return d}function x(a,b,c,d,e){var h=c.$attr,k;switch(a.nodeType){case 1:la(b,
1404 xa(va(a)),"E",d,e);for(var l,m,n,t=a.attributes,r=0,p=t&&t.length;r<p;r++){var I=!1,D=!1;l=t[r];k=l.name;m=V(l.value);l=xa(k);if(n=ya.test(l))k=k.replace(Vc,"").substr(8).replace(/_(.)/g,function(a,b){return b.toUpperCase()});(l=l.match(Aa))&&Q(l[1])&&(I=k,D=k.substr(0,k.length-5)+"end",k=k.substr(0,k.length-6));l=xa(k.toLowerCase());h[l]=k;if(n||!c.hasOwnProperty(l))c[l]=m,Rc(a,l)&&(c[l]=!0);fa(a,b,m,l,n);la(b,l,"A",d,e,I,D)}a=a.className;G(a)&&(a=a.animVal);if(F(a)&&""!==a)for(;k=g.exec(a);)l=xa(k[2]),
1404 xa(va(a)),"E",d,e);for(var l,m,n,t=a.attributes,r=0,p=t&&t.length;r<p;r++){var I=!1,D=!1;l=t[r];k=l.name;m=V(l.value);l=xa(k);if(n=ya.test(l))k=k.replace(Vc,"").substr(8).replace(/_(.)/g,function(a,b){return b.toUpperCase()});(l=l.match(Aa))&&Q(l[1])&&(I=k,D=k.substr(0,k.length-5)+"end",k=k.substr(0,k.length-6));l=xa(k.toLowerCase());h[l]=k;if(n||!c.hasOwnProperty(l))c[l]=m,Rc(a,l)&&(c[l]=!0);fa(a,b,m,l,n);la(b,l,"A",d,e,I,D)}a=a.className;G(a)&&(a=a.animVal);if(F(a)&&""!==a)for(;k=g.exec(a);)l=xa(k[2]),
1405 la(b,l,"C",d,e)&&(c[l]=V(k[3])),a=a.substr(k.index+k[0].length);break;case Ma:if(11===Ca)for(;a.parentNode&&a.nextSibling&&a.nextSibling.nodeType===Ma;)a.nodeValue+=a.nextSibling.nodeValue,a.parentNode.removeChild(a.nextSibling);X(b,a.nodeValue);break;case 8:try{if(k=f.exec(a.nodeValue))l=xa(k[1]),la(b,l,"M",d,e)&&(c[l]=V(k[2]))}catch(J){}}b.sort(Y);return b}function Wc(a,b,c){var d=[],e=0;if(b&&a.hasAttribute&&a.hasAttribute(b)){do{if(!a)throw ga("uterdir",b,c);1==a.nodeType&&(a.hasAttribute(b)&&
1405 la(b,l,"C",d,e)&&(c[l]=V(k[3])),a=a.substr(k.index+k[0].length);break;case Ma:if(11===Ca)for(;a.parentNode&&a.nextSibling&&a.nextSibling.nodeType===Ma;)a.nodeValue+=a.nextSibling.nodeValue,a.parentNode.removeChild(a.nextSibling);X(b,a.nodeValue);break;case 8:try{if(k=f.exec(a.nodeValue))l=xa(k[1]),la(b,l,"M",d,e)&&(c[l]=V(k[2]))}catch(J){}}b.sort(Y);return b}function Wc(a,b,c){var d=[],e=0;if(b&&a.hasAttribute&&a.hasAttribute(b)){do{if(!a)throw ga("uterdir",b,c);1==a.nodeType&&(a.hasAttribute(b)&&
1406 e++,a.hasAttribute(c)&&e--);d.push(a);a=a.nextSibling}while(0<e)}else d.push(a);return B(d)}function Xc(a,b,c){return function(d,e,f,g,h){e=Wc(e[0],b,c);return a(d,e,f,g,h)}}function Yb(a,b,c,d,e,f){var g;return a?ba(b,c,d,e,f):function(){g||(g=ba(b,c,d,e,f),b=c=f=null);return g.apply(this,arguments)}}function Ba(a,b,d,e,f,g,h,k,l){function m(a,b,c,d){if(a){c&&(a=Xc(a,c,d));a.require=A.require;a.directiveName=M;if(D===A||A.$$isolateScope)a=ha(a,{isolateScope:!0});h.push(a)}if(b){c&&(b=Xc(b,c,d));
1406 e++,a.hasAttribute(c)&&e--);d.push(a);a=a.nextSibling}while(0<e)}else d.push(a);return B(d)}function Xc(a,b,c){return function(d,e,f,g,h){e=Wc(e[0],b,c);return a(d,e,f,g,h)}}function Yb(a,b,c,d,e,f){var g;return a?ba(b,c,d,e,f):function(){g||(g=ba(b,c,d,e,f),b=c=f=null);return g.apply(this,arguments)}}function Ba(a,b,d,e,f,g,h,k,l){function m(a,b,c,d){if(a){c&&(a=Xc(a,c,d));a.require=A.require;a.directiveName=M;if(D===A||A.$$isolateScope)a=ha(a,{isolateScope:!0});h.push(a)}if(b){c&&(b=Xc(b,c,d));
1407 b.require=A.require;b.directiveName=M;if(D===A||A.$$isolateScope)b=ha(b,{isolateScope:!0});k.push(b)}}function n(a,c,e,f,g){function l(a,b,c,d){var e;Ya(a)||(d=c,c=b,b=a,a=void 0);H&&(e=u);c||(c=H?z.parent():z);if(d){var f=g.$$slots[d];if(f)return f(a,b,e,c,$);if(y(f))throw ga("noslot",d,wa(z));}else return g(a,b,e,c,$)}var m,t,p,A,w,u,L,z;b===e?(f=d,z=d.$$element):(z=B(e),f=new S(z,d));w=c;D?A=c.$new(!0):r&&(w=c.$parent);g&&(L=l,L.$$boundTransclude=g,L.isSlotFilled=function(a){return!!g.$$slots[a]});
1407 b.require=A.require;b.directiveName=M;if(D===A||A.$$isolateScope)b=ha(b,{isolateScope:!0});k.push(b)}}function n(a,c,e,f,g){function l(a,b,c,d){var e;Ya(a)||(d=c,c=b,b=a,a=void 0);H&&(e=u);c||(c=H?z.parent():z);if(d){var f=g.$$slots[d];if(f)return f(a,b,e,c,$);if(y(f))throw ga("noslot",d,wa(z));}else return g(a,b,e,c,$)}var m,t,p,A,w,u,L,z;b===e?(f=d,z=d.$$element):(z=B(e),f=new S(z,d));w=c;D?A=c.$new(!0):r&&(w=c.$parent);g&&(L=l,L.$$boundTransclude=g,L.isSlotFilled=function(a){return!!g.$$slots[a]});
1408 I&&(u=O(z,f,L,I,A,c,D));D&&(ba.$$addScopeInfo(z,A,!0,!(J&&(J===D||J===D.$$originalDirective))),ba.$$addScopeClass(z,!0),A.$$isolateBindings=D.$$isolateBindings,t=ia(c,f,A,A.$$isolateBindings,D),t.removeWatches&&A.$on("$destroy",t.removeWatches));for(m in u){t=I[m];p=u[m];var Xb=t.$$bindings.bindToController;p.bindingInfo=p.identifier&&Xb?ia(w,f,p.instance,Xb,t):{};var M=p();M!==p.instance&&(p.instance=M,z.data("$"+t.name+"Controller",M),p.bindingInfo.removeWatches&&p.bindingInfo.removeWatches(),p.bindingInfo=
1408 I&&(u=O(z,f,L,I,A,c,D));D&&(ba.$$addScopeInfo(z,A,!0,!(J&&(J===D||J===D.$$originalDirective))),ba.$$addScopeClass(z,!0),A.$$isolateBindings=D.$$isolateBindings,t=ia(c,f,A,A.$$isolateBindings,D),t.removeWatches&&A.$on("$destroy",t.removeWatches));for(m in u){t=I[m];p=u[m];var Xb=t.$$bindings.bindToController;p.bindingInfo=p.identifier&&Xb?ia(w,f,p.instance,Xb,t):{};var M=p();M!==p.instance&&(p.instance=M,z.data("$"+t.name+"Controller",M),p.bindingInfo.removeWatches&&p.bindingInfo.removeWatches(),p.bindingInfo=
1409 ia(w,f,p.instance,Xb,t))}q(I,function(a,b){var c=a.require;a.bindToController&&!K(c)&&G(c)&&R(u[b].instance,gb(b,c,z,u))});q(u,function(a){var b=a.instance;E(b.$onChanges)&&b.$onChanges(a.bindingInfo.initialChanges);E(b.$onInit)&&b.$onInit();E(b.$onDestroy)&&w.$on("$destroy",function(){b.$onDestroy()})});m=0;for(t=h.length;m<t;m++)p=h[m],ja(p,p.isolateScope?A:c,z,f,p.require&&gb(p.directiveName,p.require,z,u),L);var $=c;D&&(D.template||null===D.templateUrl)&&($=A);a&&a($,e.childNodes,void 0,g);for(m=
1409 ia(w,f,p.instance,Xb,t))}q(I,function(a,b){var c=a.require;a.bindToController&&!K(c)&&G(c)&&R(u[b].instance,gb(b,c,z,u))});q(u,function(a){var b=a.instance;E(b.$onChanges)&&b.$onChanges(a.bindingInfo.initialChanges);E(b.$onInit)&&b.$onInit();E(b.$onDestroy)&&w.$on("$destroy",function(){b.$onDestroy()})});m=0;for(t=h.length;m<t;m++)p=h[m],ja(p,p.isolateScope?A:c,z,f,p.require&&gb(p.directiveName,p.require,z,u),L);var $=c;D&&(D.template||null===D.templateUrl)&&($=A);a&&a($,e.childNodes,void 0,g);for(m=
1410 k.length-1;0<=m;m--)p=k[m],ja(p,p.isolateScope?A:c,z,f,p.require&&gb(p.directiveName,p.require,z,u),L);q(u,function(a){a=a.instance;E(a.$postLink)&&a.$postLink()})}l=l||{};for(var t=-Number.MAX_VALUE,r=l.newScopeDirective,I=l.controllerDirectives,D=l.newIsolateScopeDirective,J=l.templateDirective,w=l.nonTlbTranscludeDirective,u=!1,L=!1,H=l.hasElementTranscludeDirective,z=d.$$element=B(b),A,M,$,s=e,Sa,ka=!1,C=!1,v,F=0,Ba=a.length;F<Ba;F++){A=a[F];var P=A.$$start,Q=A.$$end;P&&(z=Wc(b,P,Q));$=void 0;
1410 k.length-1;0<=m;m--)p=k[m],ja(p,p.isolateScope?A:c,z,f,p.require&&gb(p.directiveName,p.require,z,u),L);q(u,function(a){a=a.instance;E(a.$postLink)&&a.$postLink()})}l=l||{};for(var t=-Number.MAX_VALUE,r=l.newScopeDirective,I=l.controllerDirectives,D=l.newIsolateScopeDirective,J=l.templateDirective,w=l.nonTlbTranscludeDirective,u=!1,L=!1,H=l.hasElementTranscludeDirective,z=d.$$element=B(b),A,M,$,s=e,Sa,ka=!1,C=!1,v,F=0,Ba=a.length;F<Ba;F++){A=a[F];var P=A.$$start,Q=A.$$end;P&&(z=Wc(b,P,Q));$=void 0;
1411 if(t>A.priority)break;if(v=A.scope)A.templateUrl||(G(v)?(W("new/isolated scope",D||r,A,z),D=A):W("new/isolated scope",D,A,z)),r=r||A;M=A.name;if(!ka&&(A.replace&&(A.templateUrl||A.template)||A.transclude&&!A.$$tlb)){for(v=F+1;ka=a[v++];)if(ka.transclude&&!ka.$$tlb||ka.replace&&(ka.templateUrl||ka.template)){C=!0;break}ka=!0}!A.templateUrl&&A.controller&&(v=A.controller,I=I||T(),W("'"+M+"' controller",I[M],A,z),I[M]=A);if(v=A.transclude)if(u=!0,A.$$tlb||(W("transclusion",w,A,z),w=A),"element"==v)H=
1411 if(t>A.priority)break;if(v=A.scope)A.templateUrl||(G(v)?(W("new/isolated scope",D||r,A,z),D=A):W("new/isolated scope",D,A,z)),r=r||A;M=A.name;if(!ka&&(A.replace&&(A.templateUrl||A.template)||A.transclude&&!A.$$tlb)){for(v=F+1;ka=a[v++];)if(ka.transclude&&!ka.$$tlb||ka.replace&&(ka.templateUrl||ka.template)){C=!0;break}ka=!0}!A.templateUrl&&A.controller&&(v=A.controller,I=I||T(),W("'"+M+"' controller",I[M],A,z),I[M]=A);if(v=A.transclude)if(u=!0,A.$$tlb||(W("transclusion",w,A,z),w=A),"element"==v)H=
1412 !0,t=A.priority,$=z,z=d.$$element=B(ba.$$createComment(M,d[M])),b=z[0],da(f,za.call($,0),b),$[0].$$parentNode=$[0].parentNode,s=Yb(C,$,e,t,g&&g.name,{nonTlbTranscludeDirective:w});else{var la=T();$=B(Vb(b)).contents();if(G(v)){$=[];var Y=T(),X=T();q(v,function(a,b){var c="?"===a.charAt(0);a=c?a.substring(1):a;Y[a]=b;la[b]=null;X[b]=c});q(z.contents(),function(a){var b=Y[xa(va(a))];b?(X[b]=!0,la[b]=la[b]||[],la[b].push(a)):$.push(a)});q(X,function(a,b){if(!a)throw ga("reqslot",b);});for(var Z in la)la[Z]&&
1412 !0,t=A.priority,$=z,z=d.$$element=B(ba.$$createComment(M,d[M])),b=z[0],da(f,za.call($,0),b),$[0].$$parentNode=$[0].parentNode,s=Yb(C,$,e,t,g&&g.name,{nonTlbTranscludeDirective:w});else{var la=T();$=B(Vb(b)).contents();if(G(v)){$=[];var Y=T(),X=T();q(v,function(a,b){var c="?"===a.charAt(0);a=c?a.substring(1):a;Y[a]=b;la[b]=null;X[b]=c});q(z.contents(),function(a){var b=Y[xa(va(a))];b?(X[b]=!0,la[b]=la[b]||[],la[b].push(a)):$.push(a)});q(X,function(a,b){if(!a)throw ga("reqslot",b);});for(var Z in la)la[Z]&&
1413 (la[Z]=Yb(C,la[Z],e))}z.empty();s=Yb(C,$,e,void 0,void 0,{needsNewScope:A.$$isolateScope||A.$$newScope});s.$$slots=la}if(A.template)if(L=!0,W("template",J,A,z),J=A,v=E(A.template)?A.template(z,d):A.template,v=ta(v),A.replace){g=A;$=Tb.test(v)?Yc(ca(A.templateNamespace,V(v))):[];b=$[0];if(1!=$.length||1!==b.nodeType)throw ga("tplrt",M,"");da(f,z,b);Ba={$attr:{}};v=x(b,[],Ba);var ea=a.splice(F+1,a.length-(F+1));(D||r)&&Zc(v,D,r);a=a.concat(v).concat(ea);U(d,Ba);Ba=a.length}else z.html(v);if(A.templateUrl)L=
1413 (la[Z]=Yb(C,la[Z],e))}z.empty();s=Yb(C,$,e,void 0,void 0,{needsNewScope:A.$$isolateScope||A.$$newScope});s.$$slots=la}if(A.template)if(L=!0,W("template",J,A,z),J=A,v=E(A.template)?A.template(z,d):A.template,v=ta(v),A.replace){g=A;$=Tb.test(v)?Yc(ca(A.templateNamespace,V(v))):[];b=$[0];if(1!=$.length||1!==b.nodeType)throw ga("tplrt",M,"");da(f,z,b);Ba={$attr:{}};v=x(b,[],Ba);var ea=a.splice(F+1,a.length-(F+1));(D||r)&&Zc(v,D,r);a=a.concat(v).concat(ea);U(d,Ba);Ba=a.length}else z.html(v);if(A.templateUrl)L=
1414 !0,W("template",J,A,z),J=A,A.replace&&(g=A),n=aa(a.splice(F,a.length-F),z,d,f,u&&s,h,k,{controllerDirectives:I,newScopeDirective:r!==A&&r,newIsolateScopeDirective:D,templateDirective:J,nonTlbTranscludeDirective:w}),Ba=a.length;else if(A.compile)try{Sa=A.compile(z,d,s),E(Sa)?m(null,Sa,P,Q):Sa&&m(Sa.pre,Sa.post,P,Q)}catch(fa){c(fa,wa(z))}A.terminal&&(n.terminal=!0,t=Math.max(t,A.priority))}n.scope=r&&!0===r.scope;n.transcludeOnThisElement=u;n.templateOnThisElement=L;n.transclude=s;l.hasElementTranscludeDirective=
1414 !0,W("template",J,A,z),J=A,A.replace&&(g=A),n=aa(a.splice(F,a.length-F),z,d,f,u&&s,h,k,{controllerDirectives:I,newScopeDirective:r!==A&&r,newIsolateScopeDirective:D,templateDirective:J,nonTlbTranscludeDirective:w}),Ba=a.length;else if(A.compile)try{Sa=A.compile(z,d,s),E(Sa)?m(null,Sa,P,Q):Sa&&m(Sa.pre,Sa.post,P,Q)}catch(fa){c(fa,wa(z))}A.terminal&&(n.terminal=!0,t=Math.max(t,A.priority))}n.scope=r&&!0===r.scope;n.transcludeOnThisElement=u;n.templateOnThisElement=L;n.transclude=s;l.hasElementTranscludeDirective=
1415 H;return n}function gb(a,b,c,d){var e;if(F(b)){var f=b.match(k);b=b.substring(f[0].length);var g=f[1]||f[3],f="?"===f[2];"^^"===g?c=c.parent():e=(e=d&&d[b])&&e.instance;if(!e){var h="$"+b+"Controller";e=g?c.inheritedData(h):c.data(h)}if(!e&&!f)throw ga("ctreq",b,a);}else if(K(b))for(e=[],g=0,f=b.length;g<f;g++)e[g]=gb(a,b[g],c,d);else G(b)&&(e={},q(b,function(b,f){e[f]=gb(a,b,c,d)}));return e||null}function O(a,b,c,d,e,f,g){var h=T(),k;for(k in d){var l=d[k],m={$scope:l===g||l.$$isolateScope?e:f,
1415 H;return n}function gb(a,b,c,d){var e;if(F(b)){var f=b.match(k);b=b.substring(f[0].length);var g=f[1]||f[3],f="?"===f[2];"^^"===g?c=c.parent():e=(e=d&&d[b])&&e.instance;if(!e){var h="$"+b+"Controller";e=g?c.inheritedData(h):c.data(h)}if(!e&&!f)throw ga("ctreq",b,a);}else if(K(b))for(e=[],g=0,f=b.length;g<f;g++)e[g]=gb(a,b[g],c,d);else G(b)&&(e={},q(b,function(b,f){e[f]=gb(a,b,c,d)}));return e||null}function O(a,b,c,d,e,f,g){var h=T(),k;for(k in d){var l=d[k],m={$scope:l===g||l.$$isolateScope?e:f,
1416 $element:a,$attrs:b,$transclude:c},n=l.controller;"@"==n&&(n=b[l.name]);m=z(n,m,!0,l.controllerAs);h[l.name]=m;a.data("$"+l.name+"Controller",m.instance)}return h}function Zc(a,b,c){for(var d=0,e=a.length;d<e;d++)a[d]=Pb(a[d],{$$isolateScope:b,$$newScope:c})}function la(b,f,g,h,k,l,m){if(f===k)return null;k=null;if(e.hasOwnProperty(f)){var n;f=a.get(f+"Directive");for(var t=0,r=f.length;t<r;t++)try{if(n=f[t],(y(h)||h>n.priority)&&-1!=n.restrict.indexOf(g)){l&&(n=Pb(n,{$$start:l,$$end:m}));if(!n.$$bindings){var I=
1416 $element:a,$attrs:b,$transclude:c},n=l.controller;"@"==n&&(n=b[l.name]);m=z(n,m,!0,l.controllerAs);h[l.name]=m;a.data("$"+l.name+"Controller",m.instance)}return h}function Zc(a,b,c){for(var d=0,e=a.length;d<e;d++)a[d]=Pb(a[d],{$$isolateScope:b,$$newScope:c})}function la(b,f,g,h,k,l,m){if(f===k)return null;k=null;if(e.hasOwnProperty(f)){var n;f=a.get(f+"Directive");for(var t=0,r=f.length;t<r;t++)try{if(n=f[t],(y(h)||h>n.priority)&&-1!=n.restrict.indexOf(g)){l&&(n=Pb(n,{$$start:l,$$end:m}));if(!n.$$bindings){var I=
1417 n,D=n,A=n.name,J={isolateScope:null,bindToController:null};G(D.scope)&&(!0===D.bindToController?(J.bindToController=d(D.scope,A,!0),J.isolateScope={}):J.isolateScope=d(D.scope,A,!1));G(D.bindToController)&&(J.bindToController=d(D.bindToController,A,!0));if(G(J.bindToController)){var w=D.controller,z=D.controllerAs;if(!w)throw ga("noctrl",A);if(!Uc(w,z))throw ga("noident",A);}var u=I.$$bindings=J;G(u.isolateScope)&&(n.$$isolateBindings=u.isolateScope)}b.push(n);k=n}}catch(L){c(L)}}return k}function Q(b){if(e.hasOwnProperty(b))for(var c=
1417 n,D=n,A=n.name,J={isolateScope:null,bindToController:null};G(D.scope)&&(!0===D.bindToController?(J.bindToController=d(D.scope,A,!0),J.isolateScope={}):J.isolateScope=d(D.scope,A,!1));G(D.bindToController)&&(J.bindToController=d(D.bindToController,A,!0));if(G(J.bindToController)){var w=D.controller,z=D.controllerAs;if(!w)throw ga("noctrl",A);if(!Uc(w,z))throw ga("noident",A);}var u=I.$$bindings=J;G(u.isolateScope)&&(n.$$isolateBindings=u.isolateScope)}b.push(n);k=n}}catch(L){c(L)}}return k}function Q(b){if(e.hasOwnProperty(b))for(var c=
1418 a.get(b+"Directive"),d=0,f=c.length;d<f;d++)if(b=c[d],b.multiElement)return!0;return!1}function U(a,b){var c=b.$attr,d=a.$attr,e=a.$$element;q(a,function(d,e){"$"!=e.charAt(0)&&(b[e]&&b[e]!==d&&(d+=("style"===e?";":" ")+b[e]),a.$set(e,d,!0,c[e]))});q(b,function(b,f){"class"==f?(A(e,b),a["class"]=(a["class"]?a["class"]+" ":"")+b):"style"==f?(e.attr("style",e.attr("style")+";"+b),a.style=(a.style?a.style+";":"")+b):"$"==f.charAt(0)||a.hasOwnProperty(f)||(a[f]=b,d[f]=c[f])})}function aa(a,b,c,d,e,f,
1418 a.get(b+"Directive"),d=0,f=c.length;d<f;d++)if(b=c[d],b.multiElement)return!0;return!1}function U(a,b){var c=b.$attr,d=a.$attr,e=a.$$element;q(a,function(d,e){"$"!=e.charAt(0)&&(b[e]&&b[e]!==d&&(d+=("style"===e?";":" ")+b[e]),a.$set(e,d,!0,c[e]))});q(b,function(b,f){"class"==f?(A(e,b),a["class"]=(a["class"]?a["class"]+" ":"")+b):"style"==f?(e.attr("style",e.attr("style")+";"+b),a.style=(a.style?a.style+";":"")+b):"$"==f.charAt(0)||a.hasOwnProperty(f)||(a[f]=b,d[f]=c[f])})}function aa(a,b,c,d,e,f,
1419 g,h){var k=[],l,m,t=b[0],p=a.shift(),r=Pb(p,{templateUrl:null,transclude:null,replace:null,$$originalDirective:p}),I=E(p.templateUrl)?p.templateUrl(b,c):p.templateUrl,D=p.templateNamespace;b.empty();n(I).then(function(n){var J,w;n=ta(n);if(p.replace){n=Tb.test(n)?Yc(ca(D,V(n))):[];J=n[0];if(1!=n.length||1!==J.nodeType)throw ga("tplrt",p.name,I);n={$attr:{}};da(d,b,J);var z=x(J,[],n);G(p.scope)&&Zc(z,!0);a=z.concat(a);U(c,n)}else J=t,b.html(n);a.unshift(r);l=Ba(a,J,c,e,b,p,f,g,h);q(d,function(a,c){a==
1419 g,h){var k=[],l,m,t=b[0],p=a.shift(),r=Pb(p,{templateUrl:null,transclude:null,replace:null,$$originalDirective:p}),I=E(p.templateUrl)?p.templateUrl(b,c):p.templateUrl,D=p.templateNamespace;b.empty();n(I).then(function(n){var J,w;n=ta(n);if(p.replace){n=Tb.test(n)?Yc(ca(D,V(n))):[];J=n[0];if(1!=n.length||1!==J.nodeType)throw ga("tplrt",p.name,I);n={$attr:{}};da(d,b,J);var z=x(J,[],n);G(p.scope)&&Zc(z,!0);a=z.concat(a);U(c,n)}else J=t,b.html(n);a.unshift(r);l=Ba(a,J,c,e,b,p,f,g,h);q(d,function(a,c){a==
1420 J&&(d[c]=b[0])});for(m=s(b[0].childNodes,e);k.length;){n=k.shift();w=k.shift();var u=k.shift(),L=k.shift(),z=b[0];if(!n.$$destroyed){if(w!==t){var S=w.className;h.hasElementTranscludeDirective&&p.replace||(z=Vb(J));da(u,B(w),z);A(B(z),S)}w=l.transcludeOnThisElement?ka(n,l.transclude,L):L;l(m,n,z,d,w)}}k=null});return function(a,b,c,d,e){a=e;b.$$destroyed||(k?k.push(b,c,d,a):(l.transcludeOnThisElement&&(a=ka(b,l.transclude,e)),l(m,b,c,d,a)))}}function Y(a,b){var c=b.priority-a.priority;return 0!==
1420 J&&(d[c]=b[0])});for(m=s(b[0].childNodes,e);k.length;){n=k.shift();w=k.shift();var u=k.shift(),L=k.shift(),z=b[0];if(!n.$$destroyed){if(w!==t){var S=w.className;h.hasElementTranscludeDirective&&p.replace||(z=Vb(J));da(u,B(w),z);A(B(z),S)}w=l.transcludeOnThisElement?ka(n,l.transclude,L):L;l(m,n,z,d,w)}}k=null});return function(a,b,c,d,e){a=e;b.$$destroyed||(k?k.push(b,c,d,a):(l.transcludeOnThisElement&&(a=ka(b,l.transclude,e)),l(m,b,c,d,a)))}}function Y(a,b){var c=b.priority-a.priority;return 0!==
1421 c?c:a.name!==b.name?a.name<b.name?-1:1:a.index-b.index}function W(a,b,c,d){function e(a){return a?" (module: "+a+")":""}if(b)throw ga("multidir",b.name,e(b.$$moduleName),c.name,e(c.$$moduleName),a,wa(d));}function X(a,c){var d=b(c,!0);d&&a.push({priority:0,compile:function(a){a=a.parent();var b=!!a.length;b&&ba.$$addBindingClass(a);return function(a,c){var e=c.parent();b||ba.$$addBindingClass(e);ba.$$addBindingInfo(e,d.expressions);a.$watch(d,function(a){c[0].nodeValue=a})}}})}function ca(a,b){a=
1421 c?c:a.name!==b.name?a.name<b.name?-1:1:a.index-b.index}function W(a,b,c,d){function e(a){return a?" (module: "+a+")":""}if(b)throw ga("multidir",b.name,e(b.$$moduleName),c.name,e(c.$$moduleName),a,wa(d));}function X(a,c){var d=b(c,!0);d&&a.push({priority:0,compile:function(a){a=a.parent();var b=!!a.length;b&&ba.$$addBindingClass(a);return function(a,c){var e=c.parent();b||ba.$$addBindingClass(e);ba.$$addBindingInfo(e,d.expressions);a.$watch(d,function(a){c[0].nodeValue=a})}}})}function ca(a,b){a=
1422 P(a||"html");switch(a){case "svg":case "math":var c=v.document.createElement("div");c.innerHTML="<"+a+">"+b+"</"+a+">";return c.childNodes[0].childNodes;default:return b}}function ea(a,b){if("srcdoc"==b)return I.HTML;var c=va(a);if("xlinkHref"==b||"form"==c&&"action"==b||"img"!=c&&("src"==b||"ngSrc"==b))return I.RESOURCE_URL}function fa(a,c,d,e,f){var g=ea(a,e);f=h[e]||f;var k=b(d,!0,g,f);if(k){if("multiple"===e&&"select"===va(a))throw ga("selmulti",wa(a));c.push({priority:100,compile:function(){return{pre:function(a,
1422 P(a||"html");switch(a){case "svg":case "math":var c=v.document.createElement("div");c.innerHTML="<"+a+">"+b+"</"+a+">";return c.childNodes[0].childNodes;default:return b}}function ea(a,b){if("srcdoc"==b)return I.HTML;var c=va(a);if("xlinkHref"==b||"form"==c&&"action"==b||"img"!=c&&("src"==b||"ngSrc"==b))return I.RESOURCE_URL}function fa(a,c,d,e,f){var g=ea(a,e);f=h[e]||f;var k=b(d,!0,g,f);if(k){if("multiple"===e&&"select"===va(a))throw ga("selmulti",wa(a));c.push({priority:100,compile:function(){return{pre:function(a,
1423 c,h){c=h.$$observers||(h.$$observers=T());if(l.test(e))throw ga("nodomevents");var m=h[e];m!==d&&(k=m&&b(m,!0,g,f),d=m);k&&(h[e]=k(a),(c[e]||(c[e]=[])).$$inter=!0,(h.$$observers&&h.$$observers[e].$$scope||a).$watch(k,function(a,b){"class"===e&&a!=b?h.$updateClass(a,b):h.$set(e,a)}))}}}})}}function da(a,b,c){var d=b[0],e=b.length,f=d.parentNode,g,h;if(a)for(g=0,h=a.length;g<h;g++)if(a[g]==d){a[g++]=c;h=g+e-1;for(var k=a.length;g<k;g++,h++)h<k?a[g]=a[h]:delete a[g];a.length-=e-1;a.context===d&&(a.context=
1423 c,h){c=h.$$observers||(h.$$observers=T());if(l.test(e))throw ga("nodomevents");var m=h[e];m!==d&&(k=m&&b(m,!0,g,f),d=m);k&&(h[e]=k(a),(c[e]||(c[e]=[])).$$inter=!0,(h.$$observers&&h.$$observers[e].$$scope||a).$watch(k,function(a,b){"class"===e&&a!=b?h.$updateClass(a,b):h.$set(e,a)}))}}}})}}function da(a,b,c){var d=b[0],e=b.length,f=d.parentNode,g,h;if(a)for(g=0,h=a.length;g<h;g++)if(a[g]==d){a[g++]=c;h=g+e-1;for(var k=a.length;g<k;g++,h++)h<k?a[g]=a[h]:delete a[g];a.length-=e-1;a.context===d&&(a.context=
1424 c);break}f&&f.replaceChild(c,d);a=v.document.createDocumentFragment();for(g=0;g<e;g++)a.appendChild(b[g]);B.hasData(d)&&(B.data(c,B.data(d)),B(d).off("$destroy"));B.cleanData(a.querySelectorAll("*"));for(g=1;g<e;g++)delete b[g];b[0]=c;b.length=1}function ha(a,b){return R(function(){return a.apply(null,arguments)},a,b)}function ja(a,b,d,e,f,g){try{a(b,d,e,f,g)}catch(h){c(h,wa(d))}}function ia(a,c,d,e,f){function g(b,c,e){E(d.$onChanges)&&c!==e&&(Z||(a.$$postDigest(L),Z=[]),m||(m={},Z.push(h)),m[b]&&
1424 c);break}f&&f.replaceChild(c,d);a=v.document.createDocumentFragment();for(g=0;g<e;g++)a.appendChild(b[g]);B.hasData(d)&&(B.data(c,B.data(d)),B(d).off("$destroy"));B.cleanData(a.querySelectorAll("*"));for(g=1;g<e;g++)delete b[g];b[0]=c;b.length=1}function ha(a,b){return R(function(){return a.apply(null,arguments)},a,b)}function ja(a,b,d,e,f,g){try{a(b,d,e,f,g)}catch(h){c(h,wa(d))}}function ia(a,c,d,e,f){function g(b,c,e){E(d.$onChanges)&&c!==e&&(Z||(a.$$postDigest(L),Z=[]),m||(m={},Z.push(h)),m[b]&&
1425 (e=m[b].previousValue),m[b]=new Db(e,c))}function h(){d.$onChanges(m);m=void 0}var k=[],l={},m;q(e,function(e,h){var m=e.attrName,n=e.optional,p,r,I,D;switch(e.mode){case "@":n||ua.call(c,m)||(d[h]=c[m]=void 0);c.$observe(m,function(a){if(F(a)||Da(a))g(h,a,d[h]),d[h]=a});c.$$observers[m].$$scope=a;p=c[m];F(p)?d[h]=b(p)(a):Da(p)&&(d[h]=p);l[h]=new Db(Zb,d[h]);break;case "=":if(!ua.call(c,m)){if(n)break;c[m]=void 0}if(n&&!c[m])break;r=t(c[m]);D=r.literal?pa:function(a,b){return a===b||a!==a&&b!==b};
1425 (e=m[b].previousValue),m[b]=new Db(e,c))}function h(){d.$onChanges(m);m=void 0}var k=[],l={},m;q(e,function(e,h){var m=e.attrName,n=e.optional,p,r,I,D;switch(e.mode){case "@":n||ua.call(c,m)||(d[h]=c[m]=void 0);c.$observe(m,function(a){if(F(a)||Da(a))g(h,a,d[h]),d[h]=a});c.$$observers[m].$$scope=a;p=c[m];F(p)?d[h]=b(p)(a):Da(p)&&(d[h]=p);l[h]=new Db(Zb,d[h]);break;case "=":if(!ua.call(c,m)){if(n)break;c[m]=void 0}if(n&&!c[m])break;r=t(c[m]);D=r.literal?pa:function(a,b){return a===b||a!==a&&b!==b};
1426 I=r.assign||function(){p=d[h]=r(a);throw ga("nonassign",c[m],m,f.name);};p=d[h]=r(a);n=function(b){D(b,d[h])||(D(b,p)?I(a,b=d[h]):d[h]=b);return p=b};n.$stateful=!0;n=e.collection?a.$watchCollection(c[m],n):a.$watch(t(c[m],n),null,r.literal);k.push(n);break;case "<":if(!ua.call(c,m)){if(n)break;c[m]=void 0}if(n&&!c[m])break;r=t(c[m]);d[h]=r(a);l[h]=new Db(Zb,d[h]);n=a.$watch(r,function(a,b){a===b&&(b=d[h]);g(h,a,b);d[h]=a},r.literal);k.push(n);break;case "&":r=c.hasOwnProperty(m)?t(c[m]):C;if(r===
1426 I=r.assign||function(){p=d[h]=r(a);throw ga("nonassign",c[m],m,f.name);};p=d[h]=r(a);n=function(b){D(b,d[h])||(D(b,p)?I(a,b=d[h]):d[h]=b);return p=b};n.$stateful=!0;n=e.collection?a.$watchCollection(c[m],n):a.$watch(t(c[m],n),null,r.literal);k.push(n);break;case "<":if(!ua.call(c,m)){if(n)break;c[m]=void 0}if(n&&!c[m])break;r=t(c[m]);d[h]=r(a);l[h]=new Db(Zb,d[h]);n=a.$watch(r,function(a,b){a===b&&(b=d[h]);g(h,a,b);d[h]=a},r.literal);k.push(n);break;case "&":r=c.hasOwnProperty(m)?t(c[m]):C;if(r===
1427 C&&n)break;d[h]=function(b){return r(a,b)}}});return{initialChanges:l,removeWatches:k.length&&function(){for(var a=0,b=k.length;a<b;++a)k[a]()}}}var oa=/^\w/,na=v.document.createElement("div"),qa=r,Z;S.prototype={$normalize:xa,$addClass:function(a){a&&0<a.length&&J.addClass(this.$$element,a)},$removeClass:function(a){a&&0<a.length&&J.removeClass(this.$$element,a)},$updateClass:function(a,b){var c=$c(a,b);c&&c.length&&J.addClass(this.$$element,c);(c=$c(b,a))&&c.length&&J.removeClass(this.$$element,
1427 C&&n)break;d[h]=function(b){return r(a,b)}}});return{initialChanges:l,removeWatches:k.length&&function(){for(var a=0,b=k.length;a<b;++a)k[a]()}}}var oa=/^\w/,na=v.document.createElement("div"),qa=r,Z;S.prototype={$normalize:xa,$addClass:function(a){a&&0<a.length&&J.addClass(this.$$element,a)},$removeClass:function(a){a&&0<a.length&&J.removeClass(this.$$element,a)},$updateClass:function(a,b){var c=$c(a,b);c&&c.length&&J.addClass(this.$$element,c);(c=$c(b,a))&&c.length&&J.removeClass(this.$$element,
1428 c)},$set:function(a,b,d,e){var f=Rc(this.$$element[0],a),g=ad[a],h=a;f?(this.$$element.prop(a,b),e=f):g&&(this[g]=b,h=g);this[a]=b;e?this.$attr[a]=e:(e=this.$attr[a])||(this.$attr[a]=e=zc(a,"-"));f=va(this.$$element);if("a"===f&&("href"===a||"xlinkHref"===a)||"img"===f&&"src"===a)this[a]=b=D(b,"src"===a);else if("img"===f&&"srcset"===a){for(var f="",g=V(b),k=/(\s+\d+x\s*,|\s+\d+w\s*,|\s+,|,\s+)/,k=/\s/.test(g)?k:/(,)/,g=g.split(k),k=Math.floor(g.length/2),l=0;l<k;l++)var m=2*l,f=f+D(V(g[m]),!0),f=
1428 c)},$set:function(a,b,d,e){var f=Rc(this.$$element[0],a),g=ad[a],h=a;f?(this.$$element.prop(a,b),e=f):g&&(this[g]=b,h=g);this[a]=b;e?this.$attr[a]=e:(e=this.$attr[a])||(this.$attr[a]=e=zc(a,"-"));f=va(this.$$element);if("a"===f&&("href"===a||"xlinkHref"===a)||"img"===f&&"src"===a)this[a]=b=D(b,"src"===a);else if("img"===f&&"srcset"===a){for(var f="",g=V(b),k=/(\s+\d+x\s*,|\s+\d+w\s*,|\s+,|,\s+)/,k=/\s/.test(g)?k:/(,)/,g=g.split(k),k=Math.floor(g.length/2),l=0;l<k;l++)var m=2*l,f=f+D(V(g[m]),!0),f=
1429 f+(" "+V(g[m+1]));g=V(g[2*l]).split(/\s/);f+=D(V(g[0]),!0);2===g.length&&(f+=" "+V(g[1]));this[a]=b=f}!1!==d&&(null===b||y(b)?this.$$element.removeAttr(e):oa.test(e)?this.$$element.attr(e,b):$(this.$$element[0],e,b));(a=this.$$observers)&&q(a[h],function(a){try{a(b)}catch(d){c(d)}})},$observe:function(a,b){var c=this,d=c.$$observers||(c.$$observers=T()),e=d[a]||(d[a]=[]);e.push(b);u.$evalAsync(function(){e.$$inter||!c.hasOwnProperty(a)||y(c[a])||b(c[a])});return function(){Za(e,b)}}};var ra=b.startSymbol(),
1429 f+(" "+V(g[m+1]));g=V(g[2*l]).split(/\s/);f+=D(V(g[0]),!0);2===g.length&&(f+=" "+V(g[1]));this[a]=b=f}!1!==d&&(null===b||y(b)?this.$$element.removeAttr(e):oa.test(e)?this.$$element.attr(e,b):$(this.$$element[0],e,b));(a=this.$$observers)&&q(a[h],function(a){try{a(b)}catch(d){c(d)}})},$observe:function(a,b){var c=this,d=c.$$observers||(c.$$observers=T()),e=d[a]||(d[a]=[]);e.push(b);u.$evalAsync(function(){e.$$inter||!c.hasOwnProperty(a)||y(c[a])||b(c[a])});return function(){Za(e,b)}}};var ra=b.startSymbol(),
1430 sa=b.endSymbol(),ta="{{"==ra&&"}}"==sa?Xa:function(a){return a.replace(/\{\{/g,ra).replace(/}}/g,sa)},ya=/^ngAttr[A-Z]/,Aa=/^(.+)Start$/;ba.$$addBindingInfo=m?function(a,b){var c=a.data("$binding")||[];K(b)?c=c.concat(b):c.push(b);a.data("$binding",c)}:C;ba.$$addBindingClass=m?function(a){A(a,"ng-binding")}:C;ba.$$addScopeInfo=m?function(a,b,c,d){a.data(c?d?"$isolateScopeNoTemplate":"$isolateScope":"$scope",b)}:C;ba.$$addScopeClass=m?function(a,b){A(a,b?"ng-isolate-scope":"ng-scope")}:C;ba.$$createComment=
1430 sa=b.endSymbol(),ta="{{"==ra&&"}}"==sa?Xa:function(a){return a.replace(/\{\{/g,ra).replace(/}}/g,sa)},ya=/^ngAttr[A-Z]/,Aa=/^(.+)Start$/;ba.$$addBindingInfo=m?function(a,b){var c=a.data("$binding")||[];K(b)?c=c.concat(b):c.push(b);a.data("$binding",c)}:C;ba.$$addBindingClass=m?function(a){A(a,"ng-binding")}:C;ba.$$addScopeInfo=m?function(a,b,c,d){a.data(c?d?"$isolateScopeNoTemplate":"$isolateScope":"$scope",b)}:C;ba.$$addScopeClass=m?function(a,b){A(a,b?"ng-isolate-scope":"ng-scope")}:C;ba.$$createComment=
1431 function(a,b){var c="";m&&(c=" "+(a||"")+": "+(b||"")+" ");return v.document.createComment(c)};return ba}]}function Db(a,b){this.previousValue=a;this.currentValue=b}function xa(a){return cb(a.replace(Vc,""))}function $c(a,b){var d="",c=a.split(/\s+/),e=b.split(/\s+/),f=0;a:for(;f<c.length;f++){for(var g=c[f],h=0;h<e.length;h++)if(g==e[h])continue a;d+=(0<d.length?" ":"")+g}return d}function Yc(a){a=B(a);var b=a.length;if(1>=b)return a;for(;b--;)8===a[b].nodeType&&Zf.call(a,b,1);return a}function Uc(a,
1431 function(a,b){var c="";m&&(c=" "+(a||"")+": "+(b||"")+" ");return v.document.createComment(c)};return ba}]}function Db(a,b){this.previousValue=a;this.currentValue=b}function xa(a){return cb(a.replace(Vc,""))}function $c(a,b){var d="",c=a.split(/\s+/),e=b.split(/\s+/),f=0;a:for(;f<c.length;f++){for(var g=c[f],h=0;h<e.length;h++)if(g==e[h])continue a;d+=(0<d.length?" ":"")+g}return d}function Yc(a){a=B(a);var b=a.length;if(1>=b)return a;for(;b--;)8===a[b].nodeType&&Zf.call(a,b,1);return a}function Uc(a,
1432 b){if(b&&F(b))return b;if(F(a)){var d=bd.exec(a);if(d)return d[3]}}function ef(){var a={},b=!1;this.has=function(b){return a.hasOwnProperty(b)};this.register=function(b,c){Qa(b,"controller");G(b)?R(a,b):a[b]=c};this.allowGlobals=function(){b=!0};this.$get=["$injector","$window",function(d,c){function e(a,b,c,d){if(!a||!G(a.$scope))throw O("$controller")("noscp",d,b);a.$scope[b]=c}return function(f,g,h,k){var l,n,m;h=!0===h;k&&F(k)&&(m=k);if(F(f)){k=f.match(bd);if(!k)throw $f("ctrlfmt",f);n=k[1];m=
1432 b){if(b&&F(b))return b;if(F(a)){var d=bd.exec(a);if(d)return d[3]}}function ef(){var a={},b=!1;this.has=function(b){return a.hasOwnProperty(b)};this.register=function(b,c){Qa(b,"controller");G(b)?R(a,b):a[b]=c};this.allowGlobals=function(){b=!0};this.$get=["$injector","$window",function(d,c){function e(a,b,c,d){if(!a||!G(a.$scope))throw O("$controller")("noscp",d,b);a.$scope[b]=c}return function(f,g,h,k){var l,n,m;h=!0===h;k&&F(k)&&(m=k);if(F(f)){k=f.match(bd);if(!k)throw $f("ctrlfmt",f);n=k[1];m=
1433 m||k[3];f=a.hasOwnProperty(n)?a[n]:Bc(g.$scope,n,!0)||(b?Bc(c,n,!0):void 0);Pa(f,n,!0)}if(h)return h=(K(f)?f[f.length-1]:f).prototype,l=Object.create(h||null),m&&e(g,m,l,n||f.name),R(function(){var a=d.invoke(f,l,g,n);a!==l&&(G(a)||E(a))&&(l=a,m&&e(g,m,l,n||f.name));return l},{instance:l,identifier:m});l=d.instantiate(f,g,n);m&&e(g,m,l,n||f.name);return l}}]}function ff(){this.$get=["$window",function(a){return B(a.document)}]}function gf(){this.$get=["$log",function(a){return function(b,d){a.error.apply(a,
1433 m||k[3];f=a.hasOwnProperty(n)?a[n]:Bc(g.$scope,n,!0)||(b?Bc(c,n,!0):void 0);Pa(f,n,!0)}if(h)return h=(K(f)?f[f.length-1]:f).prototype,l=Object.create(h||null),m&&e(g,m,l,n||f.name),R(function(){var a=d.invoke(f,l,g,n);a!==l&&(G(a)||E(a))&&(l=a,m&&e(g,m,l,n||f.name));return l},{instance:l,identifier:m});l=d.instantiate(f,g,n);m&&e(g,m,l,n||f.name);return l}}]}function ff(){this.$get=["$window",function(a){return B(a.document)}]}function gf(){this.$get=["$log",function(a){return function(b,d){a.error.apply(a,
1434 arguments)}}]}function $b(a){return G(a)?fa(a)?a.toISOString():ab(a):a}function mf(){this.$get=function(){return function(a){if(!a)return"";var b=[];pc(a,function(a,c){null===a||y(a)||(K(a)?q(a,function(a){b.push(ja(c)+"="+ja($b(a)))}):b.push(ja(c)+"="+ja($b(a))))});return b.join("&")}}}function nf(){this.$get=function(){return function(a){function b(a,e,f){null===a||y(a)||(K(a)?q(a,function(a,c){b(a,e+"["+(G(a)?c:"")+"]")}):G(a)&&!fa(a)?pc(a,function(a,c){b(a,e+(f?"":"[")+c+(f?"":"]"))}):d.push(ja(e)+
1434 arguments)}}]}function $b(a){return G(a)?fa(a)?a.toISOString():ab(a):a}function mf(){this.$get=function(){return function(a){if(!a)return"";var b=[];pc(a,function(a,c){null===a||y(a)||(K(a)?q(a,function(a){b.push(ja(c)+"="+ja($b(a)))}):b.push(ja(c)+"="+ja($b(a))))});return b.join("&")}}}function nf(){this.$get=function(){return function(a){function b(a,e,f){null===a||y(a)||(K(a)?q(a,function(a,c){b(a,e+"["+(G(a)?c:"")+"]")}):G(a)&&!fa(a)?pc(a,function(a,c){b(a,e+(f?"":"[")+c+(f?"":"]"))}):d.push(ja(e)+
1435 "="+ja($b(a))))}if(!a)return"";var d=[];b(a,"",!0);return d.join("&")}}}function ac(a,b){if(F(a)){var d=a.replace(ag,"").trim();if(d){var c=b("Content-Type");(c=c&&0===c.indexOf(cd))||(c=(c=d.match(bg))&&cg[c[0]].test(d));c&&(a=uc(d))}}return a}function dd(a){var b=T(),d;F(a)?q(a.split("\n"),function(a){d=a.indexOf(":");var e=P(V(a.substr(0,d)));a=V(a.substr(d+1));e&&(b[e]=b[e]?b[e]+", "+a:a)}):G(a)&&q(a,function(a,d){var f=P(d),g=V(a);f&&(b[f]=b[f]?b[f]+", "+g:g)});return b}function ed(a){var b;
1435 "="+ja($b(a))))}if(!a)return"";var d=[];b(a,"",!0);return d.join("&")}}}function ac(a,b){if(F(a)){var d=a.replace(ag,"").trim();if(d){var c=b("Content-Type");(c=c&&0===c.indexOf(cd))||(c=(c=d.match(bg))&&cg[c[0]].test(d));c&&(a=uc(d))}}return a}function dd(a){var b=T(),d;F(a)?q(a.split("\n"),function(a){d=a.indexOf(":");var e=P(V(a.substr(0,d)));a=V(a.substr(d+1));e&&(b[e]=b[e]?b[e]+", "+a:a)}):G(a)&&q(a,function(a,d){var f=P(d),g=V(a);f&&(b[f]=b[f]?b[f]+", "+g:g)});return b}function ed(a){var b;
1436 return function(d){b||(b=dd(a));return d?(d=b[P(d)],void 0===d&&(d=null),d):b}}function fd(a,b,d,c){if(E(c))return c(a,b,d);q(c,function(c){a=c(a,b,d)});return a}function lf(){var a=this.defaults={transformResponse:[ac],transformRequest:[function(a){return G(a)&&"[object File]"!==ma.call(a)&&"[object Blob]"!==ma.call(a)&&"[object FormData]"!==ma.call(a)?ab(a):a}],headers:{common:{Accept:"application/json, text/plain, */*"},post:ha(bc),put:ha(bc),patch:ha(bc)},xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",
1436 return function(d){b||(b=dd(a));return d?(d=b[P(d)],void 0===d&&(d=null),d):b}}function fd(a,b,d,c){if(E(c))return c(a,b,d);q(c,function(c){a=c(a,b,d)});return a}function lf(){var a=this.defaults={transformResponse:[ac],transformRequest:[function(a){return G(a)&&"[object File]"!==ma.call(a)&&"[object Blob]"!==ma.call(a)&&"[object FormData]"!==ma.call(a)?ab(a):a}],headers:{common:{Accept:"application/json, text/plain, */*"},post:ha(bc),put:ha(bc),patch:ha(bc)},xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",
1437 paramSerializer:"$httpParamSerializer"},b=!1;this.useApplyAsync=function(a){return x(a)?(b=!!a,this):b};var d=!0;this.useLegacyPromiseExtensions=function(a){return x(a)?(d=!!a,this):d};var c=this.interceptors=[];this.$get=["$httpBackend","$$cookieReader","$cacheFactory","$rootScope","$q","$injector",function(e,f,g,h,k,l){function n(b){function c(a){var b=R({},a);b.data=fd(a.data,a.headers,a.status,f.transformResponse);a=a.status;return 200<=a&&300>a?b:k.reject(b)}function e(a,b){var c,d={};q(a,function(a,
1437 paramSerializer:"$httpParamSerializer"},b=!1;this.useApplyAsync=function(a){return x(a)?(b=!!a,this):b};var d=!0;this.useLegacyPromiseExtensions=function(a){return x(a)?(d=!!a,this):d};var c=this.interceptors=[];this.$get=["$httpBackend","$$cookieReader","$cacheFactory","$rootScope","$q","$injector",function(e,f,g,h,k,l){function n(b){function c(a){var b=R({},a);b.data=fd(a.data,a.headers,a.status,f.transformResponse);a=a.status;return 200<=a&&300>a?b:k.reject(b)}function e(a,b){var c,d={};q(a,function(a,
1438 e){E(a)?(c=a(b),null!=c&&(d[e]=c)):d[e]=a});return d}if(!G(b))throw O("$http")("badreq",b);if(!F(b.url))throw O("$http")("badreq",b.url);var f=R({method:"get",transformRequest:a.transformRequest,transformResponse:a.transformResponse,paramSerializer:a.paramSerializer},b);f.headers=function(b){var c=a.headers,d=R({},b.headers),f,g,h,c=R({},c.common,c[P(b.method)]);a:for(f in c){g=P(f);for(h in d)if(P(h)===g)continue a;d[f]=c[f]}return e(d,ha(b))}(b);f.method=sb(f.method);f.paramSerializer=F(f.paramSerializer)?
1438 e){E(a)?(c=a(b),null!=c&&(d[e]=c)):d[e]=a});return d}if(!G(b))throw O("$http")("badreq",b);if(!F(b.url))throw O("$http")("badreq",b.url);var f=R({method:"get",transformRequest:a.transformRequest,transformResponse:a.transformResponse,paramSerializer:a.paramSerializer},b);f.headers=function(b){var c=a.headers,d=R({},b.headers),f,g,h,c=R({},c.common,c[P(b.method)]);a:for(f in c){g=P(f);for(h in d)if(P(h)===g)continue a;d[f]=c[f]}return e(d,ha(b))}(b);f.method=sb(f.method);f.paramSerializer=F(f.paramSerializer)?
1439 l.get(f.paramSerializer):f.paramSerializer;var g=[function(b){var d=b.headers,e=fd(b.data,ed(d),void 0,b.transformRequest);y(e)&&q(d,function(a,b){"content-type"===P(b)&&delete d[b]});y(b.withCredentials)&&!y(a.withCredentials)&&(b.withCredentials=a.withCredentials);return m(b,e).then(c,c)},void 0],h=k.when(f);for(q(M,function(a){(a.request||a.requestError)&&g.unshift(a.request,a.requestError);(a.response||a.responseError)&&g.push(a.response,a.responseError)});g.length;){b=g.shift();var n=g.shift(),
1439 l.get(f.paramSerializer):f.paramSerializer;var g=[function(b){var d=b.headers,e=fd(b.data,ed(d),void 0,b.transformRequest);y(e)&&q(d,function(a,b){"content-type"===P(b)&&delete d[b]});y(b.withCredentials)&&!y(a.withCredentials)&&(b.withCredentials=a.withCredentials);return m(b,e).then(c,c)},void 0],h=k.when(f);for(q(M,function(a){(a.request||a.requestError)&&g.unshift(a.request,a.requestError);(a.response||a.responseError)&&g.push(a.response,a.responseError)});g.length;){b=g.shift();var n=g.shift(),
1440 h=h.then(b,n)}d?(h.success=function(a){Pa(a,"fn");h.then(function(b){a(b.data,b.status,b.headers,f)});return h},h.error=function(a){Pa(a,"fn");h.then(null,function(b){a(b.data,b.status,b.headers,f)});return h}):(h.success=gd("success"),h.error=gd("error"));return h}function m(c,d){function g(a){if(a){var c={};q(a,function(a,d){c[d]=function(c){function d(){a(c)}b?h.$applyAsync(d):h.$$phase?d():h.$apply(d)}});return c}}function l(a,c,d,e){function f(){m(c,a,d,e)}L&&(200<=a&&300>a?L.put(A,[a,c,dd(d),
1440 h=h.then(b,n)}d?(h.success=function(a){Pa(a,"fn");h.then(function(b){a(b.data,b.status,b.headers,f)});return h},h.error=function(a){Pa(a,"fn");h.then(null,function(b){a(b.data,b.status,b.headers,f)});return h}):(h.success=gd("success"),h.error=gd("error"));return h}function m(c,d){function g(a){if(a){var c={};q(a,function(a,d){c[d]=function(c){function d(){a(c)}b?h.$applyAsync(d):h.$$phase?d():h.$apply(d)}});return c}}function l(a,c,d,e){function f(){m(c,a,d,e)}L&&(200<=a&&300>a?L.put(A,[a,c,dd(d),
1441 e]):L.remove(A));b?h.$applyAsync(f):(f(),h.$$phase||h.$apply())}function m(a,b,d,e){b=-1<=b?b:0;(200<=b&&300>b?J.resolve:J.reject)({data:a,status:b,headers:ed(d),config:c,statusText:e})}function u(a){m(a.data,a.status,ha(a.headers()),a.statusText)}function I(){var a=n.pendingRequests.indexOf(c);-1!==a&&n.pendingRequests.splice(a,1)}var J=k.defer(),D=J.promise,L,S,M=c.headers,A=r(c.url,c.paramSerializer(c.params));n.pendingRequests.push(c);D.then(I,I);!c.cache&&!a.cache||!1===c.cache||"GET"!==c.method&&
1441 e]):L.remove(A));b?h.$applyAsync(f):(f(),h.$$phase||h.$apply())}function m(a,b,d,e){b=-1<=b?b:0;(200<=b&&300>b?J.resolve:J.reject)({data:a,status:b,headers:ed(d),config:c,statusText:e})}function u(a){m(a.data,a.status,ha(a.headers()),a.statusText)}function I(){var a=n.pendingRequests.indexOf(c);-1!==a&&n.pendingRequests.splice(a,1)}var J=k.defer(),D=J.promise,L,S,M=c.headers,A=r(c.url,c.paramSerializer(c.params));n.pendingRequests.push(c);D.then(I,I);!c.cache&&!a.cache||!1===c.cache||"GET"!==c.method&&
1442 "JSONP"!==c.method||(L=G(c.cache)?c.cache:G(a.cache)?a.cache:N);L&&(S=L.get(A),x(S)?S&&E(S.then)?S.then(u,u):K(S)?m(S[1],S[0],ha(S[2]),S[3]):m(S,200,{},"OK"):L.put(A,D));y(S)&&((S=hd(c.url)?f()[c.xsrfCookieName||a.xsrfCookieName]:void 0)&&(M[c.xsrfHeaderName||a.xsrfHeaderName]=S),e(c.method,A,d,l,M,c.timeout,c.withCredentials,c.responseType,g(c.eventHandlers),g(c.uploadEventHandlers)));return D}function r(a,b){0<b.length&&(a+=(-1==a.indexOf("?")?"?":"&")+b);return a}var N=g("$http");a.paramSerializer=
1442 "JSONP"!==c.method||(L=G(c.cache)?c.cache:G(a.cache)?a.cache:N);L&&(S=L.get(A),x(S)?S&&E(S.then)?S.then(u,u):K(S)?m(S[1],S[0],ha(S[2]),S[3]):m(S,200,{},"OK"):L.put(A,D));y(S)&&((S=hd(c.url)?f()[c.xsrfCookieName||a.xsrfCookieName]:void 0)&&(M[c.xsrfHeaderName||a.xsrfHeaderName]=S),e(c.method,A,d,l,M,c.timeout,c.withCredentials,c.responseType,g(c.eventHandlers),g(c.uploadEventHandlers)));return D}function r(a,b){0<b.length&&(a+=(-1==a.indexOf("?")?"?":"&")+b);return a}var N=g("$http");a.paramSerializer=
1443 F(a.paramSerializer)?l.get(a.paramSerializer):a.paramSerializer;var M=[];q(c,function(a){M.unshift(F(a)?l.get(a):l.invoke(a))});n.pendingRequests=[];(function(a){q(arguments,function(a){n[a]=function(b,c){return n(R({},c||{},{method:a,url:b}))}})})("get","delete","head","jsonp");(function(a){q(arguments,function(a){n[a]=function(b,c,d){return n(R({},d||{},{method:a,url:b,data:c}))}})})("post","put","patch");n.defaults=a;return n}]}function pf(){this.$get=function(){return function(){return new v.XMLHttpRequest}}}
1443 F(a.paramSerializer)?l.get(a.paramSerializer):a.paramSerializer;var M=[];q(c,function(a){M.unshift(F(a)?l.get(a):l.invoke(a))});n.pendingRequests=[];(function(a){q(arguments,function(a){n[a]=function(b,c){return n(R({},c||{},{method:a,url:b}))}})})("get","delete","head","jsonp");(function(a){q(arguments,function(a){n[a]=function(b,c,d){return n(R({},d||{},{method:a,url:b,data:c}))}})})("post","put","patch");n.defaults=a;return n}]}function pf(){this.$get=function(){return function(){return new v.XMLHttpRequest}}}
1444 function of(){this.$get=["$browser","$window","$document","$xhrFactory",function(a,b,d,c){return dg(a,c,a.defer,b.angular.callbacks,d[0])}]}function dg(a,b,d,c,e){function f(a,b,d){var f=e.createElement("script"),n=null;f.type="text/javascript";f.src=a;f.async=!0;n=function(a){f.removeEventListener("load",n,!1);f.removeEventListener("error",n,!1);e.body.removeChild(f);f=null;var g=-1,N="unknown";a&&("load"!==a.type||c[b].called||(a={type:"error"}),N=a.type,g="error"===a.type?404:200);d&&d(g,N)};f.addEventListener("load",
1444 function of(){this.$get=["$browser","$window","$document","$xhrFactory",function(a,b,d,c){return dg(a,c,a.defer,b.angular.callbacks,d[0])}]}function dg(a,b,d,c,e){function f(a,b,d){var f=e.createElement("script"),n=null;f.type="text/javascript";f.src=a;f.async=!0;n=function(a){f.removeEventListener("load",n,!1);f.removeEventListener("error",n,!1);e.body.removeChild(f);f=null;var g=-1,N="unknown";a&&("load"!==a.type||c[b].called||(a={type:"error"}),N=a.type,g="error"===a.type?404:200);d&&d(g,N)};f.addEventListener("load",
1445 n,!1);f.addEventListener("error",n,!1);e.body.appendChild(f);return n}return function(e,h,k,l,n,m,r,N,M,w){function p(){z&&z();u&&u.abort()}function H(b,c,e,f,g){x(J)&&d.cancel(J);z=u=null;b(c,e,f,g);a.$$completeOutstandingRequest(C)}a.$$incOutstandingRequestCount();h=h||a.url();if("jsonp"==P(e)){var t="_"+(c.counter++).toString(36);c[t]=function(a){c[t].data=a;c[t].called=!0};var z=f(h.replace("JSON_CALLBACK","angular.callbacks."+t),t,function(a,b){H(l,a,c[t].data,"",b);c[t]=C})}else{var u=b(e,h);
1445 n,!1);f.addEventListener("error",n,!1);e.body.appendChild(f);return n}return function(e,h,k,l,n,m,r,N,M,w){function p(){z&&z();u&&u.abort()}function H(b,c,e,f,g){x(J)&&d.cancel(J);z=u=null;b(c,e,f,g);a.$$completeOutstandingRequest(C)}a.$$incOutstandingRequestCount();h=h||a.url();if("jsonp"==P(e)){var t="_"+(c.counter++).toString(36);c[t]=function(a){c[t].data=a;c[t].called=!0};var z=f(h.replace("JSON_CALLBACK","angular.callbacks."+t),t,function(a,b){H(l,a,c[t].data,"",b);c[t]=C})}else{var u=b(e,h);
1446 u.open(e,h,!0);q(n,function(a,b){x(a)&&u.setRequestHeader(b,a)});u.onload=function(){var a=u.statusText||"",b="response"in u?u.response:u.responseText,c=1223===u.status?204:u.status;0===c&&(c=b?200:"file"==ra(h).protocol?404:0);H(l,c,b,u.getAllResponseHeaders(),a)};e=function(){H(l,-1,null,null,"")};u.onerror=e;u.onabort=e;q(M,function(a,b){u.addEventListener(b,a)});q(w,function(a,b){u.upload.addEventListener(b,a)});r&&(u.withCredentials=!0);if(N)try{u.responseType=N}catch(I){if("json"!==N)throw I;
1446 u.open(e,h,!0);q(n,function(a,b){x(a)&&u.setRequestHeader(b,a)});u.onload=function(){var a=u.statusText||"",b="response"in u?u.response:u.responseText,c=1223===u.status?204:u.status;0===c&&(c=b?200:"file"==ra(h).protocol?404:0);H(l,c,b,u.getAllResponseHeaders(),a)};e=function(){H(l,-1,null,null,"")};u.onerror=e;u.onabort=e;q(M,function(a,b){u.addEventListener(b,a)});q(w,function(a,b){u.upload.addEventListener(b,a)});r&&(u.withCredentials=!0);if(N)try{u.responseType=N}catch(I){if("json"!==N)throw I;
1447 }u.send(y(k)?null:k)}if(0<m)var J=d(p,m);else m&&E(m.then)&&m.then(p)}}function jf(){var a="{{",b="}}";this.startSymbol=function(b){return b?(a=b,this):a};this.endSymbol=function(a){return a?(b=a,this):b};this.$get=["$parse","$exceptionHandler","$sce",function(d,c,e){function f(a){return"\\\\\\"+a}function g(c){return c.replace(m,a).replace(r,b)}function h(a,b,c,d){var e;return e=a.$watch(function(a){e();return d(a)},b,c)}function k(f,k,m,r){function H(a){try{var b=a;a=m?e.getTrusted(m,b):e.valueOf(b);
1447 }u.send(y(k)?null:k)}if(0<m)var J=d(p,m);else m&&E(m.then)&&m.then(p)}}function jf(){var a="{{",b="}}";this.startSymbol=function(b){return b?(a=b,this):a};this.endSymbol=function(a){return a?(b=a,this):b};this.$get=["$parse","$exceptionHandler","$sce",function(d,c,e){function f(a){return"\\\\\\"+a}function g(c){return c.replace(m,a).replace(r,b)}function h(a,b,c,d){var e;return e=a.$watch(function(a){e();return d(a)},b,c)}function k(f,k,m,r){function H(a){try{var b=a;a=m?e.getTrusted(m,b):e.valueOf(b);
1448 var d;if(r&&!x(a))d=a;else if(null==a)d="";else{switch(typeof a){case "string":break;case "number":a=""+a;break;default:a=ab(a)}d=a}return d}catch(g){c(Ja.interr(f,g))}}if(!f.length||-1===f.indexOf(a)){var t;k||(k=g(f),t=da(k),t.exp=f,t.expressions=[],t.$$watchDelegate=h);return t}r=!!r;var z,u,I=0,J=[],D=[];t=f.length;for(var L=[],S=[];I<t;)if(-1!=(z=f.indexOf(a,I))&&-1!=(u=f.indexOf(b,z+l)))I!==z&&L.push(g(f.substring(I,z))),I=f.substring(z+l,u),J.push(I),D.push(d(I,H)),I=u+n,S.push(L.length),L.push("");
1448 var d;if(r&&!x(a))d=a;else if(null==a)d="";else{switch(typeof a){case "string":break;case "number":a=""+a;break;default:a=ab(a)}d=a}return d}catch(g){c(Ja.interr(f,g))}}if(!f.length||-1===f.indexOf(a)){var t;k||(k=g(f),t=da(k),t.exp=f,t.expressions=[],t.$$watchDelegate=h);return t}r=!!r;var z,u,I=0,J=[],D=[];t=f.length;for(var L=[],S=[];I<t;)if(-1!=(z=f.indexOf(a,I))&&-1!=(u=f.indexOf(b,z+l)))I!==z&&L.push(g(f.substring(I,z))),I=f.substring(z+l,u),J.push(I),D.push(d(I,H)),I=u+n,S.push(L.length),L.push("");
1449 else{I!==t&&L.push(g(f.substring(I)));break}m&&1<L.length&&Ja.throwNoconcat(f);if(!k||J.length){var q=function(a){for(var b=0,c=J.length;b<c;b++){if(r&&y(a[b]))return;L[S[b]]=a[b]}return L.join("")};return R(function(a){var b=0,d=J.length,e=Array(d);try{for(;b<d;b++)e[b]=D[b](a);return q(e)}catch(g){c(Ja.interr(f,g))}},{exp:f,expressions:J,$$watchDelegate:function(a,b){var c;return a.$watchGroup(D,function(d,e){var f=q(d);E(b)&&b.call(this,f,d!==e?c:f,a);c=f})}})}}var l=a.length,n=b.length,m=new RegExp(a.replace(/./g,
1449 else{I!==t&&L.push(g(f.substring(I)));break}m&&1<L.length&&Ja.throwNoconcat(f);if(!k||J.length){var q=function(a){for(var b=0,c=J.length;b<c;b++){if(r&&y(a[b]))return;L[S[b]]=a[b]}return L.join("")};return R(function(a){var b=0,d=J.length,e=Array(d);try{for(;b<d;b++)e[b]=D[b](a);return q(e)}catch(g){c(Ja.interr(f,g))}},{exp:f,expressions:J,$$watchDelegate:function(a,b){var c;return a.$watchGroup(D,function(d,e){var f=q(d);E(b)&&b.call(this,f,d!==e?c:f,a);c=f})}})}}var l=a.length,n=b.length,m=new RegExp(a.replace(/./g,
1450 f),"g"),r=new RegExp(b.replace(/./g,f),"g");k.startSymbol=function(){return a};k.endSymbol=function(){return b};return k}]}function kf(){this.$get=["$rootScope","$window","$q","$$q","$browser",function(a,b,d,c,e){function f(f,k,l,n){function m(){r?f.apply(null,N):f(p)}var r=4<arguments.length,N=r?za.call(arguments,4):[],q=b.setInterval,w=b.clearInterval,p=0,H=x(n)&&!n,t=(H?c:d).defer(),z=t.promise;l=x(l)?l:0;z.$$intervalId=q(function(){H?e.defer(m):a.$evalAsync(m);t.notify(p++);0<l&&p>=l&&(t.resolve(p),
1450 f),"g"),r=new RegExp(b.replace(/./g,f),"g");k.startSymbol=function(){return a};k.endSymbol=function(){return b};return k}]}function kf(){this.$get=["$rootScope","$window","$q","$$q","$browser",function(a,b,d,c,e){function f(f,k,l,n){function m(){r?f.apply(null,N):f(p)}var r=4<arguments.length,N=r?za.call(arguments,4):[],q=b.setInterval,w=b.clearInterval,p=0,H=x(n)&&!n,t=(H?c:d).defer(),z=t.promise;l=x(l)?l:0;z.$$intervalId=q(function(){H?e.defer(m):a.$evalAsync(m);t.notify(p++);0<l&&p>=l&&(t.resolve(p),
1451 w(z.$$intervalId),delete g[z.$$intervalId]);H||a.$apply()},k);g[z.$$intervalId]=t;return z}var g={};f.cancel=function(a){return a&&a.$$intervalId in g?(g[a.$$intervalId].reject("canceled"),b.clearInterval(a.$$intervalId),delete g[a.$$intervalId],!0):!1};return f}]}function cc(a){a=a.split("/");for(var b=a.length;b--;)a[b]=ob(a[b]);return a.join("/")}function id(a,b){var d=ra(a);b.$$protocol=d.protocol;b.$$host=d.hostname;b.$$port=X(d.port)||eg[d.protocol]||null}function jd(a,b){var d="/"!==a.charAt(0);
1451 w(z.$$intervalId),delete g[z.$$intervalId]);H||a.$apply()},k);g[z.$$intervalId]=t;return z}var g={};f.cancel=function(a){return a&&a.$$intervalId in g?(g[a.$$intervalId].reject("canceled"),b.clearInterval(a.$$intervalId),delete g[a.$$intervalId],!0):!1};return f}]}function cc(a){a=a.split("/");for(var b=a.length;b--;)a[b]=ob(a[b]);return a.join("/")}function id(a,b){var d=ra(a);b.$$protocol=d.protocol;b.$$host=d.hostname;b.$$port=X(d.port)||eg[d.protocol]||null}function jd(a,b){var d="/"!==a.charAt(0);
1452 d&&(a="/"+a);var c=ra(a);b.$$path=decodeURIComponent(d&&"/"===c.pathname.charAt(0)?c.pathname.substring(1):c.pathname);b.$$search=xc(c.search);b.$$hash=decodeURIComponent(c.hash);b.$$path&&"/"!=b.$$path.charAt(0)&&(b.$$path="/"+b.$$path)}function na(a,b){if(0===b.indexOf(a))return b.substr(a.length)}function Ia(a){var b=a.indexOf("#");return-1==b?a:a.substr(0,b)}function hb(a){return a.replace(/(#.+)|#$/,"$1")}function dc(a,b,d){this.$$html5=!0;d=d||"";id(a,this);this.$$parse=function(a){var d=na(b,
1452 d&&(a="/"+a);var c=ra(a);b.$$path=decodeURIComponent(d&&"/"===c.pathname.charAt(0)?c.pathname.substring(1):c.pathname);b.$$search=xc(c.search);b.$$hash=decodeURIComponent(c.hash);b.$$path&&"/"!=b.$$path.charAt(0)&&(b.$$path="/"+b.$$path)}function na(a,b){if(0===b.indexOf(a))return b.substr(a.length)}function Ia(a){var b=a.indexOf("#");return-1==b?a:a.substr(0,b)}function hb(a){return a.replace(/(#.+)|#$/,"$1")}function dc(a,b,d){this.$$html5=!0;d=d||"";id(a,this);this.$$parse=function(a){var d=na(b,
1453 a);if(!F(d))throw Eb("ipthprfx",a,b);jd(d,this);this.$$path||(this.$$path="/");this.$$compose()};this.$$compose=function(){var a=Rb(this.$$search),d=this.$$hash?"#"+ob(this.$$hash):"";this.$$url=cc(this.$$path)+(a?"?"+a:"")+d;this.$$absUrl=b+this.$$url.substr(1)};this.$$parseLinkUrl=function(c,e){if(e&&"#"===e[0])return this.hash(e.slice(1)),!0;var f,g;x(f=na(a,c))?(g=f,g=x(f=na(d,f))?b+(na("/",f)||f):a+g):x(f=na(b,c))?g=b+f:b==c+"/"&&(g=b);g&&this.$$parse(g);return!!g}}function ec(a,b,d){id(a,this);
1453 a);if(!F(d))throw Eb("ipthprfx",a,b);jd(d,this);this.$$path||(this.$$path="/");this.$$compose()};this.$$compose=function(){var a=Rb(this.$$search),d=this.$$hash?"#"+ob(this.$$hash):"";this.$$url=cc(this.$$path)+(a?"?"+a:"")+d;this.$$absUrl=b+this.$$url.substr(1)};this.$$parseLinkUrl=function(c,e){if(e&&"#"===e[0])return this.hash(e.slice(1)),!0;var f,g;x(f=na(a,c))?(g=f,g=x(f=na(d,f))?b+(na("/",f)||f):a+g):x(f=na(b,c))?g=b+f:b==c+"/"&&(g=b);g&&this.$$parse(g);return!!g}}function ec(a,b,d){id(a,this);
1454 this.$$parse=function(c){var e=na(a,c)||na(b,c),f;y(e)||"#"!==e.charAt(0)?this.$$html5?f=e:(f="",y(e)&&(a=c,this.replace())):(f=na(d,e),y(f)&&(f=e));jd(f,this);c=this.$$path;var e=a,g=/^\/[A-Z]:(\/.*)/;0===f.indexOf(e)&&(f=f.replace(e,""));g.exec(f)||(c=(f=g.exec(c))?f[1]:c);this.$$path=c;this.$$compose()};this.$$compose=function(){var b=Rb(this.$$search),e=this.$$hash?"#"+ob(this.$$hash):"";this.$$url=cc(this.$$path)+(b?"?"+b:"")+e;this.$$absUrl=a+(this.$$url?d+this.$$url:"")};this.$$parseLinkUrl=
1454 this.$$parse=function(c){var e=na(a,c)||na(b,c),f;y(e)||"#"!==e.charAt(0)?this.$$html5?f=e:(f="",y(e)&&(a=c,this.replace())):(f=na(d,e),y(f)&&(f=e));jd(f,this);c=this.$$path;var e=a,g=/^\/[A-Z]:(\/.*)/;0===f.indexOf(e)&&(f=f.replace(e,""));g.exec(f)||(c=(f=g.exec(c))?f[1]:c);this.$$path=c;this.$$compose()};this.$$compose=function(){var b=Rb(this.$$search),e=this.$$hash?"#"+ob(this.$$hash):"";this.$$url=cc(this.$$path)+(b?"?"+b:"")+e;this.$$absUrl=a+(this.$$url?d+this.$$url:"")};this.$$parseLinkUrl=
1455 function(b,d){return Ia(a)==Ia(b)?(this.$$parse(b),!0):!1}}function kd(a,b,d){this.$$html5=!0;ec.apply(this,arguments);this.$$parseLinkUrl=function(c,e){if(e&&"#"===e[0])return this.hash(e.slice(1)),!0;var f,g;a==Ia(c)?f=c:(g=na(b,c))?f=a+d+g:b===c+"/"&&(f=b);f&&this.$$parse(f);return!!f};this.$$compose=function(){var b=Rb(this.$$search),e=this.$$hash?"#"+ob(this.$$hash):"";this.$$url=cc(this.$$path)+(b?"?"+b:"")+e;this.$$absUrl=a+d+this.$$url}}function Fb(a){return function(){return this[a]}}function ld(a,
1455 function(b,d){return Ia(a)==Ia(b)?(this.$$parse(b),!0):!1}}function kd(a,b,d){this.$$html5=!0;ec.apply(this,arguments);this.$$parseLinkUrl=function(c,e){if(e&&"#"===e[0])return this.hash(e.slice(1)),!0;var f,g;a==Ia(c)?f=c:(g=na(b,c))?f=a+d+g:b===c+"/"&&(f=b);f&&this.$$parse(f);return!!f};this.$$compose=function(){var b=Rb(this.$$search),e=this.$$hash?"#"+ob(this.$$hash):"";this.$$url=cc(this.$$path)+(b?"?"+b:"")+e;this.$$absUrl=a+d+this.$$url}}function Fb(a){return function(){return this[a]}}function ld(a,
1456 b){return function(d){if(y(d))return this[a];this[a]=b(d);this.$$compose();return this}}function qf(){var a="",b={enabled:!1,requireBase:!0,rewriteLinks:!0};this.hashPrefix=function(b){return x(b)?(a=b,this):a};this.html5Mode=function(a){return Da(a)?(b.enabled=a,this):G(a)?(Da(a.enabled)&&(b.enabled=a.enabled),Da(a.requireBase)&&(b.requireBase=a.requireBase),Da(a.rewriteLinks)&&(b.rewriteLinks=a.rewriteLinks),this):b};this.$get=["$rootScope","$browser","$sniffer","$rootElement","$window",function(d,
1456 b){return function(d){if(y(d))return this[a];this[a]=b(d);this.$$compose();return this}}function qf(){var a="",b={enabled:!1,requireBase:!0,rewriteLinks:!0};this.hashPrefix=function(b){return x(b)?(a=b,this):a};this.html5Mode=function(a){return Da(a)?(b.enabled=a,this):G(a)?(Da(a.enabled)&&(b.enabled=a.enabled),Da(a.requireBase)&&(b.requireBase=a.requireBase),Da(a.rewriteLinks)&&(b.rewriteLinks=a.rewriteLinks),this):b};this.$get=["$rootScope","$browser","$sniffer","$rootElement","$window",function(d,
1457 c,e,f,g){function h(a,b,d){var e=l.url(),f=l.$$state;try{c.url(a,b,d),l.$$state=c.state()}catch(g){throw l.url(e),l.$$state=f,g;}}function k(a,b){d.$broadcast("$locationChangeSuccess",l.absUrl(),a,l.$$state,b)}var l,n;n=c.baseHref();var m=c.url(),r;if(b.enabled){if(!n&&b.requireBase)throw Eb("nobase");r=m.substring(0,m.indexOf("/",m.indexOf("//")+2))+(n||"/");n=e.history?dc:kd}else r=Ia(m),n=ec;var N=r.substr(0,Ia(r).lastIndexOf("/")+1);l=new n(r,N,"#"+a);l.$$parseLinkUrl(m,m);l.$$state=c.state();
1457 c,e,f,g){function h(a,b,d){var e=l.url(),f=l.$$state;try{c.url(a,b,d),l.$$state=c.state()}catch(g){throw l.url(e),l.$$state=f,g;}}function k(a,b){d.$broadcast("$locationChangeSuccess",l.absUrl(),a,l.$$state,b)}var l,n;n=c.baseHref();var m=c.url(),r;if(b.enabled){if(!n&&b.requireBase)throw Eb("nobase");r=m.substring(0,m.indexOf("/",m.indexOf("//")+2))+(n||"/");n=e.history?dc:kd}else r=Ia(m),n=ec;var N=r.substr(0,Ia(r).lastIndexOf("/")+1);l=new n(r,N,"#"+a);l.$$parseLinkUrl(m,m);l.$$state=c.state();
1458 var q=/^\s*(javascript|mailto):/i;f.on("click",function(a){if(b.rewriteLinks&&!a.ctrlKey&&!a.metaKey&&!a.shiftKey&&2!=a.which&&2!=a.button){for(var e=B(a.target);"a"!==va(e[0]);)if(e[0]===f[0]||!(e=e.parent())[0])return;var h=e.prop("href"),k=e.attr("href")||e.attr("xlink:href");G(h)&&"[object SVGAnimatedString]"===h.toString()&&(h=ra(h.animVal).href);q.test(h)||!h||e.attr("target")||a.isDefaultPrevented()||!l.$$parseLinkUrl(h,k)||(a.preventDefault(),l.absUrl()!=c.url()&&(d.$apply(),g.angular["ff-684208-preventDefault"]=
1458 var q=/^\s*(javascript|mailto):/i;f.on("click",function(a){if(b.rewriteLinks&&!a.ctrlKey&&!a.metaKey&&!a.shiftKey&&2!=a.which&&2!=a.button){for(var e=B(a.target);"a"!==va(e[0]);)if(e[0]===f[0]||!(e=e.parent())[0])return;var h=e.prop("href"),k=e.attr("href")||e.attr("xlink:href");G(h)&&"[object SVGAnimatedString]"===h.toString()&&(h=ra(h.animVal).href);q.test(h)||!h||e.attr("target")||a.isDefaultPrevented()||!l.$$parseLinkUrl(h,k)||(a.preventDefault(),l.absUrl()!=c.url()&&(d.$apply(),g.angular["ff-684208-preventDefault"]=
1459 !0))}});hb(l.absUrl())!=hb(m)&&c.url(l.absUrl(),!0);var w=!0;c.onUrlChange(function(a,b){y(na(N,a))?g.location.href=a:(d.$evalAsync(function(){var c=l.absUrl(),e=l.$$state,f;a=hb(a);l.$$parse(a);l.$$state=b;f=d.$broadcast("$locationChangeStart",a,c,b,e).defaultPrevented;l.absUrl()===a&&(f?(l.$$parse(c),l.$$state=e,h(c,!1,e)):(w=!1,k(c,e)))}),d.$$phase||d.$digest())});d.$watch(function(){var a=hb(c.url()),b=hb(l.absUrl()),f=c.state(),g=l.$$replace,m=a!==b||l.$$html5&&e.history&&f!==l.$$state;if(w||
1459 !0))}});hb(l.absUrl())!=hb(m)&&c.url(l.absUrl(),!0);var w=!0;c.onUrlChange(function(a,b){y(na(N,a))?g.location.href=a:(d.$evalAsync(function(){var c=l.absUrl(),e=l.$$state,f;a=hb(a);l.$$parse(a);l.$$state=b;f=d.$broadcast("$locationChangeStart",a,c,b,e).defaultPrevented;l.absUrl()===a&&(f?(l.$$parse(c),l.$$state=e,h(c,!1,e)):(w=!1,k(c,e)))}),d.$$phase||d.$digest())});d.$watch(function(){var a=hb(c.url()),b=hb(l.absUrl()),f=c.state(),g=l.$$replace,m=a!==b||l.$$html5&&e.history&&f!==l.$$state;if(w||
1460 m)w=!1,d.$evalAsync(function(){var b=l.absUrl(),c=d.$broadcast("$locationChangeStart",b,a,l.$$state,f).defaultPrevented;l.absUrl()===b&&(c?(l.$$parse(a),l.$$state=f):(m&&h(b,g,f===l.$$state?null:l.$$state),k(a,f)))});l.$$replace=!1});return l}]}function rf(){var a=!0,b=this;this.debugEnabled=function(b){return x(b)?(a=b,this):a};this.$get=["$window",function(d){function c(a){a instanceof Error&&(a.stack?a=a.message&&-1===a.stack.indexOf(a.message)?"Error: "+a.message+"\n"+a.stack:a.stack:a.sourceURL&&
1460 m)w=!1,d.$evalAsync(function(){var b=l.absUrl(),c=d.$broadcast("$locationChangeStart",b,a,l.$$state,f).defaultPrevented;l.absUrl()===b&&(c?(l.$$parse(a),l.$$state=f):(m&&h(b,g,f===l.$$state?null:l.$$state),k(a,f)))});l.$$replace=!1});return l}]}function rf(){var a=!0,b=this;this.debugEnabled=function(b){return x(b)?(a=b,this):a};this.$get=["$window",function(d){function c(a){a instanceof Error&&(a.stack?a=a.message&&-1===a.stack.indexOf(a.message)?"Error: "+a.message+"\n"+a.stack:a.stack:a.sourceURL&&
1461 (a=a.message+"\n"+a.sourceURL+":"+a.line));return a}function e(a){var b=d.console||{},e=b[a]||b.log||C;a=!1;try{a=!!e.apply}catch(k){}return a?function(){var a=[];q(arguments,function(b){a.push(c(b))});return e.apply(b,a)}:function(a,b){e(a,null==b?"":b)}}return{log:e("log"),info:e("info"),warn:e("warn"),error:e("error"),debug:function(){var c=e("debug");return function(){a&&c.apply(b,arguments)}}()}}]}function Ta(a,b){if("__defineGetter__"===a||"__defineSetter__"===a||"__lookupGetter__"===a||"__lookupSetter__"===
1461 (a=a.message+"\n"+a.sourceURL+":"+a.line));return a}function e(a){var b=d.console||{},e=b[a]||b.log||C;a=!1;try{a=!!e.apply}catch(k){}return a?function(){var a=[];q(arguments,function(b){a.push(c(b))});return e.apply(b,a)}:function(a,b){e(a,null==b?"":b)}}return{log:e("log"),info:e("info"),warn:e("warn"),error:e("error"),debug:function(){var c=e("debug");return function(){a&&c.apply(b,arguments)}}()}}]}function Ta(a,b){if("__defineGetter__"===a||"__defineSetter__"===a||"__lookupGetter__"===a||"__lookupSetter__"===
1462 a||"__proto__"===a)throw ca("isecfld",b);return a}function fg(a){return a+""}function sa(a,b){if(a){if(a.constructor===a)throw ca("isecfn",b);if(a.window===a)throw ca("isecwindow",b);if(a.children&&(a.nodeName||a.prop&&a.attr&&a.find))throw ca("isecdom",b);if(a===Object)throw ca("isecobj",b);}return a}function md(a,b){if(a){if(a.constructor===a)throw ca("isecfn",b);if(a===gg||a===hg||a===ig)throw ca("isecff",b);}}function Gb(a,b){if(a&&(a===(0).constructor||a===(!1).constructor||a==="".constructor||
1462 a||"__proto__"===a)throw ca("isecfld",b);return a}function fg(a){return a+""}function sa(a,b){if(a){if(a.constructor===a)throw ca("isecfn",b);if(a.window===a)throw ca("isecwindow",b);if(a.children&&(a.nodeName||a.prop&&a.attr&&a.find))throw ca("isecdom",b);if(a===Object)throw ca("isecobj",b);}return a}function md(a,b){if(a){if(a.constructor===a)throw ca("isecfn",b);if(a===gg||a===hg||a===ig)throw ca("isecff",b);}}function Gb(a,b){if(a&&(a===(0).constructor||a===(!1).constructor||a==="".constructor||
1463 a==={}.constructor||a===[].constructor||a===Function.constructor))throw ca("isecaf",b);}function jg(a,b){return"undefined"!==typeof a?a:b}function nd(a,b){return"undefined"===typeof a?b:"undefined"===typeof b?a:a+b}function aa(a,b){var d,c;switch(a.type){case s.Program:d=!0;q(a.body,function(a){aa(a.expression,b);d=d&&a.expression.constant});a.constant=d;break;case s.Literal:a.constant=!0;a.toWatch=[];break;case s.UnaryExpression:aa(a.argument,b);a.constant=a.argument.constant;a.toWatch=a.argument.toWatch;
1463 a==={}.constructor||a===[].constructor||a===Function.constructor))throw ca("isecaf",b);}function jg(a,b){return"undefined"!==typeof a?a:b}function nd(a,b){return"undefined"===typeof a?b:"undefined"===typeof b?a:a+b}function aa(a,b){var d,c;switch(a.type){case s.Program:d=!0;q(a.body,function(a){aa(a.expression,b);d=d&&a.expression.constant});a.constant=d;break;case s.Literal:a.constant=!0;a.toWatch=[];break;case s.UnaryExpression:aa(a.argument,b);a.constant=a.argument.constant;a.toWatch=a.argument.toWatch;
1464 break;case s.BinaryExpression:aa(a.left,b);aa(a.right,b);a.constant=a.left.constant&&a.right.constant;a.toWatch=a.left.toWatch.concat(a.right.toWatch);break;case s.LogicalExpression:aa(a.left,b);aa(a.right,b);a.constant=a.left.constant&&a.right.constant;a.toWatch=a.constant?[]:[a];break;case s.ConditionalExpression:aa(a.test,b);aa(a.alternate,b);aa(a.consequent,b);a.constant=a.test.constant&&a.alternate.constant&&a.consequent.constant;a.toWatch=a.constant?[]:[a];break;case s.Identifier:a.constant=
1464 break;case s.BinaryExpression:aa(a.left,b);aa(a.right,b);a.constant=a.left.constant&&a.right.constant;a.toWatch=a.left.toWatch.concat(a.right.toWatch);break;case s.LogicalExpression:aa(a.left,b);aa(a.right,b);a.constant=a.left.constant&&a.right.constant;a.toWatch=a.constant?[]:[a];break;case s.ConditionalExpression:aa(a.test,b);aa(a.alternate,b);aa(a.consequent,b);a.constant=a.test.constant&&a.alternate.constant&&a.consequent.constant;a.toWatch=a.constant?[]:[a];break;case s.Identifier:a.constant=
1465 !1;a.toWatch=[a];break;case s.MemberExpression:aa(a.object,b);a.computed&&aa(a.property,b);a.constant=a.object.constant&&(!a.computed||a.property.constant);a.toWatch=[a];break;case s.CallExpression:d=a.filter?!b(a.callee.name).$stateful:!1;c=[];q(a.arguments,function(a){aa(a,b);d=d&&a.constant;a.constant||c.push.apply(c,a.toWatch)});a.constant=d;a.toWatch=a.filter&&!b(a.callee.name).$stateful?c:[a];break;case s.AssignmentExpression:aa(a.left,b);aa(a.right,b);a.constant=a.left.constant&&a.right.constant;
1465 !1;a.toWatch=[a];break;case s.MemberExpression:aa(a.object,b);a.computed&&aa(a.property,b);a.constant=a.object.constant&&(!a.computed||a.property.constant);a.toWatch=[a];break;case s.CallExpression:d=a.filter?!b(a.callee.name).$stateful:!1;c=[];q(a.arguments,function(a){aa(a,b);d=d&&a.constant;a.constant||c.push.apply(c,a.toWatch)});a.constant=d;a.toWatch=a.filter&&!b(a.callee.name).$stateful?c:[a];break;case s.AssignmentExpression:aa(a.left,b);aa(a.right,b);a.constant=a.left.constant&&a.right.constant;
1466 a.toWatch=[a];break;case s.ArrayExpression:d=!0;c=[];q(a.elements,function(a){aa(a,b);d=d&&a.constant;a.constant||c.push.apply(c,a.toWatch)});a.constant=d;a.toWatch=c;break;case s.ObjectExpression:d=!0;c=[];q(a.properties,function(a){aa(a.value,b);d=d&&a.value.constant;a.value.constant||c.push.apply(c,a.value.toWatch)});a.constant=d;a.toWatch=c;break;case s.ThisExpression:a.constant=!1;a.toWatch=[];break;case s.LocalsExpression:a.constant=!1,a.toWatch=[]}}function od(a){if(1==a.length){a=a[0].expression;
1466 a.toWatch=[a];break;case s.ArrayExpression:d=!0;c=[];q(a.elements,function(a){aa(a,b);d=d&&a.constant;a.constant||c.push.apply(c,a.toWatch)});a.constant=d;a.toWatch=c;break;case s.ObjectExpression:d=!0;c=[];q(a.properties,function(a){aa(a.value,b);d=d&&a.value.constant;a.value.constant||c.push.apply(c,a.value.toWatch)});a.constant=d;a.toWatch=c;break;case s.ThisExpression:a.constant=!1;a.toWatch=[];break;case s.LocalsExpression:a.constant=!1,a.toWatch=[]}}function od(a){if(1==a.length){a=a[0].expression;
1467 var b=a.toWatch;return 1!==b.length?b:b[0]!==a?b:void 0}}function pd(a){return a.type===s.Identifier||a.type===s.MemberExpression}function qd(a){if(1===a.body.length&&pd(a.body[0].expression))return{type:s.AssignmentExpression,left:a.body[0].expression,right:{type:s.NGValueParameter},operator:"="}}function rd(a){return 0===a.body.length||1===a.body.length&&(a.body[0].expression.type===s.Literal||a.body[0].expression.type===s.ArrayExpression||a.body[0].expression.type===s.ObjectExpression)}function sd(a,
1467 var b=a.toWatch;return 1!==b.length?b:b[0]!==a?b:void 0}}function pd(a){return a.type===s.Identifier||a.type===s.MemberExpression}function qd(a){if(1===a.body.length&&pd(a.body[0].expression))return{type:s.AssignmentExpression,left:a.body[0].expression,right:{type:s.NGValueParameter},operator:"="}}function rd(a){return 0===a.body.length||1===a.body.length&&(a.body[0].expression.type===s.Literal||a.body[0].expression.type===s.ArrayExpression||a.body[0].expression.type===s.ObjectExpression)}function sd(a,
1468 b){this.astBuilder=a;this.$filter=b}function td(a,b){this.astBuilder=a;this.$filter=b}function Hb(a){return"constructor"==a}function fc(a){return E(a.valueOf)?a.valueOf():kg.call(a)}function sf(){var a=T(),b=T(),d={"true":!0,"false":!1,"null":null,undefined:void 0},c,e;this.addLiteral=function(a,b){d[a]=b};this.setIdentifierFns=function(a,b){c=a;e=b;return this};this.$get=["$filter",function(f){function g(c,d,e){var g,k,D;e=e||H;switch(typeof c){case "string":D=c=c.trim();var q=e?b:a;g=q[D];if(!g){":"===
1468 b){this.astBuilder=a;this.$filter=b}function td(a,b){this.astBuilder=a;this.$filter=b}function Hb(a){return"constructor"==a}function fc(a){return E(a.valueOf)?a.valueOf():kg.call(a)}function sf(){var a=T(),b=T(),d={"true":!0,"false":!1,"null":null,undefined:void 0},c,e;this.addLiteral=function(a,b){d[a]=b};this.setIdentifierFns=function(a,b){c=a;e=b;return this};this.$get=["$filter",function(f){function g(c,d,e){var g,k,D;e=e||H;switch(typeof c){case "string":D=c=c.trim();var q=e?b:a;g=q[D];if(!g){":"===
1469 c.charAt(0)&&":"===c.charAt(1)&&(k=!0,c=c.substring(2));g=e?p:w;var S=new gc(g);g=(new hc(S,f,g)).parse(c);g.constant?g.$$watchDelegate=r:k?g.$$watchDelegate=g.literal?m:n:g.inputs&&(g.$$watchDelegate=l);e&&(g=h(g));q[D]=g}return N(g,d);case "function":return N(c,d);default:return N(C,d)}}function h(a){function b(c,d,e,f){var g=H;H=!0;try{return a(c,d,e,f)}finally{H=g}}if(!a)return a;b.$$watchDelegate=a.$$watchDelegate;b.assign=h(a.assign);b.constant=a.constant;b.literal=a.literal;for(var c=0;a.inputs&&
1469 c.charAt(0)&&":"===c.charAt(1)&&(k=!0,c=c.substring(2));g=e?p:w;var S=new gc(g);g=(new hc(S,f,g)).parse(c);g.constant?g.$$watchDelegate=r:k?g.$$watchDelegate=g.literal?m:n:g.inputs&&(g.$$watchDelegate=l);e&&(g=h(g));q[D]=g}return N(g,d);case "function":return N(c,d);default:return N(C,d)}}function h(a){function b(c,d,e,f){var g=H;H=!0;try{return a(c,d,e,f)}finally{H=g}}if(!a)return a;b.$$watchDelegate=a.$$watchDelegate;b.assign=h(a.assign);b.constant=a.constant;b.literal=a.literal;for(var c=0;a.inputs&&
1470 c<a.inputs.length;++c)a.inputs[c]=h(a.inputs[c]);b.inputs=a.inputs;return b}function k(a,b){return null==a||null==b?a===b:"object"===typeof a&&(a=fc(a),"object"===typeof a)?!1:a===b||a!==a&&b!==b}function l(a,b,c,d,e){var f=d.inputs,g;if(1===f.length){var h=k,f=f[0];return a.$watch(function(a){var b=f(a);k(b,h)||(g=d(a,void 0,void 0,[b]),h=b&&fc(b));return g},b,c,e)}for(var l=[],m=[],n=0,r=f.length;n<r;n++)l[n]=k,m[n]=null;return a.$watch(function(a){for(var b=!1,c=0,e=f.length;c<e;c++){var h=f[c](a);
1470 c<a.inputs.length;++c)a.inputs[c]=h(a.inputs[c]);b.inputs=a.inputs;return b}function k(a,b){return null==a||null==b?a===b:"object"===typeof a&&(a=fc(a),"object"===typeof a)?!1:a===b||a!==a&&b!==b}function l(a,b,c,d,e){var f=d.inputs,g;if(1===f.length){var h=k,f=f[0];return a.$watch(function(a){var b=f(a);k(b,h)||(g=d(a,void 0,void 0,[b]),h=b&&fc(b));return g},b,c,e)}for(var l=[],m=[],n=0,r=f.length;n<r;n++)l[n]=k,m[n]=null;return a.$watch(function(a){for(var b=!1,c=0,e=f.length;c<e;c++){var h=f[c](a);
1471 if(b||(b=!k(h,l[c])))m[c]=h,l[c]=h&&fc(h)}b&&(g=d(a,void 0,void 0,m));return g},b,c,e)}function n(a,b,c,d){var e,f;return e=a.$watch(function(a){return d(a)},function(a,c,d){f=a;E(b)&&b.apply(this,arguments);x(a)&&d.$$postDigest(function(){x(f)&&e()})},c)}function m(a,b,c,d){function e(a){var b=!0;q(a,function(a){x(a)||(b=!1)});return b}var f,g;return f=a.$watch(function(a){return d(a)},function(a,c,d){g=a;E(b)&&b.call(this,a,c,d);e(a)&&d.$$postDigest(function(){e(g)&&f()})},c)}function r(a,b,c,d){var e;
1471 if(b||(b=!k(h,l[c])))m[c]=h,l[c]=h&&fc(h)}b&&(g=d(a,void 0,void 0,m));return g},b,c,e)}function n(a,b,c,d){var e,f;return e=a.$watch(function(a){return d(a)},function(a,c,d){f=a;E(b)&&b.apply(this,arguments);x(a)&&d.$$postDigest(function(){x(f)&&e()})},c)}function m(a,b,c,d){function e(a){var b=!0;q(a,function(a){x(a)||(b=!1)});return b}var f,g;return f=a.$watch(function(a){return d(a)},function(a,c,d){g=a;E(b)&&b.call(this,a,c,d);e(a)&&d.$$postDigest(function(){e(g)&&f()})},c)}function r(a,b,c,d){var e;
1472 return e=a.$watch(function(a){e();return d(a)},b,c)}function N(a,b){if(!b)return a;var c=a.$$watchDelegate,d=!1,c=c!==m&&c!==n?function(c,e,f,g){f=d&&g?g[0]:a(c,e,f,g);return b(f,c,e)}:function(c,d,e,f){e=a(c,d,e,f);c=b(e,c,d);return x(e)?c:e};a.$$watchDelegate&&a.$$watchDelegate!==l?c.$$watchDelegate=a.$$watchDelegate:b.$stateful||(c.$$watchDelegate=l,d=!a.inputs,c.inputs=a.inputs?a.inputs:[a]);return c}var M=Ea().noUnsafeEval,w={csp:M,expensiveChecks:!1,literals:qa(d),isIdentifierStart:E(c)&&c,
1472 return e=a.$watch(function(a){e();return d(a)},b,c)}function N(a,b){if(!b)return a;var c=a.$$watchDelegate,d=!1,c=c!==m&&c!==n?function(c,e,f,g){f=d&&g?g[0]:a(c,e,f,g);return b(f,c,e)}:function(c,d,e,f){e=a(c,d,e,f);c=b(e,c,d);return x(e)?c:e};a.$$watchDelegate&&a.$$watchDelegate!==l?c.$$watchDelegate=a.$$watchDelegate:b.$stateful||(c.$$watchDelegate=l,d=!a.inputs,c.inputs=a.inputs?a.inputs:[a]);return c}var M=Ea().noUnsafeEval,w={csp:M,expensiveChecks:!1,literals:qa(d),isIdentifierStart:E(c)&&c,
1473 isIdentifierContinue:E(e)&&e},p={csp:M,expensiveChecks:!0,literals:qa(d),isIdentifierStart:E(c)&&c,isIdentifierContinue:E(e)&&e},H=!1;g.$$runningExpensiveChecks=function(){return H};return g}]}function uf(){this.$get=["$rootScope","$exceptionHandler",function(a,b){return ud(function(b){a.$evalAsync(b)},b)}]}function vf(){this.$get=["$browser","$exceptionHandler",function(a,b){return ud(function(b){a.defer(b)},b)}]}function ud(a,b){function d(){this.$$state={status:0}}function c(a,b){return function(c){b.call(a,
1473 isIdentifierContinue:E(e)&&e},p={csp:M,expensiveChecks:!0,literals:qa(d),isIdentifierStart:E(c)&&c,isIdentifierContinue:E(e)&&e},H=!1;g.$$runningExpensiveChecks=function(){return H};return g}]}function uf(){this.$get=["$rootScope","$exceptionHandler",function(a,b){return ud(function(b){a.$evalAsync(b)},b)}]}function vf(){this.$get=["$browser","$exceptionHandler",function(a,b){return ud(function(b){a.defer(b)},b)}]}function ud(a,b){function d(){this.$$state={status:0}}function c(a,b){return function(c){b.call(a,
1474 c)}}function e(c){!c.processScheduled&&c.pending&&(c.processScheduled=!0,a(function(){var a,d,e;e=c.pending;c.processScheduled=!1;c.pending=void 0;for(var f=0,g=e.length;f<g;++f){d=e[f][0];a=e[f][c.status];try{E(a)?d.resolve(a(c.value)):1===c.status?d.resolve(c.value):d.reject(c.value)}catch(h){d.reject(h),b(h)}}}))}function f(){this.promise=new d}var g=O("$q",TypeError);R(d.prototype,{then:function(a,b,c){if(y(a)&&y(b)&&y(c))return this;var d=new f;this.$$state.pending=this.$$state.pending||[];this.$$state.pending.push([d,
1474 c)}}function e(c){!c.processScheduled&&c.pending&&(c.processScheduled=!0,a(function(){var a,d,e;e=c.pending;c.processScheduled=!1;c.pending=void 0;for(var f=0,g=e.length;f<g;++f){d=e[f][0];a=e[f][c.status];try{E(a)?d.resolve(a(c.value)):1===c.status?d.resolve(c.value):d.reject(c.value)}catch(h){d.reject(h),b(h)}}}))}function f(){this.promise=new d}var g=O("$q",TypeError);R(d.prototype,{then:function(a,b,c){if(y(a)&&y(b)&&y(c))return this;var d=new f;this.$$state.pending=this.$$state.pending||[];this.$$state.pending.push([d,
1475 a,b,c]);0<this.$$state.status&&e(this.$$state);return d.promise},"catch":function(a){return this.then(null,a)},"finally":function(a,b){return this.then(function(b){return k(b,!0,a)},function(b){return k(b,!1,a)},b)}});R(f.prototype,{resolve:function(a){this.promise.$$state.status||(a===this.promise?this.$$reject(g("qcycle",a)):this.$$resolve(a))},$$resolve:function(a){function d(a){k||(k=!0,h.$$resolve(a))}function f(a){k||(k=!0,h.$$reject(a))}var g,h=this,k=!1;try{if(G(a)||E(a))g=a&&a.then;E(g)?
1475 a,b,c]);0<this.$$state.status&&e(this.$$state);return d.promise},"catch":function(a){return this.then(null,a)},"finally":function(a,b){return this.then(function(b){return k(b,!0,a)},function(b){return k(b,!1,a)},b)}});R(f.prototype,{resolve:function(a){this.promise.$$state.status||(a===this.promise?this.$$reject(g("qcycle",a)):this.$$resolve(a))},$$resolve:function(a){function d(a){k||(k=!0,h.$$resolve(a))}function f(a){k||(k=!0,h.$$reject(a))}var g,h=this,k=!1;try{if(G(a)||E(a))g=a&&a.then;E(g)?
1476 (this.promise.$$state.status=-1,g.call(a,d,f,c(this,this.notify))):(this.promise.$$state.value=a,this.promise.$$state.status=1,e(this.promise.$$state))}catch(l){f(l),b(l)}},reject:function(a){this.promise.$$state.status||this.$$reject(a)},$$reject:function(a){this.promise.$$state.value=a;this.promise.$$state.status=2;e(this.promise.$$state)},notify:function(c){var d=this.promise.$$state.pending;0>=this.promise.$$state.status&&d&&d.length&&a(function(){for(var a,e,f=0,g=d.length;f<g;f++){e=d[f][0];
1476 (this.promise.$$state.status=-1,g.call(a,d,f,c(this,this.notify))):(this.promise.$$state.value=a,this.promise.$$state.status=1,e(this.promise.$$state))}catch(l){f(l),b(l)}},reject:function(a){this.promise.$$state.status||this.$$reject(a)},$$reject:function(a){this.promise.$$state.value=a;this.promise.$$state.status=2;e(this.promise.$$state)},notify:function(c){var d=this.promise.$$state.pending;0>=this.promise.$$state.status&&d&&d.length&&a(function(){for(var a,e,f=0,g=d.length;f<g;f++){e=d[f][0];
1477 a=d[f][3];try{e.notify(E(a)?a(c):c)}catch(h){b(h)}}})}});var h=function(a,b){var c=new f;b?c.resolve(a):c.reject(a);return c.promise},k=function(a,b,c){var d=null;try{E(c)&&(d=c())}catch(e){return h(e,!1)}return d&&E(d.then)?d.then(function(){return h(a,b)},function(a){return h(a,!1)}):h(a,b)},l=function(a,b,c,d){var e=new f;e.resolve(a);return e.promise.then(b,c,d)},n=function(a){if(!E(a))throw g("norslvr",a);var b=new f;a(function(a){b.resolve(a)},function(a){b.reject(a)});return b.promise};n.prototype=
1477 a=d[f][3];try{e.notify(E(a)?a(c):c)}catch(h){b(h)}}})}});var h=function(a,b){var c=new f;b?c.resolve(a):c.reject(a);return c.promise},k=function(a,b,c){var d=null;try{E(c)&&(d=c())}catch(e){return h(e,!1)}return d&&E(d.then)?d.then(function(){return h(a,b)},function(a){return h(a,!1)}):h(a,b)},l=function(a,b,c,d){var e=new f;e.resolve(a);return e.promise.then(b,c,d)},n=function(a){if(!E(a))throw g("norslvr",a);var b=new f;a(function(a){b.resolve(a)},function(a){b.reject(a)});return b.promise};n.prototype=
1478 d.prototype;n.defer=function(){var a=new f;a.resolve=c(a,a.resolve);a.reject=c(a,a.reject);a.notify=c(a,a.notify);return a};n.reject=function(a){var b=new f;b.reject(a);return b.promise};n.when=l;n.resolve=l;n.all=function(a){var b=new f,c=0,d=K(a)?[]:{};q(a,function(a,e){c++;l(a).then(function(a){d.hasOwnProperty(e)||(d[e]=a,--c||b.resolve(d))},function(a){d.hasOwnProperty(e)||b.reject(a)})});0===c&&b.resolve(d);return b.promise};return n}function Ef(){this.$get=["$window","$timeout",function(a,
1478 d.prototype;n.defer=function(){var a=new f;a.resolve=c(a,a.resolve);a.reject=c(a,a.reject);a.notify=c(a,a.notify);return a};n.reject=function(a){var b=new f;b.reject(a);return b.promise};n.when=l;n.resolve=l;n.all=function(a){var b=new f,c=0,d=K(a)?[]:{};q(a,function(a,e){c++;l(a).then(function(a){d.hasOwnProperty(e)||(d[e]=a,--c||b.resolve(d))},function(a){d.hasOwnProperty(e)||b.reject(a)})});0===c&&b.resolve(d);return b.promise};return n}function Ef(){this.$get=["$window","$timeout",function(a,
1479 b){var d=a.requestAnimationFrame||a.webkitRequestAnimationFrame,c=a.cancelAnimationFrame||a.webkitCancelAnimationFrame||a.webkitCancelRequestAnimationFrame,e=!!d,f=e?function(a){var b=d(a);return function(){c(b)}}:function(a){var c=b(a,16.66,!1);return function(){b.cancel(c)}};f.supported=e;return f}]}function tf(){function a(a){function b(){this.$$watchers=this.$$nextSibling=this.$$childHead=this.$$childTail=null;this.$$listeners={};this.$$listenerCount={};this.$$watchersCount=0;this.$id=++nb;this.$$ChildScope=
1479 b){var d=a.requestAnimationFrame||a.webkitRequestAnimationFrame,c=a.cancelAnimationFrame||a.webkitCancelAnimationFrame||a.webkitCancelRequestAnimationFrame,e=!!d,f=e?function(a){var b=d(a);return function(){c(b)}}:function(a){var c=b(a,16.66,!1);return function(){b.cancel(c)}};f.supported=e;return f}]}function tf(){function a(a){function b(){this.$$watchers=this.$$nextSibling=this.$$childHead=this.$$childTail=null;this.$$listeners={};this.$$listenerCount={};this.$$watchersCount=0;this.$id=++nb;this.$$ChildScope=
1480 null}b.prototype=a;return b}var b=10,d=O("$rootScope"),c=null,e=null;this.digestTtl=function(a){arguments.length&&(b=a);return b};this.$get=["$exceptionHandler","$parse","$browser",function(f,g,h){function k(a){a.currentScope.$$destroyed=!0}function l(a){9===Ca&&(a.$$childHead&&l(a.$$childHead),a.$$nextSibling&&l(a.$$nextSibling));a.$parent=a.$$nextSibling=a.$$prevSibling=a.$$childHead=a.$$childTail=a.$root=a.$$watchers=null}function n(){this.$id=++nb;this.$$phase=this.$parent=this.$$watchers=this.$$nextSibling=
1480 null}b.prototype=a;return b}var b=10,d=O("$rootScope"),c=null,e=null;this.digestTtl=function(a){arguments.length&&(b=a);return b};this.$get=["$exceptionHandler","$parse","$browser",function(f,g,h){function k(a){a.currentScope.$$destroyed=!0}function l(a){9===Ca&&(a.$$childHead&&l(a.$$childHead),a.$$nextSibling&&l(a.$$nextSibling));a.$parent=a.$$nextSibling=a.$$prevSibling=a.$$childHead=a.$$childTail=a.$root=a.$$watchers=null}function n(){this.$id=++nb;this.$$phase=this.$parent=this.$$watchers=this.$$nextSibling=
1481 this.$$prevSibling=this.$$childHead=this.$$childTail=null;this.$root=this;this.$$destroyed=!1;this.$$listeners={};this.$$listenerCount={};this.$$watchersCount=0;this.$$isolateBindings=null}function m(a){if(H.$$phase)throw d("inprog",H.$$phase);H.$$phase=a}function r(a,b){do a.$$watchersCount+=b;while(a=a.$parent)}function N(a,b,c){do a.$$listenerCount[c]-=b,0===a.$$listenerCount[c]&&delete a.$$listenerCount[c];while(a=a.$parent)}function s(){}function w(){for(;u.length;)try{u.shift()()}catch(a){f(a)}e=
1481 this.$$prevSibling=this.$$childHead=this.$$childTail=null;this.$root=this;this.$$destroyed=!1;this.$$listeners={};this.$$listenerCount={};this.$$watchersCount=0;this.$$isolateBindings=null}function m(a){if(H.$$phase)throw d("inprog",H.$$phase);H.$$phase=a}function r(a,b){do a.$$watchersCount+=b;while(a=a.$parent)}function N(a,b,c){do a.$$listenerCount[c]-=b,0===a.$$listenerCount[c]&&delete a.$$listenerCount[c];while(a=a.$parent)}function s(){}function w(){for(;u.length;)try{u.shift()()}catch(a){f(a)}e=
1482 null}function p(){null===e&&(e=h.defer(function(){H.$apply(w)}))}n.prototype={constructor:n,$new:function(b,c){var d;c=c||this;b?(d=new n,d.$root=this.$root):(this.$$ChildScope||(this.$$ChildScope=a(this)),d=new this.$$ChildScope);d.$parent=c;d.$$prevSibling=c.$$childTail;c.$$childHead?(c.$$childTail.$$nextSibling=d,c.$$childTail=d):c.$$childHead=c.$$childTail=d;(b||c!=this)&&d.$on("$destroy",k);return d},$watch:function(a,b,d,e){var f=g(a);if(f.$$watchDelegate)return f.$$watchDelegate(this,b,d,f,
1482 null}function p(){null===e&&(e=h.defer(function(){H.$apply(w)}))}n.prototype={constructor:n,$new:function(b,c){var d;c=c||this;b?(d=new n,d.$root=this.$root):(this.$$ChildScope||(this.$$ChildScope=a(this)),d=new this.$$ChildScope);d.$parent=c;d.$$prevSibling=c.$$childTail;c.$$childHead?(c.$$childTail.$$nextSibling=d,c.$$childTail=d):c.$$childHead=c.$$childTail=d;(b||c!=this)&&d.$on("$destroy",k);return d},$watch:function(a,b,d,e){var f=g(a);if(f.$$watchDelegate)return f.$$watchDelegate(this,b,d,f,
1483 a);var h=this,k=h.$$watchers,l={fn:b,last:s,get:f,exp:e||a,eq:!!d};c=null;E(b)||(l.fn=C);k||(k=h.$$watchers=[]);k.unshift(l);r(this,1);return function(){0<=Za(k,l)&&r(h,-1);c=null}},$watchGroup:function(a,b){function c(){h=!1;k?(k=!1,b(e,e,g)):b(e,d,g)}var d=Array(a.length),e=Array(a.length),f=[],g=this,h=!1,k=!0;if(!a.length){var l=!0;g.$evalAsync(function(){l&&b(e,e,g)});return function(){l=!1}}if(1===a.length)return this.$watch(a[0],function(a,c,f){e[0]=a;d[0]=c;b(e,a===c?e:d,f)});q(a,function(a,
1483 a);var h=this,k=h.$$watchers,l={fn:b,last:s,get:f,exp:e||a,eq:!!d};c=null;E(b)||(l.fn=C);k||(k=h.$$watchers=[]);k.unshift(l);r(this,1);return function(){0<=Za(k,l)&&r(h,-1);c=null}},$watchGroup:function(a,b){function c(){h=!1;k?(k=!1,b(e,e,g)):b(e,d,g)}var d=Array(a.length),e=Array(a.length),f=[],g=this,h=!1,k=!0;if(!a.length){var l=!0;g.$evalAsync(function(){l&&b(e,e,g)});return function(){l=!1}}if(1===a.length)return this.$watch(a[0],function(a,c,f){e[0]=a;d[0]=c;b(e,a===c?e:d,f)});q(a,function(a,
1484 b){var k=g.$watch(a,function(a,f){e[b]=a;d[b]=f;h||(h=!0,g.$evalAsync(c))});f.push(k)});return function(){for(;f.length;)f.shift()()}},$watchCollection:function(a,b){function c(a){e=a;var b,d,g,h;if(!y(e)){if(G(e))if(ya(e))for(f!==m&&(f=m,t=f.length=0,l++),a=e.length,t!==a&&(l++,f.length=t=a),b=0;b<a;b++)h=f[b],g=e[b],d=h!==h&&g!==g,d||h===g||(l++,f[b]=g);else{f!==r&&(f=r={},t=0,l++);a=0;for(b in e)ua.call(e,b)&&(a++,g=e[b],h=f[b],b in f?(d=h!==h&&g!==g,d||h===g||(l++,f[b]=g)):(t++,f[b]=g,l++));if(t>
1484 b){var k=g.$watch(a,function(a,f){e[b]=a;d[b]=f;h||(h=!0,g.$evalAsync(c))});f.push(k)});return function(){for(;f.length;)f.shift()()}},$watchCollection:function(a,b){function c(a){e=a;var b,d,g,h;if(!y(e)){if(G(e))if(ya(e))for(f!==m&&(f=m,t=f.length=0,l++),a=e.length,t!==a&&(l++,f.length=t=a),b=0;b<a;b++)h=f[b],g=e[b],d=h!==h&&g!==g,d||h===g||(l++,f[b]=g);else{f!==r&&(f=r={},t=0,l++);a=0;for(b in e)ua.call(e,b)&&(a++,g=e[b],h=f[b],b in f?(d=h!==h&&g!==g,d||h===g||(l++,f[b]=g)):(t++,f[b]=g,l++));if(t>
1485 a)for(b in l++,f)ua.call(e,b)||(t--,delete f[b])}else f!==e&&(f=e,l++);return l}}c.$stateful=!0;var d=this,e,f,h,k=1<b.length,l=0,n=g(a,c),m=[],r={},p=!0,t=0;return this.$watch(n,function(){p?(p=!1,b(e,e,d)):b(e,h,d);if(k)if(G(e))if(ya(e)){h=Array(e.length);for(var a=0;a<e.length;a++)h[a]=e[a]}else for(a in h={},e)ua.call(e,a)&&(h[a]=e[a]);else h=e})},$digest:function(){var a,g,k,l,n,r,p,q,N=b,u,x=[],y,v;m("$digest");h.$$checkUrlChange();this===H&&null!==e&&(h.defer.cancel(e),w());c=null;do{q=!1;
1485 a)for(b in l++,f)ua.call(e,b)||(t--,delete f[b])}else f!==e&&(f=e,l++);return l}}c.$stateful=!0;var d=this,e,f,h,k=1<b.length,l=0,n=g(a,c),m=[],r={},p=!0,t=0;return this.$watch(n,function(){p?(p=!1,b(e,e,d)):b(e,h,d);if(k)if(G(e))if(ya(e)){h=Array(e.length);for(var a=0;a<e.length;a++)h[a]=e[a]}else for(a in h={},e)ua.call(e,a)&&(h[a]=e[a]);else h=e})},$digest:function(){var a,g,k,l,n,r,p,q,N=b,u,x=[],y,v;m("$digest");h.$$checkUrlChange();this===H&&null!==e&&(h.defer.cancel(e),w());c=null;do{q=!1;
1486 for(u=this;t.length;){try{v=t.shift(),v.scope.$eval(v.expression,v.locals)}catch(C){f(C)}c=null}a:do{if(r=u.$$watchers)for(p=r.length;p--;)try{if(a=r[p])if(n=a.get,(g=n(u))!==(k=a.last)&&!(a.eq?pa(g,k):"number"===typeof g&&"number"===typeof k&&isNaN(g)&&isNaN(k)))q=!0,c=a,a.last=a.eq?qa(g,null):g,l=a.fn,l(g,k===s?g:k,u),5>N&&(y=4-N,x[y]||(x[y]=[]),x[y].push({msg:E(a.exp)?"fn: "+(a.exp.name||a.exp.toString()):a.exp,newVal:g,oldVal:k}));else if(a===c){q=!1;break a}}catch(F){f(F)}if(!(r=u.$$watchersCount&&
1486 for(u=this;t.length;){try{v=t.shift(),v.scope.$eval(v.expression,v.locals)}catch(C){f(C)}c=null}a:do{if(r=u.$$watchers)for(p=r.length;p--;)try{if(a=r[p])if(n=a.get,(g=n(u))!==(k=a.last)&&!(a.eq?pa(g,k):"number"===typeof g&&"number"===typeof k&&isNaN(g)&&isNaN(k)))q=!0,c=a,a.last=a.eq?qa(g,null):g,l=a.fn,l(g,k===s?g:k,u),5>N&&(y=4-N,x[y]||(x[y]=[]),x[y].push({msg:E(a.exp)?"fn: "+(a.exp.name||a.exp.toString()):a.exp,newVal:g,oldVal:k}));else if(a===c){q=!1;break a}}catch(F){f(F)}if(!(r=u.$$watchersCount&&
1487 u.$$childHead||u!==this&&u.$$nextSibling))for(;u!==this&&!(r=u.$$nextSibling);)u=u.$parent}while(u=r);if((q||t.length)&&!N--)throw H.$$phase=null,d("infdig",b,x);}while(q||t.length);for(H.$$phase=null;z.length;)try{z.shift()()}catch(B){f(B)}},$destroy:function(){if(!this.$$destroyed){var a=this.$parent;this.$broadcast("$destroy");this.$$destroyed=!0;this===H&&h.$$applicationDestroyed();r(this,-this.$$watchersCount);for(var b in this.$$listenerCount)N(this,this.$$listenerCount[b],b);a&&a.$$childHead==
1487 u.$$childHead||u!==this&&u.$$nextSibling))for(;u!==this&&!(r=u.$$nextSibling);)u=u.$parent}while(u=r);if((q||t.length)&&!N--)throw H.$$phase=null,d("infdig",b,x);}while(q||t.length);for(H.$$phase=null;z.length;)try{z.shift()()}catch(B){f(B)}},$destroy:function(){if(!this.$$destroyed){var a=this.$parent;this.$broadcast("$destroy");this.$$destroyed=!0;this===H&&h.$$applicationDestroyed();r(this,-this.$$watchersCount);for(var b in this.$$listenerCount)N(this,this.$$listenerCount[b],b);a&&a.$$childHead==
1488 this&&(a.$$childHead=this.$$nextSibling);a&&a.$$childTail==this&&(a.$$childTail=this.$$prevSibling);this.$$prevSibling&&(this.$$prevSibling.$$nextSibling=this.$$nextSibling);this.$$nextSibling&&(this.$$nextSibling.$$prevSibling=this.$$prevSibling);this.$destroy=this.$digest=this.$apply=this.$evalAsync=this.$applyAsync=C;this.$on=this.$watch=this.$watchGroup=function(){return C};this.$$listeners={};this.$$nextSibling=null;l(this)}},$eval:function(a,b){return g(a)(this,b)},$evalAsync:function(a,b){H.$$phase||
1488 this&&(a.$$childHead=this.$$nextSibling);a&&a.$$childTail==this&&(a.$$childTail=this.$$prevSibling);this.$$prevSibling&&(this.$$prevSibling.$$nextSibling=this.$$nextSibling);this.$$nextSibling&&(this.$$nextSibling.$$prevSibling=this.$$prevSibling);this.$destroy=this.$digest=this.$apply=this.$evalAsync=this.$applyAsync=C;this.$on=this.$watch=this.$watchGroup=function(){return C};this.$$listeners={};this.$$nextSibling=null;l(this)}},$eval:function(a,b){return g(a)(this,b)},$evalAsync:function(a,b){H.$$phase||
1489 t.length||h.defer(function(){t.length&&H.$digest()});t.push({scope:this,expression:g(a),locals:b})},$$postDigest:function(a){z.push(a)},$apply:function(a){try{m("$apply");try{return this.$eval(a)}finally{H.$$phase=null}}catch(b){f(b)}finally{try{H.$digest()}catch(c){throw f(c),c;}}},$applyAsync:function(a){function b(){c.$eval(a)}var c=this;a&&u.push(b);a=g(a);p()},$on:function(a,b){var c=this.$$listeners[a];c||(this.$$listeners[a]=c=[]);c.push(b);var d=this;do d.$$listenerCount[a]||(d.$$listenerCount[a]=
1489 t.length||h.defer(function(){t.length&&H.$digest()});t.push({scope:this,expression:g(a),locals:b})},$$postDigest:function(a){z.push(a)},$apply:function(a){try{m("$apply");try{return this.$eval(a)}finally{H.$$phase=null}}catch(b){f(b)}finally{try{H.$digest()}catch(c){throw f(c),c;}}},$applyAsync:function(a){function b(){c.$eval(a)}var c=this;a&&u.push(b);a=g(a);p()},$on:function(a,b){var c=this.$$listeners[a];c||(this.$$listeners[a]=c=[]);c.push(b);var d=this;do d.$$listenerCount[a]||(d.$$listenerCount[a]=
1490 0),d.$$listenerCount[a]++;while(d=d.$parent);var e=this;return function(){var d=c.indexOf(b);-1!==d&&(c[d]=null,N(e,1,a))}},$emit:function(a,b){var c=[],d,e=this,g=!1,h={name:a,targetScope:e,stopPropagation:function(){g=!0},preventDefault:function(){h.defaultPrevented=!0},defaultPrevented:!1},k=$a([h],arguments,1),l,n;do{d=e.$$listeners[a]||c;h.currentScope=e;l=0;for(n=d.length;l<n;l++)if(d[l])try{d[l].apply(null,k)}catch(m){f(m)}else d.splice(l,1),l--,n--;if(g)return h.currentScope=null,h;e=e.$parent}while(e);
1490 0),d.$$listenerCount[a]++;while(d=d.$parent);var e=this;return function(){var d=c.indexOf(b);-1!==d&&(c[d]=null,N(e,1,a))}},$emit:function(a,b){var c=[],d,e=this,g=!1,h={name:a,targetScope:e,stopPropagation:function(){g=!0},preventDefault:function(){h.defaultPrevented=!0},defaultPrevented:!1},k=$a([h],arguments,1),l,n;do{d=e.$$listeners[a]||c;h.currentScope=e;l=0;for(n=d.length;l<n;l++)if(d[l])try{d[l].apply(null,k)}catch(m){f(m)}else d.splice(l,1),l--,n--;if(g)return h.currentScope=null,h;e=e.$parent}while(e);
1491 h.currentScope=null;return h},$broadcast:function(a,b){var c=this,d=this,e={name:a,targetScope:this,preventDefault:function(){e.defaultPrevented=!0},defaultPrevented:!1};if(!this.$$listenerCount[a])return e;for(var g=$a([e],arguments,1),h,k;c=d;){e.currentScope=c;d=c.$$listeners[a]||[];h=0;for(k=d.length;h<k;h++)if(d[h])try{d[h].apply(null,g)}catch(l){f(l)}else d.splice(h,1),h--,k--;if(!(d=c.$$listenerCount[a]&&c.$$childHead||c!==this&&c.$$nextSibling))for(;c!==this&&!(d=c.$$nextSibling);)c=c.$parent}e.currentScope=
1491 h.currentScope=null;return h},$broadcast:function(a,b){var c=this,d=this,e={name:a,targetScope:this,preventDefault:function(){e.defaultPrevented=!0},defaultPrevented:!1};if(!this.$$listenerCount[a])return e;for(var g=$a([e],arguments,1),h,k;c=d;){e.currentScope=c;d=c.$$listeners[a]||[];h=0;for(k=d.length;h<k;h++)if(d[h])try{d[h].apply(null,g)}catch(l){f(l)}else d.splice(h,1),h--,k--;if(!(d=c.$$listenerCount[a]&&c.$$childHead||c!==this&&c.$$nextSibling))for(;c!==this&&!(d=c.$$nextSibling);)c=c.$parent}e.currentScope=
1492 null;return e}};var H=new n,t=H.$$asyncQueue=[],z=H.$$postDigestQueue=[],u=H.$$applyAsyncQueue=[];return H}]}function me(){var a=/^\s*(https?|ftp|mailto|tel|file):/,b=/^\s*((https?|ftp|file|blob):|data:image\/)/;this.aHrefSanitizationWhitelist=function(b){return x(b)?(a=b,this):a};this.imgSrcSanitizationWhitelist=function(a){return x(a)?(b=a,this):b};this.$get=function(){return function(d,c){var e=c?b:a,f;f=ra(d).href;return""===f||f.match(e)?d:"unsafe:"+f}}}function lg(a){if("self"===a)return a;
1492 null;return e}};var H=new n,t=H.$$asyncQueue=[],z=H.$$postDigestQueue=[],u=H.$$applyAsyncQueue=[];return H}]}function me(){var a=/^\s*(https?|ftp|mailto|tel|file):/,b=/^\s*((https?|ftp|file|blob):|data:image\/)/;this.aHrefSanitizationWhitelist=function(b){return x(b)?(a=b,this):a};this.imgSrcSanitizationWhitelist=function(a){return x(a)?(b=a,this):b};this.$get=function(){return function(d,c){var e=c?b:a,f;f=ra(d).href;return""===f||f.match(e)?d:"unsafe:"+f}}}function lg(a){if("self"===a)return a;
1493 if(F(a)){if(-1<a.indexOf("***"))throw ta("iwcard",a);a=vd(a).replace("\\*\\*",".*").replace("\\*","[^:/.?&;]*");return new RegExp("^"+a+"$")}if(Wa(a))return new RegExp("^"+a.source+"$");throw ta("imatcher");}function wd(a){var b=[];x(a)&&q(a,function(a){b.push(lg(a))});return b}function xf(){this.SCE_CONTEXTS=oa;var a=["self"],b=[];this.resourceUrlWhitelist=function(b){arguments.length&&(a=wd(b));return a};this.resourceUrlBlacklist=function(a){arguments.length&&(b=wd(a));return b};this.$get=["$injector",
1493 if(F(a)){if(-1<a.indexOf("***"))throw ta("iwcard",a);a=vd(a).replace("\\*\\*",".*").replace("\\*","[^:/.?&;]*");return new RegExp("^"+a+"$")}if(Wa(a))return new RegExp("^"+a.source+"$");throw ta("imatcher");}function wd(a){var b=[];x(a)&&q(a,function(a){b.push(lg(a))});return b}function xf(){this.SCE_CONTEXTS=oa;var a=["self"],b=[];this.resourceUrlWhitelist=function(b){arguments.length&&(a=wd(b));return a};this.resourceUrlBlacklist=function(a){arguments.length&&(b=wd(a));return b};this.$get=["$injector",
1494 function(d){function c(a,b){return"self"===a?hd(b):!!a.exec(b.href)}function e(a){var b=function(a){this.$$unwrapTrustedValue=function(){return a}};a&&(b.prototype=new a);b.prototype.valueOf=function(){return this.$$unwrapTrustedValue()};b.prototype.toString=function(){return this.$$unwrapTrustedValue().toString()};return b}var f=function(a){throw ta("unsafe");};d.has("$sanitize")&&(f=d.get("$sanitize"));var g=e(),h={};h[oa.HTML]=e(g);h[oa.CSS]=e(g);h[oa.URL]=e(g);h[oa.JS]=e(g);h[oa.RESOURCE_URL]=
1494 function(d){function c(a,b){return"self"===a?hd(b):!!a.exec(b.href)}function e(a){var b=function(a){this.$$unwrapTrustedValue=function(){return a}};a&&(b.prototype=new a);b.prototype.valueOf=function(){return this.$$unwrapTrustedValue()};b.prototype.toString=function(){return this.$$unwrapTrustedValue().toString()};return b}var f=function(a){throw ta("unsafe");};d.has("$sanitize")&&(f=d.get("$sanitize"));var g=e(),h={};h[oa.HTML]=e(g);h[oa.CSS]=e(g);h[oa.URL]=e(g);h[oa.JS]=e(g);h[oa.RESOURCE_URL]=
1495 e(h[oa.URL]);return{trustAs:function(a,b){var c=h.hasOwnProperty(a)?h[a]:null;if(!c)throw ta("icontext",a,b);if(null===b||y(b)||""===b)return b;if("string"!==typeof b)throw ta("itype",a);return new c(b)},getTrusted:function(d,e){if(null===e||y(e)||""===e)return e;var g=h.hasOwnProperty(d)?h[d]:null;if(g&&e instanceof g)return e.$$unwrapTrustedValue();if(d===oa.RESOURCE_URL){var g=ra(e.toString()),m,r,q=!1;m=0;for(r=a.length;m<r;m++)if(c(a[m],g)){q=!0;break}if(q)for(m=0,r=b.length;m<r;m++)if(c(b[m],
1495 e(h[oa.URL]);return{trustAs:function(a,b){var c=h.hasOwnProperty(a)?h[a]:null;if(!c)throw ta("icontext",a,b);if(null===b||y(b)||""===b)return b;if("string"!==typeof b)throw ta("itype",a);return new c(b)},getTrusted:function(d,e){if(null===e||y(e)||""===e)return e;var g=h.hasOwnProperty(d)?h[d]:null;if(g&&e instanceof g)return e.$$unwrapTrustedValue();if(d===oa.RESOURCE_URL){var g=ra(e.toString()),m,r,q=!1;m=0;for(r=a.length;m<r;m++)if(c(a[m],g)){q=!0;break}if(q)for(m=0,r=b.length;m<r;m++)if(c(b[m],
1496 g)){q=!1;break}if(q)return e;throw ta("insecurl",e.toString());}if(d===oa.HTML)return f(e);throw ta("unsafe");},valueOf:function(a){return a instanceof g?a.$$unwrapTrustedValue():a}}}]}function wf(){var a=!0;this.enabled=function(b){arguments.length&&(a=!!b);return a};this.$get=["$parse","$sceDelegate",function(b,d){if(a&&8>Ca)throw ta("iequirks");var c=ha(oa);c.isEnabled=function(){return a};c.trustAs=d.trustAs;c.getTrusted=d.getTrusted;c.valueOf=d.valueOf;a||(c.trustAs=c.getTrusted=function(a,b){return b},
1496 g)){q=!1;break}if(q)return e;throw ta("insecurl",e.toString());}if(d===oa.HTML)return f(e);throw ta("unsafe");},valueOf:function(a){return a instanceof g?a.$$unwrapTrustedValue():a}}}]}function wf(){var a=!0;this.enabled=function(b){arguments.length&&(a=!!b);return a};this.$get=["$parse","$sceDelegate",function(b,d){if(a&&8>Ca)throw ta("iequirks");var c=ha(oa);c.isEnabled=function(){return a};c.trustAs=d.trustAs;c.getTrusted=d.getTrusted;c.valueOf=d.valueOf;a||(c.trustAs=c.getTrusted=function(a,b){return b},
1497 c.valueOf=Xa);c.parseAs=function(a,d){var e=b(d);return e.literal&&e.constant?e:b(d,function(b){return c.getTrusted(a,b)})};var e=c.parseAs,f=c.getTrusted,g=c.trustAs;q(oa,function(a,b){var d=P(b);c[cb("parse_as_"+d)]=function(b){return e(a,b)};c[cb("get_trusted_"+d)]=function(b){return f(a,b)};c[cb("trust_as_"+d)]=function(b){return g(a,b)}});return c}]}function yf(){this.$get=["$window","$document",function(a,b){var d={},c=!(a.chrome&&a.chrome.app&&a.chrome.app.runtime)&&a.history&&a.history.pushState,
1497 c.valueOf=Xa);c.parseAs=function(a,d){var e=b(d);return e.literal&&e.constant?e:b(d,function(b){return c.getTrusted(a,b)})};var e=c.parseAs,f=c.getTrusted,g=c.trustAs;q(oa,function(a,b){var d=P(b);c[cb("parse_as_"+d)]=function(b){return e(a,b)};c[cb("get_trusted_"+d)]=function(b){return f(a,b)};c[cb("trust_as_"+d)]=function(b){return g(a,b)}});return c}]}function yf(){this.$get=["$window","$document",function(a,b){var d={},c=!(a.chrome&&a.chrome.app&&a.chrome.app.runtime)&&a.history&&a.history.pushState,
1498 e=X((/android (\d+)/.exec(P((a.navigator||{}).userAgent))||[])[1]),f=/Boxee/i.test((a.navigator||{}).userAgent),g=b[0]||{},h,k=/^(Moz|webkit|ms)(?=[A-Z])/,l=g.body&&g.body.style,n=!1,m=!1;if(l){for(var r in l)if(n=k.exec(r)){h=n[0];h=h.substr(0,1).toUpperCase()+h.substr(1);break}h||(h="WebkitOpacity"in l&&"webkit");n=!!("transition"in l||h+"Transition"in l);m=!!("animation"in l||h+"Animation"in l);!e||n&&m||(n=F(l.webkitTransition),m=F(l.webkitAnimation))}return{history:!(!c||4>e||f),hasEvent:function(a){if("input"===
1498 e=X((/android (\d+)/.exec(P((a.navigator||{}).userAgent))||[])[1]),f=/Boxee/i.test((a.navigator||{}).userAgent),g=b[0]||{},h,k=/^(Moz|webkit|ms)(?=[A-Z])/,l=g.body&&g.body.style,n=!1,m=!1;if(l){for(var r in l)if(n=k.exec(r)){h=n[0];h=h.substr(0,1).toUpperCase()+h.substr(1);break}h||(h="WebkitOpacity"in l&&"webkit");n=!!("transition"in l||h+"Transition"in l);m=!!("animation"in l||h+"Animation"in l);!e||n&&m||(n=F(l.webkitTransition),m=F(l.webkitAnimation))}return{history:!(!c||4>e||f),hasEvent:function(a){if("input"===
1499 a&&11>=Ca)return!1;if(y(d[a])){var b=g.createElement("div");d[a]="on"+a in b}return d[a]},csp:Ea(),vendorPrefix:h,transitions:n,animations:m,android:e}}]}function Af(){var a;this.httpOptions=function(b){return b?(a=b,this):a};this.$get=["$templateCache","$http","$q","$sce",function(b,d,c,e){function f(g,h){f.totalPendingRequests++;F(g)&&b.get(g)||(g=e.getTrustedResourceUrl(g));var k=d.defaults&&d.defaults.transformResponse;K(k)?k=k.filter(function(a){return a!==ac}):k===ac&&(k=null);return d.get(g,
1499 a&&11>=Ca)return!1;if(y(d[a])){var b=g.createElement("div");d[a]="on"+a in b}return d[a]},csp:Ea(),vendorPrefix:h,transitions:n,animations:m,android:e}}]}function Af(){var a;this.httpOptions=function(b){return b?(a=b,this):a};this.$get=["$templateCache","$http","$q","$sce",function(b,d,c,e){function f(g,h){f.totalPendingRequests++;F(g)&&b.get(g)||(g=e.getTrustedResourceUrl(g));var k=d.defaults&&d.defaults.transformResponse;K(k)?k=k.filter(function(a){return a!==ac}):k===ac&&(k=null);return d.get(g,
1500 R({cache:b,transformResponse:k},a))["finally"](function(){f.totalPendingRequests--}).then(function(a){b.put(g,a.data);return a.data},function(a){if(!h)throw mg("tpload",g,a.status,a.statusText);return c.reject(a)})}f.totalPendingRequests=0;return f}]}function Bf(){this.$get=["$rootScope","$browser","$location",function(a,b,d){return{findBindings:function(a,b,d){a=a.getElementsByClassName("ng-binding");var g=[];q(a,function(a){var c=ea.element(a).data("$binding");c&&q(c,function(c){d?(new RegExp("(^|\\s)"+
1500 R({cache:b,transformResponse:k},a))["finally"](function(){f.totalPendingRequests--}).then(function(a){b.put(g,a.data);return a.data},function(a){if(!h)throw mg("tpload",g,a.status,a.statusText);return c.reject(a)})}f.totalPendingRequests=0;return f}]}function Bf(){this.$get=["$rootScope","$browser","$location",function(a,b,d){return{findBindings:function(a,b,d){a=a.getElementsByClassName("ng-binding");var g=[];q(a,function(a){var c=ea.element(a).data("$binding");c&&q(c,function(c){d?(new RegExp("(^|\\s)"+
1501 vd(b)+"(\\s|\\||$)")).test(c)&&g.push(a):-1!=c.indexOf(b)&&g.push(a)})});return g},findModels:function(a,b,d){for(var g=["ng-","data-ng-","ng\\:"],h=0;h<g.length;++h){var k=a.querySelectorAll("["+g[h]+"model"+(d?"=":"*=")+'"'+b+'"]');if(k.length)return k}},getLocation:function(){return d.url()},setLocation:function(b){b!==d.url()&&(d.url(b),a.$digest())},whenStable:function(a){b.notifyWhenNoOutstandingRequests(a)}}}]}function Cf(){this.$get=["$rootScope","$browser","$q","$$q","$exceptionHandler",
1501 vd(b)+"(\\s|\\||$)")).test(c)&&g.push(a):-1!=c.indexOf(b)&&g.push(a)})});return g},findModels:function(a,b,d){for(var g=["ng-","data-ng-","ng\\:"],h=0;h<g.length;++h){var k=a.querySelectorAll("["+g[h]+"model"+(d?"=":"*=")+'"'+b+'"]');if(k.length)return k}},getLocation:function(){return d.url()},setLocation:function(b){b!==d.url()&&(d.url(b),a.$digest())},whenStable:function(a){b.notifyWhenNoOutstandingRequests(a)}}}]}function Cf(){this.$get=["$rootScope","$browser","$q","$$q","$exceptionHandler",
1502 function(a,b,d,c,e){function f(f,k,l){E(f)||(l=k,k=f,f=C);var n=za.call(arguments,3),m=x(l)&&!l,r=(m?c:d).defer(),q=r.promise,s;s=b.defer(function(){try{r.resolve(f.apply(null,n))}catch(b){r.reject(b),e(b)}finally{delete g[q.$$timeoutId]}m||a.$apply()},k);q.$$timeoutId=s;g[s]=r;return q}var g={};f.cancel=function(a){return a&&a.$$timeoutId in g?(g[a.$$timeoutId].reject("canceled"),delete g[a.$$timeoutId],b.defer.cancel(a.$$timeoutId)):!1};return f}]}function ra(a){Ca&&(Y.setAttribute("href",a),a=
1502 function(a,b,d,c,e){function f(f,k,l){E(f)||(l=k,k=f,f=C);var n=za.call(arguments,3),m=x(l)&&!l,r=(m?c:d).defer(),q=r.promise,s;s=b.defer(function(){try{r.resolve(f.apply(null,n))}catch(b){r.reject(b),e(b)}finally{delete g[q.$$timeoutId]}m||a.$apply()},k);q.$$timeoutId=s;g[s]=r;return q}var g={};f.cancel=function(a){return a&&a.$$timeoutId in g?(g[a.$$timeoutId].reject("canceled"),delete g[a.$$timeoutId],b.defer.cancel(a.$$timeoutId)):!1};return f}]}function ra(a){Ca&&(Y.setAttribute("href",a),a=
1503 Y.href);Y.setAttribute("href",a);return{href:Y.href,protocol:Y.protocol?Y.protocol.replace(/:$/,""):"",host:Y.host,search:Y.search?Y.search.replace(/^\?/,""):"",hash:Y.hash?Y.hash.replace(/^#/,""):"",hostname:Y.hostname,port:Y.port,pathname:"/"===Y.pathname.charAt(0)?Y.pathname:"/"+Y.pathname}}function hd(a){a=F(a)?ra(a):a;return a.protocol===xd.protocol&&a.host===xd.host}function Df(){this.$get=da(v)}function yd(a){function b(a){try{return decodeURIComponent(a)}catch(b){return a}}var d=a[0]||{},
1503 Y.href);Y.setAttribute("href",a);return{href:Y.href,protocol:Y.protocol?Y.protocol.replace(/:$/,""):"",host:Y.host,search:Y.search?Y.search.replace(/^\?/,""):"",hash:Y.hash?Y.hash.replace(/^#/,""):"",hostname:Y.hostname,port:Y.port,pathname:"/"===Y.pathname.charAt(0)?Y.pathname:"/"+Y.pathname}}function hd(a){a=F(a)?ra(a):a;return a.protocol===xd.protocol&&a.host===xd.host}function Df(){this.$get=da(v)}function yd(a){function b(a){try{return decodeURIComponent(a)}catch(b){return a}}var d=a[0]||{},
1504 c={},e="";return function(){var a,g,h,k,l;a=d.cookie||"";if(a!==e)for(e=a,a=e.split("; "),c={},h=0;h<a.length;h++)g=a[h],k=g.indexOf("="),0<k&&(l=b(g.substring(0,k)),y(c[l])&&(c[l]=b(g.substring(k+1))));return c}}function Hf(){this.$get=yd}function Jc(a){function b(d,c){if(G(d)){var e={};q(d,function(a,c){e[c]=b(c,a)});return e}return a.factory(d+"Filter",c)}this.register=b;this.$get=["$injector",function(a){return function(b){return a.get(b+"Filter")}}];b("currency",zd);b("date",Ad);b("filter",ng);
1504 c={},e="";return function(){var a,g,h,k,l;a=d.cookie||"";if(a!==e)for(e=a,a=e.split("; "),c={},h=0;h<a.length;h++)g=a[h],k=g.indexOf("="),0<k&&(l=b(g.substring(0,k)),y(c[l])&&(c[l]=b(g.substring(k+1))));return c}}function Hf(){this.$get=yd}function Jc(a){function b(d,c){if(G(d)){var e={};q(d,function(a,c){e[c]=b(c,a)});return e}return a.factory(d+"Filter",c)}this.register=b;this.$get=["$injector",function(a){return function(b){return a.get(b+"Filter")}}];b("currency",zd);b("date",Ad);b("filter",ng);
1505 b("json",og);b("limitTo",pg);b("lowercase",qg);b("number",Bd);b("orderBy",Cd);b("uppercase",rg)}function ng(){return function(a,b,d){if(!ya(a)){if(null==a)return a;throw O("filter")("notarray",a);}var c;switch(ic(b)){case "function":break;case "boolean":case "null":case "number":case "string":c=!0;case "object":b=sg(b,d,c);break;default:return a}return Array.prototype.filter.call(a,b)}}function sg(a,b,d){var c=G(a)&&"$"in a;!0===b?b=pa:E(b)||(b=function(a,b){if(y(a))return!1;if(null===a||null===b)return a===
1505 b("json",og);b("limitTo",pg);b("lowercase",qg);b("number",Bd);b("orderBy",Cd);b("uppercase",rg)}function ng(){return function(a,b,d){if(!ya(a)){if(null==a)return a;throw O("filter")("notarray",a);}var c;switch(ic(b)){case "function":break;case "boolean":case "null":case "number":case "string":c=!0;case "object":b=sg(b,d,c);break;default:return a}return Array.prototype.filter.call(a,b)}}function sg(a,b,d){var c=G(a)&&"$"in a;!0===b?b=pa:E(b)||(b=function(a,b){if(y(a))return!1;if(null===a||null===b)return a===
1506 b;if(G(b)||G(a)&&!rc(a))return!1;a=P(""+a);b=P(""+b);return-1!==a.indexOf(b)});return function(e){return c&&!G(e)?Ka(e,a.$,b,!1):Ka(e,a,b,d)}}function Ka(a,b,d,c,e){var f=ic(a),g=ic(b);if("string"===g&&"!"===b.charAt(0))return!Ka(a,b.substring(1),d,c);if(K(a))return a.some(function(a){return Ka(a,b,d,c)});switch(f){case "object":var h;if(c){for(h in a)if("$"!==h.charAt(0)&&Ka(a[h],b,d,!0))return!0;return e?!1:Ka(a,b,d,!1)}if("object"===g){for(h in b)if(e=b[h],!E(e)&&!y(e)&&(f="$"===h,!Ka(f?a:a[h],
1506 b;if(G(b)||G(a)&&!rc(a))return!1;a=P(""+a);b=P(""+b);return-1!==a.indexOf(b)});return function(e){return c&&!G(e)?Ka(e,a.$,b,!1):Ka(e,a,b,d)}}function Ka(a,b,d,c,e){var f=ic(a),g=ic(b);if("string"===g&&"!"===b.charAt(0))return!Ka(a,b.substring(1),d,c);if(K(a))return a.some(function(a){return Ka(a,b,d,c)});switch(f){case "object":var h;if(c){for(h in a)if("$"!==h.charAt(0)&&Ka(a[h],b,d,!0))return!0;return e?!1:Ka(a,b,d,!1)}if("object"===g){for(h in b)if(e=b[h],!E(e)&&!y(e)&&(f="$"===h,!Ka(f?a:a[h],
1507 e,d,f,f)))return!1;return!0}return d(a,b);case "function":return!1;default:return d(a,b)}}function ic(a){return null===a?"null":typeof a}function zd(a){var b=a.NUMBER_FORMATS;return function(a,c,e){y(c)&&(c=b.CURRENCY_SYM);y(e)&&(e=b.PATTERNS[1].maxFrac);return null==a?a:Dd(a,b.PATTERNS[1],b.GROUP_SEP,b.DECIMAL_SEP,e).replace(/\u00A4/g,c)}}function Bd(a){var b=a.NUMBER_FORMATS;return function(a,c){return null==a?a:Dd(a,b.PATTERNS[0],b.GROUP_SEP,b.DECIMAL_SEP,c)}}function tg(a){var b=0,d,c,e,f,g;-1<
1507 e,d,f,f)))return!1;return!0}return d(a,b);case "function":return!1;default:return d(a,b)}}function ic(a){return null===a?"null":typeof a}function zd(a){var b=a.NUMBER_FORMATS;return function(a,c,e){y(c)&&(c=b.CURRENCY_SYM);y(e)&&(e=b.PATTERNS[1].maxFrac);return null==a?a:Dd(a,b.PATTERNS[1],b.GROUP_SEP,b.DECIMAL_SEP,e).replace(/\u00A4/g,c)}}function Bd(a){var b=a.NUMBER_FORMATS;return function(a,c){return null==a?a:Dd(a,b.PATTERNS[0],b.GROUP_SEP,b.DECIMAL_SEP,c)}}function tg(a){var b=0,d,c,e,f,g;-1<
1508 (c=a.indexOf(Ed))&&(a=a.replace(Ed,""));0<(e=a.search(/e/i))?(0>c&&(c=e),c+=+a.slice(e+1),a=a.substring(0,e)):0>c&&(c=a.length);for(e=0;a.charAt(e)==jc;e++);if(e==(g=a.length))d=[0],c=1;else{for(g--;a.charAt(g)==jc;)g--;c-=e;d=[];for(f=0;e<=g;e++,f++)d[f]=+a.charAt(e)}c>Fd&&(d=d.splice(0,Fd-1),b=c-1,c=1);return{d:d,e:b,i:c}}function ug(a,b,d,c){var e=a.d,f=e.length-a.i;b=y(b)?Math.min(Math.max(d,f),c):+b;d=b+a.i;c=e[d];if(0<d){e.splice(Math.max(a.i,d));for(var g=d;g<e.length;g++)e[g]=0}else for(f=
1508 (c=a.indexOf(Ed))&&(a=a.replace(Ed,""));0<(e=a.search(/e/i))?(0>c&&(c=e),c+=+a.slice(e+1),a=a.substring(0,e)):0>c&&(c=a.length);for(e=0;a.charAt(e)==jc;e++);if(e==(g=a.length))d=[0],c=1;else{for(g--;a.charAt(g)==jc;)g--;c-=e;d=[];for(f=0;e<=g;e++,f++)d[f]=+a.charAt(e)}c>Fd&&(d=d.splice(0,Fd-1),b=c-1,c=1);return{d:d,e:b,i:c}}function ug(a,b,d,c){var e=a.d,f=e.length-a.i;b=y(b)?Math.min(Math.max(d,f),c):+b;d=b+a.i;c=e[d];if(0<d){e.splice(Math.max(a.i,d));for(var g=d;g<e.length;g++)e[g]=0}else for(f=
1509 Math.max(0,f),a.i=1,e.length=Math.max(1,d=b+1),e[0]=0,g=1;g<d;g++)e[g]=0;if(5<=c)if(0>d-1){for(c=0;c>d;c--)e.unshift(0),a.i++;e.unshift(1);a.i++}else e[d-1]++;for(;f<Math.max(0,b);f++)e.push(0);if(b=e.reduceRight(function(a,b,c,d){b+=a;d[c]=b%10;return Math.floor(b/10)},0))e.unshift(b),a.i++}function Dd(a,b,d,c,e){if(!F(a)&&!Q(a)||isNaN(a))return"";var f=!isFinite(a),g=!1,h=Math.abs(a)+"",k="";if(f)k="\u221e";else{g=tg(h);ug(g,e,b.minFrac,b.maxFrac);k=g.d;h=g.i;e=g.e;f=[];for(g=k.reduce(function(a,
1509 Math.max(0,f),a.i=1,e.length=Math.max(1,d=b+1),e[0]=0,g=1;g<d;g++)e[g]=0;if(5<=c)if(0>d-1){for(c=0;c>d;c--)e.unshift(0),a.i++;e.unshift(1);a.i++}else e[d-1]++;for(;f<Math.max(0,b);f++)e.push(0);if(b=e.reduceRight(function(a,b,c,d){b+=a;d[c]=b%10;return Math.floor(b/10)},0))e.unshift(b),a.i++}function Dd(a,b,d,c,e){if(!F(a)&&!Q(a)||isNaN(a))return"";var f=!isFinite(a),g=!1,h=Math.abs(a)+"",k="";if(f)k="\u221e";else{g=tg(h);ug(g,e,b.minFrac,b.maxFrac);k=g.d;h=g.i;e=g.e;f=[];for(g=k.reduce(function(a,
1510 b){return a&&!b},!0);0>h;)k.unshift(0),h++;0<h?f=k.splice(h):(f=k,k=[0]);h=[];for(k.length>=b.lgSize&&h.unshift(k.splice(-b.lgSize).join(""));k.length>b.gSize;)h.unshift(k.splice(-b.gSize).join(""));k.length&&h.unshift(k.join(""));k=h.join(d);f.length&&(k+=c+f.join(""));e&&(k+="e+"+e)}return 0>a&&!g?b.negPre+k+b.negSuf:b.posPre+k+b.posSuf}function Ib(a,b,d,c){var e="";if(0>a||c&&0>=a)c?a=-a+1:(a=-a,e="-");for(a=""+a;a.length<b;)a=jc+a;d&&(a=a.substr(a.length-b));return e+a}function W(a,b,d,c,e){d=
1510 b){return a&&!b},!0);0>h;)k.unshift(0),h++;0<h?f=k.splice(h):(f=k,k=[0]);h=[];for(k.length>=b.lgSize&&h.unshift(k.splice(-b.lgSize).join(""));k.length>b.gSize;)h.unshift(k.splice(-b.gSize).join(""));k.length&&h.unshift(k.join(""));k=h.join(d);f.length&&(k+=c+f.join(""));e&&(k+="e+"+e)}return 0>a&&!g?b.negPre+k+b.negSuf:b.posPre+k+b.posSuf}function Ib(a,b,d,c){var e="";if(0>a||c&&0>=a)c?a=-a+1:(a=-a,e="-");for(a=""+a;a.length<b;)a=jc+a;d&&(a=a.substr(a.length-b));return e+a}function W(a,b,d,c,e){d=
1511 d||0;return function(f){f=f["get"+a]();if(0<d||f>-d)f+=d;0===f&&-12==d&&(f=12);return Ib(f,b,c,e)}}function ib(a,b,d){return function(c,e){var f=c["get"+a](),g=sb((d?"STANDALONE":"")+(b?"SHORT":"")+a);return e[g][f]}}function Gd(a){var b=(new Date(a,0,1)).getDay();return new Date(a,0,(4>=b?5:12)-b)}function Hd(a){return function(b){var d=Gd(b.getFullYear());b=+new Date(b.getFullYear(),b.getMonth(),b.getDate()+(4-b.getDay()))-+d;b=1+Math.round(b/6048E5);return Ib(b,a)}}function kc(a,b){return 0>=a.getFullYear()?
1511 d||0;return function(f){f=f["get"+a]();if(0<d||f>-d)f+=d;0===f&&-12==d&&(f=12);return Ib(f,b,c,e)}}function ib(a,b,d){return function(c,e){var f=c["get"+a](),g=sb((d?"STANDALONE":"")+(b?"SHORT":"")+a);return e[g][f]}}function Gd(a){var b=(new Date(a,0,1)).getDay();return new Date(a,0,(4>=b?5:12)-b)}function Hd(a){return function(b){var d=Gd(b.getFullYear());b=+new Date(b.getFullYear(),b.getMonth(),b.getDate()+(4-b.getDay()))-+d;b=1+Math.round(b/6048E5);return Ib(b,a)}}function kc(a,b){return 0>=a.getFullYear()?
1512 b.ERAS[0]:b.ERAS[1]}function Ad(a){function b(a){var b;if(b=a.match(d)){a=new Date(0);var f=0,g=0,h=b[8]?a.setUTCFullYear:a.setFullYear,k=b[8]?a.setUTCHours:a.setHours;b[9]&&(f=X(b[9]+b[10]),g=X(b[9]+b[11]));h.call(a,X(b[1]),X(b[2])-1,X(b[3]));f=X(b[4]||0)-f;g=X(b[5]||0)-g;h=X(b[6]||0);b=Math.round(1E3*parseFloat("0."+(b[7]||0)));k.call(a,f,g,h,b)}return a}var d=/^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/;return function(c,d,f){var g="",h=
1512 b.ERAS[0]:b.ERAS[1]}function Ad(a){function b(a){var b;if(b=a.match(d)){a=new Date(0);var f=0,g=0,h=b[8]?a.setUTCFullYear:a.setFullYear,k=b[8]?a.setUTCHours:a.setHours;b[9]&&(f=X(b[9]+b[10]),g=X(b[9]+b[11]));h.call(a,X(b[1]),X(b[2])-1,X(b[3]));f=X(b[4]||0)-f;g=X(b[5]||0)-g;h=X(b[6]||0);b=Math.round(1E3*parseFloat("0."+(b[7]||0)));k.call(a,f,g,h,b)}return a}var d=/^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/;return function(c,d,f){var g="",h=
1513 [],k,l;d=d||"mediumDate";d=a.DATETIME_FORMATS[d]||d;F(c)&&(c=vg.test(c)?X(c):b(c));Q(c)&&(c=new Date(c));if(!fa(c)||!isFinite(c.getTime()))return c;for(;d;)(l=wg.exec(d))?(h=$a(h,l,1),d=h.pop()):(h.push(d),d=null);var n=c.getTimezoneOffset();f&&(n=vc(f,n),c=Qb(c,f,!0));q(h,function(b){k=xg[b];g+=k?k(c,a.DATETIME_FORMATS,n):"''"===b?"'":b.replace(/(^'|'$)/g,"").replace(/''/g,"'")});return g}}function og(){return function(a,b){y(b)&&(b=2);return ab(a,b)}}function pg(){return function(a,b,d){b=Infinity===
1513 [],k,l;d=d||"mediumDate";d=a.DATETIME_FORMATS[d]||d;F(c)&&(c=vg.test(c)?X(c):b(c));Q(c)&&(c=new Date(c));if(!fa(c)||!isFinite(c.getTime()))return c;for(;d;)(l=wg.exec(d))?(h=$a(h,l,1),d=h.pop()):(h.push(d),d=null);var n=c.getTimezoneOffset();f&&(n=vc(f,n),c=Qb(c,f,!0));q(h,function(b){k=xg[b];g+=k?k(c,a.DATETIME_FORMATS,n):"''"===b?"'":b.replace(/(^'|'$)/g,"").replace(/''/g,"'")});return g}}function og(){return function(a,b){y(b)&&(b=2);return ab(a,b)}}function pg(){return function(a,b,d){b=Infinity===
1514 Math.abs(Number(b))?Number(b):X(b);if(isNaN(b))return a;Q(a)&&(a=a.toString());if(!K(a)&&!F(a))return a;d=!d||isNaN(d)?0:X(d);d=0>d?Math.max(0,a.length+d):d;return 0<=b?a.slice(d,d+b):0===d?a.slice(b,a.length):a.slice(Math.max(0,d+b),d)}}function Cd(a){function b(b,d){d=d?-1:1;return b.map(function(b){var c=1,h=Xa;if(E(b))h=b;else if(F(b)){if("+"==b.charAt(0)||"-"==b.charAt(0))c="-"==b.charAt(0)?-1:1,b=b.substring(1);if(""!==b&&(h=a(b),h.constant))var k=h(),h=function(a){return a[k]}}return{get:h,
1514 Math.abs(Number(b))?Number(b):X(b);if(isNaN(b))return a;Q(a)&&(a=a.toString());if(!K(a)&&!F(a))return a;d=!d||isNaN(d)?0:X(d);d=0>d?Math.max(0,a.length+d):d;return 0<=b?a.slice(d,d+b):0===d?a.slice(b,a.length):a.slice(Math.max(0,d+b),d)}}function Cd(a){function b(b,d){d=d?-1:1;return b.map(function(b){var c=1,h=Xa;if(E(b))h=b;else if(F(b)){if("+"==b.charAt(0)||"-"==b.charAt(0))c="-"==b.charAt(0)?-1:1,b=b.substring(1);if(""!==b&&(h=a(b),h.constant))var k=h(),h=function(a){return a[k]}}return{get:h,
1515 descending:c*d}})}function d(a){switch(typeof a){case "number":case "boolean":case "string":return!0;default:return!1}}return function(a,e,f){if(null==a)return a;if(!ya(a))throw O("orderBy")("notarray",a);K(e)||(e=[e]);0===e.length&&(e=["+"]);var g=b(e,f);g.push({get:function(){return{}},descending:f?-1:1});a=Array.prototype.map.call(a,function(a,b){return{value:a,predicateValues:g.map(function(c){var e=c.get(a);c=typeof e;if(null===e)c="string",e="null";else if("string"===c)e=e.toLowerCase();else if("object"===
1515 descending:c*d}})}function d(a){switch(typeof a){case "number":case "boolean":case "string":return!0;default:return!1}}return function(a,e,f){if(null==a)return a;if(!ya(a))throw O("orderBy")("notarray",a);K(e)||(e=[e]);0===e.length&&(e=["+"]);var g=b(e,f);g.push({get:function(){return{}},descending:f?-1:1});a=Array.prototype.map.call(a,function(a,b){return{value:a,predicateValues:g.map(function(c){var e=c.get(a);c=typeof e;if(null===e)c="string",e="null";else if("string"===c)e=e.toLowerCase();else if("object"===
1516 c)a:{if("function"===typeof e.valueOf&&(e=e.valueOf(),d(e)))break a;if(rc(e)&&(e=e.toString(),d(e)))break a;e=b}return{value:e,type:c}})}});a.sort(function(a,b){for(var c=0,d=0,e=g.length;d<e;++d){var c=a.predicateValues[d],f=b.predicateValues[d],q=0;c.type===f.type?c.value!==f.value&&(q=c.value<f.value?-1:1):q=c.type<f.type?-1:1;if(c=q*g[d].descending)break}return c});return a=a.map(function(a){return a.value})}}function La(a){E(a)&&(a={link:a});a.restrict=a.restrict||"AC";return da(a)}function Id(a,
1516 c)a:{if("function"===typeof e.valueOf&&(e=e.valueOf(),d(e)))break a;if(rc(e)&&(e=e.toString(),d(e)))break a;e=b}return{value:e,type:c}})}});a.sort(function(a,b){for(var c=0,d=0,e=g.length;d<e;++d){var c=a.predicateValues[d],f=b.predicateValues[d],q=0;c.type===f.type?c.value!==f.value&&(q=c.value<f.value?-1:1):q=c.type<f.type?-1:1;if(c=q*g[d].descending)break}return c});return a=a.map(function(a){return a.value})}}function La(a){E(a)&&(a={link:a});a.restrict=a.restrict||"AC";return da(a)}function Id(a,
1517 b,d,c,e){var f=this,g=[];f.$error={};f.$$success={};f.$pending=void 0;f.$name=e(b.name||b.ngForm||"")(d);f.$dirty=!1;f.$pristine=!0;f.$valid=!0;f.$invalid=!1;f.$submitted=!1;f.$$parentForm=Jb;f.$rollbackViewValue=function(){q(g,function(a){a.$rollbackViewValue()})};f.$commitViewValue=function(){q(g,function(a){a.$commitViewValue()})};f.$addControl=function(a){Qa(a.$name,"input");g.push(a);a.$name&&(f[a.$name]=a);a.$$parentForm=f};f.$$renameControl=function(a,b){var c=a.$name;f[c]===a&&delete f[c];
1517 b,d,c,e){var f=this,g=[];f.$error={};f.$$success={};f.$pending=void 0;f.$name=e(b.name||b.ngForm||"")(d);f.$dirty=!1;f.$pristine=!0;f.$valid=!0;f.$invalid=!1;f.$submitted=!1;f.$$parentForm=Jb;f.$rollbackViewValue=function(){q(g,function(a){a.$rollbackViewValue()})};f.$commitViewValue=function(){q(g,function(a){a.$commitViewValue()})};f.$addControl=function(a){Qa(a.$name,"input");g.push(a);a.$name&&(f[a.$name]=a);a.$$parentForm=f};f.$$renameControl=function(a,b){var c=a.$name;f[c]===a&&delete f[c];
1518 f[b]=a;a.$name=b};f.$removeControl=function(a){a.$name&&f[a.$name]===a&&delete f[a.$name];q(f.$pending,function(b,c){f.$setValidity(c,null,a)});q(f.$error,function(b,c){f.$setValidity(c,null,a)});q(f.$$success,function(b,c){f.$setValidity(c,null,a)});Za(g,a);a.$$parentForm=Jb};Jd({ctrl:this,$element:a,set:function(a,b,c){var d=a[b];d?-1===d.indexOf(c)&&d.push(c):a[b]=[c]},unset:function(a,b,c){var d=a[b];d&&(Za(d,c),0===d.length&&delete a[b])},$animate:c});f.$setDirty=function(){c.removeClass(a,Ua);
1518 f[b]=a;a.$name=b};f.$removeControl=function(a){a.$name&&f[a.$name]===a&&delete f[a.$name];q(f.$pending,function(b,c){f.$setValidity(c,null,a)});q(f.$error,function(b,c){f.$setValidity(c,null,a)});q(f.$$success,function(b,c){f.$setValidity(c,null,a)});Za(g,a);a.$$parentForm=Jb};Jd({ctrl:this,$element:a,set:function(a,b,c){var d=a[b];d?-1===d.indexOf(c)&&d.push(c):a[b]=[c]},unset:function(a,b,c){var d=a[b];d&&(Za(d,c),0===d.length&&delete a[b])},$animate:c});f.$setDirty=function(){c.removeClass(a,Ua);
1519 c.addClass(a,Kb);f.$dirty=!0;f.$pristine=!1;f.$$parentForm.$setDirty()};f.$setPristine=function(){c.setClass(a,Ua,Kb+" ng-submitted");f.$dirty=!1;f.$pristine=!0;f.$submitted=!1;q(g,function(a){a.$setPristine()})};f.$setUntouched=function(){q(g,function(a){a.$setUntouched()})};f.$setSubmitted=function(){c.addClass(a,"ng-submitted");f.$submitted=!0;f.$$parentForm.$setSubmitted()}}function lc(a){a.$formatters.push(function(b){return a.$isEmpty(b)?b:b.toString()})}function jb(a,b,d,c,e,f){var g=P(b[0].type);
1519 c.addClass(a,Kb);f.$dirty=!0;f.$pristine=!1;f.$$parentForm.$setDirty()};f.$setPristine=function(){c.setClass(a,Ua,Kb+" ng-submitted");f.$dirty=!1;f.$pristine=!0;f.$submitted=!1;q(g,function(a){a.$setPristine()})};f.$setUntouched=function(){q(g,function(a){a.$setUntouched()})};f.$setSubmitted=function(){c.addClass(a,"ng-submitted");f.$submitted=!0;f.$$parentForm.$setSubmitted()}}function lc(a){a.$formatters.push(function(b){return a.$isEmpty(b)?b:b.toString()})}function jb(a,b,d,c,e,f){var g=P(b[0].type);
1520 if(!e.android){var h=!1;b.on("compositionstart",function(){h=!0});b.on("compositionend",function(){h=!1;l()})}var k,l=function(a){k&&(f.defer.cancel(k),k=null);if(!h){var e=b.val();a=a&&a.type;"password"===g||d.ngTrim&&"false"===d.ngTrim||(e=V(e));(c.$viewValue!==e||""===e&&c.$$hasNativeValidators)&&c.$setViewValue(e,a)}};if(e.hasEvent("input"))b.on("input",l);else{var n=function(a,b,c){k||(k=f.defer(function(){k=null;b&&b.value===c||l(a)}))};b.on("keydown",function(a){var b=a.keyCode;91===b||15<
1520 if(!e.android){var h=!1;b.on("compositionstart",function(){h=!0});b.on("compositionend",function(){h=!1;l()})}var k,l=function(a){k&&(f.defer.cancel(k),k=null);if(!h){var e=b.val();a=a&&a.type;"password"===g||d.ngTrim&&"false"===d.ngTrim||(e=V(e));(c.$viewValue!==e||""===e&&c.$$hasNativeValidators)&&c.$setViewValue(e,a)}};if(e.hasEvent("input"))b.on("input",l);else{var n=function(a,b,c){k||(k=f.defer(function(){k=null;b&&b.value===c||l(a)}))};b.on("keydown",function(a){var b=a.keyCode;91===b||15<
1521 b&&19>b||37<=b&&40>=b||n(a,this,this.value)});if(e.hasEvent("paste"))b.on("paste cut",n)}b.on("change",l);if(Kd[g]&&c.$$hasNativeValidators&&g===d.type)b.on("keydown wheel mousedown",function(a){if(!k){var b=this.validity,c=b.badInput,d=b.typeMismatch;k=f.defer(function(){k=null;b.badInput===c&&b.typeMismatch===d||l(a)})}});c.$render=function(){var a=c.$isEmpty(c.$viewValue)?"":c.$viewValue;b.val()!==a&&b.val(a)}}function Lb(a,b){return function(d,c){var e,f;if(fa(d))return d;if(F(d)){'"'==d.charAt(0)&&
1521 b&&19>b||37<=b&&40>=b||n(a,this,this.value)});if(e.hasEvent("paste"))b.on("paste cut",n)}b.on("change",l);if(Kd[g]&&c.$$hasNativeValidators&&g===d.type)b.on("keydown wheel mousedown",function(a){if(!k){var b=this.validity,c=b.badInput,d=b.typeMismatch;k=f.defer(function(){k=null;b.badInput===c&&b.typeMismatch===d||l(a)})}});c.$render=function(){var a=c.$isEmpty(c.$viewValue)?"":c.$viewValue;b.val()!==a&&b.val(a)}}function Lb(a,b){return function(d,c){var e,f;if(fa(d))return d;if(F(d)){'"'==d.charAt(0)&&
1522 '"'==d.charAt(d.length-1)&&(d=d.substring(1,d.length-1));if(yg.test(d))return new Date(d);a.lastIndex=0;if(e=a.exec(d))return e.shift(),f=c?{yyyy:c.getFullYear(),MM:c.getMonth()+1,dd:c.getDate(),HH:c.getHours(),mm:c.getMinutes(),ss:c.getSeconds(),sss:c.getMilliseconds()/1E3}:{yyyy:1970,MM:1,dd:1,HH:0,mm:0,ss:0,sss:0},q(e,function(a,c){c<b.length&&(f[b[c]]=+a)}),new Date(f.yyyy,f.MM-1,f.dd,f.HH,f.mm,f.ss||0,1E3*f.sss||0)}return NaN}}function kb(a,b,d,c){return function(e,f,g,h,k,l,n){function m(a){return a&&
1522 '"'==d.charAt(d.length-1)&&(d=d.substring(1,d.length-1));if(yg.test(d))return new Date(d);a.lastIndex=0;if(e=a.exec(d))return e.shift(),f=c?{yyyy:c.getFullYear(),MM:c.getMonth()+1,dd:c.getDate(),HH:c.getHours(),mm:c.getMinutes(),ss:c.getSeconds(),sss:c.getMilliseconds()/1E3}:{yyyy:1970,MM:1,dd:1,HH:0,mm:0,ss:0,sss:0},q(e,function(a,c){c<b.length&&(f[b[c]]=+a)}),new Date(f.yyyy,f.MM-1,f.dd,f.HH,f.mm,f.ss||0,1E3*f.sss||0)}return NaN}}function kb(a,b,d,c){return function(e,f,g,h,k,l,n){function m(a){return a&&
1523 !(a.getTime&&a.getTime()!==a.getTime())}function r(a){return x(a)&&!fa(a)?d(a)||void 0:a}Ld(e,f,g,h);jb(e,f,g,h,k,l);var q=h&&h.$options&&h.$options.timezone,s;h.$$parserName=a;h.$parsers.push(function(a){if(h.$isEmpty(a))return null;if(b.test(a))return a=d(a,s),q&&(a=Qb(a,q)),a});h.$formatters.push(function(a){if(a&&!fa(a))throw lb("datefmt",a);if(m(a))return(s=a)&&q&&(s=Qb(s,q,!0)),n("date")(a,c,q);s=null;return""});if(x(g.min)||g.ngMin){var w;h.$validators.min=function(a){return!m(a)||y(w)||d(a)>=
1523 !(a.getTime&&a.getTime()!==a.getTime())}function r(a){return x(a)&&!fa(a)?d(a)||void 0:a}Ld(e,f,g,h);jb(e,f,g,h,k,l);var q=h&&h.$options&&h.$options.timezone,s;h.$$parserName=a;h.$parsers.push(function(a){if(h.$isEmpty(a))return null;if(b.test(a))return a=d(a,s),q&&(a=Qb(a,q)),a});h.$formatters.push(function(a){if(a&&!fa(a))throw lb("datefmt",a);if(m(a))return(s=a)&&q&&(s=Qb(s,q,!0)),n("date")(a,c,q);s=null;return""});if(x(g.min)||g.ngMin){var w;h.$validators.min=function(a){return!m(a)||y(w)||d(a)>=
1524 w};g.$observe("min",function(a){w=r(a);h.$validate()})}if(x(g.max)||g.ngMax){var p;h.$validators.max=function(a){return!m(a)||y(p)||d(a)<=p};g.$observe("max",function(a){p=r(a);h.$validate()})}}}function Ld(a,b,d,c){(c.$$hasNativeValidators=G(b[0].validity))&&c.$parsers.push(function(a){var c=b.prop("validity")||{};return c.badInput||c.typeMismatch?void 0:a})}function Md(a,b,d,c,e){if(x(c)){a=a(c);if(!a.constant)throw lb("constexpr",d,c);return a(b)}return e}function mc(a,b){a="ngClass"+a;return["$animate",
1524 w};g.$observe("min",function(a){w=r(a);h.$validate()})}if(x(g.max)||g.ngMax){var p;h.$validators.max=function(a){return!m(a)||y(p)||d(a)<=p};g.$observe("max",function(a){p=r(a);h.$validate()})}}}function Ld(a,b,d,c){(c.$$hasNativeValidators=G(b[0].validity))&&c.$parsers.push(function(a){var c=b.prop("validity")||{};return c.badInput||c.typeMismatch?void 0:a})}function Md(a,b,d,c,e){if(x(c)){a=a(c);if(!a.constant)throw lb("constexpr",d,c);return a(b)}return e}function mc(a,b){a="ngClass"+a;return["$animate",
1525 function(d){function c(a,b){var c=[],d=0;a:for(;d<a.length;d++){for(var e=a[d],n=0;n<b.length;n++)if(e==b[n])continue a;c.push(e)}return c}function e(a){var b=[];return K(a)?(q(a,function(a){b=b.concat(e(a))}),b):F(a)?a.split(" "):G(a)?(q(a,function(a,c){a&&(b=b.concat(c.split(" ")))}),b):a}return{restrict:"AC",link:function(f,g,h){function k(a){a=l(a,1);h.$addClass(a)}function l(a,b){var c=g.data("$classCounts")||T(),d=[];q(a,function(a){if(0<b||c[a])c[a]=(c[a]||0)+b,c[a]===+(0<b)&&d.push(a)});g.data("$classCounts",
1525 function(d){function c(a,b){var c=[],d=0;a:for(;d<a.length;d++){for(var e=a[d],n=0;n<b.length;n++)if(e==b[n])continue a;c.push(e)}return c}function e(a){var b=[];return K(a)?(q(a,function(a){b=b.concat(e(a))}),b):F(a)?a.split(" "):G(a)?(q(a,function(a,c){a&&(b=b.concat(c.split(" ")))}),b):a}return{restrict:"AC",link:function(f,g,h){function k(a){a=l(a,1);h.$addClass(a)}function l(a,b){var c=g.data("$classCounts")||T(),d=[];q(a,function(a){if(0<b||c[a])c[a]=(c[a]||0)+b,c[a]===+(0<b)&&d.push(a)});g.data("$classCounts",
1526 c);return d.join(" ")}function n(a,b){var e=c(b,a),f=c(a,b),e=l(e,1),f=l(f,-1);e&&e.length&&d.addClass(g,e);f&&f.length&&d.removeClass(g,f)}function m(a){if(!0===b||f.$index%2===b){var c=e(a||[]);if(!r)k(c);else if(!pa(a,r)){var d=e(r);n(d,c)}}r=K(a)?a.map(function(a){return ha(a)}):ha(a)}var r;f.$watch(h[a],m,!0);h.$observe("class",function(b){m(f.$eval(h[a]))});"ngClass"!==a&&f.$watch("$index",function(c,d){var g=c&1;if(g!==(d&1)){var m=e(f.$eval(h[a]));g===b?k(m):(g=l(m,-1),h.$removeClass(g))}})}}}]}
1526 c);return d.join(" ")}function n(a,b){var e=c(b,a),f=c(a,b),e=l(e,1),f=l(f,-1);e&&e.length&&d.addClass(g,e);f&&f.length&&d.removeClass(g,f)}function m(a){if(!0===b||f.$index%2===b){var c=e(a||[]);if(!r)k(c);else if(!pa(a,r)){var d=e(r);n(d,c)}}r=K(a)?a.map(function(a){return ha(a)}):ha(a)}var r;f.$watch(h[a],m,!0);h.$observe("class",function(b){m(f.$eval(h[a]))});"ngClass"!==a&&f.$watch("$index",function(c,d){var g=c&1;if(g!==(d&1)){var m=e(f.$eval(h[a]));g===b?k(m):(g=l(m,-1),h.$removeClass(g))}})}}}]}
1527 function Jd(a){function b(a,b){b&&!f[a]?(k.addClass(e,a),f[a]=!0):!b&&f[a]&&(k.removeClass(e,a),f[a]=!1)}function d(a,c){a=a?"-"+zc(a,"-"):"";b(mb+a,!0===c);b(Nd+a,!1===c)}var c=a.ctrl,e=a.$element,f={},g=a.set,h=a.unset,k=a.$animate;f[Nd]=!(f[mb]=e.hasClass(mb));c.$setValidity=function(a,e,f){y(e)?(c.$pending||(c.$pending={}),g(c.$pending,a,f)):(c.$pending&&h(c.$pending,a,f),Od(c.$pending)&&(c.$pending=void 0));Da(e)?e?(h(c.$error,a,f),g(c.$$success,a,f)):(g(c.$error,a,f),h(c.$$success,a,f)):(h(c.$error,
1527 function Jd(a){function b(a,b){b&&!f[a]?(k.addClass(e,a),f[a]=!0):!b&&f[a]&&(k.removeClass(e,a),f[a]=!1)}function d(a,c){a=a?"-"+zc(a,"-"):"";b(mb+a,!0===c);b(Nd+a,!1===c)}var c=a.ctrl,e=a.$element,f={},g=a.set,h=a.unset,k=a.$animate;f[Nd]=!(f[mb]=e.hasClass(mb));c.$setValidity=function(a,e,f){y(e)?(c.$pending||(c.$pending={}),g(c.$pending,a,f)):(c.$pending&&h(c.$pending,a,f),Od(c.$pending)&&(c.$pending=void 0));Da(e)?e?(h(c.$error,a,f),g(c.$$success,a,f)):(g(c.$error,a,f),h(c.$$success,a,f)):(h(c.$error,
1528 a,f),h(c.$$success,a,f));c.$pending?(b(Pd,!0),c.$valid=c.$invalid=void 0,d("",null)):(b(Pd,!1),c.$valid=Od(c.$error),c.$invalid=!c.$valid,d("",c.$valid));e=c.$pending&&c.$pending[a]?void 0:c.$error[a]?!1:c.$$success[a]?!0:null;d(a,e);c.$$parentForm.$setValidity(a,e,c)}}function Od(a){if(a)for(var b in a)if(a.hasOwnProperty(b))return!1;return!0}var zg=/^\/(.+)\/([a-z]*)$/,ua=Object.prototype.hasOwnProperty,P=function(a){return F(a)?a.toLowerCase():a},sb=function(a){return F(a)?a.toUpperCase():a},Ca,
1528 a,f),h(c.$$success,a,f));c.$pending?(b(Pd,!0),c.$valid=c.$invalid=void 0,d("",null)):(b(Pd,!1),c.$valid=Od(c.$error),c.$invalid=!c.$valid,d("",c.$valid));e=c.$pending&&c.$pending[a]?void 0:c.$error[a]?!1:c.$$success[a]?!0:null;d(a,e);c.$$parentForm.$setValidity(a,e,c)}}function Od(a){if(a)for(var b in a)if(a.hasOwnProperty(b))return!1;return!0}var zg=/^\/(.+)\/([a-z]*)$/,ua=Object.prototype.hasOwnProperty,P=function(a){return F(a)?a.toLowerCase():a},sb=function(a){return F(a)?a.toUpperCase():a},Ca,
1529 B,Z,za=[].slice,Zf=[].splice,Ag=[].push,ma=Object.prototype.toString,sc=Object.getPrototypeOf,Aa=O("ng"),ea=v.angular||(v.angular={}),Sb,nb=0;Ca=v.document.documentMode;C.$inject=[];Xa.$inject=[];var K=Array.isArray,$d=/^\[object (?:Uint8|Uint8Clamped|Uint16|Uint32|Int8|Int16|Int32|Float32|Float64)Array\]$/,V=function(a){return F(a)?a.trim():a},vd=function(a){return a.replace(/([-()\[\]{}+?*.$\^|,:#<!\\])/g,"\\$1").replace(/\x08/g,"\\x08")},Ea=function(){if(!x(Ea.rules)){var a=v.document.querySelector("[ng-csp]")||
1529 B,Z,za=[].slice,Zf=[].splice,Ag=[].push,ma=Object.prototype.toString,sc=Object.getPrototypeOf,Aa=O("ng"),ea=v.angular||(v.angular={}),Sb,nb=0;Ca=v.document.documentMode;C.$inject=[];Xa.$inject=[];var K=Array.isArray,$d=/^\[object (?:Uint8|Uint8Clamped|Uint16|Uint32|Int8|Int16|Int32|Float32|Float64)Array\]$/,V=function(a){return F(a)?a.trim():a},vd=function(a){return a.replace(/([-()\[\]{}+?*.$\^|,:#<!\\])/g,"\\$1").replace(/\x08/g,"\\x08")},Ea=function(){if(!x(Ea.rules)){var a=v.document.querySelector("[ng-csp]")||
1530 v.document.querySelector("[data-ng-csp]");if(a){var b=a.getAttribute("ng-csp")||a.getAttribute("data-ng-csp");Ea.rules={noUnsafeEval:!b||-1!==b.indexOf("no-unsafe-eval"),noInlineStyle:!b||-1!==b.indexOf("no-inline-style")}}else{a=Ea;try{new Function(""),b=!1}catch(d){b=!0}a.rules={noUnsafeEval:b,noInlineStyle:!1}}}return Ea.rules},pb=function(){if(x(pb.name_))return pb.name_;var a,b,d=Na.length,c,e;for(b=0;b<d;++b)if(c=Na[b],a=v.document.querySelector("["+c.replace(":","\\:")+"jq]")){e=a.getAttribute(c+
1530 v.document.querySelector("[data-ng-csp]");if(a){var b=a.getAttribute("ng-csp")||a.getAttribute("data-ng-csp");Ea.rules={noUnsafeEval:!b||-1!==b.indexOf("no-unsafe-eval"),noInlineStyle:!b||-1!==b.indexOf("no-inline-style")}}else{a=Ea;try{new Function(""),b=!1}catch(d){b=!0}a.rules={noUnsafeEval:b,noInlineStyle:!1}}}return Ea.rules},pb=function(){if(x(pb.name_))return pb.name_;var a,b,d=Na.length,c,e;for(b=0;b<d;++b)if(c=Na[b],a=v.document.querySelector("["+c.replace(":","\\:")+"jq]")){e=a.getAttribute(c+
1531 "jq");break}return pb.name_=e},ce=/:/g,Na=["ng-","data-ng-","ng:","x-ng-"],he=/[A-Z]/g,Ac=!1,Ma=3,le={full:"1.5.5",major:1,minor:5,dot:5,codeName:"material-conspiration"};U.expando="ng339";var eb=U.cache={},Nf=1;U._data=function(a){return this.cache[a[this.expando]]||{}};var If=/([\:\-\_]+(.))/g,Jf=/^moz([A-Z])/,wb={mouseleave:"mouseout",mouseenter:"mouseover"},Ub=O("jqLite"),Mf=/^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,Tb=/<|&#?\w+;/,Kf=/<([\w:-]+)/,Lf=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,
1531 "jq");break}return pb.name_=e},ce=/:/g,Na=["ng-","data-ng-","ng:","x-ng-"],he=/[A-Z]/g,Ac=!1,Ma=3,le={full:"1.5.5",major:1,minor:5,dot:5,codeName:"material-conspiration"};U.expando="ng339";var eb=U.cache={},Nf=1;U._data=function(a){return this.cache[a[this.expando]]||{}};var If=/([\:\-\_]+(.))/g,Jf=/^moz([A-Z])/,wb={mouseleave:"mouseout",mouseenter:"mouseover"},Ub=O("jqLite"),Mf=/^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,Tb=/<|&#?\w+;/,Kf=/<([\w:-]+)/,Lf=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,
1532 ia={option:[1,'<select multiple="multiple">',"</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};ia.optgroup=ia.option;ia.tbody=ia.tfoot=ia.colgroup=ia.caption=ia.thead;ia.th=ia.td;var Sf=v.Node.prototype.contains||function(a){return!!(this.compareDocumentPosition(a)&16)},Oa=U.prototype={ready:function(a){function b(){d||(d=!0,a())}var d=!1;"complete"===
1532 ia={option:[1,'<select multiple="multiple">',"</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};ia.optgroup=ia.option;ia.tbody=ia.tfoot=ia.colgroup=ia.caption=ia.thead;ia.th=ia.td;var Sf=v.Node.prototype.contains||function(a){return!!(this.compareDocumentPosition(a)&16)},Oa=U.prototype={ready:function(a){function b(){d||(d=!0,a())}var d=!1;"complete"===
1533 v.document.readyState?v.setTimeout(b):(this.on("DOMContentLoaded",b),U(v).on("load",b))},toString:function(){var a=[];q(this,function(b){a.push(""+b)});return"["+a.join(", ")+"]"},eq:function(a){return 0<=a?B(this[a]):B(this[this.length+a])},length:0,push:Ag,sort:[].sort,splice:[].splice},Cb={};q("multiple selected checked disabled readOnly required open".split(" "),function(a){Cb[P(a)]=a});var Sc={};q("input select option textarea button form details".split(" "),function(a){Sc[a]=!0});var ad={ngMinlength:"minlength",
1533 v.document.readyState?v.setTimeout(b):(this.on("DOMContentLoaded",b),U(v).on("load",b))},toString:function(){var a=[];q(this,function(b){a.push(""+b)});return"["+a.join(", ")+"]"},eq:function(a){return 0<=a?B(this[a]):B(this[this.length+a])},length:0,push:Ag,sort:[].sort,splice:[].splice},Cb={};q("multiple selected checked disabled readOnly required open".split(" "),function(a){Cb[P(a)]=a});var Sc={};q("input select option textarea button form details".split(" "),function(a){Sc[a]=!0});var ad={ngMinlength:"minlength",
1534 ngMaxlength:"maxlength",ngMin:"min",ngMax:"max",ngPattern:"pattern"};q({data:Wb,removeData:db,hasData:function(a){for(var b in eb[a.ng339])return!0;return!1},cleanData:function(a){for(var b=0,d=a.length;b<d;b++)db(a[b])}},function(a,b){U[b]=a});q({data:Wb,inheritedData:Ab,scope:function(a){return B.data(a,"$scope")||Ab(a.parentNode||a,["$isolateScope","$scope"])},isolateScope:function(a){return B.data(a,"$isolateScope")||B.data(a,"$isolateScopeNoTemplate")},controller:Pc,injector:function(a){return Ab(a,
1534 ngMaxlength:"maxlength",ngMin:"min",ngMax:"max",ngPattern:"pattern"};q({data:Wb,removeData:db,hasData:function(a){for(var b in eb[a.ng339])return!0;return!1},cleanData:function(a){for(var b=0,d=a.length;b<d;b++)db(a[b])}},function(a,b){U[b]=a});q({data:Wb,inheritedData:Ab,scope:function(a){return B.data(a,"$scope")||Ab(a.parentNode||a,["$isolateScope","$scope"])},isolateScope:function(a){return B.data(a,"$isolateScope")||B.data(a,"$isolateScopeNoTemplate")},controller:Pc,injector:function(a){return Ab(a,
1535 "$injector")},removeAttr:function(a,b){a.removeAttribute(b)},hasClass:xb,css:function(a,b,d){b=cb(b);if(x(d))a.style[b]=d;else return a.style[b]},attr:function(a,b,d){var c=a.nodeType;if(c!==Ma&&2!==c&&8!==c)if(c=P(b),Cb[c])if(x(d))d?(a[b]=!0,a.setAttribute(b,c)):(a[b]=!1,a.removeAttribute(c));else return a[b]||(a.attributes.getNamedItem(b)||C).specified?c:void 0;else if(x(d))a.setAttribute(b,d);else if(a.getAttribute)return a=a.getAttribute(b,2),null===a?void 0:a},prop:function(a,b,d){if(x(d))a[b]=
1535 "$injector")},removeAttr:function(a,b){a.removeAttribute(b)},hasClass:xb,css:function(a,b,d){b=cb(b);if(x(d))a.style[b]=d;else return a.style[b]},attr:function(a,b,d){var c=a.nodeType;if(c!==Ma&&2!==c&&8!==c)if(c=P(b),Cb[c])if(x(d))d?(a[b]=!0,a.setAttribute(b,c)):(a[b]=!1,a.removeAttribute(c));else return a[b]||(a.attributes.getNamedItem(b)||C).specified?c:void 0;else if(x(d))a.setAttribute(b,d);else if(a.getAttribute)return a=a.getAttribute(b,2),null===a?void 0:a},prop:function(a,b,d){if(x(d))a[b]=
1536 d;else return a[b]},text:function(){function a(a,d){if(y(d)){var c=a.nodeType;return 1===c||c===Ma?a.textContent:""}a.textContent=d}a.$dv="";return a}(),val:function(a,b){if(y(b)){if(a.multiple&&"select"===va(a)){var d=[];q(a.options,function(a){a.selected&&d.push(a.value||a.text)});return 0===d.length?null:d}return a.value}a.value=b},html:function(a,b){if(y(b))return a.innerHTML;ub(a,!0);a.innerHTML=b},empty:Qc},function(a,b){U.prototype[b]=function(b,c){var e,f,g=this.length;if(a!==Qc&&y(2==a.length&&
1536 d;else return a[b]},text:function(){function a(a,d){if(y(d)){var c=a.nodeType;return 1===c||c===Ma?a.textContent:""}a.textContent=d}a.$dv="";return a}(),val:function(a,b){if(y(b)){if(a.multiple&&"select"===va(a)){var d=[];q(a.options,function(a){a.selected&&d.push(a.value||a.text)});return 0===d.length?null:d}return a.value}a.value=b},html:function(a,b){if(y(b))return a.innerHTML;ub(a,!0);a.innerHTML=b},empty:Qc},function(a,b){U.prototype[b]=function(b,c){var e,f,g=this.length;if(a!==Qc&&y(2==a.length&&
1537 a!==xb&&a!==Pc?b:c)){if(G(b)){for(e=0;e<g;e++)if(a===Wb)a(this[e],b);else for(f in b)a(this[e],f,b[f]);return this}e=a.$dv;g=y(e)?Math.min(g,1):g;for(f=0;f<g;f++){var h=a(this[f],b,c);e=e?e+h:h}return e}for(e=0;e<g;e++)a(this[e],b,c);return this}});q({removeData:db,on:function(a,b,d,c){if(x(c))throw Ub("onargs");if(Kc(a)){c=vb(a,!0);var e=c.events,f=c.handle;f||(f=c.handle=Pf(a,e));c=0<=b.indexOf(" ")?b.split(" "):[b];for(var g=c.length,h=function(b,c,g){var h=e[b];h||(h=e[b]=[],h.specialHandlerWrapper=
1537 a!==xb&&a!==Pc?b:c)){if(G(b)){for(e=0;e<g;e++)if(a===Wb)a(this[e],b);else for(f in b)a(this[e],f,b[f]);return this}e=a.$dv;g=y(e)?Math.min(g,1):g;for(f=0;f<g;f++){var h=a(this[f],b,c);e=e?e+h:h}return e}for(e=0;e<g;e++)a(this[e],b,c);return this}});q({removeData:db,on:function(a,b,d,c){if(x(c))throw Ub("onargs");if(Kc(a)){c=vb(a,!0);var e=c.events,f=c.handle;f||(f=c.handle=Pf(a,e));c=0<=b.indexOf(" ")?b.split(" "):[b];for(var g=c.length,h=function(b,c,g){var h=e[b];h||(h=e[b]=[],h.specialHandlerWrapper=
1538 c,"$destroy"===b||g||a.addEventListener(b,f,!1));h.push(d)};g--;)b=c[g],wb[b]?(h(wb[b],Rf),h(b,void 0,!0)):h(b)}},off:Oc,one:function(a,b,d){a=B(a);a.on(b,function e(){a.off(b,d);a.off(b,e)});a.on(b,d)},replaceWith:function(a,b){var d,c=a.parentNode;ub(a);q(new U(b),function(b){d?c.insertBefore(b,d.nextSibling):c.replaceChild(b,a);d=b})},children:function(a){var b=[];q(a.childNodes,function(a){1===a.nodeType&&b.push(a)});return b},contents:function(a){return a.contentDocument||a.childNodes||[]},append:function(a,
1538 c,"$destroy"===b||g||a.addEventListener(b,f,!1));h.push(d)};g--;)b=c[g],wb[b]?(h(wb[b],Rf),h(b,void 0,!0)):h(b)}},off:Oc,one:function(a,b,d){a=B(a);a.on(b,function e(){a.off(b,d);a.off(b,e)});a.on(b,d)},replaceWith:function(a,b){var d,c=a.parentNode;ub(a);q(new U(b),function(b){d?c.insertBefore(b,d.nextSibling):c.replaceChild(b,a);d=b})},children:function(a){var b=[];q(a.childNodes,function(a){1===a.nodeType&&b.push(a)});return b},contents:function(a){return a.contentDocument||a.childNodes||[]},append:function(a,
1539 b){var d=a.nodeType;if(1===d||11===d){b=new U(b);for(var d=0,c=b.length;d<c;d++)a.appendChild(b[d])}},prepend:function(a,b){if(1===a.nodeType){var d=a.firstChild;q(new U(b),function(b){a.insertBefore(b,d)})}},wrap:function(a,b){Mc(a,B(b).eq(0).clone()[0])},remove:Bb,detach:function(a){Bb(a,!0)},after:function(a,b){var d=a,c=a.parentNode;b=new U(b);for(var e=0,f=b.length;e<f;e++){var g=b[e];c.insertBefore(g,d.nextSibling);d=g}},addClass:zb,removeClass:yb,toggleClass:function(a,b,d){b&&q(b.split(" "),
1539 b){var d=a.nodeType;if(1===d||11===d){b=new U(b);for(var d=0,c=b.length;d<c;d++)a.appendChild(b[d])}},prepend:function(a,b){if(1===a.nodeType){var d=a.firstChild;q(new U(b),function(b){a.insertBefore(b,d)})}},wrap:function(a,b){Mc(a,B(b).eq(0).clone()[0])},remove:Bb,detach:function(a){Bb(a,!0)},after:function(a,b){var d=a,c=a.parentNode;b=new U(b);for(var e=0,f=b.length;e<f;e++){var g=b[e];c.insertBefore(g,d.nextSibling);d=g}},addClass:zb,removeClass:yb,toggleClass:function(a,b,d){b&&q(b.split(" "),
1540 function(b){var e=d;y(e)&&(e=!xb(a,b));(e?zb:yb)(a,b)})},parent:function(a){return(a=a.parentNode)&&11!==a.nodeType?a:null},next:function(a){return a.nextElementSibling},find:function(a,b){return a.getElementsByTagName?a.getElementsByTagName(b):[]},clone:Vb,triggerHandler:function(a,b,d){var c,e,f=b.type||b,g=vb(a);if(g=(g=g&&g.events)&&g[f])c={preventDefault:function(){this.defaultPrevented=!0},isDefaultPrevented:function(){return!0===this.defaultPrevented},stopImmediatePropagation:function(){this.immediatePropagationStopped=
1540 function(b){var e=d;y(e)&&(e=!xb(a,b));(e?zb:yb)(a,b)})},parent:function(a){return(a=a.parentNode)&&11!==a.nodeType?a:null},next:function(a){return a.nextElementSibling},find:function(a,b){return a.getElementsByTagName?a.getElementsByTagName(b):[]},clone:Vb,triggerHandler:function(a,b,d){var c,e,f=b.type||b,g=vb(a);if(g=(g=g&&g.events)&&g[f])c={preventDefault:function(){this.defaultPrevented=!0},isDefaultPrevented:function(){return!0===this.defaultPrevented},stopImmediatePropagation:function(){this.immediatePropagationStopped=
1541 !0},isImmediatePropagationStopped:function(){return!0===this.immediatePropagationStopped},stopPropagation:C,type:f,target:a},b.type&&(c=R(c,b)),b=ha(g),e=d?[c].concat(d):[c],q(b,function(b){c.isImmediatePropagationStopped()||b.apply(a,e)})}},function(a,b){U.prototype[b]=function(b,c,e){for(var f,g=0,h=this.length;g<h;g++)y(f)?(f=a(this[g],b,c,e),x(f)&&(f=B(f))):Nc(f,a(this[g],b,c,e));return x(f)?f:this};U.prototype.bind=U.prototype.on;U.prototype.unbind=U.prototype.off});Ra.prototype={put:function(a,
1541 !0},isImmediatePropagationStopped:function(){return!0===this.immediatePropagationStopped},stopPropagation:C,type:f,target:a},b.type&&(c=R(c,b)),b=ha(g),e=d?[c].concat(d):[c],q(b,function(b){c.isImmediatePropagationStopped()||b.apply(a,e)})}},function(a,b){U.prototype[b]=function(b,c,e){for(var f,g=0,h=this.length;g<h;g++)y(f)?(f=a(this[g],b,c,e),x(f)&&(f=B(f))):Nc(f,a(this[g],b,c,e));return x(f)?f:this};U.prototype.bind=U.prototype.on;U.prototype.unbind=U.prototype.off});Ra.prototype={put:function(a,
1542 b){this[Fa(a,this.nextUid)]=b},get:function(a){return this[Fa(a,this.nextUid)]},remove:function(a){var b=this[a=Fa(a,this.nextUid)];delete this[a];return b}};var Gf=[function(){this.$get=[function(){return Ra}]}],Uf=/^([^\(]+?)=>/,Vf=/^[^\(]*\(\s*([^\)]*)\)/m,Bg=/,/,Cg=/^\s*(_?)(\S+?)\1\s*$/,Tf=/((\/\/.*$)|(\/\*[\s\S]*?\*\/))/mg,Ga=O("$injector");bb.$$annotate=function(a,b,d){var c;if("function"===typeof a){if(!(c=a.$inject)){c=[];if(a.length){if(b)throw F(d)&&d||(d=a.name||Wf(a)),Ga("strictdi",d);
1542 b){this[Fa(a,this.nextUid)]=b},get:function(a){return this[Fa(a,this.nextUid)]},remove:function(a){var b=this[a=Fa(a,this.nextUid)];delete this[a];return b}};var Gf=[function(){this.$get=[function(){return Ra}]}],Uf=/^([^\(]+?)=>/,Vf=/^[^\(]*\(\s*([^\)]*)\)/m,Bg=/,/,Cg=/^\s*(_?)(\S+?)\1\s*$/,Tf=/((\/\/.*$)|(\/\*[\s\S]*?\*\/))/mg,Ga=O("$injector");bb.$$annotate=function(a,b,d){var c;if("function"===typeof a){if(!(c=a.$inject)){c=[];if(a.length){if(b)throw F(d)&&d||(d=a.name||Wf(a)),Ga("strictdi",d);
1543 b=Tc(a);q(b[1].split(Bg),function(a){a.replace(Cg,function(a,b,d){c.push(d)})})}a.$inject=c}}else K(a)?(b=a.length-1,Pa(a[b],"fn"),c=a.slice(0,b)):Pa(a,"fn",!0);return c};var Qd=O("$animate"),Ze=function(){this.$get=C},$e=function(){var a=new Ra,b=[];this.$get=["$$AnimateRunner","$rootScope",function(d,c){function e(a,b,c){var d=!1;b&&(b=F(b)?b.split(" "):K(b)?b:[],q(b,function(b){b&&(d=!0,a[b]=c)}));return d}function f(){q(b,function(b){var c=a.get(b);if(c){var d=Xf(b.attr("class")),e="",f="";q(c,
1543 b=Tc(a);q(b[1].split(Bg),function(a){a.replace(Cg,function(a,b,d){c.push(d)})})}a.$inject=c}}else K(a)?(b=a.length-1,Pa(a[b],"fn"),c=a.slice(0,b)):Pa(a,"fn",!0);return c};var Qd=O("$animate"),Ze=function(){this.$get=C},$e=function(){var a=new Ra,b=[];this.$get=["$$AnimateRunner","$rootScope",function(d,c){function e(a,b,c){var d=!1;b&&(b=F(b)?b.split(" "):K(b)?b:[],q(b,function(b){b&&(d=!0,a[b]=c)}));return d}function f(){q(b,function(b){var c=a.get(b);if(c){var d=Xf(b.attr("class")),e="",f="";q(c,
1544 function(a,b){a!==!!d[b]&&(a?e+=(e.length?" ":"")+b:f+=(f.length?" ":"")+b)});q(b,function(a){e&&zb(a,e);f&&yb(a,f)});a.remove(b)}});b.length=0}return{enabled:C,on:C,off:C,pin:C,push:function(g,h,k,l){l&&l();k=k||{};k.from&&g.css(k.from);k.to&&g.css(k.to);if(k.addClass||k.removeClass)if(h=k.addClass,l=k.removeClass,k=a.get(g)||{},h=e(k,h,!0),l=e(k,l,!1),h||l)a.put(g,k),b.push(g),1===b.length&&c.$$postDigest(f);g=new d;g.complete();return g}}}]},Xe=["$provide",function(a){var b=this;this.$$registeredAnimations=
1544 function(a,b){a!==!!d[b]&&(a?e+=(e.length?" ":"")+b:f+=(f.length?" ":"")+b)});q(b,function(a){e&&zb(a,e);f&&yb(a,f)});a.remove(b)}});b.length=0}return{enabled:C,on:C,off:C,pin:C,push:function(g,h,k,l){l&&l();k=k||{};k.from&&g.css(k.from);k.to&&g.css(k.to);if(k.addClass||k.removeClass)if(h=k.addClass,l=k.removeClass,k=a.get(g)||{},h=e(k,h,!0),l=e(k,l,!1),h||l)a.put(g,k),b.push(g),1===b.length&&c.$$postDigest(f);g=new d;g.complete();return g}}}]},Xe=["$provide",function(a){var b=this;this.$$registeredAnimations=
1545 Object.create(null);this.register=function(d,c){if(d&&"."!==d.charAt(0))throw Qd("notcsel",d);var e=d+"-animation";b.$$registeredAnimations[d.substr(1)]=e;a.factory(e,c)};this.classNameFilter=function(a){if(1===arguments.length&&(this.$$classNameFilter=a instanceof RegExp?a:null)&&/(\s+|\/)ng-animate(\s+|\/)/.test(this.$$classNameFilter.toString()))throw Qd("nongcls","ng-animate");return this.$$classNameFilter};this.$get=["$$animateQueue",function(a){function b(a,c,d){if(d){var h;a:{for(h=0;h<d.length;h++){var k=
1545 Object.create(null);this.register=function(d,c){if(d&&"."!==d.charAt(0))throw Qd("notcsel",d);var e=d+"-animation";b.$$registeredAnimations[d.substr(1)]=e;a.factory(e,c)};this.classNameFilter=function(a){if(1===arguments.length&&(this.$$classNameFilter=a instanceof RegExp?a:null)&&/(\s+|\/)ng-animate(\s+|\/)/.test(this.$$classNameFilter.toString()))throw Qd("nongcls","ng-animate");return this.$$classNameFilter};this.$get=["$$animateQueue",function(a){function b(a,c,d){if(d){var h;a:{for(h=0;h<d.length;h++){var k=
1546 d[h];if(1===k.nodeType){h=k;break a}}h=void 0}!h||h.parentNode||h.previousElementSibling||(d=null)}d?d.after(a):c.prepend(a)}return{on:a.on,off:a.off,pin:a.pin,enabled:a.enabled,cancel:function(a){a.end&&a.end()},enter:function(e,f,g,h){f=f&&B(f);g=g&&B(g);f=f||g.parent();b(e,f,g);return a.push(e,"enter",Ha(h))},move:function(e,f,g,h){f=f&&B(f);g=g&&B(g);f=f||g.parent();b(e,f,g);return a.push(e,"move",Ha(h))},leave:function(b,c){return a.push(b,"leave",Ha(c),function(){b.remove()})},addClass:function(b,
1546 d[h];if(1===k.nodeType){h=k;break a}}h=void 0}!h||h.parentNode||h.previousElementSibling||(d=null)}d?d.after(a):c.prepend(a)}return{on:a.on,off:a.off,pin:a.pin,enabled:a.enabled,cancel:function(a){a.end&&a.end()},enter:function(e,f,g,h){f=f&&B(f);g=g&&B(g);f=f||g.parent();b(e,f,g);return a.push(e,"enter",Ha(h))},move:function(e,f,g,h){f=f&&B(f);g=g&&B(g);f=f||g.parent();b(e,f,g);return a.push(e,"move",Ha(h))},leave:function(b,c){return a.push(b,"leave",Ha(c),function(){b.remove()})},addClass:function(b,
1547 c,g){g=Ha(g);g.addClass=fb(g.addclass,c);return a.push(b,"addClass",g)},removeClass:function(b,c,g){g=Ha(g);g.removeClass=fb(g.removeClass,c);return a.push(b,"removeClass",g)},setClass:function(b,c,g,h){h=Ha(h);h.addClass=fb(h.addClass,c);h.removeClass=fb(h.removeClass,g);return a.push(b,"setClass",h)},animate:function(b,c,g,h,k){k=Ha(k);k.from=k.from?R(k.from,c):c;k.to=k.to?R(k.to,g):g;k.tempClasses=fb(k.tempClasses,h||"ng-inline-animate");return a.push(b,"animate",k)}}}]}],bf=function(){this.$get=
1547 c,g){g=Ha(g);g.addClass=fb(g.addclass,c);return a.push(b,"addClass",g)},removeClass:function(b,c,g){g=Ha(g);g.removeClass=fb(g.removeClass,c);return a.push(b,"removeClass",g)},setClass:function(b,c,g,h){h=Ha(h);h.addClass=fb(h.addClass,c);h.removeClass=fb(h.removeClass,g);return a.push(b,"setClass",h)},animate:function(b,c,g,h,k){k=Ha(k);k.from=k.from?R(k.from,c):c;k.to=k.to?R(k.to,g):g;k.tempClasses=fb(k.tempClasses,h||"ng-inline-animate");return a.push(b,"animate",k)}}}]}],bf=function(){this.$get=
1548 ["$$rAF",function(a){function b(b){d.push(b);1<d.length||a(function(){for(var a=0;a<d.length;a++)d[a]();d=[]})}var d=[];return function(){var a=!1;b(function(){a=!0});return function(d){a?d():b(d)}}}]},af=function(){this.$get=["$q","$sniffer","$$animateAsyncRun","$document","$timeout",function(a,b,d,c,e){function f(a){this.setHost(a);var b=d();this._doneCallbacks=[];this._tick=function(a){var d=c[0];d&&d.hidden?e(a,0,!1):b(a)};this._state=0}f.chain=function(a,b){function c(){if(d===a.length)b(!0);
1548 ["$$rAF",function(a){function b(b){d.push(b);1<d.length||a(function(){for(var a=0;a<d.length;a++)d[a]();d=[]})}var d=[];return function(){var a=!1;b(function(){a=!0});return function(d){a?d():b(d)}}}]},af=function(){this.$get=["$q","$sniffer","$$animateAsyncRun","$document","$timeout",function(a,b,d,c,e){function f(a){this.setHost(a);var b=d();this._doneCallbacks=[];this._tick=function(a){var d=c[0];d&&d.hidden?e(a,0,!1):b(a)};this._state=0}f.chain=function(a,b){function c(){if(d===a.length)b(!0);
1549 else a[d](function(a){!1===a?b(!1):(d++,c())})}var d=0;c()};f.all=function(a,b){function c(f){e=e&&f;++d===a.length&&b(e)}var d=0,e=!0;q(a,function(a){a.done(c)})};f.prototype={setHost:function(a){this.host=a||{}},done:function(a){2===this._state?a():this._doneCallbacks.push(a)},progress:C,getPromise:function(){if(!this.promise){var b=this;this.promise=a(function(a,c){b.done(function(b){!1===b?c():a()})})}return this.promise},then:function(a,b){return this.getPromise().then(a,b)},"catch":function(a){return this.getPromise()["catch"](a)},
1549 else a[d](function(a){!1===a?b(!1):(d++,c())})}var d=0;c()};f.all=function(a,b){function c(f){e=e&&f;++d===a.length&&b(e)}var d=0,e=!0;q(a,function(a){a.done(c)})};f.prototype={setHost:function(a){this.host=a||{}},done:function(a){2===this._state?a():this._doneCallbacks.push(a)},progress:C,getPromise:function(){if(!this.promise){var b=this;this.promise=a(function(a,c){b.done(function(b){!1===b?c():a()})})}return this.promise},then:function(a,b){return this.getPromise().then(a,b)},"catch":function(a){return this.getPromise()["catch"](a)},
1550 "finally":function(a){return this.getPromise()["finally"](a)},pause:function(){this.host.pause&&this.host.pause()},resume:function(){this.host.resume&&this.host.resume()},end:function(){this.host.end&&this.host.end();this._resolve(!0)},cancel:function(){this.host.cancel&&this.host.cancel();this._resolve(!1)},complete:function(a){var b=this;0===b._state&&(b._state=1,b._tick(function(){b._resolve(a)}))},_resolve:function(a){2!==this._state&&(q(this._doneCallbacks,function(b){b(a)}),this._doneCallbacks.length=
1550 "finally":function(a){return this.getPromise()["finally"](a)},pause:function(){this.host.pause&&this.host.pause()},resume:function(){this.host.resume&&this.host.resume()},end:function(){this.host.end&&this.host.end();this._resolve(!0)},cancel:function(){this.host.cancel&&this.host.cancel();this._resolve(!1)},complete:function(a){var b=this;0===b._state&&(b._state=1,b._tick(function(){b._resolve(a)}))},_resolve:function(a){2!==this._state&&(q(this._doneCallbacks,function(b){b(a)}),this._doneCallbacks.length=
1551 0,this._state=2)}};return f}]},Ye=function(){this.$get=["$$rAF","$q","$$AnimateRunner",function(a,b,d){return function(b,e){function f(){a(function(){g.addClass&&(b.addClass(g.addClass),g.addClass=null);g.removeClass&&(b.removeClass(g.removeClass),g.removeClass=null);g.to&&(b.css(g.to),g.to=null);h||k.complete();h=!0});return k}var g=e||{};g.$$prepared||(g=qa(g));g.cleanupStyles&&(g.from=g.to=null);g.from&&(b.css(g.from),g.from=null);var h,k=new d;return{start:f,end:f}}}]},ga=O("$compile"),Zb=new function(){};
1551 0,this._state=2)}};return f}]},Ye=function(){this.$get=["$$rAF","$q","$$AnimateRunner",function(a,b,d){return function(b,e){function f(){a(function(){g.addClass&&(b.addClass(g.addClass),g.addClass=null);g.removeClass&&(b.removeClass(g.removeClass),g.removeClass=null);g.to&&(b.css(g.to),g.to=null);h||k.complete();h=!0});return k}var g=e||{};g.$$prepared||(g=qa(g));g.cleanupStyles&&(g.from=g.to=null);g.from&&(b.css(g.from),g.from=null);var h,k=new d;return{start:f,end:f}}}]},ga=O("$compile"),Zb=new function(){};
1552 Cc.$inject=["$provide","$$sanitizeUriProvider"];Db.prototype.isFirstChange=function(){return this.previousValue===Zb};var Vc=/^((?:x|data)[\:\-_])/i,$f=O("$controller"),bd=/^(\S+)(\s+as\s+([\w$]+))?$/,hf=function(){this.$get=["$document",function(a){return function(b){b?!b.nodeType&&b instanceof B&&(b=b[0]):b=a[0].body;return b.offsetWidth+1}}]},cd="application/json",bc={"Content-Type":cd+";charset=utf-8"},bg=/^\[|^\{(?!\{)/,cg={"[":/]$/,"{":/}$/},ag=/^\)\]\}',?\n/,Dg=O("$http"),gd=function(a){return function(){throw Dg("legacy",
1552 Cc.$inject=["$provide","$$sanitizeUriProvider"];Db.prototype.isFirstChange=function(){return this.previousValue===Zb};var Vc=/^((?:x|data)[\:\-_])/i,$f=O("$controller"),bd=/^(\S+)(\s+as\s+([\w$]+))?$/,hf=function(){this.$get=["$document",function(a){return function(b){b?!b.nodeType&&b instanceof B&&(b=b[0]):b=a[0].body;return b.offsetWidth+1}}]},cd="application/json",bc={"Content-Type":cd+";charset=utf-8"},bg=/^\[|^\{(?!\{)/,cg={"[":/]$/,"{":/}$/},ag=/^\)\]\}',?\n/,Dg=O("$http"),gd=function(a){return function(){throw Dg("legacy",
1553 a);}},Ja=ea.$interpolateMinErr=O("$interpolate");Ja.throwNoconcat=function(a){throw Ja("noconcat",a);};Ja.interr=function(a,b){return Ja("interr",a,b.toString())};var Eg=/^([^\?#]*)(\?([^#]*))?(#(.*))?$/,eg={http:80,https:443,ftp:21},Eb=O("$location"),Fg={$$html5:!1,$$replace:!1,absUrl:Fb("$$absUrl"),url:function(a){if(y(a))return this.$$url;var b=Eg.exec(a);(b[1]||""===a)&&this.path(decodeURIComponent(b[1]));(b[2]||b[1]||""===a)&&this.search(b[3]||"");this.hash(b[5]||"");return this},protocol:Fb("$$protocol"),
1553 a);}},Ja=ea.$interpolateMinErr=O("$interpolate");Ja.throwNoconcat=function(a){throw Ja("noconcat",a);};Ja.interr=function(a,b){return Ja("interr",a,b.toString())};var Eg=/^([^\?#]*)(\?([^#]*))?(#(.*))?$/,eg={http:80,https:443,ftp:21},Eb=O("$location"),Fg={$$html5:!1,$$replace:!1,absUrl:Fb("$$absUrl"),url:function(a){if(y(a))return this.$$url;var b=Eg.exec(a);(b[1]||""===a)&&this.path(decodeURIComponent(b[1]));(b[2]||b[1]||""===a)&&this.search(b[3]||"");this.hash(b[5]||"");return this},protocol:Fb("$$protocol"),
1554 host:Fb("$$host"),port:Fb("$$port"),path:ld("$$path",function(a){a=null!==a?a.toString():"";return"/"==a.charAt(0)?a:"/"+a}),search:function(a,b){switch(arguments.length){case 0:return this.$$search;case 1:if(F(a)||Q(a))a=a.toString(),this.$$search=xc(a);else if(G(a))a=qa(a,{}),q(a,function(b,c){null==b&&delete a[c]}),this.$$search=a;else throw Eb("isrcharg");break;default:y(b)||null===b?delete this.$$search[a]:this.$$search[a]=b}this.$$compose();return this},hash:ld("$$hash",function(a){return null!==
1554 host:Fb("$$host"),port:Fb("$$port"),path:ld("$$path",function(a){a=null!==a?a.toString():"";return"/"==a.charAt(0)?a:"/"+a}),search:function(a,b){switch(arguments.length){case 0:return this.$$search;case 1:if(F(a)||Q(a))a=a.toString(),this.$$search=xc(a);else if(G(a))a=qa(a,{}),q(a,function(b,c){null==b&&delete a[c]}),this.$$search=a;else throw Eb("isrcharg");break;default:y(b)||null===b?delete this.$$search[a]:this.$$search[a]=b}this.$$compose();return this},hash:ld("$$hash",function(a){return null!==
1555 a?a.toString():""}),replace:function(){this.$$replace=!0;return this}};q([kd,ec,dc],function(a){a.prototype=Object.create(Fg);a.prototype.state=function(b){if(!arguments.length)return this.$$state;if(a!==dc||!this.$$html5)throw Eb("nostate");this.$$state=y(b)?null:b;return this}});var ca=O("$parse"),gg=Function.prototype.call,hg=Function.prototype.apply,ig=Function.prototype.bind,Mb=T();q("+ - * / % === !== == != < > <= >= && || ! = |".split(" "),function(a){Mb[a]=!0});var Gg={n:"\n",f:"\f",r:"\r",
1555 a?a.toString():""}),replace:function(){this.$$replace=!0;return this}};q([kd,ec,dc],function(a){a.prototype=Object.create(Fg);a.prototype.state=function(b){if(!arguments.length)return this.$$state;if(a!==dc||!this.$$html5)throw Eb("nostate");this.$$state=y(b)?null:b;return this}});var ca=O("$parse"),gg=Function.prototype.call,hg=Function.prototype.apply,ig=Function.prototype.bind,Mb=T();q("+ - * / % === !== == != < > <= >= && || ! = |".split(" "),function(a){Mb[a]=!0});var Gg={n:"\n",f:"\f",r:"\r",
1556 t:"\t",v:"\v","'":"'",'"':'"'},gc=function(a){this.options=a};gc.prototype={constructor:gc,lex:function(a){this.text=a;this.index=0;for(this.tokens=[];this.index<this.text.length;)if(a=this.text.charAt(this.index),'"'===a||"'"===a)this.readString(a);else if(this.isNumber(a)||"."===a&&this.isNumber(this.peek()))this.readNumber();else if(this.isIdentifierStart(this.peekMultichar()))this.readIdent();else if(this.is(a,"(){}[].,;:?"))this.tokens.push({index:this.index,text:a}),this.index++;else if(this.isWhitespace(a))this.index++;
1556 t:"\t",v:"\v","'":"'",'"':'"'},gc=function(a){this.options=a};gc.prototype={constructor:gc,lex:function(a){this.text=a;this.index=0;for(this.tokens=[];this.index<this.text.length;)if(a=this.text.charAt(this.index),'"'===a||"'"===a)this.readString(a);else if(this.isNumber(a)||"."===a&&this.isNumber(this.peek()))this.readNumber();else if(this.isIdentifierStart(this.peekMultichar()))this.readIdent();else if(this.is(a,"(){}[].,;:?"))this.tokens.push({index:this.index,text:a}),this.index++;else if(this.isWhitespace(a))this.index++;
1557 else{var b=a+this.peek(),d=b+this.peek(2),c=Mb[b],e=Mb[d];Mb[a]||c||e?(a=e?d:c?b:a,this.tokens.push({index:this.index,text:a,operator:!0}),this.index+=a.length):this.throwError("Unexpected next character ",this.index,this.index+1)}return this.tokens},is:function(a,b){return-1!==b.indexOf(a)},peek:function(a){a=a||1;return this.index+a<this.text.length?this.text.charAt(this.index+a):!1},isNumber:function(a){return"0"<=a&&"9">=a&&"string"===typeof a},isWhitespace:function(a){return" "===a||"\r"===a||
1557 else{var b=a+this.peek(),d=b+this.peek(2),c=Mb[b],e=Mb[d];Mb[a]||c||e?(a=e?d:c?b:a,this.tokens.push({index:this.index,text:a,operator:!0}),this.index+=a.length):this.throwError("Unexpected next character ",this.index,this.index+1)}return this.tokens},is:function(a,b){return-1!==b.indexOf(a)},peek:function(a){a=a||1;return this.index+a<this.text.length?this.text.charAt(this.index+a):!1},isNumber:function(a){return"0"<=a&&"9">=a&&"string"===typeof a},isWhitespace:function(a){return" "===a||"\r"===a||
1558 "\t"===a||"\n"===a||"\v"===a||"\u00a0"===a},isIdentifierStart:function(a){return this.options.isIdentifierStart?this.options.isIdentifierStart(a,this.codePointAt(a)):this.isValidIdentifierStart(a)},isValidIdentifierStart:function(a){return"a"<=a&&"z">=a||"A"<=a&&"Z">=a||"_"===a||"$"===a},isIdentifierContinue:function(a){return this.options.isIdentifierContinue?this.options.isIdentifierContinue(a,this.codePointAt(a)):this.isValidIdentifierContinue(a)},isValidIdentifierContinue:function(a,b){return this.isValidIdentifierStart(a,
1558 "\t"===a||"\n"===a||"\v"===a||"\u00a0"===a},isIdentifierStart:function(a){return this.options.isIdentifierStart?this.options.isIdentifierStart(a,this.codePointAt(a)):this.isValidIdentifierStart(a)},isValidIdentifierStart:function(a){return"a"<=a&&"z">=a||"A"<=a&&"Z">=a||"_"===a||"$"===a},isIdentifierContinue:function(a){return this.options.isIdentifierContinue?this.options.isIdentifierContinue(a,this.codePointAt(a)):this.isValidIdentifierContinue(a)},isValidIdentifierContinue:function(a,b){return this.isValidIdentifierStart(a,
1559 b)||this.isNumber(a)},codePointAt:function(a){return 1===a.length?a.charCodeAt(0):(a.charCodeAt(0)<<10)+a.charCodeAt(1)-56613888},peekMultichar:function(){var a=this.text.charAt(this.index),b=this.peek();if(!b)return a;var d=a.charCodeAt(0),c=b.charCodeAt(0);return 55296<=d&&56319>=d&&56320<=c&&57343>=c?a+b:a},isExpOperator:function(a){return"-"===a||"+"===a||this.isNumber(a)},throwError:function(a,b,d){d=d||this.index;b=x(b)?"s "+b+"-"+this.index+" ["+this.text.substring(b,d)+"]":" "+d;throw ca("lexerr",
1559 b)||this.isNumber(a)},codePointAt:function(a){return 1===a.length?a.charCodeAt(0):(a.charCodeAt(0)<<10)+a.charCodeAt(1)-56613888},peekMultichar:function(){var a=this.text.charAt(this.index),b=this.peek();if(!b)return a;var d=a.charCodeAt(0),c=b.charCodeAt(0);return 55296<=d&&56319>=d&&56320<=c&&57343>=c?a+b:a},isExpOperator:function(a){return"-"===a||"+"===a||this.isNumber(a)},throwError:function(a,b,d){d=d||this.index;b=x(b)?"s "+b+"-"+this.index+" ["+this.text.substring(b,d)+"]":" "+d;throw ca("lexerr",
1560 a,b,this.text);},readNumber:function(){for(var a="",b=this.index;this.index<this.text.length;){var d=P(this.text.charAt(this.index));if("."==d||this.isNumber(d))a+=d;else{var c=this.peek();if("e"==d&&this.isExpOperator(c))a+=d;else if(this.isExpOperator(d)&&c&&this.isNumber(c)&&"e"==a.charAt(a.length-1))a+=d;else if(!this.isExpOperator(d)||c&&this.isNumber(c)||"e"!=a.charAt(a.length-1))break;else this.throwError("Invalid exponent")}this.index++}this.tokens.push({index:b,text:a,constant:!0,value:Number(a)})},
1560 a,b,this.text);},readNumber:function(){for(var a="",b=this.index;this.index<this.text.length;){var d=P(this.text.charAt(this.index));if("."==d||this.isNumber(d))a+=d;else{var c=this.peek();if("e"==d&&this.isExpOperator(c))a+=d;else if(this.isExpOperator(d)&&c&&this.isNumber(c)&&"e"==a.charAt(a.length-1))a+=d;else if(!this.isExpOperator(d)||c&&this.isNumber(c)||"e"!=a.charAt(a.length-1))break;else this.throwError("Invalid exponent")}this.index++}this.tokens.push({index:b,text:a,constant:!0,value:Number(a)})},
1561 readIdent:function(){var a=this.index;for(this.index+=this.peekMultichar().length;this.index<this.text.length;){var b=this.peekMultichar();if(!this.isIdentifierContinue(b))break;this.index+=b.length}this.tokens.push({index:a,text:this.text.slice(a,this.index),identifier:!0})},readString:function(a){var b=this.index;this.index++;for(var d="",c=a,e=!1;this.index<this.text.length;){var f=this.text.charAt(this.index),c=c+f;if(e)"u"===f?(e=this.text.substring(this.index+1,this.index+5),e.match(/[\da-f]{4}/i)||
1561 readIdent:function(){var a=this.index;for(this.index+=this.peekMultichar().length;this.index<this.text.length;){var b=this.peekMultichar();if(!this.isIdentifierContinue(b))break;this.index+=b.length}this.tokens.push({index:a,text:this.text.slice(a,this.index),identifier:!0})},readString:function(a){var b=this.index;this.index++;for(var d="",c=a,e=!1;this.index<this.text.length;){var f=this.text.charAt(this.index),c=c+f;if(e)"u"===f?(e=this.text.substring(this.index+1,this.index+5),e.match(/[\da-f]{4}/i)||
1562 this.throwError("Invalid unicode escape [\\u"+e+"]"),this.index+=4,d+=String.fromCharCode(parseInt(e,16))):d+=Gg[f]||f,e=!1;else if("\\"===f)e=!0;else{if(f===a){this.index++;this.tokens.push({index:b,text:c,constant:!0,value:d});return}d+=f}this.index++}this.throwError("Unterminated quote",b)}};var s=function(a,b){this.lexer=a;this.options=b};s.Program="Program";s.ExpressionStatement="ExpressionStatement";s.AssignmentExpression="AssignmentExpression";s.ConditionalExpression="ConditionalExpression";
1562 this.throwError("Invalid unicode escape [\\u"+e+"]"),this.index+=4,d+=String.fromCharCode(parseInt(e,16))):d+=Gg[f]||f,e=!1;else if("\\"===f)e=!0;else{if(f===a){this.index++;this.tokens.push({index:b,text:c,constant:!0,value:d});return}d+=f}this.index++}this.throwError("Unterminated quote",b)}};var s=function(a,b){this.lexer=a;this.options=b};s.Program="Program";s.ExpressionStatement="ExpressionStatement";s.AssignmentExpression="AssignmentExpression";s.ConditionalExpression="ConditionalExpression";
1563 s.LogicalExpression="LogicalExpression";s.BinaryExpression="BinaryExpression";s.UnaryExpression="UnaryExpression";s.CallExpression="CallExpression";s.MemberExpression="MemberExpression";s.Identifier="Identifier";s.Literal="Literal";s.ArrayExpression="ArrayExpression";s.Property="Property";s.ObjectExpression="ObjectExpression";s.ThisExpression="ThisExpression";s.LocalsExpression="LocalsExpression";s.NGValueParameter="NGValueParameter";s.prototype={ast:function(a){this.text=a;this.tokens=this.lexer.lex(a);
1563 s.LogicalExpression="LogicalExpression";s.BinaryExpression="BinaryExpression";s.UnaryExpression="UnaryExpression";s.CallExpression="CallExpression";s.MemberExpression="MemberExpression";s.Identifier="Identifier";s.Literal="Literal";s.ArrayExpression="ArrayExpression";s.Property="Property";s.ObjectExpression="ObjectExpression";s.ThisExpression="ThisExpression";s.LocalsExpression="LocalsExpression";s.NGValueParameter="NGValueParameter";s.prototype={ast:function(a){this.text=a;this.tokens=this.lexer.lex(a);
1564 a=this.program();0!==this.tokens.length&&this.throwError("is an unexpected token",this.tokens[0]);return a},program:function(){for(var a=[];;)if(0<this.tokens.length&&!this.peek("}",")",";","]")&&a.push(this.expressionStatement()),!this.expect(";"))return{type:s.Program,body:a}},expressionStatement:function(){return{type:s.ExpressionStatement,expression:this.filterChain()}},filterChain:function(){for(var a=this.expression();this.expect("|");)a=this.filter(a);return a},expression:function(){return this.assignment()},
1564 a=this.program();0!==this.tokens.length&&this.throwError("is an unexpected token",this.tokens[0]);return a},program:function(){for(var a=[];;)if(0<this.tokens.length&&!this.peek("}",")",";","]")&&a.push(this.expressionStatement()),!this.expect(";"))return{type:s.Program,body:a}},expressionStatement:function(){return{type:s.ExpressionStatement,expression:this.filterChain()}},filterChain:function(){for(var a=this.expression();this.expect("|");)a=this.filter(a);return a},expression:function(){return this.assignment()},
1565 assignment:function(){var a=this.ternary();this.expect("=")&&(a={type:s.AssignmentExpression,left:a,right:this.assignment(),operator:"="});return a},ternary:function(){var a=this.logicalOR(),b,d;return this.expect("?")&&(b=this.expression(),this.consume(":"))?(d=this.expression(),{type:s.ConditionalExpression,test:a,alternate:b,consequent:d}):a},logicalOR:function(){for(var a=this.logicalAND();this.expect("||");)a={type:s.LogicalExpression,operator:"||",left:a,right:this.logicalAND()};return a},logicalAND:function(){for(var a=
1565 assignment:function(){var a=this.ternary();this.expect("=")&&(a={type:s.AssignmentExpression,left:a,right:this.assignment(),operator:"="});return a},ternary:function(){var a=this.logicalOR(),b,d;return this.expect("?")&&(b=this.expression(),this.consume(":"))?(d=this.expression(),{type:s.ConditionalExpression,test:a,alternate:b,consequent:d}):a},logicalOR:function(){for(var a=this.logicalAND();this.expect("||");)a={type:s.LogicalExpression,operator:"||",left:a,right:this.logicalAND()};return a},logicalAND:function(){for(var a=
1566 this.equality();this.expect("&&");)a={type:s.LogicalExpression,operator:"&&",left:a,right:this.equality()};return a},equality:function(){for(var a=this.relational(),b;b=this.expect("==","!=","===","!==");)a={type:s.BinaryExpression,operator:b.text,left:a,right:this.relational()};return a},relational:function(){for(var a=this.additive(),b;b=this.expect("<",">","<=",">=");)a={type:s.BinaryExpression,operator:b.text,left:a,right:this.additive()};return a},additive:function(){for(var a=this.multiplicative(),
1566 this.equality();this.expect("&&");)a={type:s.LogicalExpression,operator:"&&",left:a,right:this.equality()};return a},equality:function(){for(var a=this.relational(),b;b=this.expect("==","!=","===","!==");)a={type:s.BinaryExpression,operator:b.text,left:a,right:this.relational()};return a},relational:function(){for(var a=this.additive(),b;b=this.expect("<",">","<=",">=");)a={type:s.BinaryExpression,operator:b.text,left:a,right:this.additive()};return a},additive:function(){for(var a=this.multiplicative(),
1567 b;b=this.expect("+","-");)a={type:s.BinaryExpression,operator:b.text,left:a,right:this.multiplicative()};return a},multiplicative:function(){for(var a=this.unary(),b;b=this.expect("*","/","%");)a={type:s.BinaryExpression,operator:b.text,left:a,right:this.unary()};return a},unary:function(){var a;return(a=this.expect("+","-","!"))?{type:s.UnaryExpression,operator:a.text,prefix:!0,argument:this.unary()}:this.primary()},primary:function(){var a;this.expect("(")?(a=this.filterChain(),this.consume(")")):
1567 b;b=this.expect("+","-");)a={type:s.BinaryExpression,operator:b.text,left:a,right:this.multiplicative()};return a},multiplicative:function(){for(var a=this.unary(),b;b=this.expect("*","/","%");)a={type:s.BinaryExpression,operator:b.text,left:a,right:this.unary()};return a},unary:function(){var a;return(a=this.expect("+","-","!"))?{type:s.UnaryExpression,operator:a.text,prefix:!0,argument:this.unary()}:this.primary()},primary:function(){var a;this.expect("(")?(a=this.filterChain(),this.consume(")")):
1568 this.expect("[")?a=this.arrayDeclaration():this.expect("{")?a=this.object():this.selfReferential.hasOwnProperty(this.peek().text)?a=qa(this.selfReferential[this.consume().text]):this.options.literals.hasOwnProperty(this.peek().text)?a={type:s.Literal,value:this.options.literals[this.consume().text]}:this.peek().identifier?a=this.identifier():this.peek().constant?a=this.constant():this.throwError("not a primary expression",this.peek());for(var b;b=this.expect("(","[",".");)"("===b.text?(a={type:s.CallExpression,
1568 this.expect("[")?a=this.arrayDeclaration():this.expect("{")?a=this.object():this.selfReferential.hasOwnProperty(this.peek().text)?a=qa(this.selfReferential[this.consume().text]):this.options.literals.hasOwnProperty(this.peek().text)?a={type:s.Literal,value:this.options.literals[this.consume().text]}:this.peek().identifier?a=this.identifier():this.peek().constant?a=this.constant():this.throwError("not a primary expression",this.peek());for(var b;b=this.expect("(","[",".");)"("===b.text?(a={type:s.CallExpression,
1569 callee:a,arguments:this.parseArguments()},this.consume(")")):"["===b.text?(a={type:s.MemberExpression,object:a,property:this.expression(),computed:!0},this.consume("]")):"."===b.text?a={type:s.MemberExpression,object:a,property:this.identifier(),computed:!1}:this.throwError("IMPOSSIBLE");return a},filter:function(a){a=[a];for(var b={type:s.CallExpression,callee:this.identifier(),arguments:a,filter:!0};this.expect(":");)a.push(this.expression());return b},parseArguments:function(){var a=[];if(")"!==
1569 callee:a,arguments:this.parseArguments()},this.consume(")")):"["===b.text?(a={type:s.MemberExpression,object:a,property:this.expression(),computed:!0},this.consume("]")):"."===b.text?a={type:s.MemberExpression,object:a,property:this.identifier(),computed:!1}:this.throwError("IMPOSSIBLE");return a},filter:function(a){a=[a];for(var b={type:s.CallExpression,callee:this.identifier(),arguments:a,filter:!0};this.expect(":");)a.push(this.expression());return b},parseArguments:function(){var a=[];if(")"!==
1570 this.peekToken().text){do a.push(this.expression());while(this.expect(","))}return a},identifier:function(){var a=this.consume();a.identifier||this.throwError("is not a valid identifier",a);return{type:s.Identifier,name:a.text}},constant:function(){return{type:s.Literal,value:this.consume().value}},arrayDeclaration:function(){var a=[];if("]"!==this.peekToken().text){do{if(this.peek("]"))break;a.push(this.expression())}while(this.expect(","))}this.consume("]");return{type:s.ArrayExpression,elements:a}},
1570 this.peekToken().text){do a.push(this.expression());while(this.expect(","))}return a},identifier:function(){var a=this.consume();a.identifier||this.throwError("is not a valid identifier",a);return{type:s.Identifier,name:a.text}},constant:function(){return{type:s.Literal,value:this.consume().value}},arrayDeclaration:function(){var a=[];if("]"!==this.peekToken().text){do{if(this.peek("]"))break;a.push(this.expression())}while(this.expect(","))}this.consume("]");return{type:s.ArrayExpression,elements:a}},
1571 object:function(){var a=[],b;if("}"!==this.peekToken().text){do{if(this.peek("}"))break;b={type:s.Property,kind:"init"};this.peek().constant?b.key=this.constant():this.peek().identifier?b.key=this.identifier():this.throwError("invalid key",this.peek());this.consume(":");b.value=this.expression();a.push(b)}while(this.expect(","))}this.consume("}");return{type:s.ObjectExpression,properties:a}},throwError:function(a,b){throw ca("syntax",b.text,a,b.index+1,this.text,this.text.substring(b.index));},consume:function(a){if(0===
1571 object:function(){var a=[],b;if("}"!==this.peekToken().text){do{if(this.peek("}"))break;b={type:s.Property,kind:"init"};this.peek().constant?b.key=this.constant():this.peek().identifier?b.key=this.identifier():this.throwError("invalid key",this.peek());this.consume(":");b.value=this.expression();a.push(b)}while(this.expect(","))}this.consume("}");return{type:s.ObjectExpression,properties:a}},throwError:function(a,b){throw ca("syntax",b.text,a,b.index+1,this.text,this.text.substring(b.index));},consume:function(a){if(0===
1572 this.tokens.length)throw ca("ueoe",this.text);var b=this.expect(a);b||this.throwError("is unexpected, expecting ["+a+"]",this.peek());return b},peekToken:function(){if(0===this.tokens.length)throw ca("ueoe",this.text);return this.tokens[0]},peek:function(a,b,d,c){return this.peekAhead(0,a,b,d,c)},peekAhead:function(a,b,d,c,e){if(this.tokens.length>a){a=this.tokens[a];var f=a.text;if(f===b||f===d||f===c||f===e||!(b||d||c||e))return a}return!1},expect:function(a,b,d,c){return(a=this.peek(a,b,d,c))?
1572 this.tokens.length)throw ca("ueoe",this.text);var b=this.expect(a);b||this.throwError("is unexpected, expecting ["+a+"]",this.peek());return b},peekToken:function(){if(0===this.tokens.length)throw ca("ueoe",this.text);return this.tokens[0]},peek:function(a,b,d,c){return this.peekAhead(0,a,b,d,c)},peekAhead:function(a,b,d,c,e){if(this.tokens.length>a){a=this.tokens[a];var f=a.text;if(f===b||f===d||f===c||f===e||!(b||d||c||e))return a}return!1},expect:function(a,b,d,c){return(a=this.peek(a,b,d,c))?
1573 (this.tokens.shift(),a):!1},selfReferential:{"this":{type:s.ThisExpression},$locals:{type:s.LocalsExpression}}};sd.prototype={compile:function(a,b){var d=this,c=this.astBuilder.ast(a);this.state={nextId:0,filters:{},expensiveChecks:b,fn:{vars:[],body:[],own:{}},assign:{vars:[],body:[],own:{}},inputs:[]};aa(c,d.$filter);var e="",f;this.stage="assign";if(f=qd(c))this.state.computing="assign",e=this.nextId(),this.recurse(f,e),this.return_(e),e="fn.assign="+this.generateFunction("assign","s,v,l");f=od(c.body);
1573 (this.tokens.shift(),a):!1},selfReferential:{"this":{type:s.ThisExpression},$locals:{type:s.LocalsExpression}}};sd.prototype={compile:function(a,b){var d=this,c=this.astBuilder.ast(a);this.state={nextId:0,filters:{},expensiveChecks:b,fn:{vars:[],body:[],own:{}},assign:{vars:[],body:[],own:{}},inputs:[]};aa(c,d.$filter);var e="",f;this.stage="assign";if(f=qd(c))this.state.computing="assign",e=this.nextId(),this.recurse(f,e),this.return_(e),e="fn.assign="+this.generateFunction("assign","s,v,l");f=od(c.body);
1574 d.stage="inputs";q(f,function(a,b){var c="fn"+b;d.state[c]={vars:[],body:[],own:{}};d.state.computing=c;var e=d.nextId();d.recurse(a,e);d.return_(e);d.state.inputs.push(c);a.watchId=b});this.state.computing="fn";this.stage="main";this.recurse(c);e='"'+this.USE+" "+this.STRICT+'";\n'+this.filterPrefix()+"var fn="+this.generateFunction("fn","s,l,a,i")+e+this.watchFns()+"return fn;";e=(new Function("$filter","ensureSafeMemberName","ensureSafeObject","ensureSafeFunction","getStringValue","ensureSafeAssignContext",
1574 d.stage="inputs";q(f,function(a,b){var c="fn"+b;d.state[c]={vars:[],body:[],own:{}};d.state.computing=c;var e=d.nextId();d.recurse(a,e);d.return_(e);d.state.inputs.push(c);a.watchId=b});this.state.computing="fn";this.stage="main";this.recurse(c);e='"'+this.USE+" "+this.STRICT+'";\n'+this.filterPrefix()+"var fn="+this.generateFunction("fn","s,l,a,i")+e+this.watchFns()+"return fn;";e=(new Function("$filter","ensureSafeMemberName","ensureSafeObject","ensureSafeFunction","getStringValue","ensureSafeAssignContext",
1575 "ifDefined","plus","text",e))(this.$filter,Ta,sa,md,fg,Gb,jg,nd,a);this.state=this.stage=void 0;e.literal=rd(c);e.constant=c.constant;return e},USE:"use",STRICT:"strict",watchFns:function(){var a=[],b=this.state.inputs,d=this;q(b,function(b){a.push("var "+b+"="+d.generateFunction(b,"s"))});b.length&&a.push("fn.inputs=["+b.join(",")+"];");return a.join("")},generateFunction:function(a,b){return"function("+b+"){"+this.varsPrefix(a)+this.body(a)+"};"},filterPrefix:function(){var a=[],b=this;q(this.state.filters,
1575 "ifDefined","plus","text",e))(this.$filter,Ta,sa,md,fg,Gb,jg,nd,a);this.state=this.stage=void 0;e.literal=rd(c);e.constant=c.constant;return e},USE:"use",STRICT:"strict",watchFns:function(){var a=[],b=this.state.inputs,d=this;q(b,function(b){a.push("var "+b+"="+d.generateFunction(b,"s"))});b.length&&a.push("fn.inputs=["+b.join(",")+"];");return a.join("")},generateFunction:function(a,b){return"function("+b+"){"+this.varsPrefix(a)+this.body(a)+"};"},filterPrefix:function(){var a=[],b=this;q(this.state.filters,
1576 function(d,c){a.push(d+"=$filter("+b.escape(c)+")")});return a.length?"var "+a.join(",")+";":""},varsPrefix:function(a){return this.state[a].vars.length?"var "+this.state[a].vars.join(",")+";":""},body:function(a){return this.state[a].body.join("")},recurse:function(a,b,d,c,e,f){var g,h,k=this,l,n;c=c||C;if(!f&&x(a.watchId))b=b||this.nextId(),this.if_("i",this.lazyAssign(b,this.computedMember("i",a.watchId)),this.lazyRecurse(a,b,d,c,e,!0));else switch(a.type){case s.Program:q(a.body,function(b,c){k.recurse(b.expression,
1576 function(d,c){a.push(d+"=$filter("+b.escape(c)+")")});return a.length?"var "+a.join(",")+";":""},varsPrefix:function(a){return this.state[a].vars.length?"var "+this.state[a].vars.join(",")+";":""},body:function(a){return this.state[a].body.join("")},recurse:function(a,b,d,c,e,f){var g,h,k=this,l,n;c=c||C;if(!f&&x(a.watchId))b=b||this.nextId(),this.if_("i",this.lazyAssign(b,this.computedMember("i",a.watchId)),this.lazyRecurse(a,b,d,c,e,!0));else switch(a.type){case s.Program:q(a.body,function(b,c){k.recurse(b.expression,
1577 void 0,void 0,function(a){h=a});c!==a.body.length-1?k.current().body.push(h,";"):k.return_(h)});break;case s.Literal:n=this.escape(a.value);this.assign(b,n);c(n);break;case s.UnaryExpression:this.recurse(a.argument,void 0,void 0,function(a){h=a});n=a.operator+"("+this.ifDefined(h,0)+")";this.assign(b,n);c(n);break;case s.BinaryExpression:this.recurse(a.left,void 0,void 0,function(a){g=a});this.recurse(a.right,void 0,void 0,function(a){h=a});n="+"===a.operator?this.plus(g,h):"-"===a.operator?this.ifDefined(g,
1577 void 0,void 0,function(a){h=a});c!==a.body.length-1?k.current().body.push(h,";"):k.return_(h)});break;case s.Literal:n=this.escape(a.value);this.assign(b,n);c(n);break;case s.UnaryExpression:this.recurse(a.argument,void 0,void 0,function(a){h=a});n=a.operator+"("+this.ifDefined(h,0)+")";this.assign(b,n);c(n);break;case s.BinaryExpression:this.recurse(a.left,void 0,void 0,function(a){g=a});this.recurse(a.right,void 0,void 0,function(a){h=a});n="+"===a.operator?this.plus(g,h):"-"===a.operator?this.ifDefined(g,
1578 0)+a.operator+this.ifDefined(h,0):"("+g+")"+a.operator+"("+h+")";this.assign(b,n);c(n);break;case s.LogicalExpression:b=b||this.nextId();k.recurse(a.left,b);k.if_("&&"===a.operator?b:k.not(b),k.lazyRecurse(a.right,b));c(b);break;case s.ConditionalExpression:b=b||this.nextId();k.recurse(a.test,b);k.if_(b,k.lazyRecurse(a.alternate,b),k.lazyRecurse(a.consequent,b));c(b);break;case s.Identifier:b=b||this.nextId();d&&(d.context="inputs"===k.stage?"s":this.assign(this.nextId(),this.getHasOwnProperty("l",
1578 0)+a.operator+this.ifDefined(h,0):"("+g+")"+a.operator+"("+h+")";this.assign(b,n);c(n);break;case s.LogicalExpression:b=b||this.nextId();k.recurse(a.left,b);k.if_("&&"===a.operator?b:k.not(b),k.lazyRecurse(a.right,b));c(b);break;case s.ConditionalExpression:b=b||this.nextId();k.recurse(a.test,b);k.if_(b,k.lazyRecurse(a.alternate,b),k.lazyRecurse(a.consequent,b));c(b);break;case s.Identifier:b=b||this.nextId();d&&(d.context="inputs"===k.stage?"s":this.assign(this.nextId(),this.getHasOwnProperty("l",
1579 a.name)+"?l:s"),d.computed=!1,d.name=a.name);Ta(a.name);k.if_("inputs"===k.stage||k.not(k.getHasOwnProperty("l",a.name)),function(){k.if_("inputs"===k.stage||"s",function(){e&&1!==e&&k.if_(k.not(k.nonComputedMember("s",a.name)),k.lazyAssign(k.nonComputedMember("s",a.name),"{}"));k.assign(b,k.nonComputedMember("s",a.name))})},b&&k.lazyAssign(b,k.nonComputedMember("l",a.name)));(k.state.expensiveChecks||Hb(a.name))&&k.addEnsureSafeObject(b);c(b);break;case s.MemberExpression:g=d&&(d.context=this.nextId())||
1579 a.name)+"?l:s"),d.computed=!1,d.name=a.name);Ta(a.name);k.if_("inputs"===k.stage||k.not(k.getHasOwnProperty("l",a.name)),function(){k.if_("inputs"===k.stage||"s",function(){e&&1!==e&&k.if_(k.not(k.nonComputedMember("s",a.name)),k.lazyAssign(k.nonComputedMember("s",a.name),"{}"));k.assign(b,k.nonComputedMember("s",a.name))})},b&&k.lazyAssign(b,k.nonComputedMember("l",a.name)));(k.state.expensiveChecks||Hb(a.name))&&k.addEnsureSafeObject(b);c(b);break;case s.MemberExpression:g=d&&(d.context=this.nextId())||
1580 this.nextId();b=b||this.nextId();k.recurse(a.object,g,void 0,function(){k.if_(k.notNull(g),function(){e&&1!==e&&k.addEnsureSafeAssignContext(g);if(a.computed)h=k.nextId(),k.recurse(a.property,h),k.getStringValue(h),k.addEnsureSafeMemberName(h),e&&1!==e&&k.if_(k.not(k.computedMember(g,h)),k.lazyAssign(k.computedMember(g,h),"{}")),n=k.ensureSafeObject(k.computedMember(g,h)),k.assign(b,n),d&&(d.computed=!0,d.name=h);else{Ta(a.property.name);e&&1!==e&&k.if_(k.not(k.nonComputedMember(g,a.property.name)),
1580 this.nextId();b=b||this.nextId();k.recurse(a.object,g,void 0,function(){k.if_(k.notNull(g),function(){e&&1!==e&&k.addEnsureSafeAssignContext(g);if(a.computed)h=k.nextId(),k.recurse(a.property,h),k.getStringValue(h),k.addEnsureSafeMemberName(h),e&&1!==e&&k.if_(k.not(k.computedMember(g,h)),k.lazyAssign(k.computedMember(g,h),"{}")),n=k.ensureSafeObject(k.computedMember(g,h)),k.assign(b,n),d&&(d.computed=!0,d.name=h);else{Ta(a.property.name);e&&1!==e&&k.if_(k.not(k.nonComputedMember(g,a.property.name)),
1581 k.lazyAssign(k.nonComputedMember(g,a.property.name),"{}"));n=k.nonComputedMember(g,a.property.name);if(k.state.expensiveChecks||Hb(a.property.name))n=k.ensureSafeObject(n);k.assign(b,n);d&&(d.computed=!1,d.name=a.property.name)}},function(){k.assign(b,"undefined")});c(b)},!!e);break;case s.CallExpression:b=b||this.nextId();a.filter?(h=k.filter(a.callee.name),l=[],q(a.arguments,function(a){var b=k.nextId();k.recurse(a,b);l.push(b)}),n=h+"("+l.join(",")+")",k.assign(b,n),c(b)):(h=k.nextId(),g={},l=
1581 k.lazyAssign(k.nonComputedMember(g,a.property.name),"{}"));n=k.nonComputedMember(g,a.property.name);if(k.state.expensiveChecks||Hb(a.property.name))n=k.ensureSafeObject(n);k.assign(b,n);d&&(d.computed=!1,d.name=a.property.name)}},function(){k.assign(b,"undefined")});c(b)},!!e);break;case s.CallExpression:b=b||this.nextId();a.filter?(h=k.filter(a.callee.name),l=[],q(a.arguments,function(a){var b=k.nextId();k.recurse(a,b);l.push(b)}),n=h+"("+l.join(",")+")",k.assign(b,n),c(b)):(h=k.nextId(),g={},l=
1582 [],k.recurse(a.callee,h,g,function(){k.if_(k.notNull(h),function(){k.addEnsureSafeFunction(h);q(a.arguments,function(a){k.recurse(a,k.nextId(),void 0,function(a){l.push(k.ensureSafeObject(a))})});g.name?(k.state.expensiveChecks||k.addEnsureSafeObject(g.context),n=k.member(g.context,g.name,g.computed)+"("+l.join(",")+")"):n=h+"("+l.join(",")+")";n=k.ensureSafeObject(n);k.assign(b,n)},function(){k.assign(b,"undefined")});c(b)}));break;case s.AssignmentExpression:h=this.nextId();g={};if(!pd(a.left))throw ca("lval");
1582 [],k.recurse(a.callee,h,g,function(){k.if_(k.notNull(h),function(){k.addEnsureSafeFunction(h);q(a.arguments,function(a){k.recurse(a,k.nextId(),void 0,function(a){l.push(k.ensureSafeObject(a))})});g.name?(k.state.expensiveChecks||k.addEnsureSafeObject(g.context),n=k.member(g.context,g.name,g.computed)+"("+l.join(",")+")"):n=h+"("+l.join(",")+")";n=k.ensureSafeObject(n);k.assign(b,n)},function(){k.assign(b,"undefined")});c(b)}));break;case s.AssignmentExpression:h=this.nextId();g={};if(!pd(a.left))throw ca("lval");
1583 this.recurse(a.left,void 0,g,function(){k.if_(k.notNull(g.context),function(){k.recurse(a.right,h);k.addEnsureSafeObject(k.member(g.context,g.name,g.computed));k.addEnsureSafeAssignContext(g.context);n=k.member(g.context,g.name,g.computed)+a.operator+h;k.assign(b,n);c(b||n)})},1);break;case s.ArrayExpression:l=[];q(a.elements,function(a){k.recurse(a,k.nextId(),void 0,function(a){l.push(a)})});n="["+l.join(",")+"]";this.assign(b,n);c(n);break;case s.ObjectExpression:l=[];q(a.properties,function(a){k.recurse(a.value,
1583 this.recurse(a.left,void 0,g,function(){k.if_(k.notNull(g.context),function(){k.recurse(a.right,h);k.addEnsureSafeObject(k.member(g.context,g.name,g.computed));k.addEnsureSafeAssignContext(g.context);n=k.member(g.context,g.name,g.computed)+a.operator+h;k.assign(b,n);c(b||n)})},1);break;case s.ArrayExpression:l=[];q(a.elements,function(a){k.recurse(a,k.nextId(),void 0,function(a){l.push(a)})});n="["+l.join(",")+"]";this.assign(b,n);c(n);break;case s.ObjectExpression:l=[];q(a.properties,function(a){k.recurse(a.value,
1584 k.nextId(),void 0,function(b){l.push(k.escape(a.key.type===s.Identifier?a.key.name:""+a.key.value)+":"+b)})});n="{"+l.join(",")+"}";this.assign(b,n);c(n);break;case s.ThisExpression:this.assign(b,"s");c("s");break;case s.LocalsExpression:this.assign(b,"l");c("l");break;case s.NGValueParameter:this.assign(b,"v"),c("v")}},getHasOwnProperty:function(a,b){var d=a+"."+b,c=this.current().own;c.hasOwnProperty(d)||(c[d]=this.nextId(!1,a+"&&("+this.escape(b)+" in "+a+")"));return c[d]},assign:function(a,b){if(a)return this.current().body.push(a,
1584 k.nextId(),void 0,function(b){l.push(k.escape(a.key.type===s.Identifier?a.key.name:""+a.key.value)+":"+b)})});n="{"+l.join(",")+"}";this.assign(b,n);c(n);break;case s.ThisExpression:this.assign(b,"s");c("s");break;case s.LocalsExpression:this.assign(b,"l");c("l");break;case s.NGValueParameter:this.assign(b,"v"),c("v")}},getHasOwnProperty:function(a,b){var d=a+"."+b,c=this.current().own;c.hasOwnProperty(d)||(c[d]=this.nextId(!1,a+"&&("+this.escape(b)+" in "+a+")"));return c[d]},assign:function(a,b){if(a)return this.current().body.push(a,
1585 "=",b,";"),a},filter:function(a){this.state.filters.hasOwnProperty(a)||(this.state.filters[a]=this.nextId(!0));return this.state.filters[a]},ifDefined:function(a,b){return"ifDefined("+a+","+this.escape(b)+")"},plus:function(a,b){return"plus("+a+","+b+")"},return_:function(a){this.current().body.push("return ",a,";")},if_:function(a,b,d){if(!0===a)b();else{var c=this.current().body;c.push("if(",a,"){");b();c.push("}");d&&(c.push("else{"),d(),c.push("}"))}},not:function(a){return"!("+a+")"},notNull:function(a){return a+
1585 "=",b,";"),a},filter:function(a){this.state.filters.hasOwnProperty(a)||(this.state.filters[a]=this.nextId(!0));return this.state.filters[a]},ifDefined:function(a,b){return"ifDefined("+a+","+this.escape(b)+")"},plus:function(a,b){return"plus("+a+","+b+")"},return_:function(a){this.current().body.push("return ",a,";")},if_:function(a,b,d){if(!0===a)b();else{var c=this.current().body;c.push("if(",a,"){");b();c.push("}");d&&(c.push("else{"),d(),c.push("}"))}},not:function(a){return"!("+a+")"},notNull:function(a){return a+
1586 "!=null"},nonComputedMember:function(a,b){var d=/[^$_a-zA-Z0-9]/g;return/[$_a-zA-Z][$_a-zA-Z0-9]*/.test(b)?a+"."+b:a+'["'+b.replace(d,this.stringEscapeFn)+'"]'},computedMember:function(a,b){return a+"["+b+"]"},member:function(a,b,d){return d?this.computedMember(a,b):this.nonComputedMember(a,b)},addEnsureSafeObject:function(a){this.current().body.push(this.ensureSafeObject(a),";")},addEnsureSafeMemberName:function(a){this.current().body.push(this.ensureSafeMemberName(a),";")},addEnsureSafeFunction:function(a){this.current().body.push(this.ensureSafeFunction(a),
1586 "!=null"},nonComputedMember:function(a,b){var d=/[^$_a-zA-Z0-9]/g;return/[$_a-zA-Z][$_a-zA-Z0-9]*/.test(b)?a+"."+b:a+'["'+b.replace(d,this.stringEscapeFn)+'"]'},computedMember:function(a,b){return a+"["+b+"]"},member:function(a,b,d){return d?this.computedMember(a,b):this.nonComputedMember(a,b)},addEnsureSafeObject:function(a){this.current().body.push(this.ensureSafeObject(a),";")},addEnsureSafeMemberName:function(a){this.current().body.push(this.ensureSafeMemberName(a),";")},addEnsureSafeFunction:function(a){this.current().body.push(this.ensureSafeFunction(a),
1587 ";")},addEnsureSafeAssignContext:function(a){this.current().body.push(this.ensureSafeAssignContext(a),";")},ensureSafeObject:function(a){return"ensureSafeObject("+a+",text)"},ensureSafeMemberName:function(a){return"ensureSafeMemberName("+a+",text)"},ensureSafeFunction:function(a){return"ensureSafeFunction("+a+",text)"},getStringValue:function(a){this.assign(a,"getStringValue("+a+")")},ensureSafeAssignContext:function(a){return"ensureSafeAssignContext("+a+",text)"},lazyRecurse:function(a,b,d,c,e,f){var g=
1587 ";")},addEnsureSafeAssignContext:function(a){this.current().body.push(this.ensureSafeAssignContext(a),";")},ensureSafeObject:function(a){return"ensureSafeObject("+a+",text)"},ensureSafeMemberName:function(a){return"ensureSafeMemberName("+a+",text)"},ensureSafeFunction:function(a){return"ensureSafeFunction("+a+",text)"},getStringValue:function(a){this.assign(a,"getStringValue("+a+")")},ensureSafeAssignContext:function(a){return"ensureSafeAssignContext("+a+",text)"},lazyRecurse:function(a,b,d,c,e,f){var g=
1588 this;return function(){g.recurse(a,b,d,c,e,f)}},lazyAssign:function(a,b){var d=this;return function(){d.assign(a,b)}},stringEscapeRegex:/[^ a-zA-Z0-9]/g,stringEscapeFn:function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)},escape:function(a){if(F(a))return"'"+a.replace(this.stringEscapeRegex,this.stringEscapeFn)+"'";if(Q(a))return a.toString();if(!0===a)return"true";if(!1===a)return"false";if(null===a)return"null";if("undefined"===typeof a)return"undefined";throw ca("esc");},nextId:function(a,
1588 this;return function(){g.recurse(a,b,d,c,e,f)}},lazyAssign:function(a,b){var d=this;return function(){d.assign(a,b)}},stringEscapeRegex:/[^ a-zA-Z0-9]/g,stringEscapeFn:function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)},escape:function(a){if(F(a))return"'"+a.replace(this.stringEscapeRegex,this.stringEscapeFn)+"'";if(Q(a))return a.toString();if(!0===a)return"true";if(!1===a)return"false";if(null===a)return"null";if("undefined"===typeof a)return"undefined";throw ca("esc");},nextId:function(a,
1589 b){var d="v"+this.state.nextId++;a||this.current().vars.push(d+(b?"="+b:""));return d},current:function(){return this.state[this.state.computing]}};td.prototype={compile:function(a,b){var d=this,c=this.astBuilder.ast(a);this.expression=a;this.expensiveChecks=b;aa(c,d.$filter);var e,f;if(e=qd(c))f=this.recurse(e);e=od(c.body);var g;e&&(g=[],q(e,function(a,b){var c=d.recurse(a);a.input=c;g.push(c);a.watchId=b}));var h=[];q(c.body,function(a){h.push(d.recurse(a.expression))});e=0===c.body.length?C:1===
1589 b){var d="v"+this.state.nextId++;a||this.current().vars.push(d+(b?"="+b:""));return d},current:function(){return this.state[this.state.computing]}};td.prototype={compile:function(a,b){var d=this,c=this.astBuilder.ast(a);this.expression=a;this.expensiveChecks=b;aa(c,d.$filter);var e,f;if(e=qd(c))f=this.recurse(e);e=od(c.body);var g;e&&(g=[],q(e,function(a,b){var c=d.recurse(a);a.input=c;g.push(c);a.watchId=b}));var h=[];q(c.body,function(a){h.push(d.recurse(a.expression))});e=0===c.body.length?C:1===
1590 c.body.length?h[0]:function(a,b){var c;q(h,function(d){c=d(a,b)});return c};f&&(e.assign=function(a,b,c){return f(a,c,b)});g&&(e.inputs=g);e.literal=rd(c);e.constant=c.constant;return e},recurse:function(a,b,d){var c,e,f=this,g;if(a.input)return this.inputs(a.input,a.watchId);switch(a.type){case s.Literal:return this.value(a.value,b);case s.UnaryExpression:return e=this.recurse(a.argument),this["unary"+a.operator](e,b);case s.BinaryExpression:return c=this.recurse(a.left),e=this.recurse(a.right),
1590 c.body.length?h[0]:function(a,b){var c;q(h,function(d){c=d(a,b)});return c};f&&(e.assign=function(a,b,c){return f(a,c,b)});g&&(e.inputs=g);e.literal=rd(c);e.constant=c.constant;return e},recurse:function(a,b,d){var c,e,f=this,g;if(a.input)return this.inputs(a.input,a.watchId);switch(a.type){case s.Literal:return this.value(a.value,b);case s.UnaryExpression:return e=this.recurse(a.argument),this["unary"+a.operator](e,b);case s.BinaryExpression:return c=this.recurse(a.left),e=this.recurse(a.right),
1591 this["binary"+a.operator](c,e,b);case s.LogicalExpression:return c=this.recurse(a.left),e=this.recurse(a.right),this["binary"+a.operator](c,e,b);case s.ConditionalExpression:return this["ternary?:"](this.recurse(a.test),this.recurse(a.alternate),this.recurse(a.consequent),b);case s.Identifier:return Ta(a.name,f.expression),f.identifier(a.name,f.expensiveChecks||Hb(a.name),b,d,f.expression);case s.MemberExpression:return c=this.recurse(a.object,!1,!!d),a.computed||(Ta(a.property.name,f.expression),
1591 this["binary"+a.operator](c,e,b);case s.LogicalExpression:return c=this.recurse(a.left),e=this.recurse(a.right),this["binary"+a.operator](c,e,b);case s.ConditionalExpression:return this["ternary?:"](this.recurse(a.test),this.recurse(a.alternate),this.recurse(a.consequent),b);case s.Identifier:return Ta(a.name,f.expression),f.identifier(a.name,f.expensiveChecks||Hb(a.name),b,d,f.expression);case s.MemberExpression:return c=this.recurse(a.object,!1,!!d),a.computed||(Ta(a.property.name,f.expression),
1592 e=a.property.name),a.computed&&(e=this.recurse(a.property)),a.computed?this.computedMember(c,e,b,d,f.expression):this.nonComputedMember(c,e,f.expensiveChecks,b,d,f.expression);case s.CallExpression:return g=[],q(a.arguments,function(a){g.push(f.recurse(a))}),a.filter&&(e=this.$filter(a.callee.name)),a.filter||(e=this.recurse(a.callee,!0)),a.filter?function(a,c,d,f){for(var m=[],r=0;r<g.length;++r)m.push(g[r](a,c,d,f));a=e.apply(void 0,m,f);return b?{context:void 0,name:void 0,value:a}:a}:function(a,
1592 e=a.property.name),a.computed&&(e=this.recurse(a.property)),a.computed?this.computedMember(c,e,b,d,f.expression):this.nonComputedMember(c,e,f.expensiveChecks,b,d,f.expression);case s.CallExpression:return g=[],q(a.arguments,function(a){g.push(f.recurse(a))}),a.filter&&(e=this.$filter(a.callee.name)),a.filter||(e=this.recurse(a.callee,!0)),a.filter?function(a,c,d,f){for(var m=[],r=0;r<g.length;++r)m.push(g[r](a,c,d,f));a=e.apply(void 0,m,f);return b?{context:void 0,name:void 0,value:a}:a}:function(a,
1593 c,d,n){var m=e(a,c,d,n),r;if(null!=m.value){sa(m.context,f.expression);md(m.value,f.expression);r=[];for(var q=0;q<g.length;++q)r.push(sa(g[q](a,c,d,n),f.expression));r=sa(m.value.apply(m.context,r),f.expression)}return b?{value:r}:r};case s.AssignmentExpression:return c=this.recurse(a.left,!0,1),e=this.recurse(a.right),function(a,d,g,n){var m=c(a,d,g,n);a=e(a,d,g,n);sa(m.value,f.expression);Gb(m.context);m.context[m.name]=a;return b?{value:a}:a};case s.ArrayExpression:return g=[],q(a.elements,function(a){g.push(f.recurse(a))}),
1593 c,d,n){var m=e(a,c,d,n),r;if(null!=m.value){sa(m.context,f.expression);md(m.value,f.expression);r=[];for(var q=0;q<g.length;++q)r.push(sa(g[q](a,c,d,n),f.expression));r=sa(m.value.apply(m.context,r),f.expression)}return b?{value:r}:r};case s.AssignmentExpression:return c=this.recurse(a.left,!0,1),e=this.recurse(a.right),function(a,d,g,n){var m=c(a,d,g,n);a=e(a,d,g,n);sa(m.value,f.expression);Gb(m.context);m.context[m.name]=a;return b?{value:a}:a};case s.ArrayExpression:return g=[],q(a.elements,function(a){g.push(f.recurse(a))}),
1594 function(a,c,d,e){for(var f=[],r=0;r<g.length;++r)f.push(g[r](a,c,d,e));return b?{value:f}:f};case s.ObjectExpression:return g=[],q(a.properties,function(a){g.push({key:a.key.type===s.Identifier?a.key.name:""+a.key.value,value:f.recurse(a.value)})}),function(a,c,d,e){for(var f={},r=0;r<g.length;++r)f[g[r].key]=g[r].value(a,c,d,e);return b?{value:f}:f};case s.ThisExpression:return function(a){return b?{value:a}:a};case s.LocalsExpression:return function(a,c){return b?{value:c}:c};case s.NGValueParameter:return function(a,
1594 function(a,c,d,e){for(var f=[],r=0;r<g.length;++r)f.push(g[r](a,c,d,e));return b?{value:f}:f};case s.ObjectExpression:return g=[],q(a.properties,function(a){g.push({key:a.key.type===s.Identifier?a.key.name:""+a.key.value,value:f.recurse(a.value)})}),function(a,c,d,e){for(var f={},r=0;r<g.length;++r)f[g[r].key]=g[r].value(a,c,d,e);return b?{value:f}:f};case s.ThisExpression:return function(a){return b?{value:a}:a};case s.LocalsExpression:return function(a,c){return b?{value:c}:c};case s.NGValueParameter:return function(a,
1595 c,d){return b?{value:d}:d}}},"unary+":function(a,b){return function(d,c,e,f){d=a(d,c,e,f);d=x(d)?+d:0;return b?{value:d}:d}},"unary-":function(a,b){return function(d,c,e,f){d=a(d,c,e,f);d=x(d)?-d:0;return b?{value:d}:d}},"unary!":function(a,b){return function(d,c,e,f){d=!a(d,c,e,f);return b?{value:d}:d}},"binary+":function(a,b,d){return function(c,e,f,g){var h=a(c,e,f,g);c=b(c,e,f,g);h=nd(h,c);return d?{value:h}:h}},"binary-":function(a,b,d){return function(c,e,f,g){var h=a(c,e,f,g);c=b(c,e,f,g);
1595 c,d){return b?{value:d}:d}}},"unary+":function(a,b){return function(d,c,e,f){d=a(d,c,e,f);d=x(d)?+d:0;return b?{value:d}:d}},"unary-":function(a,b){return function(d,c,e,f){d=a(d,c,e,f);d=x(d)?-d:0;return b?{value:d}:d}},"unary!":function(a,b){return function(d,c,e,f){d=!a(d,c,e,f);return b?{value:d}:d}},"binary+":function(a,b,d){return function(c,e,f,g){var h=a(c,e,f,g);c=b(c,e,f,g);h=nd(h,c);return d?{value:h}:h}},"binary-":function(a,b,d){return function(c,e,f,g){var h=a(c,e,f,g);c=b(c,e,f,g);
1596 h=(x(h)?h:0)-(x(c)?c:0);return d?{value:h}:h}},"binary*":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,g)*b(c,e,f,g);return d?{value:c}:c}},"binary/":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,g)/b(c,e,f,g);return d?{value:c}:c}},"binary%":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,g)%b(c,e,f,g);return d?{value:c}:c}},"binary===":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,g)===b(c,e,f,g);return d?{value:c}:c}},"binary!==":function(a,b,d){return function(c,e,f,g){c=a(c,
1596 h=(x(h)?h:0)-(x(c)?c:0);return d?{value:h}:h}},"binary*":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,g)*b(c,e,f,g);return d?{value:c}:c}},"binary/":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,g)/b(c,e,f,g);return d?{value:c}:c}},"binary%":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,g)%b(c,e,f,g);return d?{value:c}:c}},"binary===":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,g)===b(c,e,f,g);return d?{value:c}:c}},"binary!==":function(a,b,d){return function(c,e,f,g){c=a(c,
1597 e,f,g)!==b(c,e,f,g);return d?{value:c}:c}},"binary==":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,g)==b(c,e,f,g);return d?{value:c}:c}},"binary!=":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,g)!=b(c,e,f,g);return d?{value:c}:c}},"binary<":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,g)<b(c,e,f,g);return d?{value:c}:c}},"binary>":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,g)>b(c,e,f,g);return d?{value:c}:c}},"binary<=":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,
1597 e,f,g)!==b(c,e,f,g);return d?{value:c}:c}},"binary==":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,g)==b(c,e,f,g);return d?{value:c}:c}},"binary!=":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,g)!=b(c,e,f,g);return d?{value:c}:c}},"binary<":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,g)<b(c,e,f,g);return d?{value:c}:c}},"binary>":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,g)>b(c,e,f,g);return d?{value:c}:c}},"binary<=":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,
1598 g)<=b(c,e,f,g);return d?{value:c}:c}},"binary>=":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,g)>=b(c,e,f,g);return d?{value:c}:c}},"binary&&":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,g)&&b(c,e,f,g);return d?{value:c}:c}},"binary||":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,g)||b(c,e,f,g);return d?{value:c}:c}},"ternary?:":function(a,b,d,c){return function(e,f,g,h){e=a(e,f,g,h)?b(e,f,g,h):d(e,f,g,h);return c?{value:e}:e}},value:function(a,b){return function(){return b?{context:void 0,
1598 g)<=b(c,e,f,g);return d?{value:c}:c}},"binary>=":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,g)>=b(c,e,f,g);return d?{value:c}:c}},"binary&&":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,g)&&b(c,e,f,g);return d?{value:c}:c}},"binary||":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,g)||b(c,e,f,g);return d?{value:c}:c}},"ternary?:":function(a,b,d,c){return function(e,f,g,h){e=a(e,f,g,h)?b(e,f,g,h):d(e,f,g,h);return c?{value:e}:e}},value:function(a,b){return function(){return b?{context:void 0,
1599 name:void 0,value:a}:a}},identifier:function(a,b,d,c,e){return function(f,g,h,k){f=g&&a in g?g:f;c&&1!==c&&f&&!f[a]&&(f[a]={});g=f?f[a]:void 0;b&&sa(g,e);return d?{context:f,name:a,value:g}:g}},computedMember:function(a,b,d,c,e){return function(f,g,h,k){var l=a(f,g,h,k),n,m;null!=l&&(n=b(f,g,h,k),n+="",Ta(n,e),c&&1!==c&&(Gb(l),l&&!l[n]&&(l[n]={})),m=l[n],sa(m,e));return d?{context:l,name:n,value:m}:m}},nonComputedMember:function(a,b,d,c,e,f){return function(g,h,k,l){g=a(g,h,k,l);e&&1!==e&&(Gb(g),
1599 name:void 0,value:a}:a}},identifier:function(a,b,d,c,e){return function(f,g,h,k){f=g&&a in g?g:f;c&&1!==c&&f&&!f[a]&&(f[a]={});g=f?f[a]:void 0;b&&sa(g,e);return d?{context:f,name:a,value:g}:g}},computedMember:function(a,b,d,c,e){return function(f,g,h,k){var l=a(f,g,h,k),n,m;null!=l&&(n=b(f,g,h,k),n+="",Ta(n,e),c&&1!==c&&(Gb(l),l&&!l[n]&&(l[n]={})),m=l[n],sa(m,e));return d?{context:l,name:n,value:m}:m}},nonComputedMember:function(a,b,d,c,e,f){return function(g,h,k,l){g=a(g,h,k,l);e&&1!==e&&(Gb(g),
1600 g&&!g[b]&&(g[b]={}));h=null!=g?g[b]:void 0;(d||Hb(b))&&sa(h,f);return c?{context:g,name:b,value:h}:h}},inputs:function(a,b){return function(d,c,e,f){return f?f[b]:a(d,c,e)}}};var hc=function(a,b,d){this.lexer=a;this.$filter=b;this.options=d;this.ast=new s(a,d);this.astCompiler=d.csp?new td(this.ast,b):new sd(this.ast,b)};hc.prototype={constructor:hc,parse:function(a){return this.astCompiler.compile(a,this.options.expensiveChecks)}};var kg=Object.prototype.valueOf,ta=O("$sce"),oa={HTML:"html",CSS:"css",
1600 g&&!g[b]&&(g[b]={}));h=null!=g?g[b]:void 0;(d||Hb(b))&&sa(h,f);return c?{context:g,name:b,value:h}:h}},inputs:function(a,b){return function(d,c,e,f){return f?f[b]:a(d,c,e)}}};var hc=function(a,b,d){this.lexer=a;this.$filter=b;this.options=d;this.ast=new s(a,d);this.astCompiler=d.csp?new td(this.ast,b):new sd(this.ast,b)};hc.prototype={constructor:hc,parse:function(a){return this.astCompiler.compile(a,this.options.expensiveChecks)}};var kg=Object.prototype.valueOf,ta=O("$sce"),oa={HTML:"html",CSS:"css",
1601 URL:"url",RESOURCE_URL:"resourceUrl",JS:"js"},mg=O("$compile"),Y=v.document.createElement("a"),xd=ra(v.location.href);yd.$inject=["$document"];Jc.$inject=["$provide"];var Fd=22,Ed=".",jc="0";zd.$inject=["$locale"];Bd.$inject=["$locale"];var xg={yyyy:W("FullYear",4,0,!1,!0),yy:W("FullYear",2,0,!0,!0),y:W("FullYear",1,0,!1,!0),MMMM:ib("Month"),MMM:ib("Month",!0),MM:W("Month",2,1),M:W("Month",1,1),LLLL:ib("Month",!1,!0),dd:W("Date",2),d:W("Date",1),HH:W("Hours",2),H:W("Hours",1),hh:W("Hours",2,-12),
1601 URL:"url",RESOURCE_URL:"resourceUrl",JS:"js"},mg=O("$compile"),Y=v.document.createElement("a"),xd=ra(v.location.href);yd.$inject=["$document"];Jc.$inject=["$provide"];var Fd=22,Ed=".",jc="0";zd.$inject=["$locale"];Bd.$inject=["$locale"];var xg={yyyy:W("FullYear",4,0,!1,!0),yy:W("FullYear",2,0,!0,!0),y:W("FullYear",1,0,!1,!0),MMMM:ib("Month"),MMM:ib("Month",!0),MM:W("Month",2,1),M:W("Month",1,1),LLLL:ib("Month",!1,!0),dd:W("Date",2),d:W("Date",1),HH:W("Hours",2),H:W("Hours",1),hh:W("Hours",2,-12),
1602 h:W("Hours",1,-12),mm:W("Minutes",2),m:W("Minutes",1),ss:W("Seconds",2),s:W("Seconds",1),sss:W("Milliseconds",3),EEEE:ib("Day"),EEE:ib("Day",!0),a:function(a,b){return 12>a.getHours()?b.AMPMS[0]:b.AMPMS[1]},Z:function(a,b,d){a=-1*d;return a=(0<=a?"+":"")+(Ib(Math[0<a?"floor":"ceil"](a/60),2)+Ib(Math.abs(a%60),2))},ww:Hd(2),w:Hd(1),G:kc,GG:kc,GGG:kc,GGGG:function(a,b){return 0>=a.getFullYear()?b.ERANAMES[0]:b.ERANAMES[1]}},wg=/((?:[^yMLdHhmsaZEwG']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|L+|d+|H+|h+|m+|s+|a|Z|G+|w+))(.*)/,
1602 h:W("Hours",1,-12),mm:W("Minutes",2),m:W("Minutes",1),ss:W("Seconds",2),s:W("Seconds",1),sss:W("Milliseconds",3),EEEE:ib("Day"),EEE:ib("Day",!0),a:function(a,b){return 12>a.getHours()?b.AMPMS[0]:b.AMPMS[1]},Z:function(a,b,d){a=-1*d;return a=(0<=a?"+":"")+(Ib(Math[0<a?"floor":"ceil"](a/60),2)+Ib(Math.abs(a%60),2))},ww:Hd(2),w:Hd(1),G:kc,GG:kc,GGG:kc,GGGG:function(a,b){return 0>=a.getFullYear()?b.ERANAMES[0]:b.ERANAMES[1]}},wg=/((?:[^yMLdHhmsaZEwG']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|L+|d+|H+|h+|m+|s+|a|Z|G+|w+))(.*)/,
1603 vg=/^\-?\d+$/;Ad.$inject=["$locale"];var qg=da(P),rg=da(sb);Cd.$inject=["$parse"];var ne=da({restrict:"E",compile:function(a,b){if(!b.href&&!b.xlinkHref)return function(a,b){if("a"===b[0].nodeName.toLowerCase()){var e="[object SVGAnimatedString]"===ma.call(b.prop("href"))?"xlink:href":"href";b.on("click",function(a){b.attr(e)||a.preventDefault()})}}}}),tb={};q(Cb,function(a,b){function d(a,d,e){a.$watch(e[c],function(a){e.$set(b,!!a)})}if("multiple"!=a){var c=xa("ng-"+b),e=d;"checked"===a&&(e=function(a,
1603 vg=/^\-?\d+$/;Ad.$inject=["$locale"];var qg=da(P),rg=da(sb);Cd.$inject=["$parse"];var ne=da({restrict:"E",compile:function(a,b){if(!b.href&&!b.xlinkHref)return function(a,b){if("a"===b[0].nodeName.toLowerCase()){var e="[object SVGAnimatedString]"===ma.call(b.prop("href"))?"xlink:href":"href";b.on("click",function(a){b.attr(e)||a.preventDefault()})}}}}),tb={};q(Cb,function(a,b){function d(a,d,e){a.$watch(e[c],function(a){e.$set(b,!!a)})}if("multiple"!=a){var c=xa("ng-"+b),e=d;"checked"===a&&(e=function(a,
1604 b,e){e.ngModel!==e[c]&&d(a,b,e)});tb[c]=function(){return{restrict:"A",priority:100,link:e}}}});q(ad,function(a,b){tb[b]=function(){return{priority:100,link:function(a,c,e){if("ngPattern"===b&&"/"==e.ngPattern.charAt(0)&&(c=e.ngPattern.match(zg))){e.$set("ngPattern",new RegExp(c[1],c[2]));return}a.$watch(e[b],function(a){e.$set(b,a)})}}}});q(["src","srcset","href"],function(a){var b=xa("ng-"+a);tb[b]=function(){return{priority:99,link:function(d,c,e){var f=a,g=a;"href"===a&&"[object SVGAnimatedString]"===
1604 b,e){e.ngModel!==e[c]&&d(a,b,e)});tb[c]=function(){return{restrict:"A",priority:100,link:e}}}});q(ad,function(a,b){tb[b]=function(){return{priority:100,link:function(a,c,e){if("ngPattern"===b&&"/"==e.ngPattern.charAt(0)&&(c=e.ngPattern.match(zg))){e.$set("ngPattern",new RegExp(c[1],c[2]));return}a.$watch(e[b],function(a){e.$set(b,a)})}}}});q(["src","srcset","href"],function(a){var b=xa("ng-"+a);tb[b]=function(){return{priority:99,link:function(d,c,e){var f=a,g=a;"href"===a&&"[object SVGAnimatedString]"===
1605 ma.call(c.prop("href"))&&(g="xlinkHref",e.$attr[g]="xlink:href",f=null);e.$observe(b,function(b){b?(e.$set(g,b),Ca&&f&&c.prop(f,e[g])):"href"===a&&e.$set(g,null)})}}}});var Jb={$addControl:C,$$renameControl:function(a,b){a.$name=b},$removeControl:C,$setValidity:C,$setDirty:C,$setPristine:C,$setSubmitted:C};Id.$inject=["$element","$attrs","$scope","$animate","$interpolate"];var Rd=function(a){return["$timeout","$parse",function(b,d){function c(a){return""===a?d('this[""]').assign:d(a).assign||C}return{name:"form",
1605 ma.call(c.prop("href"))&&(g="xlinkHref",e.$attr[g]="xlink:href",f=null);e.$observe(b,function(b){b?(e.$set(g,b),Ca&&f&&c.prop(f,e[g])):"href"===a&&e.$set(g,null)})}}}});var Jb={$addControl:C,$$renameControl:function(a,b){a.$name=b},$removeControl:C,$setValidity:C,$setDirty:C,$setPristine:C,$setSubmitted:C};Id.$inject=["$element","$attrs","$scope","$animate","$interpolate"];var Rd=function(a){return["$timeout","$parse",function(b,d){function c(a){return""===a?d('this[""]').assign:d(a).assign||C}return{name:"form",
1606 restrict:a?"EAC":"E",require:["form","^^?form"],controller:Id,compile:function(d,f){d.addClass(Ua).addClass(mb);var g=f.name?"name":a&&f.ngForm?"ngForm":!1;return{pre:function(a,d,e,f){var m=f[0];if(!("action"in e)){var r=function(b){a.$apply(function(){m.$commitViewValue();m.$setSubmitted()});b.preventDefault()};d[0].addEventListener("submit",r,!1);d.on("$destroy",function(){b(function(){d[0].removeEventListener("submit",r,!1)},0,!1)})}(f[1]||m.$$parentForm).$addControl(m);var q=g?c(m.$name):C;g&&
1606 restrict:a?"EAC":"E",require:["form","^^?form"],controller:Id,compile:function(d,f){d.addClass(Ua).addClass(mb);var g=f.name?"name":a&&f.ngForm?"ngForm":!1;return{pre:function(a,d,e,f){var m=f[0];if(!("action"in e)){var r=function(b){a.$apply(function(){m.$commitViewValue();m.$setSubmitted()});b.preventDefault()};d[0].addEventListener("submit",r,!1);d.on("$destroy",function(){b(function(){d[0].removeEventListener("submit",r,!1)},0,!1)})}(f[1]||m.$$parentForm).$addControl(m);var q=g?c(m.$name):C;g&&
1607 (q(a,m),e.$observe(g,function(b){m.$name!==b&&(q(a,void 0),m.$$parentForm.$$renameControl(m,b),q=c(m.$name),q(a,m))}));d.on("$destroy",function(){m.$$parentForm.$removeControl(m);q(a,void 0);R(m,Jb)})}}}}}]},oe=Rd(),Be=Rd(!0),yg=/^\d{4,}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+(?:[+-][0-2]\d:[0-5]\d|Z)$/,Hg=/^[a-z][a-z\d.+-]*:\/*(?:[^:@]+(?::[^@]+)?@)?(?:[^\s:/?#]+|\[[a-f\d:]+\])(?::\d+)?(?:\/[^?#]*)?(?:\?[^#]*)?(?:#.*)?$/i,Ig=/^[a-z0-9!#$%&'*+\/=?^_`{|}~.-]+@[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i,
1607 (q(a,m),e.$observe(g,function(b){m.$name!==b&&(q(a,void 0),m.$$parentForm.$$renameControl(m,b),q=c(m.$name),q(a,m))}));d.on("$destroy",function(){m.$$parentForm.$removeControl(m);q(a,void 0);R(m,Jb)})}}}}}]},oe=Rd(),Be=Rd(!0),yg=/^\d{4,}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+(?:[+-][0-2]\d:[0-5]\d|Z)$/,Hg=/^[a-z][a-z\d.+-]*:\/*(?:[^:@]+(?::[^@]+)?@)?(?:[^\s:/?#]+|\[[a-f\d:]+\])(?::\d+)?(?:\/[^?#]*)?(?:\?[^#]*)?(?:#.*)?$/i,Ig=/^[a-z0-9!#$%&'*+\/=?^_`{|}~.-]+@[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i,
1608 Jg=/^\s*(\-|\+)?(\d+|(\d*(\.\d*)))([eE][+-]?\d+)?\s*$/,Sd=/^(\d{4,})-(\d{2})-(\d{2})$/,Td=/^(\d{4,})-(\d\d)-(\d\d)T(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/,nc=/^(\d{4,})-W(\d\d)$/,Ud=/^(\d{4,})-(\d\d)$/,Vd=/^(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/,Kd=T();q(["date","datetime-local","month","time","week"],function(a){Kd[a]=!0});var Wd={text:function(a,b,d,c,e,f){jb(a,b,d,c,e,f);lc(c)},date:kb("date",Sd,Lb(Sd,["yyyy","MM","dd"]),"yyyy-MM-dd"),"datetime-local":kb("datetimelocal",Td,Lb(Td,"yyyy MM dd HH mm ss sss".split(" ")),
1608 Jg=/^\s*(\-|\+)?(\d+|(\d*(\.\d*)))([eE][+-]?\d+)?\s*$/,Sd=/^(\d{4,})-(\d{2})-(\d{2})$/,Td=/^(\d{4,})-(\d\d)-(\d\d)T(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/,nc=/^(\d{4,})-W(\d\d)$/,Ud=/^(\d{4,})-(\d\d)$/,Vd=/^(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/,Kd=T();q(["date","datetime-local","month","time","week"],function(a){Kd[a]=!0});var Wd={text:function(a,b,d,c,e,f){jb(a,b,d,c,e,f);lc(c)},date:kb("date",Sd,Lb(Sd,["yyyy","MM","dd"]),"yyyy-MM-dd"),"datetime-local":kb("datetimelocal",Td,Lb(Td,"yyyy MM dd HH mm ss sss".split(" ")),
1609 "yyyy-MM-ddTHH:mm:ss.sss"),time:kb("time",Vd,Lb(Vd,["HH","mm","ss","sss"]),"HH:mm:ss.sss"),week:kb("week",nc,function(a,b){if(fa(a))return a;if(F(a)){nc.lastIndex=0;var d=nc.exec(a);if(d){var c=+d[1],e=+d[2],f=d=0,g=0,h=0,k=Gd(c),e=7*(e-1);b&&(d=b.getHours(),f=b.getMinutes(),g=b.getSeconds(),h=b.getMilliseconds());return new Date(c,0,k.getDate()+e,d,f,g,h)}}return NaN},"yyyy-Www"),month:kb("month",Ud,Lb(Ud,["yyyy","MM"]),"yyyy-MM"),number:function(a,b,d,c,e,f){Ld(a,b,d,c);jb(a,b,d,c,e,f);c.$$parserName=
1609 "yyyy-MM-ddTHH:mm:ss.sss"),time:kb("time",Vd,Lb(Vd,["HH","mm","ss","sss"]),"HH:mm:ss.sss"),week:kb("week",nc,function(a,b){if(fa(a))return a;if(F(a)){nc.lastIndex=0;var d=nc.exec(a);if(d){var c=+d[1],e=+d[2],f=d=0,g=0,h=0,k=Gd(c),e=7*(e-1);b&&(d=b.getHours(),f=b.getMinutes(),g=b.getSeconds(),h=b.getMilliseconds());return new Date(c,0,k.getDate()+e,d,f,g,h)}}return NaN},"yyyy-Www"),month:kb("month",Ud,Lb(Ud,["yyyy","MM"]),"yyyy-MM"),number:function(a,b,d,c,e,f){Ld(a,b,d,c);jb(a,b,d,c,e,f);c.$$parserName=
1610 "number";c.$parsers.push(function(a){if(c.$isEmpty(a))return null;if(Jg.test(a))return parseFloat(a)});c.$formatters.push(function(a){if(!c.$isEmpty(a)){if(!Q(a))throw lb("numfmt",a);a=a.toString()}return a});if(x(d.min)||d.ngMin){var g;c.$validators.min=function(a){return c.$isEmpty(a)||y(g)||a>=g};d.$observe("min",function(a){x(a)&&!Q(a)&&(a=parseFloat(a,10));g=Q(a)&&!isNaN(a)?a:void 0;c.$validate()})}if(x(d.max)||d.ngMax){var h;c.$validators.max=function(a){return c.$isEmpty(a)||y(h)||a<=h};d.$observe("max",
1610 "number";c.$parsers.push(function(a){if(c.$isEmpty(a))return null;if(Jg.test(a))return parseFloat(a)});c.$formatters.push(function(a){if(!c.$isEmpty(a)){if(!Q(a))throw lb("numfmt",a);a=a.toString()}return a});if(x(d.min)||d.ngMin){var g;c.$validators.min=function(a){return c.$isEmpty(a)||y(g)||a>=g};d.$observe("min",function(a){x(a)&&!Q(a)&&(a=parseFloat(a,10));g=Q(a)&&!isNaN(a)?a:void 0;c.$validate()})}if(x(d.max)||d.ngMax){var h;c.$validators.max=function(a){return c.$isEmpty(a)||y(h)||a<=h};d.$observe("max",
1611 function(a){x(a)&&!Q(a)&&(a=parseFloat(a,10));h=Q(a)&&!isNaN(a)?a:void 0;c.$validate()})}},url:function(a,b,d,c,e,f){jb(a,b,d,c,e,f);lc(c);c.$$parserName="url";c.$validators.url=function(a,b){var d=a||b;return c.$isEmpty(d)||Hg.test(d)}},email:function(a,b,d,c,e,f){jb(a,b,d,c,e,f);lc(c);c.$$parserName="email";c.$validators.email=function(a,b){var d=a||b;return c.$isEmpty(d)||Ig.test(d)}},radio:function(a,b,d,c){y(d.name)&&b.attr("name",++nb);b.on("click",function(a){b[0].checked&&c.$setViewValue(d.value,
1611 function(a){x(a)&&!Q(a)&&(a=parseFloat(a,10));h=Q(a)&&!isNaN(a)?a:void 0;c.$validate()})}},url:function(a,b,d,c,e,f){jb(a,b,d,c,e,f);lc(c);c.$$parserName="url";c.$validators.url=function(a,b){var d=a||b;return c.$isEmpty(d)||Hg.test(d)}},email:function(a,b,d,c,e,f){jb(a,b,d,c,e,f);lc(c);c.$$parserName="email";c.$validators.email=function(a,b){var d=a||b;return c.$isEmpty(d)||Ig.test(d)}},radio:function(a,b,d,c){y(d.name)&&b.attr("name",++nb);b.on("click",function(a){b[0].checked&&c.$setViewValue(d.value,
1612 a&&a.type)});c.$render=function(){b[0].checked=d.value==c.$viewValue};d.$observe("value",c.$render)},checkbox:function(a,b,d,c,e,f,g,h){var k=Md(h,a,"ngTrueValue",d.ngTrueValue,!0),l=Md(h,a,"ngFalseValue",d.ngFalseValue,!1);b.on("click",function(a){c.$setViewValue(b[0].checked,a&&a.type)});c.$render=function(){b[0].checked=c.$viewValue};c.$isEmpty=function(a){return!1===a};c.$formatters.push(function(a){return pa(a,k)});c.$parsers.push(function(a){return a?k:l})},hidden:C,button:C,submit:C,reset:C,
1612 a&&a.type)});c.$render=function(){b[0].checked=d.value==c.$viewValue};d.$observe("value",c.$render)},checkbox:function(a,b,d,c,e,f,g,h){var k=Md(h,a,"ngTrueValue",d.ngTrueValue,!0),l=Md(h,a,"ngFalseValue",d.ngFalseValue,!1);b.on("click",function(a){c.$setViewValue(b[0].checked,a&&a.type)});c.$render=function(){b[0].checked=c.$viewValue};c.$isEmpty=function(a){return!1===a};c.$formatters.push(function(a){return pa(a,k)});c.$parsers.push(function(a){return a?k:l})},hidden:C,button:C,submit:C,reset:C,
1613 file:C},Dc=["$browser","$sniffer","$filter","$parse",function(a,b,d,c){return{restrict:"E",require:["?ngModel"],link:{pre:function(e,f,g,h){h[0]&&(Wd[P(g.type)]||Wd.text)(e,f,g,h[0],b,a,d,c)}}}}],Kg=/^(true|false|\d+)$/,Te=function(){return{restrict:"A",priority:100,compile:function(a,b){return Kg.test(b.ngValue)?function(a,b,e){e.$set("value",a.$eval(e.ngValue))}:function(a,b,e){a.$watch(e.ngValue,function(a){e.$set("value",a)})}}}},te=["$compile",function(a){return{restrict:"AC",compile:function(b){a.$$addBindingClass(b);
1613 file:C},Dc=["$browser","$sniffer","$filter","$parse",function(a,b,d,c){return{restrict:"E",require:["?ngModel"],link:{pre:function(e,f,g,h){h[0]&&(Wd[P(g.type)]||Wd.text)(e,f,g,h[0],b,a,d,c)}}}}],Kg=/^(true|false|\d+)$/,Te=function(){return{restrict:"A",priority:100,compile:function(a,b){return Kg.test(b.ngValue)?function(a,b,e){e.$set("value",a.$eval(e.ngValue))}:function(a,b,e){a.$watch(e.ngValue,function(a){e.$set("value",a)})}}}},te=["$compile",function(a){return{restrict:"AC",compile:function(b){a.$$addBindingClass(b);
1614 return function(b,c,e){a.$$addBindingInfo(c,e.ngBind);c=c[0];b.$watch(e.ngBind,function(a){c.textContent=y(a)?"":a})}}}}],ve=["$interpolate","$compile",function(a,b){return{compile:function(d){b.$$addBindingClass(d);return function(c,d,f){c=a(d.attr(f.$attr.ngBindTemplate));b.$$addBindingInfo(d,c.expressions);d=d[0];f.$observe("ngBindTemplate",function(a){d.textContent=y(a)?"":a})}}}}],ue=["$sce","$parse","$compile",function(a,b,d){return{restrict:"A",compile:function(c,e){var f=b(e.ngBindHtml),g=
1614 return function(b,c,e){a.$$addBindingInfo(c,e.ngBind);c=c[0];b.$watch(e.ngBind,function(a){c.textContent=y(a)?"":a})}}}}],ve=["$interpolate","$compile",function(a,b){return{compile:function(d){b.$$addBindingClass(d);return function(c,d,f){c=a(d.attr(f.$attr.ngBindTemplate));b.$$addBindingInfo(d,c.expressions);d=d[0];f.$observe("ngBindTemplate",function(a){d.textContent=y(a)?"":a})}}}}],ue=["$sce","$parse","$compile",function(a,b,d){return{restrict:"A",compile:function(c,e){var f=b(e.ngBindHtml),g=
1615 b(e.ngBindHtml,function(a){return(a||"").toString()});d.$$addBindingClass(c);return function(b,c,e){d.$$addBindingInfo(c,e.ngBindHtml);b.$watch(g,function(){c.html(a.getTrustedHtml(f(b))||"")})}}}}],Se=da({restrict:"A",require:"ngModel",link:function(a,b,d,c){c.$viewChangeListeners.push(function(){a.$eval(d.ngChange)})}}),we=mc("",!0),ye=mc("Odd",0),xe=mc("Even",1),ze=La({compile:function(a,b){b.$set("ngCloak",void 0);a.removeClass("ng-cloak")}}),Ae=[function(){return{restrict:"A",scope:!0,controller:"@",
1615 b(e.ngBindHtml,function(a){return(a||"").toString()});d.$$addBindingClass(c);return function(b,c,e){d.$$addBindingInfo(c,e.ngBindHtml);b.$watch(g,function(){c.html(a.getTrustedHtml(f(b))||"")})}}}}],Se=da({restrict:"A",require:"ngModel",link:function(a,b,d,c){c.$viewChangeListeners.push(function(){a.$eval(d.ngChange)})}}),we=mc("",!0),ye=mc("Odd",0),xe=mc("Even",1),ze=La({compile:function(a,b){b.$set("ngCloak",void 0);a.removeClass("ng-cloak")}}),Ae=[function(){return{restrict:"A",scope:!0,controller:"@",
1616 priority:500}}],Ic={},Lg={blur:!0,focus:!0};q("click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur copy cut paste".split(" "),function(a){var b=xa("ng-"+a);Ic[b]=["$parse","$rootScope",function(d,c){return{restrict:"A",compile:function(e,f){var g=d(f[b],null,!0);return function(b,d){d.on(a,function(d){var e=function(){g(b,{$event:d})};Lg[a]&&c.$$phase?b.$evalAsync(e):b.$apply(e)})}}}}]});var De=["$animate","$compile",function(a,
1616 priority:500}}],Ic={},Lg={blur:!0,focus:!0};q("click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur copy cut paste".split(" "),function(a){var b=xa("ng-"+a);Ic[b]=["$parse","$rootScope",function(d,c){return{restrict:"A",compile:function(e,f){var g=d(f[b],null,!0);return function(b,d){d.on(a,function(d){var e=function(){g(b,{$event:d})};Lg[a]&&c.$$phase?b.$evalAsync(e):b.$apply(e)})}}}}]});var De=["$animate","$compile",function(a,
1617 b){return{multiElement:!0,transclude:"element",priority:600,terminal:!0,restrict:"A",$$tlb:!0,link:function(d,c,e,f,g){var h,k,l;d.$watch(e.ngIf,function(d){d?k||g(function(d,f){k=f;d[d.length++]=b.$$createComment("end ngIf",e.ngIf);h={clone:d};a.enter(d,c.parent(),c)}):(l&&(l.remove(),l=null),k&&(k.$destroy(),k=null),h&&(l=rb(h.clone),a.leave(l).then(function(){l=null}),h=null))})}}}],Ee=["$templateRequest","$anchorScroll","$animate",function(a,b,d){return{restrict:"ECA",priority:400,terminal:!0,
1617 b){return{multiElement:!0,transclude:"element",priority:600,terminal:!0,restrict:"A",$$tlb:!0,link:function(d,c,e,f,g){var h,k,l;d.$watch(e.ngIf,function(d){d?k||g(function(d,f){k=f;d[d.length++]=b.$$createComment("end ngIf",e.ngIf);h={clone:d};a.enter(d,c.parent(),c)}):(l&&(l.remove(),l=null),k&&(k.$destroy(),k=null),h&&(l=rb(h.clone),a.leave(l).then(function(){l=null}),h=null))})}}}],Ee=["$templateRequest","$anchorScroll","$animate",function(a,b,d){return{restrict:"ECA",priority:400,terminal:!0,
1618 transclude:"element",controller:ea.noop,compile:function(c,e){var f=e.ngInclude||e.src,g=e.onload||"",h=e.autoscroll;return function(c,e,n,m,r){var q=0,s,w,p,y=function(){w&&(w.remove(),w=null);s&&(s.$destroy(),s=null);p&&(d.leave(p).then(function(){w=null}),w=p,p=null)};c.$watch(f,function(f){var n=function(){!x(h)||h&&!c.$eval(h)||b()},u=++q;f?(a(f,!0).then(function(a){if(!c.$$destroyed&&u===q){var b=c.$new();m.template=a;a=r(b,function(a){y();d.enter(a,null,e).then(n)});s=b;p=a;s.$emit("$includeContentLoaded",
1618 transclude:"element",controller:ea.noop,compile:function(c,e){var f=e.ngInclude||e.src,g=e.onload||"",h=e.autoscroll;return function(c,e,n,m,r){var q=0,s,w,p,y=function(){w&&(w.remove(),w=null);s&&(s.$destroy(),s=null);p&&(d.leave(p).then(function(){w=null}),w=p,p=null)};c.$watch(f,function(f){var n=function(){!x(h)||h&&!c.$eval(h)||b()},u=++q;f?(a(f,!0).then(function(a){if(!c.$$destroyed&&u===q){var b=c.$new();m.template=a;a=r(b,function(a){y();d.enter(a,null,e).then(n)});s=b;p=a;s.$emit("$includeContentLoaded",
1619 f);c.$eval(g)}},function(){c.$$destroyed||u!==q||(y(),c.$emit("$includeContentError",f))}),c.$emit("$includeContentRequested",f)):(y(),m.template=null)})}}}}],Ve=["$compile",function(a){return{restrict:"ECA",priority:-400,require:"ngInclude",link:function(b,d,c,e){ma.call(d[0]).match(/SVG/)?(d.empty(),a(Lc(e.template,v.document).childNodes)(b,function(a){d.append(a)},{futureParentElement:d})):(d.html(e.template),a(d.contents())(b))}}}],Fe=La({priority:450,compile:function(){return{pre:function(a,
1619 f);c.$eval(g)}},function(){c.$$destroyed||u!==q||(y(),c.$emit("$includeContentError",f))}),c.$emit("$includeContentRequested",f)):(y(),m.template=null)})}}}}],Ve=["$compile",function(a){return{restrict:"ECA",priority:-400,require:"ngInclude",link:function(b,d,c,e){ma.call(d[0]).match(/SVG/)?(d.empty(),a(Lc(e.template,v.document).childNodes)(b,function(a){d.append(a)},{futureParentElement:d})):(d.html(e.template),a(d.contents())(b))}}}],Fe=La({priority:450,compile:function(){return{pre:function(a,
1620 b,d){a.$eval(d.ngInit)}}}}),Re=function(){return{restrict:"A",priority:100,require:"ngModel",link:function(a,b,d,c){var e=b.attr(d.$attr.ngList)||", ",f="false"!==d.ngTrim,g=f?V(e):e;c.$parsers.push(function(a){if(!y(a)){var b=[];a&&q(a.split(g),function(a){a&&b.push(f?V(a):a)});return b}});c.$formatters.push(function(a){if(K(a))return a.join(e)});c.$isEmpty=function(a){return!a||!a.length}}}},mb="ng-valid",Nd="ng-invalid",Ua="ng-pristine",Kb="ng-dirty",Pd="ng-pending",lb=O("ngModel"),Mg=["$scope",
1620 b,d){a.$eval(d.ngInit)}}}}),Re=function(){return{restrict:"A",priority:100,require:"ngModel",link:function(a,b,d,c){var e=b.attr(d.$attr.ngList)||", ",f="false"!==d.ngTrim,g=f?V(e):e;c.$parsers.push(function(a){if(!y(a)){var b=[];a&&q(a.split(g),function(a){a&&b.push(f?V(a):a)});return b}});c.$formatters.push(function(a){if(K(a))return a.join(e)});c.$isEmpty=function(a){return!a||!a.length}}}},mb="ng-valid",Nd="ng-invalid",Ua="ng-pristine",Kb="ng-dirty",Pd="ng-pending",lb=O("ngModel"),Mg=["$scope",
1621 "$exceptionHandler","$attrs","$element","$parse","$animate","$timeout","$rootScope","$q","$interpolate",function(a,b,d,c,e,f,g,h,k,l){this.$modelValue=this.$viewValue=Number.NaN;this.$$rawModelValue=void 0;this.$validators={};this.$asyncValidators={};this.$parsers=[];this.$formatters=[];this.$viewChangeListeners=[];this.$untouched=!0;this.$touched=!1;this.$pristine=!0;this.$dirty=!1;this.$valid=!0;this.$invalid=!1;this.$error={};this.$$success={};this.$pending=void 0;this.$name=l(d.name||"",!1)(a);
1621 "$exceptionHandler","$attrs","$element","$parse","$animate","$timeout","$rootScope","$q","$interpolate",function(a,b,d,c,e,f,g,h,k,l){this.$modelValue=this.$viewValue=Number.NaN;this.$$rawModelValue=void 0;this.$validators={};this.$asyncValidators={};this.$parsers=[];this.$formatters=[];this.$viewChangeListeners=[];this.$untouched=!0;this.$touched=!1;this.$pristine=!0;this.$dirty=!1;this.$valid=!0;this.$invalid=!1;this.$error={};this.$$success={};this.$pending=void 0;this.$name=l(d.name||"",!1)(a);
1622 this.$$parentForm=Jb;var n=e(d.ngModel),m=n.assign,r=n,s=m,v=null,w,p=this;this.$$setOptions=function(a){if((p.$options=a)&&a.getterSetter){var b=e(d.ngModel+"()"),f=e(d.ngModel+"($$$p)");r=function(a){var c=n(a);E(c)&&(c=b(a));return c};s=function(a,b){E(n(a))?f(a,{$$$p:b}):m(a,b)}}else if(!n.assign)throw lb("nonassign",d.ngModel,wa(c));};this.$render=C;this.$isEmpty=function(a){return y(a)||""===a||null===a||a!==a};this.$$updateEmptyClasses=function(a){p.$isEmpty(a)?(f.removeClass(c,"ng-not-empty"),
1622 this.$$parentForm=Jb;var n=e(d.ngModel),m=n.assign,r=n,s=m,v=null,w,p=this;this.$$setOptions=function(a){if((p.$options=a)&&a.getterSetter){var b=e(d.ngModel+"()"),f=e(d.ngModel+"($$$p)");r=function(a){var c=n(a);E(c)&&(c=b(a));return c};s=function(a,b){E(n(a))?f(a,{$$$p:b}):m(a,b)}}else if(!n.assign)throw lb("nonassign",d.ngModel,wa(c));};this.$render=C;this.$isEmpty=function(a){return y(a)||""===a||null===a||a!==a};this.$$updateEmptyClasses=function(a){p.$isEmpty(a)?(f.removeClass(c,"ng-not-empty"),
1623 f.addClass(c,"ng-empty")):(f.removeClass(c,"ng-empty"),f.addClass(c,"ng-not-empty"))};var H=0;Jd({ctrl:this,$element:c,set:function(a,b){a[b]=!0},unset:function(a,b){delete a[b]},$animate:f});this.$setPristine=function(){p.$dirty=!1;p.$pristine=!0;f.removeClass(c,Kb);f.addClass(c,Ua)};this.$setDirty=function(){p.$dirty=!0;p.$pristine=!1;f.removeClass(c,Ua);f.addClass(c,Kb);p.$$parentForm.$setDirty()};this.$setUntouched=function(){p.$touched=!1;p.$untouched=!0;f.setClass(c,"ng-untouched","ng-touched")};
1623 f.addClass(c,"ng-empty")):(f.removeClass(c,"ng-empty"),f.addClass(c,"ng-not-empty"))};var H=0;Jd({ctrl:this,$element:c,set:function(a,b){a[b]=!0},unset:function(a,b){delete a[b]},$animate:f});this.$setPristine=function(){p.$dirty=!1;p.$pristine=!0;f.removeClass(c,Kb);f.addClass(c,Ua)};this.$setDirty=function(){p.$dirty=!0;p.$pristine=!1;f.removeClass(c,Ua);f.addClass(c,Kb);p.$$parentForm.$setDirty()};this.$setUntouched=function(){p.$touched=!1;p.$untouched=!0;f.setClass(c,"ng-untouched","ng-touched")};
1624 this.$setTouched=function(){p.$touched=!0;p.$untouched=!1;f.setClass(c,"ng-touched","ng-untouched")};this.$rollbackViewValue=function(){g.cancel(v);p.$viewValue=p.$$lastCommittedViewValue;p.$render()};this.$validate=function(){if(!Q(p.$modelValue)||!isNaN(p.$modelValue)){var a=p.$$rawModelValue,b=p.$valid,c=p.$modelValue,d=p.$options&&p.$options.allowInvalid;p.$$runValidators(a,p.$$lastCommittedViewValue,function(e){d||b===e||(p.$modelValue=e?a:void 0,p.$modelValue!==c&&p.$$writeModelToScope())})}};
1624 this.$setTouched=function(){p.$touched=!0;p.$untouched=!1;f.setClass(c,"ng-touched","ng-untouched")};this.$rollbackViewValue=function(){g.cancel(v);p.$viewValue=p.$$lastCommittedViewValue;p.$render()};this.$validate=function(){if(!Q(p.$modelValue)||!isNaN(p.$modelValue)){var a=p.$$rawModelValue,b=p.$valid,c=p.$modelValue,d=p.$options&&p.$options.allowInvalid;p.$$runValidators(a,p.$$lastCommittedViewValue,function(e){d||b===e||(p.$modelValue=e?a:void 0,p.$modelValue!==c&&p.$$writeModelToScope())})}};
1625 this.$$runValidators=function(a,b,c){function d(){var c=!0;q(p.$validators,function(d,e){var g=d(a,b);c=c&&g;f(e,g)});return c?!0:(q(p.$asyncValidators,function(a,b){f(b,null)}),!1)}function e(){var c=[],d=!0;q(p.$asyncValidators,function(e,g){var h=e(a,b);if(!h||!E(h.then))throw lb("nopromise",h);f(g,void 0);c.push(h.then(function(){f(g,!0)},function(){d=!1;f(g,!1)}))});c.length?k.all(c).then(function(){g(d)},C):g(!0)}function f(a,b){h===H&&p.$setValidity(a,b)}function g(a){h===H&&c(a)}H++;var h=
1625 this.$$runValidators=function(a,b,c){function d(){var c=!0;q(p.$validators,function(d,e){var g=d(a,b);c=c&&g;f(e,g)});return c?!0:(q(p.$asyncValidators,function(a,b){f(b,null)}),!1)}function e(){var c=[],d=!0;q(p.$asyncValidators,function(e,g){var h=e(a,b);if(!h||!E(h.then))throw lb("nopromise",h);f(g,void 0);c.push(h.then(function(){f(g,!0)},function(){d=!1;f(g,!1)}))});c.length?k.all(c).then(function(){g(d)},C):g(!0)}function f(a,b){h===H&&p.$setValidity(a,b)}function g(a){h===H&&c(a)}H++;var h=
1626 H;(function(){var a=p.$$parserName||"parse";if(y(w))f(a,null);else return w||(q(p.$validators,function(a,b){f(b,null)}),q(p.$asyncValidators,function(a,b){f(b,null)})),f(a,w),w;return!0})()?d()?e():g(!1):g(!1)};this.$commitViewValue=function(){var a=p.$viewValue;g.cancel(v);if(p.$$lastCommittedViewValue!==a||""===a&&p.$$hasNativeValidators)p.$$updateEmptyClasses(a),p.$$lastCommittedViewValue=a,p.$pristine&&this.$setDirty(),this.$$parseAndValidate()};this.$$parseAndValidate=function(){var b=p.$$lastCommittedViewValue;
1626 H;(function(){var a=p.$$parserName||"parse";if(y(w))f(a,null);else return w||(q(p.$validators,function(a,b){f(b,null)}),q(p.$asyncValidators,function(a,b){f(b,null)})),f(a,w),w;return!0})()?d()?e():g(!1):g(!1)};this.$commitViewValue=function(){var a=p.$viewValue;g.cancel(v);if(p.$$lastCommittedViewValue!==a||""===a&&p.$$hasNativeValidators)p.$$updateEmptyClasses(a),p.$$lastCommittedViewValue=a,p.$pristine&&this.$setDirty(),this.$$parseAndValidate()};this.$$parseAndValidate=function(){var b=p.$$lastCommittedViewValue;
1627 if(w=y(b)?void 0:!0)for(var c=0;c<p.$parsers.length;c++)if(b=p.$parsers[c](b),y(b)){w=!1;break}Q(p.$modelValue)&&isNaN(p.$modelValue)&&(p.$modelValue=r(a));var d=p.$modelValue,e=p.$options&&p.$options.allowInvalid;p.$$rawModelValue=b;e&&(p.$modelValue=b,p.$modelValue!==d&&p.$$writeModelToScope());p.$$runValidators(b,p.$$lastCommittedViewValue,function(a){e||(p.$modelValue=a?b:void 0,p.$modelValue!==d&&p.$$writeModelToScope())})};this.$$writeModelToScope=function(){s(a,p.$modelValue);q(p.$viewChangeListeners,
1627 if(w=y(b)?void 0:!0)for(var c=0;c<p.$parsers.length;c++)if(b=p.$parsers[c](b),y(b)){w=!1;break}Q(p.$modelValue)&&isNaN(p.$modelValue)&&(p.$modelValue=r(a));var d=p.$modelValue,e=p.$options&&p.$options.allowInvalid;p.$$rawModelValue=b;e&&(p.$modelValue=b,p.$modelValue!==d&&p.$$writeModelToScope());p.$$runValidators(b,p.$$lastCommittedViewValue,function(a){e||(p.$modelValue=a?b:void 0,p.$modelValue!==d&&p.$$writeModelToScope())})};this.$$writeModelToScope=function(){s(a,p.$modelValue);q(p.$viewChangeListeners,
1628 function(a){try{a()}catch(c){b(c)}})};this.$setViewValue=function(a,b){p.$viewValue=a;p.$options&&!p.$options.updateOnDefault||p.$$debounceViewValueCommit(b)};this.$$debounceViewValueCommit=function(b){var c=0,d=p.$options;d&&x(d.debounce)&&(d=d.debounce,Q(d)?c=d:Q(d[b])?c=d[b]:Q(d["default"])&&(c=d["default"]));g.cancel(v);c?v=g(function(){p.$commitViewValue()},c):h.$$phase?p.$commitViewValue():a.$apply(function(){p.$commitViewValue()})};a.$watch(function(){var b=r(a);if(b!==p.$modelValue&&(p.$modelValue===
1628 function(a){try{a()}catch(c){b(c)}})};this.$setViewValue=function(a,b){p.$viewValue=a;p.$options&&!p.$options.updateOnDefault||p.$$debounceViewValueCommit(b)};this.$$debounceViewValueCommit=function(b){var c=0,d=p.$options;d&&x(d.debounce)&&(d=d.debounce,Q(d)?c=d:Q(d[b])?c=d[b]:Q(d["default"])&&(c=d["default"]));g.cancel(v);c?v=g(function(){p.$commitViewValue()},c):h.$$phase?p.$commitViewValue():a.$apply(function(){p.$commitViewValue()})};a.$watch(function(){var b=r(a);if(b!==p.$modelValue&&(p.$modelValue===
1629 p.$modelValue||b===b)){p.$modelValue=p.$$rawModelValue=b;w=void 0;for(var c=p.$formatters,d=c.length,e=b;d--;)e=c[d](e);p.$viewValue!==e&&(p.$$updateEmptyClasses(e),p.$viewValue=p.$$lastCommittedViewValue=e,p.$render(),p.$$runValidators(b,e,C))}return b})}],Qe=["$rootScope",function(a){return{restrict:"A",require:["ngModel","^?form","^?ngModelOptions"],controller:Mg,priority:1,compile:function(b){b.addClass(Ua).addClass("ng-untouched").addClass(mb);return{pre:function(a,b,e,f){var g=f[0];b=f[1]||
1629 p.$modelValue||b===b)){p.$modelValue=p.$$rawModelValue=b;w=void 0;for(var c=p.$formatters,d=c.length,e=b;d--;)e=c[d](e);p.$viewValue!==e&&(p.$$updateEmptyClasses(e),p.$viewValue=p.$$lastCommittedViewValue=e,p.$render(),p.$$runValidators(b,e,C))}return b})}],Qe=["$rootScope",function(a){return{restrict:"A",require:["ngModel","^?form","^?ngModelOptions"],controller:Mg,priority:1,compile:function(b){b.addClass(Ua).addClass("ng-untouched").addClass(mb);return{pre:function(a,b,e,f){var g=f[0];b=f[1]||
1630 g.$$parentForm;g.$$setOptions(f[2]&&f[2].$options);b.$addControl(g);e.$observe("name",function(a){g.$name!==a&&g.$$parentForm.$$renameControl(g,a)});a.$on("$destroy",function(){g.$$parentForm.$removeControl(g)})},post:function(b,c,e,f){var g=f[0];if(g.$options&&g.$options.updateOn)c.on(g.$options.updateOn,function(a){g.$$debounceViewValueCommit(a&&a.type)});c.on("blur",function(){g.$touched||(a.$$phase?b.$evalAsync(g.$setTouched):b.$apply(g.$setTouched))})}}}}}],Ng=/(\s+|^)default(\s+|$)/,Ue=function(){return{restrict:"A",
1630 g.$$parentForm;g.$$setOptions(f[2]&&f[2].$options);b.$addControl(g);e.$observe("name",function(a){g.$name!==a&&g.$$parentForm.$$renameControl(g,a)});a.$on("$destroy",function(){g.$$parentForm.$removeControl(g)})},post:function(b,c,e,f){var g=f[0];if(g.$options&&g.$options.updateOn)c.on(g.$options.updateOn,function(a){g.$$debounceViewValueCommit(a&&a.type)});c.on("blur",function(){g.$touched||(a.$$phase?b.$evalAsync(g.$setTouched):b.$apply(g.$setTouched))})}}}}}],Ng=/(\s+|^)default(\s+|$)/,Ue=function(){return{restrict:"A",
1631 controller:["$scope","$attrs",function(a,b){var d=this;this.$options=qa(a.$eval(b.ngModelOptions));x(this.$options.updateOn)?(this.$options.updateOnDefault=!1,this.$options.updateOn=V(this.$options.updateOn.replace(Ng,function(){d.$options.updateOnDefault=!0;return" "}))):this.$options.updateOnDefault=!0}]}},Ge=La({terminal:!0,priority:1E3}),Og=O("ngOptions"),Pg=/^\s*([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+group\s+by\s+([\s\S]+?))?(?:\s+disable\s+when\s+([\s\S]+?))?\s+for\s+(?:([\$\w][\$\w]*)|(?:\(\s*([\$\w][\$\w]*)\s*,\s*([\$\w][\$\w]*)\s*\)))\s+in\s+([\s\S]+?)(?:\s+track\s+by\s+([\s\S]+?))?$/,
1631 controller:["$scope","$attrs",function(a,b){var d=this;this.$options=qa(a.$eval(b.ngModelOptions));x(this.$options.updateOn)?(this.$options.updateOnDefault=!1,this.$options.updateOn=V(this.$options.updateOn.replace(Ng,function(){d.$options.updateOnDefault=!0;return" "}))):this.$options.updateOnDefault=!0}]}},Ge=La({terminal:!0,priority:1E3}),Og=O("ngOptions"),Pg=/^\s*([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+group\s+by\s+([\s\S]+?))?(?:\s+disable\s+when\s+([\s\S]+?))?\s+for\s+(?:([\$\w][\$\w]*)|(?:\(\s*([\$\w][\$\w]*)\s*,\s*([\$\w][\$\w]*)\s*\)))\s+in\s+([\s\S]+?)(?:\s+track\s+by\s+([\s\S]+?))?$/,
1632 Oe=["$compile","$document","$parse",function(a,b,d){function c(a,b,c){function e(a,b,c,d,f){this.selectValue=a;this.viewValue=b;this.label=c;this.group=d;this.disabled=f}function f(a){var b;if(!q&&ya(a))b=a;else{b=[];for(var c in a)a.hasOwnProperty(c)&&"$"!==c.charAt(0)&&b.push(c)}return b}var m=a.match(Pg);if(!m)throw Og("iexp",a,wa(b));var r=m[5]||m[7],q=m[6];a=/ as /.test(m[0])&&m[1];var s=m[9];b=d(m[2]?m[1]:r);var w=a&&d(a)||b,p=s&&d(s),v=s?function(a,b){return p(c,b)}:function(a){return Fa(a)},
1632 Oe=["$compile","$document","$parse",function(a,b,d){function c(a,b,c){function e(a,b,c,d,f){this.selectValue=a;this.viewValue=b;this.label=c;this.group=d;this.disabled=f}function f(a){var b;if(!q&&ya(a))b=a;else{b=[];for(var c in a)a.hasOwnProperty(c)&&"$"!==c.charAt(0)&&b.push(c)}return b}var m=a.match(Pg);if(!m)throw Og("iexp",a,wa(b));var r=m[5]||m[7],q=m[6];a=/ as /.test(m[0])&&m[1];var s=m[9];b=d(m[2]?m[1]:r);var w=a&&d(a)||b,p=s&&d(s),v=s?function(a,b){return p(c,b)}:function(a){return Fa(a)},
1633 t=function(a,b){return v(a,L(a,b))},z=d(m[2]||m[1]),u=d(m[3]||""),y=d(m[4]||""),x=d(m[8]),D={},L=q?function(a,b){D[q]=b;D[r]=a;return D}:function(a){D[r]=a;return D};return{trackBy:s,getTrackByValue:t,getWatchables:d(x,function(a){var b=[];a=a||[];for(var d=f(a),e=d.length,g=0;g<e;g++){var h=a===d?g:d[g],l=a[h],h=L(l,h),l=v(l,h);b.push(l);if(m[2]||m[1])l=z(c,h),b.push(l);m[4]&&(h=y(c,h),b.push(h))}return b}),getOptions:function(){for(var a=[],b={},d=x(c)||[],g=f(d),h=g.length,m=0;m<h;m++){var p=d===
1633 t=function(a,b){return v(a,L(a,b))},z=d(m[2]||m[1]),u=d(m[3]||""),y=d(m[4]||""),x=d(m[8]),D={},L=q?function(a,b){D[q]=b;D[r]=a;return D}:function(a){D[r]=a;return D};return{trackBy:s,getTrackByValue:t,getWatchables:d(x,function(a){var b=[];a=a||[];for(var d=f(a),e=d.length,g=0;g<e;g++){var h=a===d?g:d[g],l=a[h],h=L(l,h),l=v(l,h);b.push(l);if(m[2]||m[1])l=z(c,h),b.push(l);m[4]&&(h=y(c,h),b.push(h))}return b}),getOptions:function(){for(var a=[],b={},d=x(c)||[],g=f(d),h=g.length,m=0;m<h;m++){var p=d===
1634 g?m:g[m],q=L(d[p],p),r=w(c,q),p=v(r,q),D=z(c,q),N=u(c,q),q=y(c,q),r=new e(p,r,D,N,q);a.push(r);b[p]=r}return{items:a,selectValueMap:b,getOptionFromViewValue:function(a){return b[t(a)]},getViewValueFromOption:function(a){return s?ea.copy(a.viewValue):a.viewValue}}}}}var e=v.document.createElement("option"),f=v.document.createElement("optgroup");return{restrict:"A",terminal:!0,require:["select","ngModel"],link:{pre:function(a,b,c,d){d[0].registerOption=C},post:function(d,h,k,l){function n(a,b){a.element=
1634 g?m:g[m],q=L(d[p],p),r=w(c,q),p=v(r,q),D=z(c,q),N=u(c,q),q=y(c,q),r=new e(p,r,D,N,q);a.push(r);b[p]=r}return{items:a,selectValueMap:b,getOptionFromViewValue:function(a){return b[t(a)]},getViewValueFromOption:function(a){return s?ea.copy(a.viewValue):a.viewValue}}}}}var e=v.document.createElement("option"),f=v.document.createElement("optgroup");return{restrict:"A",terminal:!0,require:["select","ngModel"],link:{pre:function(a,b,c,d){d[0].registerOption=C},post:function(d,h,k,l){function n(a,b){a.element=
1635 b;b.disabled=a.disabled;a.label!==b.label&&(b.label=a.label,b.textContent=a.label);a.value!==b.value&&(b.value=a.selectValue)}function m(){var a=u&&r.readValue();if(u)for(var b=u.items.length-1;0<=b;b--){var c=u.items[b];c.group?Bb(c.element.parentNode):Bb(c.element)}u=I.getOptions();var d={};t&&h.prepend(w);u.items.forEach(function(a){var b;if(x(a.group)){b=d[a.group];b||(b=f.cloneNode(!1),E.appendChild(b),b.label=a.group,d[a.group]=b);var c=e.cloneNode(!1)}else b=E,c=e.cloneNode(!1);b.appendChild(c);
1635 b;b.disabled=a.disabled;a.label!==b.label&&(b.label=a.label,b.textContent=a.label);a.value!==b.value&&(b.value=a.selectValue)}function m(){var a=u&&r.readValue();if(u)for(var b=u.items.length-1;0<=b;b--){var c=u.items[b];c.group?Bb(c.element.parentNode):Bb(c.element)}u=I.getOptions();var d={};t&&h.prepend(w);u.items.forEach(function(a){var b;if(x(a.group)){b=d[a.group];b||(b=f.cloneNode(!1),E.appendChild(b),b.label=a.group,d[a.group]=b);var c=e.cloneNode(!1)}else b=E,c=e.cloneNode(!1);b.appendChild(c);
1636 n(a,c)});h[0].appendChild(E);s.$render();s.$isEmpty(a)||(b=r.readValue(),(I.trackBy||v?pa(a,b):a===b)||(s.$setViewValue(b),s.$render()))}var r=l[0],s=l[1],v=k.multiple,w;l=0;for(var p=h.children(),y=p.length;l<y;l++)if(""===p[l].value){w=p.eq(l);break}var t=!!w,z=B(e.cloneNode(!1));z.val("?");var u,I=c(k.ngOptions,h,d),E=b[0].createDocumentFragment();v?(s.$isEmpty=function(a){return!a||0===a.length},r.writeValue=function(a){u.items.forEach(function(a){a.element.selected=!1});a&&a.forEach(function(a){if(a=
1636 n(a,c)});h[0].appendChild(E);s.$render();s.$isEmpty(a)||(b=r.readValue(),(I.trackBy||v?pa(a,b):a===b)||(s.$setViewValue(b),s.$render()))}var r=l[0],s=l[1],v=k.multiple,w;l=0;for(var p=h.children(),y=p.length;l<y;l++)if(""===p[l].value){w=p.eq(l);break}var t=!!w,z=B(e.cloneNode(!1));z.val("?");var u,I=c(k.ngOptions,h,d),E=b[0].createDocumentFragment();v?(s.$isEmpty=function(a){return!a||0===a.length},r.writeValue=function(a){u.items.forEach(function(a){a.element.selected=!1});a&&a.forEach(function(a){if(a=
1637 u.getOptionFromViewValue(a))a.element.selected=!0})},r.readValue=function(){var a=h.val()||[],b=[];q(a,function(a){(a=u.selectValueMap[a])&&!a.disabled&&b.push(u.getViewValueFromOption(a))});return b},I.trackBy&&d.$watchCollection(function(){if(K(s.$viewValue))return s.$viewValue.map(function(a){return I.getTrackByValue(a)})},function(){s.$render()})):(r.writeValue=function(a){var b=u.getOptionFromViewValue(a);b?(h[0].value!==b.selectValue&&(z.remove(),t||w.remove(),h[0].value=b.selectValue,b.element.selected=
1637 u.getOptionFromViewValue(a))a.element.selected=!0})},r.readValue=function(){var a=h.val()||[],b=[];q(a,function(a){(a=u.selectValueMap[a])&&!a.disabled&&b.push(u.getViewValueFromOption(a))});return b},I.trackBy&&d.$watchCollection(function(){if(K(s.$viewValue))return s.$viewValue.map(function(a){return I.getTrackByValue(a)})},function(){s.$render()})):(r.writeValue=function(a){var b=u.getOptionFromViewValue(a);b?(h[0].value!==b.selectValue&&(z.remove(),t||w.remove(),h[0].value=b.selectValue,b.element.selected=
1638 !0),b.element.setAttribute("selected","selected")):null===a||t?(z.remove(),t||h.prepend(w),h.val(""),w.prop("selected",!0),w.attr("selected",!0)):(t||w.remove(),h.prepend(z),h.val("?"),z.prop("selected",!0),z.attr("selected",!0))},r.readValue=function(){var a=u.selectValueMap[h.val()];return a&&!a.disabled?(t||w.remove(),z.remove(),u.getViewValueFromOption(a)):null},I.trackBy&&d.$watch(function(){return I.getTrackByValue(s.$viewValue)},function(){s.$render()}));t?(w.remove(),a(w)(d),w.removeClass("ng-scope")):
1638 !0),b.element.setAttribute("selected","selected")):null===a||t?(z.remove(),t||h.prepend(w),h.val(""),w.prop("selected",!0),w.attr("selected",!0)):(t||w.remove(),h.prepend(z),h.val("?"),z.prop("selected",!0),z.attr("selected",!0))},r.readValue=function(){var a=u.selectValueMap[h.val()];return a&&!a.disabled?(t||w.remove(),z.remove(),u.getViewValueFromOption(a)):null},I.trackBy&&d.$watch(function(){return I.getTrackByValue(s.$viewValue)},function(){s.$render()}));t?(w.remove(),a(w)(d),w.removeClass("ng-scope")):
1639 w=B(e.cloneNode(!1));h.empty();m();d.$watchCollection(I.getWatchables,m)}}}}],He=["$locale","$interpolate","$log",function(a,b,d){var c=/{}/g,e=/^when(Minus)?(.+)$/;return{link:function(f,g,h){function k(a){g.text(a||"")}var l=h.count,n=h.$attr.when&&g.attr(h.$attr.when),m=h.offset||0,r=f.$eval(n)||{},s={},v=b.startSymbol(),w=b.endSymbol(),p=v+l+"-"+m+w,x=ea.noop,t;q(h,function(a,b){var c=e.exec(b);c&&(c=(c[1]?"-":"")+P(c[2]),r[c]=g.attr(h.$attr[b]))});q(r,function(a,d){s[d]=b(a.replace(c,p))});f.$watch(l,
1639 w=B(e.cloneNode(!1));h.empty();m();d.$watchCollection(I.getWatchables,m)}}}}],He=["$locale","$interpolate","$log",function(a,b,d){var c=/{}/g,e=/^when(Minus)?(.+)$/;return{link:function(f,g,h){function k(a){g.text(a||"")}var l=h.count,n=h.$attr.when&&g.attr(h.$attr.when),m=h.offset||0,r=f.$eval(n)||{},s={},v=b.startSymbol(),w=b.endSymbol(),p=v+l+"-"+m+w,x=ea.noop,t;q(h,function(a,b){var c=e.exec(b);c&&(c=(c[1]?"-":"")+P(c[2]),r[c]=g.attr(h.$attr[b]))});q(r,function(a,d){s[d]=b(a.replace(c,p))});f.$watch(l,
1640 function(b){var c=parseFloat(b),e=isNaN(c);e||c in r||(c=a.pluralCat(c-m));c===t||e&&Q(t)&&isNaN(t)||(x(),e=s[c],y(e)?(null!=b&&d.debug("ngPluralize: no rule defined for '"+c+"' in "+n),x=C,k()):x=f.$watch(e,k),t=c)})}}}],Ie=["$parse","$animate","$compile",function(a,b,d){var c=O("ngRepeat"),e=function(a,b,c,d,e,n,m){a[c]=d;e&&(a[e]=n);a.$index=b;a.$first=0===b;a.$last=b===m-1;a.$middle=!(a.$first||a.$last);a.$odd=!(a.$even=0===(b&1))};return{restrict:"A",multiElement:!0,transclude:"element",priority:1E3,
1640 function(b){var c=parseFloat(b),e=isNaN(c);e||c in r||(c=a.pluralCat(c-m));c===t||e&&Q(t)&&isNaN(t)||(x(),e=s[c],y(e)?(null!=b&&d.debug("ngPluralize: no rule defined for '"+c+"' in "+n),x=C,k()):x=f.$watch(e,k),t=c)})}}}],Ie=["$parse","$animate","$compile",function(a,b,d){var c=O("ngRepeat"),e=function(a,b,c,d,e,n,m){a[c]=d;e&&(a[e]=n);a.$index=b;a.$first=0===b;a.$last=b===m-1;a.$middle=!(a.$first||a.$last);a.$odd=!(a.$even=0===(b&1))};return{restrict:"A",multiElement:!0,transclude:"element",priority:1E3,
1641 terminal:!0,$$tlb:!0,compile:function(f,g){var h=g.ngRepeat,k=d.$$createComment("end ngRepeat",h),l=h.match(/^\s*([\s\S]+?)\s+in\s+([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+track\s+by\s+([\s\S]+?))?\s*$/);if(!l)throw c("iexp",h);var n=l[1],m=l[2],r=l[3],s=l[4],l=n.match(/^(?:(\s*[\$\w]+)|\(\s*([\$\w]+)\s*,\s*([\$\w]+)\s*\))$/);if(!l)throw c("iidexp",n);var v=l[3]||l[1],w=l[2];if(r&&(!/^[$a-zA-Z_][$a-zA-Z0-9_]*$/.test(r)||/^(null|undefined|this|\$index|\$first|\$middle|\$last|\$even|\$odd|\$parent|\$root|\$id)$/.test(r)))throw c("badident",
1641 terminal:!0,$$tlb:!0,compile:function(f,g){var h=g.ngRepeat,k=d.$$createComment("end ngRepeat",h),l=h.match(/^\s*([\s\S]+?)\s+in\s+([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+track\s+by\s+([\s\S]+?))?\s*$/);if(!l)throw c("iexp",h);var n=l[1],m=l[2],r=l[3],s=l[4],l=n.match(/^(?:(\s*[\$\w]+)|\(\s*([\$\w]+)\s*,\s*([\$\w]+)\s*\))$/);if(!l)throw c("iidexp",n);var v=l[3]||l[1],w=l[2];if(r&&(!/^[$a-zA-Z_][$a-zA-Z0-9_]*$/.test(r)||/^(null|undefined|this|\$index|\$first|\$middle|\$last|\$even|\$odd|\$parent|\$root|\$id)$/.test(r)))throw c("badident",
1642 r);var p,y,t,z,u={$id:Fa};s?p=a(s):(t=function(a,b){return Fa(b)},z=function(a){return a});return function(a,d,f,g,l){p&&(y=function(b,c,d){w&&(u[w]=b);u[v]=c;u.$index=d;return p(a,u)});var n=T();a.$watchCollection(m,function(f){var g,m,p=d[0],s,u=T(),x,D,E,C,F,B,G;r&&(a[r]=f);if(ya(f))F=f,m=y||t;else for(G in m=y||z,F=[],f)ua.call(f,G)&&"$"!==G.charAt(0)&&F.push(G);x=F.length;G=Array(x);for(g=0;g<x;g++)if(D=f===F?g:F[g],E=f[D],C=m(D,E,g),n[C])B=n[C],delete n[C],u[C]=B,G[g]=B;else{if(u[C])throw q(G,
1642 r);var p,y,t,z,u={$id:Fa};s?p=a(s):(t=function(a,b){return Fa(b)},z=function(a){return a});return function(a,d,f,g,l){p&&(y=function(b,c,d){w&&(u[w]=b);u[v]=c;u.$index=d;return p(a,u)});var n=T();a.$watchCollection(m,function(f){var g,m,p=d[0],s,u=T(),x,D,E,C,F,B,G;r&&(a[r]=f);if(ya(f))F=f,m=y||t;else for(G in m=y||z,F=[],f)ua.call(f,G)&&"$"!==G.charAt(0)&&F.push(G);x=F.length;G=Array(x);for(g=0;g<x;g++)if(D=f===F?g:F[g],E=f[D],C=m(D,E,g),n[C])B=n[C],delete n[C],u[C]=B,G[g]=B;else{if(u[C])throw q(G,
1643 function(a){a&&a.scope&&(n[a.id]=a)}),c("dupes",h,C,E);G[g]={id:C,scope:void 0,clone:void 0};u[C]=!0}for(s in n){B=n[s];C=rb(B.clone);b.leave(C);if(C[0].parentNode)for(g=0,m=C.length;g<m;g++)C[g].$$NG_REMOVED=!0;B.scope.$destroy()}for(g=0;g<x;g++)if(D=f===F?g:F[g],E=f[D],B=G[g],B.scope){s=p;do s=s.nextSibling;while(s&&s.$$NG_REMOVED);B.clone[0]!=s&&b.move(rb(B.clone),null,p);p=B.clone[B.clone.length-1];e(B.scope,g,v,E,w,D,x)}else l(function(a,c){B.scope=c;var d=k.cloneNode(!1);a[a.length++]=d;b.enter(a,
1643 function(a){a&&a.scope&&(n[a.id]=a)}),c("dupes",h,C,E);G[g]={id:C,scope:void 0,clone:void 0};u[C]=!0}for(s in n){B=n[s];C=rb(B.clone);b.leave(C);if(C[0].parentNode)for(g=0,m=C.length;g<m;g++)C[g].$$NG_REMOVED=!0;B.scope.$destroy()}for(g=0;g<x;g++)if(D=f===F?g:F[g],E=f[D],B=G[g],B.scope){s=p;do s=s.nextSibling;while(s&&s.$$NG_REMOVED);B.clone[0]!=s&&b.move(rb(B.clone),null,p);p=B.clone[B.clone.length-1];e(B.scope,g,v,E,w,D,x)}else l(function(a,c){B.scope=c;var d=k.cloneNode(!1);a[a.length++]=d;b.enter(a,
1644 null,p);p=d;B.clone=a;u[B.id]=B;e(B.scope,g,v,E,w,D,x)});n=u})}}}}],Je=["$animate",function(a){return{restrict:"A",multiElement:!0,link:function(b,d,c){b.$watch(c.ngShow,function(b){a[b?"removeClass":"addClass"](d,"ng-hide",{tempClasses:"ng-hide-animate"})})}}}],Ce=["$animate",function(a){return{restrict:"A",multiElement:!0,link:function(b,d,c){b.$watch(c.ngHide,function(b){a[b?"addClass":"removeClass"](d,"ng-hide",{tempClasses:"ng-hide-animate"})})}}}],Ke=La(function(a,b,d){a.$watch(d.ngStyle,function(a,
1644 null,p);p=d;B.clone=a;u[B.id]=B;e(B.scope,g,v,E,w,D,x)});n=u})}}}}],Je=["$animate",function(a){return{restrict:"A",multiElement:!0,link:function(b,d,c){b.$watch(c.ngShow,function(b){a[b?"removeClass":"addClass"](d,"ng-hide",{tempClasses:"ng-hide-animate"})})}}}],Ce=["$animate",function(a){return{restrict:"A",multiElement:!0,link:function(b,d,c){b.$watch(c.ngHide,function(b){a[b?"addClass":"removeClass"](d,"ng-hide",{tempClasses:"ng-hide-animate"})})}}}],Ke=La(function(a,b,d){a.$watch(d.ngStyle,function(a,
1645 d){d&&a!==d&&q(d,function(a,c){b.css(c,"")});a&&b.css(a)},!0)}),Le=["$animate","$compile",function(a,b){return{require:"ngSwitch",controller:["$scope",function(){this.cases={}}],link:function(d,c,e,f){var g=[],h=[],k=[],l=[],n=function(a,b){return function(){a.splice(b,1)}};d.$watch(e.ngSwitch||e.on,function(c){var d,e;d=0;for(e=k.length;d<e;++d)a.cancel(k[d]);d=k.length=0;for(e=l.length;d<e;++d){var s=rb(h[d].clone);l[d].$destroy();(k[d]=a.leave(s)).then(n(k,d))}h.length=0;l.length=0;(g=f.cases["!"+
1645 d){d&&a!==d&&q(d,function(a,c){b.css(c,"")});a&&b.css(a)},!0)}),Le=["$animate","$compile",function(a,b){return{require:"ngSwitch",controller:["$scope",function(){this.cases={}}],link:function(d,c,e,f){var g=[],h=[],k=[],l=[],n=function(a,b){return function(){a.splice(b,1)}};d.$watch(e.ngSwitch||e.on,function(c){var d,e;d=0;for(e=k.length;d<e;++d)a.cancel(k[d]);d=k.length=0;for(e=l.length;d<e;++d){var s=rb(h[d].clone);l[d].$destroy();(k[d]=a.leave(s)).then(n(k,d))}h.length=0;l.length=0;(g=f.cases["!"+
1646 c]||f.cases["?"])&&q(g,function(c){c.transclude(function(d,e){l.push(e);var f=c.element;d[d.length++]=b.$$createComment("end ngSwitchWhen");h.push({clone:d});a.enter(d,f.parent(),f)})})})}}}],Me=La({transclude:"element",priority:1200,require:"^ngSwitch",multiElement:!0,link:function(a,b,d,c,e){c.cases["!"+d.ngSwitchWhen]=c.cases["!"+d.ngSwitchWhen]||[];c.cases["!"+d.ngSwitchWhen].push({transclude:e,element:b})}}),Ne=La({transclude:"element",priority:1200,require:"^ngSwitch",multiElement:!0,link:function(a,
1646 c]||f.cases["?"])&&q(g,function(c){c.transclude(function(d,e){l.push(e);var f=c.element;d[d.length++]=b.$$createComment("end ngSwitchWhen");h.push({clone:d});a.enter(d,f.parent(),f)})})})}}}],Me=La({transclude:"element",priority:1200,require:"^ngSwitch",multiElement:!0,link:function(a,b,d,c,e){c.cases["!"+d.ngSwitchWhen]=c.cases["!"+d.ngSwitchWhen]||[];c.cases["!"+d.ngSwitchWhen].push({transclude:e,element:b})}}),Ne=La({transclude:"element",priority:1200,require:"^ngSwitch",multiElement:!0,link:function(a,
1647 b,d,c,e){c.cases["?"]=c.cases["?"]||[];c.cases["?"].push({transclude:e,element:b})}}),Qg=O("ngTransclude"),Pe=La({restrict:"EAC",link:function(a,b,d,c,e){d.ngTransclude===d.$attr.ngTransclude&&(d.ngTransclude="");if(!e)throw Qg("orphan",wa(b));e(function(a){a.length&&(b.empty(),b.append(a))},null,d.ngTransclude||d.ngTranscludeSlot)}}),pe=["$templateCache",function(a){return{restrict:"E",terminal:!0,compile:function(b,d){"text/ng-template"==d.type&&a.put(d.id,b[0].text)}}}],Rg={$setViewValue:C,$render:C},
1647 b,d,c,e){c.cases["?"]=c.cases["?"]||[];c.cases["?"].push({transclude:e,element:b})}}),Qg=O("ngTransclude"),Pe=La({restrict:"EAC",link:function(a,b,d,c,e){d.ngTransclude===d.$attr.ngTransclude&&(d.ngTransclude="");if(!e)throw Qg("orphan",wa(b));e(function(a){a.length&&(b.empty(),b.append(a))},null,d.ngTransclude||d.ngTranscludeSlot)}}),pe=["$templateCache",function(a){return{restrict:"E",terminal:!0,compile:function(b,d){"text/ng-template"==d.type&&a.put(d.id,b[0].text)}}}],Rg={$setViewValue:C,$render:C},
1648 Sg=["$element","$scope",function(a,b){var d=this,c=new Ra;d.ngModelCtrl=Rg;d.unknownOption=B(v.document.createElement("option"));d.renderUnknownOption=function(b){b="? "+Fa(b)+" ?";d.unknownOption.val(b);a.prepend(d.unknownOption);a.val(b)};b.$on("$destroy",function(){d.renderUnknownOption=C});d.removeUnknownOption=function(){d.unknownOption.parent()&&d.unknownOption.remove()};d.readValue=function(){d.removeUnknownOption();return a.val()};d.writeValue=function(b){d.hasOption(b)?(d.removeUnknownOption(),
1648 Sg=["$element","$scope",function(a,b){var d=this,c=new Ra;d.ngModelCtrl=Rg;d.unknownOption=B(v.document.createElement("option"));d.renderUnknownOption=function(b){b="? "+Fa(b)+" ?";d.unknownOption.val(b);a.prepend(d.unknownOption);a.val(b)};b.$on("$destroy",function(){d.renderUnknownOption=C});d.removeUnknownOption=function(){d.unknownOption.parent()&&d.unknownOption.remove()};d.readValue=function(){d.removeUnknownOption();return a.val()};d.writeValue=function(b){d.hasOption(b)?(d.removeUnknownOption(),
1649 a.val(b),""===b&&d.emptyOption.prop("selected",!0)):null==b&&d.emptyOption?(d.removeUnknownOption(),a.val("")):d.renderUnknownOption(b)};d.addOption=function(a,b){if(8!==b[0].nodeType){Qa(a,'"option value"');""===a&&(d.emptyOption=b);var g=c.get(a)||0;c.put(a,g+1);d.ngModelCtrl.$render();b[0].hasAttribute("selected")&&(b[0].selected=!0)}};d.removeOption=function(a){var b=c.get(a);b&&(1===b?(c.remove(a),""===a&&(d.emptyOption=void 0)):c.put(a,b-1))};d.hasOption=function(a){return!!c.get(a)};d.registerOption=
1649 a.val(b),""===b&&d.emptyOption.prop("selected",!0)):null==b&&d.emptyOption?(d.removeUnknownOption(),a.val("")):d.renderUnknownOption(b)};d.addOption=function(a,b){if(8!==b[0].nodeType){Qa(a,'"option value"');""===a&&(d.emptyOption=b);var g=c.get(a)||0;c.put(a,g+1);d.ngModelCtrl.$render();b[0].hasAttribute("selected")&&(b[0].selected=!0)}};d.removeOption=function(a){var b=c.get(a);b&&(1===b?(c.remove(a),""===a&&(d.emptyOption=void 0)):c.put(a,b-1))};d.hasOption=function(a){return!!c.get(a)};d.registerOption=
1650 function(a,b,c,h,k){if(h){var l;c.$observe("value",function(a){x(l)&&d.removeOption(l);l=a;d.addOption(a,b)})}else k?a.$watch(k,function(a,e){c.$set("value",a);e!==a&&d.removeOption(e);d.addOption(a,b)}):d.addOption(c.value,b);b.on("$destroy",function(){d.removeOption(c.value);d.ngModelCtrl.$render()})}}],qe=function(){return{restrict:"E",require:["select","?ngModel"],controller:Sg,priority:1,link:{pre:function(a,b,d,c){var e=c[1];if(e){var f=c[0];f.ngModelCtrl=e;b.on("change",function(){a.$apply(function(){e.$setViewValue(f.readValue())})});
1650 function(a,b,c,h,k){if(h){var l;c.$observe("value",function(a){x(l)&&d.removeOption(l);l=a;d.addOption(a,b)})}else k?a.$watch(k,function(a,e){c.$set("value",a);e!==a&&d.removeOption(e);d.addOption(a,b)}):d.addOption(c.value,b);b.on("$destroy",function(){d.removeOption(c.value);d.ngModelCtrl.$render()})}}],qe=function(){return{restrict:"E",require:["select","?ngModel"],controller:Sg,priority:1,link:{pre:function(a,b,d,c){var e=c[1];if(e){var f=c[0];f.ngModelCtrl=e;b.on("change",function(){a.$apply(function(){e.$setViewValue(f.readValue())})});
1651 if(d.multiple){f.readValue=function(){var a=[];q(b.find("option"),function(b){b.selected&&a.push(b.value)});return a};f.writeValue=function(a){var c=new Ra(a);q(b.find("option"),function(a){a.selected=x(c.get(a.value))})};var g,h=NaN;a.$watch(function(){h!==e.$viewValue||pa(g,e.$viewValue)||(g=ha(e.$viewValue),e.$render());h=e.$viewValue});e.$isEmpty=function(a){return!a||0===a.length}}}},post:function(a,b,d,c){var e=c[1];if(e){var f=c[0];e.$render=function(){f.writeValue(e.$viewValue)}}}}}},se=["$interpolate",
1651 if(d.multiple){f.readValue=function(){var a=[];q(b.find("option"),function(b){b.selected&&a.push(b.value)});return a};f.writeValue=function(a){var c=new Ra(a);q(b.find("option"),function(a){a.selected=x(c.get(a.value))})};var g,h=NaN;a.$watch(function(){h!==e.$viewValue||pa(g,e.$viewValue)||(g=ha(e.$viewValue),e.$render());h=e.$viewValue});e.$isEmpty=function(a){return!a||0===a.length}}}},post:function(a,b,d,c){var e=c[1];if(e){var f=c[0];e.$render=function(){f.writeValue(e.$viewValue)}}}}}},se=["$interpolate",
1652 function(a){return{restrict:"E",priority:100,compile:function(b,d){if(x(d.value))var c=a(d.value,!0);else{var e=a(b.text(),!0);e||d.$set("value",b.text())}return function(a,b,d){var k=b.parent();(k=k.data("$selectController")||k.parent().data("$selectController"))&&k.registerOption(a,b,d,c,e)}}}}],re=da({restrict:"E",terminal:!1}),Fc=function(){return{restrict:"A",require:"?ngModel",link:function(a,b,d,c){c&&(d.required=!0,c.$validators.required=function(a,b){return!d.required||!c.$isEmpty(b)},d.$observe("required",
1652 function(a){return{restrict:"E",priority:100,compile:function(b,d){if(x(d.value))var c=a(d.value,!0);else{var e=a(b.text(),!0);e||d.$set("value",b.text())}return function(a,b,d){var k=b.parent();(k=k.data("$selectController")||k.parent().data("$selectController"))&&k.registerOption(a,b,d,c,e)}}}}],re=da({restrict:"E",terminal:!1}),Fc=function(){return{restrict:"A",require:"?ngModel",link:function(a,b,d,c){c&&(d.required=!0,c.$validators.required=function(a,b){return!d.required||!c.$isEmpty(b)},d.$observe("required",
1653 function(){c.$validate()}))}}},Ec=function(){return{restrict:"A",require:"?ngModel",link:function(a,b,d,c){if(c){var e,f=d.ngPattern||d.pattern;d.$observe("pattern",function(a){F(a)&&0<a.length&&(a=new RegExp("^"+a+"$"));if(a&&!a.test)throw O("ngPattern")("noregexp",f,a,wa(b));e=a||void 0;c.$validate()});c.$validators.pattern=function(a,b){return c.$isEmpty(b)||y(e)||e.test(b)}}}}},Hc=function(){return{restrict:"A",require:"?ngModel",link:function(a,b,d,c){if(c){var e=-1;d.$observe("maxlength",function(a){a=
1653 function(){c.$validate()}))}}},Ec=function(){return{restrict:"A",require:"?ngModel",link:function(a,b,d,c){if(c){var e,f=d.ngPattern||d.pattern;d.$observe("pattern",function(a){F(a)&&0<a.length&&(a=new RegExp("^"+a+"$"));if(a&&!a.test)throw O("ngPattern")("noregexp",f,a,wa(b));e=a||void 0;c.$validate()});c.$validators.pattern=function(a,b){return c.$isEmpty(b)||y(e)||e.test(b)}}}}},Hc=function(){return{restrict:"A",require:"?ngModel",link:function(a,b,d,c){if(c){var e=-1;d.$observe("maxlength",function(a){a=
1654 X(a);e=isNaN(a)?-1:a;c.$validate()});c.$validators.maxlength=function(a,b){return 0>e||c.$isEmpty(b)||b.length<=e}}}}},Gc=function(){return{restrict:"A",require:"?ngModel",link:function(a,b,d,c){if(c){var e=0;d.$observe("minlength",function(a){e=X(a)||0;c.$validate()});c.$validators.minlength=function(a,b){return c.$isEmpty(b)||b.length>=e}}}}};v.angular.bootstrap?v.console&&console.log("WARNING: Tried to load angular more than once."):(ie(),ke(ea),ea.module("ngLocale",[],["$provide",function(a){function b(a){a+=
1654 X(a);e=isNaN(a)?-1:a;c.$validate()});c.$validators.maxlength=function(a,b){return 0>e||c.$isEmpty(b)||b.length<=e}}}}},Gc=function(){return{restrict:"A",require:"?ngModel",link:function(a,b,d,c){if(c){var e=0;d.$observe("minlength",function(a){e=X(a)||0;c.$validate()});c.$validators.minlength=function(a,b){return c.$isEmpty(b)||b.length>=e}}}}};v.angular.bootstrap?v.console&&console.log("WARNING: Tried to load angular more than once."):(ie(),ke(ea),ea.module("ngLocale",[],["$provide",function(a){function b(a){a+=
1655 "";var b=a.indexOf(".");return-1==b?0:a.length-b-1}a.value("$locale",{DATETIME_FORMATS:{AMPMS:["AM","PM"],DAY:"Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),ERANAMES:["Before Christ","Anno Domini"],ERAS:["BC","AD"],FIRSTDAYOFWEEK:6,MONTH:"January February March April May June July August September October November December".split(" "),SHORTDAY:"Sun Mon Tue Wed Thu Fri Sat".split(" "),SHORTMONTH:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),STANDALONEMONTH:"January February March April May June July August September October November December".split(" "),
1655 "";var b=a.indexOf(".");return-1==b?0:a.length-b-1}a.value("$locale",{DATETIME_FORMATS:{AMPMS:["AM","PM"],DAY:"Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),ERANAMES:["Before Christ","Anno Domini"],ERAS:["BC","AD"],FIRSTDAYOFWEEK:6,MONTH:"January February March April May June July August September October November December".split(" "),SHORTDAY:"Sun Mon Tue Wed Thu Fri Sat".split(" "),SHORTMONTH:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),STANDALONEMONTH:"January February March April May June July August September October November December".split(" "),
1656 WEEKENDRANGE:[5,6],fullDate:"EEEE, MMMM d, y",longDate:"MMMM d, y",medium:"MMM d, y h:mm:ss a",mediumDate:"MMM d, y",mediumTime:"h:mm:ss a","short":"M/d/yy h:mm a",shortDate:"M/d/yy",shortTime:"h:mm a"},NUMBER_FORMATS:{CURRENCY_SYM:"$",DECIMAL_SEP:".",GROUP_SEP:",",PATTERNS:[{gSize:3,lgSize:3,maxFrac:3,minFrac:0,minInt:1,negPre:"-",negSuf:"",posPre:"",posSuf:""},{gSize:3,lgSize:3,maxFrac:2,minFrac:2,minInt:1,negPre:"-\u00a4",negSuf:"",posPre:"\u00a4",posSuf:""}]},id:"en-us",localeID:"en_US",pluralCat:function(a,
1656 WEEKENDRANGE:[5,6],fullDate:"EEEE, MMMM d, y",longDate:"MMMM d, y",medium:"MMM d, y h:mm:ss a",mediumDate:"MMM d, y",mediumTime:"h:mm:ss a","short":"M/d/yy h:mm a",shortDate:"M/d/yy",shortTime:"h:mm a"},NUMBER_FORMATS:{CURRENCY_SYM:"$",DECIMAL_SEP:".",GROUP_SEP:",",PATTERNS:[{gSize:3,lgSize:3,maxFrac:3,minFrac:0,minInt:1,negPre:"-",negSuf:"",posPre:"",posSuf:""},{gSize:3,lgSize:3,maxFrac:2,minFrac:2,minInt:1,negPre:"-\u00a4",negSuf:"",posPre:"\u00a4",posSuf:""}]},id:"en-us",localeID:"en_US",pluralCat:function(a,
1657 c){var e=a|0,f=c;void 0===f&&(f=Math.min(b(a),3));Math.pow(10,f);return 1==e&&0==f?"one":"other"}})}]),B(v.document).ready(function(){ee(v.document,yc)}))})(window);!window.angular.$$csp().noInlineStyle&&window.angular.element(document.head).prepend('<style type="text/css">@charset "UTF-8";[ng\\:cloak],[ng-cloak],[data-ng-cloak],[x-ng-cloak],.ng-cloak,.x-ng-cloak,.ng-hide:not(.ng-hide-animate){display:none !important;}ng\\:form{display:block;}.ng-animate-shim{visibility:hidden;}.ng-anchor{position:absolute;}</style>');
1657 c){var e=a|0,f=c;void 0===f&&(f=Math.min(b(a),3));Math.pow(10,f);return 1==e&&0==f?"one":"other"}})}]),B(v.document).ready(function(){ee(v.document,yc)}))})(window);!window.angular.$$csp().noInlineStyle&&window.angular.element(document.head).prepend('<style type="text/css">@charset "UTF-8";[ng\\:cloak],[ng-cloak],[data-ng-cloak],[x-ng-cloak],.ng-cloak,.x-ng-cloak,.ng-hide:not(.ng-hide-animate){display:none !important;}ng\\:form{display:block;}.ng-animate-shim{visibility:hidden;}.ng-anchor{position:absolute;}</style>');
1658 //# sourceMappingURL=angular.min.js.map
1658 //# sourceMappingURL=angular.min.js.map
1659
1659
1660 ;/*
1660 ;/*
1661 AngularJS v1.5.5
1661 AngularJS v1.5.5
1662 (c) 2010-2016 Google, Inc. http://angularjs.org
1662 (c) 2010-2016 Google, Inc. http://angularjs.org
1663 License: MIT
1663 License: MIT
1664 */
1664 */
1665 (function(n,c){'use strict';function l(b,a,g){var d=g.baseHref(),k=b[0];return function(b,e,f){var g,h;f=f||{};h=f.expires;g=c.isDefined(f.path)?f.path:d;c.isUndefined(e)&&(h="Thu, 01 Jan 1970 00:00:00 GMT",e="");c.isString(h)&&(h=new Date(h));e=encodeURIComponent(b)+"="+encodeURIComponent(e);e=e+(g?";path="+g:"")+(f.domain?";domain="+f.domain:"");e+=h?";expires="+h.toUTCString():"";e+=f.secure?";secure":"";f=e.length+1;4096<f&&a.warn("Cookie '"+b+"' possibly not set or overflowed because it was too large ("+
1665 (function(n,c){'use strict';function l(b,a,g){var d=g.baseHref(),k=b[0];return function(b,e,f){var g,h;f=f||{};h=f.expires;g=c.isDefined(f.path)?f.path:d;c.isUndefined(e)&&(h="Thu, 01 Jan 1970 00:00:00 GMT",e="");c.isString(h)&&(h=new Date(h));e=encodeURIComponent(b)+"="+encodeURIComponent(e);e=e+(g?";path="+g:"")+(f.domain?";domain="+f.domain:"");e+=h?";expires="+h.toUTCString():"";e+=f.secure?";secure":"";f=e.length+1;4096<f&&a.warn("Cookie '"+b+"' possibly not set or overflowed because it was too large ("+
1666 f+" > 4096 bytes)!");k.cookie=e}}c.module("ngCookies",["ng"]).provider("$cookies",[function(){var b=this.defaults={};this.$get=["$$cookieReader","$$cookieWriter",function(a,g){return{get:function(d){return a()[d]},getObject:function(d){return(d=this.get(d))?c.fromJson(d):d},getAll:function(){return a()},put:function(d,a,m){g(d,a,m?c.extend({},b,m):b)},putObject:function(d,b,a){this.put(d,c.toJson(b),a)},remove:function(a,k){g(a,void 0,k?c.extend({},b,k):b)}}}]}]);c.module("ngCookies").factory("$cookieStore",
1666 f+" > 4096 bytes)!");k.cookie=e}}c.module("ngCookies",["ng"]).provider("$cookies",[function(){var b=this.defaults={};this.$get=["$$cookieReader","$$cookieWriter",function(a,g){return{get:function(d){return a()[d]},getObject:function(d){return(d=this.get(d))?c.fromJson(d):d},getAll:function(){return a()},put:function(d,a,m){g(d,a,m?c.extend({},b,m):b)},putObject:function(d,b,a){this.put(d,c.toJson(b),a)},remove:function(a,k){g(a,void 0,k?c.extend({},b,k):b)}}}]}]);c.module("ngCookies").factory("$cookieStore",
1667 ["$cookies",function(b){return{get:function(a){return b.getObject(a)},put:function(a,c){b.putObject(a,c)},remove:function(a){b.remove(a)}}}]);l.$inject=["$document","$log","$browser"];c.module("ngCookies").provider("$$cookieWriter",function(){this.$get=l})})(window,window.angular);
1667 ["$cookies",function(b){return{get:function(a){return b.getObject(a)},put:function(a,c){b.putObject(a,c)},remove:function(a){b.remove(a)}}}]);l.$inject=["$document","$log","$browser"];c.module("ngCookies").provider("$$cookieWriter",function(){this.$get=l})})(window,window.angular);
1668 //# sourceMappingURL=angular-cookies.min.js.map
1668 //# sourceMappingURL=angular-cookies.min.js.map
1669
1669
1670 ;/*
1670 ;/*
1671 AngularJS v1.5.5
1671 AngularJS v1.5.5
1672 (c) 2010-2016 Google, Inc. http://angularjs.org
1672 (c) 2010-2016 Google, Inc. http://angularjs.org
1673 License: MIT
1673 License: MIT
1674 */
1674 */
1675 (function(C,d){'use strict';function z(r,h,g){return{restrict:"ECA",terminal:!0,priority:400,transclude:"element",link:function(a,c,b,f,y){function k(){n&&(g.cancel(n),n=null);l&&(l.$destroy(),l=null);m&&(n=g.leave(m),n.then(function(){n=null}),m=null)}function x(){var b=r.current&&r.current.locals;if(d.isDefined(b&&b.$template)){var b=a.$new(),f=r.current;m=y(b,function(b){g.enter(b,null,m||c).then(function(){!d.isDefined(t)||t&&!a.$eval(t)||h()});k()});l=f.scope=b;l.$emit("$viewContentLoaded");
1675 (function(C,d){'use strict';function z(r,h,g){return{restrict:"ECA",terminal:!0,priority:400,transclude:"element",link:function(a,c,b,f,y){function k(){n&&(g.cancel(n),n=null);l&&(l.$destroy(),l=null);m&&(n=g.leave(m),n.then(function(){n=null}),m=null)}function x(){var b=r.current&&r.current.locals;if(d.isDefined(b&&b.$template)){var b=a.$new(),f=r.current;m=y(b,function(b){g.enter(b,null,m||c).then(function(){!d.isDefined(t)||t&&!a.$eval(t)||h()});k()});l=f.scope=b;l.$emit("$viewContentLoaded");
1676 l.$eval(u)}else k()}var l,m,n,t=b.autoscroll,u=b.onload||"";a.$on("$routeChangeSuccess",x);x()}}}function A(d,h,g){return{restrict:"ECA",priority:-400,link:function(a,c){var b=g.current,f=b.locals;c.html(f.$template);var y=d(c.contents());if(b.controller){f.$scope=a;var k=h(b.controller,f);b.controllerAs&&(a[b.controllerAs]=k);c.data("$ngControllerController",k);c.children().data("$ngControllerController",k)}a[b.resolveAs||"$resolve"]=f;y(a)}}}var w=d.module("ngRoute",["ng"]).provider("$route",function(){function r(a,
1676 l.$eval(u)}else k()}var l,m,n,t=b.autoscroll,u=b.onload||"";a.$on("$routeChangeSuccess",x);x()}}}function A(d,h,g){return{restrict:"ECA",priority:-400,link:function(a,c){var b=g.current,f=b.locals;c.html(f.$template);var y=d(c.contents());if(b.controller){f.$scope=a;var k=h(b.controller,f);b.controllerAs&&(a[b.controllerAs]=k);c.data("$ngControllerController",k);c.children().data("$ngControllerController",k)}a[b.resolveAs||"$resolve"]=f;y(a)}}}var w=d.module("ngRoute",["ng"]).provider("$route",function(){function r(a,
1677 c){return d.extend(Object.create(a),c)}function h(a,d){var b=d.caseInsensitiveMatch,f={originalPath:a,regexp:a},g=f.keys=[];a=a.replace(/([().])/g,"\\$1").replace(/(\/)?:(\w+)(\*\?|[\?\*])?/g,function(a,d,b,c){a="?"===c||"*?"===c?"?":null;c="*"===c||"*?"===c?"*":null;g.push({name:b,optional:!!a});d=d||"";return""+(a?"":d)+"(?:"+(a?d:"")+(c&&"(.+?)"||"([^/]+)")+(a||"")+")"+(a||"")}).replace(/([\/$\*])/g,"\\$1");f.regexp=new RegExp("^"+a+"$",b?"i":"");return f}var g={};this.when=function(a,c){var b=
1677 c){return d.extend(Object.create(a),c)}function h(a,d){var b=d.caseInsensitiveMatch,f={originalPath:a,regexp:a},g=f.keys=[];a=a.replace(/([().])/g,"\\$1").replace(/(\/)?:(\w+)(\*\?|[\?\*])?/g,function(a,d,b,c){a="?"===c||"*?"===c?"?":null;c="*"===c||"*?"===c?"*":null;g.push({name:b,optional:!!a});d=d||"";return""+(a?"":d)+"(?:"+(a?d:"")+(c&&"(.+?)"||"([^/]+)")+(a||"")+")"+(a||"")}).replace(/([\/$\*])/g,"\\$1");f.regexp=new RegExp("^"+a+"$",b?"i":"");return f}var g={};this.when=function(a,c){var b=
1678 d.copy(c);d.isUndefined(b.reloadOnSearch)&&(b.reloadOnSearch=!0);d.isUndefined(b.caseInsensitiveMatch)&&(b.caseInsensitiveMatch=this.caseInsensitiveMatch);g[a]=d.extend(b,a&&h(a,b));if(a){var f="/"==a[a.length-1]?a.substr(0,a.length-1):a+"/";g[f]=d.extend({redirectTo:a},h(f,b))}return this};this.caseInsensitiveMatch=!1;this.otherwise=function(a){"string"===typeof a&&(a={redirectTo:a});this.when(null,a);return this};this.$get=["$rootScope","$location","$routeParams","$q","$injector","$templateRequest",
1678 d.copy(c);d.isUndefined(b.reloadOnSearch)&&(b.reloadOnSearch=!0);d.isUndefined(b.caseInsensitiveMatch)&&(b.caseInsensitiveMatch=this.caseInsensitiveMatch);g[a]=d.extend(b,a&&h(a,b));if(a){var f="/"==a[a.length-1]?a.substr(0,a.length-1):a+"/";g[f]=d.extend({redirectTo:a},h(f,b))}return this};this.caseInsensitiveMatch=!1;this.otherwise=function(a){"string"===typeof a&&(a={redirectTo:a});this.when(null,a);return this};this.$get=["$rootScope","$location","$routeParams","$q","$injector","$templateRequest",
1679 "$sce",function(a,c,b,f,h,k,x){function l(b){var e=s.current;(w=(p=n())&&e&&p.$$route===e.$$route&&d.equals(p.pathParams,e.pathParams)&&!p.reloadOnSearch&&!u)||!e&&!p||a.$broadcast("$routeChangeStart",p,e).defaultPrevented&&b&&b.preventDefault()}function m(){var v=s.current,e=p;if(w)v.params=e.params,d.copy(v.params,b),a.$broadcast("$routeUpdate",v);else if(e||v)u=!1,(s.current=e)&&e.redirectTo&&(d.isString(e.redirectTo)?c.path(t(e.redirectTo,e.params)).search(e.params).replace():c.url(e.redirectTo(e.pathParams,
1679 "$sce",function(a,c,b,f,h,k,x){function l(b){var e=s.current;(w=(p=n())&&e&&p.$$route===e.$$route&&d.equals(p.pathParams,e.pathParams)&&!p.reloadOnSearch&&!u)||!e&&!p||a.$broadcast("$routeChangeStart",p,e).defaultPrevented&&b&&b.preventDefault()}function m(){var v=s.current,e=p;if(w)v.params=e.params,d.copy(v.params,b),a.$broadcast("$routeUpdate",v);else if(e||v)u=!1,(s.current=e)&&e.redirectTo&&(d.isString(e.redirectTo)?c.path(t(e.redirectTo,e.params)).search(e.params).replace():c.url(e.redirectTo(e.pathParams,
1680 c.path(),c.search())).replace()),f.when(e).then(function(){if(e){var a=d.extend({},e.resolve),b,c;d.forEach(a,function(b,e){a[e]=d.isString(b)?h.get(b):h.invoke(b,null,null,e)});d.isDefined(b=e.template)?d.isFunction(b)&&(b=b(e.params)):d.isDefined(c=e.templateUrl)&&(d.isFunction(c)&&(c=c(e.params)),d.isDefined(c)&&(e.loadedTemplateUrl=x.valueOf(c),b=k(c)));d.isDefined(b)&&(a.$template=b);return f.all(a)}}).then(function(c){e==s.current&&(e&&(e.locals=c,d.copy(e.params,b)),a.$broadcast("$routeChangeSuccess",
1680 c.path(),c.search())).replace()),f.when(e).then(function(){if(e){var a=d.extend({},e.resolve),b,c;d.forEach(a,function(b,e){a[e]=d.isString(b)?h.get(b):h.invoke(b,null,null,e)});d.isDefined(b=e.template)?d.isFunction(b)&&(b=b(e.params)):d.isDefined(c=e.templateUrl)&&(d.isFunction(c)&&(c=c(e.params)),d.isDefined(c)&&(e.loadedTemplateUrl=x.valueOf(c),b=k(c)));d.isDefined(b)&&(a.$template=b);return f.all(a)}}).then(function(c){e==s.current&&(e&&(e.locals=c,d.copy(e.params,b)),a.$broadcast("$routeChangeSuccess",
1681 e,v))},function(b){e==s.current&&a.$broadcast("$routeChangeError",e,v,b)})}function n(){var a,b;d.forEach(g,function(f,g){var q;if(q=!b){var h=c.path();q=f.keys;var l={};if(f.regexp)if(h=f.regexp.exec(h)){for(var k=1,n=h.length;k<n;++k){var m=q[k-1],p=h[k];m&&p&&(l[m.name]=p)}q=l}else q=null;else q=null;q=a=q}q&&(b=r(f,{params:d.extend({},c.search(),a),pathParams:a}),b.$$route=f)});return b||g[null]&&r(g[null],{params:{},pathParams:{}})}function t(a,b){var c=[];d.forEach((a||"").split(":"),function(a,
1681 e,v))},function(b){e==s.current&&a.$broadcast("$routeChangeError",e,v,b)})}function n(){var a,b;d.forEach(g,function(f,g){var q;if(q=!b){var h=c.path();q=f.keys;var l={};if(f.regexp)if(h=f.regexp.exec(h)){for(var k=1,n=h.length;k<n;++k){var m=q[k-1],p=h[k];m&&p&&(l[m.name]=p)}q=l}else q=null;else q=null;q=a=q}q&&(b=r(f,{params:d.extend({},c.search(),a),pathParams:a}),b.$$route=f)});return b||g[null]&&r(g[null],{params:{},pathParams:{}})}function t(a,b){var c=[];d.forEach((a||"").split(":"),function(a,
1682 d){if(0===d)c.push(a);else{var f=a.match(/(\w+)(?:[?*])?(.*)/),g=f[1];c.push(b[g]);c.push(f[2]||"");delete b[g]}});return c.join("")}var u=!1,p,w,s={routes:g,reload:function(){u=!0;var b={defaultPrevented:!1,preventDefault:function(){this.defaultPrevented=!0;u=!1}};a.$evalAsync(function(){l(b);b.defaultPrevented||m()})},updateParams:function(a){if(this.current&&this.current.$$route)a=d.extend({},this.current.params,a),c.path(t(this.current.$$route.originalPath,a)),c.search(a);else throw B("norout");
1682 d){if(0===d)c.push(a);else{var f=a.match(/(\w+)(?:[?*])?(.*)/),g=f[1];c.push(b[g]);c.push(f[2]||"");delete b[g]}});return c.join("")}var u=!1,p,w,s={routes:g,reload:function(){u=!0;var b={defaultPrevented:!1,preventDefault:function(){this.defaultPrevented=!0;u=!1}};a.$evalAsync(function(){l(b);b.defaultPrevented||m()})},updateParams:function(a){if(this.current&&this.current.$$route)a=d.extend({},this.current.params,a),c.path(t(this.current.$$route.originalPath,a)),c.search(a);else throw B("norout");
1683 }};a.$on("$locationChangeStart",l);a.$on("$locationChangeSuccess",m);return s}]}),B=d.$$minErr("ngRoute");w.provider("$routeParams",function(){this.$get=function(){return{}}});w.directive("ngView",z);w.directive("ngView",A);z.$inject=["$route","$anchorScroll","$animate"];A.$inject=["$compile","$controller","$route"]})(window,window.angular);
1683 }};a.$on("$locationChangeStart",l);a.$on("$locationChangeSuccess",m);return s}]}),B=d.$$minErr("ngRoute");w.provider("$routeParams",function(){this.$get=function(){return{}}});w.directive("ngView",z);w.directive("ngView",A);z.$inject=["$route","$anchorScroll","$animate"];A.$inject=["$compile","$controller","$route"]})(window,window.angular);
1684 //# sourceMappingURL=angular-route.min.js.map
1684 //# sourceMappingURL=angular-route.min.js.map
1685
1685
1686 ;/*
1686 ;/*
1687 AngularJS v1.5.5
1687 AngularJS v1.5.5
1688 (c) 2010-2016 Google, Inc. http://angularjs.org
1688 (c) 2010-2016 Google, Inc. http://angularjs.org
1689 License: MIT
1689 License: MIT
1690 */
1690 */
1691 (function(P,d){'use strict';function G(t,g){g=g||{};d.forEach(g,function(d,q){delete g[q]});for(var q in t)!t.hasOwnProperty(q)||"$"===q.charAt(0)&&"$"===q.charAt(1)||(g[q]=t[q]);return g}var z=d.$$minErr("$resource"),M=/^(\.[a-zA-Z_$@][0-9a-zA-Z_$@]*)+$/;d.module("ngResource",["ng"]).provider("$resource",function(){var t=/^https?:\/\/[^\/]*/,g=this;this.defaults={stripTrailingSlashes:!0,actions:{get:{method:"GET"},save:{method:"POST"},query:{method:"GET",isArray:!0},remove:{method:"DELETE"},"delete":{method:"DELETE"}}};
1691 (function(P,d){'use strict';function G(t,g){g=g||{};d.forEach(g,function(d,q){delete g[q]});for(var q in t)!t.hasOwnProperty(q)||"$"===q.charAt(0)&&"$"===q.charAt(1)||(g[q]=t[q]);return g}var z=d.$$minErr("$resource"),M=/^(\.[a-zA-Z_$@][0-9a-zA-Z_$@]*)+$/;d.module("ngResource",["ng"]).provider("$resource",function(){var t=/^https?:\/\/[^\/]*/,g=this;this.defaults={stripTrailingSlashes:!0,actions:{get:{method:"GET"},save:{method:"POST"},query:{method:"GET",isArray:!0},remove:{method:"DELETE"},"delete":{method:"DELETE"}}};
1692 this.$get=["$http","$log","$q","$timeout",function(q,L,H,I){function A(d,h){return encodeURIComponent(d).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,h?"%20":"+")}function B(d,h){this.template=d;this.defaults=v({},g.defaults,h);this.urlParams={}}function J(e,h,n,k){function c(a,b){var c={};b=v({},h,b);u(b,function(b,h){x(b)&&(b=b());var f;if(b&&b.charAt&&"@"==b.charAt(0)){f=a;var l=b.substr(1);if(null==l||""===l||"hasOwnProperty"===l||!M.test("."+
1692 this.$get=["$http","$log","$q","$timeout",function(q,L,H,I){function A(d,h){return encodeURIComponent(d).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,h?"%20":"+")}function B(d,h){this.template=d;this.defaults=v({},g.defaults,h);this.urlParams={}}function J(e,h,n,k){function c(a,b){var c={};b=v({},h,b);u(b,function(b,h){x(b)&&(b=b());var f;if(b&&b.charAt&&"@"==b.charAt(0)){f=a;var l=b.substr(1);if(null==l||""===l||"hasOwnProperty"===l||!M.test("."+
1693 l))throw z("badmember",l);for(var l=l.split("."),m=0,k=l.length;m<k&&d.isDefined(f);m++){var r=l[m];f=null!==f?f[r]:void 0}}else f=b;c[h]=f});return c}function N(a){return a.resource}function m(a){G(a||{},this)}var t=new B(e,k);n=v({},g.defaults.actions,n);m.prototype.toJSON=function(){var a=v({},this);delete a.$promise;delete a.$resolved;return a};u(n,function(a,b){var h=/^(POST|PUT|PATCH)$/i.test(a.method),e=a.timeout,E=d.isDefined(a.cancellable)?a.cancellable:k&&d.isDefined(k.cancellable)?k.cancellable:
1693 l))throw z("badmember",l);for(var l=l.split("."),m=0,k=l.length;m<k&&d.isDefined(f);m++){var r=l[m];f=null!==f?f[r]:void 0}}else f=b;c[h]=f});return c}function N(a){return a.resource}function m(a){G(a||{},this)}var t=new B(e,k);n=v({},g.defaults.actions,n);m.prototype.toJSON=function(){var a=v({},this);delete a.$promise;delete a.$resolved;return a};u(n,function(a,b){var h=/^(POST|PUT|PATCH)$/i.test(a.method),e=a.timeout,E=d.isDefined(a.cancellable)?a.cancellable:k&&d.isDefined(k.cancellable)?k.cancellable:
1694 g.defaults.cancellable;e&&!d.isNumber(e)&&(L.debug("ngResource:\n Only numeric values are allowed as `timeout`.\n Promises are not supported in $resource, because the same value would be used for multiple requests. If you are looking for a way to cancel requests, you should use the `cancellable` option."),delete a.timeout,e=null);m[b]=function(f,l,k,g){var r={},n,w,C;switch(arguments.length){case 4:C=g,w=k;case 3:case 2:if(x(l)){if(x(f)){w=f;C=l;break}w=l;C=k}else{r=f;n=l;w=k;break}case 1:x(f)?
1694 g.defaults.cancellable;e&&!d.isNumber(e)&&(L.debug("ngResource:\n Only numeric values are allowed as `timeout`.\n Promises are not supported in $resource, because the same value would be used for multiple requests. If you are looking for a way to cancel requests, you should use the `cancellable` option."),delete a.timeout,e=null);m[b]=function(f,l,k,g){var r={},n,w,C;switch(arguments.length){case 4:C=g,w=k;case 3:case 2:if(x(l)){if(x(f)){w=f;C=l;break}w=l;C=k}else{r=f;n=l;w=k;break}case 1:x(f)?
1695 w=f:h?n=f:r=f;break;case 0:break;default:throw z("badargs",arguments.length);}var D=this instanceof m,p=D?n:a.isArray?[]:new m(n),s={},A=a.interceptor&&a.interceptor.response||N,B=a.interceptor&&a.interceptor.responseError||void 0,y,F;u(a,function(a,b){switch(b){default:s[b]=O(a);case "params":case "isArray":case "interceptor":case "cancellable":}});!D&&E&&(y=H.defer(),s.timeout=y.promise,e&&(F=I(y.resolve,e)));h&&(s.data=n);t.setUrlParams(s,v({},c(n,a.params||{}),r),a.url);r=q(s).then(function(f){var c=
1695 w=f:h?n=f:r=f;break;case 0:break;default:throw z("badargs",arguments.length);}var D=this instanceof m,p=D?n:a.isArray?[]:new m(n),s={},A=a.interceptor&&a.interceptor.response||N,B=a.interceptor&&a.interceptor.responseError||void 0,y,F;u(a,function(a,b){switch(b){default:s[b]=O(a);case "params":case "isArray":case "interceptor":case "cancellable":}});!D&&E&&(y=H.defer(),s.timeout=y.promise,e&&(F=I(y.resolve,e)));h&&(s.data=n);t.setUrlParams(s,v({},c(n,a.params||{}),r),a.url);r=q(s).then(function(f){var c=
1696 f.data;if(c){if(d.isArray(c)!==!!a.isArray)throw z("badcfg",b,a.isArray?"array":"object",d.isArray(c)?"array":"object",s.method,s.url);if(a.isArray)p.length=0,u(c,function(b){"object"===typeof b?p.push(new m(b)):p.push(b)});else{var l=p.$promise;G(c,p);p.$promise=l}}f.resource=p;return f},function(b){(C||K)(b);return H.reject(b)});r["finally"](function(){p.$resolved=!0;!D&&E&&(p.$cancelRequest=d.noop,I.cancel(F),y=F=s.timeout=null)});r=r.then(function(b){var a=A(b);(w||K)(a,b.headers);return a},B);
1696 f.data;if(c){if(d.isArray(c)!==!!a.isArray)throw z("badcfg",b,a.isArray?"array":"object",d.isArray(c)?"array":"object",s.method,s.url);if(a.isArray)p.length=0,u(c,function(b){"object"===typeof b?p.push(new m(b)):p.push(b)});else{var l=p.$promise;G(c,p);p.$promise=l}}f.resource=p;return f},function(b){(C||K)(b);return H.reject(b)});r["finally"](function(){p.$resolved=!0;!D&&E&&(p.$cancelRequest=d.noop,I.cancel(F),y=F=s.timeout=null)});r=r.then(function(b){var a=A(b);(w||K)(a,b.headers);return a},B);
1697 return D?r:(p.$promise=r,p.$resolved=!1,E&&(p.$cancelRequest=y.resolve),p)};m.prototype["$"+b]=function(a,c,d){x(a)&&(d=c,c=a,a={});a=m[b].call(this,a,this,c,d);return a.$promise||a}});m.bind=function(a){return J(e,v({},h,a),n)};return m}var K=d.noop,u=d.forEach,v=d.extend,O=d.copy,x=d.isFunction;B.prototype={setUrlParams:function(e,h,n){var k=this,c=n||k.template,g,m,q="",a=k.urlParams={};u(c.split(/\W/),function(b){if("hasOwnProperty"===b)throw z("badname");!/^\d+$/.test(b)&&b&&(new RegExp("(^|[^\\\\]):"+
1697 return D?r:(p.$promise=r,p.$resolved=!1,E&&(p.$cancelRequest=y.resolve),p)};m.prototype["$"+b]=function(a,c,d){x(a)&&(d=c,c=a,a={});a=m[b].call(this,a,this,c,d);return a.$promise||a}});m.bind=function(a){return J(e,v({},h,a),n)};return m}var K=d.noop,u=d.forEach,v=d.extend,O=d.copy,x=d.isFunction;B.prototype={setUrlParams:function(e,h,n){var k=this,c=n||k.template,g,m,q="",a=k.urlParams={};u(c.split(/\W/),function(b){if("hasOwnProperty"===b)throw z("badname");!/^\d+$/.test(b)&&b&&(new RegExp("(^|[^\\\\]):"+
1698 b+"(\\W|$)")).test(c)&&(a[b]={isQueryParamValue:(new RegExp("\\?.*=:"+b+"(?:\\W|$)")).test(c)})});c=c.replace(/\\:/g,":");c=c.replace(t,function(a){q=a;return""});h=h||{};u(k.urlParams,function(a,e){g=h.hasOwnProperty(e)?h[e]:k.defaults[e];d.isDefined(g)&&null!==g?(m=a.isQueryParamValue?A(g,!0):A(g,!0).replace(/%26/gi,"&").replace(/%3D/gi,"=").replace(/%2B/gi,"+"),c=c.replace(new RegExp(":"+e+"(\\W|$)","g"),function(a,b){return m+b})):c=c.replace(new RegExp("(/?):"+e+"(\\W|$)","g"),function(a,b,c){return"/"==
1698 b+"(\\W|$)")).test(c)&&(a[b]={isQueryParamValue:(new RegExp("\\?.*=:"+b+"(?:\\W|$)")).test(c)})});c=c.replace(/\\:/g,":");c=c.replace(t,function(a){q=a;return""});h=h||{};u(k.urlParams,function(a,e){g=h.hasOwnProperty(e)?h[e]:k.defaults[e];d.isDefined(g)&&null!==g?(m=a.isQueryParamValue?A(g,!0):A(g,!0).replace(/%26/gi,"&").replace(/%3D/gi,"=").replace(/%2B/gi,"+"),c=c.replace(new RegExp(":"+e+"(\\W|$)","g"),function(a,b){return m+b})):c=c.replace(new RegExp("(/?):"+e+"(\\W|$)","g"),function(a,b,c){return"/"==
1699 c.charAt(0)?c:b+c})});k.defaults.stripTrailingSlashes&&(c=c.replace(/\/+$/,"")||"/");c=c.replace(/\/\.(?=\w+($|\?))/,".");e.url=q+c.replace(/\/\\\./,"/.");u(h,function(a,c){k.urlParams[c]||(e.params=e.params||{},e.params[c]=a)})}};return J}]})})(window,window.angular);
1699 c.charAt(0)?c:b+c})});k.defaults.stripTrailingSlashes&&(c=c.replace(/\/+$/,"")||"/");c=c.replace(/\/\.(?=\w+($|\?))/,".");e.url=q+c.replace(/\/\\\./,"/.");u(h,function(a,c){k.urlParams[c]||(e.params=e.params||{},e.params[c]=a)})}};return J}]})})(window,window.angular);
1700 //# sourceMappingURL=angular-resource.min.js.map
1700 //# sourceMappingURL=angular-resource.min.js.map
1701
1701
1702 ;/*
1702 ;/*
1703 AngularJS v1.5.5
1703 AngularJS v1.5.5
1704 (c) 2010-2016 Google, Inc. http://angularjs.org
1704 (c) 2010-2016 Google, Inc. http://angularjs.org
1705 License: MIT
1705 License: MIT
1706 */
1706 */
1707 (function(S,q){'use strict';function Aa(a,b,c){if(!a)throw Ma("areq",b||"?",c||"required");return a}function Ba(a,b){if(!a&&!b)return"";if(!a)return b;if(!b)return a;ba(a)&&(a=a.join(" "));ba(b)&&(b=b.join(" "));return a+" "+b}function Na(a){var b={};a&&(a.to||a.from)&&(b.to=a.to,b.from=a.from);return b}function X(a,b,c){var d="";a=ba(a)?a:a&&P(a)&&a.length?a.split(/\s+/):[];r(a,function(a,f){a&&0<a.length&&(d+=0<f?" ":"",d+=c?b+a:a+b)});return d}function Oa(a){if(a instanceof G)switch(a.length){case 0:return[];
1707 (function(S,q){'use strict';function Aa(a,b,c){if(!a)throw Ma("areq",b||"?",c||"required");return a}function Ba(a,b){if(!a&&!b)return"";if(!a)return b;if(!b)return a;ba(a)&&(a=a.join(" "));ba(b)&&(b=b.join(" "));return a+" "+b}function Na(a){var b={};a&&(a.to||a.from)&&(b.to=a.to,b.from=a.from);return b}function X(a,b,c){var d="";a=ba(a)?a:a&&P(a)&&a.length?a.split(/\s+/):[];r(a,function(a,f){a&&0<a.length&&(d+=0<f?" ":"",d+=c?b+a:a+b)});return d}function Oa(a){if(a instanceof G)switch(a.length){case 0:return[];
1708 case 1:if(1===a[0].nodeType)return a;break;default:return G(ca(a))}if(1===a.nodeType)return G(a)}function ca(a){if(!a[0])return a;for(var b=0;b<a.length;b++){var c=a[b];if(1==c.nodeType)return c}}function Pa(a,b,c){r(b,function(b){a.addClass(b,c)})}function Qa(a,b,c){r(b,function(b){a.removeClass(b,c)})}function U(a){return function(b,c){c.addClass&&(Pa(a,b,c.addClass),c.addClass=null);c.removeClass&&(Qa(a,b,c.removeClass),c.removeClass=null)}}function pa(a){a=a||{};if(!a.$$prepared){var b=a.domOperation||
1708 case 1:if(1===a[0].nodeType)return a;break;default:return G(ca(a))}if(1===a.nodeType)return G(a)}function ca(a){if(!a[0])return a;for(var b=0;b<a.length;b++){var c=a[b];if(1==c.nodeType)return c}}function Pa(a,b,c){r(b,function(b){a.addClass(b,c)})}function Qa(a,b,c){r(b,function(b){a.removeClass(b,c)})}function U(a){return function(b,c){c.addClass&&(Pa(a,b,c.addClass),c.addClass=null);c.removeClass&&(Qa(a,b,c.removeClass),c.removeClass=null)}}function pa(a){a=a||{};if(!a.$$prepared){var b=a.domOperation||
1709 Q;a.domOperation=function(){a.$$domOperationFired=!0;b();b=Q};a.$$prepared=!0}return a}function ga(a,b){Ca(a,b);Da(a,b)}function Ca(a,b){b.from&&(a.css(b.from),b.from=null)}function Da(a,b){b.to&&(a.css(b.to),b.to=null)}function V(a,b,c){var d=b.options||{};c=c.options||{};var e=(d.addClass||"")+" "+(c.addClass||""),f=(d.removeClass||"")+" "+(c.removeClass||"");a=Ra(a.attr("class"),e,f);c.preparationClasses&&(d.preparationClasses=Y(c.preparationClasses,d.preparationClasses),delete c.preparationClasses);
1709 Q;a.domOperation=function(){a.$$domOperationFired=!0;b();b=Q};a.$$prepared=!0}return a}function ga(a,b){Ca(a,b);Da(a,b)}function Ca(a,b){b.from&&(a.css(b.from),b.from=null)}function Da(a,b){b.to&&(a.css(b.to),b.to=null)}function V(a,b,c){var d=b.options||{};c=c.options||{};var e=(d.addClass||"")+" "+(c.addClass||""),f=(d.removeClass||"")+" "+(c.removeClass||"");a=Ra(a.attr("class"),e,f);c.preparationClasses&&(d.preparationClasses=Y(c.preparationClasses,d.preparationClasses),delete c.preparationClasses);
1710 e=d.domOperation!==Q?d.domOperation:null;Ea(d,c);e&&(d.domOperation=e);d.addClass=a.addClass?a.addClass:null;d.removeClass=a.removeClass?a.removeClass:null;b.addClass=d.addClass;b.removeClass=d.removeClass;return d}function Ra(a,b,c){function d(a){P(a)&&(a=a.split(" "));var b={};r(a,function(a){a.length&&(b[a]=!0)});return b}var e={};a=d(a);b=d(b);r(b,function(a,b){e[b]=1});c=d(c);r(c,function(a,b){e[b]=1===e[b]?null:-1});var f={addClass:"",removeClass:""};r(e,function(b,c){var d,e;1===b?(d="addClass",
1710 e=d.domOperation!==Q?d.domOperation:null;Ea(d,c);e&&(d.domOperation=e);d.addClass=a.addClass?a.addClass:null;d.removeClass=a.removeClass?a.removeClass:null;b.addClass=d.addClass;b.removeClass=d.removeClass;return d}function Ra(a,b,c){function d(a){P(a)&&(a=a.split(" "));var b={};r(a,function(a){a.length&&(b[a]=!0)});return b}var e={};a=d(a);b=d(b);r(b,function(a,b){e[b]=1});c=d(c);r(c,function(a,b){e[b]=1===e[b]?null:-1});var f={addClass:"",removeClass:""};r(e,function(b,c){var d,e;1===b?(d="addClass",
1711 e=!a[c]):-1===b&&(d="removeClass",e=a[c]);e&&(f[d].length&&(f[d]+=" "),f[d]+=c)});return f}function D(a){return a instanceof q.element?a[0]:a}function Sa(a,b,c){var d="";b&&(d=X(b,"ng-",!0));c.addClass&&(d=Y(d,X(c.addClass,"-add")));c.removeClass&&(d=Y(d,X(c.removeClass,"-remove")));d.length&&(c.preparationClasses=d,a.addClass(d))}function qa(a,b){var c=b?"-"+b+"s":"";la(a,[ma,c]);return[ma,c]}function ta(a,b){var c=b?"paused":"",d=Z+"PlayState";la(a,[d,c]);return[d,c]}function la(a,b){a.style[b[0]]=
1711 e=!a[c]):-1===b&&(d="removeClass",e=a[c]);e&&(f[d].length&&(f[d]+=" "),f[d]+=c)});return f}function D(a){return a instanceof q.element?a[0]:a}function Sa(a,b,c){var d="";b&&(d=X(b,"ng-",!0));c.addClass&&(d=Y(d,X(c.addClass,"-add")));c.removeClass&&(d=Y(d,X(c.removeClass,"-remove")));d.length&&(c.preparationClasses=d,a.addClass(d))}function qa(a,b){var c=b?"-"+b+"s":"";la(a,[ma,c]);return[ma,c]}function ta(a,b){var c=b?"paused":"",d=Z+"PlayState";la(a,[d,c]);return[d,c]}function la(a,b){a.style[b[0]]=
1712 b[1]}function Y(a,b){return a?b?a+" "+b:a:b}function Fa(a,b,c){var d=Object.create(null),e=a.getComputedStyle(b)||{};r(c,function(a,b){var c=e[a];if(c){var s=c.charAt(0);if("-"===s||"+"===s||0<=s)c=Ta(c);0===c&&(c=null);d[b]=c}});return d}function Ta(a){var b=0;a=a.split(/\s*,\s*/);r(a,function(a){"s"==a.charAt(a.length-1)&&(a=a.substring(0,a.length-1));a=parseFloat(a)||0;b=b?Math.max(a,b):a});return b}function ua(a){return 0===a||null!=a}function Ga(a,b){var c=T,d=a+"s";b?c+="Duration":d+=" linear all";
1712 b[1]}function Y(a,b){return a?b?a+" "+b:a:b}function Fa(a,b,c){var d=Object.create(null),e=a.getComputedStyle(b)||{};r(c,function(a,b){var c=e[a];if(c){var s=c.charAt(0);if("-"===s||"+"===s||0<=s)c=Ta(c);0===c&&(c=null);d[b]=c}});return d}function Ta(a){var b=0;a=a.split(/\s*,\s*/);r(a,function(a){"s"==a.charAt(a.length-1)&&(a=a.substring(0,a.length-1));a=parseFloat(a)||0;b=b?Math.max(a,b):a});return b}function ua(a){return 0===a||null!=a}function Ga(a,b){var c=T,d=a+"s";b?c+="Duration":d+=" linear all";
1713 return[c,d]}function Ha(){var a=Object.create(null);return{flush:function(){a=Object.create(null)},count:function(b){return(b=a[b])?b.total:0},get:function(b){return(b=a[b])&&b.value},put:function(b,c){a[b]?a[b].total++:a[b]={total:1,value:c}}}}function Ia(a,b,c){r(c,function(c){a[c]=da(a[c])?a[c]:b.style.getPropertyValue(c)})}var Q=q.noop,Ja=q.copy,Ea=q.extend,G=q.element,r=q.forEach,ba=q.isArray,P=q.isString,va=q.isObject,C=q.isUndefined,da=q.isDefined,Ka=q.isFunction,wa=q.isElement,T,xa,Z,ya;C(S.ontransitionend)&&
1713 return[c,d]}function Ha(){var a=Object.create(null);return{flush:function(){a=Object.create(null)},count:function(b){return(b=a[b])?b.total:0},get:function(b){return(b=a[b])&&b.value},put:function(b,c){a[b]?a[b].total++:a[b]={total:1,value:c}}}}function Ia(a,b,c){r(c,function(c){a[c]=da(a[c])?a[c]:b.style.getPropertyValue(c)})}var Q=q.noop,Ja=q.copy,Ea=q.extend,G=q.element,r=q.forEach,ba=q.isArray,P=q.isString,va=q.isObject,C=q.isUndefined,da=q.isDefined,Ka=q.isFunction,wa=q.isElement,T,xa,Z,ya;C(S.ontransitionend)&&
1714 da(S.onwebkittransitionend)?(T="WebkitTransition",xa="webkitTransitionEnd transitionend"):(T="transition",xa="transitionend");C(S.onanimationend)&&da(S.onwebkitanimationend)?(Z="WebkitAnimation",ya="webkitAnimationEnd animationend"):(Z="animation",ya="animationend");var ra=Z+"Delay",za=Z+"Duration",ma=T+"Delay",La=T+"Duration",Ma=q.$$minErr("ng"),Ua={transitionDuration:La,transitionDelay:ma,transitionProperty:T+"Property",animationDuration:za,animationDelay:ra,animationIterationCount:Z+"IterationCount"},
1714 da(S.onwebkittransitionend)?(T="WebkitTransition",xa="webkitTransitionEnd transitionend"):(T="transition",xa="transitionend");C(S.onanimationend)&&da(S.onwebkitanimationend)?(Z="WebkitAnimation",ya="webkitAnimationEnd animationend"):(Z="animation",ya="animationend");var ra=Z+"Delay",za=Z+"Duration",ma=T+"Delay",La=T+"Duration",Ma=q.$$minErr("ng"),Ua={transitionDuration:La,transitionDelay:ma,transitionProperty:T+"Property",animationDuration:za,animationDelay:ra,animationIterationCount:Z+"IterationCount"},
1715 Va={transitionDuration:La,transitionDelay:ma,animationDuration:za,animationDelay:ra};q.module("ngAnimate",[]).directive("ngAnimateSwap",["$animate","$rootScope",function(a,b){return{restrict:"A",transclude:"element",terminal:!0,priority:600,link:function(b,d,e,f,z){var B,s;b.$watchCollection(e.ngAnimateSwap||e["for"],function(e){B&&a.leave(B);s&&(s.$destroy(),s=null);if(e||0===e)s=b.$new(),z(s,function(b){B=b;a.enter(b,null,d)})})}}}]).directive("ngAnimateChildren",["$interpolate",function(a){return{link:function(b,
1715 Va={transitionDuration:La,transitionDelay:ma,animationDuration:za,animationDelay:ra};q.module("ngAnimate",[]).directive("ngAnimateSwap",["$animate","$rootScope",function(a,b){return{restrict:"A",transclude:"element",terminal:!0,priority:600,link:function(b,d,e,f,z){var B,s;b.$watchCollection(e.ngAnimateSwap||e["for"],function(e){B&&a.leave(B);s&&(s.$destroy(),s=null);if(e||0===e)s=b.$new(),z(s,function(b){B=b;a.enter(b,null,d)})})}}}]).directive("ngAnimateChildren",["$interpolate",function(a){return{link:function(b,
1716 c,d){function e(a){c.data("$$ngAnimateChildren","on"===a||"true"===a)}var f=d.ngAnimateChildren;q.isString(f)&&0===f.length?c.data("$$ngAnimateChildren",!0):(e(a(f)(b)),d.$observe("ngAnimateChildren",e))}}}]).factory("$$rAFScheduler",["$$rAF",function(a){function b(a){d=d.concat(a);c()}function c(){if(d.length){for(var b=d.shift(),z=0;z<b.length;z++)b[z]();e||a(function(){e||c()})}}var d,e;d=b.queue=[];b.waitUntilQuiet=function(b){e&&e();e=a(function(){e=null;b();c()})};return b}]).provider("$$animateQueue",
1716 c,d){function e(a){c.data("$$ngAnimateChildren","on"===a||"true"===a)}var f=d.ngAnimateChildren;q.isString(f)&&0===f.length?c.data("$$ngAnimateChildren",!0):(e(a(f)(b)),d.$observe("ngAnimateChildren",e))}}}]).factory("$$rAFScheduler",["$$rAF",function(a){function b(a){d=d.concat(a);c()}function c(){if(d.length){for(var b=d.shift(),z=0;z<b.length;z++)b[z]();e||a(function(){e||c()})}}var d,e;d=b.queue=[];b.waitUntilQuiet=function(b){e&&e();e=a(function(){e=null;b();c()})};return b}]).provider("$$animateQueue",
1717 ["$animateProvider",function(a){function b(a){if(!a)return null;a=a.split(" ");var b=Object.create(null);r(a,function(a){b[a]=!0});return b}function c(a,c){if(a&&c){var d=b(c);return a.split(" ").some(function(a){return d[a]})}}function d(a,b,c,d){return f[a].some(function(a){return a(b,c,d)})}function e(a,b){var c=0<(a.addClass||"").length,d=0<(a.removeClass||"").length;return b?c&&d:c||d}var f=this.rules={skip:[],cancel:[],join:[]};f.join.push(function(a,b,c){return!b.structural&&e(b)});f.skip.push(function(a,
1717 ["$animateProvider",function(a){function b(a){if(!a)return null;a=a.split(" ");var b=Object.create(null);r(a,function(a){b[a]=!0});return b}function c(a,c){if(a&&c){var d=b(c);return a.split(" ").some(function(a){return d[a]})}}function d(a,b,c,d){return f[a].some(function(a){return a(b,c,d)})}function e(a,b){var c=0<(a.addClass||"").length,d=0<(a.removeClass||"").length;return b?c&&d:c||d}var f=this.rules={skip:[],cancel:[],join:[]};f.join.push(function(a,b,c){return!b.structural&&e(b)});f.skip.push(function(a,
1718 b,c){return!b.structural&&!e(b)});f.skip.push(function(a,b,c){return"leave"==c.event&&b.structural});f.skip.push(function(a,b,c){return c.structural&&2===c.state&&!b.structural});f.cancel.push(function(a,b,c){return c.structural&&b.structural});f.cancel.push(function(a,b,c){return 2===c.state&&b.structural});f.cancel.push(function(a,b,d){if(d.structural)return!1;a=b.addClass;b=b.removeClass;var e=d.addClass;d=d.removeClass;return C(a)&&C(b)||C(e)&&C(d)?!1:c(a,d)||c(b,e)});this.$get=["$$rAF","$rootScope",
1718 b,c){return!b.structural&&!e(b)});f.skip.push(function(a,b,c){return"leave"==c.event&&b.structural});f.skip.push(function(a,b,c){return c.structural&&2===c.state&&!b.structural});f.cancel.push(function(a,b,c){return c.structural&&b.structural});f.cancel.push(function(a,b,c){return 2===c.state&&b.structural});f.cancel.push(function(a,b,d){if(d.structural)return!1;a=b.addClass;b=b.removeClass;var e=d.addClass;d=d.removeClass;return C(a)&&C(b)||C(e)&&C(d)?!1:c(a,d)||c(b,e)});this.$get=["$$rAF","$rootScope",
1719 "$rootElement","$document","$$HashMap","$$animation","$$AnimateRunner","$templateRequest","$$jqLite","$$forceReflow",function(b,c,f,v,I,Wa,u,sa,w,x){function R(){var a=!1;return function(b){a?b():c.$$postDigest(function(){a=!0;b()})}}function J(a,b,c){var g=D(b),d=D(a),k=[];(a=h[c])&&r(a,function(a){ia.call(a.node,g)?k.push(a.callback):"leave"===c&&ia.call(a.node,d)&&k.push(a.callback)});return k}function k(a,b,c){var g=ca(b);return a.filter(function(a){return!(a.node===g&&(!c||a.callback===c))})}
1719 "$rootElement","$document","$$HashMap","$$animation","$$AnimateRunner","$templateRequest","$$jqLite","$$forceReflow",function(b,c,f,v,I,Wa,u,sa,w,x){function R(){var a=!1;return function(b){a?b():c.$$postDigest(function(){a=!0;b()})}}function J(a,b,c){var g=D(b),d=D(a),k=[];(a=h[c])&&r(a,function(a){ia.call(a.node,g)?k.push(a.callback):"leave"===c&&ia.call(a.node,d)&&k.push(a.callback)});return k}function k(a,b,c){var g=ca(b);return a.filter(function(a){return!(a.node===g&&(!c||a.callback===c))})}
1720 function p(a,k,h){function l(c,g,d,h){f(function(){var c=J(oa,a,g);c.length?b(function(){r(c,function(b){b(a,d,h)});"close"!==d||a[0].parentNode||N.off(a)}):"close"!==d||a[0].parentNode||N.off(a)});c.progress(g,d,h)}function A(b){var c=a,g=m;g.preparationClasses&&(c.removeClass(g.preparationClasses),g.preparationClasses=null);g.activeClasses&&(c.removeClass(g.activeClasses),g.activeClasses=null);F(a,m);ga(a,m);m.domOperation();p.complete(!b)}var m=Ja(h),x,oa;if(a=Oa(a))x=D(a),oa=a.parent();var m=
1720 function p(a,k,h){function l(c,g,d,h){f(function(){var c=J(oa,a,g);c.length?b(function(){r(c,function(b){b(a,d,h)});"close"!==d||a[0].parentNode||N.off(a)}):"close"!==d||a[0].parentNode||N.off(a)});c.progress(g,d,h)}function A(b){var c=a,g=m;g.preparationClasses&&(c.removeClass(g.preparationClasses),g.preparationClasses=null);g.activeClasses&&(c.removeClass(g.activeClasses),g.activeClasses=null);F(a,m);ga(a,m);m.domOperation();p.complete(!b)}var m=Ja(h),x,oa;if(a=Oa(a))x=D(a),oa=a.parent();var m=
1721 pa(m),p=new u,f=R();ba(m.addClass)&&(m.addClass=m.addClass.join(" "));m.addClass&&!P(m.addClass)&&(m.addClass=null);ba(m.removeClass)&&(m.removeClass=m.removeClass.join(" "));m.removeClass&&!P(m.removeClass)&&(m.removeClass=null);m.from&&!va(m.from)&&(m.from=null);m.to&&!va(m.to)&&(m.to=null);if(!x)return A(),p;h=[x.className,m.addClass,m.removeClass].join(" ");if(!Xa(h))return A(),p;var s=0<=["enter","move","leave"].indexOf(k),t=v[0].hidden,w=!g||t||H.get(x);h=!w&&y.get(x)||{};var I=!!h.state;w||
1721 pa(m),p=new u,f=R();ba(m.addClass)&&(m.addClass=m.addClass.join(" "));m.addClass&&!P(m.addClass)&&(m.addClass=null);ba(m.removeClass)&&(m.removeClass=m.removeClass.join(" "));m.removeClass&&!P(m.removeClass)&&(m.removeClass=null);m.from&&!va(m.from)&&(m.from=null);m.to&&!va(m.to)&&(m.to=null);if(!x)return A(),p;h=[x.className,m.addClass,m.removeClass].join(" ");if(!Xa(h))return A(),p;var s=0<=["enter","move","leave"].indexOf(k),t=v[0].hidden,w=!g||t||H.get(x);h=!w&&y.get(x)||{};var I=!!h.state;w||
1722 I&&1==h.state||(w=!K(a,oa,k));if(w)return t&&l(p,k,"start"),A(),t&&l(p,k,"close"),p;s&&L(a);t={structural:s,element:a,event:k,addClass:m.addClass,removeClass:m.removeClass,close:A,options:m,runner:p};if(I){if(d("skip",a,t,h)){if(2===h.state)return A(),p;V(a,h,t);return h.runner}if(d("cancel",a,t,h))if(2===h.state)h.runner.end();else if(h.structural)h.close();else return V(a,h,t),h.runner;else if(d("join",a,t,h))if(2===h.state)V(a,t,{});else return Sa(a,s?k:null,m),k=t.event=h.event,m=V(a,h,t),h.runner}else V(a,
1722 I&&1==h.state||(w=!K(a,oa,k));if(w)return t&&l(p,k,"start"),A(),t&&l(p,k,"close"),p;s&&L(a);t={structural:s,element:a,event:k,addClass:m.addClass,removeClass:m.removeClass,close:A,options:m,runner:p};if(I){if(d("skip",a,t,h)){if(2===h.state)return A(),p;V(a,h,t);return h.runner}if(d("cancel",a,t,h))if(2===h.state)h.runner.end();else if(h.structural)h.close();else return V(a,h,t),h.runner;else if(d("join",a,t,h))if(2===h.state)V(a,t,{});else return Sa(a,s?k:null,m),k=t.event=h.event,m=V(a,h,t),h.runner}else V(a,
1723 t,{});(I=t.structural)||(I="animate"===t.event&&0<Object.keys(t.options.to||{}).length||e(t));if(!I)return A(),O(a),p;var ia=(h.counter||0)+1;t.counter=ia;M(a,1,t);c.$$postDigest(function(){var b=y.get(x),c=!b,b=b||{},g=0<(a.parent()||[]).length&&("animate"===b.event||b.structural||e(b));if(c||b.counter!==ia||!g){c&&(F(a,m),ga(a,m));if(c||s&&b.event!==k)m.domOperation(),p.end();g||O(a)}else k=!b.structural&&e(b,!0)?"setClass":b.event,M(a,2),b=Wa(a,k,b.options),p.setHost(b),l(p,k,"start",{}),b.done(function(b){A(!b);
1723 t,{});(I=t.structural)||(I="animate"===t.event&&0<Object.keys(t.options.to||{}).length||e(t));if(!I)return A(),O(a),p;var ia=(h.counter||0)+1;t.counter=ia;M(a,1,t);c.$$postDigest(function(){var b=y.get(x),c=!b,b=b||{},g=0<(a.parent()||[]).length&&("animate"===b.event||b.structural||e(b));if(c||b.counter!==ia||!g){c&&(F(a,m),ga(a,m));if(c||s&&b.event!==k)m.domOperation(),p.end();g||O(a)}else k=!b.structural&&e(b,!0)?"setClass":b.event,M(a,2),b=Wa(a,k,b.options),p.setHost(b),l(p,k,"start",{}),b.done(function(b){A(!b);
1724 (b=y.get(x))&&b.counter===ia&&O(D(a));l(p,k,"close",{})})});return p}function L(a){a=D(a).querySelectorAll("[data-ng-animate]");r(a,function(a){var b=parseInt(a.getAttribute("data-ng-animate")),c=y.get(a);if(c)switch(b){case 2:c.runner.end();case 1:y.remove(a)}})}function O(a){a=D(a);a.removeAttribute("data-ng-animate");y.remove(a)}function l(a,b){return D(a)===D(b)}function K(a,b,c){c=G(v[0].body);var g=l(a,c)||"HTML"===a[0].nodeName,d=l(a,f),h=!1,k,e=H.get(D(a));(a=G.data(a[0],"$ngAnimatePin"))&&
1724 (b=y.get(x))&&b.counter===ia&&O(D(a));l(p,k,"close",{})})});return p}function L(a){a=D(a).querySelectorAll("[data-ng-animate]");r(a,function(a){var b=parseInt(a.getAttribute("data-ng-animate")),c=y.get(a);if(c)switch(b){case 2:c.runner.end();case 1:y.remove(a)}})}function O(a){a=D(a);a.removeAttribute("data-ng-animate");y.remove(a)}function l(a,b){return D(a)===D(b)}function K(a,b,c){c=G(v[0].body);var g=l(a,c)||"HTML"===a[0].nodeName,d=l(a,f),h=!1,k,e=H.get(D(a));(a=G.data(a[0],"$ngAnimatePin"))&&
1725 (b=a);for(b=D(b);b;){d||(d=l(b,f));if(1!==b.nodeType)break;a=y.get(b)||{};if(!h){var p=H.get(b);if(!0===p&&!1!==e){e=!0;break}else!1===p&&(e=!1);h=a.structural}if(C(k)||!0===k)a=G.data(b,"$$ngAnimateChildren"),da(a)&&(k=a);if(h&&!1===k)break;g||(g=l(b,c));if(g&&d)break;if(!d&&(a=G.data(b,"$ngAnimatePin"))){b=D(a);continue}b=b.parentNode}return(!h||k)&&!0!==e&&d&&g}function M(a,b,c){c=c||{};c.state=b;a=D(a);a.setAttribute("data-ng-animate",b);c=(b=y.get(a))?Ea(b,c):c;y.put(a,c)}var y=new I,H=new I,
1725 (b=a);for(b=D(b);b;){d||(d=l(b,f));if(1!==b.nodeType)break;a=y.get(b)||{};if(!h){var p=H.get(b);if(!0===p&&!1!==e){e=!0;break}else!1===p&&(e=!1);h=a.structural}if(C(k)||!0===k)a=G.data(b,"$$ngAnimateChildren"),da(a)&&(k=a);if(h&&!1===k)break;g||(g=l(b,c));if(g&&d)break;if(!d&&(a=G.data(b,"$ngAnimatePin"))){b=D(a);continue}b=b.parentNode}return(!h||k)&&!0!==e&&d&&g}function M(a,b,c){c=c||{};c.state=b;a=D(a);a.setAttribute("data-ng-animate",b);c=(b=y.get(a))?Ea(b,c):c;y.put(a,c)}var y=new I,H=new I,
1726 g=null,oa=c.$watch(function(){return 0===sa.totalPendingRequests},function(a){a&&(oa(),c.$$postDigest(function(){c.$$postDigest(function(){null===g&&(g=!0)})}))}),h={},A=a.classNameFilter(),Xa=A?function(a){return A.test(a)}:function(){return!0},F=U(w),ia=S.Node.prototype.contains||function(a){return this===a||!!(this.compareDocumentPosition(a)&16)},N={on:function(a,b,c){var g=ca(b);h[a]=h[a]||[];h[a].push({node:g,callback:c});G(b).on("$destroy",function(){y.get(g)||N.off(a,b,c)})},off:function(a,
1726 g=null,oa=c.$watch(function(){return 0===sa.totalPendingRequests},function(a){a&&(oa(),c.$$postDigest(function(){c.$$postDigest(function(){null===g&&(g=!0)})}))}),h={},A=a.classNameFilter(),Xa=A?function(a){return A.test(a)}:function(){return!0},F=U(w),ia=S.Node.prototype.contains||function(a){return this===a||!!(this.compareDocumentPosition(a)&16)},N={on:function(a,b,c){var g=ca(b);h[a]=h[a]||[];h[a].push({node:g,callback:c});G(b).on("$destroy",function(){y.get(g)||N.off(a,b,c)})},off:function(a,
1727 b,c){if(1!==arguments.length||q.isString(arguments[0])){var g=h[a];g&&(h[a]=1===arguments.length?null:k(g,b,c))}else for(g in b=arguments[0],h)h[g]=k(h[g],b)},pin:function(a,b){Aa(wa(a),"element","not an element");Aa(wa(b),"parentElement","not an element");a.data("$ngAnimatePin",b)},push:function(a,b,c,g){c=c||{};c.domOperation=g;return p(a,b,c)},enabled:function(a,b){var c=arguments.length;if(0===c)b=!!g;else if(wa(a)){var d=D(a),h=H.get(d);1===c?b=!h:H.put(d,!b)}else b=g=!!a;return b}};return N}]}]).provider("$$animation",
1727 b,c){if(1!==arguments.length||q.isString(arguments[0])){var g=h[a];g&&(h[a]=1===arguments.length?null:k(g,b,c))}else for(g in b=arguments[0],h)h[g]=k(h[g],b)},pin:function(a,b){Aa(wa(a),"element","not an element");Aa(wa(b),"parentElement","not an element");a.data("$ngAnimatePin",b)},push:function(a,b,c,g){c=c||{};c.domOperation=g;return p(a,b,c)},enabled:function(a,b){var c=arguments.length;if(0===c)b=!!g;else if(wa(a)){var d=D(a),h=H.get(d);1===c?b=!h:H.put(d,!b)}else b=g=!!a;return b}};return N}]}]).provider("$$animation",
1728 ["$animateProvider",function(a){function b(a){return a.data("$$animationRunner")}var c=this.drivers=[];this.$get=["$$jqLite","$rootScope","$injector","$$AnimateRunner","$$HashMap","$$rAFScheduler",function(a,e,f,z,B,s){function v(a){function b(a){if(a.processed)return a;a.processed=!0;var d=a.domNode,L=d.parentNode;e.put(d,a);for(var f;L;){if(f=e.get(L)){f.processed||(f=b(f));break}L=L.parentNode}(f||c).children.push(a);return a}var c={children:[]},d,e=new B;for(d=0;d<a.length;d++){var f=a[d];e.put(f.domNode,
1728 ["$animateProvider",function(a){function b(a){return a.data("$$animationRunner")}var c=this.drivers=[];this.$get=["$$jqLite","$rootScope","$injector","$$AnimateRunner","$$HashMap","$$rAFScheduler",function(a,e,f,z,B,s){function v(a){function b(a){if(a.processed)return a;a.processed=!0;var d=a.domNode,L=d.parentNode;e.put(d,a);for(var f;L;){if(f=e.get(L)){f.processed||(f=b(f));break}L=L.parentNode}(f||c).children.push(a);return a}var c={children:[]},d,e=new B;for(d=0;d<a.length;d++){var f=a[d];e.put(f.domNode,
1729 a[d]={domNode:f.domNode,fn:f.fn,children:[]})}for(d=0;d<a.length;d++)b(a[d]);return function(a){var b=[],c=[],d;for(d=0;d<a.children.length;d++)c.push(a.children[d]);a=c.length;var e=0,f=[];for(d=0;d<c.length;d++){var x=c[d];0>=a&&(a=e,e=0,b.push(f),f=[]);f.push(x.fn);x.children.forEach(function(a){e++;c.push(a)});a--}f.length&&b.push(f);return b}(c)}var I=[],q=U(a);return function(u,B,w){function x(a){a=a.hasAttribute("ng-animate-ref")?[a]:a.querySelectorAll("[ng-animate-ref]");var b=[];r(a,function(a){var c=
1729 a[d]={domNode:f.domNode,fn:f.fn,children:[]})}for(d=0;d<a.length;d++)b(a[d]);return function(a){var b=[],c=[],d;for(d=0;d<a.children.length;d++)c.push(a.children[d]);a=c.length;var e=0,f=[];for(d=0;d<c.length;d++){var x=c[d];0>=a&&(a=e,e=0,b.push(f),f=[]);f.push(x.fn);x.children.forEach(function(a){e++;c.push(a)});a--}f.length&&b.push(f);return b}(c)}var I=[],q=U(a);return function(u,B,w){function x(a){a=a.hasAttribute("ng-animate-ref")?[a]:a.querySelectorAll("[ng-animate-ref]");var b=[];r(a,function(a){var c=
1730 a.getAttribute("ng-animate-ref");c&&c.length&&b.push(a)});return b}function R(a){var b=[],c={};r(a,function(a,g){var d=D(a.element),e=0<=["enter","move"].indexOf(a.event),d=a.structural?x(d):[];if(d.length){var k=e?"to":"from";r(d,function(a){var b=a.getAttribute("ng-animate-ref");c[b]=c[b]||{};c[b][k]={animationID:g,element:G(a)}})}else b.push(a)});var d={},e={};r(c,function(c,h){var k=c.from,f=c.to;if(k&&f){var p=a[k.animationID],y=a[f.animationID],l=k.animationID.toString();if(!e[l]){var x=e[l]=
1730 a.getAttribute("ng-animate-ref");c&&c.length&&b.push(a)});return b}function R(a){var b=[],c={};r(a,function(a,g){var d=D(a.element),e=0<=["enter","move"].indexOf(a.event),d=a.structural?x(d):[];if(d.length){var k=e?"to":"from";r(d,function(a){var b=a.getAttribute("ng-animate-ref");c[b]=c[b]||{};c[b][k]={animationID:g,element:G(a)}})}else b.push(a)});var d={},e={};r(c,function(c,h){var k=c.from,f=c.to;if(k&&f){var p=a[k.animationID],y=a[f.animationID],l=k.animationID.toString();if(!e[l]){var x=e[l]=
1731 {structural:!0,beforeStart:function(){p.beforeStart();y.beforeStart()},close:function(){p.close();y.close()},classes:J(p.classes,y.classes),from:p,to:y,anchors:[]};x.classes.length?b.push(x):(b.push(p),b.push(y))}e[l].anchors.push({out:k.element,"in":f.element})}else k=k?k.animationID:f.animationID,f=k.toString(),d[f]||(d[f]=!0,b.push(a[k]))});return b}function J(a,b){a=a.split(" ");b=b.split(" ");for(var c=[],d=0;d<a.length;d++){var k=a[d];if("ng-"!==k.substring(0,3))for(var e=0;e<b.length;e++)if(k===
1731 {structural:!0,beforeStart:function(){p.beforeStart();y.beforeStart()},close:function(){p.close();y.close()},classes:J(p.classes,y.classes),from:p,to:y,anchors:[]};x.classes.length?b.push(x):(b.push(p),b.push(y))}e[l].anchors.push({out:k.element,"in":f.element})}else k=k?k.animationID:f.animationID,f=k.toString(),d[f]||(d[f]=!0,b.push(a[k]))});return b}function J(a,b){a=a.split(" ");b=b.split(" ");for(var c=[],d=0;d<a.length;d++){var k=a[d];if("ng-"!==k.substring(0,3))for(var e=0;e<b.length;e++)if(k===
1732 b[e]){c.push(k);break}}return c.join(" ")}function k(a){for(var b=c.length-1;0<=b;b--){var d=c[b];if(f.has(d)&&(d=f.get(d)(a)))return d}}function p(a,c){a.from&&a.to?(b(a.from.element).setHost(c),b(a.to.element).setHost(c)):b(a.element).setHost(c)}function L(){var a=b(u);!a||"leave"===B&&w.$$domOperationFired||a.end()}function O(b){u.off("$destroy",L);u.removeData("$$animationRunner");q(u,w);ga(u,w);w.domOperation();y&&a.removeClass(u,y);u.removeClass("ng-animate");K.complete(!b)}w=pa(w);var l=0<=
1732 b[e]){c.push(k);break}}return c.join(" ")}function k(a){for(var b=c.length-1;0<=b;b--){var d=c[b];if(f.has(d)&&(d=f.get(d)(a)))return d}}function p(a,c){a.from&&a.to?(b(a.from.element).setHost(c),b(a.to.element).setHost(c)):b(a.element).setHost(c)}function L(){var a=b(u);!a||"leave"===B&&w.$$domOperationFired||a.end()}function O(b){u.off("$destroy",L);u.removeData("$$animationRunner");q(u,w);ga(u,w);w.domOperation();y&&a.removeClass(u,y);u.removeClass("ng-animate");K.complete(!b)}w=pa(w);var l=0<=
1733 ["enter","move","leave"].indexOf(B),K=new z({end:function(){O()},cancel:function(){O(!0)}});if(!c.length)return O(),K;u.data("$$animationRunner",K);var M=Ba(u.attr("class"),Ba(w.addClass,w.removeClass)),y=w.tempClasses;y&&(M+=" "+y,w.tempClasses=null);var H;l&&(H="ng-"+B+"-prepare",a.addClass(u,H));I.push({element:u,classes:M,event:B,structural:l,options:w,beforeStart:function(){u.addClass("ng-animate");y&&a.addClass(u,y);H&&(a.removeClass(u,H),H=null)},close:O});u.on("$destroy",L);if(1<I.length)return K;
1733 ["enter","move","leave"].indexOf(B),K=new z({end:function(){O()},cancel:function(){O(!0)}});if(!c.length)return O(),K;u.data("$$animationRunner",K);var M=Ba(u.attr("class"),Ba(w.addClass,w.removeClass)),y=w.tempClasses;y&&(M+=" "+y,w.tempClasses=null);var H;l&&(H="ng-"+B+"-prepare",a.addClass(u,H));I.push({element:u,classes:M,event:B,structural:l,options:w,beforeStart:function(){u.addClass("ng-animate");y&&a.addClass(u,y);H&&(a.removeClass(u,H),H=null)},close:O});u.on("$destroy",L);if(1<I.length)return K;
1734 e.$$postDigest(function(){var a=[];r(I,function(c){b(c.element)?a.push(c):c.close()});I.length=0;var c=R(a),d=[];r(c,function(a){d.push({domNode:D(a.from?a.from.element:a.element),fn:function(){a.beforeStart();var c,d=a.close;if(b(a.anchors?a.from.element||a.to.element:a.element)){var g=k(a);g&&(c=g.start)}c?(c=c(),c.done(function(a){d(!a)}),p(a,c)):d()}})});s(v(d))});return K}}]}]).provider("$animateCss",["$animateProvider",function(a){var b=Ha(),c=Ha();this.$get=["$window","$$jqLite","$$AnimateRunner",
1734 e.$$postDigest(function(){var a=[];r(I,function(c){b(c.element)?a.push(c):c.close()});I.length=0;var c=R(a),d=[];r(c,function(a){d.push({domNode:D(a.from?a.from.element:a.element),fn:function(){a.beforeStart();var c,d=a.close;if(b(a.anchors?a.from.element||a.to.element:a.element)){var g=k(a);g&&(c=g.start)}c?(c=c(),c.done(function(a){d(!a)}),p(a,c)):d()}})});s(v(d))});return K}}]}]).provider("$animateCss",["$animateProvider",function(a){var b=Ha(),c=Ha();this.$get=["$window","$$jqLite","$$AnimateRunner",
1735 "$timeout","$$forceReflow","$sniffer","$$rAFScheduler","$$animateQueue",function(a,e,f,z,B,s,v,I){function q(a,b){var c=a.parentNode;return(c.$$ngAnimateParentKey||(c.$$ngAnimateParentKey=++R))+"-"+a.getAttribute("class")+"-"+b}function u(k,f,x,s){var l;0<b.count(x)&&(l=c.get(x),l||(f=X(f,"-stagger"),e.addClass(k,f),l=Fa(a,k,s),l.animationDuration=Math.max(l.animationDuration,0),l.transitionDuration=Math.max(l.transitionDuration,0),e.removeClass(k,f),c.put(x,l)));return l||{}}function sa(a){J.push(a);
1735 "$timeout","$$forceReflow","$sniffer","$$rAFScheduler","$$animateQueue",function(a,e,f,z,B,s,v,I){function q(a,b){var c=a.parentNode;return(c.$$ngAnimateParentKey||(c.$$ngAnimateParentKey=++R))+"-"+a.getAttribute("class")+"-"+b}function u(k,f,x,s){var l;0<b.count(x)&&(l=c.get(x),l||(f=X(f,"-stagger"),e.addClass(k,f),l=Fa(a,k,s),l.animationDuration=Math.max(l.animationDuration,0),l.transitionDuration=Math.max(l.transitionDuration,0),e.removeClass(k,f),c.put(x,l)));return l||{}}function sa(a){J.push(a);
1736 v.waitUntilQuiet(function(){b.flush();c.flush();for(var a=B(),d=0;d<J.length;d++)J[d](a);J.length=0})}function w(c,e,f){e=b.get(f);e||(e=Fa(a,c,Ua),"infinite"===e.animationIterationCount&&(e.animationIterationCount=1));b.put(f,e);c=e;f=c.animationDelay;e=c.transitionDelay;c.maxDelay=f&&e?Math.max(f,e):f||e;c.maxDuration=Math.max(c.animationDuration*c.animationIterationCount,c.transitionDuration);return c}var x=U(e),R=0,J=[];return function(a,c){function d(){l()}function v(){l(!0)}function l(b){if(!(R||
1736 v.waitUntilQuiet(function(){b.flush();c.flush();for(var a=B(),d=0;d<J.length;d++)J[d](a);J.length=0})}function w(c,e,f){e=b.get(f);e||(e=Fa(a,c,Ua),"infinite"===e.animationIterationCount&&(e.animationIterationCount=1));b.put(f,e);c=e;f=c.animationDelay;e=c.transitionDelay;c.maxDelay=f&&e?Math.max(f,e):f||e;c.maxDuration=Math.max(c.animationDuration*c.animationIterationCount,c.transitionDuration);return c}var x=U(e),R=0,J=[];return function(a,c){function d(){l()}function v(){l(!0)}function l(b){if(!(R||
1737 G&&N)){R=!0;N=!1;g.$$skipPreparationClasses||e.removeClass(a,fa);e.removeClass(a,da);ta(h,!1);qa(h,!1);r(A,function(a){h.style[a[0]]=""});x(a,g);ga(a,g);Object.keys(J).length&&r(J,function(a,b){a?h.style.setProperty(b,a):h.style.removeProperty(b)});if(g.onDone)g.onDone();ea&&ea.length&&a.off(ea.join(" "),y);var c=a.data("$$animateCss");c&&(z.cancel(c[0].timer),a.removeData("$$animateCss"));C&&C.complete(!b)}}function K(a){n.blockTransition&&qa(h,a);n.blockKeyframeAnimation&&ta(h,!!a)}function M(){C=
1737 G&&N)){R=!0;N=!1;g.$$skipPreparationClasses||e.removeClass(a,fa);e.removeClass(a,da);ta(h,!1);qa(h,!1);r(A,function(a){h.style[a[0]]=""});x(a,g);ga(a,g);Object.keys(J).length&&r(J,function(a,b){a?h.style.setProperty(b,a):h.style.removeProperty(b)});if(g.onDone)g.onDone();ea&&ea.length&&a.off(ea.join(" "),y);var c=a.data("$$animateCss");c&&(z.cancel(c[0].timer),a.removeData("$$animateCss"));C&&C.complete(!b)}}function K(a){n.blockTransition&&qa(h,a);n.blockKeyframeAnimation&&ta(h,!!a)}function M(){C=
1738 new f({end:d,cancel:v});sa(Q);l();return{$$willAnimate:!1,start:function(){return C},end:d}}function y(a){a.stopPropagation();var b=a.originalEvent||a;a=b.$manualTimeStamp||Date.now();b=parseFloat(b.elapsedTime.toFixed(3));Math.max(a-V,0)>=S&&b>=m&&(G=!0,l())}function H(){function b(){if(!R){K(!1);r(A,function(a){h.style[a[0]]=a[1]});x(a,g);e.addClass(a,da);if(n.recalculateTimingStyles){na=h.className+" "+fa;ja=q(h,na);E=w(h,na,ja);$=E.maxDelay;ha=Math.max($,0);m=E.maxDuration;if(0===m){l();return}n.hasTransitions=
1738 new f({end:d,cancel:v});sa(Q);l();return{$$willAnimate:!1,start:function(){return C},end:d}}function y(a){a.stopPropagation();var b=a.originalEvent||a;a=b.$manualTimeStamp||Date.now();b=parseFloat(b.elapsedTime.toFixed(3));Math.max(a-V,0)>=S&&b>=m&&(G=!0,l())}function H(){function b(){if(!R){K(!1);r(A,function(a){h.style[a[0]]=a[1]});x(a,g);e.addClass(a,da);if(n.recalculateTimingStyles){na=h.className+" "+fa;ja=q(h,na);E=w(h,na,ja);$=E.maxDelay;ha=Math.max($,0);m=E.maxDuration;if(0===m){l();return}n.hasTransitions=
1739 0<E.transitionDuration;n.hasAnimations=0<E.animationDuration}n.applyAnimationDelay&&($="boolean"!==typeof g.delay&&ua(g.delay)?parseFloat(g.delay):$,ha=Math.max($,0),E.animationDelay=$,aa=[ra,$+"s"],A.push(aa),h.style[aa[0]]=aa[1]);S=1E3*ha;U=1E3*m;if(g.easing){var d,f=g.easing;n.hasTransitions&&(d=T+"TimingFunction",A.push([d,f]),h.style[d]=f);n.hasAnimations&&(d=Z+"TimingFunction",A.push([d,f]),h.style[d]=f)}E.transitionDuration&&ea.push(xa);E.animationDuration&&ea.push(ya);V=Date.now();var H=S+
1739 0<E.transitionDuration;n.hasAnimations=0<E.animationDuration}n.applyAnimationDelay&&($="boolean"!==typeof g.delay&&ua(g.delay)?parseFloat(g.delay):$,ha=Math.max($,0),E.animationDelay=$,aa=[ra,$+"s"],A.push(aa),h.style[aa[0]]=aa[1]);S=1E3*ha;U=1E3*m;if(g.easing){var d,f=g.easing;n.hasTransitions&&(d=T+"TimingFunction",A.push([d,f]),h.style[d]=f);n.hasAnimations&&(d=Z+"TimingFunction",A.push([d,f]),h.style[d]=f)}E.transitionDuration&&ea.push(xa);E.animationDuration&&ea.push(ya);V=Date.now();var H=S+
1740 1.5*U;d=V+H;var f=a.data("$$animateCss")||[],s=!0;if(f.length){var p=f[0];(s=d>p.expectedEndTime)?z.cancel(p.timer):f.push(l)}s&&(H=z(c,H,!1),f[0]={timer:H,expectedEndTime:d},f.push(l),a.data("$$animateCss",f));if(ea.length)a.on(ea.join(" "),y);g.to&&(g.cleanupStyles&&Ia(J,h,Object.keys(g.to)),Da(a,g))}}function c(){var b=a.data("$$animateCss");if(b){for(var d=1;d<b.length;d++)b[d]();a.removeData("$$animateCss")}}if(!R)if(h.parentNode){var d=function(a){if(G)N&&a&&(N=!1,l());else if(N=!a,E.animationDuration)if(a=
1740 1.5*U;d=V+H;var f=a.data("$$animateCss")||[],s=!0;if(f.length){var p=f[0];(s=d>p.expectedEndTime)?z.cancel(p.timer):f.push(l)}s&&(H=z(c,H,!1),f[0]={timer:H,expectedEndTime:d},f.push(l),a.data("$$animateCss",f));if(ea.length)a.on(ea.join(" "),y);g.to&&(g.cleanupStyles&&Ia(J,h,Object.keys(g.to)),Da(a,g))}}function c(){var b=a.data("$$animateCss");if(b){for(var d=1;d<b.length;d++)b[d]();a.removeData("$$animateCss")}}if(!R)if(h.parentNode){var d=function(a){if(G)N&&a&&(N=!1,l());else if(N=!a,E.animationDuration)if(a=
1741 ta(h,N),N)A.push(a);else{var b=A,c=b.indexOf(a);0<=a&&b.splice(c,1)}},f=0<ca&&(E.transitionDuration&&0===W.transitionDuration||E.animationDuration&&0===W.animationDuration)&&Math.max(W.animationDelay,W.transitionDelay);f?z(b,Math.floor(f*ca*1E3),!1):b();P.resume=function(){d(!0)};P.pause=function(){d(!1)}}else l()}var g=c||{};g.$$prepared||(g=pa(Ja(g)));var J={},h=D(a);if(!h||!h.parentNode||!I.enabled())return M();var A=[],B=a.attr("class"),F=Na(g),R,N,G,C,P,ha,S,m,U,V,ea=[];if(0===g.duration||!s.animations&&
1741 ta(h,N),N)A.push(a);else{var b=A,c=b.indexOf(a);0<=a&&b.splice(c,1)}},f=0<ca&&(E.transitionDuration&&0===W.transitionDuration||E.animationDuration&&0===W.animationDuration)&&Math.max(W.animationDelay,W.transitionDelay);f?z(b,Math.floor(f*ca*1E3),!1):b();P.resume=function(){d(!0)};P.pause=function(){d(!1)}}else l()}var g=c||{};g.$$prepared||(g=pa(Ja(g)));var J={},h=D(a);if(!h||!h.parentNode||!I.enabled())return M();var A=[],B=a.attr("class"),F=Na(g),R,N,G,C,P,ha,S,m,U,V,ea=[];if(0===g.duration||!s.animations&&
1742 !s.transitions)return M();var ka=g.event&&ba(g.event)?g.event.join(" "):g.event,Y="",t="";ka&&g.structural?Y=X(ka,"ng-",!0):ka&&(Y=ka);g.addClass&&(t+=X(g.addClass,"-add"));g.removeClass&&(t.length&&(t+=" "),t+=X(g.removeClass,"-remove"));g.applyClassesEarly&&t.length&&x(a,g);var fa=[Y,t].join(" ").trim(),na=B+" "+fa,da=X(fa,"-active"),B=F.to&&0<Object.keys(F.to).length;if(!(0<(g.keyframeStyle||"").length||B||fa))return M();var ja,W;0<g.stagger?(F=parseFloat(g.stagger),W={transitionDelay:F,animationDelay:F,
1742 !s.transitions)return M();var ka=g.event&&ba(g.event)?g.event.join(" "):g.event,Y="",t="";ka&&g.structural?Y=X(ka,"ng-",!0):ka&&(Y=ka);g.addClass&&(t+=X(g.addClass,"-add"));g.removeClass&&(t.length&&(t+=" "),t+=X(g.removeClass,"-remove"));g.applyClassesEarly&&t.length&&x(a,g);var fa=[Y,t].join(" ").trim(),na=B+" "+fa,da=X(fa,"-active"),B=F.to&&0<Object.keys(F.to).length;if(!(0<(g.keyframeStyle||"").length||B||fa))return M();var ja,W;0<g.stagger?(F=parseFloat(g.stagger),W={transitionDelay:F,animationDelay:F,
1743 transitionDuration:0,animationDuration:0}):(ja=q(h,na),W=u(h,fa,ja,Va));g.$$skipPreparationClasses||e.addClass(a,fa);g.transitionStyle&&(F=[T,g.transitionStyle],la(h,F),A.push(F));0<=g.duration&&(F=0<h.style[T].length,F=Ga(g.duration,F),la(h,F),A.push(F));g.keyframeStyle&&(F=[Z,g.keyframeStyle],la(h,F),A.push(F));var ca=W?0<=g.staggerIndex?g.staggerIndex:b.count(ja):0;(ka=0===ca)&&!g.skipBlocking&&qa(h,9999);var E=w(h,na,ja),$=E.maxDelay;ha=Math.max($,0);m=E.maxDuration;var n={};n.hasTransitions=
1743 transitionDuration:0,animationDuration:0}):(ja=q(h,na),W=u(h,fa,ja,Va));g.$$skipPreparationClasses||e.addClass(a,fa);g.transitionStyle&&(F=[T,g.transitionStyle],la(h,F),A.push(F));0<=g.duration&&(F=0<h.style[T].length,F=Ga(g.duration,F),la(h,F),A.push(F));g.keyframeStyle&&(F=[Z,g.keyframeStyle],la(h,F),A.push(F));var ca=W?0<=g.staggerIndex?g.staggerIndex:b.count(ja):0;(ka=0===ca)&&!g.skipBlocking&&qa(h,9999);var E=w(h,na,ja),$=E.maxDelay;ha=Math.max($,0);m=E.maxDuration;var n={};n.hasTransitions=
1744 0<E.transitionDuration;n.hasAnimations=0<E.animationDuration;n.hasTransitionAll=n.hasTransitions&&"all"==E.transitionProperty;n.applyTransitionDuration=B&&(n.hasTransitions&&!n.hasTransitionAll||n.hasAnimations&&!n.hasTransitions);n.applyAnimationDuration=g.duration&&n.hasAnimations;n.applyTransitionDelay=ua(g.delay)&&(n.applyTransitionDuration||n.hasTransitions);n.applyAnimationDelay=ua(g.delay)&&n.hasAnimations;n.recalculateTimingStyles=0<t.length;if(n.applyTransitionDuration||n.applyAnimationDuration)m=
1744 0<E.transitionDuration;n.hasAnimations=0<E.animationDuration;n.hasTransitionAll=n.hasTransitions&&"all"==E.transitionProperty;n.applyTransitionDuration=B&&(n.hasTransitions&&!n.hasTransitionAll||n.hasAnimations&&!n.hasTransitions);n.applyAnimationDuration=g.duration&&n.hasAnimations;n.applyTransitionDelay=ua(g.delay)&&(n.applyTransitionDuration||n.hasTransitions);n.applyAnimationDelay=ua(g.delay)&&n.hasAnimations;n.recalculateTimingStyles=0<t.length;if(n.applyTransitionDuration||n.applyAnimationDuration)m=
1745 g.duration?parseFloat(g.duration):m,n.applyTransitionDuration&&(n.hasTransitions=!0,E.transitionDuration=m,F=0<h.style[T+"Property"].length,A.push(Ga(m,F))),n.applyAnimationDuration&&(n.hasAnimations=!0,E.animationDuration=m,A.push([za,m+"s"]));if(0===m&&!n.recalculateTimingStyles)return M();if(null!=g.delay){var aa;"boolean"!==typeof g.delay&&(aa=parseFloat(g.delay),ha=Math.max(aa,0));n.applyTransitionDelay&&A.push([ma,aa+"s"]);n.applyAnimationDelay&&A.push([ra,aa+"s"])}null==g.duration&&0<E.transitionDuration&&
1745 g.duration?parseFloat(g.duration):m,n.applyTransitionDuration&&(n.hasTransitions=!0,E.transitionDuration=m,F=0<h.style[T+"Property"].length,A.push(Ga(m,F))),n.applyAnimationDuration&&(n.hasAnimations=!0,E.animationDuration=m,A.push([za,m+"s"]));if(0===m&&!n.recalculateTimingStyles)return M();if(null!=g.delay){var aa;"boolean"!==typeof g.delay&&(aa=parseFloat(g.delay),ha=Math.max(aa,0));n.applyTransitionDelay&&A.push([ma,aa+"s"]);n.applyAnimationDelay&&A.push([ra,aa+"s"])}null==g.duration&&0<E.transitionDuration&&
1746 (n.recalculateTimingStyles=n.recalculateTimingStyles||ka);S=1E3*ha;U=1E3*m;g.skipBlocking||(n.blockTransition=0<E.transitionDuration,n.blockKeyframeAnimation=0<E.animationDuration&&0<W.animationDelay&&0===W.animationDuration);g.from&&(g.cleanupStyles&&Ia(J,h,Object.keys(g.from)),Ca(a,g));n.blockTransition||n.blockKeyframeAnimation?K(m):g.skipBlocking||qa(h,!1);return{$$willAnimate:!0,end:d,start:function(){if(!R)return P={end:d,cancel:v,resume:null,pause:null},C=new f(P),sa(H),C}}}}]}]).provider("$$animateCssDriver",
1746 (n.recalculateTimingStyles=n.recalculateTimingStyles||ka);S=1E3*ha;U=1E3*m;g.skipBlocking||(n.blockTransition=0<E.transitionDuration,n.blockKeyframeAnimation=0<E.animationDuration&&0<W.animationDelay&&0===W.animationDuration);g.from&&(g.cleanupStyles&&Ia(J,h,Object.keys(g.from)),Ca(a,g));n.blockTransition||n.blockKeyframeAnimation?K(m):g.skipBlocking||qa(h,!1);return{$$willAnimate:!0,end:d,start:function(){if(!R)return P={end:d,cancel:v,resume:null,pause:null},C=new f(P),sa(H),C}}}}]}]).provider("$$animateCssDriver",
1747 ["$$animationProvider",function(a){a.drivers.push("$$animateCssDriver");this.$get=["$animateCss","$rootScope","$$AnimateRunner","$rootElement","$sniffer","$$jqLite","$document",function(a,c,d,e,f,z,B){function s(a){return a.replace(/\bng-\S+\b/g,"")}function v(a,b){P(a)&&(a=a.split(" "));P(b)&&(b=b.split(" "));return a.filter(function(a){return-1===b.indexOf(a)}).join(" ")}function I(c,e,f){function k(a){var b={},c=D(a).getBoundingClientRect();r(["width","height","top","left"],function(a){var d=c[a];
1747 ["$$animationProvider",function(a){a.drivers.push("$$animateCssDriver");this.$get=["$animateCss","$rootScope","$$AnimateRunner","$rootElement","$sniffer","$$jqLite","$document",function(a,c,d,e,f,z,B){function s(a){return a.replace(/\bng-\S+\b/g,"")}function v(a,b){P(a)&&(a=a.split(" "));P(b)&&(b=b.split(" "));return a.filter(function(a){return-1===b.indexOf(a)}).join(" ")}function I(c,e,f){function k(a){var b={},c=D(a).getBoundingClientRect();r(["width","height","top","left"],function(a){var d=c[a];
1748 switch(a){case "top":d+=C.scrollTop;break;case "left":d+=C.scrollLeft}b[a]=Math.floor(d)+"px"});return b}function p(){var c=s(f.attr("class")||""),d=v(c,l),c=v(l,c),d=a(z,{to:k(f),addClass:"ng-anchor-in "+d,removeClass:"ng-anchor-out "+c,delay:!0});return d.$$willAnimate?d:null}function B(){z.remove();e.removeClass("ng-animate-shim");f.removeClass("ng-animate-shim")}var z=G(D(e).cloneNode(!0)),l=s(z.attr("class")||"");e.addClass("ng-animate-shim");f.addClass("ng-animate-shim");z.addClass("ng-anchor");
1748 switch(a){case "top":d+=C.scrollTop;break;case "left":d+=C.scrollLeft}b[a]=Math.floor(d)+"px"});return b}function p(){var c=s(f.attr("class")||""),d=v(c,l),c=v(l,c),d=a(z,{to:k(f),addClass:"ng-anchor-in "+d,removeClass:"ng-anchor-out "+c,delay:!0});return d.$$willAnimate?d:null}function B(){z.remove();e.removeClass("ng-animate-shim");f.removeClass("ng-animate-shim")}var z=G(D(e).cloneNode(!0)),l=s(z.attr("class")||"");e.addClass("ng-animate-shim");f.addClass("ng-animate-shim");z.addClass("ng-anchor");
1749 w.append(z);var K;c=function(){var c=a(z,{addClass:"ng-anchor-out",delay:!0,from:k(e)});return c.$$willAnimate?c:null}();if(!c&&(K=p(),!K))return B();var M=c||K;return{start:function(){function a(){c&&c.end()}var b,c=M.start();c.done(function(){c=null;if(!K&&(K=p()))return c=K.start(),c.done(function(){c=null;B();b.complete()}),c;B();b.complete()});return b=new d({end:a,cancel:a})}}}function q(a,b,c,e){var f=u(a,Q),s=u(b,Q),z=[];r(e,function(a){(a=I(c,a.out,a["in"]))&&z.push(a)});if(f||s||0!==z.length)return{start:function(){function a(){r(b,
1749 w.append(z);var K;c=function(){var c=a(z,{addClass:"ng-anchor-out",delay:!0,from:k(e)});return c.$$willAnimate?c:null}();if(!c&&(K=p(),!K))return B();var M=c||K;return{start:function(){function a(){c&&c.end()}var b,c=M.start();c.done(function(){c=null;if(!K&&(K=p()))return c=K.start(),c.done(function(){c=null;B();b.complete()}),c;B();b.complete()});return b=new d({end:a,cancel:a})}}}function q(a,b,c,e){var f=u(a,Q),s=u(b,Q),z=[];r(e,function(a){(a=I(c,a.out,a["in"]))&&z.push(a)});if(f||s||0!==z.length)return{start:function(){function a(){r(b,
1750 function(a){a.end()})}var b=[];f&&b.push(f.start());s&&b.push(s.start());r(z,function(a){b.push(a.start())});var c=new d({end:a,cancel:a});d.all(b,function(a){c.complete(a)});return c}}}function u(c){var d=c.element,e=c.options||{};c.structural&&(e.event=c.event,e.structural=!0,e.applyClassesEarly=!0,"leave"===c.event&&(e.onDone=e.domOperation));e.preparationClasses&&(e.event=Y(e.event,e.preparationClasses));c=a(d,e);return c.$$willAnimate?c:null}if(!f.animations&&!f.transitions)return Q;var C=B[0].body;
1750 function(a){a.end()})}var b=[];f&&b.push(f.start());s&&b.push(s.start());r(z,function(a){b.push(a.start())});var c=new d({end:a,cancel:a});d.all(b,function(a){c.complete(a)});return c}}}function u(c){var d=c.element,e=c.options||{};c.structural&&(e.event=c.event,e.structural=!0,e.applyClassesEarly=!0,"leave"===c.event&&(e.onDone=e.domOperation));e.preparationClasses&&(e.event=Y(e.event,e.preparationClasses));c=a(d,e);return c.$$willAnimate?c:null}if(!f.animations&&!f.transitions)return Q;var C=B[0].body;
1751 c=D(e);var w=G(c.parentNode&&11===c.parentNode.nodeType||C.contains(c)?c:C);U(z);return function(a){return a.from&&a.to?q(a.from,a.to,a.classes,a.anchors):u(a)}}]}]).provider("$$animateJs",["$animateProvider",function(a){this.$get=["$injector","$$AnimateRunner","$$jqLite",function(b,c,d){function e(c){c=ba(c)?c:c.split(" ");for(var d=[],e={},f=0;f<c.length;f++){var r=c[f],q=a.$$registeredAnimations[r];q&&!e[r]&&(d.push(b.get(q)),e[r]=!0)}return d}var f=U(d);return function(a,b,d,v){function q(){v.domOperation();
1751 c=D(e);var w=G(c.parentNode&&11===c.parentNode.nodeType||C.contains(c)?c:C);U(z);return function(a){return a.from&&a.to?q(a.from,a.to,a.classes,a.anchors):u(a)}}]}]).provider("$$animateJs",["$animateProvider",function(a){this.$get=["$injector","$$AnimateRunner","$$jqLite",function(b,c,d){function e(c){c=ba(c)?c:c.split(" ");for(var d=[],e={},f=0;f<c.length;f++){var r=c[f],q=a.$$registeredAnimations[r];q&&!e[r]&&(d.push(b.get(q)),e[r]=!0)}return d}var f=U(d);return function(a,b,d,v){function q(){v.domOperation();
1752 f(a,v)}function D(a,b,d,e,g){switch(d){case "animate":b=[b,e.from,e.to,g];break;case "setClass":b=[b,x,G,g];break;case "addClass":b=[b,x,g];break;case "removeClass":b=[b,G,g];break;default:b=[b,g]}b.push(e);if(a=a.apply(a,b))if(Ka(a.start)&&(a=a.start()),a instanceof c)a.done(g);else if(Ka(a))return a;return Q}function u(a,b,d,e,g){var f=[];r(e,function(e){var k=e[g];k&&f.push(function(){var e,g,f=!1,h=function(a){f||(f=!0,(g||Q)(a),e.complete(!a))};e=new c({end:function(){h()},cancel:function(){h(!0)}});
1752 f(a,v)}function D(a,b,d,e,g){switch(d){case "animate":b=[b,e.from,e.to,g];break;case "setClass":b=[b,x,G,g];break;case "addClass":b=[b,x,g];break;case "removeClass":b=[b,G,g];break;default:b=[b,g]}b.push(e);if(a=a.apply(a,b))if(Ka(a.start)&&(a=a.start()),a instanceof c)a.done(g);else if(Ka(a))return a;return Q}function u(a,b,d,e,g){var f=[];r(e,function(e){var k=e[g];k&&f.push(function(){var e,g,f=!1,h=function(a){f||(f=!0,(g||Q)(a),e.complete(!a))};e=new c({end:function(){h()},cancel:function(){h(!0)}});
1753 g=D(k,a,b,d,function(a){h(!1===a)});return e})});return f}function C(a,b,d,e,g){var f=u(a,b,d,e,g);if(0===f.length){var h,k;"beforeSetClass"===g?(h=u(a,"removeClass",d,e,"beforeRemoveClass"),k=u(a,"addClass",d,e,"beforeAddClass")):"setClass"===g&&(h=u(a,"removeClass",d,e,"removeClass"),k=u(a,"addClass",d,e,"addClass"));h&&(f=f.concat(h));k&&(f=f.concat(k))}if(0!==f.length)return function(a){var b=[];f.length&&r(f,function(a){b.push(a())});b.length?c.all(b,a):a();return function(a){r(b,function(b){a?
1753 g=D(k,a,b,d,function(a){h(!1===a)});return e})});return f}function C(a,b,d,e,g){var f=u(a,b,d,e,g);if(0===f.length){var h,k;"beforeSetClass"===g?(h=u(a,"removeClass",d,e,"beforeRemoveClass"),k=u(a,"addClass",d,e,"beforeAddClass")):"setClass"===g&&(h=u(a,"removeClass",d,e,"removeClass"),k=u(a,"addClass",d,e,"addClass"));h&&(f=f.concat(h));k&&(f=f.concat(k))}if(0!==f.length)return function(a){var b=[];f.length&&r(f,function(a){b.push(a())});b.length?c.all(b,a):a();return function(a){r(b,function(b){a?
1754 b.cancel():b.end()})}}}var w=!1;3===arguments.length&&va(d)&&(v=d,d=null);v=pa(v);d||(d=a.attr("class")||"",v.addClass&&(d+=" "+v.addClass),v.removeClass&&(d+=" "+v.removeClass));var x=v.addClass,G=v.removeClass,J=e(d),k,p;if(J.length){var L,O;"leave"==b?(O="leave",L="afterLeave"):(O="before"+b.charAt(0).toUpperCase()+b.substr(1),L=b);"enter"!==b&&"move"!==b&&(k=C(a,b,v,J,O));p=C(a,b,v,J,L)}if(k||p){var l;return{$$willAnimate:!0,end:function(){l?l.end():(w=!0,q(),ga(a,v),l=new c,l.complete(!0));return l},
1754 b.cancel():b.end()})}}}var w=!1;3===arguments.length&&va(d)&&(v=d,d=null);v=pa(v);d||(d=a.attr("class")||"",v.addClass&&(d+=" "+v.addClass),v.removeClass&&(d+=" "+v.removeClass));var x=v.addClass,G=v.removeClass,J=e(d),k,p;if(J.length){var L,O;"leave"==b?(O="leave",L="afterLeave"):(O="before"+b.charAt(0).toUpperCase()+b.substr(1),L=b);"enter"!==b&&"move"!==b&&(k=C(a,b,v,J,O));p=C(a,b,v,J,L)}if(k||p){var l;return{$$willAnimate:!0,end:function(){l?l.end():(w=!0,q(),ga(a,v),l=new c,l.complete(!0));return l},
1755 start:function(){function b(c){w=!0;q();ga(a,v);l.complete(c)}if(l)return l;l=new c;var d,e=[];k&&e.push(function(a){d=k(a)});e.length?e.push(function(a){q();a(!0)}):q();p&&e.push(function(a){d=p(a)});l.setHost({end:function(){w||((d||Q)(void 0),b(void 0))},cancel:function(){w||((d||Q)(!0),b(!0))}});c.chain(e,b);return l}}}}}]}]).provider("$$animateJsDriver",["$$animationProvider",function(a){a.drivers.push("$$animateJsDriver");this.$get=["$$animateJs","$$AnimateRunner",function(a,c){function d(c){return a(c.element,
1755 start:function(){function b(c){w=!0;q();ga(a,v);l.complete(c)}if(l)return l;l=new c;var d,e=[];k&&e.push(function(a){d=k(a)});e.length?e.push(function(a){q();a(!0)}):q();p&&e.push(function(a){d=p(a)});l.setHost({end:function(){w||((d||Q)(void 0),b(void 0))},cancel:function(){w||((d||Q)(!0),b(!0))}});c.chain(e,b);return l}}}}}]}]).provider("$$animateJsDriver",["$$animationProvider",function(a){a.drivers.push("$$animateJsDriver");this.$get=["$$animateJs","$$AnimateRunner",function(a,c){function d(c){return a(c.element,
1756 c.event,c.classes,c.options)}return function(a){if(a.from&&a.to){var b=d(a.from),q=d(a.to);if(b||q)return{start:function(){function a(){return function(){r(d,function(a){a.end()})}}var d=[];b&&d.push(b.start());q&&d.push(q.start());c.all(d,function(a){e.complete(a)});var e=new c({end:a(),cancel:a()});return e}}}else return d(a)}}]}])})(window,window.angular);
1756 c.event,c.classes,c.options)}return function(a){if(a.from&&a.to){var b=d(a.from),q=d(a.to);if(b||q)return{start:function(){function a(){return function(){r(d,function(a){a.end()})}}var d=[];b&&d.push(b.start());q&&d.push(q.start());c.all(d,function(a){e.complete(a)});var e=new c({end:a(),cancel:a()});return e}}}else return d(a)}}]}])})(window,window.angular);
1757 //# sourceMappingURL=angular-animate.min.js.map
1757 //# sourceMappingURL=angular-animate.min.js.map
1758
1758
1759 ;/*
1759 ;/*
1760 * angular-ui-bootstrap
1760 * angular-ui-bootstrap
1761 * http://angular-ui.github.io/bootstrap/
1761 * http://angular-ui.github.io/bootstrap/
1762
1762
1763 * Version: 1.3.2 - 2016-04-14
1763 * Version: 1.3.2 - 2016-04-14
1764 * License: MIT
1764 * License: MIT
1765 */angular.module("ui.bootstrap",["ui.bootstrap.tpls","ui.bootstrap.collapse","ui.bootstrap.accordion","ui.bootstrap.alert","ui.bootstrap.buttons","ui.bootstrap.carousel","ui.bootstrap.dateparser","ui.bootstrap.isClass","ui.bootstrap.datepicker","ui.bootstrap.position","ui.bootstrap.datepickerPopup","ui.bootstrap.debounce","ui.bootstrap.dropdown","ui.bootstrap.stackedMap","ui.bootstrap.modal","ui.bootstrap.paging","ui.bootstrap.pager","ui.bootstrap.pagination","ui.bootstrap.tooltip","ui.bootstrap.popover","ui.bootstrap.progressbar","ui.bootstrap.rating","ui.bootstrap.tabs","ui.bootstrap.timepicker","ui.bootstrap.typeahead"]),angular.module("ui.bootstrap.tpls",["uib/template/accordion/accordion-group.html","uib/template/accordion/accordion.html","uib/template/alert/alert.html","uib/template/carousel/carousel.html","uib/template/carousel/slide.html","uib/template/datepicker/datepicker.html","uib/template/datepicker/day.html","uib/template/datepicker/month.html","uib/template/datepicker/year.html","uib/template/datepickerPopup/popup.html","uib/template/modal/backdrop.html","uib/template/modal/window.html","uib/template/pager/pager.html","uib/template/pagination/pagination.html","uib/template/tooltip/tooltip-html-popup.html","uib/template/tooltip/tooltip-popup.html","uib/template/tooltip/tooltip-template-popup.html","uib/template/popover/popover-html.html","uib/template/popover/popover-template.html","uib/template/popover/popover.html","uib/template/progressbar/bar.html","uib/template/progressbar/progress.html","uib/template/progressbar/progressbar.html","uib/template/rating/rating.html","uib/template/tabs/tab.html","uib/template/tabs/tabset.html","uib/template/timepicker/timepicker.html","uib/template/typeahead/typeahead-match.html","uib/template/typeahead/typeahead-popup.html"]),angular.module("ui.bootstrap.collapse",[]).directive("uibCollapse",["$animate","$q","$parse","$injector",function(a,b,c,d){var e=d.has("$animateCss")?d.get("$animateCss"):null;return{link:function(d,f,g){function h(){f.hasClass("collapse")&&f.hasClass("in")||b.resolve(l(d)).then(function(){f.removeClass("collapse").addClass("collapsing").attr("aria-expanded",!0).attr("aria-hidden",!1),e?e(f,{addClass:"in",easing:"ease",to:{height:f[0].scrollHeight+"px"}}).start()["finally"](i):a.addClass(f,"in",{to:{height:f[0].scrollHeight+"px"}}).then(i)})}function i(){f.removeClass("collapsing").addClass("collapse").css({height:"auto"}),m(d)}function j(){return f.hasClass("collapse")||f.hasClass("in")?void b.resolve(n(d)).then(function(){f.css({height:f[0].scrollHeight+"px"}).removeClass("collapse").addClass("collapsing").attr("aria-expanded",!1).attr("aria-hidden",!0),e?e(f,{removeClass:"in",to:{height:"0"}}).start()["finally"](k):a.removeClass(f,"in",{to:{height:"0"}}).then(k)}):k()}function k(){f.css({height:"0"}),f.removeClass("collapsing").addClass("collapse"),o(d)}var l=c(g.expanding),m=c(g.expanded),n=c(g.collapsing),o=c(g.collapsed);d.$eval(g.uibCollapse)||f.addClass("in").addClass("collapse").attr("aria-expanded",!0).attr("aria-hidden",!1).css({height:"auto"}),d.$watch(g.uibCollapse,function(a){a?j():h()})}}}]),angular.module("ui.bootstrap.accordion",["ui.bootstrap.collapse"]).constant("uibAccordionConfig",{closeOthers:!0}).controller("UibAccordionController",["$scope","$attrs","uibAccordionConfig",function(a,b,c){this.groups=[],this.closeOthers=function(d){var e=angular.isDefined(b.closeOthers)?a.$eval(b.closeOthers):c.closeOthers;e&&angular.forEach(this.groups,function(a){a!==d&&(a.isOpen=!1)})},this.addGroup=function(a){var b=this;this.groups.push(a),a.$on("$destroy",function(c){b.removeGroup(a)})},this.removeGroup=function(a){var b=this.groups.indexOf(a);-1!==b&&this.groups.splice(b,1)}}]).directive("uibAccordion",function(){return{controller:"UibAccordionController",controllerAs:"accordion",transclude:!0,templateUrl:function(a,b){return b.templateUrl||"uib/template/accordion/accordion.html"}}}).directive("uibAccordionGroup",function(){return{require:"^uibAccordion",transclude:!0,replace:!0,templateUrl:function(a,b){return b.templateUrl||"uib/template/accordion/accordion-group.html"},scope:{heading:"@",panelClass:"@?",isOpen:"=?",isDisabled:"=?"},controller:function(){this.setHeading=function(a){this.heading=a}},link:function(a,b,c,d){d.addGroup(a),a.openClass=c.openClass||"panel-open",a.panelClass=c.panelClass||"panel-default",a.$watch("isOpen",function(c){b.toggleClass(a.openClass,!!c),c&&d.closeOthers(a)}),a.toggleOpen=function(b){a.isDisabled||b&&32!==b.which||(a.isOpen=!a.isOpen)};var e="accordiongroup-"+a.$id+"-"+Math.floor(1e4*Math.random());a.headingId=e+"-tab",a.panelId=e+"-panel"}}}).directive("uibAccordionHeading",function(){return{transclude:!0,template:"",replace:!0,require:"^uibAccordionGroup",link:function(a,b,c,d,e){d.setHeading(e(a,angular.noop))}}}).directive("uibAccordionTransclude",function(){return{require:"^uibAccordionGroup",link:function(a,b,c,d){a.$watch(function(){return d[c.uibAccordionTransclude]},function(a){if(a){var c=angular.element(b[0].querySelector("[uib-accordion-header]"));c.html(""),c.append(a)}})}}}),angular.module("ui.bootstrap.alert",[]).controller("UibAlertController",["$scope","$attrs","$interpolate","$timeout",function(a,b,c,d){a.closeable=!!b.close;var e=angular.isDefined(b.dismissOnTimeout)?c(b.dismissOnTimeout)(a.$parent):null;e&&d(function(){a.close()},parseInt(e,10))}]).directive("uibAlert",function(){return{controller:"UibAlertController",controllerAs:"alert",templateUrl:function(a,b){return b.templateUrl||"uib/template/alert/alert.html"},transclude:!0,replace:!0,scope:{type:"@",close:"&"}}}),angular.module("ui.bootstrap.buttons",[]).constant("uibButtonConfig",{activeClass:"active",toggleEvent:"click"}).controller("UibButtonsController",["uibButtonConfig",function(a){this.activeClass=a.activeClass||"active",this.toggleEvent=a.toggleEvent||"click"}]).directive("uibBtnRadio",["$parse",function(a){return{require:["uibBtnRadio","ngModel"],controller:"UibButtonsController",controllerAs:"buttons",link:function(b,c,d,e){var f=e[0],g=e[1],h=a(d.uibUncheckable);c.find("input").css({display:"none"}),g.$render=function(){c.toggleClass(f.activeClass,angular.equals(g.$modelValue,b.$eval(d.uibBtnRadio)))},c.on(f.toggleEvent,function(){if(!d.disabled){var a=c.hasClass(f.activeClass);a&&!angular.isDefined(d.uncheckable)||b.$apply(function(){g.$setViewValue(a?null:b.$eval(d.uibBtnRadio)),g.$render()})}}),d.uibUncheckable&&b.$watch(h,function(a){d.$set("uncheckable",a?"":void 0)})}}}]).directive("uibBtnCheckbox",function(){return{require:["uibBtnCheckbox","ngModel"],controller:"UibButtonsController",controllerAs:"button",link:function(a,b,c,d){function e(){return g(c.btnCheckboxTrue,!0)}function f(){return g(c.btnCheckboxFalse,!1)}function g(b,c){return angular.isDefined(b)?a.$eval(b):c}var h=d[0],i=d[1];b.find("input").css({display:"none"}),i.$render=function(){b.toggleClass(h.activeClass,angular.equals(i.$modelValue,e()))},b.on(h.toggleEvent,function(){c.disabled||a.$apply(function(){i.$setViewValue(b.hasClass(h.activeClass)?f():e()),i.$render()})})}}}),angular.module("ui.bootstrap.carousel",[]).controller("UibCarouselController",["$scope","$element","$interval","$timeout","$animate",function(a,b,c,d,e){function f(){for(;t.length;)t.shift()}function g(a){for(var b=0;b<q.length;b++)q[b].slide.active=b===a}function h(c,d,i){if(!u){if(angular.extend(c,{direction:i}),angular.extend(q[s].slide||{},{direction:i}),e.enabled(b)&&!a.$currentTransition&&q[d].element&&p.slides.length>1){q[d].element.data(r,c.direction);var j=p.getCurrentIndex();angular.isNumber(j)&&q[j].element&&q[j].element.data(r,c.direction),a.$currentTransition=!0,e.on("addClass",q[d].element,function(b,c){if("close"===c&&(a.$currentTransition=null,e.off("addClass",b),t.length)){var d=t.pop().slide,g=d.index,i=g>p.getCurrentIndex()?"next":"prev";f(),h(d,g,i)}})}a.active=c.index,s=c.index,g(d),l()}}function i(a){for(var b=0;b<q.length;b++)if(q[b].slide===a)return b}function j(){n&&(c.cancel(n),n=null)}function k(b){b.length||(a.$currentTransition=null,f())}function l(){j();var b=+a.interval;!isNaN(b)&&b>0&&(n=c(m,b))}function m(){var b=+a.interval;o&&!isNaN(b)&&b>0&&q.length?a.next():a.pause()}var n,o,p=this,q=p.slides=a.slides=[],r="uib-slideDirection",s=a.active,t=[],u=!1;p.addSlide=function(b,c){q.push({slide:b,element:c}),q.sort(function(a,b){return+a.slide.index-+b.slide.index}),(b.index===a.active||1===q.length&&!angular.isNumber(a.active))&&(a.$currentTransition&&(a.$currentTransition=null),s=b.index,a.active=b.index,g(s),p.select(q[i(b)]),1===q.length&&a.play())},p.getCurrentIndex=function(){for(var a=0;a<q.length;a++)if(q[a].slide.index===s)return a},p.next=a.next=function(){var b=(p.getCurrentIndex()+1)%q.length;return 0===b&&a.noWrap()?void a.pause():p.select(q[b],"next")},p.prev=a.prev=function(){var b=p.getCurrentIndex()-1<0?q.length-1:p.getCurrentIndex()-1;return a.noWrap()&&b===q.length-1?void a.pause():p.select(q[b],"prev")},p.removeSlide=function(b){var c=i(b),d=t.indexOf(q[c]);-1!==d&&t.splice(d,1),q.splice(c,1),q.length>0&&s===c?c>=q.length?(s=q.length-1,a.active=s,g(s),p.select(q[q.length-1])):(s=c,a.active=s,g(s),p.select(q[c])):s>c&&(s--,a.active=s),0===q.length&&(s=null,a.active=null,f())},p.select=a.select=function(b,c){var d=i(b.slide);void 0===c&&(c=d>p.getCurrentIndex()?"next":"prev"),b.slide.index===s||a.$currentTransition?b&&b.slide.index!==s&&a.$currentTransition&&t.push(q[d]):h(b.slide,d,c)},a.indexOfSlide=function(a){return+a.slide.index},a.isActive=function(b){return a.active===b.slide.index},a.isPrevDisabled=function(){return 0===a.active&&a.noWrap()},a.isNextDisabled=function(){return a.active===q.length-1&&a.noWrap()},a.pause=function(){a.noPause||(o=!1,j())},a.play=function(){o||(o=!0,l())},a.$on("$destroy",function(){u=!0,j()}),a.$watch("noTransition",function(a){e.enabled(b,!a)}),a.$watch("interval",l),a.$watchCollection("slides",k),a.$watch("active",function(a){if(angular.isNumber(a)&&s!==a){for(var b=0;b<q.length;b++)if(q[b].slide.index===a){a=b;break}var c=q[a];c&&(g(a),p.select(q[a]),s=a)}})}]).directive("uibCarousel",function(){return{transclude:!0,replace:!0,controller:"UibCarouselController",controllerAs:"carousel",templateUrl:function(a,b){return b.templateUrl||"uib/template/carousel/carousel.html"},scope:{active:"=",interval:"=",noTransition:"=",noPause:"=",noWrap:"&"}}}).directive("uibSlide",function(){return{require:"^uibCarousel",transclude:!0,replace:!0,templateUrl:function(a,b){return b.templateUrl||"uib/template/carousel/slide.html"},scope:{actual:"=?",index:"=?"},link:function(a,b,c,d){d.addSlide(a,b),a.$on("$destroy",function(){d.removeSlide(a)})}}}).animation(".item",["$animateCss",function(a){function b(a,b,c){a.removeClass(b),c&&c()}var c="uib-slideDirection";return{beforeAddClass:function(d,e,f){if("active"===e){var g=!1,h=d.data(c),i="next"===h?"left":"right",j=b.bind(this,d,i+" "+h,f);return d.addClass(h),a(d,{addClass:i}).start().done(j),function(){g=!0}}f()},beforeRemoveClass:function(d,e,f){if("active"===e){var g=!1,h=d.data(c),i="next"===h?"left":"right",j=b.bind(this,d,i,f);return a(d,{addClass:i}).start().done(j),function(){g=!0}}f()}}}]),angular.module("ui.bootstrap.dateparser",[]).service("uibDateParser",["$log","$locale","dateFilter","orderByFilter",function(a,b,c,d){function e(a,b){var c=[],e=a.split(""),f=a.indexOf("'");if(f>-1){var g=!1;a=a.split("");for(var h=f;h<a.length;h++)g?("'"===a[h]&&(h+1<a.length&&"'"===a[h+1]?(a[h+1]="$",e[h+1]=""):(e[h]="",g=!1)),a[h]="$"):"'"===a[h]&&(a[h]="$",e[h]="",g=!0);a=a.join("")}return angular.forEach(n,function(d){var f=a.indexOf(d.key);if(f>-1){a=a.split(""),e[f]="("+d.regex+")",a[f]="$";for(var g=f+1,h=f+d.key.length;h>g;g++)e[g]="",a[g]="$";a=a.join(""),c.push({index:f,key:d.key,apply:d[b],matcher:d.regex})}}),{regex:new RegExp("^"+e.join("")+"$"),map:d(c,"index")}}function f(a,b,c){return 1>c?!1:1===b&&c>28?29===c&&(a%4===0&&a%100!==0||a%400===0):3===b||5===b||8===b||10===b?31>c:!0}function g(a){return parseInt(a,10)}function h(a,b){return a&&b?l(a,b):a}function i(a,b){return a&&b?l(a,b,!0):a}function j(a,b){var c=Date.parse("Jan 01, 1970 00:00:00 "+a)/6e4;return isNaN(c)?b:c}function k(a,b){return a=new Date(a.getTime()),a.setMinutes(a.getMinutes()+b),a}function l(a,b,c){c=c?-1:1;var d=j(b,a.getTimezoneOffset());return k(a,c*(d-a.getTimezoneOffset()))}var m,n,o=/[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g;this.init=function(){m=b.id,this.parsers={},this.formatters={},n=[{key:"yyyy",regex:"\\d{4}",apply:function(a){this.year=+a},formatter:function(a){var b=new Date;return b.setFullYear(Math.abs(a.getFullYear())),c(b,"yyyy")}},{key:"yy",regex:"\\d{2}",apply:function(a){a=+a,this.year=69>a?a+2e3:a+1900},formatter:function(a){var b=new Date;return b.setFullYear(Math.abs(a.getFullYear())),c(b,"yy")}},{key:"y",regex:"\\d{1,4}",apply:function(a){this.year=+a},formatter:function(a){var b=new Date;return b.setFullYear(Math.abs(a.getFullYear())),c(b,"y")}},{key:"M!",regex:"0?[1-9]|1[0-2]",apply:function(a){this.month=a-1},formatter:function(a){var b=a.getMonth();return/^[0-9]$/.test(b)?c(a,"MM"):c(a,"M")}},{key:"MMMM",regex:b.DATETIME_FORMATS.MONTH.join("|"),apply:function(a){this.month=b.DATETIME_FORMATS.MONTH.indexOf(a)},formatter:function(a){return c(a,"MMMM")}},{key:"MMM",regex:b.DATETIME_FORMATS.SHORTMONTH.join("|"),apply:function(a){this.month=b.DATETIME_FORMATS.SHORTMONTH.indexOf(a)},formatter:function(a){return c(a,"MMM")}},{key:"MM",regex:"0[1-9]|1[0-2]",apply:function(a){this.month=a-1},formatter:function(a){return c(a,"MM")}},{key:"M",regex:"[1-9]|1[0-2]",apply:function(a){this.month=a-1},formatter:function(a){return c(a,"M")}},{key:"d!",regex:"[0-2]?[0-9]{1}|3[0-1]{1}",apply:function(a){this.date=+a},formatter:function(a){var b=a.getDate();return/^[1-9]$/.test(b)?c(a,"dd"):c(a,"d")}},{key:"dd",regex:"[0-2][0-9]{1}|3[0-1]{1}",apply:function(a){this.date=+a},formatter:function(a){return c(a,"dd")}},{key:"d",regex:"[1-2]?[0-9]{1}|3[0-1]{1}",apply:function(a){this.date=+a},formatter:function(a){return c(a,"d")}},{key:"EEEE",regex:b.DATETIME_FORMATS.DAY.join("|"),formatter:function(a){return c(a,"EEEE")}},{key:"EEE",regex:b.DATETIME_FORMATS.SHORTDAY.join("|"),formatter:function(a){return c(a,"EEE")}},{key:"HH",regex:"(?:0|1)[0-9]|2[0-3]",apply:function(a){this.hours=+a},formatter:function(a){return c(a,"HH")}},{key:"hh",regex:"0[0-9]|1[0-2]",apply:function(a){this.hours=+a},formatter:function(a){return c(a,"hh")}},{key:"H",regex:"1?[0-9]|2[0-3]",apply:function(a){this.hours=+a},formatter:function(a){return c(a,"H")}},{key:"h",regex:"[0-9]|1[0-2]",apply:function(a){this.hours=+a},formatter:function(a){return c(a,"h")}},{key:"mm",regex:"[0-5][0-9]",apply:function(a){this.minutes=+a},formatter:function(a){return c(a,"mm")}},{key:"m",regex:"[0-9]|[1-5][0-9]",apply:function(a){this.minutes=+a},formatter:function(a){return c(a,"m")}},{key:"sss",regex:"[0-9][0-9][0-9]",apply:function(a){this.milliseconds=+a},formatter:function(a){return c(a,"sss")}},{key:"ss",regex:"[0-5][0-9]",apply:function(a){this.seconds=+a},formatter:function(a){return c(a,"ss")}},{key:"s",regex:"[0-9]|[1-5][0-9]",apply:function(a){this.seconds=+a},formatter:function(a){return c(a,"s")}},{key:"a",regex:b.DATETIME_FORMATS.AMPMS.join("|"),apply:function(a){12===this.hours&&(this.hours=0),"PM"===a&&(this.hours+=12)},formatter:function(a){return c(a,"a")}},{key:"Z",regex:"[+-]\\d{4}",apply:function(a){var b=a.match(/([+-])(\d{2})(\d{2})/),c=b[1],d=b[2],e=b[3];this.hours+=g(c+d),this.minutes+=g(c+e)},formatter:function(a){return c(a,"Z")}},{key:"ww",regex:"[0-4][0-9]|5[0-3]",formatter:function(a){return c(a,"ww")}},{key:"w",regex:"[0-9]|[1-4][0-9]|5[0-3]",formatter:function(a){return c(a,"w")}},{key:"GGGG",regex:b.DATETIME_FORMATS.ERANAMES.join("|").replace(/\s/g,"\\s"),formatter:function(a){return c(a,"GGGG")}},{key:"GGG",regex:b.DATETIME_FORMATS.ERAS.join("|"),formatter:function(a){return c(a,"GGG")}},{key:"GG",regex:b.DATETIME_FORMATS.ERAS.join("|"),formatter:function(a){return c(a,"GG")}},{key:"G",regex:b.DATETIME_FORMATS.ERAS.join("|"),formatter:function(a){return c(a,"G")}}]},this.init(),this.filter=function(a,c){if(!angular.isDate(a)||isNaN(a)||!c)return"";c=b.DATETIME_FORMATS[c]||c,b.id!==m&&this.init(),this.formatters[c]||(this.formatters[c]=e(c,"formatter"));var d=this.formatters[c],f=d.map,g=c;return f.reduce(function(b,c,d){var e=g.match(new RegExp("(.*)"+c.key));e&&angular.isString(e[1])&&(b+=e[1],g=g.replace(e[1]+c.key,""));var h=d===f.length-1?g:"";return c.apply?b+c.apply.call(null,a)+h:b+h},"")},this.parse=function(c,d,g){if(!angular.isString(c)||!d)return c;d=b.DATETIME_FORMATS[d]||d,d=d.replace(o,"\\$&"),b.id!==m&&this.init(),this.parsers[d]||(this.parsers[d]=e(d,"apply"));var h=this.parsers[d],i=h.regex,j=h.map,k=c.match(i),l=!1;if(k&&k.length){var n,p;angular.isDate(g)&&!isNaN(g.getTime())?n={year:g.getFullYear(),month:g.getMonth(),date:g.getDate(),hours:g.getHours(),minutes:g.getMinutes(),seconds:g.getSeconds(),milliseconds:g.getMilliseconds()}:(g&&a.warn("dateparser:","baseDate is not a valid date"),n={year:1900,month:0,date:1,hours:0,minutes:0,seconds:0,milliseconds:0});for(var q=1,r=k.length;r>q;q++){var s=j[q-1];"Z"===s.matcher&&(l=!0),s.apply&&s.apply.call(n,k[q])}var t=l?Date.prototype.setUTCFullYear:Date.prototype.setFullYear,u=l?Date.prototype.setUTCHours:Date.prototype.setHours;return f(n.year,n.month,n.date)&&(!angular.isDate(g)||isNaN(g.getTime())||l?(p=new Date(0),t.call(p,n.year,n.month,n.date),u.call(p,n.hours||0,n.minutes||0,n.seconds||0,n.milliseconds||0)):(p=new Date(g),t.call(p,n.year,n.month,n.date),u.call(p,n.hours,n.minutes,n.seconds,n.milliseconds))),p}},this.toTimezone=h,this.fromTimezone=i,this.timezoneToOffset=j,this.addDateMinutes=k,this.convertTimezoneToLocal=l}]),angular.module("ui.bootstrap.isClass",[]).directive("uibIsClass",["$animate",function(a){var b=/^\s*([\s\S]+?)\s+on\s+([\s\S]+?)\s*$/,c=/^\s*([\s\S]+?)\s+for\s+([\s\S]+?)\s*$/;return{restrict:"A",compile:function(d,e){function f(a,b,c){i.push(a),j.push({scope:a,element:b}),o.forEach(function(b,c){g(b,a)}),a.$on("$destroy",h)}function g(b,d){var e=b.match(c),f=d.$eval(e[1]),g=e[2],h=k[b];if(!h){var i=function(b){var c=null;j.some(function(a){var d=a.scope.$eval(m);return d===b?(c=a,!0):void 0}),h.lastActivated!==c&&(h.lastActivated&&a.removeClass(h.lastActivated.element,f),c&&a.addClass(c.element,f),h.lastActivated=c)};k[b]=h={lastActivated:null,scope:d,watchFn:i,compareWithExp:g,watcher:d.$watch(g,i)}}h.watchFn(d.$eval(g))}function h(a){var b=a.targetScope,c=i.indexOf(b);if(i.splice(c,1),j.splice(c,1),i.length){var d=i[0];angular.forEach(k,function(a){a.scope===b&&(a.watcher=d.$watch(a.compareWithExp,a.watchFn),a.scope=d)})}else k={}}var i=[],j=[],k={},l=e.uibIsClass.match(b),m=l[2],n=l[1],o=n.split(",");return f}}}]),angular.module("ui.bootstrap.datepicker",["ui.bootstrap.dateparser","ui.bootstrap.isClass"]).value("$datepickerSuppressError",!1).value("$datepickerLiteralWarning",!0).constant("uibDatepickerConfig",{datepickerMode:"day",formatDay:"dd",formatMonth:"MMMM",formatYear:"yyyy",formatDayHeader:"EEE",formatDayTitle:"MMMM yyyy",formatMonthTitle:"yyyy",maxDate:null,maxMode:"year",minDate:null,minMode:"day",ngModelOptions:{},shortcutPropagation:!1,showWeeks:!0,yearColumns:5,yearRows:4}).controller("UibDatepickerController",["$scope","$attrs","$parse","$interpolate","$locale","$log","dateFilter","uibDatepickerConfig","$datepickerLiteralWarning","$datepickerSuppressError","uibDateParser",function(a,b,c,d,e,f,g,h,i,j,k){function l(b){a.datepickerMode=b,a.datepickerOptions.datepickerMode=b}var m=this,n={$setViewValue:angular.noop},o={},p=[];!!b.datepickerOptions;a.datepickerOptions||(a.datepickerOptions={}),this.modes=["day","month","year"],["customClass","dateDisabled","datepickerMode","formatDay","formatDayHeader","formatDayTitle","formatMonth","formatMonthTitle","formatYear","maxDate","maxMode","minDate","minMode","showWeeks","shortcutPropagation","startingDay","yearColumns","yearRows"].forEach(function(b){switch(b){case"customClass":case"dateDisabled":a[b]=a.datepickerOptions[b]||angular.noop;break;case"datepickerMode":a.datepickerMode=angular.isDefined(a.datepickerOptions.datepickerMode)?a.datepickerOptions.datepickerMode:h.datepickerMode;break;case"formatDay":case"formatDayHeader":case"formatDayTitle":case"formatMonth":case"formatMonthTitle":case"formatYear":m[b]=angular.isDefined(a.datepickerOptions[b])?d(a.datepickerOptions[b])(a.$parent):h[b];break;case"showWeeks":case"shortcutPropagation":case"yearColumns":case"yearRows":m[b]=angular.isDefined(a.datepickerOptions[b])?a.datepickerOptions[b]:h[b];break;case"startingDay":angular.isDefined(a.datepickerOptions.startingDay)?m.startingDay=a.datepickerOptions.startingDay:angular.isNumber(h.startingDay)?m.startingDay=h.startingDay:m.startingDay=(e.DATETIME_FORMATS.FIRSTDAYOFWEEK+8)%7;break;case"maxDate":case"minDate":a.$watch("datepickerOptions."+b,function(a){a?angular.isDate(a)?m[b]=k.fromTimezone(new Date(a),o.timezone):(i&&f.warn("Literal date support has been deprecated, please switch to date object usage"),m[b]=new Date(g(a,"medium"))):m[b]=h[b]?k.fromTimezone(new Date(h[b]),o.timezone):null,m.refreshView()});break;case"maxMode":case"minMode":a.datepickerOptions[b]?a.$watch(function(){return a.datepickerOptions[b]},function(c){m[b]=a[b]=angular.isDefined(c)?c:datepickerOptions[b],("minMode"===b&&m.modes.indexOf(a.datepickerOptions.datepickerMode)<m.modes.indexOf(m[b])||"maxMode"===b&&m.modes.indexOf(a.datepickerOptions.datepickerMode)>m.modes.indexOf(m[b]))&&(a.datepickerMode=m[b],a.datepickerOptions.datepickerMode=m[b])}):m[b]=a[b]=h[b]||null}}),a.uniqueId="datepicker-"+a.$id+"-"+Math.floor(1e4*Math.random()),a.disabled=angular.isDefined(b.disabled)||!1,angular.isDefined(b.ngDisabled)&&p.push(a.$parent.$watch(b.ngDisabled,function(b){a.disabled=b,m.refreshView()})),a.isActive=function(b){return 0===m.compare(b.date,m.activeDate)?(a.activeDateId=b.uid,!0):!1},this.init=function(b){n=b,o=b.$options||h.ngModelOptions,a.datepickerOptions.initDate?(m.activeDate=k.fromTimezone(a.datepickerOptions.initDate,o.timezone)||new Date,a.$watch("datepickerOptions.initDate",function(a){a&&(n.$isEmpty(n.$modelValue)||n.$invalid)&&(m.activeDate=k.fromTimezone(a,o.timezone),m.refreshView())})):m.activeDate=new Date,this.activeDate=n.$modelValue?k.fromTimezone(new Date(n.$modelValue),o.timezone):k.fromTimezone(new Date,o.timezone),n.$render=function(){m.render()}},this.render=function(){if(n.$viewValue){var a=new Date(n.$viewValue),b=!isNaN(a);b?this.activeDate=k.fromTimezone(a,o.timezone):j||f.error('Datepicker directive: "ng-model" value must be a Date object')}this.refreshView()},this.refreshView=function(){if(this.element){a.selectedDt=null,this._refreshView(),a.activeDt&&(a.activeDateId=a.activeDt.uid);var b=n.$viewValue?new Date(n.$viewValue):null;b=k.fromTimezone(b,o.timezone),n.$setValidity("dateDisabled",!b||this.element&&!this.isDisabled(b))}},this.createDateObject=function(b,c){var d=n.$viewValue?new Date(n.$viewValue):null;d=k.fromTimezone(d,o.timezone);var e=new Date;e=k.fromTimezone(e,o.timezone);var f=this.compare(b,e),g={date:b,label:k.filter(b,c),selected:d&&0===this.compare(b,d),disabled:this.isDisabled(b),past:0>f,current:0===f,future:f>0,customClass:this.customClass(b)||null};return d&&0===this.compare(b,d)&&(a.selectedDt=g),m.activeDate&&0===this.compare(g.date,m.activeDate)&&(a.activeDt=g),g},this.isDisabled=function(b){return a.disabled||this.minDate&&this.compare(b,this.minDate)<0||this.maxDate&&this.compare(b,this.maxDate)>0||a.dateDisabled&&a.dateDisabled({date:b,mode:a.datepickerMode})},this.customClass=function(b){return a.customClass({date:b,mode:a.datepickerMode})},this.split=function(a,b){for(var c=[];a.length>0;)c.push(a.splice(0,b));return c},a.select=function(b){if(a.datepickerMode===m.minMode){var c=n.$viewValue?k.fromTimezone(new Date(n.$viewValue),o.timezone):new Date(0,0,0,0,0,0,0);c.setFullYear(b.getFullYear(),b.getMonth(),b.getDate()),c=k.toTimezone(c,o.timezone),n.$setViewValue(c),n.$render()}else m.activeDate=b,l(m.modes[m.modes.indexOf(a.datepickerMode)-1]),a.$emit("uib:datepicker.mode");a.$broadcast("uib:datepicker.focus")},a.move=function(a){var b=m.activeDate.getFullYear()+a*(m.step.years||0),c=m.activeDate.getMonth()+a*(m.step.months||0);m.activeDate.setFullYear(b,c,1),m.refreshView()},a.toggleMode=function(b){b=b||1,a.datepickerMode===m.maxMode&&1===b||a.datepickerMode===m.minMode&&-1===b||(l(m.modes[m.modes.indexOf(a.datepickerMode)+b]),a.$emit("uib:datepicker.mode"))},a.keys={13:"enter",32:"space",33:"pageup",34:"pagedown",35:"end",36:"home",37:"left",38:"up",39:"right",40:"down"};var q=function(){m.element[0].focus()};a.$on("uib:datepicker.focus",q),a.keydown=function(b){var c=a.keys[b.which];if(c&&!b.shiftKey&&!b.altKey&&!a.disabled)if(b.preventDefault(),m.shortcutPropagation||b.stopPropagation(),"enter"===c||"space"===c){if(m.isDisabled(m.activeDate))return;a.select(m.activeDate)}else!b.ctrlKey||"up"!==c&&"down"!==c?(m.handleKeyDown(c,b),m.refreshView()):a.toggleMode("up"===c?1:-1)},a.$on("$destroy",function(){for(;p.length;)p.shift()()})}]).controller("UibDaypickerController",["$scope","$element","dateFilter",function(a,b,c){function d(a,b){return 1!==b||a%4!==0||a%100===0&&a%400!==0?f[b]:29}function e(a){var b=new Date(a);b.setDate(b.getDate()+4-(b.getDay()||7));var c=b.getTime();return b.setMonth(0),b.setDate(1),Math.floor(Math.round((c-b)/864e5)/7)+1}var f=[31,28,31,30,31,30,31,31,30,31,30,31];this.step={months:1},this.element=b,this.init=function(b){angular.extend(b,this),a.showWeeks=b.showWeeks,b.refreshView()},this.getDates=function(a,b){for(var c,d=new Array(b),e=new Date(a),f=0;b>f;)c=new Date(e),d[f++]=c,e.setDate(e.getDate()+1);return d},this._refreshView=function(){var b=this.activeDate.getFullYear(),d=this.activeDate.getMonth(),f=new Date(this.activeDate);f.setFullYear(b,d,1);var g=this.startingDay-f.getDay(),h=g>0?7-g:-g,i=new Date(f);h>0&&i.setDate(-h+1);for(var j=this.getDates(i,42),k=0;42>k;k++)j[k]=angular.extend(this.createDateObject(j[k],this.formatDay),{secondary:j[k].getMonth()!==d,uid:a.uniqueId+"-"+k});a.labels=new Array(7);for(var l=0;7>l;l++)a.labels[l]={abbr:c(j[l].date,this.formatDayHeader),full:c(j[l].date,"EEEE")};if(a.title=c(this.activeDate,this.formatDayTitle),a.rows=this.split(j,7),a.showWeeks){a.weekNumbers=[];for(var m=(11-this.startingDay)%7,n=a.rows.length,o=0;n>o;o++)a.weekNumbers.push(e(a.rows[o][m].date))}},this.compare=function(a,b){var c=new Date(a.getFullYear(),a.getMonth(),a.getDate()),d=new Date(b.getFullYear(),b.getMonth(),b.getDate());return c.setFullYear(a.getFullYear()),d.setFullYear(b.getFullYear()),c-d},this.handleKeyDown=function(a,b){var c=this.activeDate.getDate();if("left"===a)c-=1;else if("up"===a)c-=7;else if("right"===a)c+=1;else if("down"===a)c+=7;else if("pageup"===a||"pagedown"===a){var e=this.activeDate.getMonth()+("pageup"===a?-1:1);this.activeDate.setMonth(e,1),c=Math.min(d(this.activeDate.getFullYear(),this.activeDate.getMonth()),c)}else"home"===a?c=1:"end"===a&&(c=d(this.activeDate.getFullYear(),this.activeDate.getMonth()));this.activeDate.setDate(c)}}]).controller("UibMonthpickerController",["$scope","$element","dateFilter",function(a,b,c){this.step={years:1},this.element=b,this.init=function(a){angular.extend(a,this),a.refreshView()},this._refreshView=function(){for(var b,d=new Array(12),e=this.activeDate.getFullYear(),f=0;12>f;f++)b=new Date(this.activeDate),b.setFullYear(e,f,1),d[f]=angular.extend(this.createDateObject(b,this.formatMonth),{uid:a.uniqueId+"-"+f});a.title=c(this.activeDate,this.formatMonthTitle),a.rows=this.split(d,3)},this.compare=function(a,b){var c=new Date(a.getFullYear(),a.getMonth()),d=new Date(b.getFullYear(),b.getMonth());return c.setFullYear(a.getFullYear()),d.setFullYear(b.getFullYear()),c-d},this.handleKeyDown=function(a,b){var c=this.activeDate.getMonth();if("left"===a)c-=1;else if("up"===a)c-=3;else if("right"===a)c+=1;else if("down"===a)c+=3;else if("pageup"===a||"pagedown"===a){var d=this.activeDate.getFullYear()+("pageup"===a?-1:1);this.activeDate.setFullYear(d)}else"home"===a?c=0:"end"===a&&(c=11);this.activeDate.setMonth(c)}}]).controller("UibYearpickerController",["$scope","$element","dateFilter",function(a,b,c){function d(a){return parseInt((a-1)/f,10)*f+1}var e,f;this.element=b,this.yearpickerInit=function(){e=this.yearColumns,f=this.yearRows*e,this.step={years:f}},this._refreshView=function(){for(var b,c=new Array(f),g=0,h=d(this.activeDate.getFullYear());f>g;g++)b=new Date(this.activeDate),b.setFullYear(h+g,0,1),c[g]=angular.extend(this.createDateObject(b,this.formatYear),{uid:a.uniqueId+"-"+g});a.title=[c[0].label,c[f-1].label].join(" - "),a.rows=this.split(c,e),a.columns=e},this.compare=function(a,b){return a.getFullYear()-b.getFullYear()},this.handleKeyDown=function(a,b){var c=this.activeDate.getFullYear();"left"===a?c-=1:"up"===a?c-=e:"right"===a?c+=1:"down"===a?c+=e:"pageup"===a||"pagedown"===a?c+=("pageup"===a?-1:1)*f:"home"===a?c=d(this.activeDate.getFullYear()):"end"===a&&(c=d(this.activeDate.getFullYear())+f-1),this.activeDate.setFullYear(c)}}]).directive("uibDatepicker",function(){return{replace:!0,templateUrl:function(a,b){return b.templateUrl||"uib/template/datepicker/datepicker.html"},scope:{datepickerOptions:"=?"},require:["uibDatepicker","^ngModel"],controller:"UibDatepickerController",controllerAs:"datepicker",link:function(a,b,c,d){var e=d[0],f=d[1];e.init(f)}}}).directive("uibDaypicker",function(){return{replace:!0,templateUrl:function(a,b){return b.templateUrl||"uib/template/datepicker/day.html"},require:["^uibDatepicker","uibDaypicker"],controller:"UibDaypickerController",link:function(a,b,c,d){var e=d[0],f=d[1];f.init(e)}}}).directive("uibMonthpicker",function(){return{replace:!0,templateUrl:function(a,b){return b.templateUrl||"uib/template/datepicker/month.html"},require:["^uibDatepicker","uibMonthpicker"],controller:"UibMonthpickerController",link:function(a,b,c,d){var e=d[0],f=d[1];f.init(e)}}}).directive("uibYearpicker",function(){return{replace:!0,templateUrl:function(a,b){return b.templateUrl||"uib/template/datepicker/year.html"},require:["^uibDatepicker","uibYearpicker"],controller:"UibYearpickerController",link:function(a,b,c,d){var e=d[0];angular.extend(e,d[1]),e.yearpickerInit(),e.refreshView()}}}),angular.module("ui.bootstrap.position",[]).factory("$uibPosition",["$document","$window",function(a,b){var c,d,e={normal:/(auto|scroll)/,hidden:/(auto|scroll|hidden)/},f={auto:/\s?auto?\s?/i,primary:/^(top|bottom|left|right)$/,secondary:/^(top|bottom|left|right|center)$/,vertical:/^(top|bottom)$/},g=/(HTML|BODY)/;return{getRawNode:function(a){return a.nodeName?a:a[0]||a},parseStyle:function(a){return a=parseFloat(a),isFinite(a)?a:0},offsetParent:function(c){function d(a){return"static"===(b.getComputedStyle(a).position||"static")}c=this.getRawNode(c);for(var e=c.offsetParent||a[0].documentElement;e&&e!==a[0].documentElement&&d(e);)e=e.offsetParent;return e||a[0].documentElement},scrollbarWidth:function(e){if(e){if(angular.isUndefined(d)){var f=a.find("body");f.addClass("uib-position-body-scrollbar-measure"),d=b.innerWidth-f[0].clientWidth,d=isFinite(d)?d:0,f.removeClass("uib-position-body-scrollbar-measure")}return d}if(angular.isUndefined(c)){var g=angular.element('<div class="uib-position-scrollbar-measure"></div>');a.find("body").append(g),c=g[0].offsetWidth-g[0].clientWidth,c=isFinite(c)?c:0,g.remove()}return c},scrollbarPadding:function(a){a=this.getRawNode(a);var c=b.getComputedStyle(a),d=this.parseStyle(c.paddingRight),e=this.parseStyle(c.paddingBottom),f=this.scrollParent(a,!1,!0),h=this.scrollbarWidth(f,g.test(f.tagName));return{scrollbarWidth:h,widthOverflow:f.scrollWidth>f.clientWidth,right:d+h,originalRight:d,heightOverflow:f.scrollHeight>f.clientHeight,bottom:e+h,originalBottom:e}},isScrollable:function(a,c){a=this.getRawNode(a);var d=c?e.hidden:e.normal,f=b.getComputedStyle(a);return d.test(f.overflow+f.overflowY+f.overflowX);
1765 */angular.module("ui.bootstrap",["ui.bootstrap.tpls","ui.bootstrap.collapse","ui.bootstrap.accordion","ui.bootstrap.alert","ui.bootstrap.buttons","ui.bootstrap.carousel","ui.bootstrap.dateparser","ui.bootstrap.isClass","ui.bootstrap.datepicker","ui.bootstrap.position","ui.bootstrap.datepickerPopup","ui.bootstrap.debounce","ui.bootstrap.dropdown","ui.bootstrap.stackedMap","ui.bootstrap.modal","ui.bootstrap.paging","ui.bootstrap.pager","ui.bootstrap.pagination","ui.bootstrap.tooltip","ui.bootstrap.popover","ui.bootstrap.progressbar","ui.bootstrap.rating","ui.bootstrap.tabs","ui.bootstrap.timepicker","ui.bootstrap.typeahead"]),angular.module("ui.bootstrap.tpls",["uib/template/accordion/accordion-group.html","uib/template/accordion/accordion.html","uib/template/alert/alert.html","uib/template/carousel/carousel.html","uib/template/carousel/slide.html","uib/template/datepicker/datepicker.html","uib/template/datepicker/day.html","uib/template/datepicker/month.html","uib/template/datepicker/year.html","uib/template/datepickerPopup/popup.html","uib/template/modal/backdrop.html","uib/template/modal/window.html","uib/template/pager/pager.html","uib/template/pagination/pagination.html","uib/template/tooltip/tooltip-html-popup.html","uib/template/tooltip/tooltip-popup.html","uib/template/tooltip/tooltip-template-popup.html","uib/template/popover/popover-html.html","uib/template/popover/popover-template.html","uib/template/popover/popover.html","uib/template/progressbar/bar.html","uib/template/progressbar/progress.html","uib/template/progressbar/progressbar.html","uib/template/rating/rating.html","uib/template/tabs/tab.html","uib/template/tabs/tabset.html","uib/template/timepicker/timepicker.html","uib/template/typeahead/typeahead-match.html","uib/template/typeahead/typeahead-popup.html"]),angular.module("ui.bootstrap.collapse",[]).directive("uibCollapse",["$animate","$q","$parse","$injector",function(a,b,c,d){var e=d.has("$animateCss")?d.get("$animateCss"):null;return{link:function(d,f,g){function h(){f.hasClass("collapse")&&f.hasClass("in")||b.resolve(l(d)).then(function(){f.removeClass("collapse").addClass("collapsing").attr("aria-expanded",!0).attr("aria-hidden",!1),e?e(f,{addClass:"in",easing:"ease",to:{height:f[0].scrollHeight+"px"}}).start()["finally"](i):a.addClass(f,"in",{to:{height:f[0].scrollHeight+"px"}}).then(i)})}function i(){f.removeClass("collapsing").addClass("collapse").css({height:"auto"}),m(d)}function j(){return f.hasClass("collapse")||f.hasClass("in")?void b.resolve(n(d)).then(function(){f.css({height:f[0].scrollHeight+"px"}).removeClass("collapse").addClass("collapsing").attr("aria-expanded",!1).attr("aria-hidden",!0),e?e(f,{removeClass:"in",to:{height:"0"}}).start()["finally"](k):a.removeClass(f,"in",{to:{height:"0"}}).then(k)}):k()}function k(){f.css({height:"0"}),f.removeClass("collapsing").addClass("collapse"),o(d)}var l=c(g.expanding),m=c(g.expanded),n=c(g.collapsing),o=c(g.collapsed);d.$eval(g.uibCollapse)||f.addClass("in").addClass("collapse").attr("aria-expanded",!0).attr("aria-hidden",!1).css({height:"auto"}),d.$watch(g.uibCollapse,function(a){a?j():h()})}}}]),angular.module("ui.bootstrap.accordion",["ui.bootstrap.collapse"]).constant("uibAccordionConfig",{closeOthers:!0}).controller("UibAccordionController",["$scope","$attrs","uibAccordionConfig",function(a,b,c){this.groups=[],this.closeOthers=function(d){var e=angular.isDefined(b.closeOthers)?a.$eval(b.closeOthers):c.closeOthers;e&&angular.forEach(this.groups,function(a){a!==d&&(a.isOpen=!1)})},this.addGroup=function(a){var b=this;this.groups.push(a),a.$on("$destroy",function(c){b.removeGroup(a)})},this.removeGroup=function(a){var b=this.groups.indexOf(a);-1!==b&&this.groups.splice(b,1)}}]).directive("uibAccordion",function(){return{controller:"UibAccordionController",controllerAs:"accordion",transclude:!0,templateUrl:function(a,b){return b.templateUrl||"uib/template/accordion/accordion.html"}}}).directive("uibAccordionGroup",function(){return{require:"^uibAccordion",transclude:!0,replace:!0,templateUrl:function(a,b){return b.templateUrl||"uib/template/accordion/accordion-group.html"},scope:{heading:"@",panelClass:"@?",isOpen:"=?",isDisabled:"=?"},controller:function(){this.setHeading=function(a){this.heading=a}},link:function(a,b,c,d){d.addGroup(a),a.openClass=c.openClass||"panel-open",a.panelClass=c.panelClass||"panel-default",a.$watch("isOpen",function(c){b.toggleClass(a.openClass,!!c),c&&d.closeOthers(a)}),a.toggleOpen=function(b){a.isDisabled||b&&32!==b.which||(a.isOpen=!a.isOpen)};var e="accordiongroup-"+a.$id+"-"+Math.floor(1e4*Math.random());a.headingId=e+"-tab",a.panelId=e+"-panel"}}}).directive("uibAccordionHeading",function(){return{transclude:!0,template:"",replace:!0,require:"^uibAccordionGroup",link:function(a,b,c,d,e){d.setHeading(e(a,angular.noop))}}}).directive("uibAccordionTransclude",function(){return{require:"^uibAccordionGroup",link:function(a,b,c,d){a.$watch(function(){return d[c.uibAccordionTransclude]},function(a){if(a){var c=angular.element(b[0].querySelector("[uib-accordion-header]"));c.html(""),c.append(a)}})}}}),angular.module("ui.bootstrap.alert",[]).controller("UibAlertController",["$scope","$attrs","$interpolate","$timeout",function(a,b,c,d){a.closeable=!!b.close;var e=angular.isDefined(b.dismissOnTimeout)?c(b.dismissOnTimeout)(a.$parent):null;e&&d(function(){a.close()},parseInt(e,10))}]).directive("uibAlert",function(){return{controller:"UibAlertController",controllerAs:"alert",templateUrl:function(a,b){return b.templateUrl||"uib/template/alert/alert.html"},transclude:!0,replace:!0,scope:{type:"@",close:"&"}}}),angular.module("ui.bootstrap.buttons",[]).constant("uibButtonConfig",{activeClass:"active",toggleEvent:"click"}).controller("UibButtonsController",["uibButtonConfig",function(a){this.activeClass=a.activeClass||"active",this.toggleEvent=a.toggleEvent||"click"}]).directive("uibBtnRadio",["$parse",function(a){return{require:["uibBtnRadio","ngModel"],controller:"UibButtonsController",controllerAs:"buttons",link:function(b,c,d,e){var f=e[0],g=e[1],h=a(d.uibUncheckable);c.find("input").css({display:"none"}),g.$render=function(){c.toggleClass(f.activeClass,angular.equals(g.$modelValue,b.$eval(d.uibBtnRadio)))},c.on(f.toggleEvent,function(){if(!d.disabled){var a=c.hasClass(f.activeClass);a&&!angular.isDefined(d.uncheckable)||b.$apply(function(){g.$setViewValue(a?null:b.$eval(d.uibBtnRadio)),g.$render()})}}),d.uibUncheckable&&b.$watch(h,function(a){d.$set("uncheckable",a?"":void 0)})}}}]).directive("uibBtnCheckbox",function(){return{require:["uibBtnCheckbox","ngModel"],controller:"UibButtonsController",controllerAs:"button",link:function(a,b,c,d){function e(){return g(c.btnCheckboxTrue,!0)}function f(){return g(c.btnCheckboxFalse,!1)}function g(b,c){return angular.isDefined(b)?a.$eval(b):c}var h=d[0],i=d[1];b.find("input").css({display:"none"}),i.$render=function(){b.toggleClass(h.activeClass,angular.equals(i.$modelValue,e()))},b.on(h.toggleEvent,function(){c.disabled||a.$apply(function(){i.$setViewValue(b.hasClass(h.activeClass)?f():e()),i.$render()})})}}}),angular.module("ui.bootstrap.carousel",[]).controller("UibCarouselController",["$scope","$element","$interval","$timeout","$animate",function(a,b,c,d,e){function f(){for(;t.length;)t.shift()}function g(a){for(var b=0;b<q.length;b++)q[b].slide.active=b===a}function h(c,d,i){if(!u){if(angular.extend(c,{direction:i}),angular.extend(q[s].slide||{},{direction:i}),e.enabled(b)&&!a.$currentTransition&&q[d].element&&p.slides.length>1){q[d].element.data(r,c.direction);var j=p.getCurrentIndex();angular.isNumber(j)&&q[j].element&&q[j].element.data(r,c.direction),a.$currentTransition=!0,e.on("addClass",q[d].element,function(b,c){if("close"===c&&(a.$currentTransition=null,e.off("addClass",b),t.length)){var d=t.pop().slide,g=d.index,i=g>p.getCurrentIndex()?"next":"prev";f(),h(d,g,i)}})}a.active=c.index,s=c.index,g(d),l()}}function i(a){for(var b=0;b<q.length;b++)if(q[b].slide===a)return b}function j(){n&&(c.cancel(n),n=null)}function k(b){b.length||(a.$currentTransition=null,f())}function l(){j();var b=+a.interval;!isNaN(b)&&b>0&&(n=c(m,b))}function m(){var b=+a.interval;o&&!isNaN(b)&&b>0&&q.length?a.next():a.pause()}var n,o,p=this,q=p.slides=a.slides=[],r="uib-slideDirection",s=a.active,t=[],u=!1;p.addSlide=function(b,c){q.push({slide:b,element:c}),q.sort(function(a,b){return+a.slide.index-+b.slide.index}),(b.index===a.active||1===q.length&&!angular.isNumber(a.active))&&(a.$currentTransition&&(a.$currentTransition=null),s=b.index,a.active=b.index,g(s),p.select(q[i(b)]),1===q.length&&a.play())},p.getCurrentIndex=function(){for(var a=0;a<q.length;a++)if(q[a].slide.index===s)return a},p.next=a.next=function(){var b=(p.getCurrentIndex()+1)%q.length;return 0===b&&a.noWrap()?void a.pause():p.select(q[b],"next")},p.prev=a.prev=function(){var b=p.getCurrentIndex()-1<0?q.length-1:p.getCurrentIndex()-1;return a.noWrap()&&b===q.length-1?void a.pause():p.select(q[b],"prev")},p.removeSlide=function(b){var c=i(b),d=t.indexOf(q[c]);-1!==d&&t.splice(d,1),q.splice(c,1),q.length>0&&s===c?c>=q.length?(s=q.length-1,a.active=s,g(s),p.select(q[q.length-1])):(s=c,a.active=s,g(s),p.select(q[c])):s>c&&(s--,a.active=s),0===q.length&&(s=null,a.active=null,f())},p.select=a.select=function(b,c){var d=i(b.slide);void 0===c&&(c=d>p.getCurrentIndex()?"next":"prev"),b.slide.index===s||a.$currentTransition?b&&b.slide.index!==s&&a.$currentTransition&&t.push(q[d]):h(b.slide,d,c)},a.indexOfSlide=function(a){return+a.slide.index},a.isActive=function(b){return a.active===b.slide.index},a.isPrevDisabled=function(){return 0===a.active&&a.noWrap()},a.isNextDisabled=function(){return a.active===q.length-1&&a.noWrap()},a.pause=function(){a.noPause||(o=!1,j())},a.play=function(){o||(o=!0,l())},a.$on("$destroy",function(){u=!0,j()}),a.$watch("noTransition",function(a){e.enabled(b,!a)}),a.$watch("interval",l),a.$watchCollection("slides",k),a.$watch("active",function(a){if(angular.isNumber(a)&&s!==a){for(var b=0;b<q.length;b++)if(q[b].slide.index===a){a=b;break}var c=q[a];c&&(g(a),p.select(q[a]),s=a)}})}]).directive("uibCarousel",function(){return{transclude:!0,replace:!0,controller:"UibCarouselController",controllerAs:"carousel",templateUrl:function(a,b){return b.templateUrl||"uib/template/carousel/carousel.html"},scope:{active:"=",interval:"=",noTransition:"=",noPause:"=",noWrap:"&"}}}).directive("uibSlide",function(){return{require:"^uibCarousel",transclude:!0,replace:!0,templateUrl:function(a,b){return b.templateUrl||"uib/template/carousel/slide.html"},scope:{actual:"=?",index:"=?"},link:function(a,b,c,d){d.addSlide(a,b),a.$on("$destroy",function(){d.removeSlide(a)})}}}).animation(".item",["$animateCss",function(a){function b(a,b,c){a.removeClass(b),c&&c()}var c="uib-slideDirection";return{beforeAddClass:function(d,e,f){if("active"===e){var g=!1,h=d.data(c),i="next"===h?"left":"right",j=b.bind(this,d,i+" "+h,f);return d.addClass(h),a(d,{addClass:i}).start().done(j),function(){g=!0}}f()},beforeRemoveClass:function(d,e,f){if("active"===e){var g=!1,h=d.data(c),i="next"===h?"left":"right",j=b.bind(this,d,i,f);return a(d,{addClass:i}).start().done(j),function(){g=!0}}f()}}}]),angular.module("ui.bootstrap.dateparser",[]).service("uibDateParser",["$log","$locale","dateFilter","orderByFilter",function(a,b,c,d){function e(a,b){var c=[],e=a.split(""),f=a.indexOf("'");if(f>-1){var g=!1;a=a.split("");for(var h=f;h<a.length;h++)g?("'"===a[h]&&(h+1<a.length&&"'"===a[h+1]?(a[h+1]="$",e[h+1]=""):(e[h]="",g=!1)),a[h]="$"):"'"===a[h]&&(a[h]="$",e[h]="",g=!0);a=a.join("")}return angular.forEach(n,function(d){var f=a.indexOf(d.key);if(f>-1){a=a.split(""),e[f]="("+d.regex+")",a[f]="$";for(var g=f+1,h=f+d.key.length;h>g;g++)e[g]="",a[g]="$";a=a.join(""),c.push({index:f,key:d.key,apply:d[b],matcher:d.regex})}}),{regex:new RegExp("^"+e.join("")+"$"),map:d(c,"index")}}function f(a,b,c){return 1>c?!1:1===b&&c>28?29===c&&(a%4===0&&a%100!==0||a%400===0):3===b||5===b||8===b||10===b?31>c:!0}function g(a){return parseInt(a,10)}function h(a,b){return a&&b?l(a,b):a}function i(a,b){return a&&b?l(a,b,!0):a}function j(a,b){var c=Date.parse("Jan 01, 1970 00:00:00 "+a)/6e4;return isNaN(c)?b:c}function k(a,b){return a=new Date(a.getTime()),a.setMinutes(a.getMinutes()+b),a}function l(a,b,c){c=c?-1:1;var d=j(b,a.getTimezoneOffset());return k(a,c*(d-a.getTimezoneOffset()))}var m,n,o=/[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g;this.init=function(){m=b.id,this.parsers={},this.formatters={},n=[{key:"yyyy",regex:"\\d{4}",apply:function(a){this.year=+a},formatter:function(a){var b=new Date;return b.setFullYear(Math.abs(a.getFullYear())),c(b,"yyyy")}},{key:"yy",regex:"\\d{2}",apply:function(a){a=+a,this.year=69>a?a+2e3:a+1900},formatter:function(a){var b=new Date;return b.setFullYear(Math.abs(a.getFullYear())),c(b,"yy")}},{key:"y",regex:"\\d{1,4}",apply:function(a){this.year=+a},formatter:function(a){var b=new Date;return b.setFullYear(Math.abs(a.getFullYear())),c(b,"y")}},{key:"M!",regex:"0?[1-9]|1[0-2]",apply:function(a){this.month=a-1},formatter:function(a){var b=a.getMonth();return/^[0-9]$/.test(b)?c(a,"MM"):c(a,"M")}},{key:"MMMM",regex:b.DATETIME_FORMATS.MONTH.join("|"),apply:function(a){this.month=b.DATETIME_FORMATS.MONTH.indexOf(a)},formatter:function(a){return c(a,"MMMM")}},{key:"MMM",regex:b.DATETIME_FORMATS.SHORTMONTH.join("|"),apply:function(a){this.month=b.DATETIME_FORMATS.SHORTMONTH.indexOf(a)},formatter:function(a){return c(a,"MMM")}},{key:"MM",regex:"0[1-9]|1[0-2]",apply:function(a){this.month=a-1},formatter:function(a){return c(a,"MM")}},{key:"M",regex:"[1-9]|1[0-2]",apply:function(a){this.month=a-1},formatter:function(a){return c(a,"M")}},{key:"d!",regex:"[0-2]?[0-9]{1}|3[0-1]{1}",apply:function(a){this.date=+a},formatter:function(a){var b=a.getDate();return/^[1-9]$/.test(b)?c(a,"dd"):c(a,"d")}},{key:"dd",regex:"[0-2][0-9]{1}|3[0-1]{1}",apply:function(a){this.date=+a},formatter:function(a){return c(a,"dd")}},{key:"d",regex:"[1-2]?[0-9]{1}|3[0-1]{1}",apply:function(a){this.date=+a},formatter:function(a){return c(a,"d")}},{key:"EEEE",regex:b.DATETIME_FORMATS.DAY.join("|"),formatter:function(a){return c(a,"EEEE")}},{key:"EEE",regex:b.DATETIME_FORMATS.SHORTDAY.join("|"),formatter:function(a){return c(a,"EEE")}},{key:"HH",regex:"(?:0|1)[0-9]|2[0-3]",apply:function(a){this.hours=+a},formatter:function(a){return c(a,"HH")}},{key:"hh",regex:"0[0-9]|1[0-2]",apply:function(a){this.hours=+a},formatter:function(a){return c(a,"hh")}},{key:"H",regex:"1?[0-9]|2[0-3]",apply:function(a){this.hours=+a},formatter:function(a){return c(a,"H")}},{key:"h",regex:"[0-9]|1[0-2]",apply:function(a){this.hours=+a},formatter:function(a){return c(a,"h")}},{key:"mm",regex:"[0-5][0-9]",apply:function(a){this.minutes=+a},formatter:function(a){return c(a,"mm")}},{key:"m",regex:"[0-9]|[1-5][0-9]",apply:function(a){this.minutes=+a},formatter:function(a){return c(a,"m")}},{key:"sss",regex:"[0-9][0-9][0-9]",apply:function(a){this.milliseconds=+a},formatter:function(a){return c(a,"sss")}},{key:"ss",regex:"[0-5][0-9]",apply:function(a){this.seconds=+a},formatter:function(a){return c(a,"ss")}},{key:"s",regex:"[0-9]|[1-5][0-9]",apply:function(a){this.seconds=+a},formatter:function(a){return c(a,"s")}},{key:"a",regex:b.DATETIME_FORMATS.AMPMS.join("|"),apply:function(a){12===this.hours&&(this.hours=0),"PM"===a&&(this.hours+=12)},formatter:function(a){return c(a,"a")}},{key:"Z",regex:"[+-]\\d{4}",apply:function(a){var b=a.match(/([+-])(\d{2})(\d{2})/),c=b[1],d=b[2],e=b[3];this.hours+=g(c+d),this.minutes+=g(c+e)},formatter:function(a){return c(a,"Z")}},{key:"ww",regex:"[0-4][0-9]|5[0-3]",formatter:function(a){return c(a,"ww")}},{key:"w",regex:"[0-9]|[1-4][0-9]|5[0-3]",formatter:function(a){return c(a,"w")}},{key:"GGGG",regex:b.DATETIME_FORMATS.ERANAMES.join("|").replace(/\s/g,"\\s"),formatter:function(a){return c(a,"GGGG")}},{key:"GGG",regex:b.DATETIME_FORMATS.ERAS.join("|"),formatter:function(a){return c(a,"GGG")}},{key:"GG",regex:b.DATETIME_FORMATS.ERAS.join("|"),formatter:function(a){return c(a,"GG")}},{key:"G",regex:b.DATETIME_FORMATS.ERAS.join("|"),formatter:function(a){return c(a,"G")}}]},this.init(),this.filter=function(a,c){if(!angular.isDate(a)||isNaN(a)||!c)return"";c=b.DATETIME_FORMATS[c]||c,b.id!==m&&this.init(),this.formatters[c]||(this.formatters[c]=e(c,"formatter"));var d=this.formatters[c],f=d.map,g=c;return f.reduce(function(b,c,d){var e=g.match(new RegExp("(.*)"+c.key));e&&angular.isString(e[1])&&(b+=e[1],g=g.replace(e[1]+c.key,""));var h=d===f.length-1?g:"";return c.apply?b+c.apply.call(null,a)+h:b+h},"")},this.parse=function(c,d,g){if(!angular.isString(c)||!d)return c;d=b.DATETIME_FORMATS[d]||d,d=d.replace(o,"\\$&"),b.id!==m&&this.init(),this.parsers[d]||(this.parsers[d]=e(d,"apply"));var h=this.parsers[d],i=h.regex,j=h.map,k=c.match(i),l=!1;if(k&&k.length){var n,p;angular.isDate(g)&&!isNaN(g.getTime())?n={year:g.getFullYear(),month:g.getMonth(),date:g.getDate(),hours:g.getHours(),minutes:g.getMinutes(),seconds:g.getSeconds(),milliseconds:g.getMilliseconds()}:(g&&a.warn("dateparser:","baseDate is not a valid date"),n={year:1900,month:0,date:1,hours:0,minutes:0,seconds:0,milliseconds:0});for(var q=1,r=k.length;r>q;q++){var s=j[q-1];"Z"===s.matcher&&(l=!0),s.apply&&s.apply.call(n,k[q])}var t=l?Date.prototype.setUTCFullYear:Date.prototype.setFullYear,u=l?Date.prototype.setUTCHours:Date.prototype.setHours;return f(n.year,n.month,n.date)&&(!angular.isDate(g)||isNaN(g.getTime())||l?(p=new Date(0),t.call(p,n.year,n.month,n.date),u.call(p,n.hours||0,n.minutes||0,n.seconds||0,n.milliseconds||0)):(p=new Date(g),t.call(p,n.year,n.month,n.date),u.call(p,n.hours,n.minutes,n.seconds,n.milliseconds))),p}},this.toTimezone=h,this.fromTimezone=i,this.timezoneToOffset=j,this.addDateMinutes=k,this.convertTimezoneToLocal=l}]),angular.module("ui.bootstrap.isClass",[]).directive("uibIsClass",["$animate",function(a){var b=/^\s*([\s\S]+?)\s+on\s+([\s\S]+?)\s*$/,c=/^\s*([\s\S]+?)\s+for\s+([\s\S]+?)\s*$/;return{restrict:"A",compile:function(d,e){function f(a,b,c){i.push(a),j.push({scope:a,element:b}),o.forEach(function(b,c){g(b,a)}),a.$on("$destroy",h)}function g(b,d){var e=b.match(c),f=d.$eval(e[1]),g=e[2],h=k[b];if(!h){var i=function(b){var c=null;j.some(function(a){var d=a.scope.$eval(m);return d===b?(c=a,!0):void 0}),h.lastActivated!==c&&(h.lastActivated&&a.removeClass(h.lastActivated.element,f),c&&a.addClass(c.element,f),h.lastActivated=c)};k[b]=h={lastActivated:null,scope:d,watchFn:i,compareWithExp:g,watcher:d.$watch(g,i)}}h.watchFn(d.$eval(g))}function h(a){var b=a.targetScope,c=i.indexOf(b);if(i.splice(c,1),j.splice(c,1),i.length){var d=i[0];angular.forEach(k,function(a){a.scope===b&&(a.watcher=d.$watch(a.compareWithExp,a.watchFn),a.scope=d)})}else k={}}var i=[],j=[],k={},l=e.uibIsClass.match(b),m=l[2],n=l[1],o=n.split(",");return f}}}]),angular.module("ui.bootstrap.datepicker",["ui.bootstrap.dateparser","ui.bootstrap.isClass"]).value("$datepickerSuppressError",!1).value("$datepickerLiteralWarning",!0).constant("uibDatepickerConfig",{datepickerMode:"day",formatDay:"dd",formatMonth:"MMMM",formatYear:"yyyy",formatDayHeader:"EEE",formatDayTitle:"MMMM yyyy",formatMonthTitle:"yyyy",maxDate:null,maxMode:"year",minDate:null,minMode:"day",ngModelOptions:{},shortcutPropagation:!1,showWeeks:!0,yearColumns:5,yearRows:4}).controller("UibDatepickerController",["$scope","$attrs","$parse","$interpolate","$locale","$log","dateFilter","uibDatepickerConfig","$datepickerLiteralWarning","$datepickerSuppressError","uibDateParser",function(a,b,c,d,e,f,g,h,i,j,k){function l(b){a.datepickerMode=b,a.datepickerOptions.datepickerMode=b}var m=this,n={$setViewValue:angular.noop},o={},p=[];!!b.datepickerOptions;a.datepickerOptions||(a.datepickerOptions={}),this.modes=["day","month","year"],["customClass","dateDisabled","datepickerMode","formatDay","formatDayHeader","formatDayTitle","formatMonth","formatMonthTitle","formatYear","maxDate","maxMode","minDate","minMode","showWeeks","shortcutPropagation","startingDay","yearColumns","yearRows"].forEach(function(b){switch(b){case"customClass":case"dateDisabled":a[b]=a.datepickerOptions[b]||angular.noop;break;case"datepickerMode":a.datepickerMode=angular.isDefined(a.datepickerOptions.datepickerMode)?a.datepickerOptions.datepickerMode:h.datepickerMode;break;case"formatDay":case"formatDayHeader":case"formatDayTitle":case"formatMonth":case"formatMonthTitle":case"formatYear":m[b]=angular.isDefined(a.datepickerOptions[b])?d(a.datepickerOptions[b])(a.$parent):h[b];break;case"showWeeks":case"shortcutPropagation":case"yearColumns":case"yearRows":m[b]=angular.isDefined(a.datepickerOptions[b])?a.datepickerOptions[b]:h[b];break;case"startingDay":angular.isDefined(a.datepickerOptions.startingDay)?m.startingDay=a.datepickerOptions.startingDay:angular.isNumber(h.startingDay)?m.startingDay=h.startingDay:m.startingDay=(e.DATETIME_FORMATS.FIRSTDAYOFWEEK+8)%7;break;case"maxDate":case"minDate":a.$watch("datepickerOptions."+b,function(a){a?angular.isDate(a)?m[b]=k.fromTimezone(new Date(a),o.timezone):(i&&f.warn("Literal date support has been deprecated, please switch to date object usage"),m[b]=new Date(g(a,"medium"))):m[b]=h[b]?k.fromTimezone(new Date(h[b]),o.timezone):null,m.refreshView()});break;case"maxMode":case"minMode":a.datepickerOptions[b]?a.$watch(function(){return a.datepickerOptions[b]},function(c){m[b]=a[b]=angular.isDefined(c)?c:datepickerOptions[b],("minMode"===b&&m.modes.indexOf(a.datepickerOptions.datepickerMode)<m.modes.indexOf(m[b])||"maxMode"===b&&m.modes.indexOf(a.datepickerOptions.datepickerMode)>m.modes.indexOf(m[b]))&&(a.datepickerMode=m[b],a.datepickerOptions.datepickerMode=m[b])}):m[b]=a[b]=h[b]||null}}),a.uniqueId="datepicker-"+a.$id+"-"+Math.floor(1e4*Math.random()),a.disabled=angular.isDefined(b.disabled)||!1,angular.isDefined(b.ngDisabled)&&p.push(a.$parent.$watch(b.ngDisabled,function(b){a.disabled=b,m.refreshView()})),a.isActive=function(b){return 0===m.compare(b.date,m.activeDate)?(a.activeDateId=b.uid,!0):!1},this.init=function(b){n=b,o=b.$options||h.ngModelOptions,a.datepickerOptions.initDate?(m.activeDate=k.fromTimezone(a.datepickerOptions.initDate,o.timezone)||new Date,a.$watch("datepickerOptions.initDate",function(a){a&&(n.$isEmpty(n.$modelValue)||n.$invalid)&&(m.activeDate=k.fromTimezone(a,o.timezone),m.refreshView())})):m.activeDate=new Date,this.activeDate=n.$modelValue?k.fromTimezone(new Date(n.$modelValue),o.timezone):k.fromTimezone(new Date,o.timezone),n.$render=function(){m.render()}},this.render=function(){if(n.$viewValue){var a=new Date(n.$viewValue),b=!isNaN(a);b?this.activeDate=k.fromTimezone(a,o.timezone):j||f.error('Datepicker directive: "ng-model" value must be a Date object')}this.refreshView()},this.refreshView=function(){if(this.element){a.selectedDt=null,this._refreshView(),a.activeDt&&(a.activeDateId=a.activeDt.uid);var b=n.$viewValue?new Date(n.$viewValue):null;b=k.fromTimezone(b,o.timezone),n.$setValidity("dateDisabled",!b||this.element&&!this.isDisabled(b))}},this.createDateObject=function(b,c){var d=n.$viewValue?new Date(n.$viewValue):null;d=k.fromTimezone(d,o.timezone);var e=new Date;e=k.fromTimezone(e,o.timezone);var f=this.compare(b,e),g={date:b,label:k.filter(b,c),selected:d&&0===this.compare(b,d),disabled:this.isDisabled(b),past:0>f,current:0===f,future:f>0,customClass:this.customClass(b)||null};return d&&0===this.compare(b,d)&&(a.selectedDt=g),m.activeDate&&0===this.compare(g.date,m.activeDate)&&(a.activeDt=g),g},this.isDisabled=function(b){return a.disabled||this.minDate&&this.compare(b,this.minDate)<0||this.maxDate&&this.compare(b,this.maxDate)>0||a.dateDisabled&&a.dateDisabled({date:b,mode:a.datepickerMode})},this.customClass=function(b){return a.customClass({date:b,mode:a.datepickerMode})},this.split=function(a,b){for(var c=[];a.length>0;)c.push(a.splice(0,b));return c},a.select=function(b){if(a.datepickerMode===m.minMode){var c=n.$viewValue?k.fromTimezone(new Date(n.$viewValue),o.timezone):new Date(0,0,0,0,0,0,0);c.setFullYear(b.getFullYear(),b.getMonth(),b.getDate()),c=k.toTimezone(c,o.timezone),n.$setViewValue(c),n.$render()}else m.activeDate=b,l(m.modes[m.modes.indexOf(a.datepickerMode)-1]),a.$emit("uib:datepicker.mode");a.$broadcast("uib:datepicker.focus")},a.move=function(a){var b=m.activeDate.getFullYear()+a*(m.step.years||0),c=m.activeDate.getMonth()+a*(m.step.months||0);m.activeDate.setFullYear(b,c,1),m.refreshView()},a.toggleMode=function(b){b=b||1,a.datepickerMode===m.maxMode&&1===b||a.datepickerMode===m.minMode&&-1===b||(l(m.modes[m.modes.indexOf(a.datepickerMode)+b]),a.$emit("uib:datepicker.mode"))},a.keys={13:"enter",32:"space",33:"pageup",34:"pagedown",35:"end",36:"home",37:"left",38:"up",39:"right",40:"down"};var q=function(){m.element[0].focus()};a.$on("uib:datepicker.focus",q),a.keydown=function(b){var c=a.keys[b.which];if(c&&!b.shiftKey&&!b.altKey&&!a.disabled)if(b.preventDefault(),m.shortcutPropagation||b.stopPropagation(),"enter"===c||"space"===c){if(m.isDisabled(m.activeDate))return;a.select(m.activeDate)}else!b.ctrlKey||"up"!==c&&"down"!==c?(m.handleKeyDown(c,b),m.refreshView()):a.toggleMode("up"===c?1:-1)},a.$on("$destroy",function(){for(;p.length;)p.shift()()})}]).controller("UibDaypickerController",["$scope","$element","dateFilter",function(a,b,c){function d(a,b){return 1!==b||a%4!==0||a%100===0&&a%400!==0?f[b]:29}function e(a){var b=new Date(a);b.setDate(b.getDate()+4-(b.getDay()||7));var c=b.getTime();return b.setMonth(0),b.setDate(1),Math.floor(Math.round((c-b)/864e5)/7)+1}var f=[31,28,31,30,31,30,31,31,30,31,30,31];this.step={months:1},this.element=b,this.init=function(b){angular.extend(b,this),a.showWeeks=b.showWeeks,b.refreshView()},this.getDates=function(a,b){for(var c,d=new Array(b),e=new Date(a),f=0;b>f;)c=new Date(e),d[f++]=c,e.setDate(e.getDate()+1);return d},this._refreshView=function(){var b=this.activeDate.getFullYear(),d=this.activeDate.getMonth(),f=new Date(this.activeDate);f.setFullYear(b,d,1);var g=this.startingDay-f.getDay(),h=g>0?7-g:-g,i=new Date(f);h>0&&i.setDate(-h+1);for(var j=this.getDates(i,42),k=0;42>k;k++)j[k]=angular.extend(this.createDateObject(j[k],this.formatDay),{secondary:j[k].getMonth()!==d,uid:a.uniqueId+"-"+k});a.labels=new Array(7);for(var l=0;7>l;l++)a.labels[l]={abbr:c(j[l].date,this.formatDayHeader),full:c(j[l].date,"EEEE")};if(a.title=c(this.activeDate,this.formatDayTitle),a.rows=this.split(j,7),a.showWeeks){a.weekNumbers=[];for(var m=(11-this.startingDay)%7,n=a.rows.length,o=0;n>o;o++)a.weekNumbers.push(e(a.rows[o][m].date))}},this.compare=function(a,b){var c=new Date(a.getFullYear(),a.getMonth(),a.getDate()),d=new Date(b.getFullYear(),b.getMonth(),b.getDate());return c.setFullYear(a.getFullYear()),d.setFullYear(b.getFullYear()),c-d},this.handleKeyDown=function(a,b){var c=this.activeDate.getDate();if("left"===a)c-=1;else if("up"===a)c-=7;else if("right"===a)c+=1;else if("down"===a)c+=7;else if("pageup"===a||"pagedown"===a){var e=this.activeDate.getMonth()+("pageup"===a?-1:1);this.activeDate.setMonth(e,1),c=Math.min(d(this.activeDate.getFullYear(),this.activeDate.getMonth()),c)}else"home"===a?c=1:"end"===a&&(c=d(this.activeDate.getFullYear(),this.activeDate.getMonth()));this.activeDate.setDate(c)}}]).controller("UibMonthpickerController",["$scope","$element","dateFilter",function(a,b,c){this.step={years:1},this.element=b,this.init=function(a){angular.extend(a,this),a.refreshView()},this._refreshView=function(){for(var b,d=new Array(12),e=this.activeDate.getFullYear(),f=0;12>f;f++)b=new Date(this.activeDate),b.setFullYear(e,f,1),d[f]=angular.extend(this.createDateObject(b,this.formatMonth),{uid:a.uniqueId+"-"+f});a.title=c(this.activeDate,this.formatMonthTitle),a.rows=this.split(d,3)},this.compare=function(a,b){var c=new Date(a.getFullYear(),a.getMonth()),d=new Date(b.getFullYear(),b.getMonth());return c.setFullYear(a.getFullYear()),d.setFullYear(b.getFullYear()),c-d},this.handleKeyDown=function(a,b){var c=this.activeDate.getMonth();if("left"===a)c-=1;else if("up"===a)c-=3;else if("right"===a)c+=1;else if("down"===a)c+=3;else if("pageup"===a||"pagedown"===a){var d=this.activeDate.getFullYear()+("pageup"===a?-1:1);this.activeDate.setFullYear(d)}else"home"===a?c=0:"end"===a&&(c=11);this.activeDate.setMonth(c)}}]).controller("UibYearpickerController",["$scope","$element","dateFilter",function(a,b,c){function d(a){return parseInt((a-1)/f,10)*f+1}var e,f;this.element=b,this.yearpickerInit=function(){e=this.yearColumns,f=this.yearRows*e,this.step={years:f}},this._refreshView=function(){for(var b,c=new Array(f),g=0,h=d(this.activeDate.getFullYear());f>g;g++)b=new Date(this.activeDate),b.setFullYear(h+g,0,1),c[g]=angular.extend(this.createDateObject(b,this.formatYear),{uid:a.uniqueId+"-"+g});a.title=[c[0].label,c[f-1].label].join(" - "),a.rows=this.split(c,e),a.columns=e},this.compare=function(a,b){return a.getFullYear()-b.getFullYear()},this.handleKeyDown=function(a,b){var c=this.activeDate.getFullYear();"left"===a?c-=1:"up"===a?c-=e:"right"===a?c+=1:"down"===a?c+=e:"pageup"===a||"pagedown"===a?c+=("pageup"===a?-1:1)*f:"home"===a?c=d(this.activeDate.getFullYear()):"end"===a&&(c=d(this.activeDate.getFullYear())+f-1),this.activeDate.setFullYear(c)}}]).directive("uibDatepicker",function(){return{replace:!0,templateUrl:function(a,b){return b.templateUrl||"uib/template/datepicker/datepicker.html"},scope:{datepickerOptions:"=?"},require:["uibDatepicker","^ngModel"],controller:"UibDatepickerController",controllerAs:"datepicker",link:function(a,b,c,d){var e=d[0],f=d[1];e.init(f)}}}).directive("uibDaypicker",function(){return{replace:!0,templateUrl:function(a,b){return b.templateUrl||"uib/template/datepicker/day.html"},require:["^uibDatepicker","uibDaypicker"],controller:"UibDaypickerController",link:function(a,b,c,d){var e=d[0],f=d[1];f.init(e)}}}).directive("uibMonthpicker",function(){return{replace:!0,templateUrl:function(a,b){return b.templateUrl||"uib/template/datepicker/month.html"},require:["^uibDatepicker","uibMonthpicker"],controller:"UibMonthpickerController",link:function(a,b,c,d){var e=d[0],f=d[1];f.init(e)}}}).directive("uibYearpicker",function(){return{replace:!0,templateUrl:function(a,b){return b.templateUrl||"uib/template/datepicker/year.html"},require:["^uibDatepicker","uibYearpicker"],controller:"UibYearpickerController",link:function(a,b,c,d){var e=d[0];angular.extend(e,d[1]),e.yearpickerInit(),e.refreshView()}}}),angular.module("ui.bootstrap.position",[]).factory("$uibPosition",["$document","$window",function(a,b){var c,d,e={normal:/(auto|scroll)/,hidden:/(auto|scroll|hidden)/},f={auto:/\s?auto?\s?/i,primary:/^(top|bottom|left|right)$/,secondary:/^(top|bottom|left|right|center)$/,vertical:/^(top|bottom)$/},g=/(HTML|BODY)/;return{getRawNode:function(a){return a.nodeName?a:a[0]||a},parseStyle:function(a){return a=parseFloat(a),isFinite(a)?a:0},offsetParent:function(c){function d(a){return"static"===(b.getComputedStyle(a).position||"static")}c=this.getRawNode(c);for(var e=c.offsetParent||a[0].documentElement;e&&e!==a[0].documentElement&&d(e);)e=e.offsetParent;return e||a[0].documentElement},scrollbarWidth:function(e){if(e){if(angular.isUndefined(d)){var f=a.find("body");f.addClass("uib-position-body-scrollbar-measure"),d=b.innerWidth-f[0].clientWidth,d=isFinite(d)?d:0,f.removeClass("uib-position-body-scrollbar-measure")}return d}if(angular.isUndefined(c)){var g=angular.element('<div class="uib-position-scrollbar-measure"></div>');a.find("body").append(g),c=g[0].offsetWidth-g[0].clientWidth,c=isFinite(c)?c:0,g.remove()}return c},scrollbarPadding:function(a){a=this.getRawNode(a);var c=b.getComputedStyle(a),d=this.parseStyle(c.paddingRight),e=this.parseStyle(c.paddingBottom),f=this.scrollParent(a,!1,!0),h=this.scrollbarWidth(f,g.test(f.tagName));return{scrollbarWidth:h,widthOverflow:f.scrollWidth>f.clientWidth,right:d+h,originalRight:d,heightOverflow:f.scrollHeight>f.clientHeight,bottom:e+h,originalBottom:e}},isScrollable:function(a,c){a=this.getRawNode(a);var d=c?e.hidden:e.normal,f=b.getComputedStyle(a);return d.test(f.overflow+f.overflowY+f.overflowX);
1766 },scrollParent:function(c,d,f){c=this.getRawNode(c);var g=d?e.hidden:e.normal,h=a[0].documentElement,i=b.getComputedStyle(c);if(f&&g.test(i.overflow+i.overflowY+i.overflowX))return c;var j="absolute"===i.position,k=c.parentElement||h;if(k===h||"fixed"===i.position)return h;for(;k.parentElement&&k!==h;){var l=b.getComputedStyle(k);if(j&&"static"!==l.position&&(j=!1),!j&&g.test(l.overflow+l.overflowY+l.overflowX))break;k=k.parentElement}return k},position:function(c,d){c=this.getRawNode(c);var e=this.offset(c);if(d){var f=b.getComputedStyle(c);e.top-=this.parseStyle(f.marginTop),e.left-=this.parseStyle(f.marginLeft)}var g=this.offsetParent(c),h={top:0,left:0};return g!==a[0].documentElement&&(h=this.offset(g),h.top+=g.clientTop-g.scrollTop,h.left+=g.clientLeft-g.scrollLeft),{width:Math.round(angular.isNumber(e.width)?e.width:c.offsetWidth),height:Math.round(angular.isNumber(e.height)?e.height:c.offsetHeight),top:Math.round(e.top-h.top),left:Math.round(e.left-h.left)}},offset:function(c){c=this.getRawNode(c);var d=c.getBoundingClientRect();return{width:Math.round(angular.isNumber(d.width)?d.width:c.offsetWidth),height:Math.round(angular.isNumber(d.height)?d.height:c.offsetHeight),top:Math.round(d.top+(b.pageYOffset||a[0].documentElement.scrollTop)),left:Math.round(d.left+(b.pageXOffset||a[0].documentElement.scrollLeft))}},viewportOffset:function(c,d,e){c=this.getRawNode(c),e=e!==!1;var f=c.getBoundingClientRect(),g={top:0,left:0,bottom:0,right:0},h=d?a[0].documentElement:this.scrollParent(c),i=h.getBoundingClientRect();if(g.top=i.top+h.clientTop,g.left=i.left+h.clientLeft,h===a[0].documentElement&&(g.top+=b.pageYOffset,g.left+=b.pageXOffset),g.bottom=g.top+h.clientHeight,g.right=g.left+h.clientWidth,e){var j=b.getComputedStyle(h);g.top+=this.parseStyle(j.paddingTop),g.bottom-=this.parseStyle(j.paddingBottom),g.left+=this.parseStyle(j.paddingLeft),g.right-=this.parseStyle(j.paddingRight)}return{top:Math.round(f.top-g.top),bottom:Math.round(g.bottom-f.bottom),left:Math.round(f.left-g.left),right:Math.round(g.right-f.right)}},parsePlacement:function(a){var b=f.auto.test(a);return b&&(a=a.replace(f.auto,"")),a=a.split("-"),a[0]=a[0]||"top",f.primary.test(a[0])||(a[0]="top"),a[1]=a[1]||"center",f.secondary.test(a[1])||(a[1]="center"),b?a[2]=!0:a[2]=!1,a},positionElements:function(a,c,d,e){a=this.getRawNode(a),c=this.getRawNode(c);var g=angular.isDefined(c.offsetWidth)?c.offsetWidth:c.prop("offsetWidth"),h=angular.isDefined(c.offsetHeight)?c.offsetHeight:c.prop("offsetHeight");d=this.parsePlacement(d);var i=e?this.offset(a):this.position(a),j={top:0,left:0,placement:""};if(d[2]){var k=this.viewportOffset(a,e),l=b.getComputedStyle(c),m={width:g+Math.round(Math.abs(this.parseStyle(l.marginLeft)+this.parseStyle(l.marginRight))),height:h+Math.round(Math.abs(this.parseStyle(l.marginTop)+this.parseStyle(l.marginBottom)))};if(d[0]="top"===d[0]&&m.height>k.top&&m.height<=k.bottom?"bottom":"bottom"===d[0]&&m.height>k.bottom&&m.height<=k.top?"top":"left"===d[0]&&m.width>k.left&&m.width<=k.right?"right":"right"===d[0]&&m.width>k.right&&m.width<=k.left?"left":d[0],d[1]="top"===d[1]&&m.height-i.height>k.bottom&&m.height-i.height<=k.top?"bottom":"bottom"===d[1]&&m.height-i.height>k.top&&m.height-i.height<=k.bottom?"top":"left"===d[1]&&m.width-i.width>k.right&&m.width-i.width<=k.left?"right":"right"===d[1]&&m.width-i.width>k.left&&m.width-i.width<=k.right?"left":d[1],"center"===d[1])if(f.vertical.test(d[0])){var n=i.width/2-g/2;k.left+n<0&&m.width-i.width<=k.right?d[1]="left":k.right+n<0&&m.width-i.width<=k.left&&(d[1]="right")}else{var o=i.height/2-m.height/2;k.top+o<0&&m.height-i.height<=k.bottom?d[1]="top":k.bottom+o<0&&m.height-i.height<=k.top&&(d[1]="bottom")}}switch(d[0]){case"top":j.top=i.top-h;break;case"bottom":j.top=i.top+i.height;break;case"left":j.left=i.left-g;break;case"right":j.left=i.left+i.width}switch(d[1]){case"top":j.top=i.top;break;case"bottom":j.top=i.top+i.height-h;break;case"left":j.left=i.left;break;case"right":j.left=i.left+i.width-g;break;case"center":f.vertical.test(d[0])?j.left=i.left+i.width/2-g/2:j.top=i.top+i.height/2-h/2}return j.top=Math.round(j.top),j.left=Math.round(j.left),j.placement="center"===d[1]?d[0]:d[0]+"-"+d[1],j},positionArrow:function(a,c){a=this.getRawNode(a);var d=a.querySelector(".tooltip-inner, .popover-inner");if(d){var e=angular.element(d).hasClass("tooltip-inner"),g=e?a.querySelector(".tooltip-arrow"):a.querySelector(".arrow");if(g){var h={top:"",bottom:"",left:"",right:""};if(c=this.parsePlacement(c),"center"===c[1])return void angular.element(g).css(h);var i="border-"+c[0]+"-width",j=b.getComputedStyle(g)[i],k="border-";k+=f.vertical.test(c[0])?c[0]+"-"+c[1]:c[1]+"-"+c[0],k+="-radius";var l=b.getComputedStyle(e?d:a)[k];switch(c[0]){case"top":h.bottom=e?"0":"-"+j;break;case"bottom":h.top=e?"0":"-"+j;break;case"left":h.right=e?"0":"-"+j;break;case"right":h.left=e?"0":"-"+j}h[c[1]]=l,angular.element(g).css(h)}}}}}]),angular.module("ui.bootstrap.datepickerPopup",["ui.bootstrap.datepicker","ui.bootstrap.position"]).value("$datepickerPopupLiteralWarning",!0).constant("uibDatepickerPopupConfig",{altInputFormats:[],appendToBody:!1,clearText:"Clear",closeOnDateSelection:!0,closeText:"Done",currentText:"Today",datepickerPopup:"yyyy-MM-dd",datepickerPopupTemplateUrl:"uib/template/datepickerPopup/popup.html",datepickerTemplateUrl:"uib/template/datepicker/datepicker.html",html5Types:{date:"yyyy-MM-dd","datetime-local":"yyyy-MM-ddTHH:mm:ss.sss",month:"yyyy-MM"},onOpenFocus:!0,showButtonBar:!0,placement:"auto bottom-left"}).controller("UibDatepickerPopupController",["$scope","$element","$attrs","$compile","$log","$parse","$window","$document","$rootScope","$uibPosition","dateFilter","uibDateParser","uibDatepickerPopupConfig","$timeout","uibDatepickerConfig","$datepickerPopupLiteralWarning",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p){function q(b){var c=l.parse(b,w,a.date);if(isNaN(c))for(var d=0;d<I.length;d++)if(c=l.parse(b,I[d],a.date),!isNaN(c))return c;return c}function r(a){if(angular.isNumber(a)&&(a=new Date(a)),!a)return null;if(angular.isDate(a)&&!isNaN(a))return a;if(angular.isString(a)){var b=q(a);if(!isNaN(b))return l.toTimezone(b,J)}return F.$options&&F.$options.allowInvalid?a:void 0}function s(a,b){var d=a||b;return c.ngRequired||d?(angular.isNumber(d)&&(d=new Date(d)),d?angular.isDate(d)&&!isNaN(d)?!0:angular.isString(d)?!isNaN(q(b)):!1:!0):!0}function t(c){if(a.isOpen||!a.disabled){var d=H[0],e=b[0].contains(c.target),f=void 0!==d.contains&&d.contains(c.target);!a.isOpen||e||f||a.$apply(function(){a.isOpen=!1})}}function u(c){27===c.which&&a.isOpen?(c.preventDefault(),c.stopPropagation(),a.$apply(function(){a.isOpen=!1}),b[0].focus()):40!==c.which||a.isOpen||(c.preventDefault(),c.stopPropagation(),a.$apply(function(){a.isOpen=!0}))}function v(){if(a.isOpen){var d=angular.element(H[0].querySelector(".uib-datepicker-popup")),e=c.popupPlacement?c.popupPlacement:m.placement,f=j.positionElements(b,d,e,y);d.css({top:f.top+"px",left:f.left+"px"}),d.hasClass("uib-position-measure")&&d.removeClass("uib-position-measure")}}var w,x,y,z,A,B,C,D,E,F,G,H,I,J,K=!1,L=[];this.init=function(e){if(F=e,G=e.$options,x=angular.isDefined(c.closeOnDateSelection)?a.$parent.$eval(c.closeOnDateSelection):m.closeOnDateSelection,y=angular.isDefined(c.datepickerAppendToBody)?a.$parent.$eval(c.datepickerAppendToBody):m.appendToBody,z=angular.isDefined(c.onOpenFocus)?a.$parent.$eval(c.onOpenFocus):m.onOpenFocus,A=angular.isDefined(c.datepickerPopupTemplateUrl)?c.datepickerPopupTemplateUrl:m.datepickerPopupTemplateUrl,B=angular.isDefined(c.datepickerTemplateUrl)?c.datepickerTemplateUrl:m.datepickerTemplateUrl,I=angular.isDefined(c.altInputFormats)?a.$parent.$eval(c.altInputFormats):m.altInputFormats,a.showButtonBar=angular.isDefined(c.showButtonBar)?a.$parent.$eval(c.showButtonBar):m.showButtonBar,m.html5Types[c.type]?(w=m.html5Types[c.type],K=!0):(w=c.uibDatepickerPopup||m.datepickerPopup,c.$observe("uibDatepickerPopup",function(a,b){var c=a||m.datepickerPopup;if(c!==w&&(w=c,F.$modelValue=null,!w))throw new Error("uibDatepickerPopup must have a date format specified.")})),!w)throw new Error("uibDatepickerPopup must have a date format specified.");if(K&&c.uibDatepickerPopup)throw new Error("HTML5 date input types do not support custom formats.");C=angular.element("<div uib-datepicker-popup-wrap><div uib-datepicker></div></div>"),G?(J=G.timezone,a.ngModelOptions=angular.copy(G),a.ngModelOptions.timezone=null,a.ngModelOptions.updateOnDefault===!0&&(a.ngModelOptions.updateOn=a.ngModelOptions.updateOn?a.ngModelOptions.updateOn+" default":"default"),C.attr("ng-model-options","ngModelOptions")):J=null,C.attr({"ng-model":"date","ng-change":"dateSelection(date)","template-url":A}),D=angular.element(C.children()[0]),D.attr("template-url",B),a.datepickerOptions||(a.datepickerOptions={}),K&&"month"===c.type&&(a.datepickerOptions.datepickerMode="month",a.datepickerOptions.minMode="month"),D.attr("datepicker-options","datepickerOptions"),K?F.$formatters.push(function(b){return a.date=l.fromTimezone(b,J),b}):(F.$$parserName="date",F.$validators.date=s,F.$parsers.unshift(r),F.$formatters.push(function(b){return F.$isEmpty(b)?(a.date=b,b):(a.date=l.fromTimezone(b,J),angular.isNumber(a.date)&&(a.date=new Date(a.date)),l.filter(a.date,w))})),F.$viewChangeListeners.push(function(){a.date=q(F.$viewValue)}),b.on("keydown",u),H=d(C)(a),C.remove(),y?h.find("body").append(H):b.after(H),a.$on("$destroy",function(){for(a.isOpen===!0&&(i.$$phase||a.$apply(function(){a.isOpen=!1})),H.remove(),b.off("keydown",u),h.off("click",t),E&&E.off("scroll",v),angular.element(g).off("resize",v);L.length;)L.shift()()})},a.getText=function(b){return a[b+"Text"]||m[b+"Text"]},a.isDisabled=function(b){"today"===b&&(b=l.fromTimezone(new Date,J));var c={};return angular.forEach(["minDate","maxDate"],function(b){a.datepickerOptions[b]?angular.isDate(a.datepickerOptions[b])?c[b]=l.fromTimezone(new Date(a.datepickerOptions[b]),J):(p&&e.warn("Literal date support has been deprecated, please switch to date object usage"),c[b]=new Date(k(a.datepickerOptions[b],"medium"))):c[b]=null}),a.datepickerOptions&&c.minDate&&a.compare(b,c.minDate)<0||c.maxDate&&a.compare(b,c.maxDate)>0},a.compare=function(a,b){return new Date(a.getFullYear(),a.getMonth(),a.getDate())-new Date(b.getFullYear(),b.getMonth(),b.getDate())},a.dateSelection=function(c){angular.isDefined(c)&&(a.date=c);var d=a.date?l.filter(a.date,w):null;b.val(d),F.$setViewValue(d),x&&(a.isOpen=!1,b[0].focus())},a.keydown=function(c){27===c.which&&(c.stopPropagation(),a.isOpen=!1,b[0].focus())},a.select=function(b,c){if(c.stopPropagation(),"today"===b){var d=new Date;angular.isDate(a.date)?(b=new Date(a.date),b.setFullYear(d.getFullYear(),d.getMonth(),d.getDate())):b=new Date(d.setHours(0,0,0,0))}a.dateSelection(b)},a.close=function(c){c.stopPropagation(),a.isOpen=!1,b[0].focus()},a.disabled=angular.isDefined(c.disabled)||!1,c.ngDisabled&&L.push(a.$parent.$watch(f(c.ngDisabled),function(b){a.disabled=b})),a.$watch("isOpen",function(d){d?a.disabled?a.isOpen=!1:n(function(){v(),z&&a.$broadcast("uib:datepicker.focus"),h.on("click",t);var d=c.popupPlacement?c.popupPlacement:m.placement;y||j.parsePlacement(d)[2]?(E=E||angular.element(j.scrollParent(b)),E&&E.on("scroll",v)):E=null,angular.element(g).on("resize",v)},0,!1):(h.off("click",t),E&&E.off("scroll",v),angular.element(g).off("resize",v))}),a.$on("uib:datepicker.mode",function(){n(v,0,!1)})}]).directive("uibDatepickerPopup",function(){return{require:["ngModel","uibDatepickerPopup"],controller:"UibDatepickerPopupController",scope:{datepickerOptions:"=?",isOpen:"=?",currentText:"@",clearText:"@",closeText:"@"},link:function(a,b,c,d){var e=d[0],f=d[1];f.init(e)}}}).directive("uibDatepickerPopupWrap",function(){return{replace:!0,transclude:!0,templateUrl:function(a,b){return b.templateUrl||"uib/template/datepickerPopup/popup.html"}}}),angular.module("ui.bootstrap.debounce",[]).factory("$$debounce",["$timeout",function(a){return function(b,c){var d;return function(){var e=this,f=Array.prototype.slice.call(arguments);d&&a.cancel(d),d=a(function(){b.apply(e,f)},c)}}}]),angular.module("ui.bootstrap.dropdown",["ui.bootstrap.position"]).constant("uibDropdownConfig",{appendToOpenClass:"uib-dropdown-open",openClass:"open"}).service("uibDropdownService",["$document","$rootScope",function(a,b){var c=null;this.open=function(b,f){c||(a.on("click",d),f.on("keydown",e)),c&&c!==b&&(c.isOpen=!1),c=b},this.close=function(b,f){c===b&&(c=null,a.off("click",d),f.off("keydown",e))};var d=function(a){if(c&&!(a&&"disabled"===c.getAutoClose()||a&&3===a.which)){var d=c.getToggleElement();if(!(a&&d&&d[0].contains(a.target))){var e=c.getDropdownElement();a&&"outsideClick"===c.getAutoClose()&&e&&e[0].contains(a.target)||(c.isOpen=!1,b.$$phase||c.$apply())}}},e=function(a){27===a.which?(a.stopPropagation(),c.focusToggleElement(),d()):c.isKeynavEnabled()&&-1!==[38,40].indexOf(a.which)&&c.isOpen&&(a.preventDefault(),a.stopPropagation(),c.focusDropdownEntry(a.which))}}]).controller("UibDropdownController",["$scope","$element","$attrs","$parse","uibDropdownConfig","uibDropdownService","$animate","$uibPosition","$document","$compile","$templateRequest",function(a,b,c,d,e,f,g,h,i,j,k){var l,m,n=this,o=a.$new(),p=e.appendToOpenClass,q=e.openClass,r=angular.noop,s=c.onToggle?d(c.onToggle):angular.noop,t=!1,u=null,v=!1,w=i.find("body");b.addClass("dropdown"),this.init=function(){if(c.isOpen&&(m=d(c.isOpen),r=m.assign,a.$watch(m,function(a){o.isOpen=!!a})),angular.isDefined(c.dropdownAppendTo)){var e=d(c.dropdownAppendTo)(o);e&&(u=angular.element(e))}t=angular.isDefined(c.dropdownAppendToBody),v=angular.isDefined(c.keyboardNav),t&&!u&&(u=w),u&&n.dropdownMenu&&(u.append(n.dropdownMenu),b.on("$destroy",function(){n.dropdownMenu.remove()}))},this.toggle=function(a){return o.isOpen=arguments.length?!!a:!o.isOpen,angular.isFunction(r)&&r(o,o.isOpen),o.isOpen},this.isOpen=function(){return o.isOpen},o.getToggleElement=function(){return n.toggleElement},o.getAutoClose=function(){return c.autoClose||"always"},o.getElement=function(){return b},o.isKeynavEnabled=function(){return v},o.focusDropdownEntry=function(a){var c=n.dropdownMenu?angular.element(n.dropdownMenu).find("a"):b.find("ul").eq(0).find("a");switch(a){case 40:angular.isNumber(n.selectedOption)?n.selectedOption=n.selectedOption===c.length-1?n.selectedOption:n.selectedOption+1:n.selectedOption=0;break;case 38:angular.isNumber(n.selectedOption)?n.selectedOption=0===n.selectedOption?0:n.selectedOption-1:n.selectedOption=c.length-1}c[n.selectedOption].focus()},o.getDropdownElement=function(){return n.dropdownMenu},o.focusToggleElement=function(){n.toggleElement&&n.toggleElement[0].focus()},o.$watch("isOpen",function(c,d){if(u&&n.dropdownMenu){var e,i,m=h.positionElements(b,n.dropdownMenu,"bottom-left",!0);if(e={top:m.top+"px",display:c?"block":"none"},i=n.dropdownMenu.hasClass("dropdown-menu-right"),i?(e.left="auto",e.right=window.innerWidth-(m.left+b.prop("offsetWidth"))+"px"):(e.left=m.left+"px",e.right="auto"),!t){var v=h.offset(u);e.top=m.top-v.top+"px",i?e.right=window.innerWidth-(m.left-v.left+b.prop("offsetWidth"))+"px":e.left=m.left-v.left+"px"}n.dropdownMenu.css(e)}var w=u?u:b,x=w.hasClass(u?p:q);if(x===!c&&g[c?"addClass":"removeClass"](w,u?p:q).then(function(){angular.isDefined(c)&&c!==d&&s(a,{open:!!c})}),c)n.dropdownMenuTemplateUrl&&k(n.dropdownMenuTemplateUrl).then(function(a){l=o.$new(),j(a.trim())(l,function(a){var b=a;n.dropdownMenu.replaceWith(b),n.dropdownMenu=b})}),o.focusToggleElement(),f.open(o,b);else{if(n.dropdownMenuTemplateUrl){l&&l.$destroy();var y=angular.element('<ul class="dropdown-menu"></ul>');n.dropdownMenu.replaceWith(y),n.dropdownMenu=y}f.close(o,b),n.selectedOption=null}angular.isFunction(r)&&r(a,c)})}]).directive("uibDropdown",function(){return{controller:"UibDropdownController",link:function(a,b,c,d){d.init()}}}).directive("uibDropdownMenu",function(){return{restrict:"A",require:"?^uibDropdown",link:function(a,b,c,d){if(d&&!angular.isDefined(c.dropdownNested)){b.addClass("dropdown-menu");var e=c.templateUrl;e&&(d.dropdownMenuTemplateUrl=e),d.dropdownMenu||(d.dropdownMenu=b)}}}}).directive("uibDropdownToggle",function(){return{require:"?^uibDropdown",link:function(a,b,c,d){if(d){b.addClass("dropdown-toggle"),d.toggleElement=b;var e=function(e){e.preventDefault(),b.hasClass("disabled")||c.disabled||a.$apply(function(){d.toggle()})};b.bind("click",e),b.attr({"aria-haspopup":!0,"aria-expanded":!1}),a.$watch(d.isOpen,function(a){b.attr("aria-expanded",!!a)}),a.$on("$destroy",function(){b.unbind("click",e)})}}}}),angular.module("ui.bootstrap.stackedMap",[]).factory("$$stackedMap",function(){return{createNew:function(){var a=[];return{add:function(b,c){a.push({key:b,value:c})},get:function(b){for(var c=0;c<a.length;c++)if(b===a[c].key)return a[c]},keys:function(){for(var b=[],c=0;c<a.length;c++)b.push(a[c].key);return b},top:function(){return a[a.length-1]},remove:function(b){for(var c=-1,d=0;d<a.length;d++)if(b===a[d].key){c=d;break}return a.splice(c,1)[0]},removeTop:function(){return a.splice(a.length-1,1)[0]},length:function(){return a.length}}}}}),angular.module("ui.bootstrap.modal",["ui.bootstrap.stackedMap","ui.bootstrap.position"]).factory("$$multiMap",function(){return{createNew:function(){var a={};return{entries:function(){return Object.keys(a).map(function(b){return{key:b,value:a[b]}})},get:function(b){return a[b]},hasKey:function(b){return!!a[b]},keys:function(){return Object.keys(a)},put:function(b,c){a[b]||(a[b]=[]),a[b].push(c)},remove:function(b,c){var d=a[b];if(d){var e=d.indexOf(c);-1!==e&&d.splice(e,1),d.length||delete a[b]}}}}}}).provider("$uibResolve",function(){var a=this;this.resolver=null,this.setResolver=function(a){this.resolver=a},this.$get=["$injector","$q",function(b,c){var d=a.resolver?b.get(a.resolver):null;return{resolve:function(a,e,f,g){if(d)return d.resolve(a,e,f,g);var h=[];return angular.forEach(a,function(a){angular.isFunction(a)||angular.isArray(a)?h.push(c.resolve(b.invoke(a))):angular.isString(a)?h.push(c.resolve(b.get(a))):h.push(c.resolve(a))}),c.all(h).then(function(b){var c={},d=0;return angular.forEach(a,function(a,e){c[e]=b[d++]}),c})}}}]}).directive("uibModalBackdrop",["$animate","$injector","$uibModalStack",function(a,b,c){function d(b,d,e){e.modalInClass&&(a.addClass(d,e.modalInClass),b.$on(c.NOW_CLOSING_EVENT,function(c,f){var g=f();b.modalOptions.animation?a.removeClass(d,e.modalInClass).then(g):g()}))}return{replace:!0,templateUrl:"uib/template/modal/backdrop.html",compile:function(a,b){return a.addClass(b.backdropClass),d}}}]).directive("uibModalWindow",["$uibModalStack","$q","$animateCss","$document",function(a,b,c,d){return{scope:{index:"@"},replace:!0,transclude:!0,templateUrl:function(a,b){return b.templateUrl||"uib/template/modal/window.html"},link:function(e,f,g){f.addClass(g.windowClass||""),f.addClass(g.windowTopClass||""),e.size=g.size,e.close=function(b){var c=a.getTop();c&&c.value.backdrop&&"static"!==c.value.backdrop&&b.target===b.currentTarget&&(b.preventDefault(),b.stopPropagation(),a.dismiss(c.key,"backdrop click"))},f.on("click",e.close),e.$isRendered=!0;var h=b.defer();g.$observe("modalRender",function(a){"true"===a&&h.resolve()}),h.promise.then(function(){var h=null;g.modalInClass&&(h=c(f,{addClass:g.modalInClass}).start(),e.$on(a.NOW_CLOSING_EVENT,function(a,b){var d=b();c(f,{removeClass:g.modalInClass}).start().then(d)})),b.when(h).then(function(){var b=a.getTop();if(b&&a.modalRendered(b.key),!d[0].activeElement||!f[0].contains(d[0].activeElement)){var c=f[0].querySelector("[autofocus]");c?c.focus():f[0].focus()}})})}}}]).directive("uibModalAnimationClass",function(){return{compile:function(a,b){b.modalAnimation&&a.addClass(b.uibModalAnimationClass)}}}).directive("uibModalTransclude",function(){return{link:function(a,b,c,d,e){e(a.$parent,function(a){b.empty(),b.append(a)})}}}).factory("$uibModalStack",["$animate","$animateCss","$document","$compile","$rootScope","$q","$$multiMap","$$stackedMap","$uibPosition",function(a,b,c,d,e,f,g,h,i){function j(a){return!!(a.offsetWidth||a.offsetHeight||a.getClientRects().length)}function k(){for(var a=-1,b=v.keys(),c=0;c<b.length;c++)v.get(b[c]).value.backdrop&&(a=c);return a>-1&&y>a&&(a=y),a}function l(a,b){var c=v.get(a).value,d=c.appendTo;v.remove(a),z=v.top(),z&&(y=parseInt(z.value.modalDomEl.attr("index"),10)),o(c.modalDomEl,c.modalScope,function(){var b=c.openedClass||u;w.remove(b,a);var e=w.hasKey(b);d.toggleClass(b,e),!e&&t&&t.heightOverflow&&t.scrollbarWidth&&(t.originalRight?d.css({paddingRight:t.originalRight+"px"}):d.css({paddingRight:""}),t=null),m(!0)},c.closedDeferred),n(),b&&b.focus?b.focus():d.focus&&d.focus()}function m(a){var b;v.length()>0&&(b=v.top().value,b.modalDomEl.toggleClass(b.windowTopClass||"",a))}function n(){if(r&&-1===k()){var a=s;o(r,s,function(){a=null}),r=void 0,s=void 0}}function o(b,c,d,e){function g(){g.done||(g.done=!0,a.leave(b).then(function(){b.remove(),e&&e.resolve()}),c.$destroy(),d&&d())}var h,i=null,j=function(){return h||(h=f.defer(),i=h.promise),function(){h.resolve()}};return c.$broadcast(x.NOW_CLOSING_EVENT,j),f.when(i).then(g)}function p(a){if(a.isDefaultPrevented())return a;var b=v.top();if(b)switch(a.which){case 27:b.value.keyboard&&(a.preventDefault(),e.$apply(function(){x.dismiss(b.key,"escape key press")}));break;case 9:var c=x.loadFocusElementList(b),d=!1;a.shiftKey?(x.isFocusInFirstItem(a,c)||x.isModalFocused(a,b))&&(d=x.focusLastFocusableElement(c)):x.isFocusInLastItem(a,c)&&(d=x.focusFirstFocusableElement(c)),d&&(a.preventDefault(),a.stopPropagation())}}function q(a,b,c){return!a.value.modalScope.$broadcast("modal.closing",b,c).defaultPrevented}var r,s,t,u="modal-open",v=h.createNew(),w=g.createNew(),x={NOW_CLOSING_EVENT:"modal.stack.now-closing"},y=0,z=null,A="a[href], area[href], input:not([disabled]), button:not([disabled]),select:not([disabled]), textarea:not([disabled]), iframe, object, embed, *[tabindex], *[contenteditable=true]";return e.$watch(k,function(a){s&&(s.index=a)}),c.on("keydown",p),e.$on("$destroy",function(){c.off("keydown",p)}),x.open=function(b,f){var g=c[0].activeElement,h=f.openedClass||u;m(!1),z=v.top(),v.add(b,{deferred:f.deferred,renderDeferred:f.renderDeferred,closedDeferred:f.closedDeferred,modalScope:f.scope,backdrop:f.backdrop,keyboard:f.keyboard,openedClass:f.openedClass,windowTopClass:f.windowTopClass,animation:f.animation,appendTo:f.appendTo}),w.put(h,b);var j=f.appendTo,l=k();if(!j.length)throw new Error("appendTo element not found. Make sure that the element passed is in DOM.");l>=0&&!r&&(s=e.$new(!0),s.modalOptions=f,s.index=l,r=angular.element('<div uib-modal-backdrop="modal-backdrop"></div>'),r.attr("backdrop-class",f.backdropClass),f.animation&&r.attr("modal-animation","true"),d(r)(s),a.enter(r,j),t=i.scrollbarPadding(j),t.heightOverflow&&t.scrollbarWidth&&j.css({paddingRight:t.right+"px"})),y=z?parseInt(z.value.modalDomEl.attr("index"),10)+1:0;var n=angular.element('<div uib-modal-window="modal-window"></div>');n.attr({"template-url":f.windowTemplateUrl,"window-class":f.windowClass,"window-top-class":f.windowTopClass,size:f.size,index:y,animate:"animate"}).html(f.content),f.animation&&n.attr("modal-animation","true"),j.addClass(h),a.enter(d(n)(f.scope),j),v.top().value.modalDomEl=n,v.top().value.modalOpener=g},x.close=function(a,b){var c=v.get(a);return c&&q(c,b,!0)?(c.value.modalScope.$$uibDestructionScheduled=!0,c.value.deferred.resolve(b),l(a,c.value.modalOpener),!0):!c},x.dismiss=function(a,b){var c=v.get(a);return c&&q(c,b,!1)?(c.value.modalScope.$$uibDestructionScheduled=!0,c.value.deferred.reject(b),l(a,c.value.modalOpener),!0):!c},x.dismissAll=function(a){for(var b=this.getTop();b&&this.dismiss(b.key,a);)b=this.getTop()},x.getTop=function(){return v.top()},x.modalRendered=function(a){var b=v.get(a);b&&b.value.renderDeferred.resolve()},x.focusFirstFocusableElement=function(a){return a.length>0?(a[0].focus(),!0):!1},x.focusLastFocusableElement=function(a){return a.length>0?(a[a.length-1].focus(),!0):!1},x.isModalFocused=function(a,b){if(a&&b){var c=b.value.modalDomEl;if(c&&c.length)return(a.target||a.srcElement)===c[0]}return!1},x.isFocusInFirstItem=function(a,b){return b.length>0?(a.target||a.srcElement)===b[0]:!1},x.isFocusInLastItem=function(a,b){return b.length>0?(a.target||a.srcElement)===b[b.length-1]:!1},x.loadFocusElementList=function(a){if(a){var b=a.value.modalDomEl;if(b&&b.length){var c=b[0].querySelectorAll(A);return c?Array.prototype.filter.call(c,function(a){return j(a)}):c}}},x}]).provider("$uibModal",function(){var a={options:{animation:!0,backdrop:!0,keyboard:!0},$get:["$rootScope","$q","$document","$templateRequest","$controller","$uibResolve","$uibModalStack",function(b,c,d,e,f,g,h){function i(a){return a.template?c.when(a.template):e(angular.isFunction(a.templateUrl)?a.templateUrl():a.templateUrl)}var j={},k=null;return j.getPromiseChain=function(){return k},j.open=function(e){function j(){return r}var l=c.defer(),m=c.defer(),n=c.defer(),o=c.defer(),p={result:l.promise,opened:m.promise,closed:n.promise,rendered:o.promise,close:function(a){return h.close(p,a)},dismiss:function(a){return h.dismiss(p,a)}};if(e=angular.extend({},a.options,e),e.resolve=e.resolve||{},e.appendTo=e.appendTo||d.find("body").eq(0),!e.template&&!e.templateUrl)throw new Error("One of template or templateUrl options is required.");var q,r=c.all([i(e),g.resolve(e.resolve,{},null,null)]);return q=k=c.all([k]).then(j,j).then(function(a){var c=e.scope||b,d=c.$new();d.$close=p.close,d.$dismiss=p.dismiss,d.$on("$destroy",function(){d.$$uibDestructionScheduled||d.$dismiss("$uibUnscheduledDestruction")});var g,i,j={};e.controller&&(j.$scope=d,j.$uibModalInstance=p,angular.forEach(a[1],function(a,b){j[b]=a}),i=f(e.controller,j,!0),e.controllerAs?(g=i.instance,e.bindToController&&(g.$close=d.$close,g.$dismiss=d.$dismiss,angular.extend(g,c)),g=i(),d[e.controllerAs]=g):g=i(),angular.isFunction(g.$onInit)&&g.$onInit()),h.open(p,{scope:d,deferred:l,renderDeferred:o,closedDeferred:n,content:a[0],animation:e.animation,backdrop:e.backdrop,keyboard:e.keyboard,backdropClass:e.backdropClass,windowTopClass:e.windowTopClass,windowClass:e.windowClass,windowTemplateUrl:e.windowTemplateUrl,size:e.size,openedClass:e.openedClass,appendTo:e.appendTo}),m.resolve(!0)},function(a){m.reject(a),l.reject(a)})["finally"](function(){k===q&&(k=null)}),p},j}]};return a}),angular.module("ui.bootstrap.paging",[]).factory("uibPaging",["$parse",function(a){return{create:function(b,c,d){b.setNumPages=d.numPages?a(d.numPages).assign:angular.noop,b.ngModelCtrl={$setViewValue:angular.noop},b._watchers=[],b.init=function(a,e){b.ngModelCtrl=a,b.config=e,a.$render=function(){b.render()},d.itemsPerPage?b._watchers.push(c.$parent.$watch(d.itemsPerPage,function(a){b.itemsPerPage=parseInt(a,10),c.totalPages=b.calculateTotalPages(),b.updatePage()})):b.itemsPerPage=e.itemsPerPage,c.$watch("totalItems",function(a,d){(angular.isDefined(a)||a!==d)&&(c.totalPages=b.calculateTotalPages(),b.updatePage())})},b.calculateTotalPages=function(){var a=b.itemsPerPage<1?1:Math.ceil(c.totalItems/b.itemsPerPage);return Math.max(a||0,1)},b.render=function(){c.page=parseInt(b.ngModelCtrl.$viewValue,10)||1},c.selectPage=function(a,d){d&&d.preventDefault();var e=!c.ngDisabled||!d;e&&c.page!==a&&a>0&&a<=c.totalPages&&(d&&d.target&&d.target.blur(),b.ngModelCtrl.$setViewValue(a),b.ngModelCtrl.$render())},c.getText=function(a){return c[a+"Text"]||b.config[a+"Text"]},c.noPrevious=function(){return 1===c.page},c.noNext=function(){return c.page===c.totalPages},b.updatePage=function(){b.setNumPages(c.$parent,c.totalPages),c.page>c.totalPages?c.selectPage(c.totalPages):b.ngModelCtrl.$render()},c.$on("$destroy",function(){for(;b._watchers.length;)b._watchers.shift()()})}}}]),angular.module("ui.bootstrap.pager",["ui.bootstrap.paging"]).controller("UibPagerController",["$scope","$attrs","uibPaging","uibPagerConfig",function(a,b,c,d){a.align=angular.isDefined(b.align)?a.$parent.$eval(b.align):d.align,c.create(this,a,b)}]).constant("uibPagerConfig",{itemsPerPage:10,previousText:"Β« Previous",nextText:"Next Β»",align:!0}).directive("uibPager",["uibPagerConfig",function(a){return{scope:{totalItems:"=",previousText:"@",nextText:"@",ngDisabled:"="},require:["uibPager","?ngModel"],controller:"UibPagerController",controllerAs:"pager",templateUrl:function(a,b){return b.templateUrl||"uib/template/pager/pager.html"},replace:!0,link:function(b,c,d,e){var f=e[0],g=e[1];g&&f.init(g,a)}}}]),angular.module("ui.bootstrap.pagination",["ui.bootstrap.paging"]).controller("UibPaginationController",["$scope","$attrs","$parse","uibPaging","uibPaginationConfig",function(a,b,c,d,e){function f(a,b,c){return{number:a,text:b,active:c}}function g(a,b){var c=[],d=1,e=b,g=angular.isDefined(i)&&b>i;g&&(j?(d=Math.max(a-Math.floor(i/2),1),e=d+i-1,e>b&&(e=b,d=e-i+1)):(d=(Math.ceil(a/i)-1)*i+1,e=Math.min(d+i-1,b)));for(var h=d;e>=h;h++){var n=f(h,m(h),h===a);c.push(n)}if(g&&i>0&&(!j||k||l)){if(d>1){if(!l||d>3){var o=f(d-1,"...",!1);c.unshift(o)}if(l){if(3===d){var p=f(2,"2",!1);c.unshift(p)}var q=f(1,"1",!1);c.unshift(q)}}if(b>e){if(!l||b-2>e){var r=f(e+1,"...",!1);c.push(r)}if(l){if(e===b-2){var s=f(b-1,b-1,!1);c.push(s)}var t=f(b,b,!1);c.push(t)}}}return c}var h=this,i=angular.isDefined(b.maxSize)?a.$parent.$eval(b.maxSize):e.maxSize,j=angular.isDefined(b.rotate)?a.$parent.$eval(b.rotate):e.rotate,k=angular.isDefined(b.forceEllipses)?a.$parent.$eval(b.forceEllipses):e.forceEllipses,l=angular.isDefined(b.boundaryLinkNumbers)?a.$parent.$eval(b.boundaryLinkNumbers):e.boundaryLinkNumbers,m=angular.isDefined(b.pageLabel)?function(c){return a.$parent.$eval(b.pageLabel,{$page:c})}:angular.identity;a.boundaryLinks=angular.isDefined(b.boundaryLinks)?a.$parent.$eval(b.boundaryLinks):e.boundaryLinks,a.directionLinks=angular.isDefined(b.directionLinks)?a.$parent.$eval(b.directionLinks):e.directionLinks,d.create(this,a,b),b.maxSize&&h._watchers.push(a.$parent.$watch(c(b.maxSize),function(a){i=parseInt(a,10),h.render()}));var n=this.render;this.render=function(){n(),a.page>0&&a.page<=a.totalPages&&(a.pages=g(a.page,a.totalPages))}}]).constant("uibPaginationConfig",{itemsPerPage:10,boundaryLinks:!1,boundaryLinkNumbers:!1,directionLinks:!0,firstText:"First",previousText:"Previous",nextText:"Next",lastText:"Last",rotate:!0,forceEllipses:!1}).directive("uibPagination",["$parse","uibPaginationConfig",function(a,b){return{scope:{totalItems:"=",firstText:"@",previousText:"@",nextText:"@",lastText:"@",ngDisabled:"="},require:["uibPagination","?ngModel"],controller:"UibPaginationController",controllerAs:"pagination",templateUrl:function(a,b){return b.templateUrl||"uib/template/pagination/pagination.html"},replace:!0,link:function(a,c,d,e){var f=e[0],g=e[1];g&&f.init(g,b)}}}]),angular.module("ui.bootstrap.tooltip",["ui.bootstrap.position","ui.bootstrap.stackedMap"]).provider("$uibTooltip",function(){function a(a){var b=/[A-Z]/g,c="-";return a.replace(b,function(a,b){return(b?c:"")+a.toLowerCase()})}var b={placement:"top",placementClassPrefix:"",animation:!0,popupDelay:0,popupCloseDelay:0,useContentExp:!1},c={mouseenter:"mouseleave",click:"click",outsideClick:"outsideClick",focus:"blur",none:""},d={};this.options=function(a){angular.extend(d,a)},this.setTriggers=function(a){angular.extend(c,a)},this.$get=["$window","$compile","$timeout","$document","$uibPosition","$interpolate","$rootScope","$parse","$$stackedMap",function(e,f,g,h,i,j,k,l,m){function n(a){if(27===a.which){var b=o.top();b&&(b.value.close(),o.removeTop(),b=null)}}var o=m.createNew();return h.on("keypress",n),k.$on("$destroy",function(){h.off("keypress",n)}),function(e,k,m,n){function p(a){var b=(a||n.trigger||m).split(" "),d=b.map(function(a){return c[a]||a});return{show:b,hide:d}}n=angular.extend({},b,d,n);var q=a(e),r=j.startSymbol(),s=j.endSymbol(),t="<div "+q+'-popup uib-title="'+r+"title"+s+'" '+(n.useContentExp?'content-exp="contentExp()" ':'content="'+r+"content"+s+'" ')+'placement="'+r+"placement"+s+'" popup-class="'+r+"popupClass"+s+'" animation="animation" is-open="isOpen" origin-scope="origScope" class="uib-position-measure"></div>';
1766 },scrollParent:function(c,d,f){c=this.getRawNode(c);var g=d?e.hidden:e.normal,h=a[0].documentElement,i=b.getComputedStyle(c);if(f&&g.test(i.overflow+i.overflowY+i.overflowX))return c;var j="absolute"===i.position,k=c.parentElement||h;if(k===h||"fixed"===i.position)return h;for(;k.parentElement&&k!==h;){var l=b.getComputedStyle(k);if(j&&"static"!==l.position&&(j=!1),!j&&g.test(l.overflow+l.overflowY+l.overflowX))break;k=k.parentElement}return k},position:function(c,d){c=this.getRawNode(c);var e=this.offset(c);if(d){var f=b.getComputedStyle(c);e.top-=this.parseStyle(f.marginTop),e.left-=this.parseStyle(f.marginLeft)}var g=this.offsetParent(c),h={top:0,left:0};return g!==a[0].documentElement&&(h=this.offset(g),h.top+=g.clientTop-g.scrollTop,h.left+=g.clientLeft-g.scrollLeft),{width:Math.round(angular.isNumber(e.width)?e.width:c.offsetWidth),height:Math.round(angular.isNumber(e.height)?e.height:c.offsetHeight),top:Math.round(e.top-h.top),left:Math.round(e.left-h.left)}},offset:function(c){c=this.getRawNode(c);var d=c.getBoundingClientRect();return{width:Math.round(angular.isNumber(d.width)?d.width:c.offsetWidth),height:Math.round(angular.isNumber(d.height)?d.height:c.offsetHeight),top:Math.round(d.top+(b.pageYOffset||a[0].documentElement.scrollTop)),left:Math.round(d.left+(b.pageXOffset||a[0].documentElement.scrollLeft))}},viewportOffset:function(c,d,e){c=this.getRawNode(c),e=e!==!1;var f=c.getBoundingClientRect(),g={top:0,left:0,bottom:0,right:0},h=d?a[0].documentElement:this.scrollParent(c),i=h.getBoundingClientRect();if(g.top=i.top+h.clientTop,g.left=i.left+h.clientLeft,h===a[0].documentElement&&(g.top+=b.pageYOffset,g.left+=b.pageXOffset),g.bottom=g.top+h.clientHeight,g.right=g.left+h.clientWidth,e){var j=b.getComputedStyle(h);g.top+=this.parseStyle(j.paddingTop),g.bottom-=this.parseStyle(j.paddingBottom),g.left+=this.parseStyle(j.paddingLeft),g.right-=this.parseStyle(j.paddingRight)}return{top:Math.round(f.top-g.top),bottom:Math.round(g.bottom-f.bottom),left:Math.round(f.left-g.left),right:Math.round(g.right-f.right)}},parsePlacement:function(a){var b=f.auto.test(a);return b&&(a=a.replace(f.auto,"")),a=a.split("-"),a[0]=a[0]||"top",f.primary.test(a[0])||(a[0]="top"),a[1]=a[1]||"center",f.secondary.test(a[1])||(a[1]="center"),b?a[2]=!0:a[2]=!1,a},positionElements:function(a,c,d,e){a=this.getRawNode(a),c=this.getRawNode(c);var g=angular.isDefined(c.offsetWidth)?c.offsetWidth:c.prop("offsetWidth"),h=angular.isDefined(c.offsetHeight)?c.offsetHeight:c.prop("offsetHeight");d=this.parsePlacement(d);var i=e?this.offset(a):this.position(a),j={top:0,left:0,placement:""};if(d[2]){var k=this.viewportOffset(a,e),l=b.getComputedStyle(c),m={width:g+Math.round(Math.abs(this.parseStyle(l.marginLeft)+this.parseStyle(l.marginRight))),height:h+Math.round(Math.abs(this.parseStyle(l.marginTop)+this.parseStyle(l.marginBottom)))};if(d[0]="top"===d[0]&&m.height>k.top&&m.height<=k.bottom?"bottom":"bottom"===d[0]&&m.height>k.bottom&&m.height<=k.top?"top":"left"===d[0]&&m.width>k.left&&m.width<=k.right?"right":"right"===d[0]&&m.width>k.right&&m.width<=k.left?"left":d[0],d[1]="top"===d[1]&&m.height-i.height>k.bottom&&m.height-i.height<=k.top?"bottom":"bottom"===d[1]&&m.height-i.height>k.top&&m.height-i.height<=k.bottom?"top":"left"===d[1]&&m.width-i.width>k.right&&m.width-i.width<=k.left?"right":"right"===d[1]&&m.width-i.width>k.left&&m.width-i.width<=k.right?"left":d[1],"center"===d[1])if(f.vertical.test(d[0])){var n=i.width/2-g/2;k.left+n<0&&m.width-i.width<=k.right?d[1]="left":k.right+n<0&&m.width-i.width<=k.left&&(d[1]="right")}else{var o=i.height/2-m.height/2;k.top+o<0&&m.height-i.height<=k.bottom?d[1]="top":k.bottom+o<0&&m.height-i.height<=k.top&&(d[1]="bottom")}}switch(d[0]){case"top":j.top=i.top-h;break;case"bottom":j.top=i.top+i.height;break;case"left":j.left=i.left-g;break;case"right":j.left=i.left+i.width}switch(d[1]){case"top":j.top=i.top;break;case"bottom":j.top=i.top+i.height-h;break;case"left":j.left=i.left;break;case"right":j.left=i.left+i.width-g;break;case"center":f.vertical.test(d[0])?j.left=i.left+i.width/2-g/2:j.top=i.top+i.height/2-h/2}return j.top=Math.round(j.top),j.left=Math.round(j.left),j.placement="center"===d[1]?d[0]:d[0]+"-"+d[1],j},positionArrow:function(a,c){a=this.getRawNode(a);var d=a.querySelector(".tooltip-inner, .popover-inner");if(d){var e=angular.element(d).hasClass("tooltip-inner"),g=e?a.querySelector(".tooltip-arrow"):a.querySelector(".arrow");if(g){var h={top:"",bottom:"",left:"",right:""};if(c=this.parsePlacement(c),"center"===c[1])return void angular.element(g).css(h);var i="border-"+c[0]+"-width",j=b.getComputedStyle(g)[i],k="border-";k+=f.vertical.test(c[0])?c[0]+"-"+c[1]:c[1]+"-"+c[0],k+="-radius";var l=b.getComputedStyle(e?d:a)[k];switch(c[0]){case"top":h.bottom=e?"0":"-"+j;break;case"bottom":h.top=e?"0":"-"+j;break;case"left":h.right=e?"0":"-"+j;break;case"right":h.left=e?"0":"-"+j}h[c[1]]=l,angular.element(g).css(h)}}}}}]),angular.module("ui.bootstrap.datepickerPopup",["ui.bootstrap.datepicker","ui.bootstrap.position"]).value("$datepickerPopupLiteralWarning",!0).constant("uibDatepickerPopupConfig",{altInputFormats:[],appendToBody:!1,clearText:"Clear",closeOnDateSelection:!0,closeText:"Done",currentText:"Today",datepickerPopup:"yyyy-MM-dd",datepickerPopupTemplateUrl:"uib/template/datepickerPopup/popup.html",datepickerTemplateUrl:"uib/template/datepicker/datepicker.html",html5Types:{date:"yyyy-MM-dd","datetime-local":"yyyy-MM-ddTHH:mm:ss.sss",month:"yyyy-MM"},onOpenFocus:!0,showButtonBar:!0,placement:"auto bottom-left"}).controller("UibDatepickerPopupController",["$scope","$element","$attrs","$compile","$log","$parse","$window","$document","$rootScope","$uibPosition","dateFilter","uibDateParser","uibDatepickerPopupConfig","$timeout","uibDatepickerConfig","$datepickerPopupLiteralWarning",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p){function q(b){var c=l.parse(b,w,a.date);if(isNaN(c))for(var d=0;d<I.length;d++)if(c=l.parse(b,I[d],a.date),!isNaN(c))return c;return c}function r(a){if(angular.isNumber(a)&&(a=new Date(a)),!a)return null;if(angular.isDate(a)&&!isNaN(a))return a;if(angular.isString(a)){var b=q(a);if(!isNaN(b))return l.toTimezone(b,J)}return F.$options&&F.$options.allowInvalid?a:void 0}function s(a,b){var d=a||b;return c.ngRequired||d?(angular.isNumber(d)&&(d=new Date(d)),d?angular.isDate(d)&&!isNaN(d)?!0:angular.isString(d)?!isNaN(q(b)):!1:!0):!0}function t(c){if(a.isOpen||!a.disabled){var d=H[0],e=b[0].contains(c.target),f=void 0!==d.contains&&d.contains(c.target);!a.isOpen||e||f||a.$apply(function(){a.isOpen=!1})}}function u(c){27===c.which&&a.isOpen?(c.preventDefault(),c.stopPropagation(),a.$apply(function(){a.isOpen=!1}),b[0].focus()):40!==c.which||a.isOpen||(c.preventDefault(),c.stopPropagation(),a.$apply(function(){a.isOpen=!0}))}function v(){if(a.isOpen){var d=angular.element(H[0].querySelector(".uib-datepicker-popup")),e=c.popupPlacement?c.popupPlacement:m.placement,f=j.positionElements(b,d,e,y);d.css({top:f.top+"px",left:f.left+"px"}),d.hasClass("uib-position-measure")&&d.removeClass("uib-position-measure")}}var w,x,y,z,A,B,C,D,E,F,G,H,I,J,K=!1,L=[];this.init=function(e){if(F=e,G=e.$options,x=angular.isDefined(c.closeOnDateSelection)?a.$parent.$eval(c.closeOnDateSelection):m.closeOnDateSelection,y=angular.isDefined(c.datepickerAppendToBody)?a.$parent.$eval(c.datepickerAppendToBody):m.appendToBody,z=angular.isDefined(c.onOpenFocus)?a.$parent.$eval(c.onOpenFocus):m.onOpenFocus,A=angular.isDefined(c.datepickerPopupTemplateUrl)?c.datepickerPopupTemplateUrl:m.datepickerPopupTemplateUrl,B=angular.isDefined(c.datepickerTemplateUrl)?c.datepickerTemplateUrl:m.datepickerTemplateUrl,I=angular.isDefined(c.altInputFormats)?a.$parent.$eval(c.altInputFormats):m.altInputFormats,a.showButtonBar=angular.isDefined(c.showButtonBar)?a.$parent.$eval(c.showButtonBar):m.showButtonBar,m.html5Types[c.type]?(w=m.html5Types[c.type],K=!0):(w=c.uibDatepickerPopup||m.datepickerPopup,c.$observe("uibDatepickerPopup",function(a,b){var c=a||m.datepickerPopup;if(c!==w&&(w=c,F.$modelValue=null,!w))throw new Error("uibDatepickerPopup must have a date format specified.")})),!w)throw new Error("uibDatepickerPopup must have a date format specified.");if(K&&c.uibDatepickerPopup)throw new Error("HTML5 date input types do not support custom formats.");C=angular.element("<div uib-datepicker-popup-wrap><div uib-datepicker></div></div>"),G?(J=G.timezone,a.ngModelOptions=angular.copy(G),a.ngModelOptions.timezone=null,a.ngModelOptions.updateOnDefault===!0&&(a.ngModelOptions.updateOn=a.ngModelOptions.updateOn?a.ngModelOptions.updateOn+" default":"default"),C.attr("ng-model-options","ngModelOptions")):J=null,C.attr({"ng-model":"date","ng-change":"dateSelection(date)","template-url":A}),D=angular.element(C.children()[0]),D.attr("template-url",B),a.datepickerOptions||(a.datepickerOptions={}),K&&"month"===c.type&&(a.datepickerOptions.datepickerMode="month",a.datepickerOptions.minMode="month"),D.attr("datepicker-options","datepickerOptions"),K?F.$formatters.push(function(b){return a.date=l.fromTimezone(b,J),b}):(F.$$parserName="date",F.$validators.date=s,F.$parsers.unshift(r),F.$formatters.push(function(b){return F.$isEmpty(b)?(a.date=b,b):(a.date=l.fromTimezone(b,J),angular.isNumber(a.date)&&(a.date=new Date(a.date)),l.filter(a.date,w))})),F.$viewChangeListeners.push(function(){a.date=q(F.$viewValue)}),b.on("keydown",u),H=d(C)(a),C.remove(),y?h.find("body").append(H):b.after(H),a.$on("$destroy",function(){for(a.isOpen===!0&&(i.$$phase||a.$apply(function(){a.isOpen=!1})),H.remove(),b.off("keydown",u),h.off("click",t),E&&E.off("scroll",v),angular.element(g).off("resize",v);L.length;)L.shift()()})},a.getText=function(b){return a[b+"Text"]||m[b+"Text"]},a.isDisabled=function(b){"today"===b&&(b=l.fromTimezone(new Date,J));var c={};return angular.forEach(["minDate","maxDate"],function(b){a.datepickerOptions[b]?angular.isDate(a.datepickerOptions[b])?c[b]=l.fromTimezone(new Date(a.datepickerOptions[b]),J):(p&&e.warn("Literal date support has been deprecated, please switch to date object usage"),c[b]=new Date(k(a.datepickerOptions[b],"medium"))):c[b]=null}),a.datepickerOptions&&c.minDate&&a.compare(b,c.minDate)<0||c.maxDate&&a.compare(b,c.maxDate)>0},a.compare=function(a,b){return new Date(a.getFullYear(),a.getMonth(),a.getDate())-new Date(b.getFullYear(),b.getMonth(),b.getDate())},a.dateSelection=function(c){angular.isDefined(c)&&(a.date=c);var d=a.date?l.filter(a.date,w):null;b.val(d),F.$setViewValue(d),x&&(a.isOpen=!1,b[0].focus())},a.keydown=function(c){27===c.which&&(c.stopPropagation(),a.isOpen=!1,b[0].focus())},a.select=function(b,c){if(c.stopPropagation(),"today"===b){var d=new Date;angular.isDate(a.date)?(b=new Date(a.date),b.setFullYear(d.getFullYear(),d.getMonth(),d.getDate())):b=new Date(d.setHours(0,0,0,0))}a.dateSelection(b)},a.close=function(c){c.stopPropagation(),a.isOpen=!1,b[0].focus()},a.disabled=angular.isDefined(c.disabled)||!1,c.ngDisabled&&L.push(a.$parent.$watch(f(c.ngDisabled),function(b){a.disabled=b})),a.$watch("isOpen",function(d){d?a.disabled?a.isOpen=!1:n(function(){v(),z&&a.$broadcast("uib:datepicker.focus"),h.on("click",t);var d=c.popupPlacement?c.popupPlacement:m.placement;y||j.parsePlacement(d)[2]?(E=E||angular.element(j.scrollParent(b)),E&&E.on("scroll",v)):E=null,angular.element(g).on("resize",v)},0,!1):(h.off("click",t),E&&E.off("scroll",v),angular.element(g).off("resize",v))}),a.$on("uib:datepicker.mode",function(){n(v,0,!1)})}]).directive("uibDatepickerPopup",function(){return{require:["ngModel","uibDatepickerPopup"],controller:"UibDatepickerPopupController",scope:{datepickerOptions:"=?",isOpen:"=?",currentText:"@",clearText:"@",closeText:"@"},link:function(a,b,c,d){var e=d[0],f=d[1];f.init(e)}}}).directive("uibDatepickerPopupWrap",function(){return{replace:!0,transclude:!0,templateUrl:function(a,b){return b.templateUrl||"uib/template/datepickerPopup/popup.html"}}}),angular.module("ui.bootstrap.debounce",[]).factory("$$debounce",["$timeout",function(a){return function(b,c){var d;return function(){var e=this,f=Array.prototype.slice.call(arguments);d&&a.cancel(d),d=a(function(){b.apply(e,f)},c)}}}]),angular.module("ui.bootstrap.dropdown",["ui.bootstrap.position"]).constant("uibDropdownConfig",{appendToOpenClass:"uib-dropdown-open",openClass:"open"}).service("uibDropdownService",["$document","$rootScope",function(a,b){var c=null;this.open=function(b,f){c||(a.on("click",d),f.on("keydown",e)),c&&c!==b&&(c.isOpen=!1),c=b},this.close=function(b,f){c===b&&(c=null,a.off("click",d),f.off("keydown",e))};var d=function(a){if(c&&!(a&&"disabled"===c.getAutoClose()||a&&3===a.which)){var d=c.getToggleElement();if(!(a&&d&&d[0].contains(a.target))){var e=c.getDropdownElement();a&&"outsideClick"===c.getAutoClose()&&e&&e[0].contains(a.target)||(c.isOpen=!1,b.$$phase||c.$apply())}}},e=function(a){27===a.which?(a.stopPropagation(),c.focusToggleElement(),d()):c.isKeynavEnabled()&&-1!==[38,40].indexOf(a.which)&&c.isOpen&&(a.preventDefault(),a.stopPropagation(),c.focusDropdownEntry(a.which))}}]).controller("UibDropdownController",["$scope","$element","$attrs","$parse","uibDropdownConfig","uibDropdownService","$animate","$uibPosition","$document","$compile","$templateRequest",function(a,b,c,d,e,f,g,h,i,j,k){var l,m,n=this,o=a.$new(),p=e.appendToOpenClass,q=e.openClass,r=angular.noop,s=c.onToggle?d(c.onToggle):angular.noop,t=!1,u=null,v=!1,w=i.find("body");b.addClass("dropdown"),this.init=function(){if(c.isOpen&&(m=d(c.isOpen),r=m.assign,a.$watch(m,function(a){o.isOpen=!!a})),angular.isDefined(c.dropdownAppendTo)){var e=d(c.dropdownAppendTo)(o);e&&(u=angular.element(e))}t=angular.isDefined(c.dropdownAppendToBody),v=angular.isDefined(c.keyboardNav),t&&!u&&(u=w),u&&n.dropdownMenu&&(u.append(n.dropdownMenu),b.on("$destroy",function(){n.dropdownMenu.remove()}))},this.toggle=function(a){return o.isOpen=arguments.length?!!a:!o.isOpen,angular.isFunction(r)&&r(o,o.isOpen),o.isOpen},this.isOpen=function(){return o.isOpen},o.getToggleElement=function(){return n.toggleElement},o.getAutoClose=function(){return c.autoClose||"always"},o.getElement=function(){return b},o.isKeynavEnabled=function(){return v},o.focusDropdownEntry=function(a){var c=n.dropdownMenu?angular.element(n.dropdownMenu).find("a"):b.find("ul").eq(0).find("a");switch(a){case 40:angular.isNumber(n.selectedOption)?n.selectedOption=n.selectedOption===c.length-1?n.selectedOption:n.selectedOption+1:n.selectedOption=0;break;case 38:angular.isNumber(n.selectedOption)?n.selectedOption=0===n.selectedOption?0:n.selectedOption-1:n.selectedOption=c.length-1}c[n.selectedOption].focus()},o.getDropdownElement=function(){return n.dropdownMenu},o.focusToggleElement=function(){n.toggleElement&&n.toggleElement[0].focus()},o.$watch("isOpen",function(c,d){if(u&&n.dropdownMenu){var e,i,m=h.positionElements(b,n.dropdownMenu,"bottom-left",!0);if(e={top:m.top+"px",display:c?"block":"none"},i=n.dropdownMenu.hasClass("dropdown-menu-right"),i?(e.left="auto",e.right=window.innerWidth-(m.left+b.prop("offsetWidth"))+"px"):(e.left=m.left+"px",e.right="auto"),!t){var v=h.offset(u);e.top=m.top-v.top+"px",i?e.right=window.innerWidth-(m.left-v.left+b.prop("offsetWidth"))+"px":e.left=m.left-v.left+"px"}n.dropdownMenu.css(e)}var w=u?u:b,x=w.hasClass(u?p:q);if(x===!c&&g[c?"addClass":"removeClass"](w,u?p:q).then(function(){angular.isDefined(c)&&c!==d&&s(a,{open:!!c})}),c)n.dropdownMenuTemplateUrl&&k(n.dropdownMenuTemplateUrl).then(function(a){l=o.$new(),j(a.trim())(l,function(a){var b=a;n.dropdownMenu.replaceWith(b),n.dropdownMenu=b})}),o.focusToggleElement(),f.open(o,b);else{if(n.dropdownMenuTemplateUrl){l&&l.$destroy();var y=angular.element('<ul class="dropdown-menu"></ul>');n.dropdownMenu.replaceWith(y),n.dropdownMenu=y}f.close(o,b),n.selectedOption=null}angular.isFunction(r)&&r(a,c)})}]).directive("uibDropdown",function(){return{controller:"UibDropdownController",link:function(a,b,c,d){d.init()}}}).directive("uibDropdownMenu",function(){return{restrict:"A",require:"?^uibDropdown",link:function(a,b,c,d){if(d&&!angular.isDefined(c.dropdownNested)){b.addClass("dropdown-menu");var e=c.templateUrl;e&&(d.dropdownMenuTemplateUrl=e),d.dropdownMenu||(d.dropdownMenu=b)}}}}).directive("uibDropdownToggle",function(){return{require:"?^uibDropdown",link:function(a,b,c,d){if(d){b.addClass("dropdown-toggle"),d.toggleElement=b;var e=function(e){e.preventDefault(),b.hasClass("disabled")||c.disabled||a.$apply(function(){d.toggle()})};b.bind("click",e),b.attr({"aria-haspopup":!0,"aria-expanded":!1}),a.$watch(d.isOpen,function(a){b.attr("aria-expanded",!!a)}),a.$on("$destroy",function(){b.unbind("click",e)})}}}}),angular.module("ui.bootstrap.stackedMap",[]).factory("$$stackedMap",function(){return{createNew:function(){var a=[];return{add:function(b,c){a.push({key:b,value:c})},get:function(b){for(var c=0;c<a.length;c++)if(b===a[c].key)return a[c]},keys:function(){for(var b=[],c=0;c<a.length;c++)b.push(a[c].key);return b},top:function(){return a[a.length-1]},remove:function(b){for(var c=-1,d=0;d<a.length;d++)if(b===a[d].key){c=d;break}return a.splice(c,1)[0]},removeTop:function(){return a.splice(a.length-1,1)[0]},length:function(){return a.length}}}}}),angular.module("ui.bootstrap.modal",["ui.bootstrap.stackedMap","ui.bootstrap.position"]).factory("$$multiMap",function(){return{createNew:function(){var a={};return{entries:function(){return Object.keys(a).map(function(b){return{key:b,value:a[b]}})},get:function(b){return a[b]},hasKey:function(b){return!!a[b]},keys:function(){return Object.keys(a)},put:function(b,c){a[b]||(a[b]=[]),a[b].push(c)},remove:function(b,c){var d=a[b];if(d){var e=d.indexOf(c);-1!==e&&d.splice(e,1),d.length||delete a[b]}}}}}}).provider("$uibResolve",function(){var a=this;this.resolver=null,this.setResolver=function(a){this.resolver=a},this.$get=["$injector","$q",function(b,c){var d=a.resolver?b.get(a.resolver):null;return{resolve:function(a,e,f,g){if(d)return d.resolve(a,e,f,g);var h=[];return angular.forEach(a,function(a){angular.isFunction(a)||angular.isArray(a)?h.push(c.resolve(b.invoke(a))):angular.isString(a)?h.push(c.resolve(b.get(a))):h.push(c.resolve(a))}),c.all(h).then(function(b){var c={},d=0;return angular.forEach(a,function(a,e){c[e]=b[d++]}),c})}}}]}).directive("uibModalBackdrop",["$animate","$injector","$uibModalStack",function(a,b,c){function d(b,d,e){e.modalInClass&&(a.addClass(d,e.modalInClass),b.$on(c.NOW_CLOSING_EVENT,function(c,f){var g=f();b.modalOptions.animation?a.removeClass(d,e.modalInClass).then(g):g()}))}return{replace:!0,templateUrl:"uib/template/modal/backdrop.html",compile:function(a,b){return a.addClass(b.backdropClass),d}}}]).directive("uibModalWindow",["$uibModalStack","$q","$animateCss","$document",function(a,b,c,d){return{scope:{index:"@"},replace:!0,transclude:!0,templateUrl:function(a,b){return b.templateUrl||"uib/template/modal/window.html"},link:function(e,f,g){f.addClass(g.windowClass||""),f.addClass(g.windowTopClass||""),e.size=g.size,e.close=function(b){var c=a.getTop();c&&c.value.backdrop&&"static"!==c.value.backdrop&&b.target===b.currentTarget&&(b.preventDefault(),b.stopPropagation(),a.dismiss(c.key,"backdrop click"))},f.on("click",e.close),e.$isRendered=!0;var h=b.defer();g.$observe("modalRender",function(a){"true"===a&&h.resolve()}),h.promise.then(function(){var h=null;g.modalInClass&&(h=c(f,{addClass:g.modalInClass}).start(),e.$on(a.NOW_CLOSING_EVENT,function(a,b){var d=b();c(f,{removeClass:g.modalInClass}).start().then(d)})),b.when(h).then(function(){var b=a.getTop();if(b&&a.modalRendered(b.key),!d[0].activeElement||!f[0].contains(d[0].activeElement)){var c=f[0].querySelector("[autofocus]");c?c.focus():f[0].focus()}})})}}}]).directive("uibModalAnimationClass",function(){return{compile:function(a,b){b.modalAnimation&&a.addClass(b.uibModalAnimationClass)}}}).directive("uibModalTransclude",function(){return{link:function(a,b,c,d,e){e(a.$parent,function(a){b.empty(),b.append(a)})}}}).factory("$uibModalStack",["$animate","$animateCss","$document","$compile","$rootScope","$q","$$multiMap","$$stackedMap","$uibPosition",function(a,b,c,d,e,f,g,h,i){function j(a){return!!(a.offsetWidth||a.offsetHeight||a.getClientRects().length)}function k(){for(var a=-1,b=v.keys(),c=0;c<b.length;c++)v.get(b[c]).value.backdrop&&(a=c);return a>-1&&y>a&&(a=y),a}function l(a,b){var c=v.get(a).value,d=c.appendTo;v.remove(a),z=v.top(),z&&(y=parseInt(z.value.modalDomEl.attr("index"),10)),o(c.modalDomEl,c.modalScope,function(){var b=c.openedClass||u;w.remove(b,a);var e=w.hasKey(b);d.toggleClass(b,e),!e&&t&&t.heightOverflow&&t.scrollbarWidth&&(t.originalRight?d.css({paddingRight:t.originalRight+"px"}):d.css({paddingRight:""}),t=null),m(!0)},c.closedDeferred),n(),b&&b.focus?b.focus():d.focus&&d.focus()}function m(a){var b;v.length()>0&&(b=v.top().value,b.modalDomEl.toggleClass(b.windowTopClass||"",a))}function n(){if(r&&-1===k()){var a=s;o(r,s,function(){a=null}),r=void 0,s=void 0}}function o(b,c,d,e){function g(){g.done||(g.done=!0,a.leave(b).then(function(){b.remove(),e&&e.resolve()}),c.$destroy(),d&&d())}var h,i=null,j=function(){return h||(h=f.defer(),i=h.promise),function(){h.resolve()}};return c.$broadcast(x.NOW_CLOSING_EVENT,j),f.when(i).then(g)}function p(a){if(a.isDefaultPrevented())return a;var b=v.top();if(b)switch(a.which){case 27:b.value.keyboard&&(a.preventDefault(),e.$apply(function(){x.dismiss(b.key,"escape key press")}));break;case 9:var c=x.loadFocusElementList(b),d=!1;a.shiftKey?(x.isFocusInFirstItem(a,c)||x.isModalFocused(a,b))&&(d=x.focusLastFocusableElement(c)):x.isFocusInLastItem(a,c)&&(d=x.focusFirstFocusableElement(c)),d&&(a.preventDefault(),a.stopPropagation())}}function q(a,b,c){return!a.value.modalScope.$broadcast("modal.closing",b,c).defaultPrevented}var r,s,t,u="modal-open",v=h.createNew(),w=g.createNew(),x={NOW_CLOSING_EVENT:"modal.stack.now-closing"},y=0,z=null,A="a[href], area[href], input:not([disabled]), button:not([disabled]),select:not([disabled]), textarea:not([disabled]), iframe, object, embed, *[tabindex], *[contenteditable=true]";return e.$watch(k,function(a){s&&(s.index=a)}),c.on("keydown",p),e.$on("$destroy",function(){c.off("keydown",p)}),x.open=function(b,f){var g=c[0].activeElement,h=f.openedClass||u;m(!1),z=v.top(),v.add(b,{deferred:f.deferred,renderDeferred:f.renderDeferred,closedDeferred:f.closedDeferred,modalScope:f.scope,backdrop:f.backdrop,keyboard:f.keyboard,openedClass:f.openedClass,windowTopClass:f.windowTopClass,animation:f.animation,appendTo:f.appendTo}),w.put(h,b);var j=f.appendTo,l=k();if(!j.length)throw new Error("appendTo element not found. Make sure that the element passed is in DOM.");l>=0&&!r&&(s=e.$new(!0),s.modalOptions=f,s.index=l,r=angular.element('<div uib-modal-backdrop="modal-backdrop"></div>'),r.attr("backdrop-class",f.backdropClass),f.animation&&r.attr("modal-animation","true"),d(r)(s),a.enter(r,j),t=i.scrollbarPadding(j),t.heightOverflow&&t.scrollbarWidth&&j.css({paddingRight:t.right+"px"})),y=z?parseInt(z.value.modalDomEl.attr("index"),10)+1:0;var n=angular.element('<div uib-modal-window="modal-window"></div>');n.attr({"template-url":f.windowTemplateUrl,"window-class":f.windowClass,"window-top-class":f.windowTopClass,size:f.size,index:y,animate:"animate"}).html(f.content),f.animation&&n.attr("modal-animation","true"),j.addClass(h),a.enter(d(n)(f.scope),j),v.top().value.modalDomEl=n,v.top().value.modalOpener=g},x.close=function(a,b){var c=v.get(a);return c&&q(c,b,!0)?(c.value.modalScope.$$uibDestructionScheduled=!0,c.value.deferred.resolve(b),l(a,c.value.modalOpener),!0):!c},x.dismiss=function(a,b){var c=v.get(a);return c&&q(c,b,!1)?(c.value.modalScope.$$uibDestructionScheduled=!0,c.value.deferred.reject(b),l(a,c.value.modalOpener),!0):!c},x.dismissAll=function(a){for(var b=this.getTop();b&&this.dismiss(b.key,a);)b=this.getTop()},x.getTop=function(){return v.top()},x.modalRendered=function(a){var b=v.get(a);b&&b.value.renderDeferred.resolve()},x.focusFirstFocusableElement=function(a){return a.length>0?(a[0].focus(),!0):!1},x.focusLastFocusableElement=function(a){return a.length>0?(a[a.length-1].focus(),!0):!1},x.isModalFocused=function(a,b){if(a&&b){var c=b.value.modalDomEl;if(c&&c.length)return(a.target||a.srcElement)===c[0]}return!1},x.isFocusInFirstItem=function(a,b){return b.length>0?(a.target||a.srcElement)===b[0]:!1},x.isFocusInLastItem=function(a,b){return b.length>0?(a.target||a.srcElement)===b[b.length-1]:!1},x.loadFocusElementList=function(a){if(a){var b=a.value.modalDomEl;if(b&&b.length){var c=b[0].querySelectorAll(A);return c?Array.prototype.filter.call(c,function(a){return j(a)}):c}}},x}]).provider("$uibModal",function(){var a={options:{animation:!0,backdrop:!0,keyboard:!0},$get:["$rootScope","$q","$document","$templateRequest","$controller","$uibResolve","$uibModalStack",function(b,c,d,e,f,g,h){function i(a){return a.template?c.when(a.template):e(angular.isFunction(a.templateUrl)?a.templateUrl():a.templateUrl)}var j={},k=null;return j.getPromiseChain=function(){return k},j.open=function(e){function j(){return r}var l=c.defer(),m=c.defer(),n=c.defer(),o=c.defer(),p={result:l.promise,opened:m.promise,closed:n.promise,rendered:o.promise,close:function(a){return h.close(p,a)},dismiss:function(a){return h.dismiss(p,a)}};if(e=angular.extend({},a.options,e),e.resolve=e.resolve||{},e.appendTo=e.appendTo||d.find("body").eq(0),!e.template&&!e.templateUrl)throw new Error("One of template or templateUrl options is required.");var q,r=c.all([i(e),g.resolve(e.resolve,{},null,null)]);return q=k=c.all([k]).then(j,j).then(function(a){var c=e.scope||b,d=c.$new();d.$close=p.close,d.$dismiss=p.dismiss,d.$on("$destroy",function(){d.$$uibDestructionScheduled||d.$dismiss("$uibUnscheduledDestruction")});var g,i,j={};e.controller&&(j.$scope=d,j.$uibModalInstance=p,angular.forEach(a[1],function(a,b){j[b]=a}),i=f(e.controller,j,!0),e.controllerAs?(g=i.instance,e.bindToController&&(g.$close=d.$close,g.$dismiss=d.$dismiss,angular.extend(g,c)),g=i(),d[e.controllerAs]=g):g=i(),angular.isFunction(g.$onInit)&&g.$onInit()),h.open(p,{scope:d,deferred:l,renderDeferred:o,closedDeferred:n,content:a[0],animation:e.animation,backdrop:e.backdrop,keyboard:e.keyboard,backdropClass:e.backdropClass,windowTopClass:e.windowTopClass,windowClass:e.windowClass,windowTemplateUrl:e.windowTemplateUrl,size:e.size,openedClass:e.openedClass,appendTo:e.appendTo}),m.resolve(!0)},function(a){m.reject(a),l.reject(a)})["finally"](function(){k===q&&(k=null)}),p},j}]};return a}),angular.module("ui.bootstrap.paging",[]).factory("uibPaging",["$parse",function(a){return{create:function(b,c,d){b.setNumPages=d.numPages?a(d.numPages).assign:angular.noop,b.ngModelCtrl={$setViewValue:angular.noop},b._watchers=[],b.init=function(a,e){b.ngModelCtrl=a,b.config=e,a.$render=function(){b.render()},d.itemsPerPage?b._watchers.push(c.$parent.$watch(d.itemsPerPage,function(a){b.itemsPerPage=parseInt(a,10),c.totalPages=b.calculateTotalPages(),b.updatePage()})):b.itemsPerPage=e.itemsPerPage,c.$watch("totalItems",function(a,d){(angular.isDefined(a)||a!==d)&&(c.totalPages=b.calculateTotalPages(),b.updatePage())})},b.calculateTotalPages=function(){var a=b.itemsPerPage<1?1:Math.ceil(c.totalItems/b.itemsPerPage);return Math.max(a||0,1)},b.render=function(){c.page=parseInt(b.ngModelCtrl.$viewValue,10)||1},c.selectPage=function(a,d){d&&d.preventDefault();var e=!c.ngDisabled||!d;e&&c.page!==a&&a>0&&a<=c.totalPages&&(d&&d.target&&d.target.blur(),b.ngModelCtrl.$setViewValue(a),b.ngModelCtrl.$render())},c.getText=function(a){return c[a+"Text"]||b.config[a+"Text"]},c.noPrevious=function(){return 1===c.page},c.noNext=function(){return c.page===c.totalPages},b.updatePage=function(){b.setNumPages(c.$parent,c.totalPages),c.page>c.totalPages?c.selectPage(c.totalPages):b.ngModelCtrl.$render()},c.$on("$destroy",function(){for(;b._watchers.length;)b._watchers.shift()()})}}}]),angular.module("ui.bootstrap.pager",["ui.bootstrap.paging"]).controller("UibPagerController",["$scope","$attrs","uibPaging","uibPagerConfig",function(a,b,c,d){a.align=angular.isDefined(b.align)?a.$parent.$eval(b.align):d.align,c.create(this,a,b)}]).constant("uibPagerConfig",{itemsPerPage:10,previousText:"Β« Previous",nextText:"Next Β»",align:!0}).directive("uibPager",["uibPagerConfig",function(a){return{scope:{totalItems:"=",previousText:"@",nextText:"@",ngDisabled:"="},require:["uibPager","?ngModel"],controller:"UibPagerController",controllerAs:"pager",templateUrl:function(a,b){return b.templateUrl||"uib/template/pager/pager.html"},replace:!0,link:function(b,c,d,e){var f=e[0],g=e[1];g&&f.init(g,a)}}}]),angular.module("ui.bootstrap.pagination",["ui.bootstrap.paging"]).controller("UibPaginationController",["$scope","$attrs","$parse","uibPaging","uibPaginationConfig",function(a,b,c,d,e){function f(a,b,c){return{number:a,text:b,active:c}}function g(a,b){var c=[],d=1,e=b,g=angular.isDefined(i)&&b>i;g&&(j?(d=Math.max(a-Math.floor(i/2),1),e=d+i-1,e>b&&(e=b,d=e-i+1)):(d=(Math.ceil(a/i)-1)*i+1,e=Math.min(d+i-1,b)));for(var h=d;e>=h;h++){var n=f(h,m(h),h===a);c.push(n)}if(g&&i>0&&(!j||k||l)){if(d>1){if(!l||d>3){var o=f(d-1,"...",!1);c.unshift(o)}if(l){if(3===d){var p=f(2,"2",!1);c.unshift(p)}var q=f(1,"1",!1);c.unshift(q)}}if(b>e){if(!l||b-2>e){var r=f(e+1,"...",!1);c.push(r)}if(l){if(e===b-2){var s=f(b-1,b-1,!1);c.push(s)}var t=f(b,b,!1);c.push(t)}}}return c}var h=this,i=angular.isDefined(b.maxSize)?a.$parent.$eval(b.maxSize):e.maxSize,j=angular.isDefined(b.rotate)?a.$parent.$eval(b.rotate):e.rotate,k=angular.isDefined(b.forceEllipses)?a.$parent.$eval(b.forceEllipses):e.forceEllipses,l=angular.isDefined(b.boundaryLinkNumbers)?a.$parent.$eval(b.boundaryLinkNumbers):e.boundaryLinkNumbers,m=angular.isDefined(b.pageLabel)?function(c){return a.$parent.$eval(b.pageLabel,{$page:c})}:angular.identity;a.boundaryLinks=angular.isDefined(b.boundaryLinks)?a.$parent.$eval(b.boundaryLinks):e.boundaryLinks,a.directionLinks=angular.isDefined(b.directionLinks)?a.$parent.$eval(b.directionLinks):e.directionLinks,d.create(this,a,b),b.maxSize&&h._watchers.push(a.$parent.$watch(c(b.maxSize),function(a){i=parseInt(a,10),h.render()}));var n=this.render;this.render=function(){n(),a.page>0&&a.page<=a.totalPages&&(a.pages=g(a.page,a.totalPages))}}]).constant("uibPaginationConfig",{itemsPerPage:10,boundaryLinks:!1,boundaryLinkNumbers:!1,directionLinks:!0,firstText:"First",previousText:"Previous",nextText:"Next",lastText:"Last",rotate:!0,forceEllipses:!1}).directive("uibPagination",["$parse","uibPaginationConfig",function(a,b){return{scope:{totalItems:"=",firstText:"@",previousText:"@",nextText:"@",lastText:"@",ngDisabled:"="},require:["uibPagination","?ngModel"],controller:"UibPaginationController",controllerAs:"pagination",templateUrl:function(a,b){return b.templateUrl||"uib/template/pagination/pagination.html"},replace:!0,link:function(a,c,d,e){var f=e[0],g=e[1];g&&f.init(g,b)}}}]),angular.module("ui.bootstrap.tooltip",["ui.bootstrap.position","ui.bootstrap.stackedMap"]).provider("$uibTooltip",function(){function a(a){var b=/[A-Z]/g,c="-";return a.replace(b,function(a,b){return(b?c:"")+a.toLowerCase()})}var b={placement:"top",placementClassPrefix:"",animation:!0,popupDelay:0,popupCloseDelay:0,useContentExp:!1},c={mouseenter:"mouseleave",click:"click",outsideClick:"outsideClick",focus:"blur",none:""},d={};this.options=function(a){angular.extend(d,a)},this.setTriggers=function(a){angular.extend(c,a)},this.$get=["$window","$compile","$timeout","$document","$uibPosition","$interpolate","$rootScope","$parse","$$stackedMap",function(e,f,g,h,i,j,k,l,m){function n(a){if(27===a.which){var b=o.top();b&&(b.value.close(),o.removeTop(),b=null)}}var o=m.createNew();return h.on("keypress",n),k.$on("$destroy",function(){h.off("keypress",n)}),function(e,k,m,n){function p(a){var b=(a||n.trigger||m).split(" "),d=b.map(function(a){return c[a]||a});return{show:b,hide:d}}n=angular.extend({},b,d,n);var q=a(e),r=j.startSymbol(),s=j.endSymbol(),t="<div "+q+'-popup uib-title="'+r+"title"+s+'" '+(n.useContentExp?'content-exp="contentExp()" ':'content="'+r+"content"+s+'" ')+'placement="'+r+"placement"+s+'" popup-class="'+r+"popupClass"+s+'" animation="animation" is-open="isOpen" origin-scope="origScope" class="uib-position-measure"></div>';
1767 return{compile:function(a,b){var c=f(t);return function(a,b,d,f){function j(){N.isOpen?q():m()}function m(){M&&!a.$eval(d[k+"Enable"])||(u(),x(),N.popupDelay?G||(G=g(r,N.popupDelay,!1)):r())}function q(){s(),N.popupCloseDelay?H||(H=g(t,N.popupCloseDelay,!1)):t()}function r(){return s(),u(),N.content?(v(),void N.$evalAsync(function(){N.isOpen=!0,y(!0),S()})):angular.noop}function s(){G&&(g.cancel(G),G=null),I&&(g.cancel(I),I=null)}function t(){N&&N.$evalAsync(function(){N&&(N.isOpen=!1,y(!1),N.animation?F||(F=g(w,150,!1)):w())})}function u(){H&&(g.cancel(H),H=null),F&&(g.cancel(F),F=null)}function v(){D||(E=N.$new(),D=c(E,function(a){K?h.find("body").append(a):b.after(a)}),z())}function w(){s(),u(),A(),D&&(D.remove(),D=null),E&&(E.$destroy(),E=null)}function x(){N.title=d[k+"Title"],Q?N.content=Q(a):N.content=d[e],N.popupClass=d[k+"Class"],N.placement=angular.isDefined(d[k+"Placement"])?d[k+"Placement"]:n.placement;var b=i.parsePlacement(N.placement);J=b[1]?b[0]+"-"+b[1]:b[0];var c=parseInt(d[k+"PopupDelay"],10),f=parseInt(d[k+"PopupCloseDelay"],10);N.popupDelay=isNaN(c)?n.popupDelay:c,N.popupCloseDelay=isNaN(f)?n.popupCloseDelay:f}function y(b){P&&angular.isFunction(P.assign)&&P.assign(a,b)}function z(){R.length=0,Q?(R.push(a.$watch(Q,function(a){N.content=a,!a&&N.isOpen&&t()})),R.push(E.$watch(function(){O||(O=!0,E.$$postDigest(function(){O=!1,N&&N.isOpen&&S()}))}))):R.push(d.$observe(e,function(a){N.content=a,!a&&N.isOpen?t():S()})),R.push(d.$observe(k+"Title",function(a){N.title=a,N.isOpen&&S()})),R.push(d.$observe(k+"Placement",function(a){N.placement=a?a:n.placement,N.isOpen&&S()}))}function A(){R.length&&(angular.forEach(R,function(a){a()}),R.length=0)}function B(a){N&&N.isOpen&&D&&(b[0].contains(a.target)||D[0].contains(a.target)||q())}function C(){var a=d[k+"Trigger"];T(),L=p(a),"none"!==L.show&&L.show.forEach(function(a,c){"outsideClick"===a?(b.on("click",j),h.on("click",B)):a===L.hide[c]?b.on(a,j):a&&(b.on(a,m),b.on(L.hide[c],q)),b.on("keypress",function(a){27===a.which&&q()})})}var D,E,F,G,H,I,J,K=angular.isDefined(n.appendToBody)?n.appendToBody:!1,L=p(void 0),M=angular.isDefined(d[k+"Enable"]),N=a.$new(!0),O=!1,P=angular.isDefined(d[k+"IsOpen"])?l(d[k+"IsOpen"]):!1,Q=n.useContentExp?l(d[e]):!1,R=[],S=function(){D&&D.html()&&(I||(I=g(function(){var a=i.positionElements(b,D,N.placement,K);D.css({top:a.top+"px",left:a.left+"px"}),D.hasClass(a.placement.split("-")[0])||(D.removeClass(J.split("-")[0]),D.addClass(a.placement.split("-")[0])),D.hasClass(n.placementClassPrefix+a.placement)||(D.removeClass(n.placementClassPrefix+J),D.addClass(n.placementClassPrefix+a.placement)),D.hasClass("uib-position-measure")?(i.positionArrow(D,a.placement),D.removeClass("uib-position-measure")):J!==a.placement&&i.positionArrow(D,a.placement),J=a.placement,I=null},0,!1)))};N.origScope=a,N.isOpen=!1,o.add(N,{close:t}),N.contentExp=function(){return N.content},d.$observe("disabled",function(a){a&&s(),a&&N.isOpen&&t()}),P&&a.$watch(P,function(a){N&&!a===N.isOpen&&j()});var T=function(){L.show.forEach(function(a){"outsideClick"===a?b.off("click",j):(b.off(a,m),b.off(a,j))}),L.hide.forEach(function(a){"outsideClick"===a?h.off("click",B):b.off(a,q)})};C();var U=a.$eval(d[k+"Animation"]);N.animation=angular.isDefined(U)?!!U:n.animation;var V,W=k+"AppendToBody";V=W in d&&void 0===d[W]?!0:a.$eval(d[W]),K=angular.isDefined(V)?V:K,a.$on("$destroy",function(){T(),w(),o.remove(N),N=null})}}}}}]}).directive("uibTooltipTemplateTransclude",["$animate","$sce","$compile","$templateRequest",function(a,b,c,d){return{link:function(e,f,g){var h,i,j,k=e.$eval(g.tooltipTemplateTranscludeScope),l=0,m=function(){i&&(i.remove(),i=null),h&&(h.$destroy(),h=null),j&&(a.leave(j).then(function(){i=null}),i=j,j=null)};e.$watch(b.parseAsResourceUrl(g.uibTooltipTemplateTransclude),function(b){var g=++l;b?(d(b,!0).then(function(d){if(g===l){var e=k.$new(),i=d,n=c(i)(e,function(b){m(),a.enter(b,f)});h=e,j=n,h.$emit("$includeContentLoaded",b)}},function(){g===l&&(m(),e.$emit("$includeContentError",b))}),e.$emit("$includeContentRequested",b)):m()}),e.$on("$destroy",m)}}}]).directive("uibTooltipClasses",["$uibPosition",function(a){return{restrict:"A",link:function(b,c,d){if(b.placement){var e=a.parsePlacement(b.placement);c.addClass(e[0])}b.popupClass&&c.addClass(b.popupClass),b.animation()&&c.addClass(d.tooltipAnimationClass)}}}]).directive("uibTooltipPopup",function(){return{replace:!0,scope:{content:"@",placement:"@",popupClass:"@",animation:"&",isOpen:"&"},templateUrl:"uib/template/tooltip/tooltip-popup.html"}}).directive("uibTooltip",["$uibTooltip",function(a){return a("uibTooltip","tooltip","mouseenter")}]).directive("uibTooltipTemplatePopup",function(){return{replace:!0,scope:{contentExp:"&",placement:"@",popupClass:"@",animation:"&",isOpen:"&",originScope:"&"},templateUrl:"uib/template/tooltip/tooltip-template-popup.html"}}).directive("uibTooltipTemplate",["$uibTooltip",function(a){return a("uibTooltipTemplate","tooltip","mouseenter",{useContentExp:!0})}]).directive("uibTooltipHtmlPopup",function(){return{replace:!0,scope:{contentExp:"&",placement:"@",popupClass:"@",animation:"&",isOpen:"&"},templateUrl:"uib/template/tooltip/tooltip-html-popup.html"}}).directive("uibTooltipHtml",["$uibTooltip",function(a){return a("uibTooltipHtml","tooltip","mouseenter",{useContentExp:!0})}]),angular.module("ui.bootstrap.popover",["ui.bootstrap.tooltip"]).directive("uibPopoverTemplatePopup",function(){return{replace:!0,scope:{uibTitle:"@",contentExp:"&",placement:"@",popupClass:"@",animation:"&",isOpen:"&",originScope:"&"},templateUrl:"uib/template/popover/popover-template.html"}}).directive("uibPopoverTemplate",["$uibTooltip",function(a){return a("uibPopoverTemplate","popover","click",{useContentExp:!0})}]).directive("uibPopoverHtmlPopup",function(){return{replace:!0,scope:{contentExp:"&",uibTitle:"@",placement:"@",popupClass:"@",animation:"&",isOpen:"&"},templateUrl:"uib/template/popover/popover-html.html"}}).directive("uibPopoverHtml",["$uibTooltip",function(a){return a("uibPopoverHtml","popover","click",{useContentExp:!0})}]).directive("uibPopoverPopup",function(){return{replace:!0,scope:{uibTitle:"@",content:"@",placement:"@",popupClass:"@",animation:"&",isOpen:"&"},templateUrl:"uib/template/popover/popover.html"}}).directive("uibPopover",["$uibTooltip",function(a){return a("uibPopover","popover","click")}]),angular.module("ui.bootstrap.progressbar",[]).constant("uibProgressConfig",{animate:!0,max:100}).controller("UibProgressController",["$scope","$attrs","uibProgressConfig",function(a,b,c){function d(){return angular.isDefined(a.maxParam)?a.maxParam:c.max}var e=this,f=angular.isDefined(b.animate)?a.$parent.$eval(b.animate):c.animate;this.bars=[],a.max=d(),this.addBar=function(a,b,c){f||b.css({transition:"none"}),this.bars.push(a),a.max=d(),a.title=c&&angular.isDefined(c.title)?c.title:"progressbar",a.$watch("value",function(b){a.recalculatePercentage()}),a.recalculatePercentage=function(){var b=e.bars.reduce(function(a,b){return b.percent=+(100*b.value/b.max).toFixed(2),a+b.percent},0);b>100&&(a.percent-=b-100)},a.$on("$destroy",function(){b=null,e.removeBar(a)})},this.removeBar=function(a){this.bars.splice(this.bars.indexOf(a),1),this.bars.forEach(function(a){a.recalculatePercentage()})},a.$watch("maxParam",function(a){e.bars.forEach(function(a){a.max=d(),a.recalculatePercentage()})})}]).directive("uibProgress",function(){return{replace:!0,transclude:!0,controller:"UibProgressController",require:"uibProgress",scope:{maxParam:"=?max"},templateUrl:"uib/template/progressbar/progress.html"}}).directive("uibBar",function(){return{replace:!0,transclude:!0,require:"^uibProgress",scope:{value:"=",type:"@"},templateUrl:"uib/template/progressbar/bar.html",link:function(a,b,c,d){d.addBar(a,b,c)}}}).directive("uibProgressbar",function(){return{replace:!0,transclude:!0,controller:"UibProgressController",scope:{value:"=",maxParam:"=?max",type:"@"},templateUrl:"uib/template/progressbar/progressbar.html",link:function(a,b,c,d){d.addBar(a,angular.element(b.children()[0]),{title:c.title})}}}),angular.module("ui.bootstrap.rating",[]).constant("uibRatingConfig",{max:5,stateOn:null,stateOff:null,enableReset:!0,titles:["one","two","three","four","five"]}).controller("UibRatingController",["$scope","$attrs","uibRatingConfig",function(a,b,c){var d={$setViewValue:angular.noop},e=this;this.init=function(e){d=e,d.$render=this.render,d.$formatters.push(function(a){return angular.isNumber(a)&&a<<0!==a&&(a=Math.round(a)),a}),this.stateOn=angular.isDefined(b.stateOn)?a.$parent.$eval(b.stateOn):c.stateOn,this.stateOff=angular.isDefined(b.stateOff)?a.$parent.$eval(b.stateOff):c.stateOff,this.enableReset=angular.isDefined(b.enableReset)?a.$parent.$eval(b.enableReset):c.enableReset;var f=angular.isDefined(b.titles)?a.$parent.$eval(b.titles):c.titles;this.titles=angular.isArray(f)&&f.length>0?f:c.titles;var g=angular.isDefined(b.ratingStates)?a.$parent.$eval(b.ratingStates):new Array(angular.isDefined(b.max)?a.$parent.$eval(b.max):c.max);a.range=this.buildTemplateObjects(g)},this.buildTemplateObjects=function(a){for(var b=0,c=a.length;c>b;b++)a[b]=angular.extend({index:b},{stateOn:this.stateOn,stateOff:this.stateOff,title:this.getTitle(b)},a[b]);return a},this.getTitle=function(a){return a>=this.titles.length?a+1:this.titles[a]},a.rate=function(b){if(!a.readonly&&b>=0&&b<=a.range.length){var c=e.enableReset&&d.$viewValue===b?0:b;d.$setViewValue(c),d.$render()}},a.enter=function(b){a.readonly||(a.value=b),a.onHover({value:b})},a.reset=function(){a.value=d.$viewValue,a.onLeave()},a.onKeydown=function(b){/(37|38|39|40)/.test(b.which)&&(b.preventDefault(),b.stopPropagation(),a.rate(a.value+(38===b.which||39===b.which?1:-1)))},this.render=function(){a.value=d.$viewValue,a.title=e.getTitle(a.value-1)}}]).directive("uibRating",function(){return{require:["uibRating","ngModel"],scope:{readonly:"=?readOnly",onHover:"&",onLeave:"&"},controller:"UibRatingController",templateUrl:"uib/template/rating/rating.html",replace:!0,link:function(a,b,c,d){var e=d[0],f=d[1];e.init(f)}}}),angular.module("ui.bootstrap.tabs",[]).controller("UibTabsetController",["$scope",function(a){function b(a){for(var b=0;b<d.tabs.length;b++)if(d.tabs[b].index===a)return b}var c,d=this;d.tabs=[],d.select=function(a,f){if(!e){var g=b(c),h=d.tabs[g];if(h){if(h.tab.onDeselect({$event:f}),f&&f.isDefaultPrevented())return;h.tab.active=!1}var i=d.tabs[a];i?(i.tab.onSelect({$event:f}),i.tab.active=!0,d.active=i.index,c=i.index):!i&&angular.isNumber(c)&&(d.active=null,c=null)}},d.addTab=function(a){if(d.tabs.push({tab:a,index:a.index}),d.tabs.sort(function(a,b){return a.index>b.index?1:a.index<b.index?-1:0}),a.index===d.active||!angular.isNumber(d.active)&&1===d.tabs.length){var c=b(a.index);d.select(c)}},d.removeTab=function(a){for(var b,c=0;c<d.tabs.length;c++)if(d.tabs[c].tab===a){b=c;break}if(d.tabs[b].index===d.active){var e=b===d.tabs.length-1?b-1:b+1%d.tabs.length;d.select(e)}d.tabs.splice(b,1)},a.$watch("tabset.active",function(a){angular.isNumber(a)&&a!==c&&d.select(b(a))});var e;a.$on("$destroy",function(){e=!0})}]).directive("uibTabset",function(){return{transclude:!0,replace:!0,scope:{},bindToController:{active:"=?",type:"@"},controller:"UibTabsetController",controllerAs:"tabset",templateUrl:function(a,b){return b.templateUrl||"uib/template/tabs/tabset.html"},link:function(a,b,c){a.vertical=angular.isDefined(c.vertical)?a.$parent.$eval(c.vertical):!1,a.justified=angular.isDefined(c.justified)?a.$parent.$eval(c.justified):!1,angular.isUndefined(c.active)&&(a.active=0)}}}).directive("uibTab",["$parse",function(a){return{require:"^uibTabset",replace:!0,templateUrl:function(a,b){return b.templateUrl||"uib/template/tabs/tab.html"},transclude:!0,scope:{heading:"@",index:"=?",classes:"@?",onSelect:"&select",onDeselect:"&deselect"},controller:function(){},controllerAs:"tab",link:function(b,c,d,e,f){b.disabled=!1,d.disable&&b.$parent.$watch(a(d.disable),function(a){b.disabled=!!a}),angular.isUndefined(d.index)&&(e.tabs&&e.tabs.length?b.index=Math.max.apply(null,e.tabs.map(function(a){return a.index}))+1:b.index=0),angular.isUndefined(d.classes)&&(b.classes=""),b.select=function(a){if(!b.disabled){for(var c,d=0;d<e.tabs.length;d++)if(e.tabs[d].tab===b){c=d;break}e.select(c,a)}},e.addTab(b),b.$on("$destroy",function(){e.removeTab(b)}),b.$transcludeFn=f}}}]).directive("uibTabHeadingTransclude",function(){return{restrict:"A",require:"^uibTab",link:function(a,b){a.$watch("headingElement",function(a){a&&(b.html(""),b.append(a))})}}}).directive("uibTabContentTransclude",function(){function a(a){return a.tagName&&(a.hasAttribute("uib-tab-heading")||a.hasAttribute("data-uib-tab-heading")||a.hasAttribute("x-uib-tab-heading")||"uib-tab-heading"===a.tagName.toLowerCase()||"data-uib-tab-heading"===a.tagName.toLowerCase()||"x-uib-tab-heading"===a.tagName.toLowerCase()||"uib:tab-heading"===a.tagName.toLowerCase())}return{restrict:"A",require:"^uibTabset",link:function(b,c,d){var e=b.$eval(d.uibTabContentTransclude).tab;e.$transcludeFn(e.$parent,function(b){angular.forEach(b,function(b){a(b)?e.headingElement=b:c.append(b)})})}}}),angular.module("ui.bootstrap.timepicker",[]).constant("uibTimepickerConfig",{hourStep:1,minuteStep:1,secondStep:1,showMeridian:!0,showSeconds:!1,meridians:null,readonlyInput:!1,mousewheel:!0,arrowkeys:!0,showSpinners:!0,templateUrl:"uib/template/timepicker/timepicker.html"}).controller("UibTimepickerController",["$scope","$element","$attrs","$parse","$log","$locale","uibTimepickerConfig",function(a,b,c,d,e,f,g){function h(){var b=+a.hours,c=a.showMeridian?b>0&&13>b:b>=0&&24>b;return c&&""!==a.hours?(a.showMeridian&&(12===b&&(b=0),a.meridian===v[1]&&(b+=12)),b):void 0}function i(){var b=+a.minutes,c=b>=0&&60>b;return c&&""!==a.minutes?b:void 0}function j(){var b=+a.seconds;return b>=0&&60>b?b:void 0}function k(a,b){return null===a?"":angular.isDefined(a)&&a.toString().length<2&&!b?"0"+a:a.toString()}function l(a){m(),u.$setViewValue(new Date(s)),n(a)}function m(){u.$setValidity("time",!0),a.invalidHours=!1,a.invalidMinutes=!1,a.invalidSeconds=!1}function n(b){if(u.$modelValue){var c=s.getHours(),d=s.getMinutes(),e=s.getSeconds();a.showMeridian&&(c=0===c||12===c?12:c%12),a.hours="h"===b?c:k(c,!w),"m"!==b&&(a.minutes=k(d)),a.meridian=s.getHours()<12?v[0]:v[1],"s"!==b&&(a.seconds=k(e)),a.meridian=s.getHours()<12?v[0]:v[1]}else a.hours=null,a.minutes=null,a.seconds=null,a.meridian=v[0]}function o(a){s=q(s,a),l()}function p(a,b){return q(a,60*b)}function q(a,b){var c=new Date(a.getTime()+1e3*b),d=new Date(a);return d.setHours(c.getHours(),c.getMinutes(),c.getSeconds()),d}function r(){return(null===a.hours||""===a.hours)&&(null===a.minutes||""===a.minutes)&&(!a.showSeconds||a.showSeconds&&(null===a.seconds||""===a.seconds))}var s=new Date,t=[],u={$setViewValue:angular.noop},v=angular.isDefined(c.meridians)?a.$parent.$eval(c.meridians):g.meridians||f.DATETIME_FORMATS.AMPMS,w=angular.isDefined(c.padHours)?a.$parent.$eval(c.padHours):!0;a.tabindex=angular.isDefined(c.tabindex)?c.tabindex:0,b.removeAttr("tabindex"),this.init=function(b,d){u=b,u.$render=this.render,u.$formatters.unshift(function(a){return a?new Date(a):null});var e=d.eq(0),f=d.eq(1),h=d.eq(2),i=angular.isDefined(c.mousewheel)?a.$parent.$eval(c.mousewheel):g.mousewheel;i&&this.setupMousewheelEvents(e,f,h);var j=angular.isDefined(c.arrowkeys)?a.$parent.$eval(c.arrowkeys):g.arrowkeys;j&&this.setupArrowkeyEvents(e,f,h),a.readonlyInput=angular.isDefined(c.readonlyInput)?a.$parent.$eval(c.readonlyInput):g.readonlyInput,this.setupInputEvents(e,f,h)};var x=g.hourStep;c.hourStep&&t.push(a.$parent.$watch(d(c.hourStep),function(a){x=+a}));var y=g.minuteStep;c.minuteStep&&t.push(a.$parent.$watch(d(c.minuteStep),function(a){y=+a}));var z;t.push(a.$parent.$watch(d(c.min),function(a){var b=new Date(a);z=isNaN(b)?void 0:b}));var A;t.push(a.$parent.$watch(d(c.max),function(a){var b=new Date(a);A=isNaN(b)?void 0:b}));var B=!1;c.ngDisabled&&t.push(a.$parent.$watch(d(c.ngDisabled),function(a){B=a})),a.noIncrementHours=function(){var a=p(s,60*x);return B||a>A||s>a&&z>a},a.noDecrementHours=function(){var a=p(s,60*-x);return B||z>a||a>s&&a>A},a.noIncrementMinutes=function(){var a=p(s,y);return B||a>A||s>a&&z>a},a.noDecrementMinutes=function(){var a=p(s,-y);return B||z>a||a>s&&a>A},a.noIncrementSeconds=function(){var a=q(s,C);return B||a>A||s>a&&z>a},a.noDecrementSeconds=function(){var a=q(s,-C);return B||z>a||a>s&&a>A},a.noToggleMeridian=function(){return s.getHours()<12?B||p(s,720)>A:B||p(s,-720)<z};var C=g.secondStep;c.secondStep&&t.push(a.$parent.$watch(d(c.secondStep),function(a){C=+a})),a.showSeconds=g.showSeconds,c.showSeconds&&t.push(a.$parent.$watch(d(c.showSeconds),function(b){a.showSeconds=!!b})),a.showMeridian=g.showMeridian,c.showMeridian&&t.push(a.$parent.$watch(d(c.showMeridian),function(b){if(a.showMeridian=!!b,u.$error.time){var c=h(),d=i();angular.isDefined(c)&&angular.isDefined(d)&&(s.setHours(c),l())}else n()})),this.setupMousewheelEvents=function(b,c,d){var e=function(a){a.originalEvent&&(a=a.originalEvent);var b=a.wheelDelta?a.wheelDelta:-a.deltaY;return a.detail||b>0};b.bind("mousewheel wheel",function(b){B||a.$apply(e(b)?a.incrementHours():a.decrementHours()),b.preventDefault()}),c.bind("mousewheel wheel",function(b){B||a.$apply(e(b)?a.incrementMinutes():a.decrementMinutes()),b.preventDefault()}),d.bind("mousewheel wheel",function(b){B||a.$apply(e(b)?a.incrementSeconds():a.decrementSeconds()),b.preventDefault()})},this.setupArrowkeyEvents=function(b,c,d){b.bind("keydown",function(b){B||(38===b.which?(b.preventDefault(),a.incrementHours(),a.$apply()):40===b.which&&(b.preventDefault(),a.decrementHours(),a.$apply()))}),c.bind("keydown",function(b){B||(38===b.which?(b.preventDefault(),a.incrementMinutes(),a.$apply()):40===b.which&&(b.preventDefault(),a.decrementMinutes(),a.$apply()))}),d.bind("keydown",function(b){B||(38===b.which?(b.preventDefault(),a.incrementSeconds(),a.$apply()):40===b.which&&(b.preventDefault(),a.decrementSeconds(),a.$apply()))})},this.setupInputEvents=function(b,c,d){if(a.readonlyInput)return a.updateHours=angular.noop,a.updateMinutes=angular.noop,void(a.updateSeconds=angular.noop);var e=function(b,c,d){u.$setViewValue(null),u.$setValidity("time",!1),angular.isDefined(b)&&(a.invalidHours=b),angular.isDefined(c)&&(a.invalidMinutes=c),angular.isDefined(d)&&(a.invalidSeconds=d)};a.updateHours=function(){var a=h(),b=i();u.$setDirty(),angular.isDefined(a)&&angular.isDefined(b)?(s.setHours(a),s.setMinutes(b),z>s||s>A?e(!0):l("h")):e(!0)},b.bind("blur",function(b){u.$setTouched(),r()?m():null===a.hours||""===a.hours?e(!0):!a.invalidHours&&a.hours<10&&a.$apply(function(){a.hours=k(a.hours,!w)})}),a.updateMinutes=function(){var a=i(),b=h();u.$setDirty(),angular.isDefined(a)&&angular.isDefined(b)?(s.setHours(b),s.setMinutes(a),z>s||s>A?e(void 0,!0):l("m")):e(void 0,!0)},c.bind("blur",function(b){u.$setTouched(),r()?m():null===a.minutes?e(void 0,!0):!a.invalidMinutes&&a.minutes<10&&a.$apply(function(){a.minutes=k(a.minutes)})}),a.updateSeconds=function(){var a=j();u.$setDirty(),angular.isDefined(a)?(s.setSeconds(a),l("s")):e(void 0,void 0,!0)},d.bind("blur",function(b){r()?m():!a.invalidSeconds&&a.seconds<10&&a.$apply(function(){a.seconds=k(a.seconds)})})},this.render=function(){var b=u.$viewValue;isNaN(b)?(u.$setValidity("time",!1),e.error('Timepicker directive: "ng-model" value must be a Date object, a number of milliseconds since 01.01.1970 or a string representing an RFC2822 or ISO 8601 date.')):(b&&(s=b),z>s||s>A?(u.$setValidity("time",!1),a.invalidHours=!0,a.invalidMinutes=!0):m(),n())},a.showSpinners=angular.isDefined(c.showSpinners)?a.$parent.$eval(c.showSpinners):g.showSpinners,a.incrementHours=function(){a.noIncrementHours()||o(60*x*60)},a.decrementHours=function(){a.noDecrementHours()||o(60*-x*60)},a.incrementMinutes=function(){a.noIncrementMinutes()||o(60*y)},a.decrementMinutes=function(){a.noDecrementMinutes()||o(60*-y)},a.incrementSeconds=function(){a.noIncrementSeconds()||o(C)},a.decrementSeconds=function(){a.noDecrementSeconds()||o(-C)},a.toggleMeridian=function(){var b=i(),c=h();a.noToggleMeridian()||(angular.isDefined(b)&&angular.isDefined(c)?o(720*(s.getHours()<12?60:-60)):a.meridian=a.meridian===v[0]?v[1]:v[0])},a.blur=function(){u.$setTouched()},a.$on("$destroy",function(){for(;t.length;)t.shift()()})}]).directive("uibTimepicker",["uibTimepickerConfig",function(a){return{require:["uibTimepicker","?^ngModel"],controller:"UibTimepickerController",controllerAs:"timepicker",replace:!0,scope:{},templateUrl:function(b,c){return c.templateUrl||a.templateUrl},link:function(a,b,c,d){var e=d[0],f=d[1];f&&e.init(f,b.find("input"))}}}]),angular.module("ui.bootstrap.typeahead",["ui.bootstrap.debounce","ui.bootstrap.position"]).factory("uibTypeaheadParser",["$parse",function(a){var b=/^\s*([\s\S]+?)(?:\s+as\s+([\s\S]+?))?\s+for\s+(?:([\$\w][\$\w\d]*))\s+in\s+([\s\S]+?)$/;return{parse:function(c){var d=c.match(b);if(!d)throw new Error('Expected typeahead specification in form of "_modelValue_ (as _label_)? for _item_ in _collection_" but got "'+c+'".');return{itemName:d[3],source:a(d[4]),viewMapper:a(d[2]||d[1]),modelMapper:a(d[1])}}}}]).controller("UibTypeaheadController",["$scope","$element","$attrs","$compile","$parse","$q","$timeout","$document","$window","$rootScope","$$debounce","$uibPosition","uibTypeaheadParser",function(a,b,c,d,e,f,g,h,i,j,k,l,m){function n(){N.moveInProgress||(N.moveInProgress=!0,N.$digest()),Y()}function o(){N.position=D?l.offset(b):l.position(b),N.position.top+=b.prop("offsetHeight")}var p,q,r=[9,13,27,38,40],s=200,t=a.$eval(c.typeaheadMinLength);t||0===t||(t=1),a.$watch(c.typeaheadMinLength,function(a){t=a||0===a?a:1});var u=a.$eval(c.typeaheadWaitMs)||0,v=a.$eval(c.typeaheadEditable)!==!1;a.$watch(c.typeaheadEditable,function(a){v=a!==!1});var w,x,y=e(c.typeaheadLoading).assign||angular.noop,z=e(c.typeaheadOnSelect),A=angular.isDefined(c.typeaheadSelectOnBlur)?a.$eval(c.typeaheadSelectOnBlur):!1,B=e(c.typeaheadNoResults).assign||angular.noop,C=c.typeaheadInputFormatter?e(c.typeaheadInputFormatter):void 0,D=c.typeaheadAppendToBody?a.$eval(c.typeaheadAppendToBody):!1,E=c.typeaheadAppendTo?a.$eval(c.typeaheadAppendTo):null,F=a.$eval(c.typeaheadFocusFirst)!==!1,G=c.typeaheadSelectOnExact?a.$eval(c.typeaheadSelectOnExact):!1,H=e(c.typeaheadIsOpen).assign||angular.noop,I=a.$eval(c.typeaheadShowHint)||!1,J=e(c.ngModel),K=e(c.ngModel+"($$$p)"),L=function(b,c){return angular.isFunction(J(a))&&q&&q.$options&&q.$options.getterSetter?K(b,{$$$p:c}):J.assign(b,c)},M=m.parse(c.uibTypeahead),N=a.$new(),O=a.$on("$destroy",function(){N.$destroy()});N.$on("$destroy",O);var P="typeahead-"+N.$id+"-"+Math.floor(1e4*Math.random());b.attr({"aria-autocomplete":"list","aria-expanded":!1,"aria-owns":P});var Q,R;I&&(Q=angular.element("<div></div>"),Q.css("position","relative"),b.after(Q),R=b.clone(),R.attr("placeholder",""),R.attr("tabindex","-1"),R.val(""),R.css({position:"absolute",top:"0px",left:"0px","border-color":"transparent","box-shadow":"none",opacity:1,background:"none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255)",color:"#999"}),b.css({position:"relative","vertical-align":"top","background-color":"transparent"}),Q.append(R),R.after(b));var S=angular.element("<div uib-typeahead-popup></div>");S.attr({id:P,matches:"matches",active:"activeIdx",select:"select(activeIdx, evt)","move-in-progress":"moveInProgress",query:"query",position:"position","assign-is-open":"assignIsOpen(isOpen)",debounce:"debounceUpdate"}),angular.isDefined(c.typeaheadTemplateUrl)&&S.attr("template-url",c.typeaheadTemplateUrl),angular.isDefined(c.typeaheadPopupTemplateUrl)&&S.attr("popup-template-url",c.typeaheadPopupTemplateUrl);var T=function(){I&&R.val("")},U=function(){N.matches=[],N.activeIdx=-1,b.attr("aria-expanded",!1),T()},V=function(a){return P+"-option-"+a};N.$watch("activeIdx",function(a){0>a?b.removeAttr("aria-activedescendant"):b.attr("aria-activedescendant",V(a))});var W=function(a,b){return N.matches.length>b&&a?a.toUpperCase()===N.matches[b].label.toUpperCase():!1},X=function(c,d){var e={$viewValue:c};y(a,!0),B(a,!1),f.when(M.source(a,e)).then(function(f){var g=c===p.$viewValue;if(g&&w)if(f&&f.length>0){N.activeIdx=F?0:-1,B(a,!1),N.matches.length=0;for(var h=0;h<f.length;h++)e[M.itemName]=f[h],N.matches.push({id:V(h),label:M.viewMapper(N,e),model:f[h]});if(N.query=c,o(),b.attr("aria-expanded",!0),G&&1===N.matches.length&&W(c,0)&&(angular.isNumber(N.debounceUpdate)||angular.isObject(N.debounceUpdate)?k(function(){N.select(0,d)},angular.isNumber(N.debounceUpdate)?N.debounceUpdate:N.debounceUpdate["default"]):N.select(0,d)),I){var i=N.matches[0].label;angular.isString(c)&&c.length>0&&i.slice(0,c.length).toUpperCase()===c.toUpperCase()?R.val(c+i.slice(c.length)):R.val("")}}else U(),B(a,!0);g&&y(a,!1)},function(){U(),y(a,!1),B(a,!0)})};D&&(angular.element(i).on("resize",n),h.find("body").on("scroll",n));var Y=k(function(){N.matches.length&&o(),N.moveInProgress=!1},s);N.moveInProgress=!1,N.query=void 0;var Z,$=function(a){Z=g(function(){X(a)},u)},_=function(){Z&&g.cancel(Z)};U(),N.assignIsOpen=function(b){H(a,b)},N.select=function(d,e){var f,h,i={};x=!0,i[M.itemName]=h=N.matches[d].model,f=M.modelMapper(a,i),L(a,f),p.$setValidity("editable",!0),p.$setValidity("parse",!0),z(a,{$item:h,$model:f,$label:M.viewMapper(a,i),$event:e}),U(),N.$eval(c.typeaheadFocusOnSelect)!==!1&&g(function(){b[0].focus()},0,!1)},b.on("keydown",function(b){if(0!==N.matches.length&&-1!==r.indexOf(b.which)){if(-1===N.activeIdx&&(9===b.which||13===b.which)||9===b.which&&b.shiftKey)return U(),void N.$digest();b.preventDefault();var c;switch(b.which){case 9:case 13:N.$apply(function(){angular.isNumber(N.debounceUpdate)||angular.isObject(N.debounceUpdate)?k(function(){N.select(N.activeIdx,b)},angular.isNumber(N.debounceUpdate)?N.debounceUpdate:N.debounceUpdate["default"]):N.select(N.activeIdx,b)});break;case 27:b.stopPropagation(),U(),a.$digest();break;case 38:N.activeIdx=(N.activeIdx>0?N.activeIdx:N.matches.length)-1,N.$digest(),c=S.find("li")[N.activeIdx],c.parentNode.scrollTop=c.offsetTop;break;case 40:N.activeIdx=(N.activeIdx+1)%N.matches.length,N.$digest(),c=S.find("li")[N.activeIdx],c.parentNode.scrollTop=c.offsetTop}}}),b.bind("focus",function(a){w=!0,0!==t||p.$viewValue||g(function(){X(p.$viewValue,a)},0)}),b.bind("blur",function(a){A&&N.matches.length&&-1!==N.activeIdx&&!x&&(x=!0,N.$apply(function(){angular.isObject(N.debounceUpdate)&&angular.isNumber(N.debounceUpdate.blur)?k(function(){N.select(N.activeIdx,a)},N.debounceUpdate.blur):N.select(N.activeIdx,a)})),!v&&p.$error.editable&&(p.$setViewValue(),p.$setValidity("editable",!0),p.$setValidity("parse",!0),b.val("")),w=!1,x=!1});var aa=function(c){b[0]!==c.target&&3!==c.which&&0!==N.matches.length&&(U(),j.$$phase||a.$digest())};h.on("click",aa),a.$on("$destroy",function(){h.off("click",aa),(D||E)&&ba.remove(),D&&(angular.element(i).off("resize",n),h.find("body").off("scroll",n)),S.remove(),I&&Q.remove()});var ba=d(S)(N);D?h.find("body").append(ba):E?angular.element(E).eq(0).append(ba):b.after(ba),this.init=function(b,c){p=b,q=c,N.debounceUpdate=p.$options&&e(p.$options.debounce)(a),p.$parsers.unshift(function(b){return w=!0,0===t||b&&b.length>=t?u>0?(_(),$(b)):X(b):(y(a,!1),_(),U()),v?b:b?void p.$setValidity("editable",!1):(p.$setValidity("editable",!0),null)}),p.$formatters.push(function(b){var c,d,e={};return v||p.$setValidity("editable",!0),C?(e.$model=b,C(a,e)):(e[M.itemName]=b,c=M.viewMapper(a,e),e[M.itemName]=void 0,d=M.viewMapper(a,e),c!==d?c:b)})}}]).directive("uibTypeahead",function(){return{controller:"UibTypeaheadController",require:["ngModel","^?ngModelOptions","uibTypeahead"],link:function(a,b,c,d){d[2].init(d[0],d[1])}}}).directive("uibTypeaheadPopup",["$$debounce",function(a){return{scope:{matches:"=",query:"=",active:"=",position:"&",moveInProgress:"=",select:"&",assignIsOpen:"&",debounce:"&"},replace:!0,templateUrl:function(a,b){return b.popupTemplateUrl||"uib/template/typeahead/typeahead-popup.html"},link:function(b,c,d){b.templateUrl=d.templateUrl,b.isOpen=function(){var a=b.matches.length>0;return b.assignIsOpen({isOpen:a}),a},b.isActive=function(a){return b.active===a},b.selectActive=function(a){b.active=a},b.selectMatch=function(c,d){var e=b.debounce();angular.isNumber(e)||angular.isObject(e)?a(function(){b.select({activeIdx:c,evt:d})},angular.isNumber(e)?e:e["default"]):b.select({activeIdx:c,evt:d})}}}}]).directive("uibTypeaheadMatch",["$templateRequest","$compile","$parse",function(a,b,c){return{scope:{index:"=",match:"=",query:"="},link:function(d,e,f){var g=c(f.templateUrl)(d.$parent)||"uib/template/typeahead/typeahead-match.html";a(g).then(function(a){var c=angular.element(a.trim());e.replaceWith(c),b(c)(d)})}}}]).filter("uibTypeaheadHighlight",["$sce","$injector","$log",function(a,b,c){function d(a){return a.replace(/([.?*+^$[\]\\(){}|-])/g,"\\$1")}function e(a){return/<.*>/g.test(a)}var f;return f=b.has("$sanitize"),function(b,g){return!f&&e(b)&&c.warn("Unsafe use of typeahead please use ngSanitize"),b=g?(""+b).replace(new RegExp(d(g),"gi"),"<strong>$&</strong>"):b,f||(b=a.trustAsHtml(b)),b}}]),angular.module("uib/template/accordion/accordion-group.html",[]).run(["$templateCache",function(a){a.put("uib/template/accordion/accordion-group.html",'<div class="panel" ng-class="panelClass || \'panel-default\'">\n <div role="tab" id="{{::headingId}}" aria-selected="{{isOpen}}" class="panel-heading" ng-keypress="toggleOpen($event)">\n <h4 class="panel-title">\n <a role="button" data-toggle="collapse" href aria-expanded="{{isOpen}}" aria-controls="{{::panelId}}" tabindex="0" class="accordion-toggle" ng-click="toggleOpen()" uib-accordion-transclude="heading"><span uib-accordion-header ng-class="{\'text-muted\': isDisabled}">{{heading}}</span></a>\n </h4>\n </div>\n <div id="{{::panelId}}" aria-labelledby="{{::headingId}}" aria-hidden="{{!isOpen}}" role="tabpanel" class="panel-collapse collapse" uib-collapse="!isOpen">\n <div class="panel-body" ng-transclude></div>\n </div>\n</div>\n')}]),angular.module("uib/template/accordion/accordion.html",[]).run(["$templateCache",function(a){a.put("uib/template/accordion/accordion.html",'<div role="tablist" class="panel-group" ng-transclude></div>')}]),angular.module("uib/template/alert/alert.html",[]).run(["$templateCache",function(a){a.put("uib/template/alert/alert.html",'<div class="alert" ng-class="[\'alert-\' + (type || \'warning\'), closeable ? \'alert-dismissible\' : null]" role="alert">\n <button ng-show="closeable" type="button" class="close" ng-click="close({$event: $event})">\n <span aria-hidden="true">&times;</span>\n <span class="sr-only">Close</span>\n </button>\n <div ng-transclude></div>\n</div>\n')}]),angular.module("uib/template/carousel/carousel.html",[]).run(["$templateCache",function(a){a.put("uib/template/carousel/carousel.html",'<div ng-mouseenter="pause()" ng-mouseleave="play()" class="carousel" ng-swipe-right="prev()" ng-swipe-left="next()">\n <div class="carousel-inner" ng-transclude></div>\n <a role="button" href class="left carousel-control" ng-click="prev()" ng-class="{ disabled: isPrevDisabled() }" ng-show="slides.length > 1">\n <span aria-hidden="true" class="glyphicon glyphicon-chevron-left"></span>\n <span class="sr-only">previous</span>\n </a>\n <a role="button" href class="right carousel-control" ng-click="next()" ng-class="{ disabled: isNextDisabled() }" ng-show="slides.length > 1">\n <span aria-hidden="true" class="glyphicon glyphicon-chevron-right"></span>\n <span class="sr-only">next</span>\n </a>\n <ol class="carousel-indicators" ng-show="slides.length > 1">\n <li ng-repeat="slide in slides | orderBy:indexOfSlide track by $index" ng-class="{ active: isActive(slide) }" ng-click="select(slide)">\n <span class="sr-only">slide {{ $index + 1 }} of {{ slides.length }}<span ng-if="isActive(slide)">, currently active</span></span>\n </li>\n </ol>\n</div>\n');
1767 return{compile:function(a,b){var c=f(t);return function(a,b,d,f){function j(){N.isOpen?q():m()}function m(){M&&!a.$eval(d[k+"Enable"])||(u(),x(),N.popupDelay?G||(G=g(r,N.popupDelay,!1)):r())}function q(){s(),N.popupCloseDelay?H||(H=g(t,N.popupCloseDelay,!1)):t()}function r(){return s(),u(),N.content?(v(),void N.$evalAsync(function(){N.isOpen=!0,y(!0),S()})):angular.noop}function s(){G&&(g.cancel(G),G=null),I&&(g.cancel(I),I=null)}function t(){N&&N.$evalAsync(function(){N&&(N.isOpen=!1,y(!1),N.animation?F||(F=g(w,150,!1)):w())})}function u(){H&&(g.cancel(H),H=null),F&&(g.cancel(F),F=null)}function v(){D||(E=N.$new(),D=c(E,function(a){K?h.find("body").append(a):b.after(a)}),z())}function w(){s(),u(),A(),D&&(D.remove(),D=null),E&&(E.$destroy(),E=null)}function x(){N.title=d[k+"Title"],Q?N.content=Q(a):N.content=d[e],N.popupClass=d[k+"Class"],N.placement=angular.isDefined(d[k+"Placement"])?d[k+"Placement"]:n.placement;var b=i.parsePlacement(N.placement);J=b[1]?b[0]+"-"+b[1]:b[0];var c=parseInt(d[k+"PopupDelay"],10),f=parseInt(d[k+"PopupCloseDelay"],10);N.popupDelay=isNaN(c)?n.popupDelay:c,N.popupCloseDelay=isNaN(f)?n.popupCloseDelay:f}function y(b){P&&angular.isFunction(P.assign)&&P.assign(a,b)}function z(){R.length=0,Q?(R.push(a.$watch(Q,function(a){N.content=a,!a&&N.isOpen&&t()})),R.push(E.$watch(function(){O||(O=!0,E.$$postDigest(function(){O=!1,N&&N.isOpen&&S()}))}))):R.push(d.$observe(e,function(a){N.content=a,!a&&N.isOpen?t():S()})),R.push(d.$observe(k+"Title",function(a){N.title=a,N.isOpen&&S()})),R.push(d.$observe(k+"Placement",function(a){N.placement=a?a:n.placement,N.isOpen&&S()}))}function A(){R.length&&(angular.forEach(R,function(a){a()}),R.length=0)}function B(a){N&&N.isOpen&&D&&(b[0].contains(a.target)||D[0].contains(a.target)||q())}function C(){var a=d[k+"Trigger"];T(),L=p(a),"none"!==L.show&&L.show.forEach(function(a,c){"outsideClick"===a?(b.on("click",j),h.on("click",B)):a===L.hide[c]?b.on(a,j):a&&(b.on(a,m),b.on(L.hide[c],q)),b.on("keypress",function(a){27===a.which&&q()})})}var D,E,F,G,H,I,J,K=angular.isDefined(n.appendToBody)?n.appendToBody:!1,L=p(void 0),M=angular.isDefined(d[k+"Enable"]),N=a.$new(!0),O=!1,P=angular.isDefined(d[k+"IsOpen"])?l(d[k+"IsOpen"]):!1,Q=n.useContentExp?l(d[e]):!1,R=[],S=function(){D&&D.html()&&(I||(I=g(function(){var a=i.positionElements(b,D,N.placement,K);D.css({top:a.top+"px",left:a.left+"px"}),D.hasClass(a.placement.split("-")[0])||(D.removeClass(J.split("-")[0]),D.addClass(a.placement.split("-")[0])),D.hasClass(n.placementClassPrefix+a.placement)||(D.removeClass(n.placementClassPrefix+J),D.addClass(n.placementClassPrefix+a.placement)),D.hasClass("uib-position-measure")?(i.positionArrow(D,a.placement),D.removeClass("uib-position-measure")):J!==a.placement&&i.positionArrow(D,a.placement),J=a.placement,I=null},0,!1)))};N.origScope=a,N.isOpen=!1,o.add(N,{close:t}),N.contentExp=function(){return N.content},d.$observe("disabled",function(a){a&&s(),a&&N.isOpen&&t()}),P&&a.$watch(P,function(a){N&&!a===N.isOpen&&j()});var T=function(){L.show.forEach(function(a){"outsideClick"===a?b.off("click",j):(b.off(a,m),b.off(a,j))}),L.hide.forEach(function(a){"outsideClick"===a?h.off("click",B):b.off(a,q)})};C();var U=a.$eval(d[k+"Animation"]);N.animation=angular.isDefined(U)?!!U:n.animation;var V,W=k+"AppendToBody";V=W in d&&void 0===d[W]?!0:a.$eval(d[W]),K=angular.isDefined(V)?V:K,a.$on("$destroy",function(){T(),w(),o.remove(N),N=null})}}}}}]}).directive("uibTooltipTemplateTransclude",["$animate","$sce","$compile","$templateRequest",function(a,b,c,d){return{link:function(e,f,g){var h,i,j,k=e.$eval(g.tooltipTemplateTranscludeScope),l=0,m=function(){i&&(i.remove(),i=null),h&&(h.$destroy(),h=null),j&&(a.leave(j).then(function(){i=null}),i=j,j=null)};e.$watch(b.parseAsResourceUrl(g.uibTooltipTemplateTransclude),function(b){var g=++l;b?(d(b,!0).then(function(d){if(g===l){var e=k.$new(),i=d,n=c(i)(e,function(b){m(),a.enter(b,f)});h=e,j=n,h.$emit("$includeContentLoaded",b)}},function(){g===l&&(m(),e.$emit("$includeContentError",b))}),e.$emit("$includeContentRequested",b)):m()}),e.$on("$destroy",m)}}}]).directive("uibTooltipClasses",["$uibPosition",function(a){return{restrict:"A",link:function(b,c,d){if(b.placement){var e=a.parsePlacement(b.placement);c.addClass(e[0])}b.popupClass&&c.addClass(b.popupClass),b.animation()&&c.addClass(d.tooltipAnimationClass)}}}]).directive("uibTooltipPopup",function(){return{replace:!0,scope:{content:"@",placement:"@",popupClass:"@",animation:"&",isOpen:"&"},templateUrl:"uib/template/tooltip/tooltip-popup.html"}}).directive("uibTooltip",["$uibTooltip",function(a){return a("uibTooltip","tooltip","mouseenter")}]).directive("uibTooltipTemplatePopup",function(){return{replace:!0,scope:{contentExp:"&",placement:"@",popupClass:"@",animation:"&",isOpen:"&",originScope:"&"},templateUrl:"uib/template/tooltip/tooltip-template-popup.html"}}).directive("uibTooltipTemplate",["$uibTooltip",function(a){return a("uibTooltipTemplate","tooltip","mouseenter",{useContentExp:!0})}]).directive("uibTooltipHtmlPopup",function(){return{replace:!0,scope:{contentExp:"&",placement:"@",popupClass:"@",animation:"&",isOpen:"&"},templateUrl:"uib/template/tooltip/tooltip-html-popup.html"}}).directive("uibTooltipHtml",["$uibTooltip",function(a){return a("uibTooltipHtml","tooltip","mouseenter",{useContentExp:!0})}]),angular.module("ui.bootstrap.popover",["ui.bootstrap.tooltip"]).directive("uibPopoverTemplatePopup",function(){return{replace:!0,scope:{uibTitle:"@",contentExp:"&",placement:"@",popupClass:"@",animation:"&",isOpen:"&",originScope:"&"},templateUrl:"uib/template/popover/popover-template.html"}}).directive("uibPopoverTemplate",["$uibTooltip",function(a){return a("uibPopoverTemplate","popover","click",{useContentExp:!0})}]).directive("uibPopoverHtmlPopup",function(){return{replace:!0,scope:{contentExp:"&",uibTitle:"@",placement:"@",popupClass:"@",animation:"&",isOpen:"&"},templateUrl:"uib/template/popover/popover-html.html"}}).directive("uibPopoverHtml",["$uibTooltip",function(a){return a("uibPopoverHtml","popover","click",{useContentExp:!0})}]).directive("uibPopoverPopup",function(){return{replace:!0,scope:{uibTitle:"@",content:"@",placement:"@",popupClass:"@",animation:"&",isOpen:"&"},templateUrl:"uib/template/popover/popover.html"}}).directive("uibPopover",["$uibTooltip",function(a){return a("uibPopover","popover","click")}]),angular.module("ui.bootstrap.progressbar",[]).constant("uibProgressConfig",{animate:!0,max:100}).controller("UibProgressController",["$scope","$attrs","uibProgressConfig",function(a,b,c){function d(){return angular.isDefined(a.maxParam)?a.maxParam:c.max}var e=this,f=angular.isDefined(b.animate)?a.$parent.$eval(b.animate):c.animate;this.bars=[],a.max=d(),this.addBar=function(a,b,c){f||b.css({transition:"none"}),this.bars.push(a),a.max=d(),a.title=c&&angular.isDefined(c.title)?c.title:"progressbar",a.$watch("value",function(b){a.recalculatePercentage()}),a.recalculatePercentage=function(){var b=e.bars.reduce(function(a,b){return b.percent=+(100*b.value/b.max).toFixed(2),a+b.percent},0);b>100&&(a.percent-=b-100)},a.$on("$destroy",function(){b=null,e.removeBar(a)})},this.removeBar=function(a){this.bars.splice(this.bars.indexOf(a),1),this.bars.forEach(function(a){a.recalculatePercentage()})},a.$watch("maxParam",function(a){e.bars.forEach(function(a){a.max=d(),a.recalculatePercentage()})})}]).directive("uibProgress",function(){return{replace:!0,transclude:!0,controller:"UibProgressController",require:"uibProgress",scope:{maxParam:"=?max"},templateUrl:"uib/template/progressbar/progress.html"}}).directive("uibBar",function(){return{replace:!0,transclude:!0,require:"^uibProgress",scope:{value:"=",type:"@"},templateUrl:"uib/template/progressbar/bar.html",link:function(a,b,c,d){d.addBar(a,b,c)}}}).directive("uibProgressbar",function(){return{replace:!0,transclude:!0,controller:"UibProgressController",scope:{value:"=",maxParam:"=?max",type:"@"},templateUrl:"uib/template/progressbar/progressbar.html",link:function(a,b,c,d){d.addBar(a,angular.element(b.children()[0]),{title:c.title})}}}),angular.module("ui.bootstrap.rating",[]).constant("uibRatingConfig",{max:5,stateOn:null,stateOff:null,enableReset:!0,titles:["one","two","three","four","five"]}).controller("UibRatingController",["$scope","$attrs","uibRatingConfig",function(a,b,c){var d={$setViewValue:angular.noop},e=this;this.init=function(e){d=e,d.$render=this.render,d.$formatters.push(function(a){return angular.isNumber(a)&&a<<0!==a&&(a=Math.round(a)),a}),this.stateOn=angular.isDefined(b.stateOn)?a.$parent.$eval(b.stateOn):c.stateOn,this.stateOff=angular.isDefined(b.stateOff)?a.$parent.$eval(b.stateOff):c.stateOff,this.enableReset=angular.isDefined(b.enableReset)?a.$parent.$eval(b.enableReset):c.enableReset;var f=angular.isDefined(b.titles)?a.$parent.$eval(b.titles):c.titles;this.titles=angular.isArray(f)&&f.length>0?f:c.titles;var g=angular.isDefined(b.ratingStates)?a.$parent.$eval(b.ratingStates):new Array(angular.isDefined(b.max)?a.$parent.$eval(b.max):c.max);a.range=this.buildTemplateObjects(g)},this.buildTemplateObjects=function(a){for(var b=0,c=a.length;c>b;b++)a[b]=angular.extend({index:b},{stateOn:this.stateOn,stateOff:this.stateOff,title:this.getTitle(b)},a[b]);return a},this.getTitle=function(a){return a>=this.titles.length?a+1:this.titles[a]},a.rate=function(b){if(!a.readonly&&b>=0&&b<=a.range.length){var c=e.enableReset&&d.$viewValue===b?0:b;d.$setViewValue(c),d.$render()}},a.enter=function(b){a.readonly||(a.value=b),a.onHover({value:b})},a.reset=function(){a.value=d.$viewValue,a.onLeave()},a.onKeydown=function(b){/(37|38|39|40)/.test(b.which)&&(b.preventDefault(),b.stopPropagation(),a.rate(a.value+(38===b.which||39===b.which?1:-1)))},this.render=function(){a.value=d.$viewValue,a.title=e.getTitle(a.value-1)}}]).directive("uibRating",function(){return{require:["uibRating","ngModel"],scope:{readonly:"=?readOnly",onHover:"&",onLeave:"&"},controller:"UibRatingController",templateUrl:"uib/template/rating/rating.html",replace:!0,link:function(a,b,c,d){var e=d[0],f=d[1];e.init(f)}}}),angular.module("ui.bootstrap.tabs",[]).controller("UibTabsetController",["$scope",function(a){function b(a){for(var b=0;b<d.tabs.length;b++)if(d.tabs[b].index===a)return b}var c,d=this;d.tabs=[],d.select=function(a,f){if(!e){var g=b(c),h=d.tabs[g];if(h){if(h.tab.onDeselect({$event:f}),f&&f.isDefaultPrevented())return;h.tab.active=!1}var i=d.tabs[a];i?(i.tab.onSelect({$event:f}),i.tab.active=!0,d.active=i.index,c=i.index):!i&&angular.isNumber(c)&&(d.active=null,c=null)}},d.addTab=function(a){if(d.tabs.push({tab:a,index:a.index}),d.tabs.sort(function(a,b){return a.index>b.index?1:a.index<b.index?-1:0}),a.index===d.active||!angular.isNumber(d.active)&&1===d.tabs.length){var c=b(a.index);d.select(c)}},d.removeTab=function(a){for(var b,c=0;c<d.tabs.length;c++)if(d.tabs[c].tab===a){b=c;break}if(d.tabs[b].index===d.active){var e=b===d.tabs.length-1?b-1:b+1%d.tabs.length;d.select(e)}d.tabs.splice(b,1)},a.$watch("tabset.active",function(a){angular.isNumber(a)&&a!==c&&d.select(b(a))});var e;a.$on("$destroy",function(){e=!0})}]).directive("uibTabset",function(){return{transclude:!0,replace:!0,scope:{},bindToController:{active:"=?",type:"@"},controller:"UibTabsetController",controllerAs:"tabset",templateUrl:function(a,b){return b.templateUrl||"uib/template/tabs/tabset.html"},link:function(a,b,c){a.vertical=angular.isDefined(c.vertical)?a.$parent.$eval(c.vertical):!1,a.justified=angular.isDefined(c.justified)?a.$parent.$eval(c.justified):!1,angular.isUndefined(c.active)&&(a.active=0)}}}).directive("uibTab",["$parse",function(a){return{require:"^uibTabset",replace:!0,templateUrl:function(a,b){return b.templateUrl||"uib/template/tabs/tab.html"},transclude:!0,scope:{heading:"@",index:"=?",classes:"@?",onSelect:"&select",onDeselect:"&deselect"},controller:function(){},controllerAs:"tab",link:function(b,c,d,e,f){b.disabled=!1,d.disable&&b.$parent.$watch(a(d.disable),function(a){b.disabled=!!a}),angular.isUndefined(d.index)&&(e.tabs&&e.tabs.length?b.index=Math.max.apply(null,e.tabs.map(function(a){return a.index}))+1:b.index=0),angular.isUndefined(d.classes)&&(b.classes=""),b.select=function(a){if(!b.disabled){for(var c,d=0;d<e.tabs.length;d++)if(e.tabs[d].tab===b){c=d;break}e.select(c,a)}},e.addTab(b),b.$on("$destroy",function(){e.removeTab(b)}),b.$transcludeFn=f}}}]).directive("uibTabHeadingTransclude",function(){return{restrict:"A",require:"^uibTab",link:function(a,b){a.$watch("headingElement",function(a){a&&(b.html(""),b.append(a))})}}}).directive("uibTabContentTransclude",function(){function a(a){return a.tagName&&(a.hasAttribute("uib-tab-heading")||a.hasAttribute("data-uib-tab-heading")||a.hasAttribute("x-uib-tab-heading")||"uib-tab-heading"===a.tagName.toLowerCase()||"data-uib-tab-heading"===a.tagName.toLowerCase()||"x-uib-tab-heading"===a.tagName.toLowerCase()||"uib:tab-heading"===a.tagName.toLowerCase())}return{restrict:"A",require:"^uibTabset",link:function(b,c,d){var e=b.$eval(d.uibTabContentTransclude).tab;e.$transcludeFn(e.$parent,function(b){angular.forEach(b,function(b){a(b)?e.headingElement=b:c.append(b)})})}}}),angular.module("ui.bootstrap.timepicker",[]).constant("uibTimepickerConfig",{hourStep:1,minuteStep:1,secondStep:1,showMeridian:!0,showSeconds:!1,meridians:null,readonlyInput:!1,mousewheel:!0,arrowkeys:!0,showSpinners:!0,templateUrl:"uib/template/timepicker/timepicker.html"}).controller("UibTimepickerController",["$scope","$element","$attrs","$parse","$log","$locale","uibTimepickerConfig",function(a,b,c,d,e,f,g){function h(){var b=+a.hours,c=a.showMeridian?b>0&&13>b:b>=0&&24>b;return c&&""!==a.hours?(a.showMeridian&&(12===b&&(b=0),a.meridian===v[1]&&(b+=12)),b):void 0}function i(){var b=+a.minutes,c=b>=0&&60>b;return c&&""!==a.minutes?b:void 0}function j(){var b=+a.seconds;return b>=0&&60>b?b:void 0}function k(a,b){return null===a?"":angular.isDefined(a)&&a.toString().length<2&&!b?"0"+a:a.toString()}function l(a){m(),u.$setViewValue(new Date(s)),n(a)}function m(){u.$setValidity("time",!0),a.invalidHours=!1,a.invalidMinutes=!1,a.invalidSeconds=!1}function n(b){if(u.$modelValue){var c=s.getHours(),d=s.getMinutes(),e=s.getSeconds();a.showMeridian&&(c=0===c||12===c?12:c%12),a.hours="h"===b?c:k(c,!w),"m"!==b&&(a.minutes=k(d)),a.meridian=s.getHours()<12?v[0]:v[1],"s"!==b&&(a.seconds=k(e)),a.meridian=s.getHours()<12?v[0]:v[1]}else a.hours=null,a.minutes=null,a.seconds=null,a.meridian=v[0]}function o(a){s=q(s,a),l()}function p(a,b){return q(a,60*b)}function q(a,b){var c=new Date(a.getTime()+1e3*b),d=new Date(a);return d.setHours(c.getHours(),c.getMinutes(),c.getSeconds()),d}function r(){return(null===a.hours||""===a.hours)&&(null===a.minutes||""===a.minutes)&&(!a.showSeconds||a.showSeconds&&(null===a.seconds||""===a.seconds))}var s=new Date,t=[],u={$setViewValue:angular.noop},v=angular.isDefined(c.meridians)?a.$parent.$eval(c.meridians):g.meridians||f.DATETIME_FORMATS.AMPMS,w=angular.isDefined(c.padHours)?a.$parent.$eval(c.padHours):!0;a.tabindex=angular.isDefined(c.tabindex)?c.tabindex:0,b.removeAttr("tabindex"),this.init=function(b,d){u=b,u.$render=this.render,u.$formatters.unshift(function(a){return a?new Date(a):null});var e=d.eq(0),f=d.eq(1),h=d.eq(2),i=angular.isDefined(c.mousewheel)?a.$parent.$eval(c.mousewheel):g.mousewheel;i&&this.setupMousewheelEvents(e,f,h);var j=angular.isDefined(c.arrowkeys)?a.$parent.$eval(c.arrowkeys):g.arrowkeys;j&&this.setupArrowkeyEvents(e,f,h),a.readonlyInput=angular.isDefined(c.readonlyInput)?a.$parent.$eval(c.readonlyInput):g.readonlyInput,this.setupInputEvents(e,f,h)};var x=g.hourStep;c.hourStep&&t.push(a.$parent.$watch(d(c.hourStep),function(a){x=+a}));var y=g.minuteStep;c.minuteStep&&t.push(a.$parent.$watch(d(c.minuteStep),function(a){y=+a}));var z;t.push(a.$parent.$watch(d(c.min),function(a){var b=new Date(a);z=isNaN(b)?void 0:b}));var A;t.push(a.$parent.$watch(d(c.max),function(a){var b=new Date(a);A=isNaN(b)?void 0:b}));var B=!1;c.ngDisabled&&t.push(a.$parent.$watch(d(c.ngDisabled),function(a){B=a})),a.noIncrementHours=function(){var a=p(s,60*x);return B||a>A||s>a&&z>a},a.noDecrementHours=function(){var a=p(s,60*-x);return B||z>a||a>s&&a>A},a.noIncrementMinutes=function(){var a=p(s,y);return B||a>A||s>a&&z>a},a.noDecrementMinutes=function(){var a=p(s,-y);return B||z>a||a>s&&a>A},a.noIncrementSeconds=function(){var a=q(s,C);return B||a>A||s>a&&z>a},a.noDecrementSeconds=function(){var a=q(s,-C);return B||z>a||a>s&&a>A},a.noToggleMeridian=function(){return s.getHours()<12?B||p(s,720)>A:B||p(s,-720)<z};var C=g.secondStep;c.secondStep&&t.push(a.$parent.$watch(d(c.secondStep),function(a){C=+a})),a.showSeconds=g.showSeconds,c.showSeconds&&t.push(a.$parent.$watch(d(c.showSeconds),function(b){a.showSeconds=!!b})),a.showMeridian=g.showMeridian,c.showMeridian&&t.push(a.$parent.$watch(d(c.showMeridian),function(b){if(a.showMeridian=!!b,u.$error.time){var c=h(),d=i();angular.isDefined(c)&&angular.isDefined(d)&&(s.setHours(c),l())}else n()})),this.setupMousewheelEvents=function(b,c,d){var e=function(a){a.originalEvent&&(a=a.originalEvent);var b=a.wheelDelta?a.wheelDelta:-a.deltaY;return a.detail||b>0};b.bind("mousewheel wheel",function(b){B||a.$apply(e(b)?a.incrementHours():a.decrementHours()),b.preventDefault()}),c.bind("mousewheel wheel",function(b){B||a.$apply(e(b)?a.incrementMinutes():a.decrementMinutes()),b.preventDefault()}),d.bind("mousewheel wheel",function(b){B||a.$apply(e(b)?a.incrementSeconds():a.decrementSeconds()),b.preventDefault()})},this.setupArrowkeyEvents=function(b,c,d){b.bind("keydown",function(b){B||(38===b.which?(b.preventDefault(),a.incrementHours(),a.$apply()):40===b.which&&(b.preventDefault(),a.decrementHours(),a.$apply()))}),c.bind("keydown",function(b){B||(38===b.which?(b.preventDefault(),a.incrementMinutes(),a.$apply()):40===b.which&&(b.preventDefault(),a.decrementMinutes(),a.$apply()))}),d.bind("keydown",function(b){B||(38===b.which?(b.preventDefault(),a.incrementSeconds(),a.$apply()):40===b.which&&(b.preventDefault(),a.decrementSeconds(),a.$apply()))})},this.setupInputEvents=function(b,c,d){if(a.readonlyInput)return a.updateHours=angular.noop,a.updateMinutes=angular.noop,void(a.updateSeconds=angular.noop);var e=function(b,c,d){u.$setViewValue(null),u.$setValidity("time",!1),angular.isDefined(b)&&(a.invalidHours=b),angular.isDefined(c)&&(a.invalidMinutes=c),angular.isDefined(d)&&(a.invalidSeconds=d)};a.updateHours=function(){var a=h(),b=i();u.$setDirty(),angular.isDefined(a)&&angular.isDefined(b)?(s.setHours(a),s.setMinutes(b),z>s||s>A?e(!0):l("h")):e(!0)},b.bind("blur",function(b){u.$setTouched(),r()?m():null===a.hours||""===a.hours?e(!0):!a.invalidHours&&a.hours<10&&a.$apply(function(){a.hours=k(a.hours,!w)})}),a.updateMinutes=function(){var a=i(),b=h();u.$setDirty(),angular.isDefined(a)&&angular.isDefined(b)?(s.setHours(b),s.setMinutes(a),z>s||s>A?e(void 0,!0):l("m")):e(void 0,!0)},c.bind("blur",function(b){u.$setTouched(),r()?m():null===a.minutes?e(void 0,!0):!a.invalidMinutes&&a.minutes<10&&a.$apply(function(){a.minutes=k(a.minutes)})}),a.updateSeconds=function(){var a=j();u.$setDirty(),angular.isDefined(a)?(s.setSeconds(a),l("s")):e(void 0,void 0,!0)},d.bind("blur",function(b){r()?m():!a.invalidSeconds&&a.seconds<10&&a.$apply(function(){a.seconds=k(a.seconds)})})},this.render=function(){var b=u.$viewValue;isNaN(b)?(u.$setValidity("time",!1),e.error('Timepicker directive: "ng-model" value must be a Date object, a number of milliseconds since 01.01.1970 or a string representing an RFC2822 or ISO 8601 date.')):(b&&(s=b),z>s||s>A?(u.$setValidity("time",!1),a.invalidHours=!0,a.invalidMinutes=!0):m(),n())},a.showSpinners=angular.isDefined(c.showSpinners)?a.$parent.$eval(c.showSpinners):g.showSpinners,a.incrementHours=function(){a.noIncrementHours()||o(60*x*60)},a.decrementHours=function(){a.noDecrementHours()||o(60*-x*60)},a.incrementMinutes=function(){a.noIncrementMinutes()||o(60*y)},a.decrementMinutes=function(){a.noDecrementMinutes()||o(60*-y)},a.incrementSeconds=function(){a.noIncrementSeconds()||o(C)},a.decrementSeconds=function(){a.noDecrementSeconds()||o(-C)},a.toggleMeridian=function(){var b=i(),c=h();a.noToggleMeridian()||(angular.isDefined(b)&&angular.isDefined(c)?o(720*(s.getHours()<12?60:-60)):a.meridian=a.meridian===v[0]?v[1]:v[0])},a.blur=function(){u.$setTouched()},a.$on("$destroy",function(){for(;t.length;)t.shift()()})}]).directive("uibTimepicker",["uibTimepickerConfig",function(a){return{require:["uibTimepicker","?^ngModel"],controller:"UibTimepickerController",controllerAs:"timepicker",replace:!0,scope:{},templateUrl:function(b,c){return c.templateUrl||a.templateUrl},link:function(a,b,c,d){var e=d[0],f=d[1];f&&e.init(f,b.find("input"))}}}]),angular.module("ui.bootstrap.typeahead",["ui.bootstrap.debounce","ui.bootstrap.position"]).factory("uibTypeaheadParser",["$parse",function(a){var b=/^\s*([\s\S]+?)(?:\s+as\s+([\s\S]+?))?\s+for\s+(?:([\$\w][\$\w\d]*))\s+in\s+([\s\S]+?)$/;return{parse:function(c){var d=c.match(b);if(!d)throw new Error('Expected typeahead specification in form of "_modelValue_ (as _label_)? for _item_ in _collection_" but got "'+c+'".');return{itemName:d[3],source:a(d[4]),viewMapper:a(d[2]||d[1]),modelMapper:a(d[1])}}}}]).controller("UibTypeaheadController",["$scope","$element","$attrs","$compile","$parse","$q","$timeout","$document","$window","$rootScope","$$debounce","$uibPosition","uibTypeaheadParser",function(a,b,c,d,e,f,g,h,i,j,k,l,m){function n(){N.moveInProgress||(N.moveInProgress=!0,N.$digest()),Y()}function o(){N.position=D?l.offset(b):l.position(b),N.position.top+=b.prop("offsetHeight")}var p,q,r=[9,13,27,38,40],s=200,t=a.$eval(c.typeaheadMinLength);t||0===t||(t=1),a.$watch(c.typeaheadMinLength,function(a){t=a||0===a?a:1});var u=a.$eval(c.typeaheadWaitMs)||0,v=a.$eval(c.typeaheadEditable)!==!1;a.$watch(c.typeaheadEditable,function(a){v=a!==!1});var w,x,y=e(c.typeaheadLoading).assign||angular.noop,z=e(c.typeaheadOnSelect),A=angular.isDefined(c.typeaheadSelectOnBlur)?a.$eval(c.typeaheadSelectOnBlur):!1,B=e(c.typeaheadNoResults).assign||angular.noop,C=c.typeaheadInputFormatter?e(c.typeaheadInputFormatter):void 0,D=c.typeaheadAppendToBody?a.$eval(c.typeaheadAppendToBody):!1,E=c.typeaheadAppendTo?a.$eval(c.typeaheadAppendTo):null,F=a.$eval(c.typeaheadFocusFirst)!==!1,G=c.typeaheadSelectOnExact?a.$eval(c.typeaheadSelectOnExact):!1,H=e(c.typeaheadIsOpen).assign||angular.noop,I=a.$eval(c.typeaheadShowHint)||!1,J=e(c.ngModel),K=e(c.ngModel+"($$$p)"),L=function(b,c){return angular.isFunction(J(a))&&q&&q.$options&&q.$options.getterSetter?K(b,{$$$p:c}):J.assign(b,c)},M=m.parse(c.uibTypeahead),N=a.$new(),O=a.$on("$destroy",function(){N.$destroy()});N.$on("$destroy",O);var P="typeahead-"+N.$id+"-"+Math.floor(1e4*Math.random());b.attr({"aria-autocomplete":"list","aria-expanded":!1,"aria-owns":P});var Q,R;I&&(Q=angular.element("<div></div>"),Q.css("position","relative"),b.after(Q),R=b.clone(),R.attr("placeholder",""),R.attr("tabindex","-1"),R.val(""),R.css({position:"absolute",top:"0px",left:"0px","border-color":"transparent","box-shadow":"none",opacity:1,background:"none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255)",color:"#999"}),b.css({position:"relative","vertical-align":"top","background-color":"transparent"}),Q.append(R),R.after(b));var S=angular.element("<div uib-typeahead-popup></div>");S.attr({id:P,matches:"matches",active:"activeIdx",select:"select(activeIdx, evt)","move-in-progress":"moveInProgress",query:"query",position:"position","assign-is-open":"assignIsOpen(isOpen)",debounce:"debounceUpdate"}),angular.isDefined(c.typeaheadTemplateUrl)&&S.attr("template-url",c.typeaheadTemplateUrl),angular.isDefined(c.typeaheadPopupTemplateUrl)&&S.attr("popup-template-url",c.typeaheadPopupTemplateUrl);var T=function(){I&&R.val("")},U=function(){N.matches=[],N.activeIdx=-1,b.attr("aria-expanded",!1),T()},V=function(a){return P+"-option-"+a};N.$watch("activeIdx",function(a){0>a?b.removeAttr("aria-activedescendant"):b.attr("aria-activedescendant",V(a))});var W=function(a,b){return N.matches.length>b&&a?a.toUpperCase()===N.matches[b].label.toUpperCase():!1},X=function(c,d){var e={$viewValue:c};y(a,!0),B(a,!1),f.when(M.source(a,e)).then(function(f){var g=c===p.$viewValue;if(g&&w)if(f&&f.length>0){N.activeIdx=F?0:-1,B(a,!1),N.matches.length=0;for(var h=0;h<f.length;h++)e[M.itemName]=f[h],N.matches.push({id:V(h),label:M.viewMapper(N,e),model:f[h]});if(N.query=c,o(),b.attr("aria-expanded",!0),G&&1===N.matches.length&&W(c,0)&&(angular.isNumber(N.debounceUpdate)||angular.isObject(N.debounceUpdate)?k(function(){N.select(0,d)},angular.isNumber(N.debounceUpdate)?N.debounceUpdate:N.debounceUpdate["default"]):N.select(0,d)),I){var i=N.matches[0].label;angular.isString(c)&&c.length>0&&i.slice(0,c.length).toUpperCase()===c.toUpperCase()?R.val(c+i.slice(c.length)):R.val("")}}else U(),B(a,!0);g&&y(a,!1)},function(){U(),y(a,!1),B(a,!0)})};D&&(angular.element(i).on("resize",n),h.find("body").on("scroll",n));var Y=k(function(){N.matches.length&&o(),N.moveInProgress=!1},s);N.moveInProgress=!1,N.query=void 0;var Z,$=function(a){Z=g(function(){X(a)},u)},_=function(){Z&&g.cancel(Z)};U(),N.assignIsOpen=function(b){H(a,b)},N.select=function(d,e){var f,h,i={};x=!0,i[M.itemName]=h=N.matches[d].model,f=M.modelMapper(a,i),L(a,f),p.$setValidity("editable",!0),p.$setValidity("parse",!0),z(a,{$item:h,$model:f,$label:M.viewMapper(a,i),$event:e}),U(),N.$eval(c.typeaheadFocusOnSelect)!==!1&&g(function(){b[0].focus()},0,!1)},b.on("keydown",function(b){if(0!==N.matches.length&&-1!==r.indexOf(b.which)){if(-1===N.activeIdx&&(9===b.which||13===b.which)||9===b.which&&b.shiftKey)return U(),void N.$digest();b.preventDefault();var c;switch(b.which){case 9:case 13:N.$apply(function(){angular.isNumber(N.debounceUpdate)||angular.isObject(N.debounceUpdate)?k(function(){N.select(N.activeIdx,b)},angular.isNumber(N.debounceUpdate)?N.debounceUpdate:N.debounceUpdate["default"]):N.select(N.activeIdx,b)});break;case 27:b.stopPropagation(),U(),a.$digest();break;case 38:N.activeIdx=(N.activeIdx>0?N.activeIdx:N.matches.length)-1,N.$digest(),c=S.find("li")[N.activeIdx],c.parentNode.scrollTop=c.offsetTop;break;case 40:N.activeIdx=(N.activeIdx+1)%N.matches.length,N.$digest(),c=S.find("li")[N.activeIdx],c.parentNode.scrollTop=c.offsetTop}}}),b.bind("focus",function(a){w=!0,0!==t||p.$viewValue||g(function(){X(p.$viewValue,a)},0)}),b.bind("blur",function(a){A&&N.matches.length&&-1!==N.activeIdx&&!x&&(x=!0,N.$apply(function(){angular.isObject(N.debounceUpdate)&&angular.isNumber(N.debounceUpdate.blur)?k(function(){N.select(N.activeIdx,a)},N.debounceUpdate.blur):N.select(N.activeIdx,a)})),!v&&p.$error.editable&&(p.$setViewValue(),p.$setValidity("editable",!0),p.$setValidity("parse",!0),b.val("")),w=!1,x=!1});var aa=function(c){b[0]!==c.target&&3!==c.which&&0!==N.matches.length&&(U(),j.$$phase||a.$digest())};h.on("click",aa),a.$on("$destroy",function(){h.off("click",aa),(D||E)&&ba.remove(),D&&(angular.element(i).off("resize",n),h.find("body").off("scroll",n)),S.remove(),I&&Q.remove()});var ba=d(S)(N);D?h.find("body").append(ba):E?angular.element(E).eq(0).append(ba):b.after(ba),this.init=function(b,c){p=b,q=c,N.debounceUpdate=p.$options&&e(p.$options.debounce)(a),p.$parsers.unshift(function(b){return w=!0,0===t||b&&b.length>=t?u>0?(_(),$(b)):X(b):(y(a,!1),_(),U()),v?b:b?void p.$setValidity("editable",!1):(p.$setValidity("editable",!0),null)}),p.$formatters.push(function(b){var c,d,e={};return v||p.$setValidity("editable",!0),C?(e.$model=b,C(a,e)):(e[M.itemName]=b,c=M.viewMapper(a,e),e[M.itemName]=void 0,d=M.viewMapper(a,e),c!==d?c:b)})}}]).directive("uibTypeahead",function(){return{controller:"UibTypeaheadController",require:["ngModel","^?ngModelOptions","uibTypeahead"],link:function(a,b,c,d){d[2].init(d[0],d[1])}}}).directive("uibTypeaheadPopup",["$$debounce",function(a){return{scope:{matches:"=",query:"=",active:"=",position:"&",moveInProgress:"=",select:"&",assignIsOpen:"&",debounce:"&"},replace:!0,templateUrl:function(a,b){return b.popupTemplateUrl||"uib/template/typeahead/typeahead-popup.html"},link:function(b,c,d){b.templateUrl=d.templateUrl,b.isOpen=function(){var a=b.matches.length>0;return b.assignIsOpen({isOpen:a}),a},b.isActive=function(a){return b.active===a},b.selectActive=function(a){b.active=a},b.selectMatch=function(c,d){var e=b.debounce();angular.isNumber(e)||angular.isObject(e)?a(function(){b.select({activeIdx:c,evt:d})},angular.isNumber(e)?e:e["default"]):b.select({activeIdx:c,evt:d})}}}}]).directive("uibTypeaheadMatch",["$templateRequest","$compile","$parse",function(a,b,c){return{scope:{index:"=",match:"=",query:"="},link:function(d,e,f){var g=c(f.templateUrl)(d.$parent)||"uib/template/typeahead/typeahead-match.html";a(g).then(function(a){var c=angular.element(a.trim());e.replaceWith(c),b(c)(d)})}}}]).filter("uibTypeaheadHighlight",["$sce","$injector","$log",function(a,b,c){function d(a){return a.replace(/([.?*+^$[\]\\(){}|-])/g,"\\$1")}function e(a){return/<.*>/g.test(a)}var f;return f=b.has("$sanitize"),function(b,g){return!f&&e(b)&&c.warn("Unsafe use of typeahead please use ngSanitize"),b=g?(""+b).replace(new RegExp(d(g),"gi"),"<strong>$&</strong>"):b,f||(b=a.trustAsHtml(b)),b}}]),angular.module("uib/template/accordion/accordion-group.html",[]).run(["$templateCache",function(a){a.put("uib/template/accordion/accordion-group.html",'<div class="panel" ng-class="panelClass || \'panel-default\'">\n <div role="tab" id="{{::headingId}}" aria-selected="{{isOpen}}" class="panel-heading" ng-keypress="toggleOpen($event)">\n <h4 class="panel-title">\n <a role="button" data-toggle="collapse" href aria-expanded="{{isOpen}}" aria-controls="{{::panelId}}" tabindex="0" class="accordion-toggle" ng-click="toggleOpen()" uib-accordion-transclude="heading"><span uib-accordion-header ng-class="{\'text-muted\': isDisabled}">{{heading}}</span></a>\n </h4>\n </div>\n <div id="{{::panelId}}" aria-labelledby="{{::headingId}}" aria-hidden="{{!isOpen}}" role="tabpanel" class="panel-collapse collapse" uib-collapse="!isOpen">\n <div class="panel-body" ng-transclude></div>\n </div>\n</div>\n')}]),angular.module("uib/template/accordion/accordion.html",[]).run(["$templateCache",function(a){a.put("uib/template/accordion/accordion.html",'<div role="tablist" class="panel-group" ng-transclude></div>')}]),angular.module("uib/template/alert/alert.html",[]).run(["$templateCache",function(a){a.put("uib/template/alert/alert.html",'<div class="alert" ng-class="[\'alert-\' + (type || \'warning\'), closeable ? \'alert-dismissible\' : null]" role="alert">\n <button ng-show="closeable" type="button" class="close" ng-click="close({$event: $event})">\n <span aria-hidden="true">&times;</span>\n <span class="sr-only">Close</span>\n </button>\n <div ng-transclude></div>\n</div>\n')}]),angular.module("uib/template/carousel/carousel.html",[]).run(["$templateCache",function(a){a.put("uib/template/carousel/carousel.html",'<div ng-mouseenter="pause()" ng-mouseleave="play()" class="carousel" ng-swipe-right="prev()" ng-swipe-left="next()">\n <div class="carousel-inner" ng-transclude></div>\n <a role="button" href class="left carousel-control" ng-click="prev()" ng-class="{ disabled: isPrevDisabled() }" ng-show="slides.length > 1">\n <span aria-hidden="true" class="glyphicon glyphicon-chevron-left"></span>\n <span class="sr-only">previous</span>\n </a>\n <a role="button" href class="right carousel-control" ng-click="next()" ng-class="{ disabled: isNextDisabled() }" ng-show="slides.length > 1">\n <span aria-hidden="true" class="glyphicon glyphicon-chevron-right"></span>\n <span class="sr-only">next</span>\n </a>\n <ol class="carousel-indicators" ng-show="slides.length > 1">\n <li ng-repeat="slide in slides | orderBy:indexOfSlide track by $index" ng-class="{ active: isActive(slide) }" ng-click="select(slide)">\n <span class="sr-only">slide {{ $index + 1 }} of {{ slides.length }}<span ng-if="isActive(slide)">, currently active</span></span>\n </li>\n </ol>\n</div>\n');
1768 }]),angular.module("uib/template/carousel/slide.html",[]).run(["$templateCache",function(a){a.put("uib/template/carousel/slide.html",'<div ng-class="{\n \'active\': active\n }" class="item text-center" ng-transclude></div>\n')}]),angular.module("uib/template/datepicker/datepicker.html",[]).run(["$templateCache",function(a){a.put("uib/template/datepicker/datepicker.html",'<div class="uib-datepicker" ng-switch="datepickerMode" role="application" ng-keydown="keydown($event)">\n <uib-daypicker ng-switch-when="day" tabindex="0"></uib-daypicker>\n <uib-monthpicker ng-switch-when="month" tabindex="0"></uib-monthpicker>\n <uib-yearpicker ng-switch-when="year" tabindex="0"></uib-yearpicker>\n</div>\n')}]),angular.module("uib/template/datepicker/day.html",[]).run(["$templateCache",function(a){a.put("uib/template/datepicker/day.html",'<table class="uib-daypicker" role="grid" aria-labelledby="{{::uniqueId}}-title" aria-activedescendant="{{activeDateId}}">\n <thead>\n <tr>\n <th><button type="button" class="btn btn-default btn-sm pull-left uib-left" ng-click="move(-1)" tabindex="-1"><i class="glyphicon glyphicon-chevron-left"></i></button></th>\n <th colspan="{{::5 + showWeeks}}"><button id="{{::uniqueId}}-title" role="heading" aria-live="assertive" aria-atomic="true" type="button" class="btn btn-default btn-sm uib-title" ng-click="toggleMode()" ng-disabled="datepickerMode === maxMode" tabindex="-1"><strong>{{title}}</strong></button></th>\n <th><button type="button" class="btn btn-default btn-sm pull-right uib-right" ng-click="move(1)" tabindex="-1"><i class="glyphicon glyphicon-chevron-right"></i></button></th>\n </tr>\n <tr>\n <th ng-if="showWeeks" class="text-center"></th>\n <th ng-repeat="label in ::labels track by $index" class="text-center"><small aria-label="{{::label.full}}">{{::label.abbr}}</small></th>\n </tr>\n </thead>\n <tbody>\n <tr class="uib-weeks" ng-repeat="row in rows track by $index">\n <td ng-if="showWeeks" class="text-center h6"><em>{{ weekNumbers[$index] }}</em></td>\n <td ng-repeat="dt in row" class="uib-day text-center" role="gridcell"\n id="{{::dt.uid}}"\n ng-class="::dt.customClass">\n <button type="button" class="btn btn-default btn-sm"\n uib-is-class="\n \'btn-info\' for selectedDt,\n \'active\' for activeDt\n on dt"\n ng-click="select(dt.date)"\n ng-disabled="::dt.disabled"\n tabindex="-1"><span ng-class="::{\'text-muted\': dt.secondary, \'text-info\': dt.current}">{{::dt.label}}</span></button>\n </td>\n </tr>\n </tbody>\n</table>\n')}]),angular.module("uib/template/datepicker/month.html",[]).run(["$templateCache",function(a){a.put("uib/template/datepicker/month.html",'<table class="uib-monthpicker" role="grid" aria-labelledby="{{::uniqueId}}-title" aria-activedescendant="{{activeDateId}}">\n <thead>\n <tr>\n <th><button type="button" class="btn btn-default btn-sm pull-left uib-left" ng-click="move(-1)" tabindex="-1"><i class="glyphicon glyphicon-chevron-left"></i></button></th>\n <th><button id="{{::uniqueId}}-title" role="heading" aria-live="assertive" aria-atomic="true" type="button" class="btn btn-default btn-sm uib-title" ng-click="toggleMode()" ng-disabled="datepickerMode === maxMode" tabindex="-1"><strong>{{title}}</strong></button></th>\n <th><button type="button" class="btn btn-default btn-sm pull-right uib-right" ng-click="move(1)" tabindex="-1"><i class="glyphicon glyphicon-chevron-right"></i></button></th>\n </tr>\n </thead>\n <tbody>\n <tr class="uib-months" ng-repeat="row in rows track by $index">\n <td ng-repeat="dt in row" class="uib-month text-center" role="gridcell"\n id="{{::dt.uid}}"\n ng-class="::dt.customClass">\n <button type="button" class="btn btn-default"\n uib-is-class="\n \'btn-info\' for selectedDt,\n \'active\' for activeDt\n on dt"\n ng-click="select(dt.date)"\n ng-disabled="::dt.disabled"\n tabindex="-1"><span ng-class="::{\'text-info\': dt.current}">{{::dt.label}}</span></button>\n </td>\n </tr>\n </tbody>\n</table>\n')}]),angular.module("uib/template/datepicker/year.html",[]).run(["$templateCache",function(a){a.put("uib/template/datepicker/year.html",'<table class="uib-yearpicker" role="grid" aria-labelledby="{{::uniqueId}}-title" aria-activedescendant="{{activeDateId}}">\n <thead>\n <tr>\n <th><button type="button" class="btn btn-default btn-sm pull-left uib-left" ng-click="move(-1)" tabindex="-1"><i class="glyphicon glyphicon-chevron-left"></i></button></th>\n <th colspan="{{::columns - 2}}"><button id="{{::uniqueId}}-title" role="heading" aria-live="assertive" aria-atomic="true" type="button" class="btn btn-default btn-sm uib-title" ng-click="toggleMode()" ng-disabled="datepickerMode === maxMode" tabindex="-1"><strong>{{title}}</strong></button></th>\n <th><button type="button" class="btn btn-default btn-sm pull-right uib-right" ng-click="move(1)" tabindex="-1"><i class="glyphicon glyphicon-chevron-right"></i></button></th>\n </tr>\n </thead>\n <tbody>\n <tr class="uib-years" ng-repeat="row in rows track by $index">\n <td ng-repeat="dt in row" class="uib-year text-center" role="gridcell"\n id="{{::dt.uid}}"\n ng-class="::dt.customClass">\n <button type="button" class="btn btn-default"\n uib-is-class="\n \'btn-info\' for selectedDt,\n \'active\' for activeDt\n on dt"\n ng-click="select(dt.date)"\n ng-disabled="::dt.disabled"\n tabindex="-1"><span ng-class="::{\'text-info\': dt.current}">{{::dt.label}}</span></button>\n </td>\n </tr>\n </tbody>\n</table>\n')}]),angular.module("uib/template/datepickerPopup/popup.html",[]).run(["$templateCache",function(a){a.put("uib/template/datepickerPopup/popup.html",'<div>\n <ul class="uib-datepicker-popup dropdown-menu uib-position-measure" dropdown-nested ng-if="isOpen" ng-keydown="keydown($event)" ng-click="$event.stopPropagation()">\n <li ng-transclude></li>\n <li ng-if="showButtonBar" class="uib-button-bar">\n <span class="btn-group pull-left">\n <button type="button" class="btn btn-sm btn-info uib-datepicker-current" ng-click="select(\'today\', $event)" ng-disabled="isDisabled(\'today\')">{{ getText(\'current\') }}</button>\n <button type="button" class="btn btn-sm btn-danger uib-clear" ng-click="select(null, $event)">{{ getText(\'clear\') }}</button>\n </span>\n <button type="button" class="btn btn-sm btn-success pull-right uib-close" ng-click="close($event)">{{ getText(\'close\') }}</button>\n </li>\n </ul>\n</div>\n')}]),angular.module("uib/template/modal/backdrop.html",[]).run(["$templateCache",function(a){a.put("uib/template/modal/backdrop.html",'<div class="modal-backdrop"\n uib-modal-animation-class="fade"\n modal-in-class="in"\n ng-style="{\'z-index\': 1040 + (index && 1 || 0) + index*10}"\n></div>\n')}]),angular.module("uib/template/modal/window.html",[]).run(["$templateCache",function(a){a.put("uib/template/modal/window.html",'<div modal-render="{{$isRendered}}" tabindex="-1" role="dialog" class="modal"\n uib-modal-animation-class="fade"\n modal-in-class="in"\n ng-style="{\'z-index\': 1050 + index*10, display: \'block\'}">\n <div class="modal-dialog {{size ? \'modal-\' + size : \'\'}}"><div class="modal-content" uib-modal-transclude></div></div>\n</div>\n')}]),angular.module("uib/template/pager/pager.html",[]).run(["$templateCache",function(a){a.put("uib/template/pager/pager.html",'<ul class="pager">\n <li ng-class="{disabled: noPrevious()||ngDisabled, previous: align}"><a href ng-click="selectPage(page - 1, $event)">{{::getText(\'previous\')}}</a></li>\n <li ng-class="{disabled: noNext()||ngDisabled, next: align}"><a href ng-click="selectPage(page + 1, $event)">{{::getText(\'next\')}}</a></li>\n</ul>\n')}]),angular.module("uib/template/pagination/pagination.html",[]).run(["$templateCache",function(a){a.put("uib/template/pagination/pagination.html",'<ul class="pagination">\n <li ng-if="::boundaryLinks" ng-class="{disabled: noPrevious()||ngDisabled}" class="pagination-first"><a href ng-click="selectPage(1, $event)">{{::getText(\'first\')}}</a></li>\n <li ng-if="::directionLinks" ng-class="{disabled: noPrevious()||ngDisabled}" class="pagination-prev"><a href ng-click="selectPage(page - 1, $event)">{{::getText(\'previous\')}}</a></li>\n <li ng-repeat="page in pages track by $index" ng-class="{active: page.active,disabled: ngDisabled&&!page.active}" class="pagination-page"><a href ng-click="selectPage(page.number, $event)">{{page.text}}</a></li>\n <li ng-if="::directionLinks" ng-class="{disabled: noNext()||ngDisabled}" class="pagination-next"><a href ng-click="selectPage(page + 1, $event)">{{::getText(\'next\')}}</a></li>\n <li ng-if="::boundaryLinks" ng-class="{disabled: noNext()||ngDisabled}" class="pagination-last"><a href ng-click="selectPage(totalPages, $event)">{{::getText(\'last\')}}</a></li>\n</ul>\n')}]),angular.module("uib/template/tooltip/tooltip-html-popup.html",[]).run(["$templateCache",function(a){a.put("uib/template/tooltip/tooltip-html-popup.html",'<div class="tooltip"\n tooltip-animation-class="fade"\n uib-tooltip-classes\n ng-class="{ in: isOpen() }">\n <div class="tooltip-arrow"></div>\n <div class="tooltip-inner" ng-bind-html="contentExp()"></div>\n</div>\n')}]),angular.module("uib/template/tooltip/tooltip-popup.html",[]).run(["$templateCache",function(a){a.put("uib/template/tooltip/tooltip-popup.html",'<div class="tooltip"\n tooltip-animation-class="fade"\n uib-tooltip-classes\n ng-class="{ in: isOpen() }">\n <div class="tooltip-arrow"></div>\n <div class="tooltip-inner" ng-bind="content"></div>\n</div>\n')}]),angular.module("uib/template/tooltip/tooltip-template-popup.html",[]).run(["$templateCache",function(a){a.put("uib/template/tooltip/tooltip-template-popup.html",'<div class="tooltip"\n tooltip-animation-class="fade"\n uib-tooltip-classes\n ng-class="{ in: isOpen() }">\n <div class="tooltip-arrow"></div>\n <div class="tooltip-inner"\n uib-tooltip-template-transclude="contentExp()"\n tooltip-template-transclude-scope="originScope()"></div>\n</div>\n')}]),angular.module("uib/template/popover/popover-html.html",[]).run(["$templateCache",function(a){a.put("uib/template/popover/popover-html.html",'<div class="popover"\n tooltip-animation-class="fade"\n uib-tooltip-classes\n ng-class="{ in: isOpen() }">\n <div class="arrow"></div>\n\n <div class="popover-inner">\n <h3 class="popover-title" ng-bind="uibTitle" ng-if="uibTitle"></h3>\n <div class="popover-content" ng-bind-html="contentExp()"></div>\n </div>\n</div>\n')}]),angular.module("uib/template/popover/popover-template.html",[]).run(["$templateCache",function(a){a.put("uib/template/popover/popover-template.html",'<div class="popover"\n tooltip-animation-class="fade"\n uib-tooltip-classes\n ng-class="{ in: isOpen() }">\n <div class="arrow"></div>\n\n <div class="popover-inner">\n <h3 class="popover-title" ng-bind="uibTitle" ng-if="uibTitle"></h3>\n <div class="popover-content"\n uib-tooltip-template-transclude="contentExp()"\n tooltip-template-transclude-scope="originScope()"></div>\n </div>\n</div>\n')}]),angular.module("uib/template/popover/popover.html",[]).run(["$templateCache",function(a){a.put("uib/template/popover/popover.html",'<div class="popover"\n tooltip-animation-class="fade"\n uib-tooltip-classes\n ng-class="{ in: isOpen() }">\n <div class="arrow"></div>\n\n <div class="popover-inner">\n <h3 class="popover-title" ng-bind="uibTitle" ng-if="uibTitle"></h3>\n <div class="popover-content" ng-bind="content"></div>\n </div>\n</div>\n')}]),angular.module("uib/template/progressbar/bar.html",[]).run(["$templateCache",function(a){a.put("uib/template/progressbar/bar.html",'<div class="progress-bar" ng-class="type && \'progress-bar-\' + type" role="progressbar" aria-valuenow="{{value}}" aria-valuemin="0" aria-valuemax="{{max}}" ng-style="{width: (percent < 100 ? percent : 100) + \'%\'}" aria-valuetext="{{percent | number:0}}%" aria-labelledby="{{::title}}" ng-transclude></div>\n')}]),angular.module("uib/template/progressbar/progress.html",[]).run(["$templateCache",function(a){a.put("uib/template/progressbar/progress.html",'<div class="progress" ng-transclude aria-labelledby="{{::title}}"></div>')}]),angular.module("uib/template/progressbar/progressbar.html",[]).run(["$templateCache",function(a){a.put("uib/template/progressbar/progressbar.html",'<div class="progress">\n <div class="progress-bar" ng-class="type && \'progress-bar-\' + type" role="progressbar" aria-valuenow="{{value}}" aria-valuemin="0" aria-valuemax="{{max}}" ng-style="{width: (percent < 100 ? percent : 100) + \'%\'}" aria-valuetext="{{percent | number:0}}%" aria-labelledby="{{::title}}" ng-transclude></div>\n</div>\n')}]),angular.module("uib/template/rating/rating.html",[]).run(["$templateCache",function(a){a.put("uib/template/rating/rating.html",'<span ng-mouseleave="reset()" ng-keydown="onKeydown($event)" tabindex="0" role="slider" aria-valuemin="0" aria-valuemax="{{range.length}}" aria-valuenow="{{value}}" aria-valuetext="{{title}}">\n <span ng-repeat-start="r in range track by $index" class="sr-only">({{ $index < value ? \'*\' : \' \' }})</span>\n <i ng-repeat-end ng-mouseenter="enter($index + 1)" ng-click="rate($index + 1)" class="glyphicon" ng-class="$index < value && (r.stateOn || \'glyphicon-star\') || (r.stateOff || \'glyphicon-star-empty\')" ng-attr-title="{{r.title}}"></i>\n</span>\n')}]),angular.module("uib/template/tabs/tab.html",[]).run(["$templateCache",function(a){a.put("uib/template/tabs/tab.html",'<li ng-class="[{active: active, disabled: disabled}, classes]" class="uib-tab nav-item">\n <a href ng-click="select($event)" class="nav-link" uib-tab-heading-transclude>{{heading}}</a>\n</li>\n')}]),angular.module("uib/template/tabs/tabset.html",[]).run(["$templateCache",function(a){a.put("uib/template/tabs/tabset.html",'<div>\n <ul class="nav nav-{{tabset.type || \'tabs\'}}" ng-class="{\'nav-stacked\': vertical, \'nav-justified\': justified}" ng-transclude></ul>\n <div class="tab-content">\n <div class="tab-pane"\n ng-repeat="tab in tabset.tabs"\n ng-class="{active: tabset.active === tab.index}"\n uib-tab-content-transclude="tab">\n </div>\n </div>\n</div>\n')}]),angular.module("uib/template/timepicker/timepicker.html",[]).run(["$templateCache",function(a){a.put("uib/template/timepicker/timepicker.html",'<table class="uib-timepicker">\n <tbody>\n <tr class="text-center" ng-show="::showSpinners">\n <td class="uib-increment hours"><a ng-click="incrementHours()" ng-class="{disabled: noIncrementHours()}" class="btn btn-link" ng-disabled="noIncrementHours()" tabindex="{{::tabindex}}"><span class="glyphicon glyphicon-chevron-up"></span></a></td>\n <td>&nbsp;</td>\n <td class="uib-increment minutes"><a ng-click="incrementMinutes()" ng-class="{disabled: noIncrementMinutes()}" class="btn btn-link" ng-disabled="noIncrementMinutes()" tabindex="{{::tabindex}}"><span class="glyphicon glyphicon-chevron-up"></span></a></td>\n <td ng-show="showSeconds">&nbsp;</td>\n <td ng-show="showSeconds" class="uib-increment seconds"><a ng-click="incrementSeconds()" ng-class="{disabled: noIncrementSeconds()}" class="btn btn-link" ng-disabled="noIncrementSeconds()" tabindex="{{::tabindex}}"><span class="glyphicon glyphicon-chevron-up"></span></a></td>\n <td ng-show="showMeridian"></td>\n </tr>\n <tr>\n <td class="form-group uib-time hours" ng-class="{\'has-error\': invalidHours}">\n <input type="text" placeholder="HH" ng-model="hours" ng-change="updateHours()" class="form-control text-center" ng-readonly="::readonlyInput" maxlength="2" tabindex="{{::tabindex}}" ng-disabled="noIncrementHours()" ng-blur="blur()">\n </td>\n <td class="uib-separator">:</td>\n <td class="form-group uib-time minutes" ng-class="{\'has-error\': invalidMinutes}">\n <input type="text" placeholder="MM" ng-model="minutes" ng-change="updateMinutes()" class="form-control text-center" ng-readonly="::readonlyInput" maxlength="2" tabindex="{{::tabindex}}" ng-disabled="noIncrementMinutes()" ng-blur="blur()">\n </td>\n <td ng-show="showSeconds" class="uib-separator">:</td>\n <td class="form-group uib-time seconds" ng-class="{\'has-error\': invalidSeconds}" ng-show="showSeconds">\n <input type="text" placeholder="SS" ng-model="seconds" ng-change="updateSeconds()" class="form-control text-center" ng-readonly="readonlyInput" maxlength="2" tabindex="{{::tabindex}}" ng-disabled="noIncrementSeconds()" ng-blur="blur()">\n </td>\n <td ng-show="showMeridian" class="uib-time am-pm"><button type="button" ng-class="{disabled: noToggleMeridian()}" class="btn btn-default text-center" ng-click="toggleMeridian()" ng-disabled="noToggleMeridian()" tabindex="{{::tabindex}}">{{meridian}}</button></td>\n </tr>\n <tr class="text-center" ng-show="::showSpinners">\n <td class="uib-decrement hours"><a ng-click="decrementHours()" ng-class="{disabled: noDecrementHours()}" class="btn btn-link" ng-disabled="noDecrementHours()" tabindex="{{::tabindex}}"><span class="glyphicon glyphicon-chevron-down"></span></a></td>\n <td>&nbsp;</td>\n <td class="uib-decrement minutes"><a ng-click="decrementMinutes()" ng-class="{disabled: noDecrementMinutes()}" class="btn btn-link" ng-disabled="noDecrementMinutes()" tabindex="{{::tabindex}}"><span class="glyphicon glyphicon-chevron-down"></span></a></td>\n <td ng-show="showSeconds">&nbsp;</td>\n <td ng-show="showSeconds" class="uib-decrement seconds"><a ng-click="decrementSeconds()" ng-class="{disabled: noDecrementSeconds()}" class="btn btn-link" ng-disabled="noDecrementSeconds()" tabindex="{{::tabindex}}"><span class="glyphicon glyphicon-chevron-down"></span></a></td>\n <td ng-show="showMeridian"></td>\n </tr>\n </tbody>\n</table>\n')}]),angular.module("uib/template/typeahead/typeahead-match.html",[]).run(["$templateCache",function(a){a.put("uib/template/typeahead/typeahead-match.html",'<a href\n tabindex="-1"\n ng-bind-html="match.label | uibTypeaheadHighlight:query"\n ng-attr-title="{{match.label}}"></a>\n')}]),angular.module("uib/template/typeahead/typeahead-popup.html",[]).run(["$templateCache",function(a){a.put("uib/template/typeahead/typeahead-popup.html",'<ul class="dropdown-menu" ng-show="isOpen() && !moveInProgress" ng-style="{top: position().top+\'px\', left: position().left+\'px\'}" role="listbox" aria-hidden="{{!isOpen()}}">\n <li ng-repeat="match in matches track by $index" ng-class="{active: isActive($index) }" ng-mouseenter="selectActive($index)" ng-click="selectMatch($index, $event)" role="option" id="{{::match.id}}">\n <div uib-typeahead-match index="$index" match="match" query="query" template-url="templateUrl"></div>\n </li>\n</ul>\n')}]),angular.module("ui.bootstrap.carousel").run(function(){!angular.$$csp().noInlineStyle&&!angular.$$uibCarouselCss&&angular.element(document).find("head").prepend('<style type="text/css">.ng-animate.item:not(.left):not(.right){-webkit-transition:0s ease-in-out left;transition:0s ease-in-out left}</style>'),angular.$$uibCarouselCss=!0}),angular.module("ui.bootstrap.datepicker").run(function(){!angular.$$csp().noInlineStyle&&!angular.$$uibDatepickerCss&&angular.element(document).find("head").prepend('<style type="text/css">.uib-datepicker .uib-title{width:100%;}.uib-day button,.uib-month button,.uib-year button{min-width:100%;}.uib-left,.uib-right{width:100%}</style>'),angular.$$uibDatepickerCss=!0}),angular.module("ui.bootstrap.position").run(function(){!angular.$$csp().noInlineStyle&&!angular.$$uibPositionCss&&angular.element(document).find("head").prepend('<style type="text/css">.uib-position-measure{display:block !important;visibility:hidden !important;position:absolute !important;top:-9999px !important;left:-9999px !important;}.uib-position-scrollbar-measure{position:absolute !important;top:-9999px !important;width:50px !important;height:50px !important;overflow:scroll !important;}.uib-position-body-scrollbar-measure{overflow:scroll !important;}</style>'),angular.$$uibPositionCss=!0}),angular.module("ui.bootstrap.datepickerPopup").run(function(){!angular.$$csp().noInlineStyle&&!angular.$$uibDatepickerpopupCss&&angular.element(document).find("head").prepend('<style type="text/css">.uib-datepicker-popup.dropdown-menu{display:block;float:none;margin:0;}.uib-button-bar{padding:10px 9px 2px;}</style>'),angular.$$uibDatepickerpopupCss=!0}),angular.module("ui.bootstrap.tooltip").run(function(){!angular.$$csp().noInlineStyle&&!angular.$$uibTooltipCss&&angular.element(document).find("head").prepend('<style type="text/css">[uib-tooltip-popup].tooltip.top-left > .tooltip-arrow,[uib-tooltip-popup].tooltip.top-right > .tooltip-arrow,[uib-tooltip-popup].tooltip.bottom-left > .tooltip-arrow,[uib-tooltip-popup].tooltip.bottom-right > .tooltip-arrow,[uib-tooltip-popup].tooltip.left-top > .tooltip-arrow,[uib-tooltip-popup].tooltip.left-bottom > .tooltip-arrow,[uib-tooltip-popup].tooltip.right-top > .tooltip-arrow,[uib-tooltip-popup].tooltip.right-bottom > .tooltip-arrow,[uib-tooltip-html-popup].tooltip.top-left > .tooltip-arrow,[uib-tooltip-html-popup].tooltip.top-right > .tooltip-arrow,[uib-tooltip-html-popup].tooltip.bottom-left > .tooltip-arrow,[uib-tooltip-html-popup].tooltip.bottom-right > .tooltip-arrow,[uib-tooltip-html-popup].tooltip.left-top > .tooltip-arrow,[uib-tooltip-html-popup].tooltip.left-bottom > .tooltip-arrow,[uib-tooltip-html-popup].tooltip.right-top > .tooltip-arrow,[uib-tooltip-html-popup].tooltip.right-bottom > .tooltip-arrow,[uib-tooltip-template-popup].tooltip.top-left > .tooltip-arrow,[uib-tooltip-template-popup].tooltip.top-right > .tooltip-arrow,[uib-tooltip-template-popup].tooltip.bottom-left > .tooltip-arrow,[uib-tooltip-template-popup].tooltip.bottom-right > .tooltip-arrow,[uib-tooltip-template-popup].tooltip.left-top > .tooltip-arrow,[uib-tooltip-template-popup].tooltip.left-bottom > .tooltip-arrow,[uib-tooltip-template-popup].tooltip.right-top > .tooltip-arrow,[uib-tooltip-template-popup].tooltip.right-bottom > .tooltip-arrow,[uib-popover-popup].popover.top-left > .arrow,[uib-popover-popup].popover.top-right > .arrow,[uib-popover-popup].popover.bottom-left > .arrow,[uib-popover-popup].popover.bottom-right > .arrow,[uib-popover-popup].popover.left-top > .arrow,[uib-popover-popup].popover.left-bottom > .arrow,[uib-popover-popup].popover.right-top > .arrow,[uib-popover-popup].popover.right-bottom > .arrow,[uib-popover-html-popup].popover.top-left > .arrow,[uib-popover-html-popup].popover.top-right > .arrow,[uib-popover-html-popup].popover.bottom-left > .arrow,[uib-popover-html-popup].popover.bottom-right > .arrow,[uib-popover-html-popup].popover.left-top > .arrow,[uib-popover-html-popup].popover.left-bottom > .arrow,[uib-popover-html-popup].popover.right-top > .arrow,[uib-popover-html-popup].popover.right-bottom > .arrow,[uib-popover-template-popup].popover.top-left > .arrow,[uib-popover-template-popup].popover.top-right > .arrow,[uib-popover-template-popup].popover.bottom-left > .arrow,[uib-popover-template-popup].popover.bottom-right > .arrow,[uib-popover-template-popup].popover.left-top > .arrow,[uib-popover-template-popup].popover.left-bottom > .arrow,[uib-popover-template-popup].popover.right-top > .arrow,[uib-popover-template-popup].popover.right-bottom > .arrow{top:auto;bottom:auto;left:auto;right:auto;margin:0;}[uib-popover-popup].popover,[uib-popover-html-popup].popover,[uib-popover-template-popup].popover{display:block !important;}</style>'),angular.$$uibTooltipCss=!0}),angular.module("ui.bootstrap.timepicker").run(function(){!angular.$$csp().noInlineStyle&&!angular.$$uibTimepickerCss&&angular.element(document).find("head").prepend('<style type="text/css">.uib-time input{width:50px;}</style>'),angular.$$uibTimepickerCss=!0}),angular.module("ui.bootstrap.typeahead").run(function(){!angular.$$csp().noInlineStyle&&!angular.$$uibTypeaheadCss&&angular.element(document).find("head").prepend('<style type="text/css">[uib-typeahead-popup].dropdown-menu{display:block;}</style>'),angular.$$uibTypeaheadCss=!0});
1768 }]),angular.module("uib/template/carousel/slide.html",[]).run(["$templateCache",function(a){a.put("uib/template/carousel/slide.html",'<div ng-class="{\n \'active\': active\n }" class="item text-center" ng-transclude></div>\n')}]),angular.module("uib/template/datepicker/datepicker.html",[]).run(["$templateCache",function(a){a.put("uib/template/datepicker/datepicker.html",'<div class="uib-datepicker" ng-switch="datepickerMode" role="application" ng-keydown="keydown($event)">\n <uib-daypicker ng-switch-when="day" tabindex="0"></uib-daypicker>\n <uib-monthpicker ng-switch-when="month" tabindex="0"></uib-monthpicker>\n <uib-yearpicker ng-switch-when="year" tabindex="0"></uib-yearpicker>\n</div>\n')}]),angular.module("uib/template/datepicker/day.html",[]).run(["$templateCache",function(a){a.put("uib/template/datepicker/day.html",'<table class="uib-daypicker" role="grid" aria-labelledby="{{::uniqueId}}-title" aria-activedescendant="{{activeDateId}}">\n <thead>\n <tr>\n <th><button type="button" class="btn btn-default btn-sm pull-left uib-left" ng-click="move(-1)" tabindex="-1"><i class="glyphicon glyphicon-chevron-left"></i></button></th>\n <th colspan="{{::5 + showWeeks}}"><button id="{{::uniqueId}}-title" role="heading" aria-live="assertive" aria-atomic="true" type="button" class="btn btn-default btn-sm uib-title" ng-click="toggleMode()" ng-disabled="datepickerMode === maxMode" tabindex="-1"><strong>{{title}}</strong></button></th>\n <th><button type="button" class="btn btn-default btn-sm pull-right uib-right" ng-click="move(1)" tabindex="-1"><i class="glyphicon glyphicon-chevron-right"></i></button></th>\n </tr>\n <tr>\n <th ng-if="showWeeks" class="text-center"></th>\n <th ng-repeat="label in ::labels track by $index" class="text-center"><small aria-label="{{::label.full}}">{{::label.abbr}}</small></th>\n </tr>\n </thead>\n <tbody>\n <tr class="uib-weeks" ng-repeat="row in rows track by $index">\n <td ng-if="showWeeks" class="text-center h6"><em>{{ weekNumbers[$index] }}</em></td>\n <td ng-repeat="dt in row" class="uib-day text-center" role="gridcell"\n id="{{::dt.uid}}"\n ng-class="::dt.customClass">\n <button type="button" class="btn btn-default btn-sm"\n uib-is-class="\n \'btn-info\' for selectedDt,\n \'active\' for activeDt\n on dt"\n ng-click="select(dt.date)"\n ng-disabled="::dt.disabled"\n tabindex="-1"><span ng-class="::{\'text-muted\': dt.secondary, \'text-info\': dt.current}">{{::dt.label}}</span></button>\n </td>\n </tr>\n </tbody>\n</table>\n')}]),angular.module("uib/template/datepicker/month.html",[]).run(["$templateCache",function(a){a.put("uib/template/datepicker/month.html",'<table class="uib-monthpicker" role="grid" aria-labelledby="{{::uniqueId}}-title" aria-activedescendant="{{activeDateId}}">\n <thead>\n <tr>\n <th><button type="button" class="btn btn-default btn-sm pull-left uib-left" ng-click="move(-1)" tabindex="-1"><i class="glyphicon glyphicon-chevron-left"></i></button></th>\n <th><button id="{{::uniqueId}}-title" role="heading" aria-live="assertive" aria-atomic="true" type="button" class="btn btn-default btn-sm uib-title" ng-click="toggleMode()" ng-disabled="datepickerMode === maxMode" tabindex="-1"><strong>{{title}}</strong></button></th>\n <th><button type="button" class="btn btn-default btn-sm pull-right uib-right" ng-click="move(1)" tabindex="-1"><i class="glyphicon glyphicon-chevron-right"></i></button></th>\n </tr>\n </thead>\n <tbody>\n <tr class="uib-months" ng-repeat="row in rows track by $index">\n <td ng-repeat="dt in row" class="uib-month text-center" role="gridcell"\n id="{{::dt.uid}}"\n ng-class="::dt.customClass">\n <button type="button" class="btn btn-default"\n uib-is-class="\n \'btn-info\' for selectedDt,\n \'active\' for activeDt\n on dt"\n ng-click="select(dt.date)"\n ng-disabled="::dt.disabled"\n tabindex="-1"><span ng-class="::{\'text-info\': dt.current}">{{::dt.label}}</span></button>\n </td>\n </tr>\n </tbody>\n</table>\n')}]),angular.module("uib/template/datepicker/year.html",[]).run(["$templateCache",function(a){a.put("uib/template/datepicker/year.html",'<table class="uib-yearpicker" role="grid" aria-labelledby="{{::uniqueId}}-title" aria-activedescendant="{{activeDateId}}">\n <thead>\n <tr>\n <th><button type="button" class="btn btn-default btn-sm pull-left uib-left" ng-click="move(-1)" tabindex="-1"><i class="glyphicon glyphicon-chevron-left"></i></button></th>\n <th colspan="{{::columns - 2}}"><button id="{{::uniqueId}}-title" role="heading" aria-live="assertive" aria-atomic="true" type="button" class="btn btn-default btn-sm uib-title" ng-click="toggleMode()" ng-disabled="datepickerMode === maxMode" tabindex="-1"><strong>{{title}}</strong></button></th>\n <th><button type="button" class="btn btn-default btn-sm pull-right uib-right" ng-click="move(1)" tabindex="-1"><i class="glyphicon glyphicon-chevron-right"></i></button></th>\n </tr>\n </thead>\n <tbody>\n <tr class="uib-years" ng-repeat="row in rows track by $index">\n <td ng-repeat="dt in row" class="uib-year text-center" role="gridcell"\n id="{{::dt.uid}}"\n ng-class="::dt.customClass">\n <button type="button" class="btn btn-default"\n uib-is-class="\n \'btn-info\' for selectedDt,\n \'active\' for activeDt\n on dt"\n ng-click="select(dt.date)"\n ng-disabled="::dt.disabled"\n tabindex="-1"><span ng-class="::{\'text-info\': dt.current}">{{::dt.label}}</span></button>\n </td>\n </tr>\n </tbody>\n</table>\n')}]),angular.module("uib/template/datepickerPopup/popup.html",[]).run(["$templateCache",function(a){a.put("uib/template/datepickerPopup/popup.html",'<div>\n <ul class="uib-datepicker-popup dropdown-menu uib-position-measure" dropdown-nested ng-if="isOpen" ng-keydown="keydown($event)" ng-click="$event.stopPropagation()">\n <li ng-transclude></li>\n <li ng-if="showButtonBar" class="uib-button-bar">\n <span class="btn-group pull-left">\n <button type="button" class="btn btn-sm btn-info uib-datepicker-current" ng-click="select(\'today\', $event)" ng-disabled="isDisabled(\'today\')">{{ getText(\'current\') }}</button>\n <button type="button" class="btn btn-sm btn-danger uib-clear" ng-click="select(null, $event)">{{ getText(\'clear\') }}</button>\n </span>\n <button type="button" class="btn btn-sm btn-success pull-right uib-close" ng-click="close($event)">{{ getText(\'close\') }}</button>\n </li>\n </ul>\n</div>\n')}]),angular.module("uib/template/modal/backdrop.html",[]).run(["$templateCache",function(a){a.put("uib/template/modal/backdrop.html",'<div class="modal-backdrop"\n uib-modal-animation-class="fade"\n modal-in-class="in"\n ng-style="{\'z-index\': 1040 + (index && 1 || 0) + index*10}"\n></div>\n')}]),angular.module("uib/template/modal/window.html",[]).run(["$templateCache",function(a){a.put("uib/template/modal/window.html",'<div modal-render="{{$isRendered}}" tabindex="-1" role="dialog" class="modal"\n uib-modal-animation-class="fade"\n modal-in-class="in"\n ng-style="{\'z-index\': 1050 + index*10, display: \'block\'}">\n <div class="modal-dialog {{size ? \'modal-\' + size : \'\'}}"><div class="modal-content" uib-modal-transclude></div></div>\n</div>\n')}]),angular.module("uib/template/pager/pager.html",[]).run(["$templateCache",function(a){a.put("uib/template/pager/pager.html",'<ul class="pager">\n <li ng-class="{disabled: noPrevious()||ngDisabled, previous: align}"><a href ng-click="selectPage(page - 1, $event)">{{::getText(\'previous\')}}</a></li>\n <li ng-class="{disabled: noNext()||ngDisabled, next: align}"><a href ng-click="selectPage(page + 1, $event)">{{::getText(\'next\')}}</a></li>\n</ul>\n')}]),angular.module("uib/template/pagination/pagination.html",[]).run(["$templateCache",function(a){a.put("uib/template/pagination/pagination.html",'<ul class="pagination">\n <li ng-if="::boundaryLinks" ng-class="{disabled: noPrevious()||ngDisabled}" class="pagination-first"><a href ng-click="selectPage(1, $event)">{{::getText(\'first\')}}</a></li>\n <li ng-if="::directionLinks" ng-class="{disabled: noPrevious()||ngDisabled}" class="pagination-prev"><a href ng-click="selectPage(page - 1, $event)">{{::getText(\'previous\')}}</a></li>\n <li ng-repeat="page in pages track by $index" ng-class="{active: page.active,disabled: ngDisabled&&!page.active}" class="pagination-page"><a href ng-click="selectPage(page.number, $event)">{{page.text}}</a></li>\n <li ng-if="::directionLinks" ng-class="{disabled: noNext()||ngDisabled}" class="pagination-next"><a href ng-click="selectPage(page + 1, $event)">{{::getText(\'next\')}}</a></li>\n <li ng-if="::boundaryLinks" ng-class="{disabled: noNext()||ngDisabled}" class="pagination-last"><a href ng-click="selectPage(totalPages, $event)">{{::getText(\'last\')}}</a></li>\n</ul>\n')}]),angular.module("uib/template/tooltip/tooltip-html-popup.html",[]).run(["$templateCache",function(a){a.put("uib/template/tooltip/tooltip-html-popup.html",'<div class="tooltip"\n tooltip-animation-class="fade"\n uib-tooltip-classes\n ng-class="{ in: isOpen() }">\n <div class="tooltip-arrow"></div>\n <div class="tooltip-inner" ng-bind-html="contentExp()"></div>\n</div>\n')}]),angular.module("uib/template/tooltip/tooltip-popup.html",[]).run(["$templateCache",function(a){a.put("uib/template/tooltip/tooltip-popup.html",'<div class="tooltip"\n tooltip-animation-class="fade"\n uib-tooltip-classes\n ng-class="{ in: isOpen() }">\n <div class="tooltip-arrow"></div>\n <div class="tooltip-inner" ng-bind="content"></div>\n</div>\n')}]),angular.module("uib/template/tooltip/tooltip-template-popup.html",[]).run(["$templateCache",function(a){a.put("uib/template/tooltip/tooltip-template-popup.html",'<div class="tooltip"\n tooltip-animation-class="fade"\n uib-tooltip-classes\n ng-class="{ in: isOpen() }">\n <div class="tooltip-arrow"></div>\n <div class="tooltip-inner"\n uib-tooltip-template-transclude="contentExp()"\n tooltip-template-transclude-scope="originScope()"></div>\n</div>\n')}]),angular.module("uib/template/popover/popover-html.html",[]).run(["$templateCache",function(a){a.put("uib/template/popover/popover-html.html",'<div class="popover"\n tooltip-animation-class="fade"\n uib-tooltip-classes\n ng-class="{ in: isOpen() }">\n <div class="arrow"></div>\n\n <div class="popover-inner">\n <h3 class="popover-title" ng-bind="uibTitle" ng-if="uibTitle"></h3>\n <div class="popover-content" ng-bind-html="contentExp()"></div>\n </div>\n</div>\n')}]),angular.module("uib/template/popover/popover-template.html",[]).run(["$templateCache",function(a){a.put("uib/template/popover/popover-template.html",'<div class="popover"\n tooltip-animation-class="fade"\n uib-tooltip-classes\n ng-class="{ in: isOpen() }">\n <div class="arrow"></div>\n\n <div class="popover-inner">\n <h3 class="popover-title" ng-bind="uibTitle" ng-if="uibTitle"></h3>\n <div class="popover-content"\n uib-tooltip-template-transclude="contentExp()"\n tooltip-template-transclude-scope="originScope()"></div>\n </div>\n</div>\n')}]),angular.module("uib/template/popover/popover.html",[]).run(["$templateCache",function(a){a.put("uib/template/popover/popover.html",'<div class="popover"\n tooltip-animation-class="fade"\n uib-tooltip-classes\n ng-class="{ in: isOpen() }">\n <div class="arrow"></div>\n\n <div class="popover-inner">\n <h3 class="popover-title" ng-bind="uibTitle" ng-if="uibTitle"></h3>\n <div class="popover-content" ng-bind="content"></div>\n </div>\n</div>\n')}]),angular.module("uib/template/progressbar/bar.html",[]).run(["$templateCache",function(a){a.put("uib/template/progressbar/bar.html",'<div class="progress-bar" ng-class="type && \'progress-bar-\' + type" role="progressbar" aria-valuenow="{{value}}" aria-valuemin="0" aria-valuemax="{{max}}" ng-style="{width: (percent < 100 ? percent : 100) + \'%\'}" aria-valuetext="{{percent | number:0}}%" aria-labelledby="{{::title}}" ng-transclude></div>\n')}]),angular.module("uib/template/progressbar/progress.html",[]).run(["$templateCache",function(a){a.put("uib/template/progressbar/progress.html",'<div class="progress" ng-transclude aria-labelledby="{{::title}}"></div>')}]),angular.module("uib/template/progressbar/progressbar.html",[]).run(["$templateCache",function(a){a.put("uib/template/progressbar/progressbar.html",'<div class="progress">\n <div class="progress-bar" ng-class="type && \'progress-bar-\' + type" role="progressbar" aria-valuenow="{{value}}" aria-valuemin="0" aria-valuemax="{{max}}" ng-style="{width: (percent < 100 ? percent : 100) + \'%\'}" aria-valuetext="{{percent | number:0}}%" aria-labelledby="{{::title}}" ng-transclude></div>\n</div>\n')}]),angular.module("uib/template/rating/rating.html",[]).run(["$templateCache",function(a){a.put("uib/template/rating/rating.html",'<span ng-mouseleave="reset()" ng-keydown="onKeydown($event)" tabindex="0" role="slider" aria-valuemin="0" aria-valuemax="{{range.length}}" aria-valuenow="{{value}}" aria-valuetext="{{title}}">\n <span ng-repeat-start="r in range track by $index" class="sr-only">({{ $index < value ? \'*\' : \' \' }})</span>\n <i ng-repeat-end ng-mouseenter="enter($index + 1)" ng-click="rate($index + 1)" class="glyphicon" ng-class="$index < value && (r.stateOn || \'glyphicon-star\') || (r.stateOff || \'glyphicon-star-empty\')" ng-attr-title="{{r.title}}"></i>\n</span>\n')}]),angular.module("uib/template/tabs/tab.html",[]).run(["$templateCache",function(a){a.put("uib/template/tabs/tab.html",'<li ng-class="[{active: active, disabled: disabled}, classes]" class="uib-tab nav-item">\n <a href ng-click="select($event)" class="nav-link" uib-tab-heading-transclude>{{heading}}</a>\n</li>\n')}]),angular.module("uib/template/tabs/tabset.html",[]).run(["$templateCache",function(a){a.put("uib/template/tabs/tabset.html",'<div>\n <ul class="nav nav-{{tabset.type || \'tabs\'}}" ng-class="{\'nav-stacked\': vertical, \'nav-justified\': justified}" ng-transclude></ul>\n <div class="tab-content">\n <div class="tab-pane"\n ng-repeat="tab in tabset.tabs"\n ng-class="{active: tabset.active === tab.index}"\n uib-tab-content-transclude="tab">\n </div>\n </div>\n</div>\n')}]),angular.module("uib/template/timepicker/timepicker.html",[]).run(["$templateCache",function(a){a.put("uib/template/timepicker/timepicker.html",'<table class="uib-timepicker">\n <tbody>\n <tr class="text-center" ng-show="::showSpinners">\n <td class="uib-increment hours"><a ng-click="incrementHours()" ng-class="{disabled: noIncrementHours()}" class="btn btn-link" ng-disabled="noIncrementHours()" tabindex="{{::tabindex}}"><span class="glyphicon glyphicon-chevron-up"></span></a></td>\n <td>&nbsp;</td>\n <td class="uib-increment minutes"><a ng-click="incrementMinutes()" ng-class="{disabled: noIncrementMinutes()}" class="btn btn-link" ng-disabled="noIncrementMinutes()" tabindex="{{::tabindex}}"><span class="glyphicon glyphicon-chevron-up"></span></a></td>\n <td ng-show="showSeconds">&nbsp;</td>\n <td ng-show="showSeconds" class="uib-increment seconds"><a ng-click="incrementSeconds()" ng-class="{disabled: noIncrementSeconds()}" class="btn btn-link" ng-disabled="noIncrementSeconds()" tabindex="{{::tabindex}}"><span class="glyphicon glyphicon-chevron-up"></span></a></td>\n <td ng-show="showMeridian"></td>\n </tr>\n <tr>\n <td class="form-group uib-time hours" ng-class="{\'has-error\': invalidHours}">\n <input type="text" placeholder="HH" ng-model="hours" ng-change="updateHours()" class="form-control text-center" ng-readonly="::readonlyInput" maxlength="2" tabindex="{{::tabindex}}" ng-disabled="noIncrementHours()" ng-blur="blur()">\n </td>\n <td class="uib-separator">:</td>\n <td class="form-group uib-time minutes" ng-class="{\'has-error\': invalidMinutes}">\n <input type="text" placeholder="MM" ng-model="minutes" ng-change="updateMinutes()" class="form-control text-center" ng-readonly="::readonlyInput" maxlength="2" tabindex="{{::tabindex}}" ng-disabled="noIncrementMinutes()" ng-blur="blur()">\n </td>\n <td ng-show="showSeconds" class="uib-separator">:</td>\n <td class="form-group uib-time seconds" ng-class="{\'has-error\': invalidSeconds}" ng-show="showSeconds">\n <input type="text" placeholder="SS" ng-model="seconds" ng-change="updateSeconds()" class="form-control text-center" ng-readonly="readonlyInput" maxlength="2" tabindex="{{::tabindex}}" ng-disabled="noIncrementSeconds()" ng-blur="blur()">\n </td>\n <td ng-show="showMeridian" class="uib-time am-pm"><button type="button" ng-class="{disabled: noToggleMeridian()}" class="btn btn-default text-center" ng-click="toggleMeridian()" ng-disabled="noToggleMeridian()" tabindex="{{::tabindex}}">{{meridian}}</button></td>\n </tr>\n <tr class="text-center" ng-show="::showSpinners">\n <td class="uib-decrement hours"><a ng-click="decrementHours()" ng-class="{disabled: noDecrementHours()}" class="btn btn-link" ng-disabled="noDecrementHours()" tabindex="{{::tabindex}}"><span class="glyphicon glyphicon-chevron-down"></span></a></td>\n <td>&nbsp;</td>\n <td class="uib-decrement minutes"><a ng-click="decrementMinutes()" ng-class="{disabled: noDecrementMinutes()}" class="btn btn-link" ng-disabled="noDecrementMinutes()" tabindex="{{::tabindex}}"><span class="glyphicon glyphicon-chevron-down"></span></a></td>\n <td ng-show="showSeconds">&nbsp;</td>\n <td ng-show="showSeconds" class="uib-decrement seconds"><a ng-click="decrementSeconds()" ng-class="{disabled: noDecrementSeconds()}" class="btn btn-link" ng-disabled="noDecrementSeconds()" tabindex="{{::tabindex}}"><span class="glyphicon glyphicon-chevron-down"></span></a></td>\n <td ng-show="showMeridian"></td>\n </tr>\n </tbody>\n</table>\n')}]),angular.module("uib/template/typeahead/typeahead-match.html",[]).run(["$templateCache",function(a){a.put("uib/template/typeahead/typeahead-match.html",'<a href\n tabindex="-1"\n ng-bind-html="match.label | uibTypeaheadHighlight:query"\n ng-attr-title="{{match.label}}"></a>\n')}]),angular.module("uib/template/typeahead/typeahead-popup.html",[]).run(["$templateCache",function(a){a.put("uib/template/typeahead/typeahead-popup.html",'<ul class="dropdown-menu" ng-show="isOpen() && !moveInProgress" ng-style="{top: position().top+\'px\', left: position().left+\'px\'}" role="listbox" aria-hidden="{{!isOpen()}}">\n <li ng-repeat="match in matches track by $index" ng-class="{active: isActive($index) }" ng-mouseenter="selectActive($index)" ng-click="selectMatch($index, $event)" role="option" id="{{::match.id}}">\n <div uib-typeahead-match index="$index" match="match" query="query" template-url="templateUrl"></div>\n </li>\n</ul>\n')}]),angular.module("ui.bootstrap.carousel").run(function(){!angular.$$csp().noInlineStyle&&!angular.$$uibCarouselCss&&angular.element(document).find("head").prepend('<style type="text/css">.ng-animate.item:not(.left):not(.right){-webkit-transition:0s ease-in-out left;transition:0s ease-in-out left}</style>'),angular.$$uibCarouselCss=!0}),angular.module("ui.bootstrap.datepicker").run(function(){!angular.$$csp().noInlineStyle&&!angular.$$uibDatepickerCss&&angular.element(document).find("head").prepend('<style type="text/css">.uib-datepicker .uib-title{width:100%;}.uib-day button,.uib-month button,.uib-year button{min-width:100%;}.uib-left,.uib-right{width:100%}</style>'),angular.$$uibDatepickerCss=!0}),angular.module("ui.bootstrap.position").run(function(){!angular.$$csp().noInlineStyle&&!angular.$$uibPositionCss&&angular.element(document).find("head").prepend('<style type="text/css">.uib-position-measure{display:block !important;visibility:hidden !important;position:absolute !important;top:-9999px !important;left:-9999px !important;}.uib-position-scrollbar-measure{position:absolute !important;top:-9999px !important;width:50px !important;height:50px !important;overflow:scroll !important;}.uib-position-body-scrollbar-measure{overflow:scroll !important;}</style>'),angular.$$uibPositionCss=!0}),angular.module("ui.bootstrap.datepickerPopup").run(function(){!angular.$$csp().noInlineStyle&&!angular.$$uibDatepickerpopupCss&&angular.element(document).find("head").prepend('<style type="text/css">.uib-datepicker-popup.dropdown-menu{display:block;float:none;margin:0;}.uib-button-bar{padding:10px 9px 2px;}</style>'),angular.$$uibDatepickerpopupCss=!0}),angular.module("ui.bootstrap.tooltip").run(function(){!angular.$$csp().noInlineStyle&&!angular.$$uibTooltipCss&&angular.element(document).find("head").prepend('<style type="text/css">[uib-tooltip-popup].tooltip.top-left > .tooltip-arrow,[uib-tooltip-popup].tooltip.top-right > .tooltip-arrow,[uib-tooltip-popup].tooltip.bottom-left > .tooltip-arrow,[uib-tooltip-popup].tooltip.bottom-right > .tooltip-arrow,[uib-tooltip-popup].tooltip.left-top > .tooltip-arrow,[uib-tooltip-popup].tooltip.left-bottom > .tooltip-arrow,[uib-tooltip-popup].tooltip.right-top > .tooltip-arrow,[uib-tooltip-popup].tooltip.right-bottom > .tooltip-arrow,[uib-tooltip-html-popup].tooltip.top-left > .tooltip-arrow,[uib-tooltip-html-popup].tooltip.top-right > .tooltip-arrow,[uib-tooltip-html-popup].tooltip.bottom-left > .tooltip-arrow,[uib-tooltip-html-popup].tooltip.bottom-right > .tooltip-arrow,[uib-tooltip-html-popup].tooltip.left-top > .tooltip-arrow,[uib-tooltip-html-popup].tooltip.left-bottom > .tooltip-arrow,[uib-tooltip-html-popup].tooltip.right-top > .tooltip-arrow,[uib-tooltip-html-popup].tooltip.right-bottom > .tooltip-arrow,[uib-tooltip-template-popup].tooltip.top-left > .tooltip-arrow,[uib-tooltip-template-popup].tooltip.top-right > .tooltip-arrow,[uib-tooltip-template-popup].tooltip.bottom-left > .tooltip-arrow,[uib-tooltip-template-popup].tooltip.bottom-right > .tooltip-arrow,[uib-tooltip-template-popup].tooltip.left-top > .tooltip-arrow,[uib-tooltip-template-popup].tooltip.left-bottom > .tooltip-arrow,[uib-tooltip-template-popup].tooltip.right-top > .tooltip-arrow,[uib-tooltip-template-popup].tooltip.right-bottom > .tooltip-arrow,[uib-popover-popup].popover.top-left > .arrow,[uib-popover-popup].popover.top-right > .arrow,[uib-popover-popup].popover.bottom-left > .arrow,[uib-popover-popup].popover.bottom-right > .arrow,[uib-popover-popup].popover.left-top > .arrow,[uib-popover-popup].popover.left-bottom > .arrow,[uib-popover-popup].popover.right-top > .arrow,[uib-popover-popup].popover.right-bottom > .arrow,[uib-popover-html-popup].popover.top-left > .arrow,[uib-popover-html-popup].popover.top-right > .arrow,[uib-popover-html-popup].popover.bottom-left > .arrow,[uib-popover-html-popup].popover.bottom-right > .arrow,[uib-popover-html-popup].popover.left-top > .arrow,[uib-popover-html-popup].popover.left-bottom > .arrow,[uib-popover-html-popup].popover.right-top > .arrow,[uib-popover-html-popup].popover.right-bottom > .arrow,[uib-popover-template-popup].popover.top-left > .arrow,[uib-popover-template-popup].popover.top-right > .arrow,[uib-popover-template-popup].popover.bottom-left > .arrow,[uib-popover-template-popup].popover.bottom-right > .arrow,[uib-popover-template-popup].popover.left-top > .arrow,[uib-popover-template-popup].popover.left-bottom > .arrow,[uib-popover-template-popup].popover.right-top > .arrow,[uib-popover-template-popup].popover.right-bottom > .arrow{top:auto;bottom:auto;left:auto;right:auto;margin:0;}[uib-popover-popup].popover,[uib-popover-html-popup].popover,[uib-popover-template-popup].popover{display:block !important;}</style>'),angular.$$uibTooltipCss=!0}),angular.module("ui.bootstrap.timepicker").run(function(){!angular.$$csp().noInlineStyle&&!angular.$$uibTimepickerCss&&angular.element(document).find("head").prepend('<style type="text/css">.uib-time input{width:50px;}</style>'),angular.$$uibTimepickerCss=!0}),angular.module("ui.bootstrap.typeahead").run(function(){!angular.$$csp().noInlineStyle&&!angular.$$uibTypeaheadCss&&angular.element(document).find("head").prepend('<style type="text/css">[uib-typeahead-popup].dropdown-menu{display:block;}</style>'),angular.$$uibTypeaheadCss=!0});
1769 ;/*!
1769 ;/*!
1770 * State-based routing for AngularJS
1770 * State-based routing for AngularJS
1771 * @version v1.0.0-alpha.5
1771 * @version v1.0.0-alpha.5
1772 * @link http://angular-ui.github.com/ui-router
1772 * @link http://angular-ui.github.com/ui-router
1773 * @license MIT License, http://www.opensource.org/licenses/MIT
1773 * @license MIT License, http://www.opensource.org/licenses/MIT
1774 */
1774 */
1775 !function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define("angular-ui-router",[],e):"object"==typeof exports?exports["angular-ui-router"]=e():t["angular-ui-router"]=e()}(this,function(){return function(t){function e(r){if(n[r])return n[r].exports;var i=n[r]={exports:{},id:r,loaded:!1};return t[r].call(i.exports,i,i.exports,e),i.loaded=!0,i.exports}var n={};return e.m=t,e.c=n,e.p="",e(0)}([function(t,e,n){"use strict";function r(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}r(n(1)),r(n(53)),r(n(54)),r(n(56)),n(57),n(58),n(59),n(60),Object.defineProperty(e,"__esModule",{value:!0}),e["default"]="ui.router"},function(t,e,n){"use strict";function r(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}r(n(2)),r(n(20)),r(n(44)),r(n(40)),r(n(17)),r(n(13)),r(n(45)),r(n(49)),r(n(51));var i=n(52);e.UIRouter=i.UIRouter},function(t,e,n){"use strict";function r(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}r(n(3)),r(n(6)),r(n(7)),r(n(5)),r(n(4)),r(n(8)),r(n(9)),r(n(12))},function(t,e,n){"use strict";function r(t,e,n,r){return void 0===r&&(r=Object.keys(t)),r.filter(function(e){return"function"==typeof t[e]}).forEach(function(r){return e[r]=t[r].bind(n)})}function i(t){void 0===t&&(t={});for(var n=[],r=1;r<arguments.length;r++)n[r-1]=arguments[r];var i=o.apply(null,[{}].concat(n));return e.extend({},i,c(t||{},Object.keys(i)))}function o(t){for(var n=[],r=1;r<arguments.length;r++)n[r-1]=arguments[r];return e.forEach(n,function(n){e.forEach(n,function(e,n){t.hasOwnProperty(n)||(t[n]=e)})}),t}function a(t,e){var n=[];for(var r in t.path){if(t.path[r]!==e.path[r])break;n.push(t.path[r])}return n}function s(t,e,n){void 0===n&&(n=Object.keys(t));for(var r=0;r<n.length;r++){var i=n[r];if(t[i]!=e[i])return!1}return!0}function u(t,e){var n={},r=_(arguments,2);for(var i in e)t(r,i)&&(n[i]=e[i]);return n}function c(t){return u.apply(null,[T].concat(_(arguments)))}function l(t){return u.apply(null,[k.not(T)].concat(_(arguments)))}function f(t,e){return v(t,k.prop(e))}function p(t,n){var r=P.isArray(t),i=r?[]:{},o=r?function(t){return i.push(t)}:function(t,e){return i[e]=t};return e.forEach(t,function(t,e){n(t,e)&&o(t,e)}),i}function h(t,n){var r;return e.forEach(t,function(t,e){r||n(t,e)&&(r=t)}),r}function v(t,n){var r=P.isArray(t)?[]:{};return e.forEach(t,function(t,e){return r[e]=n(t,e)}),r}function d(t,e){return t.push(e),t}function m(t,e){return void 0===e&&(e="assert failure"),function(n){if(!t(n))throw new Error(P.isFunction(e)?e(n):e);return!0}}function g(){for(var t=[],e=0;e<arguments.length;e++)t[e-0]=arguments[e];if(0===t.length)return[];var n=t.reduce(function(t,e){return Math.min(e.length,t)},9007199254740991);return Array.apply(null,Array(n)).map(function(e,n){return t.map(function(t){return t[n]})})}function y(t,e){var n,r;if(P.isArray(e)&&(n=e[0],r=e[1]),!P.isString(n))throw new Error("invalid parameters to applyPairs");return t[n]=r,t}function w(t){return t.length&&t[t.length-1]||void 0}function $(t,n){return n&&Object.keys(n).forEach(function(t){return delete n[t]}),n||(n={}),e.extend(n,t)}function b(t,e,n){return P.isArray(t)?t.forEach(e,n):void Object.keys(t).forEach(function(n){return e(t[n],n)})}function R(t,e){return Object.keys(e).forEach(function(n){return t[n]=e[n]}),t}function S(t,n){return _(arguments,1).filter(e.identity).reduce(R,t)}function x(t,e){if(t===e)return!0;if(null===t||null===e)return!1;if(t!==t&&e!==e)return!0;var n=typeof t,r=typeof e;if(n!==r||"object"!==n)return!1;var i=[t,e];if(k.all(P.isArray)(i))return E(t,e);if(k.all(P.isDate)(i))return t.getTime()===e.getTime();if(k.all(P.isRegExp)(i))return t.toString()===e.toString();if(k.all(P.isFunction)(i))return!0;var o=[P.isFunction,P.isArray,P.isDate,P.isRegExp];if(o.map(k.any).reduce(function(t,e){return t||!!e(i)},!1))return!1;var a,s={};for(a in t){if(!x(t[a],e[a]))return!1;s[a]=!0}for(a in e)if(!s[a])return!1;return!0}function E(t,e){return t.length!==e.length?!1:g(t,e).reduce(function(t,e){return t&&x(e[0],e[1])},!0)}var P=n(4),k=n(5),O="undefined"==typeof window?{}:window,C=O.angular||{};e.fromJson=C.fromJson||JSON.parse.bind(JSON),e.toJson=C.toJson||JSON.stringify.bind(JSON),e.copy=C.copy||$,e.forEach=C.forEach||b,e.extend=C.extend||S,e.equals=C.equals||x,e.identity=function(t){return t},e.noop=function(){},e.abstractKey="abstract",e.bindFunctions=r,e.inherit=function(t,n){return e.extend(new(e.extend(function(){},{prototype:t})),n)};var _=function(t,e){return void 0===e&&(e=0),Array.prototype.concat.apply(Array.prototype,Array.prototype.slice.call(t,e))},T=function(t,e){return-1!==t.indexOf(e)};e.removeFrom=k.curry(function(t,e){var n=t.indexOf(e);return n>=0&&t.splice(n,1),t}),e.defaults=i,e.merge=o,e.mergeR=function(t,n){return e.extend(t,n)},e.ancestors=a,e.equalForKeys=s,e.pick=c,e.omit=l,e.pluck=f,e.filter=p,e.find=h,e.mapObj=v,e.map=v,e.values=function(t){return Object.keys(t).map(function(e){return t[e]})},e.allTrueR=function(t,e){return t&&e},e.anyTrueR=function(t,e){return t||e},e.unnestR=function(t,e){return t.concat(e)},e.flattenR=function(t,n){return P.isArray(n)?t.concat(n.reduce(e.flattenR,[])):d(t,n)},e.unnest=function(t){return t.reduce(e.unnestR,[])},e.flatten=function(t){return t.reduce(e.flattenR,[])},e.assertPredicate=m,e.pairs=function(t){return Object.keys(t).map(function(e){return[e,t[e]]})},e.arrayTuples=g,e.applyPairs=y,e.tail=w},function(t,e,n){"use strict";function r(t){if(e.isArray(t)&&t.length){var n=t.slice(0,-1),r=t.slice(-1);return!(n.filter(i.not(e.isString)).length||r.filter(i.not(e.isFunction)).length)}return e.isFunction(t)}var i=n(5),o=Object.prototype.toString,a=function(t){return function(e){return typeof e===t}};e.isUndefined=a("undefined"),e.isDefined=i.not(e.isUndefined),e.isNull=function(t){return null===t},e.isFunction=a("function"),e.isNumber=a("number"),e.isString=a("string"),e.isObject=function(t){return null!==t&&"object"==typeof t},e.isArray=Array.isArray,e.isDate=function(t){return"[object Date]"===o.call(t)},e.isRegExp=function(t){return"[object RegExp]"===o.call(t)},e.isInjectable=r,e.isPromise=i.and(e.isObject,i.pipe(i.prop("then"),e.isFunction))},function(t,e){"use strict";function n(t){function e(n){return n.length>=r?t.apply(null,n):function(){return e(n.concat([].slice.apply(arguments)))}}var n=[].slice.apply(arguments,[1]),r=t.length;return e(n)}function r(){var t=arguments,e=t.length-1;return function(){for(var n=e,r=t[e].apply(this,arguments);n--;)r=t[n].call(this,r);return r}}function i(){for(var t=[],e=0;e<arguments.length;e++)t[e-0]=arguments[e];return r.apply(null,[].slice.call(arguments).reverse())}function o(t,e){return function(){for(var n=[],r=0;r<arguments.length;r++)n[r-0]=arguments[r];return t.apply(null,n)&&e.apply(null,n)}}function a(t,e){return function(){for(var n=[],r=0;r<arguments.length;r++)n[r-0]=arguments[r];return t.apply(null,n)||e.apply(null,n)}}function s(t,e){return function(n){return n[t].apply(n,e)}}function u(t){return function(e){for(var n=0;n<t.length;n++)if(t[n][0](e))return t[n][1](e)}}e.curry=n,e.compose=r,e.pipe=i,e.prop=function(t){return function(e){return e&&e[t]}},e.propEq=n(function(t,e,n){return n&&n[t]===e}),e.parse=function(t){return i.apply(null,t.split(".").map(e.prop))},e.not=function(t){return function(){for(var e=[],n=0;n<arguments.length;n++)e[n-0]=arguments[n];return!t.apply(null,e)}},e.and=o,e.or=a,e.all=function(t){return function(e){return e.reduce(function(e,n){return e&&!!t(n)},!0)}},e.any=function(t){return function(e){return e.reduce(function(e,n){return e||!!t(n)},!1)}},e.none=e.not(e.any),e.is=function(t){return function(e){return null!=e&&e.constructor===t||e instanceof t}},e.eq=function(t){return function(e){return t===e}},e.val=function(t){return function(){return t}},e.invoke=s,e.pattern=u},function(t,e){"use strict";var n=function(t){return function(){throw new Error(t+"(): No coreservices implementation for UI-Router is loaded. You should include one of: ['angular1.js']")}},r={$q:void 0,$injector:void 0,location:{},locationConfig:{},template:{}};e.services=r,["replace","url","path","search","hash","onChange"].forEach(function(t){return r.location[t]=n(t)}),["port","protocol","host","baseHref","html5Mode","hashPrefix"].forEach(function(t){return r.locationConfig[t]=n(t)})},function(t,e){"use strict";var n=function(){function t(t){this.text=t,this.glob=t.split(".")}return t.prototype.matches=function(t){for(var e=t.split("."),n=0,r=this.glob.length;r>n;n++)"*"===this.glob[n]&&(e[n]="*");return"**"===this.glob[0]&&(e=e.slice(e.indexOf(this.glob[1])),e.unshift("**")),"**"===this.glob[this.glob.length-1]&&(e.splice(e.indexOf(this.glob[this.glob.length-2])+1,Number.MAX_VALUE),e.push("**")),this.glob.length!=e.length?!1:e.join("")===this.glob.join("")},t.is=function(t){return t.indexOf("*")>-1},t.fromString=function(e){return this.is(e)?new t(e):null},t}();e.Glob=n},function(t,e){"use strict";var n=function(){function t(t,e){void 0===t&&(t=[]),void 0===e&&(e=null),this._items=t,this._limit=e}return t.prototype.enqueue=function(t){var e=this._items;return e.push(t),this._limit&&e.length>this._limit&&e.shift(),t},t.prototype.dequeue=function(){return this.size()?this._items.splice(0,1)[0]:void 0},t.prototype.clear=function(){var t=this._items;return this._items=[],t},t.prototype.size=function(){return this._items.length},t.prototype.remove=function(t){var e=this._items.indexOf(t);return e>-1&&this._items.splice(e,1)[0]},t.prototype.peekTail=function(){return this._items[this._items.length-1]},t.prototype.peekHead=function(){return this.size()?this._items[0]:void 0},t}();e.Queue=n},function(t,e,n){"use strict";function r(t,e){return e.length<=t?e:e.substr(0,t-3)+"..."}function i(t,e){for(;e.length<t;)e+=" ";return e}function o(t){return t.replace(/^([A-Z])/,function(t){return t.toLowerCase()}).replace(/([A-Z])/g,function(t){return"-"+t.toLowerCase()})}function a(t){return"Promise("+JSON.stringify(t)+")"}function s(t){var e=u(t),n=e.match(/^(function [^ ]+\([^)]*\))/);return n?n[1]:e}function u(t){var e=l.isArray(t)?t.slice(-1)[0]:t;return e&&e.toString()||"undefined"}function c(t){function e(t){if(l.isObject(t)){if(-1!==n.indexOf(t))return"[circular ref]";n.push(t)}return g(t)}var n=[];return JSON.stringify(t,function(t,n){return e(n)}).replace(/\\"/g,'"')}var l=n(4),f=n(10),p=n(3),h=n(5),v=n(11),d=n(32);e.maxLength=r,e.padString=i,e.kebobString=o,e.functionToString=s,e.fnToString=u;var m=f.Rejection.isTransitionRejectionPromise,g=h.pattern([[h.not(l.isDefined),h.val("undefined")],[l.isNull,h.val("null")],[l.isPromise,a],[m,function(t){return t._transitionRejection.toString()}],[h.is(f.Rejection),h.invoke("toString")],[h.is(v.Transition),h.invoke("toString")],[h.is(d.Resolvable),h.invoke("toString")],[l.isInjectable,s],[h.val(!0),p.identity]]);e.stringify=c,e.beforeAfterSubstr=function(t){return function(e){if(!e)return["",""];var n=e.indexOf(t);return-1===n?[e,""]:[e.substr(0,n),e.substr(n+1)]}}},function(t,e,n){"use strict";var r=n(3),i=n(6),o=n(9);!function(t){t[t.SUPERSEDED=2]="SUPERSEDED",t[t.ABORTED=3]="ABORTED",t[t.INVALID=4]="INVALID",t[t.IGNORED=5]="IGNORED"}(e.RejectType||(e.RejectType={}));var a=e.RejectType,s=function(){function t(t,e,n){this.type=t,this.message=e,this.detail=n}return t.prototype.toString=function(){var t=function(t){return t&&t.toString!==Object.prototype.toString?t.toString():o.stringify(t)},e=this.type,n=this.message,r=t(this.detail);return"TransitionRejection(type: "+e+", message: "+n+", detail: "+r+")"},t.prototype.toPromise=function(){return r.extend(i.services.$q.reject(this),{_transitionRejection:this})},t.isTransitionRejectionPromise=function(e){return e&&"function"==typeof e.then&&e._transitionRejection instanceof t},t.superseded=function(e,n){var r="The transition has been superseded by a different transition (see detail).",i=new t(a.SUPERSEDED,r,e);return n&&n.redirected&&(i.redirected=!0),i},t.redirected=function(e){return t.superseded(e,{redirected:!0})},t.invalid=function(e){var n="This transition is invalid (see detail)";return new t(a.INVALID,n,e)},t.ignored=function(e){var n="The transition was ignored.";return new t(a.IGNORED,n,e)},t.aborted=function(e){var n="The transition has been aborted.";return new t(a.ABORTED,n,e)},t}();e.Rejection=s},function(t,e,n){"use strict";var r=n(12),i=n(6),o=n(3),a=n(4),s=n(5),u=n(13),c=n(39),l=n(38),f=n(17),p=n(20),h=n(40),v=n(10),d=0,m=s.prop("self"),g=function(){function t(t,e,n){var r=this;if(this._transitionService=n,this._deferred=i.services.$q.defer(),this.promise=this._deferred.promise,this.treeChanges=function(){return r._treeChanges},this.isActive=function(){return r===r._options.current()},!e.valid())throw new Error(e.error());u.HookRegistry.mixin(new u.HookRegistry,this),this._options=o.extend({current:s.val(this)},e.options()),this.$id=d++;var a=l.PathFactory.buildToPath(t,e);a=l.PathFactory.applyViewConfigs(n.$view,a),this._treeChanges=l.PathFactory.treeChanges(t,a,this._options.reloadState),l.PathFactory.bindTransitionResolve(this._treeChanges,this)}return t.prototype.$from=function(){return o.tail(this._treeChanges.from).state},t.prototype.$to=function(){return o.tail(this._treeChanges.to).state},t.prototype.from=function(){return this.$from().self},t.prototype.to=function(){return this.$to().self},t.prototype.is=function(e){return e instanceof t?this.is({to:e.$to().name,from:e.$from().name}):!(e.to&&!u.matchState(this.$to(),e.to)||e.from&&!u.matchState(this.$from(),e.from))},t.prototype.params=function(t){return void 0===t&&(t="to"),this._treeChanges[t].map(s.prop("paramValues")).reduce(o.mergeR,{})},t.prototype.resolves=function(){return o.map(o.tail(this._treeChanges.to).resolveContext.getResolvables(),function(t){return t.data})},t.prototype.addResolves=function(t,e){void 0===e&&(e="");var n="string"==typeof e?e:e.name,r=this._treeChanges.to,i=o.find(r,function(t){return t.state.name===n});o.tail(r).resolveContext.addResolvables(h.Resolvable.makeResolvables(t),i.state)},t.prototype.previous=function(){return this._options.previous||null},t.prototype.options=function(){return this._options},t.prototype.entering=function(){return o.map(this._treeChanges.entering,s.prop("state")).map(m)},t.prototype.exiting=function(){return o.map(this._treeChanges.exiting,s.prop("state")).map(m).reverse()},t.prototype.retained=function(){return o.map(this._treeChanges.retained,s.prop("state")).map(m)},t.prototype.views=function(t,e){void 0===t&&(t="entering");var n=this._treeChanges[t];return n=e?n.filter(s.propEq("state",e)):n,n.map(s.prop("views")).filter(o.identity).reduce(o.unnestR,[])},t.prototype.redirect=function(e){var n=o.extend({},this.options(),e.options(),{previous:this});e=new f.TargetState(e.identifier(),e.$state(),e.params(),n);var r=new t(this._treeChanges.from,e,this._transitionService),i=e.options().reloadState,a=this.treeChanges().to,s=c.Node.matching(r.treeChanges().to,a).filter(function(t){return!i||!i.includes[t.state.name]}),u=function(t,e){return-1===["$stateParams","$transition$"].indexOf(e)};return s.forEach(function(t,e){return o.extend(t.resolves,o.filter(a[e].resolves,u))}),r},t.prototype._changedParams=function(){var t=this._treeChanges,e=t.to,n=t.from;if(!this._options.reload&&o.tail(e).state===o.tail(n).state){var r=e.map(function(t){return t.paramSchema}),i=[e,n].map(function(t){return t.map(function(t){return t.paramValues})}),a=i[0],s=i[1],u=o.arrayTuples(r,a,s);return u.map(function(t){var e=t[0],n=t[1],r=t[2];return p.Param.changed(e,n,r)}).reduce(o.unnestR,[])}},t.prototype.dynamic=function(){var t=this._changedParams();return t?t.map(function(t){return t.dynamic}).reduce(o.anyTrueR,!1):!1},t.prototype.ignored=function(){var t=this._changedParams();return t?0===t.length:!1},t.prototype.hookBuilder=function(){return new u.HookBuilder(this._transitionService,this,{transition:this,current:this._options.current})},t.prototype.run=function(){var t=this,e=this.hookBuilder(),n=u.TransitionHook.runSynchronousHooks,o=function(){return n(e.getOnSuccessHooks(),{},!0)},a=function(t){return n(e.getOnErrorHooks(),{$error$:t},!0)};this.promise.then(o,a);var s=n(e.getOnBeforeHooks());if(v.Rejection.isTransitionRejectionPromise(s)){s["catch"](function(){return 0});var c=s._transitionRejection;return this._deferred.reject(c),this.promise}if(!this.valid()){var l=new Error(this.error());return this._deferred.reject(l),this.promise}if(this.ignored())return r.trace.traceTransitionIgnored(this),this._deferred.reject(v.Rejection.ignored()),this.promise;var f=function(){t.success=!0,t._deferred.resolve(t),r.trace.traceSuccess(t.$to(),t)},p=function(e){return t.success=!1,t._deferred.reject(e),r.trace.traceError(e,t),i.services.$q.reject(e)};r.trace.traceTransitionStart(this);var h=e.asyncHooks().reduce(function(t,e){return t.then(e.invokeHook.bind(e))},s);return h.then(f,p),this.promise},t.prototype.valid=function(){return!this.error()},t.prototype.error=function(){var t=this.$to();return t.self[o.abstractKey]?"Cannot transition to abstract state '"+t.name+"'":p.Param.validates(t.parameters(),this.params())?void 0:"Param values not valid for state '"+t.name+"'"},t.prototype.toString=function(){var t=this.from(),e=this.to(),n=function(t){return null!==t["#"]&&void 0!==t["#"]?t:o.omit(t,"#")},r=this.$id,i=a.isObject(t)?t.name:t,u=o.toJson(n(this._treeChanges.from.map(s.prop("paramValues")).reduce(o.mergeR,{}))),c=this.valid()?"":"(X) ",l=a.isObject(e)?e.name:e,f=o.toJson(n(this.params()));return"Transition#"+r+"( '"+i+"'"+u+" -> "+c+"'"+l+"'"+f+" )"},t}();e.Transition=g},function(t,e,n){"use strict";function r(t){return t?"[ui-view#"+t.id+" tag in template from '"+(t.creationContext.name||"(root)")+"' state]: fqn: '"+t.fqn+"', name: '"+t.name+"@"+t.creationContext+"')":"ui-view (defunct)"}function i(t){return a.isNumber(t)?c[t]:c[c[t]]}var o=n(5),a=n(4),s=n(9),u=function(t){return"[ViewConfig from '"+(t.viewDecl.$context.name||"(root)")+"' state]: target ui-view: '"+t.viewDecl.$uiViewName+"@"+t.viewDecl.$uiViewContextAnchor+"'"};!function(t){t[t.RESOLVE=0]="RESOLVE",t[t.TRANSITION=1]="TRANSITION",t[t.HOOK=2]="HOOK",t[t.INVOKE=3]="INVOKE",t[t.UIVIEW=4]="UIVIEW",t[t.VIEWCONFIG=5]="VIEWCONFIG"}(e.Category||(e.Category={}));var c=e.Category,l=function(){function t(){this._enabled={},this.approximateDigests=0}return t.prototype._set=function(t,e){var n=this;e.length||(e=Object.keys(c).filter(function(t){return isNaN(parseInt(t,10))}).map(function(t){return c[t]})),e.map(i).forEach(function(e){return n._enabled[e]=t})},t.prototype.enable=function(){for(var t=[],e=0;e<arguments.length;e++)t[e-0]=arguments[e];this._set(!0,t)},t.prototype.disable=function(){for(var t=[],e=0;e<arguments.length;e++)t[e-0]=arguments[e];this._set(!1,t)},t.prototype.enabled=function(t){return!!this._enabled[i(t)]},t.prototype.traceTransitionStart=function(t){if(this.enabled(c.TRANSITION)){var e=t.$id,n=this.approximateDigests,r=s.stringify(t);console.log("Transition #"+e+" Digest #"+n+": Started -> "+r)}},t.prototype.traceTransitionIgnored=function(t){if(this.enabled(c.TRANSITION)){var e=t.$id,n=this.approximateDigests,r=s.stringify(t);console.log("Transition #"+e+" Digest #"+n+": Ignored <> "+r)}},t.prototype.traceHookInvocation=function(t,e){if(this.enabled(c.HOOK)){var n=o.parse("transition.$id")(e),r=this.approximateDigests,i=o.parse("traceData.hookType")(e)||"internal",a=o.parse("traceData.context.state.name")(e)||o.parse("traceData.context")(e)||"unknown",u=s.functionToString(t.fn);console.log("Transition #"+n+" Digest #"+r+": Hook -> "+i+" context: "+a+", "+s.maxLength(200,u))}},t.prototype.traceHookResult=function(t,e,n){if(this.enabled(c.HOOK)){var r=o.parse("transition.$id")(n),i=this.approximateDigests,a=s.stringify(t),u=s.stringify(e);console.log("Transition #"+r+" Digest #"+i+": <- Hook returned: "+s.maxLength(200,a)+", transition result: "+s.maxLength(200,u))}},t.prototype.traceResolvePath=function(t,e){if(this.enabled(c.RESOLVE)){var n=o.parse("transition.$id")(e),r=this.approximateDigests,i=t&&t.toString(),a=e&&e.resolvePolicy;console.log("Transition #"+n+" Digest #"+r+": Resolving "+i+" ("+a+")")}},t.prototype.traceResolvePathElement=function(t,e,n){if(this.enabled(c.RESOLVE)&&e.length){var r=o.parse("transition.$id")(n),i=this.approximateDigests,a=Object.keys(e).join(", "),s=t&&t.toString(),u=n&&n.resolvePolicy;console.log("Transition #"+r+" Digest #"+i+": Resolve "+s+" resolvables: ["+a+"] ("+u+")")}},t.prototype.traceResolveResolvable=function(t,e){if(this.enabled(c.RESOLVE)){var n=o.parse("transition.$id")(e),r=this.approximateDigests,i=t&&t.toString();console.log("Transition #"+n+" Digest #"+r+": Resolving -> "+i)}},t.prototype.traceResolvableResolved=function(t,e){if(this.enabled(c.RESOLVE)){var n=o.parse("transition.$id")(e),r=this.approximateDigests,i=t&&t.toString(),a=s.stringify(t.data);console.log("Transition #"+n+" Digest #"+r+": <- Resolved "+i+" to: "+s.maxLength(200,a))}},t.prototype.tracePathElementInvoke=function(t,e,n,r){if(this.enabled(c.INVOKE)){var i=o.parse("transition.$id")(r),a=this.approximateDigests,u=t&&t.state&&t.state.toString(),l=s.functionToString(e);console.log("Transition #"+i+" Digest #"+a+": Invoke "+r.when+": context: "+u+" "+s.maxLength(200,l))}},t.prototype.traceError=function(t,e){if(this.enabled(c.TRANSITION)){var n=e.$id,r=this.approximateDigests,i=s.stringify(e);console.log("Transition #"+n+" Digest #"+r+": <- Rejected "+i+", reason: "+t)}},t.prototype.traceSuccess=function(t,e){if(this.enabled(c.TRANSITION)){var n=e.$id,r=this.approximateDigests,i=t.name,o=s.stringify(e);console.log("Transition #"+n+" Digest #"+r+": <- Success "+o+", final state: "+i)}},t.prototype.traceUiViewEvent=function(t,e,n){void 0===n&&(n=""),this.enabled(c.UIVIEW)&&console.log("ui-view: "+s.padString(30,t)+" "+r(e)+n)},t.prototype.traceUiViewConfigUpdated=function(t,e){this.enabled(c.UIVIEW)&&this.traceUiViewEvent("Updating",t," with ViewConfig from context='"+e+"'")},t.prototype.traceUiViewScopeCreated=function(t,e){this.enabled(c.UIVIEW)&&this.traceUiViewEvent("Created scope for",t,", scope #"+e.$id)},t.prototype.traceUiViewFill=function(t,e){this.enabled(c.UIVIEW)&&this.traceUiViewEvent("Fill",t," with: "+s.maxLength(200,e))},t.prototype.traceViewServiceEvent=function(t,e){this.enabled(c.VIEWCONFIG)&&console.log("VIEWCONFIG: "+t+" "+u(e))},t.prototype.traceViewServiceUiViewEvent=function(t,e){this.enabled(c.VIEWCONFIG)&&console.log("VIEWCONFIG: "+t+" "+r(e))},t}();e.Trace=l;var f=new l;e.trace=f},function(t,e,n){"use strict";function r(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}r(n(14)),r(n(15)),r(n(10)),r(n(11)),r(n(16)),r(n(43))},function(t,e,n){"use strict";function r(t){return void 0===t&&(t=!1),function(e,n){var r=t?-1:1,i=(e.node.state.path.length-n.node.state.path.length)*r;return 0!==i?i:n.hook.priority-e.hook.priority}}var i=n(3),o=n(4),a=n(13),s=function(){function t(t,e,n){var o=this;this.$transitions=t,this.transition=e,this.baseHookOptions=n,this.getOnBeforeHooks=function(){return o._buildNodeHooks("onBefore","to",r(),void 0,{async:!1})},this.getOnStartHooks=function(){return o._buildNodeHooks("onStart","to",r())},this.getOnExitHooks=function(){return o._buildNodeHooks("onExit","exiting",r(!0),function(t){return{$state$:t.state}})},this.getOnRetainHooks=function(){return o._buildNodeHooks("onRetain","retained",r(),function(t){return{$state$:t.state}})},this.getOnEnterHooks=function(){return o._buildNodeHooks("onEnter","entering",r(),function(t){return{$state$:t.state}})},this.getOnFinishHooks=function(){return o._buildNodeHooks("onFinish","to",r(),function(t){return{$treeChanges$:o.treeChanges}})},this.getOnSuccessHooks=function(){return o._buildNodeHooks("onSuccess","to",r(),void 0,{async:!1,rejectIfSuperseded:!1})},this.getOnErrorHooks=function(){return o._buildNodeHooks("onError","to",r(),void 0,{async:!1,rejectIfSuperseded:!1})},this.treeChanges=e.treeChanges(),this.toState=i.tail(this.treeChanges.to).state,this.fromState=i.tail(this.treeChanges.from).state,this.transitionOptions=e.options()}return t.prototype.asyncHooks=function(){var t=this.getOnStartHooks(),e=this.getOnExitHooks(),n=this.getOnRetainHooks(),r=this.getOnEnterHooks(),o=this.getOnFinishHooks(),a=[t,e,n,r,o];return a.reduce(i.unnestR,[]).filter(i.identity)},t.prototype._buildNodeHooks=function(t,e,n,r,o){var s=this;void 0===r&&(r=function(t){return{}});var u=this._matchingHooks(t,this.treeChanges);if(!u)return[];var c=function(n){var u=n.matches(s.treeChanges),c=u[e];return c.map(function(e){var u=i.extend({bind:n.bind,traceData:{hookType:t,context:e}},s.baseHookOptions,o),c=new a.TransitionHook(n.callback,r(e),e.resolveContext,u);return{hook:n,node:e,transitionHook:c}})};return u.map(c).reduce(i.unnestR,[]).sort(n).map(function(t){return t.transitionHook})},t.prototype._matchingHooks=function(t,e){return[this.transition,this.$transitions].map(function(e){return e.getHooks(t)}).filter(i.assertPredicate(o.isArray,"broken event named: "+t)).reduce(i.unnestR,[]).filter(function(t){return t.matches(e)})},t}();e.HookBuilder=s},function(t,e,n){"use strict";function r(t,e){function n(t){for(var e=r,n=0;n<e.length;n++){var i=s.Glob.fromString(e[n]);if(i&&i.matches(t.name)||!i&&e[n]===t.name)return!0}return!1}var r=a.isString(e)?[e]:e,i=a.isFunction(r)?r:n;return!!i(t)}function i(t,e){return function(n,r,i){void 0===i&&(i={});var a=new u(n,r,i);return t[e].push(a),function(){o.removeFrom(t[e])(a)}}}var o=n(3),a=n(4),s=n(7);e.matchState=r;var u=function(){function t(t,e,n){void 0===n&&(n={}),this.callback=e,this.matchCriteria=o.extend({to:!0,from:!0,exiting:!0,retained:!0,entering:!0},t),this.priority=n.priority||0,this.bind=n.bind||null}return t._matchingNodes=function(t,e){if(e===!0)return t;var n=t.filter(function(t){return r(t.state,e)});return n.length?n:null},t.prototype.matches=function(e){var n=this.matchCriteria,r=t._matchingNodes,i={to:r([o.tail(e.to)],n.to),from:r([o.tail(e.from)],n.from),exiting:r(e.exiting,n.exiting),retained:r(e.retained,n.retained),entering:r(e.entering,n.entering)},a=["to","from","exiting","retained","entering"].map(function(t){return i[t]}).reduce(o.allTrueR,!0);return a?i:null},t}();e.EventHook=u;var c=function(){function t(){var t=this;this._transitionEvents={onBefore:[],onStart:[],onEnter:[],onRetain:[],onExit:[],onFinish:[],onSuccess:[],onError:[]},this.getHooks=function(e){return t._transitionEvents[e]},this.onBefore=i(this._transitionEvents,"onBefore"),this.onStart=i(this._transitionEvents,"onStart"),this.onEnter=i(this._transitionEvents,"onEnter"),this.onRetain=i(this._transitionEvents,"onRetain"),this.onExit=i(this._transitionEvents,"onExit"),this.onFinish=i(this._transitionEvents,"onFinish"),this.onSuccess=i(this._transitionEvents,"onSuccess"),this.onError=i(this._transitionEvents,"onError")}return t.mixin=function(t,e){Object.keys(t._transitionEvents).concat(["getHooks"]).forEach(function(n){return e[n]=t[n]})},t}();e.HookRegistry=c},function(t,e,n){"use strict";var r=n(3),i=n(9),o=n(4),a=n(5),s=n(12),u=n(6),c=n(10),l=n(17),f={async:!0,rejectIfSuperseded:!0,current:r.noop,transition:null,traceData:{},bind:null},p=function(){function t(t,e,n,i){var o=this;this.fn=t,this.locals=e,this.resolveContext=n,this.options=i,this.isSuperseded=function(){return o.options.current()!==o.options.transition},this.options=r.defaults(i,f)}return t.prototype.invokeHook=function(t){var e=this,n=this,i=n.options,o=n.fn,a=n.resolveContext,u=r.extend({},this.locals,t);if(s.trace.traceHookInvocation(this,i),i.rejectIfSuperseded&&this.isSuperseded())return c.Rejection.superseded(i.current()).toPromise();if(!i.async){var l=a.invokeNow(o,u,i);return this.handleHookResult(l)}return a.invokeLater(o,u,i).then(function(t){return e.handleHookResult(t)})},t.prototype.handleHookResult=function(t){var e=this;if(o.isDefined(t)){var n=a.pattern([[this.isSuperseded,function(){return c.Rejection.superseded(e.options.current()).toPromise()}],[a.eq(!1),function(){return c.Rejection.aborted("Hook aborted transition").toPromise()}],[a.is(l.TargetState),function(t){return c.Rejection.redirected(t).toPromise()}],[o.isPromise,function(t){return t.then(e.handleHookResult.bind(e))}]]),r=n(t);return r&&s.trace.traceHookResult(t,r,this.options),r}},t.prototype.toString=function(){var t=this,e=t.options,n=t.fn,r=a.parse("traceData.hookType")(e)||"internal",o=a.parse("traceData.context.state.name")(e)||a.parse("traceData.context")(e)||"unknown",s=i.fnToString(n);return r+" context: "+o+", "+i.maxLength(200,s)},t.runSynchronousHooks=function(t,e,n){void 0===e&&(e={}),void 0===n&&(n=!1);for(var r=[],i=0;i<t.length;i++)try{r.push(t[i].invokeHook(e))}catch(s){if(!n)return c.Rejection.aborted(s).toPromise();console.error("Swallowed exception during synchronous hook handler: "+s)}var l=r.filter(c.Rejection.isTransitionRejectionPromise);return l.length?l[0]:r.filter(o.isPromise).reduce(function(t,e){return t.then(a.val(e))},u.services.$q.when())},t}();e.TransitionHook=p},function(t,e,n){"use strict";function r(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}r(n(18)),r(n(19)),r(n(26)),r(n(33)),r(n(34)),r(n(35)),r(n(36)),r(n(37)),r(n(27))},function(t,e,n){"use strict";var r=n(4),i=n(3),o=function(){function t(e){this.stateRegistry=e,this.invalidCallbacks=[],i.bindFunctions(t.prototype,this,this)}return t.prototype.decorator=function(t,e){return this.stateRegistry.decorator(t,e)||this},t.prototype.state=function(t,e){return r.isObject(t)?e=t:e.name=t,this.stateRegistry.register(e),this},t.prototype.onInvalid=function(t){this.invalidCallbacks.push(t)},t}();e.StateProvider=o},function(t,e,n){"use strict";var r=n(3),i=n(4),o=n(5),a=n(20),s=function(t){if(!i.isString(t))return!1;var e="^"===t.charAt(0);return{val:e?t.substring(1):t,root:e}},u=function(){function t(t,e){this.matcher=t;var n=this,i=function(t){return""===t.name},u=function(){return t.find("")};this.builders={self:[function(t){return t.self.$$state=function(){return t},t.self}],parent:[function(e){return i(e)?null:t.find(n.parentName(e))||u()}],data:[function(t){return t.parent&&t.parent.data&&(t.data=t.self.data=r.inherit(t.parent.data,t.data)),t.data}],url:[function(t){var n=t,i=s(n.url),o=t.parent,a=i?e.compile(i.val,{params:t.params||{},paramMap:function(t,e){return n.reloadOnSearch===!1&&e&&(t=r.extend(t||{},{dynamic:!0})),t}}):n.url;if(!a)return null;if(!e.isMatcher(a))throw new Error("Invalid url '"+a+"' in state '"+t+"'");return i&&i.root?a:(o&&o.navigable||u()).url.append(a)}],navigable:[function(t){return!i(t)&&t.url?t:t.parent?t.parent.navigable:null}],params:[function(t){var e=function(t,e){return a.Param.fromConfig(e,null,t)},n=t.url&&t.url.parameters({inherit:!1})||[],i=r.values(r.map(r.omit(t.params||{},n.map(o.prop("id"))),e));return n.concat(i).map(function(t){return[t.id,t]}).reduce(r.applyPairs,{})}],views:[],path:[function(t){return t.parent?t.parent.path.concat(t):[t]}],includes:[function(t){var e=t.parent?r.extend({},t.parent.includes):{};return e[t.name]=!0,e}]}}return t.prototype.builder=function(t,e){var n=this.builders,r=n[t]||[];return i.isString(t)&&!i.isDefined(e)?r.length>1?r:r[0]:i.isString(t)&&i.isFunction(e)?(n[t]=r,n[t].push(e),function(){return n[t].splice(n[t].indexOf(e,1))&&null}):void 0},t.prototype.build=function(t){var e=this,n=e.matcher,i=e.builders,o=this.parentName(t);if(o&&!n.find(o))return null;for(var a in i)if(i.hasOwnProperty(a)){var s=i[a].reduce(function(t,e){return function(n){return e(n,t)}},r.noop);t[a]=s(t)}return t},t.prototype.parentName=function(t){var e=t.name||"";return-1!==e.indexOf(".")?e.substring(0,e.lastIndexOf(".")):t.parent?i.isString(t.parent)?t.parent:t.parent.name:""},t.prototype.name=function(t){var e=t.name;if(-1!==e.indexOf(".")||!t.parent)return e;var n=i.isString(t.parent)?t.parent:t.parent.name;return n?n+"."+e:e},t}();e.StateBuilder=u},function(t,e,n){"use strict";function r(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}r(n(21)),r(n(24)),r(n(25)),r(n(23))},function(t,e,n){
1775 !function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define("angular-ui-router",[],e):"object"==typeof exports?exports["angular-ui-router"]=e():t["angular-ui-router"]=e()}(this,function(){return function(t){function e(r){if(n[r])return n[r].exports;var i=n[r]={exports:{},id:r,loaded:!1};return t[r].call(i.exports,i,i.exports,e),i.loaded=!0,i.exports}var n={};return e.m=t,e.c=n,e.p="",e(0)}([function(t,e,n){"use strict";function r(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}r(n(1)),r(n(53)),r(n(54)),r(n(56)),n(57),n(58),n(59),n(60),Object.defineProperty(e,"__esModule",{value:!0}),e["default"]="ui.router"},function(t,e,n){"use strict";function r(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}r(n(2)),r(n(20)),r(n(44)),r(n(40)),r(n(17)),r(n(13)),r(n(45)),r(n(49)),r(n(51));var i=n(52);e.UIRouter=i.UIRouter},function(t,e,n){"use strict";function r(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}r(n(3)),r(n(6)),r(n(7)),r(n(5)),r(n(4)),r(n(8)),r(n(9)),r(n(12))},function(t,e,n){"use strict";function r(t,e,n,r){return void 0===r&&(r=Object.keys(t)),r.filter(function(e){return"function"==typeof t[e]}).forEach(function(r){return e[r]=t[r].bind(n)})}function i(t){void 0===t&&(t={});for(var n=[],r=1;r<arguments.length;r++)n[r-1]=arguments[r];var i=o.apply(null,[{}].concat(n));return e.extend({},i,c(t||{},Object.keys(i)))}function o(t){for(var n=[],r=1;r<arguments.length;r++)n[r-1]=arguments[r];return e.forEach(n,function(n){e.forEach(n,function(e,n){t.hasOwnProperty(n)||(t[n]=e)})}),t}function a(t,e){var n=[];for(var r in t.path){if(t.path[r]!==e.path[r])break;n.push(t.path[r])}return n}function s(t,e,n){void 0===n&&(n=Object.keys(t));for(var r=0;r<n.length;r++){var i=n[r];if(t[i]!=e[i])return!1}return!0}function u(t,e){var n={},r=_(arguments,2);for(var i in e)t(r,i)&&(n[i]=e[i]);return n}function c(t){return u.apply(null,[T].concat(_(arguments)))}function l(t){return u.apply(null,[k.not(T)].concat(_(arguments)))}function f(t,e){return v(t,k.prop(e))}function p(t,n){var r=P.isArray(t),i=r?[]:{},o=r?function(t){return i.push(t)}:function(t,e){return i[e]=t};return e.forEach(t,function(t,e){n(t,e)&&o(t,e)}),i}function h(t,n){var r;return e.forEach(t,function(t,e){r||n(t,e)&&(r=t)}),r}function v(t,n){var r=P.isArray(t)?[]:{};return e.forEach(t,function(t,e){return r[e]=n(t,e)}),r}function d(t,e){return t.push(e),t}function m(t,e){return void 0===e&&(e="assert failure"),function(n){if(!t(n))throw new Error(P.isFunction(e)?e(n):e);return!0}}function g(){for(var t=[],e=0;e<arguments.length;e++)t[e-0]=arguments[e];if(0===t.length)return[];var n=t.reduce(function(t,e){return Math.min(e.length,t)},9007199254740991);return Array.apply(null,Array(n)).map(function(e,n){return t.map(function(t){return t[n]})})}function y(t,e){var n,r;if(P.isArray(e)&&(n=e[0],r=e[1]),!P.isString(n))throw new Error("invalid parameters to applyPairs");return t[n]=r,t}function w(t){return t.length&&t[t.length-1]||void 0}function $(t,n){return n&&Object.keys(n).forEach(function(t){return delete n[t]}),n||(n={}),e.extend(n,t)}function b(t,e,n){return P.isArray(t)?t.forEach(e,n):void Object.keys(t).forEach(function(n){return e(t[n],n)})}function R(t,e){return Object.keys(e).forEach(function(n){return t[n]=e[n]}),t}function S(t,n){return _(arguments,1).filter(e.identity).reduce(R,t)}function x(t,e){if(t===e)return!0;if(null===t||null===e)return!1;if(t!==t&&e!==e)return!0;var n=typeof t,r=typeof e;if(n!==r||"object"!==n)return!1;var i=[t,e];if(k.all(P.isArray)(i))return E(t,e);if(k.all(P.isDate)(i))return t.getTime()===e.getTime();if(k.all(P.isRegExp)(i))return t.toString()===e.toString();if(k.all(P.isFunction)(i))return!0;var o=[P.isFunction,P.isArray,P.isDate,P.isRegExp];if(o.map(k.any).reduce(function(t,e){return t||!!e(i)},!1))return!1;var a,s={};for(a in t){if(!x(t[a],e[a]))return!1;s[a]=!0}for(a in e)if(!s[a])return!1;return!0}function E(t,e){return t.length!==e.length?!1:g(t,e).reduce(function(t,e){return t&&x(e[0],e[1])},!0)}var P=n(4),k=n(5),O="undefined"==typeof window?{}:window,C=O.angular||{};e.fromJson=C.fromJson||JSON.parse.bind(JSON),e.toJson=C.toJson||JSON.stringify.bind(JSON),e.copy=C.copy||$,e.forEach=C.forEach||b,e.extend=C.extend||S,e.equals=C.equals||x,e.identity=function(t){return t},e.noop=function(){},e.abstractKey="abstract",e.bindFunctions=r,e.inherit=function(t,n){return e.extend(new(e.extend(function(){},{prototype:t})),n)};var _=function(t,e){return void 0===e&&(e=0),Array.prototype.concat.apply(Array.prototype,Array.prototype.slice.call(t,e))},T=function(t,e){return-1!==t.indexOf(e)};e.removeFrom=k.curry(function(t,e){var n=t.indexOf(e);return n>=0&&t.splice(n,1),t}),e.defaults=i,e.merge=o,e.mergeR=function(t,n){return e.extend(t,n)},e.ancestors=a,e.equalForKeys=s,e.pick=c,e.omit=l,e.pluck=f,e.filter=p,e.find=h,e.mapObj=v,e.map=v,e.values=function(t){return Object.keys(t).map(function(e){return t[e]})},e.allTrueR=function(t,e){return t&&e},e.anyTrueR=function(t,e){return t||e},e.unnestR=function(t,e){return t.concat(e)},e.flattenR=function(t,n){return P.isArray(n)?t.concat(n.reduce(e.flattenR,[])):d(t,n)},e.unnest=function(t){return t.reduce(e.unnestR,[])},e.flatten=function(t){return t.reduce(e.flattenR,[])},e.assertPredicate=m,e.pairs=function(t){return Object.keys(t).map(function(e){return[e,t[e]]})},e.arrayTuples=g,e.applyPairs=y,e.tail=w},function(t,e,n){"use strict";function r(t){if(e.isArray(t)&&t.length){var n=t.slice(0,-1),r=t.slice(-1);return!(n.filter(i.not(e.isString)).length||r.filter(i.not(e.isFunction)).length)}return e.isFunction(t)}var i=n(5),o=Object.prototype.toString,a=function(t){return function(e){return typeof e===t}};e.isUndefined=a("undefined"),e.isDefined=i.not(e.isUndefined),e.isNull=function(t){return null===t},e.isFunction=a("function"),e.isNumber=a("number"),e.isString=a("string"),e.isObject=function(t){return null!==t&&"object"==typeof t},e.isArray=Array.isArray,e.isDate=function(t){return"[object Date]"===o.call(t)},e.isRegExp=function(t){return"[object RegExp]"===o.call(t)},e.isInjectable=r,e.isPromise=i.and(e.isObject,i.pipe(i.prop("then"),e.isFunction))},function(t,e){"use strict";function n(t){function e(n){return n.length>=r?t.apply(null,n):function(){return e(n.concat([].slice.apply(arguments)))}}var n=[].slice.apply(arguments,[1]),r=t.length;return e(n)}function r(){var t=arguments,e=t.length-1;return function(){for(var n=e,r=t[e].apply(this,arguments);n--;)r=t[n].call(this,r);return r}}function i(){for(var t=[],e=0;e<arguments.length;e++)t[e-0]=arguments[e];return r.apply(null,[].slice.call(arguments).reverse())}function o(t,e){return function(){for(var n=[],r=0;r<arguments.length;r++)n[r-0]=arguments[r];return t.apply(null,n)&&e.apply(null,n)}}function a(t,e){return function(){for(var n=[],r=0;r<arguments.length;r++)n[r-0]=arguments[r];return t.apply(null,n)||e.apply(null,n)}}function s(t,e){return function(n){return n[t].apply(n,e)}}function u(t){return function(e){for(var n=0;n<t.length;n++)if(t[n][0](e))return t[n][1](e)}}e.curry=n,e.compose=r,e.pipe=i,e.prop=function(t){return function(e){return e&&e[t]}},e.propEq=n(function(t,e,n){return n&&n[t]===e}),e.parse=function(t){return i.apply(null,t.split(".").map(e.prop))},e.not=function(t){return function(){for(var e=[],n=0;n<arguments.length;n++)e[n-0]=arguments[n];return!t.apply(null,e)}},e.and=o,e.or=a,e.all=function(t){return function(e){return e.reduce(function(e,n){return e&&!!t(n)},!0)}},e.any=function(t){return function(e){return e.reduce(function(e,n){return e||!!t(n)},!1)}},e.none=e.not(e.any),e.is=function(t){return function(e){return null!=e&&e.constructor===t||e instanceof t}},e.eq=function(t){return function(e){return t===e}},e.val=function(t){return function(){return t}},e.invoke=s,e.pattern=u},function(t,e){"use strict";var n=function(t){return function(){throw new Error(t+"(): No coreservices implementation for UI-Router is loaded. You should include one of: ['angular1.js']")}},r={$q:void 0,$injector:void 0,location:{},locationConfig:{},template:{}};e.services=r,["replace","url","path","search","hash","onChange"].forEach(function(t){return r.location[t]=n(t)}),["port","protocol","host","baseHref","html5Mode","hashPrefix"].forEach(function(t){return r.locationConfig[t]=n(t)})},function(t,e){"use strict";var n=function(){function t(t){this.text=t,this.glob=t.split(".")}return t.prototype.matches=function(t){for(var e=t.split("."),n=0,r=this.glob.length;r>n;n++)"*"===this.glob[n]&&(e[n]="*");return"**"===this.glob[0]&&(e=e.slice(e.indexOf(this.glob[1])),e.unshift("**")),"**"===this.glob[this.glob.length-1]&&(e.splice(e.indexOf(this.glob[this.glob.length-2])+1,Number.MAX_VALUE),e.push("**")),this.glob.length!=e.length?!1:e.join("")===this.glob.join("")},t.is=function(t){return t.indexOf("*")>-1},t.fromString=function(e){return this.is(e)?new t(e):null},t}();e.Glob=n},function(t,e){"use strict";var n=function(){function t(t,e){void 0===t&&(t=[]),void 0===e&&(e=null),this._items=t,this._limit=e}return t.prototype.enqueue=function(t){var e=this._items;return e.push(t),this._limit&&e.length>this._limit&&e.shift(),t},t.prototype.dequeue=function(){return this.size()?this._items.splice(0,1)[0]:void 0},t.prototype.clear=function(){var t=this._items;return this._items=[],t},t.prototype.size=function(){return this._items.length},t.prototype.remove=function(t){var e=this._items.indexOf(t);return e>-1&&this._items.splice(e,1)[0]},t.prototype.peekTail=function(){return this._items[this._items.length-1]},t.prototype.peekHead=function(){return this.size()?this._items[0]:void 0},t}();e.Queue=n},function(t,e,n){"use strict";function r(t,e){return e.length<=t?e:e.substr(0,t-3)+"..."}function i(t,e){for(;e.length<t;)e+=" ";return e}function o(t){return t.replace(/^([A-Z])/,function(t){return t.toLowerCase()}).replace(/([A-Z])/g,function(t){return"-"+t.toLowerCase()})}function a(t){return"Promise("+JSON.stringify(t)+")"}function s(t){var e=u(t),n=e.match(/^(function [^ ]+\([^)]*\))/);return n?n[1]:e}function u(t){var e=l.isArray(t)?t.slice(-1)[0]:t;return e&&e.toString()||"undefined"}function c(t){function e(t){if(l.isObject(t)){if(-1!==n.indexOf(t))return"[circular ref]";n.push(t)}return g(t)}var n=[];return JSON.stringify(t,function(t,n){return e(n)}).replace(/\\"/g,'"')}var l=n(4),f=n(10),p=n(3),h=n(5),v=n(11),d=n(32);e.maxLength=r,e.padString=i,e.kebobString=o,e.functionToString=s,e.fnToString=u;var m=f.Rejection.isTransitionRejectionPromise,g=h.pattern([[h.not(l.isDefined),h.val("undefined")],[l.isNull,h.val("null")],[l.isPromise,a],[m,function(t){return t._transitionRejection.toString()}],[h.is(f.Rejection),h.invoke("toString")],[h.is(v.Transition),h.invoke("toString")],[h.is(d.Resolvable),h.invoke("toString")],[l.isInjectable,s],[h.val(!0),p.identity]]);e.stringify=c,e.beforeAfterSubstr=function(t){return function(e){if(!e)return["",""];var n=e.indexOf(t);return-1===n?[e,""]:[e.substr(0,n),e.substr(n+1)]}}},function(t,e,n){"use strict";var r=n(3),i=n(6),o=n(9);!function(t){t[t.SUPERSEDED=2]="SUPERSEDED",t[t.ABORTED=3]="ABORTED",t[t.INVALID=4]="INVALID",t[t.IGNORED=5]="IGNORED"}(e.RejectType||(e.RejectType={}));var a=e.RejectType,s=function(){function t(t,e,n){this.type=t,this.message=e,this.detail=n}return t.prototype.toString=function(){var t=function(t){return t&&t.toString!==Object.prototype.toString?t.toString():o.stringify(t)},e=this.type,n=this.message,r=t(this.detail);return"TransitionRejection(type: "+e+", message: "+n+", detail: "+r+")"},t.prototype.toPromise=function(){return r.extend(i.services.$q.reject(this),{_transitionRejection:this})},t.isTransitionRejectionPromise=function(e){return e&&"function"==typeof e.then&&e._transitionRejection instanceof t},t.superseded=function(e,n){var r="The transition has been superseded by a different transition (see detail).",i=new t(a.SUPERSEDED,r,e);return n&&n.redirected&&(i.redirected=!0),i},t.redirected=function(e){return t.superseded(e,{redirected:!0})},t.invalid=function(e){var n="This transition is invalid (see detail)";return new t(a.INVALID,n,e)},t.ignored=function(e){var n="The transition was ignored.";return new t(a.IGNORED,n,e)},t.aborted=function(e){var n="The transition has been aborted.";return new t(a.ABORTED,n,e)},t}();e.Rejection=s},function(t,e,n){"use strict";var r=n(12),i=n(6),o=n(3),a=n(4),s=n(5),u=n(13),c=n(39),l=n(38),f=n(17),p=n(20),h=n(40),v=n(10),d=0,m=s.prop("self"),g=function(){function t(t,e,n){var r=this;if(this._transitionService=n,this._deferred=i.services.$q.defer(),this.promise=this._deferred.promise,this.treeChanges=function(){return r._treeChanges},this.isActive=function(){return r===r._options.current()},!e.valid())throw new Error(e.error());u.HookRegistry.mixin(new u.HookRegistry,this),this._options=o.extend({current:s.val(this)},e.options()),this.$id=d++;var a=l.PathFactory.buildToPath(t,e);a=l.PathFactory.applyViewConfigs(n.$view,a),this._treeChanges=l.PathFactory.treeChanges(t,a,this._options.reloadState),l.PathFactory.bindTransitionResolve(this._treeChanges,this)}return t.prototype.$from=function(){return o.tail(this._treeChanges.from).state},t.prototype.$to=function(){return o.tail(this._treeChanges.to).state},t.prototype.from=function(){return this.$from().self},t.prototype.to=function(){return this.$to().self},t.prototype.is=function(e){return e instanceof t?this.is({to:e.$to().name,from:e.$from().name}):!(e.to&&!u.matchState(this.$to(),e.to)||e.from&&!u.matchState(this.$from(),e.from))},t.prototype.params=function(t){return void 0===t&&(t="to"),this._treeChanges[t].map(s.prop("paramValues")).reduce(o.mergeR,{})},t.prototype.resolves=function(){return o.map(o.tail(this._treeChanges.to).resolveContext.getResolvables(),function(t){return t.data})},t.prototype.addResolves=function(t,e){void 0===e&&(e="");var n="string"==typeof e?e:e.name,r=this._treeChanges.to,i=o.find(r,function(t){return t.state.name===n});o.tail(r).resolveContext.addResolvables(h.Resolvable.makeResolvables(t),i.state)},t.prototype.previous=function(){return this._options.previous||null},t.prototype.options=function(){return this._options},t.prototype.entering=function(){return o.map(this._treeChanges.entering,s.prop("state")).map(m)},t.prototype.exiting=function(){return o.map(this._treeChanges.exiting,s.prop("state")).map(m).reverse()},t.prototype.retained=function(){return o.map(this._treeChanges.retained,s.prop("state")).map(m)},t.prototype.views=function(t,e){void 0===t&&(t="entering");var n=this._treeChanges[t];return n=e?n.filter(s.propEq("state",e)):n,n.map(s.prop("views")).filter(o.identity).reduce(o.unnestR,[])},t.prototype.redirect=function(e){var n=o.extend({},this.options(),e.options(),{previous:this});e=new f.TargetState(e.identifier(),e.$state(),e.params(),n);var r=new t(this._treeChanges.from,e,this._transitionService),i=e.options().reloadState,a=this.treeChanges().to,s=c.Node.matching(r.treeChanges().to,a).filter(function(t){return!i||!i.includes[t.state.name]}),u=function(t,e){return-1===["$stateParams","$transition$"].indexOf(e)};return s.forEach(function(t,e){return o.extend(t.resolves,o.filter(a[e].resolves,u))}),r},t.prototype._changedParams=function(){var t=this._treeChanges,e=t.to,n=t.from;if(!this._options.reload&&o.tail(e).state===o.tail(n).state){var r=e.map(function(t){return t.paramSchema}),i=[e,n].map(function(t){return t.map(function(t){return t.paramValues})}),a=i[0],s=i[1],u=o.arrayTuples(r,a,s);return u.map(function(t){var e=t[0],n=t[1],r=t[2];return p.Param.changed(e,n,r)}).reduce(o.unnestR,[])}},t.prototype.dynamic=function(){var t=this._changedParams();return t?t.map(function(t){return t.dynamic}).reduce(o.anyTrueR,!1):!1},t.prototype.ignored=function(){var t=this._changedParams();return t?0===t.length:!1},t.prototype.hookBuilder=function(){return new u.HookBuilder(this._transitionService,this,{transition:this,current:this._options.current})},t.prototype.run=function(){var t=this,e=this.hookBuilder(),n=u.TransitionHook.runSynchronousHooks,o=function(){return n(e.getOnSuccessHooks(),{},!0)},a=function(t){return n(e.getOnErrorHooks(),{$error$:t},!0)};this.promise.then(o,a);var s=n(e.getOnBeforeHooks());if(v.Rejection.isTransitionRejectionPromise(s)){s["catch"](function(){return 0});var c=s._transitionRejection;return this._deferred.reject(c),this.promise}if(!this.valid()){var l=new Error(this.error());return this._deferred.reject(l),this.promise}if(this.ignored())return r.trace.traceTransitionIgnored(this),this._deferred.reject(v.Rejection.ignored()),this.promise;var f=function(){t.success=!0,t._deferred.resolve(t),r.trace.traceSuccess(t.$to(),t)},p=function(e){return t.success=!1,t._deferred.reject(e),r.trace.traceError(e,t),i.services.$q.reject(e)};r.trace.traceTransitionStart(this);var h=e.asyncHooks().reduce(function(t,e){return t.then(e.invokeHook.bind(e))},s);return h.then(f,p),this.promise},t.prototype.valid=function(){return!this.error()},t.prototype.error=function(){var t=this.$to();return t.self[o.abstractKey]?"Cannot transition to abstract state '"+t.name+"'":p.Param.validates(t.parameters(),this.params())?void 0:"Param values not valid for state '"+t.name+"'"},t.prototype.toString=function(){var t=this.from(),e=this.to(),n=function(t){return null!==t["#"]&&void 0!==t["#"]?t:o.omit(t,"#")},r=this.$id,i=a.isObject(t)?t.name:t,u=o.toJson(n(this._treeChanges.from.map(s.prop("paramValues")).reduce(o.mergeR,{}))),c=this.valid()?"":"(X) ",l=a.isObject(e)?e.name:e,f=o.toJson(n(this.params()));return"Transition#"+r+"( '"+i+"'"+u+" -> "+c+"'"+l+"'"+f+" )"},t}();e.Transition=g},function(t,e,n){"use strict";function r(t){return t?"[ui-view#"+t.id+" tag in template from '"+(t.creationContext.name||"(root)")+"' state]: fqn: '"+t.fqn+"', name: '"+t.name+"@"+t.creationContext+"')":"ui-view (defunct)"}function i(t){return a.isNumber(t)?c[t]:c[c[t]]}var o=n(5),a=n(4),s=n(9),u=function(t){return"[ViewConfig from '"+(t.viewDecl.$context.name||"(root)")+"' state]: target ui-view: '"+t.viewDecl.$uiViewName+"@"+t.viewDecl.$uiViewContextAnchor+"'"};!function(t){t[t.RESOLVE=0]="RESOLVE",t[t.TRANSITION=1]="TRANSITION",t[t.HOOK=2]="HOOK",t[t.INVOKE=3]="INVOKE",t[t.UIVIEW=4]="UIVIEW",t[t.VIEWCONFIG=5]="VIEWCONFIG"}(e.Category||(e.Category={}));var c=e.Category,l=function(){function t(){this._enabled={},this.approximateDigests=0}return t.prototype._set=function(t,e){var n=this;e.length||(e=Object.keys(c).filter(function(t){return isNaN(parseInt(t,10))}).map(function(t){return c[t]})),e.map(i).forEach(function(e){return n._enabled[e]=t})},t.prototype.enable=function(){for(var t=[],e=0;e<arguments.length;e++)t[e-0]=arguments[e];this._set(!0,t)},t.prototype.disable=function(){for(var t=[],e=0;e<arguments.length;e++)t[e-0]=arguments[e];this._set(!1,t)},t.prototype.enabled=function(t){return!!this._enabled[i(t)]},t.prototype.traceTransitionStart=function(t){if(this.enabled(c.TRANSITION)){var e=t.$id,n=this.approximateDigests,r=s.stringify(t);console.log("Transition #"+e+" Digest #"+n+": Started -> "+r)}},t.prototype.traceTransitionIgnored=function(t){if(this.enabled(c.TRANSITION)){var e=t.$id,n=this.approximateDigests,r=s.stringify(t);console.log("Transition #"+e+" Digest #"+n+": Ignored <> "+r)}},t.prototype.traceHookInvocation=function(t,e){if(this.enabled(c.HOOK)){var n=o.parse("transition.$id")(e),r=this.approximateDigests,i=o.parse("traceData.hookType")(e)||"internal",a=o.parse("traceData.context.state.name")(e)||o.parse("traceData.context")(e)||"unknown",u=s.functionToString(t.fn);console.log("Transition #"+n+" Digest #"+r+": Hook -> "+i+" context: "+a+", "+s.maxLength(200,u))}},t.prototype.traceHookResult=function(t,e,n){if(this.enabled(c.HOOK)){var r=o.parse("transition.$id")(n),i=this.approximateDigests,a=s.stringify(t),u=s.stringify(e);console.log("Transition #"+r+" Digest #"+i+": <- Hook returned: "+s.maxLength(200,a)+", transition result: "+s.maxLength(200,u))}},t.prototype.traceResolvePath=function(t,e){if(this.enabled(c.RESOLVE)){var n=o.parse("transition.$id")(e),r=this.approximateDigests,i=t&&t.toString(),a=e&&e.resolvePolicy;console.log("Transition #"+n+" Digest #"+r+": Resolving "+i+" ("+a+")")}},t.prototype.traceResolvePathElement=function(t,e,n){if(this.enabled(c.RESOLVE)&&e.length){var r=o.parse("transition.$id")(n),i=this.approximateDigests,a=Object.keys(e).join(", "),s=t&&t.toString(),u=n&&n.resolvePolicy;console.log("Transition #"+r+" Digest #"+i+": Resolve "+s+" resolvables: ["+a+"] ("+u+")")}},t.prototype.traceResolveResolvable=function(t,e){if(this.enabled(c.RESOLVE)){var n=o.parse("transition.$id")(e),r=this.approximateDigests,i=t&&t.toString();console.log("Transition #"+n+" Digest #"+r+": Resolving -> "+i)}},t.prototype.traceResolvableResolved=function(t,e){if(this.enabled(c.RESOLVE)){var n=o.parse("transition.$id")(e),r=this.approximateDigests,i=t&&t.toString(),a=s.stringify(t.data);console.log("Transition #"+n+" Digest #"+r+": <- Resolved "+i+" to: "+s.maxLength(200,a))}},t.prototype.tracePathElementInvoke=function(t,e,n,r){if(this.enabled(c.INVOKE)){var i=o.parse("transition.$id")(r),a=this.approximateDigests,u=t&&t.state&&t.state.toString(),l=s.functionToString(e);console.log("Transition #"+i+" Digest #"+a+": Invoke "+r.when+": context: "+u+" "+s.maxLength(200,l))}},t.prototype.traceError=function(t,e){if(this.enabled(c.TRANSITION)){var n=e.$id,r=this.approximateDigests,i=s.stringify(e);console.log("Transition #"+n+" Digest #"+r+": <- Rejected "+i+", reason: "+t)}},t.prototype.traceSuccess=function(t,e){if(this.enabled(c.TRANSITION)){var n=e.$id,r=this.approximateDigests,i=t.name,o=s.stringify(e);console.log("Transition #"+n+" Digest #"+r+": <- Success "+o+", final state: "+i)}},t.prototype.traceUiViewEvent=function(t,e,n){void 0===n&&(n=""),this.enabled(c.UIVIEW)&&console.log("ui-view: "+s.padString(30,t)+" "+r(e)+n)},t.prototype.traceUiViewConfigUpdated=function(t,e){this.enabled(c.UIVIEW)&&this.traceUiViewEvent("Updating",t," with ViewConfig from context='"+e+"'")},t.prototype.traceUiViewScopeCreated=function(t,e){this.enabled(c.UIVIEW)&&this.traceUiViewEvent("Created scope for",t,", scope #"+e.$id)},t.prototype.traceUiViewFill=function(t,e){this.enabled(c.UIVIEW)&&this.traceUiViewEvent("Fill",t," with: "+s.maxLength(200,e))},t.prototype.traceViewServiceEvent=function(t,e){this.enabled(c.VIEWCONFIG)&&console.log("VIEWCONFIG: "+t+" "+u(e))},t.prototype.traceViewServiceUiViewEvent=function(t,e){this.enabled(c.VIEWCONFIG)&&console.log("VIEWCONFIG: "+t+" "+r(e))},t}();e.Trace=l;var f=new l;e.trace=f},function(t,e,n){"use strict";function r(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}r(n(14)),r(n(15)),r(n(10)),r(n(11)),r(n(16)),r(n(43))},function(t,e,n){"use strict";function r(t){return void 0===t&&(t=!1),function(e,n){var r=t?-1:1,i=(e.node.state.path.length-n.node.state.path.length)*r;return 0!==i?i:n.hook.priority-e.hook.priority}}var i=n(3),o=n(4),a=n(13),s=function(){function t(t,e,n){var o=this;this.$transitions=t,this.transition=e,this.baseHookOptions=n,this.getOnBeforeHooks=function(){return o._buildNodeHooks("onBefore","to",r(),void 0,{async:!1})},this.getOnStartHooks=function(){return o._buildNodeHooks("onStart","to",r())},this.getOnExitHooks=function(){return o._buildNodeHooks("onExit","exiting",r(!0),function(t){return{$state$:t.state}})},this.getOnRetainHooks=function(){return o._buildNodeHooks("onRetain","retained",r(),function(t){return{$state$:t.state}})},this.getOnEnterHooks=function(){return o._buildNodeHooks("onEnter","entering",r(),function(t){return{$state$:t.state}})},this.getOnFinishHooks=function(){return o._buildNodeHooks("onFinish","to",r(),function(t){return{$treeChanges$:o.treeChanges}})},this.getOnSuccessHooks=function(){return o._buildNodeHooks("onSuccess","to",r(),void 0,{async:!1,rejectIfSuperseded:!1})},this.getOnErrorHooks=function(){return o._buildNodeHooks("onError","to",r(),void 0,{async:!1,rejectIfSuperseded:!1})},this.treeChanges=e.treeChanges(),this.toState=i.tail(this.treeChanges.to).state,this.fromState=i.tail(this.treeChanges.from).state,this.transitionOptions=e.options()}return t.prototype.asyncHooks=function(){var t=this.getOnStartHooks(),e=this.getOnExitHooks(),n=this.getOnRetainHooks(),r=this.getOnEnterHooks(),o=this.getOnFinishHooks(),a=[t,e,n,r,o];return a.reduce(i.unnestR,[]).filter(i.identity)},t.prototype._buildNodeHooks=function(t,e,n,r,o){var s=this;void 0===r&&(r=function(t){return{}});var u=this._matchingHooks(t,this.treeChanges);if(!u)return[];var c=function(n){var u=n.matches(s.treeChanges),c=u[e];return c.map(function(e){var u=i.extend({bind:n.bind,traceData:{hookType:t,context:e}},s.baseHookOptions,o),c=new a.TransitionHook(n.callback,r(e),e.resolveContext,u);return{hook:n,node:e,transitionHook:c}})};return u.map(c).reduce(i.unnestR,[]).sort(n).map(function(t){return t.transitionHook})},t.prototype._matchingHooks=function(t,e){return[this.transition,this.$transitions].map(function(e){return e.getHooks(t)}).filter(i.assertPredicate(o.isArray,"broken event named: "+t)).reduce(i.unnestR,[]).filter(function(t){return t.matches(e)})},t}();e.HookBuilder=s},function(t,e,n){"use strict";function r(t,e){function n(t){for(var e=r,n=0;n<e.length;n++){var i=s.Glob.fromString(e[n]);if(i&&i.matches(t.name)||!i&&e[n]===t.name)return!0}return!1}var r=a.isString(e)?[e]:e,i=a.isFunction(r)?r:n;return!!i(t)}function i(t,e){return function(n,r,i){void 0===i&&(i={});var a=new u(n,r,i);return t[e].push(a),function(){o.removeFrom(t[e])(a)}}}var o=n(3),a=n(4),s=n(7);e.matchState=r;var u=function(){function t(t,e,n){void 0===n&&(n={}),this.callback=e,this.matchCriteria=o.extend({to:!0,from:!0,exiting:!0,retained:!0,entering:!0},t),this.priority=n.priority||0,this.bind=n.bind||null}return t._matchingNodes=function(t,e){if(e===!0)return t;var n=t.filter(function(t){return r(t.state,e)});return n.length?n:null},t.prototype.matches=function(e){var n=this.matchCriteria,r=t._matchingNodes,i={to:r([o.tail(e.to)],n.to),from:r([o.tail(e.from)],n.from),exiting:r(e.exiting,n.exiting),retained:r(e.retained,n.retained),entering:r(e.entering,n.entering)},a=["to","from","exiting","retained","entering"].map(function(t){return i[t]}).reduce(o.allTrueR,!0);return a?i:null},t}();e.EventHook=u;var c=function(){function t(){var t=this;this._transitionEvents={onBefore:[],onStart:[],onEnter:[],onRetain:[],onExit:[],onFinish:[],onSuccess:[],onError:[]},this.getHooks=function(e){return t._transitionEvents[e]},this.onBefore=i(this._transitionEvents,"onBefore"),this.onStart=i(this._transitionEvents,"onStart"),this.onEnter=i(this._transitionEvents,"onEnter"),this.onRetain=i(this._transitionEvents,"onRetain"),this.onExit=i(this._transitionEvents,"onExit"),this.onFinish=i(this._transitionEvents,"onFinish"),this.onSuccess=i(this._transitionEvents,"onSuccess"),this.onError=i(this._transitionEvents,"onError")}return t.mixin=function(t,e){Object.keys(t._transitionEvents).concat(["getHooks"]).forEach(function(n){return e[n]=t[n]})},t}();e.HookRegistry=c},function(t,e,n){"use strict";var r=n(3),i=n(9),o=n(4),a=n(5),s=n(12),u=n(6),c=n(10),l=n(17),f={async:!0,rejectIfSuperseded:!0,current:r.noop,transition:null,traceData:{},bind:null},p=function(){function t(t,e,n,i){var o=this;this.fn=t,this.locals=e,this.resolveContext=n,this.options=i,this.isSuperseded=function(){return o.options.current()!==o.options.transition},this.options=r.defaults(i,f)}return t.prototype.invokeHook=function(t){var e=this,n=this,i=n.options,o=n.fn,a=n.resolveContext,u=r.extend({},this.locals,t);if(s.trace.traceHookInvocation(this,i),i.rejectIfSuperseded&&this.isSuperseded())return c.Rejection.superseded(i.current()).toPromise();if(!i.async){var l=a.invokeNow(o,u,i);return this.handleHookResult(l)}return a.invokeLater(o,u,i).then(function(t){return e.handleHookResult(t)})},t.prototype.handleHookResult=function(t){var e=this;if(o.isDefined(t)){var n=a.pattern([[this.isSuperseded,function(){return c.Rejection.superseded(e.options.current()).toPromise()}],[a.eq(!1),function(){return c.Rejection.aborted("Hook aborted transition").toPromise()}],[a.is(l.TargetState),function(t){return c.Rejection.redirected(t).toPromise()}],[o.isPromise,function(t){return t.then(e.handleHookResult.bind(e))}]]),r=n(t);return r&&s.trace.traceHookResult(t,r,this.options),r}},t.prototype.toString=function(){var t=this,e=t.options,n=t.fn,r=a.parse("traceData.hookType")(e)||"internal",o=a.parse("traceData.context.state.name")(e)||a.parse("traceData.context")(e)||"unknown",s=i.fnToString(n);return r+" context: "+o+", "+i.maxLength(200,s)},t.runSynchronousHooks=function(t,e,n){void 0===e&&(e={}),void 0===n&&(n=!1);for(var r=[],i=0;i<t.length;i++)try{r.push(t[i].invokeHook(e))}catch(s){if(!n)return c.Rejection.aborted(s).toPromise();console.error("Swallowed exception during synchronous hook handler: "+s)}var l=r.filter(c.Rejection.isTransitionRejectionPromise);return l.length?l[0]:r.filter(o.isPromise).reduce(function(t,e){return t.then(a.val(e))},u.services.$q.when())},t}();e.TransitionHook=p},function(t,e,n){"use strict";function r(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}r(n(18)),r(n(19)),r(n(26)),r(n(33)),r(n(34)),r(n(35)),r(n(36)),r(n(37)),r(n(27))},function(t,e,n){"use strict";var r=n(4),i=n(3),o=function(){function t(e){this.stateRegistry=e,this.invalidCallbacks=[],i.bindFunctions(t.prototype,this,this)}return t.prototype.decorator=function(t,e){return this.stateRegistry.decorator(t,e)||this},t.prototype.state=function(t,e){return r.isObject(t)?e=t:e.name=t,this.stateRegistry.register(e),this},t.prototype.onInvalid=function(t){this.invalidCallbacks.push(t)},t}();e.StateProvider=o},function(t,e,n){"use strict";var r=n(3),i=n(4),o=n(5),a=n(20),s=function(t){if(!i.isString(t))return!1;var e="^"===t.charAt(0);return{val:e?t.substring(1):t,root:e}},u=function(){function t(t,e){this.matcher=t;var n=this,i=function(t){return""===t.name},u=function(){return t.find("")};this.builders={self:[function(t){return t.self.$$state=function(){return t},t.self}],parent:[function(e){return i(e)?null:t.find(n.parentName(e))||u()}],data:[function(t){return t.parent&&t.parent.data&&(t.data=t.self.data=r.inherit(t.parent.data,t.data)),t.data}],url:[function(t){var n=t,i=s(n.url),o=t.parent,a=i?e.compile(i.val,{params:t.params||{},paramMap:function(t,e){return n.reloadOnSearch===!1&&e&&(t=r.extend(t||{},{dynamic:!0})),t}}):n.url;if(!a)return null;if(!e.isMatcher(a))throw new Error("Invalid url '"+a+"' in state '"+t+"'");return i&&i.root?a:(o&&o.navigable||u()).url.append(a)}],navigable:[function(t){return!i(t)&&t.url?t:t.parent?t.parent.navigable:null}],params:[function(t){var e=function(t,e){return a.Param.fromConfig(e,null,t)},n=t.url&&t.url.parameters({inherit:!1})||[],i=r.values(r.map(r.omit(t.params||{},n.map(o.prop("id"))),e));return n.concat(i).map(function(t){return[t.id,t]}).reduce(r.applyPairs,{})}],views:[],path:[function(t){return t.parent?t.parent.path.concat(t):[t]}],includes:[function(t){var e=t.parent?r.extend({},t.parent.includes):{};return e[t.name]=!0,e}]}}return t.prototype.builder=function(t,e){var n=this.builders,r=n[t]||[];return i.isString(t)&&!i.isDefined(e)?r.length>1?r:r[0]:i.isString(t)&&i.isFunction(e)?(n[t]=r,n[t].push(e),function(){return n[t].splice(n[t].indexOf(e,1))&&null}):void 0},t.prototype.build=function(t){var e=this,n=e.matcher,i=e.builders,o=this.parentName(t);if(o&&!n.find(o))return null;for(var a in i)if(i.hasOwnProperty(a)){var s=i[a].reduce(function(t,e){return function(n){return e(n,t)}},r.noop);t[a]=s(t)}return t},t.prototype.parentName=function(t){var e=t.name||"";return-1!==e.indexOf(".")?e.substring(0,e.lastIndexOf(".")):t.parent?i.isString(t.parent)?t.parent:t.parent.name:""},t.prototype.name=function(t){var e=t.name;if(-1!==e.indexOf(".")||!t.parent)return e;var n=i.isString(t.parent)?t.parent:t.parent.name;return n?n+"."+e:e},t}();e.StateBuilder=u},function(t,e,n){"use strict";function r(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}r(n(21)),r(n(24)),r(n(25)),r(n(23))},function(t,e,n){
1776 "use strict";function r(t){return t=d(t)&&{value:t}||t,s.extend(t,{$$fn:c.isInjectable(t.value)?t.value:function(){return t.value}})}function i(t,e,n,r){if(t.type&&e&&"string"!==e.name)throw new Error("Param '"+r+"' has two type configurations.");return t.type&&e&&"string"===e.name&&h.paramTypes.type(t.type)?h.paramTypes.type(t.type):e?e:t.type?t.type instanceof p.Type?t.type:h.paramTypes.type(t.type):n===m.CONFIG?h.paramTypes.type("any"):h.paramTypes.type("string")}function o(t,e){var n=t.squash;if(!e||n===!1)return!1;if(!c.isDefined(n)||null==n)return f.matcherConfig.defaultSquashPolicy();if(n===!0||c.isString(n))return n;throw new Error("Invalid squash policy: '"+n+"'. Valid policies: false, true, or arbitrary string")}function a(t,e,n,r){var i,o,a=[{from:"",to:n||e?void 0:""},{from:null,to:n||e?void 0:""}];return i=c.isArray(t.replace)?t.replace:[],c.isString(r)&&i.push({from:r,to:void 0}),o=s.map(i,u.prop("from")),s.filter(a,function(t){return-1===o.indexOf(t.from)}).concat(i)}var s=n(3),u=n(5),c=n(4),l=n(6),f=n(22),p=n(23),h=n(24),v=Object.prototype.hasOwnProperty,d=function(t){return 0===["value","type","squash","array","dynamic"].filter(v.bind(t||{})).length};!function(t){t[t.PATH=0]="PATH",t[t.SEARCH=1]="SEARCH",t[t.CONFIG=2]="CONFIG"}(e.DefType||(e.DefType={}));var m=e.DefType,g=function(){function t(t,e,n,u){function c(){var e={array:u===m.SEARCH?"auto":!1},r=t.match(/\[\]$/)?{array:!0}:{};return s.extend(e,r,n).array}n=r(n),e=i(n,e,u,t);var l=c();e=l?e.$asArray(l,u===m.SEARCH):e;var f=void 0!==n.value,p=n.dynamic===!0,h=o(n,f),v=a(n,l,f,h);s.extend(this,{id:t,type:e,location:u,squash:h,replace:v,isOptional:f,dynamic:p,config:n,array:l})}return t.prototype.isDefaultValue=function(t){return this.isOptional&&this.type.equals(this.value(),t)},t.prototype.value=function(t){var e=this,n=function(){if(!l.services.$injector)throw new Error("Injectable functions cannot be called at configuration time");var t=l.services.$injector.invoke(e.config.$$fn);if(null!==t&&void 0!==t&&!e.type.is(t))throw new Error("Default value ("+t+") for parameter '"+e.id+"' is not an instance of Type ("+e.type.name+")");return t},r=function(t){var n=s.map(s.filter(e.replace,u.propEq("from",t)),u.prop("to"));return n.length?n[0]:t};return t=r(t),c.isDefined(t)?this.type.$normalize(t):n()},t.prototype.isSearch=function(){return this.location===m.SEARCH},t.prototype.validates=function(t){if((!c.isDefined(t)||null===t)&&this.isOptional)return!0;var e=this.type.$normalize(t);if(!this.type.is(e))return!1;var n=this.type.encode(e);return!(c.isString(n)&&!this.type.pattern.exec(n))},t.prototype.toString=function(){return"{Param:"+this.id+" "+this.type+" squash: '"+this.squash+"' optional: "+this.isOptional+"}"},t.fromConfig=function(e,n,r){return new t(e,n,r,m.CONFIG)},t.fromPath=function(e,n,r){return new t(e,n,r,m.PATH)},t.fromSearch=function(e,n,r){return new t(e,n,r,m.SEARCH)},t.values=function(t,e){return void 0===e&&(e={}),t.map(function(t){return[t.id,t.value(e[t.id])]}).reduce(s.applyPairs,{})},t.changed=function(t,e,n){return void 0===e&&(e={}),void 0===n&&(n={}),t.filter(function(t){return!t.type.equals(e[t.id],n[t.id])})},t.equals=function(e,n,r){return void 0===n&&(n={}),void 0===r&&(r={}),0===t.changed(e,n,r).length},t.validates=function(t,e){return void 0===e&&(e={}),t.map(function(t){return t.validates(e[t.id])}).reduce(s.allTrueR,!0)},t}();e.Param=g},function(t,e,n){"use strict";var r=n(4),i=function(){function t(){this._isCaseInsensitive=!1,this._isStrictMode=!0,this._defaultSquashPolicy=!1}return t.prototype.caseInsensitive=function(t){return this._isCaseInsensitive=r.isDefined(t)?t:this._isCaseInsensitive},t.prototype.strictMode=function(t){return this._isStrictMode=r.isDefined(t)?t:this._isStrictMode},t.prototype.defaultSquashPolicy=function(t){if(r.isDefined(t)&&t!==!0&&t!==!1&&!r.isString(t))throw new Error("Invalid squash policy: "+t+". Valid policies: false, true, arbitrary-string");return this._defaultSquashPolicy=r.isDefined(t)?t:this._defaultSquashPolicy},t}();e.MatcherConfig=i,e.matcherConfig=new i},function(t,e,n){"use strict";function r(t,e){function n(t){return o.isArray(t)?t:o.isDefined(t)?[t]:[]}function r(t){switch(t.length){case 0:return;case 1:return"auto"===e?t[0]:t;default:return t}}function a(t,e){return function(a){if(o.isArray(a)&&0===a.length)return a;var s=n(a),u=i.map(s,t);return e===!0?0===i.filter(u,function(t){return!t}).length:r(u)}}function s(t){return function(e,r){var i=n(e),o=n(r);if(i.length!==o.length)return!1;for(var a=0;a<i.length;a++)if(!t(i[a],o[a]))return!1;return!0}}var u=this;["encode","decode","equals","$normalize"].map(function(e){u[e]=("equals"===e?s:a)(t[e].bind(t))}),i.extend(this,{name:t.name,pattern:t.pattern,is:a(t.is.bind(t),!0),$arrayMode:e})}var i=n(3),o=n(4),a=function(){function t(t){this.pattern=/.*/,i.extend(this,t)}return t.prototype.is=function(t,e){return!0},t.prototype.encode=function(t,e){return t},t.prototype.decode=function(t,e){return t},t.prototype.equals=function(t,e){return t==e},t.prototype.$subPattern=function(){var t=this.pattern.toString();return t.substr(1,t.length-2)},t.prototype.toString=function(){return"{Type:"+this.name+"}"},t.prototype.$normalize=function(t){return this.is(t)?t:this.decode(t)},t.prototype.$asArray=function(t,e){if(!t)return this;if("auto"===t&&!e)throw new Error("'auto' array mode is for query parameters only");return new r(this,t)},t}();e.Type=a},function(t,e,n){"use strict";function r(t){return null!=t?t.toString().replace(/~/g,"~~").replace(/\//g,"~2F"):t}function i(t){return null!=t?t.toString().replace(/~2F/g,"/").replace(/~~/g,"~"):t}var o=n(3),a=n(4),s=n(5),u=n(6),c=n(23),l=function(){function t(){this.enqueue=!0,this.typeQueue=[],this.defaultTypes={hash:{encode:r,decode:i,is:s.is(String),pattern:/.*/,equals:function(t,e){return t==e}},string:{encode:r,decode:i,is:s.is(String),pattern:/[^\/]*/},"int":{encode:r,decode:function(t){return parseInt(t,10)},is:function(t){return a.isDefined(t)&&this.decode(t.toString())===t},pattern:/-?\d+/},bool:{encode:function(t){return t&&1||0},decode:function(t){return 0!==parseInt(t,10)},is:s.is(Boolean),pattern:/0|1/},date:{encode:function(t){return this.is(t)?[t.getFullYear(),("0"+(t.getMonth()+1)).slice(-2),("0"+t.getDate()).slice(-2)].join("-"):void 0},decode:function(t){if(this.is(t))return t;var e=this.capture.exec(t);return e?new Date(e[1],e[2]-1,e[3]):void 0},is:function(t){return t instanceof Date&&!isNaN(t.valueOf())},equals:function(t,e){return["getFullYear","getMonth","getDate"].reduce(function(n,r){return n&&t[r]()===e[r]()},!0)},pattern:/[0-9]{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])/,capture:/([0-9]{4})-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])/},json:{encode:o.toJson,decode:o.fromJson,is:s.is(Object),equals:o.equals,pattern:/[^\/]*/},any:{encode:o.identity,decode:o.identity,equals:o.equals,pattern:/.*/}};var t=function(t,e){return new c.Type(o.extend({name:e},t))};this.types=o.inherit(o.map(this.defaultTypes,t),{})}return t.prototype.type=function(t,e,n){if(!a.isDefined(e))return this.types[t];if(this.types.hasOwnProperty(t))throw new Error("A type named '"+t+"' has already been defined.");return this.types[t]=new c.Type(o.extend({name:t},e)),n&&(this.typeQueue.push({name:t,def:n}),this.enqueue||this._flushTypeQueue()),this},t.prototype._flushTypeQueue=function(){for(;this.typeQueue.length;){var t=this.typeQueue.shift();if(t.pattern)throw new Error("You cannot override a type's .pattern at runtime.");o.extend(this.types[t.name],u.services.$injector.invoke(t.def))}},t}();e.ParamTypes=l,e.paramTypes=new l},function(t,e,n){"use strict";var r=n(3),i=function(){function t(t){void 0===t&&(t={}),r.extend(this,t)}return t.prototype.$inherit=function(t,e,n){var i,o=r.ancestors(e,n),a={},s=[];for(var u in o)if(o[u]&&o[u].params&&(i=Object.keys(o[u].params),i.length))for(var c in i)s.indexOf(i[c])>=0||(s.push(i[c]),a[i[c]]=this[i[c]]);return r.extend({},a,t)},t}();e.StateParams=i},function(t,e,n){"use strict";var r=n(10),i=n(27),o=n(28),a=n(29),s=n(30),u=n(6),c=function(){function t(t,e,n,r,i,c){this.transition=t,this.$transitions=e,this.$urlRouter=n,this.$view=r,this.$state=i,this.globals=c,this.$q=u.services.$q,this.viewHooks=new o.ViewHooks(t,r),this.enterExitHooks=new a.EnterExitHooks(t),this.resolveHooks=new s.ResolveHooks(t),this.treeChanges=t.treeChanges(),this.registerUpdateGlobalState(),this.viewHooks.registerHooks(),this.enterExitHooks.registerHooks(),this.resolveHooks.registerHooks()}return t.prototype.runTransition=function(){var t=this;return this.globals.transitionHistory.enqueue(this.transition),this.transition.run().then(function(t){return t.to()})["catch"](function(e){return t.transRejected(e)})},t.prototype.registerUpdateGlobalState=function(){this.transition.onSuccess({},this.updateUrl.bind(this),{priority:9999})},t.prototype.transRejected=function(t){var e=this,n=e.transition,o=e.$state,a=e.$q;if(t instanceof r.Rejection){if(t.type===r.RejectType.IGNORED)return this.$urlRouter.update(),o.current;if(t.type===r.RejectType.SUPERSEDED&&t.redirected&&t.detail instanceof i.TargetState)return this._redirectMgr(n.redirect(t.detail)).runTransition();t.type===r.RejectType.ABORTED&&this.$urlRouter.update()}return this.$transitions.defaultErrorHandler()(t),a.reject(t)},t.prototype.updateUrl=function(){var t=this.transition,e=this,n=e.$urlRouter,r=e.$state,i=t.options();i.location&&r.$current.navigable&&n.push(r.$current.navigable.url,r.params,{replace:"replace"===i.location}),n.update(!0)},t.prototype._redirectMgr=function(e){var n=this,r=n.$transitions,i=n.$urlRouter,o=n.$view,a=n.$state,s=n.globals;return new t(e,r,i,o,a,s)},t}();e.TransitionManager=c},function(t,e){"use strict";var n=function(){function t(t,e,n,r){void 0===n&&(n={}),void 0===r&&(r={}),this._identifier=t,this._definition=e,this._options=r,this._params=n||{}}return t.prototype.name=function(){return this._definition&&this._definition.name||this._identifier},t.prototype.identifier=function(){return this._identifier},t.prototype.params=function(){return this._params},t.prototype.$state=function(){return this._definition},t.prototype.state=function(){return this._definition&&this._definition.self},t.prototype.options=function(){return this._options},t.prototype.exists=function(){return!(!this._definition||!this._definition.self)},t.prototype.valid=function(){return!this.error()},t.prototype.error=function(){var t=this.options().relative;if(!this._definition&&t){var e=t.name?t.name:t;return"Could not resolve '"+this.name()+"' from state '"+e+"'"}return this._definition?this._definition.self?void 0:"State '"+this.name()+"' has an invalid definition":"No such state '"+this.name()+"'"},t}();e.TargetState=n},function(t,e,n){"use strict";var r=n(3),i=n(6),o=function(){function t(t,e){this.transition=t,this.$view=e,this.treeChanges=t.treeChanges(),this.enteringViews=t.views("entering"),this.exitingViews=t.views("exiting")}return t.prototype.loadAllEnteringViews=function(){return i.services.$q.all(this.enteringViews.map(function(t){return t.load()})).then(r.noop)},t.prototype.updateViews=function(){var t=this.$view;this.exitingViews.forEach(function(e){return t.deactivateViewConfig(e)}),this.enteringViews.forEach(function(e){return t.activateViewConfig(e)}),t.sync()},t.prototype.registerHooks=function(){this.enteringViews.length&&this.transition.onStart({},this.loadAllEnteringViews.bind(this)),(this.exitingViews.length||this.enteringViews.length)&&this.transition.onSuccess({},this.updateViews.bind(this))},t}();e.ViewHooks=o},function(t,e){"use strict";var n=function(){function t(t){this.transition=t}return t.prototype.registerHooks=function(){this.registerOnEnterHooks(),this.registerOnRetainHooks(),this.registerOnExitHooks()},t.prototype.registerOnEnterHooks=function(){var t=this;this.transition.entering().filter(function(t){return!!t.onEnter}).forEach(function(e){return t.transition.onEnter({entering:e.name},e.onEnter)})},t.prototype.registerOnRetainHooks=function(){var t=this;this.transition.retained().filter(function(t){return!!t.onRetain}).forEach(function(e){return t.transition.onRetain({retained:e.name},e.onRetain)})},t.prototype.registerOnExitHooks=function(){var t=this;this.transition.exiting().filter(function(t){return!!t.onExit}).forEach(function(e){return t.transition.onExit({exiting:e.name},e.onExit)})},t}();e.EnterExitHooks=n},function(t,e,n){"use strict";var r=n(3),i=n(5),o=n(31),a=n(5),s=n(32),u=o.ResolvePolicy[o.ResolvePolicy.LAZY],c=o.ResolvePolicy[o.ResolvePolicy.EAGER],l=function(){function t(t){this.transition=t}return t.prototype.registerHooks=function(){function t(t){return r.tail(n.to).resolveContext.resolvePath(r.extend({transition:t},{resolvePolicy:c}))}function e(t,e){var o=r.find(n.entering,i.propEq("state",t)),a=o.resolveContext,c=new s.Resolvable("$resolve$",function(){return r.map(a.getResolvables(),function(t){return t.data})}),l=r.extend({transition:e},{resolvePolicy:u});return a.resolvePathElement(o.state,l).then(function(){return c.resolveResolvable(a)}).then(function(){return a.addResolvables({$resolve$:c},o.state)})}var n=this.transition.treeChanges();t.$inject=["$transition$"],e.$inject=["$state$","$transition$"],this.transition.onStart({},t,{priority:1e3}),this.transition.onEnter({entering:a.val(!0)},e,{priority:1e3})},t}();e.ResolveHooks=l},function(t,e){"use strict";!function(t){t[t.JIT=0]="JIT",t[t.LAZY=1]="LAZY",t[t.EAGER=2]="EAGER"}(e.ResolvePolicy||(e.ResolvePolicy={}));e.ResolvePolicy},function(t,e,n){"use strict";var r=n(3),i=n(5),o=n(4),a=n(6),s=n(12),u=function(){function t(t,e,n){this.promise=void 0,r.extend(this,{name:t,resolveFn:e,deps:a.services.$injector.annotate(e,a.services.$injector.strictDi),data:n})}return t.prototype.resolveResolvable=function(t,e){var n=this;void 0===e&&(e={});var i=this,o=i.name,u=i.deps,c=i.resolveFn;s.trace.traceResolveResolvable(this,e);var l=a.services.$q.defer();this.promise=l.promise;var f=t.getResolvables(null,{omitOwnLocals:[o]}),p=r.pick(f,u),h=r.map(p,function(n){return n.get(t,e)});return a.services.$q.all(h).then(function(t){try{var e=a.services.$injector.invoke(c,null,t);l.resolve(e)}catch(r){l.reject(r)}return n.promise}).then(function(t){return n.data=t,s.trace.traceResolvableResolved(n,e),n.promise})},t.prototype.get=function(t,e){return this.promise||this.resolveResolvable(t,e)},t.prototype.toString=function(){return"Resolvable(name: "+this.name+", requires: ["+this.deps+"])"},t.makeResolvables=function(e){var n=r.filter(e,i.not(o.isInjectable)),a=Object.keys(n);if(a.length)throw new Error("Invalid resolve key/value: "+a[0]+"/"+n[a[0]]);return r.map(e,function(e,n){return new t(n,e)})},t}();e.Resolvable=u},function(t,e,n){"use strict";var r=n(3),i=n(5),o=function(){function t(t){r.extend(this,t)}return t.prototype.is=function(t){return this===t||this.self===t||this.fqn()===t},t.prototype.fqn=function(){if(!(this.parent&&this.parent instanceof this.constructor))return this.name;var t=this.parent.fqn();return t?t+"."+this.name:this.name},t.prototype.root=function(){return this.parent&&this.parent.root()||this},t.prototype.parameters=function(t){t=r.defaults(t,{inherit:!0});var e=t.inherit&&this.parent&&this.parent.parameters()||[];return e.concat(r.values(this.params))},t.prototype.parameter=function(t,e){return void 0===e&&(e={}),this.url&&this.url.parameter(t,e)||r.find(r.values(this.params),i.propEq("id",t))||e.inherit&&this.parent&&this.parent.parameter(t)},t.prototype.toString=function(){return this.fqn()},t}();e.State=o},function(t,e,n){"use strict";var r=n(4),i=function(){function t(t){this._states=t}return t.prototype.isRelative=function(t){return t=t||"",0===t.indexOf(".")||0===t.indexOf("^")},t.prototype.find=function(t,e){if(t||""===t){var n=r.isString(t),i=n?t:t.name;this.isRelative(i)&&(i=this.resolvePath(i,e));var o=this._states[i];return!o||!n&&(n||o!==t&&o.self!==t)?void 0:o}},t.prototype.resolvePath=function(t,e){if(!e)throw new Error("No reference point given for path '"+t+"'");for(var n=this.find(e),r=t.split("."),i=0,o=r.length,a=n;o>i;i++)if(""!==r[i]||0!==i){if("^"!==r[i])break;if(!a.parent)throw new Error("Path '"+t+"' not valid for state '"+n.name+"'");a=a.parent}else a=n;var s=r.slice(i).join(".");return a.name+(a.name&&s?".":"")+s},t}();e.StateMatcher=i},function(t,e,n){"use strict";var r=n(3),i=n(4),o=n(17),a=function(){function t(t,e,n){this.states=t,this.builder=e,this.$urlRouterProvider=n,this.queue=[]}return t.prototype.register=function(t){var e=this,n=e.states,a=e.queue,s=e.$state,u=r.inherit(new o.State,r.extend({},t,{self:t,resolve:t.resolve||{},toString:function(){return t.name}}));if(!i.isString(u.name))throw new Error("State must have a valid name");if(n.hasOwnProperty(u.name)||-1!==r.pluck(a,"name").indexOf(u.name))throw new Error("State '"+u.name+"' is already defined");return a.push(u),this.$state&&this.flush(s),u},t.prototype.flush=function(t){for(var e,n,r,i=this,o=i.queue,a=i.states,s=i.builder,u=[],c={};o.length>0;)if(n=o.shift(),e=s.build(n),r=u.indexOf(n),e){if(a.hasOwnProperty(n.name))throw new Error("State '"+name+"' is already defined");a[n.name]=n,this.attachRoute(t,n),r>=0&&u.splice(r,1)}else{var l=c[n.name];if(c[n.name]=o.length,r>=0&&l===o.length)return a;0>r&&u.push(n),o.push(n)}return a},t.prototype.autoFlush=function(t){this.$state=t,this.flush(t)},t.prototype.attachRoute=function(t,e){var n=this.$urlRouterProvider;!e[r.abstractKey]&&e.url&&n.when(e.url,["$match","$stateParams",function(n,i){t.$current.navigable===e&&r.equalForKeys(n,i)||t.transitionTo(e,n,{inherit:!0,location:!1})}])},t}();e.StateQueueManager=a},function(t,e,n){"use strict";var r=n(34),i=n(19),o=n(35),a=function(){function t(t,e){this.states={},this.matcher=new r.StateMatcher(this.states),this.builder=new i.StateBuilder(this.matcher,t),this.stateQueue=new o.StateQueueManager(this.states,this.builder,e);var n={name:"",url:"^",views:null,params:{"#":{value:null,type:"hash",dynamic:!0}},"abstract":!0},a=this._root=this.stateQueue.register(n);a.navigable=null}return t.prototype.root=function(){return this._root},t.prototype.register=function(t){return this.stateQueue.register(t)},t.prototype.get=function(t,e){var n=this;if(0===arguments.length)return Object.keys(this.states).map(function(t){return n.states[t].self});var r=this.matcher.find(t,e);return r&&r.self||null},t.prototype.decorator=function(t,e){return this.builder.builder(t,e)},t}();e.StateRegistry=a},function(t,e,n){"use strict";var r=n(3),i=n(4),o=n(8),a=n(6),s=n(38),u=n(39),c=n(43),l=n(10),f=n(27),p=n(26),h=n(21),v=n(7),d=n(3),m=n(3),g=function(){function t(e,n,r,i,o,a){this.$view=e,this.$urlRouter=n,this.$transitions=r,this.stateRegistry=i,this.stateProvider=o,this.globals=a;var s=["current","$current","params","transition"],u=Object.keys(t.prototype).filter(function(t){return-1===s.indexOf(t)});m.bindFunctions(t.prototype,this,this,u)}return Object.defineProperty(t.prototype,"transition",{get:function(){return this.globals.transition},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"params",{get:function(){return this.globals.params},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"current",{get:function(){return this.globals.current},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"$current",{get:function(){return this.globals.$current},enumerable:!0,configurable:!0}),t.prototype._handleInvalidTargetState=function(t,e){function n(){var t=p.dequeue();return void 0===t?l.Rejection.invalid(e.error()).toPromise():d(t).then(m).then(function(t){return t||n()})}var r=this,i=function(){return r.globals.transitionHistory.peekTail()},u=i(),c=s.PathFactory.makeTargetState(t),p=new o.Queue([].concat(this.stateProvider.invalidCallbacks)),h=a.services.$q,v=a.services.$injector,d=function(t){return h.when(v.invoke(t,null,{$to$:e,$from$:c}))},m=function(t){if(t instanceof f.TargetState){var e=t;return e=r.target(e.identifier(),e.params(),e.options()),e.valid()?i()!==u?l.Rejection.superseded().toPromise():r.transitionTo(e.identifier(),e.params(),e.options()):l.Rejection.invalid(e.error()).toPromise()}};return n()},t.prototype.reload=function(t){return this.transitionTo(this.current,this.params,{reload:i.isDefined(t)?t:!0,inherit:!1,notify:!1})},t.prototype.go=function(t,e,n){var i={relative:this.$current,inherit:!0},o=r.defaults(n,i,c.defaultTransOpts);return this.transitionTo(t,e,o)},t.prototype.target=function(t,e,n){if(void 0===n&&(n={}),i.isObject(n.reload)&&!n.reload.name)throw new Error("Invalid reload state object");if(n.reloadState=n.reload===!0?this.stateRegistry.root():this.stateRegistry.matcher.find(n.reload,n.relative),n.reload&&!n.reloadState)throw new Error("No such reload state '"+(i.isString(n.reload)?n.reload:n.reload.name)+"'");var r=this.stateRegistry.matcher.find(t,n.relative);return new f.TargetState(t,r,e,n)},t.prototype.transitionTo=function(t,e,n){var i=this;void 0===e&&(e={}),void 0===n&&(n={});var o=this.globals.transitionHistory;n=r.defaults(n,c.defaultTransOpts),n=r.extend(n,{current:o.peekTail.bind(o)});var l=this.target(t,e,n),f=this.globals.successfulTransitions.peekTail(),h=function(){return s.PathFactory.bindTransNodesToPath([new u.Node(i.stateRegistry.root())])},v=f?f.treeChanges().to:h();if(!l.exists())return this._handleInvalidTargetState(v,l);if(!l.valid())return a.services.$q.reject(l.error());var d=this.$transitions.create(v,l),m=new p.TransitionManager(d,this.$transitions,this.$urlRouter,this.$view,this,this.globals),g=m.runTransition();return r.extend(g,{transition:d})},t.prototype.is=function(t,e,n){n=r.defaults(n,{relative:this.$current});var o=this.stateRegistry.matcher.find(t,n.relative);if(i.isDefined(o))return this.$current!==o?!1:i.isDefined(e)&&null!==e?h.Param.equals(o.parameters(),this.params,e):!0},t.prototype.includes=function(t,e,n){n=r.defaults(n,{relative:this.$current});var o=i.isString(t)&&v.Glob.fromString(t);if(o){if(!o.matches(this.$current.name))return!1;t=this.$current.name}var a=this.stateRegistry.matcher.find(t,n.relative),s=this.$current.includes;if(i.isDefined(a))return i.isDefined(s[a.name])?e?d.equalForKeys(h.Param.values(a.parameters(),e),this.params,Object.keys(e)):!0:!1},t.prototype.href=function(t,e,n){var o={lossy:!0,inherit:!0,absolute:!1,relative:this.$current};n=r.defaults(n,o);var a=this.stateRegistry.matcher.find(t,n.relative);if(!i.isDefined(a))return null;n.inherit&&(e=this.params.$inherit(e||{},this.$current,a));var s=a&&n.lossy?a.navigable:a;return s&&void 0!==s.url&&null!==s.url?this.$urlRouter.href(s.url,h.Param.values(a.parameters(),e),{absolute:n.absolute}):null},t.prototype.get=function(t,e){return 0===arguments.length?this.stateRegistry.get():this.stateRegistry.get(t,e||this.$current)},t}();e.StateService=g},function(t,e,n){"use strict";var r=n(3),i=n(5),o=n(17),a=n(39),s=n(40),u=function(){function t(){}return t.makeTargetState=function(t){var e=r.tail(t).state;return new o.TargetState(e,e,t.map(i.prop("paramValues")).reduce(r.mergeR,{}))},t.buildPath=function(t){var e=t.params();return t.$state().path.map(function(t){return new a.Node(t).applyRawParams(e)})},t.buildToPath=function(e,n){var r=t.buildPath(n);return n.options().inherit?t.inheritParams(e,r,Object.keys(n.params())):r},t.applyViewConfigs=function(t,e){return e.map(function(e){var n=r.values(e.state.views||{}),i=n.map(function(n){return t.createViewConfig(e,n)}).reduce(r.unnestR,[]);return r.extend(e,{views:i})})},t.inheritParams=function(t,e,n){function o(t,e){var n=r.find(t,i.propEq("state",e));return r.extend({},n&&n.paramValues)}void 0===n&&(n=[]);var s=i.curry(function(t,e,n){var i=r.extend({},n&&n.paramValues),s=r.pick(i,e);i=r.omit(i,e);var u=o(t,n.state)||{},c=r.extend(i,u,s);return new a.Node(n.state).applyRawParams(c)});return e.map(s(t,n))},t.bindTransNodesToPath=function(t){var e=new s.ResolveContext(t);return t.forEach(function(t){t.resolveContext=e.isolateRootTo(t.state),t.resolveInjector=new s.ResolveInjector(t.resolveContext,t.state),t.resolves.$stateParams=new s.Resolvable("$stateParams",function(){return t.paramValues},t.paramValues)}),t},t.treeChanges=function(e,n,r){function o(t,e){var r=a.Node.clone(t);return r.paramValues=n[e].paramValues,r}for(var s=0,u=Math.min(e.length,n.length),c=function(t){return t.parameters({inherit:!1}).filter(i.not(i.prop("dynamic"))).map(i.prop("id"))},l=function(t,e){return t.equals(e,c(t.state))};u>s&&e[s].state!==r&&l(e[s],n[s]);)s++;var f,p,h,v,d,m,g,y;return f=e,p=f.slice(0,s),h=f.slice(s),m=p.map(o),g=n.slice(s),y=m.concat(g),d=t.bindTransNodesToPath(y),v=d.slice(s),{from:f,to:d,retained:p,exiting:h,entering:v}},t.bindTransitionResolve=function(t,e){var n=t.to[0];n.resolves.$transition$=new s.Resolvable("$transition$",function(){return e},e)},t.subPath=function(t,e){var n=r.find(t,function(t){return t.state===e}),i=t.indexOf(n);if(-1===i)throw new Error("The path does not contain the state: "+e);return t.slice(0,i+1)},t.paramValues=function(t){return t.reduce(function(t,e){return r.extend(t,e.paramValues)},{})},t}();e.PathFactory=u},function(t,e,n){"use strict";var r=n(3),i=n(5),o=n(40),a=function(){function t(e){if(e instanceof t){var n=e;this.state=n.state,this.paramSchema=n.paramSchema.slice(),this.paramValues=r.extend({},n.paramValues),this.resolves=r.extend({},n.resolves),this.views=n.views&&n.views.slice(),this.resolveContext=n.resolveContext,this.resolveInjector=n.resolveInjector}else this.state=e,this.paramSchema=e.parameters({inherit:!1}),this.paramValues={},this.resolves=r.mapObj(e.resolve,function(t,e){return new o.Resolvable(e,t)})}return t.prototype.applyRawParams=function(t){var e=function(e){return[e.id,e.value(t[e.id])]};return this.paramValues=this.paramSchema.reduce(function(t,n){return r.applyPairs(t,e(n))},{}),this},t.prototype.parameter=function(t){return r.find(this.paramSchema,i.propEq("id",t))},t.prototype.equals=function(t,e){var n=this;void 0===e&&(e=this.paramSchema.map(i.prop("id")));var o=function(e){return n.parameter(e).type.equals(n.paramValues[e],t.paramValues[e])};return this.state===t.state&&e.map(o).reduce(r.allTrueR,!0)},t.clone=function(e){return new t(e)},t.matching=function(t,e){var n=t.reduce(function(t,n,r){return t===r&&r<e.length&&n.state===e[r].state?r+1:t},0);return t.slice(0,n)},t}();e.Node=a},function(t,e,n){"use strict";function r(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}r(n(31)),r(n(32)),r(n(41)),r(n(42))},function(t,e,n){"use strict";function r(t,e){var n=a.isString(t)?t:null,r=a.isObject(t)?t:{},i=r[e.name]||n||p;return c.ResolvePolicy[i]}var i=n(3),o=n(5),a=n(4),s=n(12),u=n(6),c=n(31),l=n(3),f=n(38),p=c.ResolvePolicy[c.ResolvePolicy.LAZY],h=function(){function t(t){this._path=t,i.extend(this,{_nodeFor:function(t){return i.find(this._path,o.propEq("state",t))},_pathTo:function(t){return f.PathFactory.subPath(this._path,t)}})}return t.prototype.getResolvables=function(t,e){e=i.defaults(e,{omitOwnLocals:[]});var n=t?this._pathTo(t):this._path,r=i.tail(n);return n.reduce(function(t,n){var o=n===r?e.omitOwnLocals:[],a=i.omit(n.resolves,o);return i.extend(t,a)},{})},t.prototype.getResolvablesForFn=function(t){var e=u.services.$injector.annotate(t,u.services.$injector.strictDi);return i.pick(this.getResolvables(),e)},t.prototype.isolateRootTo=function(e){return new t(this._pathTo(e))},t.prototype.addResolvables=function(t,e){i.extend(this._nodeFor(e).resolves,t)},t.prototype.getOwnResolvables=function(t){return i.extend({},this._nodeFor(t).resolves)},t.prototype.resolvePath=function(t){var e=this;void 0===t&&(t={}),s.trace.traceResolvePath(this._path,t);var n=function(n){return e.resolvePathElement(n.state,t)};return u.services.$q.all(i.map(this._path,n)).then(function(t){return t.reduce(l.mergeR,{})})},t.prototype.resolvePathElement=function(t,e){var n=this;void 0===e&&(e={});var o=e&&e.resolvePolicy,a=c.ResolvePolicy[o||p],l=this.getOwnResolvables(t),f=function(e){return r(t.resolvePolicy,e)>=a},h=i.filter(l,f),v=function(r){return r.get(n.isolateRootTo(t),e)},d=i.map(h,v);return s.trace.traceResolvePathElement(this,h,e),u.services.$q.all(d)},t.prototype.invokeLater=function(t,e,n){var r=this;void 0===e&&(e={}),void 0===n&&(n={});var o=this.getResolvablesForFn(t);s.trace.tracePathElementInvoke(i.tail(this._path),t,Object.keys(o),i.extend({when:"Later"},n));var a=function(t){return t.get(r,n)},c=i.map(o,a);return u.services.$q.all(c).then(function(){try{return r.invokeNow(t,e,n)}catch(i){return u.services.$q.reject(i)}})},t.prototype.invokeNow=function(t,e,n){void 0===n&&(n={});var r=this.getResolvablesForFn(t);s.trace.tracePathElementInvoke(i.tail(this._path),t,Object.keys(r),i.extend({when:"Now "},n));var a=i.map(r,o.prop("data"));return u.services.$injector.invoke(t,n.bind||null,i.extend({},e,a))},t}();e.ResolveContext=h},function(t,e,n){"use strict";var r=n(3),i=function(){function t(t,e){this._resolveContext=t,this._state=e}return t.prototype.invokeLater=function(t,e){return this._resolveContext.invokeLater(t,e)},t.prototype.invokeNow=function(t,e){return this._resolveContext.invokeNow(null,t,e)},t.prototype.getLocals=function(t){var e=this,n=function(t){return t.get(e._resolveContext)};return r.map(this._resolveContext.getResolvablesForFn(t),n)},t}();e.ResolveInjector=i},function(t,e,n){"use strict";var r=n(11),i=n(15);e.defaultTransOpts={location:!0,relative:null,inherit:!1,notify:!0,reload:!1,custom:{},current:function(){return null}};var o=function(){function t(t){this.$view=t,this._defaultErrorHandler=function(t){t instanceof Error&&console.error(t)},i.HookRegistry.mixin(new i.HookRegistry,this)}return t.prototype.defaultErrorHandler=function(t){return this._defaultErrorHandler=t||this._defaultErrorHandler},t.prototype.create=function(t,e){return new r.Transition(t,e,this)},t}();e.TransitionService=o},function(t,e,n){"use strict";function r(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}r(n(39)),r(n(38))},function(t,e,n){"use strict";function r(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}r(n(46)),r(n(22)),r(n(47)),r(n(48))},function(t,e,n){"use strict";function r(t,e){var n=["",""],r=t.replace(/[\\\[\]\^$*+?.()|{}]/g,"\\$&");if(!e)return r;switch(e.squash){case!1:n=["(",")"+(e.isOptional?"?":"")];break;case!0:r=r.replace(/\/$/,""),n=["(?:/(",")|/)?"];break;default:n=["("+e.squash+"|",")?"]}return r+n[0]+e.type.pattern.source+n[1]}var i=n(3),o=n(5),a=n(4),s=n(20),u=n(4),c=n(21),l=n(3),f=n(3),p=function(t,e,n){return t[e]=t[e]||n()},h=function(){function t(e,n){var a=this;this.pattern=e,this.config=n,this._cache={path:[],pattern:null},this._children=[],this._params=[],this._segments=[],this._compiled=[],this.config=i.defaults(this.config,{params:{},strict:!0,caseInsensitive:!1,paramMap:i.identity});for(var u,c,l,f=/([:*])([\w\[\]]+)|\{([\w\[\]]+)(?:\:\s*((?:[^{}\\]+|\\.|\{(?:[^{}\\]+|\\.)*\})+))?\}/g,p=/([:]?)([\w\[\].-]+)|\{([\w\[\].-]+)(?:\:\s*((?:[^{}\\]+|\\.|\{(?:[^{}\\]+|\\.)*\})+))?\}/g,h=0,v=[],d=function(n){if(!t.nameValidator.test(n))throw new Error("Invalid parameter name '"+n+"' in pattern '"+e+"'");if(i.find(a._params,o.propEq("id",n)))throw new Error("Duplicate parameter name '"+n+"' in pattern '"+e+"'")},m=function(t,n){var r=t[2]||t[3],o=n?t[4]:t[4]||("*"===t[1]?".*":null);return{id:r,regexp:o,cfg:a.config.params[r],segment:e.substring(h,t.index),type:o?s.paramTypes.type(o||"string")||i.inherit(s.paramTypes.type("string"),{pattern:new RegExp(o,a.config.caseInsensitive?"i":void 0)}):null}};(u=f.exec(e))&&(c=m(u,!1),!(c.segment.indexOf("?")>=0));)d(c.id),this._params.push(s.Param.fromPath(c.id,c.type,this.config.paramMap(c.cfg,!1))),this._segments.push(c.segment),v.push([c.segment,i.tail(this._params)]),h=f.lastIndex;l=e.substring(h);var g=l.indexOf("?");if(g>=0){var y=l.substring(g);if(l=l.substring(0,g),y.length>0)for(h=0;u=p.exec(y);)c=m(u,!0),d(c.id),this._params.push(s.Param.fromSearch(c.id,c.type,this.config.paramMap(c.cfg,!0))),h=f.lastIndex}this._segments.push(l),i.extend(this,{_compiled:v.map(function(t){return r.apply(null,t)}).concat(r(l)),prefix:this._segments[0]
1776 "use strict";function r(t){return t=d(t)&&{value:t}||t,s.extend(t,{$$fn:c.isInjectable(t.value)?t.value:function(){return t.value}})}function i(t,e,n,r){if(t.type&&e&&"string"!==e.name)throw new Error("Param '"+r+"' has two type configurations.");return t.type&&e&&"string"===e.name&&h.paramTypes.type(t.type)?h.paramTypes.type(t.type):e?e:t.type?t.type instanceof p.Type?t.type:h.paramTypes.type(t.type):n===m.CONFIG?h.paramTypes.type("any"):h.paramTypes.type("string")}function o(t,e){var n=t.squash;if(!e||n===!1)return!1;if(!c.isDefined(n)||null==n)return f.matcherConfig.defaultSquashPolicy();if(n===!0||c.isString(n))return n;throw new Error("Invalid squash policy: '"+n+"'. Valid policies: false, true, or arbitrary string")}function a(t,e,n,r){var i,o,a=[{from:"",to:n||e?void 0:""},{from:null,to:n||e?void 0:""}];return i=c.isArray(t.replace)?t.replace:[],c.isString(r)&&i.push({from:r,to:void 0}),o=s.map(i,u.prop("from")),s.filter(a,function(t){return-1===o.indexOf(t.from)}).concat(i)}var s=n(3),u=n(5),c=n(4),l=n(6),f=n(22),p=n(23),h=n(24),v=Object.prototype.hasOwnProperty,d=function(t){return 0===["value","type","squash","array","dynamic"].filter(v.bind(t||{})).length};!function(t){t[t.PATH=0]="PATH",t[t.SEARCH=1]="SEARCH",t[t.CONFIG=2]="CONFIG"}(e.DefType||(e.DefType={}));var m=e.DefType,g=function(){function t(t,e,n,u){function c(){var e={array:u===m.SEARCH?"auto":!1},r=t.match(/\[\]$/)?{array:!0}:{};return s.extend(e,r,n).array}n=r(n),e=i(n,e,u,t);var l=c();e=l?e.$asArray(l,u===m.SEARCH):e;var f=void 0!==n.value,p=n.dynamic===!0,h=o(n,f),v=a(n,l,f,h);s.extend(this,{id:t,type:e,location:u,squash:h,replace:v,isOptional:f,dynamic:p,config:n,array:l})}return t.prototype.isDefaultValue=function(t){return this.isOptional&&this.type.equals(this.value(),t)},t.prototype.value=function(t){var e=this,n=function(){if(!l.services.$injector)throw new Error("Injectable functions cannot be called at configuration time");var t=l.services.$injector.invoke(e.config.$$fn);if(null!==t&&void 0!==t&&!e.type.is(t))throw new Error("Default value ("+t+") for parameter '"+e.id+"' is not an instance of Type ("+e.type.name+")");return t},r=function(t){var n=s.map(s.filter(e.replace,u.propEq("from",t)),u.prop("to"));return n.length?n[0]:t};return t=r(t),c.isDefined(t)?this.type.$normalize(t):n()},t.prototype.isSearch=function(){return this.location===m.SEARCH},t.prototype.validates=function(t){if((!c.isDefined(t)||null===t)&&this.isOptional)return!0;var e=this.type.$normalize(t);if(!this.type.is(e))return!1;var n=this.type.encode(e);return!(c.isString(n)&&!this.type.pattern.exec(n))},t.prototype.toString=function(){return"{Param:"+this.id+" "+this.type+" squash: '"+this.squash+"' optional: "+this.isOptional+"}"},t.fromConfig=function(e,n,r){return new t(e,n,r,m.CONFIG)},t.fromPath=function(e,n,r){return new t(e,n,r,m.PATH)},t.fromSearch=function(e,n,r){return new t(e,n,r,m.SEARCH)},t.values=function(t,e){return void 0===e&&(e={}),t.map(function(t){return[t.id,t.value(e[t.id])]}).reduce(s.applyPairs,{})},t.changed=function(t,e,n){return void 0===e&&(e={}),void 0===n&&(n={}),t.filter(function(t){return!t.type.equals(e[t.id],n[t.id])})},t.equals=function(e,n,r){return void 0===n&&(n={}),void 0===r&&(r={}),0===t.changed(e,n,r).length},t.validates=function(t,e){return void 0===e&&(e={}),t.map(function(t){return t.validates(e[t.id])}).reduce(s.allTrueR,!0)},t}();e.Param=g},function(t,e,n){"use strict";var r=n(4),i=function(){function t(){this._isCaseInsensitive=!1,this._isStrictMode=!0,this._defaultSquashPolicy=!1}return t.prototype.caseInsensitive=function(t){return this._isCaseInsensitive=r.isDefined(t)?t:this._isCaseInsensitive},t.prototype.strictMode=function(t){return this._isStrictMode=r.isDefined(t)?t:this._isStrictMode},t.prototype.defaultSquashPolicy=function(t){if(r.isDefined(t)&&t!==!0&&t!==!1&&!r.isString(t))throw new Error("Invalid squash policy: "+t+". Valid policies: false, true, arbitrary-string");return this._defaultSquashPolicy=r.isDefined(t)?t:this._defaultSquashPolicy},t}();e.MatcherConfig=i,e.matcherConfig=new i},function(t,e,n){"use strict";function r(t,e){function n(t){return o.isArray(t)?t:o.isDefined(t)?[t]:[]}function r(t){switch(t.length){case 0:return;case 1:return"auto"===e?t[0]:t;default:return t}}function a(t,e){return function(a){if(o.isArray(a)&&0===a.length)return a;var s=n(a),u=i.map(s,t);return e===!0?0===i.filter(u,function(t){return!t}).length:r(u)}}function s(t){return function(e,r){var i=n(e),o=n(r);if(i.length!==o.length)return!1;for(var a=0;a<i.length;a++)if(!t(i[a],o[a]))return!1;return!0}}var u=this;["encode","decode","equals","$normalize"].map(function(e){u[e]=("equals"===e?s:a)(t[e].bind(t))}),i.extend(this,{name:t.name,pattern:t.pattern,is:a(t.is.bind(t),!0),$arrayMode:e})}var i=n(3),o=n(4),a=function(){function t(t){this.pattern=/.*/,i.extend(this,t)}return t.prototype.is=function(t,e){return!0},t.prototype.encode=function(t,e){return t},t.prototype.decode=function(t,e){return t},t.prototype.equals=function(t,e){return t==e},t.prototype.$subPattern=function(){var t=this.pattern.toString();return t.substr(1,t.length-2)},t.prototype.toString=function(){return"{Type:"+this.name+"}"},t.prototype.$normalize=function(t){return this.is(t)?t:this.decode(t)},t.prototype.$asArray=function(t,e){if(!t)return this;if("auto"===t&&!e)throw new Error("'auto' array mode is for query parameters only");return new r(this,t)},t}();e.Type=a},function(t,e,n){"use strict";function r(t){return null!=t?t.toString().replace(/~/g,"~~").replace(/\//g,"~2F"):t}function i(t){return null!=t?t.toString().replace(/~2F/g,"/").replace(/~~/g,"~"):t}var o=n(3),a=n(4),s=n(5),u=n(6),c=n(23),l=function(){function t(){this.enqueue=!0,this.typeQueue=[],this.defaultTypes={hash:{encode:r,decode:i,is:s.is(String),pattern:/.*/,equals:function(t,e){return t==e}},string:{encode:r,decode:i,is:s.is(String),pattern:/[^\/]*/},"int":{encode:r,decode:function(t){return parseInt(t,10)},is:function(t){return a.isDefined(t)&&this.decode(t.toString())===t},pattern:/-?\d+/},bool:{encode:function(t){return t&&1||0},decode:function(t){return 0!==parseInt(t,10)},is:s.is(Boolean),pattern:/0|1/},date:{encode:function(t){return this.is(t)?[t.getFullYear(),("0"+(t.getMonth()+1)).slice(-2),("0"+t.getDate()).slice(-2)].join("-"):void 0},decode:function(t){if(this.is(t))return t;var e=this.capture.exec(t);return e?new Date(e[1],e[2]-1,e[3]):void 0},is:function(t){return t instanceof Date&&!isNaN(t.valueOf())},equals:function(t,e){return["getFullYear","getMonth","getDate"].reduce(function(n,r){return n&&t[r]()===e[r]()},!0)},pattern:/[0-9]{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])/,capture:/([0-9]{4})-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])/},json:{encode:o.toJson,decode:o.fromJson,is:s.is(Object),equals:o.equals,pattern:/[^\/]*/},any:{encode:o.identity,decode:o.identity,equals:o.equals,pattern:/.*/}};var t=function(t,e){return new c.Type(o.extend({name:e},t))};this.types=o.inherit(o.map(this.defaultTypes,t),{})}return t.prototype.type=function(t,e,n){if(!a.isDefined(e))return this.types[t];if(this.types.hasOwnProperty(t))throw new Error("A type named '"+t+"' has already been defined.");return this.types[t]=new c.Type(o.extend({name:t},e)),n&&(this.typeQueue.push({name:t,def:n}),this.enqueue||this._flushTypeQueue()),this},t.prototype._flushTypeQueue=function(){for(;this.typeQueue.length;){var t=this.typeQueue.shift();if(t.pattern)throw new Error("You cannot override a type's .pattern at runtime.");o.extend(this.types[t.name],u.services.$injector.invoke(t.def))}},t}();e.ParamTypes=l,e.paramTypes=new l},function(t,e,n){"use strict";var r=n(3),i=function(){function t(t){void 0===t&&(t={}),r.extend(this,t)}return t.prototype.$inherit=function(t,e,n){var i,o=r.ancestors(e,n),a={},s=[];for(var u in o)if(o[u]&&o[u].params&&(i=Object.keys(o[u].params),i.length))for(var c in i)s.indexOf(i[c])>=0||(s.push(i[c]),a[i[c]]=this[i[c]]);return r.extend({},a,t)},t}();e.StateParams=i},function(t,e,n){"use strict";var r=n(10),i=n(27),o=n(28),a=n(29),s=n(30),u=n(6),c=function(){function t(t,e,n,r,i,c){this.transition=t,this.$transitions=e,this.$urlRouter=n,this.$view=r,this.$state=i,this.globals=c,this.$q=u.services.$q,this.viewHooks=new o.ViewHooks(t,r),this.enterExitHooks=new a.EnterExitHooks(t),this.resolveHooks=new s.ResolveHooks(t),this.treeChanges=t.treeChanges(),this.registerUpdateGlobalState(),this.viewHooks.registerHooks(),this.enterExitHooks.registerHooks(),this.resolveHooks.registerHooks()}return t.prototype.runTransition=function(){var t=this;return this.globals.transitionHistory.enqueue(this.transition),this.transition.run().then(function(t){return t.to()})["catch"](function(e){return t.transRejected(e)})},t.prototype.registerUpdateGlobalState=function(){this.transition.onSuccess({},this.updateUrl.bind(this),{priority:9999})},t.prototype.transRejected=function(t){var e=this,n=e.transition,o=e.$state,a=e.$q;if(t instanceof r.Rejection){if(t.type===r.RejectType.IGNORED)return this.$urlRouter.update(),o.current;if(t.type===r.RejectType.SUPERSEDED&&t.redirected&&t.detail instanceof i.TargetState)return this._redirectMgr(n.redirect(t.detail)).runTransition();t.type===r.RejectType.ABORTED&&this.$urlRouter.update()}return this.$transitions.defaultErrorHandler()(t),a.reject(t)},t.prototype.updateUrl=function(){var t=this.transition,e=this,n=e.$urlRouter,r=e.$state,i=t.options();i.location&&r.$current.navigable&&n.push(r.$current.navigable.url,r.params,{replace:"replace"===i.location}),n.update(!0)},t.prototype._redirectMgr=function(e){var n=this,r=n.$transitions,i=n.$urlRouter,o=n.$view,a=n.$state,s=n.globals;return new t(e,r,i,o,a,s)},t}();e.TransitionManager=c},function(t,e){"use strict";var n=function(){function t(t,e,n,r){void 0===n&&(n={}),void 0===r&&(r={}),this._identifier=t,this._definition=e,this._options=r,this._params=n||{}}return t.prototype.name=function(){return this._definition&&this._definition.name||this._identifier},t.prototype.identifier=function(){return this._identifier},t.prototype.params=function(){return this._params},t.prototype.$state=function(){return this._definition},t.prototype.state=function(){return this._definition&&this._definition.self},t.prototype.options=function(){return this._options},t.prototype.exists=function(){return!(!this._definition||!this._definition.self)},t.prototype.valid=function(){return!this.error()},t.prototype.error=function(){var t=this.options().relative;if(!this._definition&&t){var e=t.name?t.name:t;return"Could not resolve '"+this.name()+"' from state '"+e+"'"}return this._definition?this._definition.self?void 0:"State '"+this.name()+"' has an invalid definition":"No such state '"+this.name()+"'"},t}();e.TargetState=n},function(t,e,n){"use strict";var r=n(3),i=n(6),o=function(){function t(t,e){this.transition=t,this.$view=e,this.treeChanges=t.treeChanges(),this.enteringViews=t.views("entering"),this.exitingViews=t.views("exiting")}return t.prototype.loadAllEnteringViews=function(){return i.services.$q.all(this.enteringViews.map(function(t){return t.load()})).then(r.noop)},t.prototype.updateViews=function(){var t=this.$view;this.exitingViews.forEach(function(e){return t.deactivateViewConfig(e)}),this.enteringViews.forEach(function(e){return t.activateViewConfig(e)}),t.sync()},t.prototype.registerHooks=function(){this.enteringViews.length&&this.transition.onStart({},this.loadAllEnteringViews.bind(this)),(this.exitingViews.length||this.enteringViews.length)&&this.transition.onSuccess({},this.updateViews.bind(this))},t}();e.ViewHooks=o},function(t,e){"use strict";var n=function(){function t(t){this.transition=t}return t.prototype.registerHooks=function(){this.registerOnEnterHooks(),this.registerOnRetainHooks(),this.registerOnExitHooks()},t.prototype.registerOnEnterHooks=function(){var t=this;this.transition.entering().filter(function(t){return!!t.onEnter}).forEach(function(e){return t.transition.onEnter({entering:e.name},e.onEnter)})},t.prototype.registerOnRetainHooks=function(){var t=this;this.transition.retained().filter(function(t){return!!t.onRetain}).forEach(function(e){return t.transition.onRetain({retained:e.name},e.onRetain)})},t.prototype.registerOnExitHooks=function(){var t=this;this.transition.exiting().filter(function(t){return!!t.onExit}).forEach(function(e){return t.transition.onExit({exiting:e.name},e.onExit)})},t}();e.EnterExitHooks=n},function(t,e,n){"use strict";var r=n(3),i=n(5),o=n(31),a=n(5),s=n(32),u=o.ResolvePolicy[o.ResolvePolicy.LAZY],c=o.ResolvePolicy[o.ResolvePolicy.EAGER],l=function(){function t(t){this.transition=t}return t.prototype.registerHooks=function(){function t(t){return r.tail(n.to).resolveContext.resolvePath(r.extend({transition:t},{resolvePolicy:c}))}function e(t,e){var o=r.find(n.entering,i.propEq("state",t)),a=o.resolveContext,c=new s.Resolvable("$resolve$",function(){return r.map(a.getResolvables(),function(t){return t.data})}),l=r.extend({transition:e},{resolvePolicy:u});return a.resolvePathElement(o.state,l).then(function(){return c.resolveResolvable(a)}).then(function(){return a.addResolvables({$resolve$:c},o.state)})}var n=this.transition.treeChanges();t.$inject=["$transition$"],e.$inject=["$state$","$transition$"],this.transition.onStart({},t,{priority:1e3}),this.transition.onEnter({entering:a.val(!0)},e,{priority:1e3})},t}();e.ResolveHooks=l},function(t,e){"use strict";!function(t){t[t.JIT=0]="JIT",t[t.LAZY=1]="LAZY",t[t.EAGER=2]="EAGER"}(e.ResolvePolicy||(e.ResolvePolicy={}));e.ResolvePolicy},function(t,e,n){"use strict";var r=n(3),i=n(5),o=n(4),a=n(6),s=n(12),u=function(){function t(t,e,n){this.promise=void 0,r.extend(this,{name:t,resolveFn:e,deps:a.services.$injector.annotate(e,a.services.$injector.strictDi),data:n})}return t.prototype.resolveResolvable=function(t,e){var n=this;void 0===e&&(e={});var i=this,o=i.name,u=i.deps,c=i.resolveFn;s.trace.traceResolveResolvable(this,e);var l=a.services.$q.defer();this.promise=l.promise;var f=t.getResolvables(null,{omitOwnLocals:[o]}),p=r.pick(f,u),h=r.map(p,function(n){return n.get(t,e)});return a.services.$q.all(h).then(function(t){try{var e=a.services.$injector.invoke(c,null,t);l.resolve(e)}catch(r){l.reject(r)}return n.promise}).then(function(t){return n.data=t,s.trace.traceResolvableResolved(n,e),n.promise})},t.prototype.get=function(t,e){return this.promise||this.resolveResolvable(t,e)},t.prototype.toString=function(){return"Resolvable(name: "+this.name+", requires: ["+this.deps+"])"},t.makeResolvables=function(e){var n=r.filter(e,i.not(o.isInjectable)),a=Object.keys(n);if(a.length)throw new Error("Invalid resolve key/value: "+a[0]+"/"+n[a[0]]);return r.map(e,function(e,n){return new t(n,e)})},t}();e.Resolvable=u},function(t,e,n){"use strict";var r=n(3),i=n(5),o=function(){function t(t){r.extend(this,t)}return t.prototype.is=function(t){return this===t||this.self===t||this.fqn()===t},t.prototype.fqn=function(){if(!(this.parent&&this.parent instanceof this.constructor))return this.name;var t=this.parent.fqn();return t?t+"."+this.name:this.name},t.prototype.root=function(){return this.parent&&this.parent.root()||this},t.prototype.parameters=function(t){t=r.defaults(t,{inherit:!0});var e=t.inherit&&this.parent&&this.parent.parameters()||[];return e.concat(r.values(this.params))},t.prototype.parameter=function(t,e){return void 0===e&&(e={}),this.url&&this.url.parameter(t,e)||r.find(r.values(this.params),i.propEq("id",t))||e.inherit&&this.parent&&this.parent.parameter(t)},t.prototype.toString=function(){return this.fqn()},t}();e.State=o},function(t,e,n){"use strict";var r=n(4),i=function(){function t(t){this._states=t}return t.prototype.isRelative=function(t){return t=t||"",0===t.indexOf(".")||0===t.indexOf("^")},t.prototype.find=function(t,e){if(t||""===t){var n=r.isString(t),i=n?t:t.name;this.isRelative(i)&&(i=this.resolvePath(i,e));var o=this._states[i];return!o||!n&&(n||o!==t&&o.self!==t)?void 0:o}},t.prototype.resolvePath=function(t,e){if(!e)throw new Error("No reference point given for path '"+t+"'");for(var n=this.find(e),r=t.split("."),i=0,o=r.length,a=n;o>i;i++)if(""!==r[i]||0!==i){if("^"!==r[i])break;if(!a.parent)throw new Error("Path '"+t+"' not valid for state '"+n.name+"'");a=a.parent}else a=n;var s=r.slice(i).join(".");return a.name+(a.name&&s?".":"")+s},t}();e.StateMatcher=i},function(t,e,n){"use strict";var r=n(3),i=n(4),o=n(17),a=function(){function t(t,e,n){this.states=t,this.builder=e,this.$urlRouterProvider=n,this.queue=[]}return t.prototype.register=function(t){var e=this,n=e.states,a=e.queue,s=e.$state,u=r.inherit(new o.State,r.extend({},t,{self:t,resolve:t.resolve||{},toString:function(){return t.name}}));if(!i.isString(u.name))throw new Error("State must have a valid name");if(n.hasOwnProperty(u.name)||-1!==r.pluck(a,"name").indexOf(u.name))throw new Error("State '"+u.name+"' is already defined");return a.push(u),this.$state&&this.flush(s),u},t.prototype.flush=function(t){for(var e,n,r,i=this,o=i.queue,a=i.states,s=i.builder,u=[],c={};o.length>0;)if(n=o.shift(),e=s.build(n),r=u.indexOf(n),e){if(a.hasOwnProperty(n.name))throw new Error("State '"+name+"' is already defined");a[n.name]=n,this.attachRoute(t,n),r>=0&&u.splice(r,1)}else{var l=c[n.name];if(c[n.name]=o.length,r>=0&&l===o.length)return a;0>r&&u.push(n),o.push(n)}return a},t.prototype.autoFlush=function(t){this.$state=t,this.flush(t)},t.prototype.attachRoute=function(t,e){var n=this.$urlRouterProvider;!e[r.abstractKey]&&e.url&&n.when(e.url,["$match","$stateParams",function(n,i){t.$current.navigable===e&&r.equalForKeys(n,i)||t.transitionTo(e,n,{inherit:!0,location:!1})}])},t}();e.StateQueueManager=a},function(t,e,n){"use strict";var r=n(34),i=n(19),o=n(35),a=function(){function t(t,e){this.states={},this.matcher=new r.StateMatcher(this.states),this.builder=new i.StateBuilder(this.matcher,t),this.stateQueue=new o.StateQueueManager(this.states,this.builder,e);var n={name:"",url:"^",views:null,params:{"#":{value:null,type:"hash",dynamic:!0}},"abstract":!0},a=this._root=this.stateQueue.register(n);a.navigable=null}return t.prototype.root=function(){return this._root},t.prototype.register=function(t){return this.stateQueue.register(t)},t.prototype.get=function(t,e){var n=this;if(0===arguments.length)return Object.keys(this.states).map(function(t){return n.states[t].self});var r=this.matcher.find(t,e);return r&&r.self||null},t.prototype.decorator=function(t,e){return this.builder.builder(t,e)},t}();e.StateRegistry=a},function(t,e,n){"use strict";var r=n(3),i=n(4),o=n(8),a=n(6),s=n(38),u=n(39),c=n(43),l=n(10),f=n(27),p=n(26),h=n(21),v=n(7),d=n(3),m=n(3),g=function(){function t(e,n,r,i,o,a){this.$view=e,this.$urlRouter=n,this.$transitions=r,this.stateRegistry=i,this.stateProvider=o,this.globals=a;var s=["current","$current","params","transition"],u=Object.keys(t.prototype).filter(function(t){return-1===s.indexOf(t)});m.bindFunctions(t.prototype,this,this,u)}return Object.defineProperty(t.prototype,"transition",{get:function(){return this.globals.transition},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"params",{get:function(){return this.globals.params},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"current",{get:function(){return this.globals.current},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"$current",{get:function(){return this.globals.$current},enumerable:!0,configurable:!0}),t.prototype._handleInvalidTargetState=function(t,e){function n(){var t=p.dequeue();return void 0===t?l.Rejection.invalid(e.error()).toPromise():d(t).then(m).then(function(t){return t||n()})}var r=this,i=function(){return r.globals.transitionHistory.peekTail()},u=i(),c=s.PathFactory.makeTargetState(t),p=new o.Queue([].concat(this.stateProvider.invalidCallbacks)),h=a.services.$q,v=a.services.$injector,d=function(t){return h.when(v.invoke(t,null,{$to$:e,$from$:c}))},m=function(t){if(t instanceof f.TargetState){var e=t;return e=r.target(e.identifier(),e.params(),e.options()),e.valid()?i()!==u?l.Rejection.superseded().toPromise():r.transitionTo(e.identifier(),e.params(),e.options()):l.Rejection.invalid(e.error()).toPromise()}};return n()},t.prototype.reload=function(t){return this.transitionTo(this.current,this.params,{reload:i.isDefined(t)?t:!0,inherit:!1,notify:!1})},t.prototype.go=function(t,e,n){var i={relative:this.$current,inherit:!0},o=r.defaults(n,i,c.defaultTransOpts);return this.transitionTo(t,e,o)},t.prototype.target=function(t,e,n){if(void 0===n&&(n={}),i.isObject(n.reload)&&!n.reload.name)throw new Error("Invalid reload state object");if(n.reloadState=n.reload===!0?this.stateRegistry.root():this.stateRegistry.matcher.find(n.reload,n.relative),n.reload&&!n.reloadState)throw new Error("No such reload state '"+(i.isString(n.reload)?n.reload:n.reload.name)+"'");var r=this.stateRegistry.matcher.find(t,n.relative);return new f.TargetState(t,r,e,n)},t.prototype.transitionTo=function(t,e,n){var i=this;void 0===e&&(e={}),void 0===n&&(n={});var o=this.globals.transitionHistory;n=r.defaults(n,c.defaultTransOpts),n=r.extend(n,{current:o.peekTail.bind(o)});var l=this.target(t,e,n),f=this.globals.successfulTransitions.peekTail(),h=function(){return s.PathFactory.bindTransNodesToPath([new u.Node(i.stateRegistry.root())])},v=f?f.treeChanges().to:h();if(!l.exists())return this._handleInvalidTargetState(v,l);if(!l.valid())return a.services.$q.reject(l.error());var d=this.$transitions.create(v,l),m=new p.TransitionManager(d,this.$transitions,this.$urlRouter,this.$view,this,this.globals),g=m.runTransition();return r.extend(g,{transition:d})},t.prototype.is=function(t,e,n){n=r.defaults(n,{relative:this.$current});var o=this.stateRegistry.matcher.find(t,n.relative);if(i.isDefined(o))return this.$current!==o?!1:i.isDefined(e)&&null!==e?h.Param.equals(o.parameters(),this.params,e):!0},t.prototype.includes=function(t,e,n){n=r.defaults(n,{relative:this.$current});var o=i.isString(t)&&v.Glob.fromString(t);if(o){if(!o.matches(this.$current.name))return!1;t=this.$current.name}var a=this.stateRegistry.matcher.find(t,n.relative),s=this.$current.includes;if(i.isDefined(a))return i.isDefined(s[a.name])?e?d.equalForKeys(h.Param.values(a.parameters(),e),this.params,Object.keys(e)):!0:!1},t.prototype.href=function(t,e,n){var o={lossy:!0,inherit:!0,absolute:!1,relative:this.$current};n=r.defaults(n,o);var a=this.stateRegistry.matcher.find(t,n.relative);if(!i.isDefined(a))return null;n.inherit&&(e=this.params.$inherit(e||{},this.$current,a));var s=a&&n.lossy?a.navigable:a;return s&&void 0!==s.url&&null!==s.url?this.$urlRouter.href(s.url,h.Param.values(a.parameters(),e),{absolute:n.absolute}):null},t.prototype.get=function(t,e){return 0===arguments.length?this.stateRegistry.get():this.stateRegistry.get(t,e||this.$current)},t}();e.StateService=g},function(t,e,n){"use strict";var r=n(3),i=n(5),o=n(17),a=n(39),s=n(40),u=function(){function t(){}return t.makeTargetState=function(t){var e=r.tail(t).state;return new o.TargetState(e,e,t.map(i.prop("paramValues")).reduce(r.mergeR,{}))},t.buildPath=function(t){var e=t.params();return t.$state().path.map(function(t){return new a.Node(t).applyRawParams(e)})},t.buildToPath=function(e,n){var r=t.buildPath(n);return n.options().inherit?t.inheritParams(e,r,Object.keys(n.params())):r},t.applyViewConfigs=function(t,e){return e.map(function(e){var n=r.values(e.state.views||{}),i=n.map(function(n){return t.createViewConfig(e,n)}).reduce(r.unnestR,[]);return r.extend(e,{views:i})})},t.inheritParams=function(t,e,n){function o(t,e){var n=r.find(t,i.propEq("state",e));return r.extend({},n&&n.paramValues)}void 0===n&&(n=[]);var s=i.curry(function(t,e,n){var i=r.extend({},n&&n.paramValues),s=r.pick(i,e);i=r.omit(i,e);var u=o(t,n.state)||{},c=r.extend(i,u,s);return new a.Node(n.state).applyRawParams(c)});return e.map(s(t,n))},t.bindTransNodesToPath=function(t){var e=new s.ResolveContext(t);return t.forEach(function(t){t.resolveContext=e.isolateRootTo(t.state),t.resolveInjector=new s.ResolveInjector(t.resolveContext,t.state),t.resolves.$stateParams=new s.Resolvable("$stateParams",function(){return t.paramValues},t.paramValues)}),t},t.treeChanges=function(e,n,r){function o(t,e){var r=a.Node.clone(t);return r.paramValues=n[e].paramValues,r}for(var s=0,u=Math.min(e.length,n.length),c=function(t){return t.parameters({inherit:!1}).filter(i.not(i.prop("dynamic"))).map(i.prop("id"))},l=function(t,e){return t.equals(e,c(t.state))};u>s&&e[s].state!==r&&l(e[s],n[s]);)s++;var f,p,h,v,d,m,g,y;return f=e,p=f.slice(0,s),h=f.slice(s),m=p.map(o),g=n.slice(s),y=m.concat(g),d=t.bindTransNodesToPath(y),v=d.slice(s),{from:f,to:d,retained:p,exiting:h,entering:v}},t.bindTransitionResolve=function(t,e){var n=t.to[0];n.resolves.$transition$=new s.Resolvable("$transition$",function(){return e},e)},t.subPath=function(t,e){var n=r.find(t,function(t){return t.state===e}),i=t.indexOf(n);if(-1===i)throw new Error("The path does not contain the state: "+e);return t.slice(0,i+1)},t.paramValues=function(t){return t.reduce(function(t,e){return r.extend(t,e.paramValues)},{})},t}();e.PathFactory=u},function(t,e,n){"use strict";var r=n(3),i=n(5),o=n(40),a=function(){function t(e){if(e instanceof t){var n=e;this.state=n.state,this.paramSchema=n.paramSchema.slice(),this.paramValues=r.extend({},n.paramValues),this.resolves=r.extend({},n.resolves),this.views=n.views&&n.views.slice(),this.resolveContext=n.resolveContext,this.resolveInjector=n.resolveInjector}else this.state=e,this.paramSchema=e.parameters({inherit:!1}),this.paramValues={},this.resolves=r.mapObj(e.resolve,function(t,e){return new o.Resolvable(e,t)})}return t.prototype.applyRawParams=function(t){var e=function(e){return[e.id,e.value(t[e.id])]};return this.paramValues=this.paramSchema.reduce(function(t,n){return r.applyPairs(t,e(n))},{}),this},t.prototype.parameter=function(t){return r.find(this.paramSchema,i.propEq("id",t))},t.prototype.equals=function(t,e){var n=this;void 0===e&&(e=this.paramSchema.map(i.prop("id")));var o=function(e){return n.parameter(e).type.equals(n.paramValues[e],t.paramValues[e])};return this.state===t.state&&e.map(o).reduce(r.allTrueR,!0)},t.clone=function(e){return new t(e)},t.matching=function(t,e){var n=t.reduce(function(t,n,r){return t===r&&r<e.length&&n.state===e[r].state?r+1:t},0);return t.slice(0,n)},t}();e.Node=a},function(t,e,n){"use strict";function r(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}r(n(31)),r(n(32)),r(n(41)),r(n(42))},function(t,e,n){"use strict";function r(t,e){var n=a.isString(t)?t:null,r=a.isObject(t)?t:{},i=r[e.name]||n||p;return c.ResolvePolicy[i]}var i=n(3),o=n(5),a=n(4),s=n(12),u=n(6),c=n(31),l=n(3),f=n(38),p=c.ResolvePolicy[c.ResolvePolicy.LAZY],h=function(){function t(t){this._path=t,i.extend(this,{_nodeFor:function(t){return i.find(this._path,o.propEq("state",t))},_pathTo:function(t){return f.PathFactory.subPath(this._path,t)}})}return t.prototype.getResolvables=function(t,e){e=i.defaults(e,{omitOwnLocals:[]});var n=t?this._pathTo(t):this._path,r=i.tail(n);return n.reduce(function(t,n){var o=n===r?e.omitOwnLocals:[],a=i.omit(n.resolves,o);return i.extend(t,a)},{})},t.prototype.getResolvablesForFn=function(t){var e=u.services.$injector.annotate(t,u.services.$injector.strictDi);return i.pick(this.getResolvables(),e)},t.prototype.isolateRootTo=function(e){return new t(this._pathTo(e))},t.prototype.addResolvables=function(t,e){i.extend(this._nodeFor(e).resolves,t)},t.prototype.getOwnResolvables=function(t){return i.extend({},this._nodeFor(t).resolves)},t.prototype.resolvePath=function(t){var e=this;void 0===t&&(t={}),s.trace.traceResolvePath(this._path,t);var n=function(n){return e.resolvePathElement(n.state,t)};return u.services.$q.all(i.map(this._path,n)).then(function(t){return t.reduce(l.mergeR,{})})},t.prototype.resolvePathElement=function(t,e){var n=this;void 0===e&&(e={});var o=e&&e.resolvePolicy,a=c.ResolvePolicy[o||p],l=this.getOwnResolvables(t),f=function(e){return r(t.resolvePolicy,e)>=a},h=i.filter(l,f),v=function(r){return r.get(n.isolateRootTo(t),e)},d=i.map(h,v);return s.trace.traceResolvePathElement(this,h,e),u.services.$q.all(d)},t.prototype.invokeLater=function(t,e,n){var r=this;void 0===e&&(e={}),void 0===n&&(n={});var o=this.getResolvablesForFn(t);s.trace.tracePathElementInvoke(i.tail(this._path),t,Object.keys(o),i.extend({when:"Later"},n));var a=function(t){return t.get(r,n)},c=i.map(o,a);return u.services.$q.all(c).then(function(){try{return r.invokeNow(t,e,n)}catch(i){return u.services.$q.reject(i)}})},t.prototype.invokeNow=function(t,e,n){void 0===n&&(n={});var r=this.getResolvablesForFn(t);s.trace.tracePathElementInvoke(i.tail(this._path),t,Object.keys(r),i.extend({when:"Now "},n));var a=i.map(r,o.prop("data"));return u.services.$injector.invoke(t,n.bind||null,i.extend({},e,a))},t}();e.ResolveContext=h},function(t,e,n){"use strict";var r=n(3),i=function(){function t(t,e){this._resolveContext=t,this._state=e}return t.prototype.invokeLater=function(t,e){return this._resolveContext.invokeLater(t,e)},t.prototype.invokeNow=function(t,e){return this._resolveContext.invokeNow(null,t,e)},t.prototype.getLocals=function(t){var e=this,n=function(t){return t.get(e._resolveContext)};return r.map(this._resolveContext.getResolvablesForFn(t),n)},t}();e.ResolveInjector=i},function(t,e,n){"use strict";var r=n(11),i=n(15);e.defaultTransOpts={location:!0,relative:null,inherit:!1,notify:!0,reload:!1,custom:{},current:function(){return null}};var o=function(){function t(t){this.$view=t,this._defaultErrorHandler=function(t){t instanceof Error&&console.error(t)},i.HookRegistry.mixin(new i.HookRegistry,this)}return t.prototype.defaultErrorHandler=function(t){return this._defaultErrorHandler=t||this._defaultErrorHandler},t.prototype.create=function(t,e){return new r.Transition(t,e,this)},t}();e.TransitionService=o},function(t,e,n){"use strict";function r(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}r(n(39)),r(n(38))},function(t,e,n){"use strict";function r(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}r(n(46)),r(n(22)),r(n(47)),r(n(48))},function(t,e,n){"use strict";function r(t,e){var n=["",""],r=t.replace(/[\\\[\]\^$*+?.()|{}]/g,"\\$&");if(!e)return r;switch(e.squash){case!1:n=["(",")"+(e.isOptional?"?":"")];break;case!0:r=r.replace(/\/$/,""),n=["(?:/(",")|/)?"];break;default:n=["("+e.squash+"|",")?"]}return r+n[0]+e.type.pattern.source+n[1]}var i=n(3),o=n(5),a=n(4),s=n(20),u=n(4),c=n(21),l=n(3),f=n(3),p=function(t,e,n){return t[e]=t[e]||n()},h=function(){function t(e,n){var a=this;this.pattern=e,this.config=n,this._cache={path:[],pattern:null},this._children=[],this._params=[],this._segments=[],this._compiled=[],this.config=i.defaults(this.config,{params:{},strict:!0,caseInsensitive:!1,paramMap:i.identity});for(var u,c,l,f=/([:*])([\w\[\]]+)|\{([\w\[\]]+)(?:\:\s*((?:[^{}\\]+|\\.|\{(?:[^{}\\]+|\\.)*\})+))?\}/g,p=/([:]?)([\w\[\].-]+)|\{([\w\[\].-]+)(?:\:\s*((?:[^{}\\]+|\\.|\{(?:[^{}\\]+|\\.)*\})+))?\}/g,h=0,v=[],d=function(n){if(!t.nameValidator.test(n))throw new Error("Invalid parameter name '"+n+"' in pattern '"+e+"'");if(i.find(a._params,o.propEq("id",n)))throw new Error("Duplicate parameter name '"+n+"' in pattern '"+e+"'")},m=function(t,n){var r=t[2]||t[3],o=n?t[4]:t[4]||("*"===t[1]?".*":null);return{id:r,regexp:o,cfg:a.config.params[r],segment:e.substring(h,t.index),type:o?s.paramTypes.type(o||"string")||i.inherit(s.paramTypes.type("string"),{pattern:new RegExp(o,a.config.caseInsensitive?"i":void 0)}):null}};(u=f.exec(e))&&(c=m(u,!1),!(c.segment.indexOf("?")>=0));)d(c.id),this._params.push(s.Param.fromPath(c.id,c.type,this.config.paramMap(c.cfg,!1))),this._segments.push(c.segment),v.push([c.segment,i.tail(this._params)]),h=f.lastIndex;l=e.substring(h);var g=l.indexOf("?");if(g>=0){var y=l.substring(g);if(l=l.substring(0,g),y.length>0)for(h=0;u=p.exec(y);)c=m(u,!0),d(c.id),this._params.push(s.Param.fromSearch(c.id,c.type,this.config.paramMap(c.cfg,!0))),h=f.lastIndex}this._segments.push(l),i.extend(this,{_compiled:v.map(function(t){return r.apply(null,t)}).concat(r(l)),prefix:this._segments[0]
1777 }),Object.freeze(this)}return t.prototype.append=function(t){return this._children.push(t),i.forEach(t._cache,function(e,n){return t._cache[n]=a.isArray(e)?[]:null}),t._cache.path=this._cache.path.concat(this),t},t.prototype.isRoot=function(){return 0===this._cache.path.length},t.prototype.toString=function(){return this.pattern},t.prototype.exec=function(t,e,n,r){function a(t){var e=function(t){return t.split("").reverse().join("")},n=function(t){return t.replace(/\\-/g,"-")},r=e(t).split(/-(?!\\)/),o=i.map(r,e);return i.map(o,n).reverse()}var s=this;void 0===e&&(e={}),void 0===r&&(r={});var c=p(this._cache,"pattern",function(){return new RegExp(["^",i.unnest(s._cache.path.concat(s).map(o.prop("_compiled"))).join(""),s.config.strict===!1?"/?":"","$"].join(""),s.config.caseInsensitive?"i":void 0)}).exec(t);if(!c)return null;var l=this.parameters(),f=l.filter(function(t){return!t.isSearch()}),h=l.filter(function(t){return t.isSearch()}),v=this._cache.path.concat(this).map(function(t){return t._segments.length-1}).reduce(function(t,e){return t+e}),d={};if(v!==c.length-1)throw new Error("Unbalanced capture group in route '"+this.pattern+"'");for(var m=0;v>m;m++){for(var g=f[m],y=c[m+1],w=0;w<g.replace.length;w++)g.replace[w].from===y&&(y=g.replace[w].to);y&&g.array===!0&&(y=a(y)),u.isDefined(y)&&(y=g.type.decode(y)),d[g.id]=g.value(y)}return i.forEach(h,function(t){for(var n=e[t.id],r=0;r<t.replace.length;r++)t.replace[r].from===n&&(n=t.replace[r].to);u.isDefined(n)&&(n=t.type.decode(n)),d[t.id]=t.value(n)}),n&&(d["#"]=n),d},t.prototype.parameters=function(t){return void 0===t&&(t={}),t.inherit===!1?this._params:i.unnest(this._cache.path.concat(this).map(o.prop("_params")))},t.prototype.parameter=function(t,e){void 0===e&&(e={});var n=i.tail(this._cache.path);return i.find(this._params,o.propEq("id",t))||e.inherit!==!1&&n&&n.parameter(t)||null},t.prototype.validates=function(t){var e=this,n=function(t,e){return!t||t.validates(e)};return i.pairs(t||{}).map(function(t){var r=t[0],i=t[1];return n(e.parameter(r),i)}).reduce(i.allTrueR,!0)},t.prototype.format=function(e){function n(t){var n=t.value(e[t.id]),r=t.isDefaultValue(n),i=r?t.squash:!1,o=t.type.encode(n);return{param:t,value:n,isDefaultValue:r,squash:i,encoded:o}}if(void 0===e&&(e={}),!this.validates(e))return null;var r=this._cache.path.slice().concat(this),o=r.map(t.pathSegmentsAndParams).reduce(l.unnestR,[]),s=r.map(t.queryParams).reduce(l.unnestR,[]),u=o.reduce(function(e,r){if(a.isString(r))return e+r;var o=n(r),s=o.squash,u=o.encoded,c=o.param;return s===!0?e.match(/\/$/)?e.slice(0,-1):e:a.isString(s)?e+s:s!==!1?e:null==u?e:a.isArray(u)?e+i.map(u,t.encodeDashes).join("-"):c.type.raw?e+u:e+encodeURIComponent(u)},""),c=s.map(function(t){var e=n(t),r=e.squash,o=e.encoded,s=e.isDefaultValue;if(!(null==o||s&&r!==!1)&&(a.isArray(o)||(o=[o]),0!==o.length))return t.type.raw||(o=i.map(o,encodeURIComponent)),o.map(function(e){return t.id+"="+e})}).filter(i.identity).reduce(l.unnestR,[]).join("&");return u+(c?"?"+c:"")+(e["#"]?"#"+e["#"]:"")},t.encodeDashes=function(t){return encodeURIComponent(t).replace(/-/g,function(t){return"%5C%"+t.charCodeAt(0).toString(16).toUpperCase()})},t.pathSegmentsAndParams=function(t){var e=t._segments,n=t._params.filter(function(t){return t.location===c.DefType.PATH});return f.arrayTuples(e,n.concat(void 0)).reduce(l.unnestR,[]).filter(function(t){return""!==t&&u.isDefined(t)})},t.queryParams=function(t){return t._params.filter(function(t){return t.location===c.DefType.SEARCH})},t.nameValidator=/^\w+([-.]+\w+)*(?:\[\])?$/,t}();e.UrlMatcher=h},function(t,e,n){"use strict";function r(){return{strict:a.matcherConfig.strictMode(),caseInsensitive:a.matcherConfig.caseInsensitive()}}var i=n(3),o=n(4),a=n(45),s=n(20),u=function(){function t(){i.extend(this,{UrlMatcher:a.UrlMatcher,Param:s.Param})}return t.prototype.caseInsensitive=function(t){return a.matcherConfig.caseInsensitive(t)},t.prototype.strictMode=function(t){return a.matcherConfig.strictMode(t)},t.prototype.defaultSquashPolicy=function(t){return a.matcherConfig.defaultSquashPolicy(t)},t.prototype.compile=function(t,e){return new a.UrlMatcher(t,i.extend(r(),e))},t.prototype.isMatcher=function(t){if(!o.isObject(t))return!1;var e=!0;return i.forEach(a.UrlMatcher.prototype,function(n,r){o.isFunction(n)&&(e=e&&o.isDefined(t[r])&&o.isFunction(t[r]))}),e},t.prototype.type=function(t,e,n){var r=s.paramTypes.type(t,e,n);return o.isDefined(e)?this:r},t.prototype.$get=function(){return s.paramTypes.enqueue=!1,s.paramTypes._flushTypeQueue(),this},t}();e.UrlMatcherFactory=u},function(t,e,n){"use strict";function r(t){var e=/^\^((?:\\[^a-zA-Z0-9]|[^\\\[\]\^$*+?.()|{}]+)*)/.exec(t.source);return null!=e?e[1].replace(/\\(.)/g,"$1"):""}function i(t,e){return t.replace(/\$(\$|\d{1,2})/,function(t,n){return e["$"===n?0:Number(n)]})}function o(t,e,n,r){if(!r)return!1;var i=t.invoke(n,n,{$match:r,$stateParams:e});return c.isDefined(i)?i:!0}function a(t,e,n){var r=l.services.locationConfig.baseHref();return"/"===r?t:e?r.slice(0,-1)+t:n?r.slice(1)+t:t}function s(t,e,n){function r(t){var e=t(l.services.$injector,f);return e?(c.isString(e)&&(f.replace(),f.url(e)),!0):!1}if(!n||!n.defaultPrevented){var i,o=t.length;for(i=0;o>i;i++)if(r(t[i]))return;e&&r(e)}}var u=n(3),c=n(4),l=n(6),f=l.services.location,p=function(){function t(t,e){this.$urlMatcherFactory=t,this.$stateParams=e,this.rules=[],this.otherwiseFn=null,this.interceptDeferred=!1}return t.prototype.rule=function(t){if(!c.isFunction(t))throw new Error("'rule' must be a function");return this.rules.push(t),this},t.prototype.otherwise=function(t){if(!c.isFunction(t)&&!c.isString(t))throw new Error("'rule' must be a string or function");return this.otherwiseFn=c.isString(t)?function(){return t}:t,this},t.prototype.when=function(t,e){var n,a=this,s=a.$urlMatcherFactory,p=a.$stateParams,h=c.isString(e);if(c.isString(t)&&(t=s.compile(t)),!h&&!c.isFunction(e)&&!c.isArray(e))throw new Error("invalid 'handler' in when()");var v={matcher:function(t,e){return h&&(n=s.compile(e),e=["$match",n.format.bind(n)]),u.extend(function(){return o(l.services.$injector,p,e,t.exec(f.path(),f.search(),f.hash()))},{prefix:c.isString(t.prefix)?t.prefix:""})},regex:function(t,e){if(t.global||t.sticky)throw new Error("when() RegExp must not be global or sticky");return h&&(n=e,e=["$match",function(t){return i(n,t)}]),u.extend(function(){return o(l.services.$injector,p,e,t.exec(f.path()))},{prefix:r(t)})}},d={matcher:s.isMatcher(t),regex:t instanceof RegExp};for(var m in d)if(d[m])return this.rule(v[m](t,e));throw new Error("invalid 'what' in when()")},t.prototype.deferIntercept=function(t){void 0===t&&(t=!0),this.interceptDeferred=t},t}();e.UrlRouterProvider=p;var h=function(){function t(e){this.urlRouterProvider=e,u.bindFunctions(t.prototype,this,this)}return t.prototype.sync=function(){s(this.urlRouterProvider.rules,this.urlRouterProvider.otherwiseFn)},t.prototype.listen=function(){var t=this;return this.listener=this.listener||f.onChange(function(e){return s(t.urlRouterProvider.rules,t.urlRouterProvider.otherwiseFn,e)})},t.prototype.update=function(t){return t?void(this.location=f.url()):void(f.url()!==this.location&&(f.url(this.location),f.replace()))},t.prototype.push=function(t,e,n){f.url(t.format(e||{})),n&&n.replace&&f.replace()},t.prototype.href=function(t,e,n){if(!t.validates(e))return null;var r=t.format(e);n=n||{};var i=l.services.locationConfig,o=i.html5Mode();if(o||null===r||(r="#"+i.hashPrefix()+r),r=a(r,o,n.absolute),!n.absolute||!r)return r;var s=!o&&r?"/":"",u=i.port();return u=80===u||443===u?"":":"+u,[i.protocol(),"://",i.host(),u,s,r].join("")},t}();e.UrlRouter=h},function(t,e,n){"use strict";function r(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}r(n(50))},function(t,e,n){"use strict";var r=n(3),i=n(5),o=n(4),a=n(2),s=function(){function t(){var t=this;this.uiViews=[],this.viewConfigs=[],this._viewConfigFactories={},this.sync=function(){function e(t){return t.fqn.split(".").length}function n(t){for(var e=t.viewDecl.$context,n=0;++n&&e.parent;)e=e.parent;return n}var o=t.uiViews.map(function(t){return[t.fqn,t]}).reduce(r.applyPairs,{}),a=function(t){return function(e){if(t.$type!==e.viewDecl.$type)return!1;var n=e.viewDecl,i=n.$uiViewName.split("."),a=t.fqn.split(".");if(!r.equals(i,a.slice(0-i.length)))return!1;var s=1-i.length||void 0,u=a.slice(0,s).join("."),c=o[u].creationContext;return n.$uiViewContextAnchor===(c&&c.name)}},s=i.curry(function(t,e,n,r){return e*(t(n)-t(r))}),u=function(e){var r=t.viewConfigs.filter(a(e));return r.length>1&&r.sort(s(n,-1)),[e,r[0]]},c=function(e){var n=e[0],r=e[1];-1!==t.uiViews.indexOf(n)&&n.configUpdated(r)};t.uiViews.sort(s(e,1)).map(u).forEach(c)}}return t.prototype.rootContext=function(t){return this._rootContext=t||this._rootContext},t.prototype.viewConfigFactory=function(t,e){this._viewConfigFactories[t]=e},t.prototype.createViewConfig=function(t,e){var n=this._viewConfigFactories[e.$type];if(!n)throw new Error("ViewService: No view config factory registered for type "+e.$type);var r=n(t,e);return o.isArray(r)?r:[r]},t.prototype.deactivateViewConfig=function(t){a.trace.traceViewServiceEvent("<- Removing",t),r.removeFrom(this.viewConfigs,t)},t.prototype.activateViewConfig=function(t){a.trace.traceViewServiceEvent("-> Registering",t),this.viewConfigs.push(t)},t.prototype.registerUiView=function(t){a.trace.traceViewServiceUiViewEvent("-> Registering",t);var e=this.uiViews,n=function(e){return e.fqn===t.fqn};return e.filter(n).length&&a.trace.traceViewServiceUiViewEvent("!!!! duplicate uiView named:",t),e.push(t),this.sync(),function(){var n=e.indexOf(t);return 0>=n?void a.trace.traceViewServiceUiViewEvent("Tried removing non-registered uiView",t):(a.trace.traceViewServiceUiViewEvent("<- Deregistering",t),void r.removeFrom(e)(t))}},t.prototype.available=function(){return this.uiViews.map(i.prop("fqn"))},t.prototype.active=function(){return this.uiViews.filter(i.prop("$config")).map(i.prop("name"))},t.normalizeUiViewTarget=function(t,e){void 0===e&&(e="");var n=e.split("@"),r=n[0]||"$default",i=o.isString(n[1])?n[1]:"^",a=/^(\^(?:\.\^)*)\.(.*$)/.exec(r);a&&(i=a[1],r=a[2]),"!"===r.charAt(0)&&(r=r.substr(1),i="");var s=/^(\^(?:\.\^)*)$/;if(s.exec(i)){var u=i.split(".").reduce(function(t,e){return t.parent},t);i=u.name}return{uiViewName:r,uiViewContextAnchor:i}},t}();e.ViewService=s},function(t,e,n){"use strict";var r=n(25),i=n(8),o=n(3),a=function(){function t(t){var e=this;this.params=new r.StateParams,this.transitionHistory=new i.Queue([],1),this.successfulTransitions=new i.Queue([],1);var n=function(t){e.transition=t,e.transitionHistory.enqueue(t);var n=function(){e.successfulTransitions.enqueue(t),e.$current=t.$to(),e.current=e.$current.self,o.copy(t.params(),e.params)};t.onSuccess({},n,{priority:1e4});var r=function(){e.transition===t&&(e.transition=null)};t.promise.then(r,r)};t.onBefore({},["$transition$",n])}return t}();e.UIRouterGlobals=a},function(t,e,n){"use strict";var r=n(47),i=n(48),o=n(18),a=n(48),s=n(43),u=n(50),c=n(36),l=n(37),f=n(51),p=function(){function t(){this.viewService=new u.ViewService,this.transitionService=new s.TransitionService(this.viewService),this.globals=new f.UIRouterGlobals(this.transitionService),this.urlMatcherFactory=new r.UrlMatcherFactory,this.urlRouterProvider=new i.UrlRouterProvider(this.urlMatcherFactory,this.globals.params),this.urlRouter=new a.UrlRouter(this.urlRouterProvider),this.stateRegistry=new c.StateRegistry(this.urlMatcherFactory,this.urlRouterProvider),this.stateProvider=new o.StateProvider(this.stateRegistry),this.stateService=new l.StateService(this.viewService,this.urlRouter,this.transitionService,this.stateRegistry,this.stateProvider,this.globals),this.viewService.rootContext(this.stateRegistry.root()),this.globals.$current=this.stateRegistry.root(),this.globals.current=this.globals.$current.self}return t}();e.UIRouter=p},function(t,e,n){"use strict";function r(t){var e=f.services.$injector,n=e.get("$controller"),r=e.instantiate;try{var i;return e.instantiate=function(t){e.instantiate=r,i=e.annotate(t)},n(t,{$scope:{}}),i}finally{e.instantiate=r}}function i(t,e){f.services.$injector=t,f.services.$q=e}function o(t){function e(e,r,i,o,a,s){return o.$on("$locationChangeSuccess",function(t){return n.forEach(function(e){return e(t)})}),f.services.locationConfig.html5Mode=function(){var e=t.html5Mode();return e=v.isObject(e)?e.enabled:e,e&&i.history},f.services.template.get=function(t){return a.get(t,{cache:s,headers:{Accept:"text/html"}}).then(h.prop("data"))},p.bindFunctions(e,f.services.location,e,["replace","url","path","search","hash"]),p.bindFunctions(e,f.services.locationConfig,e,["port","protocol","host"]),p.bindFunctions(r,f.services.locationConfig,r,["baseHref"]),S}S=new l.UIRouter,S.stateRegistry.decorator("views",w.ng1ViewsBuilder),S.stateRegistry.decorator("resolve",b.ng1ResolveBuilder),S.viewService.viewConfigFactory("ng1",w.ng1ViewConfigFactory),p.bindFunctions(t,f.services.locationConfig,t,["hashPrefix"]);var n=[];f.services.location.onChange=function(t){return n.push(t),function(){return p.removeFrom(n)(t)}},this.$get=e,e.$inject=["$location","$browser","$sniffer","$rootScope","$http","$templateCache"]}function a(){return S.urlRouterProvider.$get=function(){return S.urlRouter.update(!0),this.interceptDeferred||S.urlRouter.listen(),S.urlRouter},S.urlRouterProvider}function s(){return S.stateProvider.$get=function(){return S.stateRegistry.stateQueue.autoFlush(S.stateService),S.stateService},S.stateProvider}function u(){function t(t){var e=function(e){function n(){}var i=p.find(t.treeChanges().to,h.propEq("state",e.viewDecl.$context));if(!i)return f.services.$q.when();var o=i.resolveContext,a=r(e.controller),s=o.getResolvables();return n.$inject=a.filter(function(t){return s.hasOwnProperty(t)}),o.invokeLater(n).then(function(){return e.locals=p.map(s,function(t){return t.data})})},n=t.views("entering").filter(function(t){return!!t.controller}).map(e);return f.services.$q.all(n).then(p.noop)}return t.$inject=["$transition$"],S.transitionService.onFinish({},t),S.transitionService.$get=function(){return S.transitionService},S.transitionService}function c(t){t.$watch(function(){y.trace.approximateDigests++})}var l=n(52),f=n(6),p=n(3),h=n(5),v=n(4),d=n(44),m=n(40),g=n(17),y=n(12),w=n(54),$=n(55),b=n(56),R=angular.module("ui.router.angular1",[]);angular.module("ui.router.util",["ng","ui.router.init"]),angular.module("ui.router.router",["ui.router.util"]),angular.module("ui.router.state",["ui.router.router","ui.router.util","ui.router.angular1"]),angular.module("ui.router",["ui.router.init","ui.router.state","ui.router.angular1"]),angular.module("ui.router.compat",["ui.router"]),e.annotateController=r,i.$inject=["$injector","$q"],R.run(i);var S=null;o.$inject=["$locationProvider"];var x=function(){return{resolve:function(t,e,n){void 0===e&&(e={});var r=new d.Node(new g.State({params:{}})),i=new d.Node(new g.State({params:{}})),o=new m.ResolveContext([r,i]);o.addResolvables(m.Resolvable.makeResolvables(t),i.state);var a=function(t){var n=function(t){return m.Resolvable.makeResolvables(p.map(t,function(t){return function(){return t}}))};return o.addResolvables(n(t),r.state),o.addResolvables(n(e),i.state),o.resolvePath()};return n?n.then(a):a({})}}};angular.module("ui.router.init",[]).provider("ng1UIRouter",o),angular.module("ui.router.init").run(["ng1UIRouter",function(t){}]),angular.module("ui.router.util").provider("$urlMatcherFactory",["ng1UIRouterProvider",function(){return S.urlMatcherFactory}]),angular.module("ui.router.util").run(["$urlMatcherFactory",function(t){}]),angular.module("ui.router.router").provider("$urlRouter",["ng1UIRouterProvider",a]),angular.module("ui.router.router").run(["$urlRouter",function(t){}]),angular.module("ui.router.state").provider("$state",["ng1UIRouterProvider",s]),angular.module("ui.router.state").run(["$state",function(t){}]),angular.module("ui.router.state").factory("$stateParams",["ng1UIRouter",function(t){return t.globals.params}]),angular.module("ui.router.state").provider("$transitions",["ng1UIRouterProvider",u]),angular.module("ui.router.util").factory("$templateFactory",["ng1UIRouter",function(){return new $.TemplateFactory}]),angular.module("ui.router").factory("$view",function(){return S.viewService}),angular.module("ui.router").factory("$resolve",x),angular.module("ui.router").service("$trace",function(){return y.trace}),c.$inject=["$rootScope"],e.watchDigests=c,angular.module("ui.router").run(c)},function(t,e,n){"use strict";function r(t){var e=["templateProvider","templateUrl","template","notify","async"],n=["controller","controllerProvider","controllerAs","resolveAs"],r=["component","bindings"],c=e.concat(n),l=r.concat(c),f={},p=t.views||{$default:o.pick(t,l)};return o.forEach(p,function(e,n){if(n=n||"$default",u.isString(e)&&(e={component:e}),Object.keys(e).length){if(e.component){if(c.map(function(t){return u.isDefined(e[t])}).reduce(o.anyTrueR,!1))throw new Error("Cannot combine: "+r.join("|")+" with: "+c.join("|")+" in stateview: 'name@"+t.name+"'");e.templateProvider=["$injector",function(t){var n=function(t){return e.bindings&&e.bindings[t]||t},r=angular.version.minor>=3?"::":"",o=function(t){var e=a.kebobString(t.name),i=n(t.name);return"@"===t.type?e+"='{{"+r+"$resolve."+i+"}}'":e+"='"+r+"$resolve."+i+"'"},s=i(t,e.component).map(o).join(" "),u=a.kebobString(e.component);return"<"+u+" "+s+"></"+u+">"}]}e.resolveAs=e.resolveAs||"$resolve",e.$type="ng1",e.$context=t,e.$name=n;var l=s.ViewService.normalizeUiViewTarget(e.$context,e.$name);e.$uiViewName=l.uiViewName,e.$uiViewContextAnchor=l.uiViewContextAnchor,f[n]=e}}),f}function i(t,e){var n=t.get(e+"Directive");if(!n||!n.length)throw new Error("Unable to find component named '"+e+"'");return n.map(h).reduce(o.unnestR,[])}var o=n(3),a=n(9),s=n(50),u=n(4),c=n(6),l=n(12),f=n(55);e.ng1ViewConfigFactory=function(t,e){return new v(t,e)},e.ng1ViewsBuilder=r;var p=function(t){return Object.keys(t||{}).map(function(e){return[e,/^([=<@])[?]?(.*)/.exec(t[e])]}).filter(function(t){return u.isDefined(t)&&u.isDefined(t[1])}).map(function(t){return{name:t[1][2]||t[0],type:t[1][1]}})},h=function(t){return p(u.isObject(t.bindToController)?t.bindToController:t.scope)},v=function(){function t(t,e){this.node=t,this.viewDecl=e,this.loaded=!1}return t.prototype.load=function(){var t=this,e=c.services.$q;if(!this.hasTemplate())throw new Error("No template configuration specified for '"+this.viewDecl.$uiViewName+"@"+this.viewDecl.$uiViewContextAnchor+"'");var n=this.node.resolveContext,r=this.node.paramValues,i={template:e.when(this.getTemplate(r,new f.TemplateFactory,n)),controller:e.when(this.getController(n))};return e.all(i).then(function(e){l.trace.traceViewServiceEvent("Loaded",t),t.controller=e.controller,t.template=e.template})},t.prototype.hasTemplate=function(){return!!(this.viewDecl.template||this.viewDecl.templateUrl||this.viewDecl.templateProvider)},t.prototype.getTemplate=function(t,e,n){return e.fromConfig(this.viewDecl,t,n.invokeLater.bind(n))},t.prototype.getController=function(t){var e=this.viewDecl.controllerProvider;return u.isInjectable(e)?t.invokeLater(e,{}):this.viewDecl.controller},t}();e.Ng1ViewConfig=v},function(t,e,n){"use strict";var r=n(4),i=n(6),o=function(){function t(){}return t.prototype.fromConfig=function(t,e,n){return r.isDefined(t.template)?this.fromString(t.template,e):r.isDefined(t.templateUrl)?this.fromUrl(t.templateUrl,e):r.isDefined(t.templateProvider)?this.fromProvider(t.templateProvider,e,n):null},t.prototype.fromString=function(t,e){return r.isFunction(t)?t(e):t},t.prototype.fromUrl=function(t,e){return r.isFunction(t)&&(t=t(e)),null==t?null:i.services.template.get(t)},t.prototype.fromProvider=function(t,e,n){return n(t)},t}();e.TemplateFactory=o},function(t,e,n){"use strict";function r(t){var e={};return i.forEach(t.resolve||{},function(t,n){e[n]=o.isString(t)?[t,function(t){return t}]:t}),e}var i=n(3),o=n(4);e.ng1ResolveBuilder=r},function(t,e,n){"use strict";function r(t,e){var n,r=t.match(/^\s*({[^}]*})\s*$/);if(r&&(t=e+"("+r[1]+")"),n=t.replace(/\n/g," ").match(/^([^(]+?)\s*(\((.*)\))?$/),!n||4!==n.length)throw new Error("Invalid state ref '"+t+"'");return{state:n[1],paramExpr:n[3]||null}}function i(t){var e=t.parent().inheritedData("$uiView"),n=l.parse("$cfg.node.state")(e);return n&&n.name?n:void 0}function o(t){var e="[object SVGAnimatedString]"===Object.prototype.toString.call(t.prop("href")),n="FORM"===t[0].nodeName;return{attr:n?"action":e?"xlink:href":"href",isAnchor:"A"===t.prop("tagName").toUpperCase(),clickable:!n}}function a(t,e,n,r,i){return function(o){var a=o.which||o.button,s=i();if(!(a>1||o.ctrlKey||o.metaKey||o.shiftKey||t.attr("target"))){var u=n(function(){e.go(s.state,s.params,s.options)});o.preventDefault();var c=r.isAnchor&&!s.href?1:0;o.preventDefault=function(){c--<=0&&n.cancel(u)}}}}function s(t,e){return{relative:i(t)||e.$current,inherit:!0}}var u=n(3),c=n(4),l=n(5),f=["$state","$timeout",function(t,e){return{restrict:"A",require:["?^uiSrefActive","?^uiSrefActiveEq"],link:function(n,i,c,l){var f=r(c.uiSref,t.current.name),p={state:f.state,href:null,params:null,options:null},h=o(i),v=l[1]||l[0],d=null;p.options=u.extend(s(i,t),c.uiSrefOpts?n.$eval(c.uiSrefOpts):{});var m=function(e){e&&(p.params=angular.copy(e)),p.href=t.href(f.state,p.params,p.options),d&&d(),v&&(d=v.$$addStateInfo(f.state,p.params)),null!==p.href&&c.$set(h.attr,p.href)};f.paramExpr&&(n.$watch(f.paramExpr,function(t){t!==p.params&&m(t)},!0),p.params=angular.copy(n.$eval(f.paramExpr))),m(),h.clickable&&i.bind("click",a(i,t,e,h,function(){return p}))}}}],p=["$state","$timeout",function(t,e){return{restrict:"A",require:["?^uiSrefActive","?^uiSrefActiveEq"],link:function(n,r,i,s){function u(e){h.state=e[0],h.params=e[1],h.options=e[2],h.href=t.href(h.state,h.params,h.options),v&&v(),l&&(v=l.$$addStateInfo(h.state,h.params)),h.href&&i.$set(c.attr,h.href)}var c=o(r),l=s[1]||s[0],f=[i.uiState,i.uiStateParams||null,i.uiStateOpts||null],p="["+f.map(function(t){return t||"null"}).join(", ")+"]",h={state:null,params:null,options:null,href:null},v=null;n.$watch(p,u,!0),u(n.$eval(p)),c.clickable&&r.bind("click",a(r,t,e,c,function(){return h}))}}}],h=["$state","$stateParams","$interpolate","$transitions",function(t,e,n,o){return{restrict:"A",controller:["$scope","$element","$attrs","$timeout",function(e,a,s,l){function f(e,n,r){var o=t.get(e,i(a)),s=p(e,n),u={state:o||{name:e},params:n,hash:s};return $.push(u),b[s]=r,function(){var t=$.indexOf(u);-1!==t&&$.splice(t,1)}}function p(t,n){if(!c.isString(t))throw new Error("state should be a string");return c.isObject(n)?t+u.toJson(n):(n=e.$eval(n),c.isObject(n)?t+u.toJson(n):t)}function h(){for(var t=0;t<$.length;t++)m($[t].state,$[t].params)?v(a,b[$[t].hash]):d(a,b[$[t].hash]),g($[t].state,$[t].params)?v(a,y):d(a,y)}function v(t,e){l(function(){t.addClass(e)})}function d(t,e){t.removeClass(e)}function m(e,n){return t.includes(e.name,n)}function g(e,n){return t.is(e.name,n)}var y,w,$=[],b={};y=n(s.uiSrefActiveEq||"",!1)(e);try{w=e.$eval(s.uiSrefActive)}catch(R){}w=w||n(s.uiSrefActive||"",!1)(e),c.isObject(w)&&u.forEach(w,function(n,i){if(c.isString(n)){var o=r(n,t.current.name);f(o.state,e.$eval(o.paramExpr),i)}}),this.$$addStateInfo=function(t,e){if(!(c.isObject(w)&&$.length>0)){var n=f(t,e,w);return h(),n}},e.$on("$stateChangeSuccess",h);var S=["$transition$",function(t){t.promise.then(h)}],x=o.onStart({},S);e.$on("$destroy",x),h()}]}}];angular.module("ui.router.state").directive("uiSref",f).directive("uiSrefActive",h).directive("uiSrefActiveEq",h).directive("uiState",p)},function(t,e){"use strict";function n(t){var e=function(e,n,r){return t.is(e,n,r)};return e.$stateful=!0,e}function r(t){var e=function(e,n,r){return t.includes(e,n,r)};return e.$stateful=!0,e}n.$inject=["$state"],e.$IsStateFilter=n,r.$inject=["$state"],e.$IncludedByStateFilter=r,angular.module("ui.router.state").filter("isState",n).filter("includedByState",r)},function(t,e,n){"use strict";function r(t,e,n,r,u){var c=l.parse("viewDecl.controllerAs"),p=l.parse("viewDecl.resolveAs"),h=l.parse("node.resolveContext");return{restrict:"ECA",priority:-400,compile:function(r){var u=r.html();return function(r,l){var v=l.data("$uiView");if(v){var d=v.$cfg||{viewDecl:{}};l.html(d.template||u),s.trace.traceUiViewFill(v.$uiView,l.html());var m=t(l.contents()),g=d.controller,y=c(d),w=p(d),$=h(d),b=$&&o.map($.getResolvables(),function(t){return t.data});if(r[w]=b,g){var R=e(g,o.extend({},b,{$scope:r,$element:l}));y&&(r[y]=R,r[y][w]=b),l.data("$ngControllerController",R),l.children().data("$ngControllerController",R),i(n,R,r,d)}if(a.isString(d.viewDecl.component))var S=d.viewDecl.component,x=f.kebobString(S),E=function(){var t=[].slice.call(l[0].children).filter(function(t){return t&&t.tagName&&t.tagName.toLowerCase()===x});return t&&angular.element(t).data("$"+S+"Controller")},P=r.$watch(E,function(t){t&&(i(n,t,r,d),P())});m(r)}}}}}function i(t,e,n,r){!a.isFunction(e.$onInit)||r.viewDecl.component&&h||e.$onInit();var i={bind:e};if(a.isFunction(e.uiOnParamsChanged)){var s=function(t){var n=r.node.resolveContext,i=n.getResolvables().$transition$.data;if(t!==i&&-1===t.exiting().indexOf(r.node.state.self)){var a=t.params("to"),s=t.params("from"),u=t.treeChanges().to.map(function(t){return t.paramSchema}).reduce(o.unnestR,[]),c=t.treeChanges().from.map(function(t){return t.paramSchema}).reduce(o.unnestR,[]),l=u.filter(function(t){var e=c.indexOf(t);return-1===e||!c[e].type.equals(a[t.id],s[t.id])});if(l.length){var f=l.map(function(t){return t.id});e.uiOnParamsChanged(o.filter(a,function(t,e){return-1!==f.indexOf(e)}),t)}}};n.$on("$destroy",t.onSuccess({},["$transition$",s]),i);var u=function(t,e){t.type===c.RejectType.IGNORED&&s(e)};n.$on("$destroy",t.onError({},["$error$","$transition$",u]),i)}if(a.isFunction(e.uiCanExit)){var l={exiting:r.node.state.name};n.$on("$destroy",t.onBefore(l,e.uiCanExit,i))}}var o=n(3),a=n(4),s=n(12),u=n(54),c=n(10),l=n(5),f=n(9),p=["$view","$animate","$uiViewScroll","$interpolate","$q",function(t,e,n,r,i){function o(t,n){return{enter:function(t,n,r){angular.version.minor>2?e.enter(t,null,n).then(r):e.enter(t,null,n,r)},leave:function(t,n){angular.version.minor>2?e.leave(t).then(n):e.leave(t,n)}}}function c(t,e){return t===e}var f={$cfg:{viewDecl:{$context:t.rootContext()}},$uiView:{}},p={count:0,restrict:"ECA",terminal:!0,priority:400,transclude:"element",compile:function(e,h,v){return function(e,h,d){function m(t){(!t||t instanceof u.Ng1ViewConfig)&&(c(P,t)||(s.trace.traceUiViewConfigUpdated(C,t&&t.viewDecl&&t.viewDecl.$context),P=t,y(t)))}function g(){if(w&&(s.trace.traceUiViewEvent("Removing (previous) el",w.data("$uiView")),w.remove(),w=null),b&&(s.trace.traceUiViewEvent("Destroying scope",C),b.$destroy(),b=null),$){var t=$.data("$uiView");s.trace.traceUiViewEvent("Animate out",t),E.leave($,function(){t.$$animLeave.resolve(),w=null}),w=$,$=null}}function y(t){var r=e.$new();s.trace.traceUiViewScopeCreated(C,r);var o=i.defer(),u=i.defer(),c={$cfg:t,$uiView:C,$animEnter:o.promise,$animLeave:u.promise,$$animLeave:u},l=v(r,function(t){E.enter(t.data("$uiView",c),h,function(){o.resolve(),b&&b.$emit("$viewContentAnimationEnded"),(a.isDefined(x)&&!x||e.$eval(x))&&n(t)}),g()});$=l,b=r,b.$emit("$viewContentLoaded",t||P),b.$eval(S)}var w,$,b,R,S=d.onload||"",x=d.autoscroll,E=o(d,e),P=void 0,k=h.inheritedData("$uiView")||f,O=r(d.uiView||d.name||"")(e)||"$default",C={$type:"ng1",id:p.count++,name:O,fqn:k.$uiView.fqn?k.$uiView.fqn+"."+O:O,config:null,configUpdated:m,get creationContext(){return l.parse("$cfg.viewDecl.$context")(k)}};s.trace.traceUiViewEvent("Linking",C),h.data("$uiView",{$uiView:C}),y(),R=t.registerUiView(C),e.$on("$destroy",function(){s.trace.traceUiViewEvent("Destroying/Unregistering",C),R()})}}};return p}];r.$inject=["$compile","$controller","$transitions","$view","$timeout"];var h="function"==typeof angular.module("ui.router").component;angular.module("ui.router.state").directive("uiView",p),angular.module("ui.router.state").directive("uiView",r)},function(t,e){"use strict";function n(){var t=!1;this.useAnchorScroll=function(){t=!0},this.$get=["$anchorScroll","$timeout",function(e,n){return t?e:function(t){return n(function(){t[0].scrollIntoView()},0,!1)}}]}angular.module("ui.router.state").provider("$uiViewScroll",n)}])});
1777 }),Object.freeze(this)}return t.prototype.append=function(t){return this._children.push(t),i.forEach(t._cache,function(e,n){return t._cache[n]=a.isArray(e)?[]:null}),t._cache.path=this._cache.path.concat(this),t},t.prototype.isRoot=function(){return 0===this._cache.path.length},t.prototype.toString=function(){return this.pattern},t.prototype.exec=function(t,e,n,r){function a(t){var e=function(t){return t.split("").reverse().join("")},n=function(t){return t.replace(/\\-/g,"-")},r=e(t).split(/-(?!\\)/),o=i.map(r,e);return i.map(o,n).reverse()}var s=this;void 0===e&&(e={}),void 0===r&&(r={});var c=p(this._cache,"pattern",function(){return new RegExp(["^",i.unnest(s._cache.path.concat(s).map(o.prop("_compiled"))).join(""),s.config.strict===!1?"/?":"","$"].join(""),s.config.caseInsensitive?"i":void 0)}).exec(t);if(!c)return null;var l=this.parameters(),f=l.filter(function(t){return!t.isSearch()}),h=l.filter(function(t){return t.isSearch()}),v=this._cache.path.concat(this).map(function(t){return t._segments.length-1}).reduce(function(t,e){return t+e}),d={};if(v!==c.length-1)throw new Error("Unbalanced capture group in route '"+this.pattern+"'");for(var m=0;v>m;m++){for(var g=f[m],y=c[m+1],w=0;w<g.replace.length;w++)g.replace[w].from===y&&(y=g.replace[w].to);y&&g.array===!0&&(y=a(y)),u.isDefined(y)&&(y=g.type.decode(y)),d[g.id]=g.value(y)}return i.forEach(h,function(t){for(var n=e[t.id],r=0;r<t.replace.length;r++)t.replace[r].from===n&&(n=t.replace[r].to);u.isDefined(n)&&(n=t.type.decode(n)),d[t.id]=t.value(n)}),n&&(d["#"]=n),d},t.prototype.parameters=function(t){return void 0===t&&(t={}),t.inherit===!1?this._params:i.unnest(this._cache.path.concat(this).map(o.prop("_params")))},t.prototype.parameter=function(t,e){void 0===e&&(e={});var n=i.tail(this._cache.path);return i.find(this._params,o.propEq("id",t))||e.inherit!==!1&&n&&n.parameter(t)||null},t.prototype.validates=function(t){var e=this,n=function(t,e){return!t||t.validates(e)};return i.pairs(t||{}).map(function(t){var r=t[0],i=t[1];return n(e.parameter(r),i)}).reduce(i.allTrueR,!0)},t.prototype.format=function(e){function n(t){var n=t.value(e[t.id]),r=t.isDefaultValue(n),i=r?t.squash:!1,o=t.type.encode(n);return{param:t,value:n,isDefaultValue:r,squash:i,encoded:o}}if(void 0===e&&(e={}),!this.validates(e))return null;var r=this._cache.path.slice().concat(this),o=r.map(t.pathSegmentsAndParams).reduce(l.unnestR,[]),s=r.map(t.queryParams).reduce(l.unnestR,[]),u=o.reduce(function(e,r){if(a.isString(r))return e+r;var o=n(r),s=o.squash,u=o.encoded,c=o.param;return s===!0?e.match(/\/$/)?e.slice(0,-1):e:a.isString(s)?e+s:s!==!1?e:null==u?e:a.isArray(u)?e+i.map(u,t.encodeDashes).join("-"):c.type.raw?e+u:e+encodeURIComponent(u)},""),c=s.map(function(t){var e=n(t),r=e.squash,o=e.encoded,s=e.isDefaultValue;if(!(null==o||s&&r!==!1)&&(a.isArray(o)||(o=[o]),0!==o.length))return t.type.raw||(o=i.map(o,encodeURIComponent)),o.map(function(e){return t.id+"="+e})}).filter(i.identity).reduce(l.unnestR,[]).join("&");return u+(c?"?"+c:"")+(e["#"]?"#"+e["#"]:"")},t.encodeDashes=function(t){return encodeURIComponent(t).replace(/-/g,function(t){return"%5C%"+t.charCodeAt(0).toString(16).toUpperCase()})},t.pathSegmentsAndParams=function(t){var e=t._segments,n=t._params.filter(function(t){return t.location===c.DefType.PATH});return f.arrayTuples(e,n.concat(void 0)).reduce(l.unnestR,[]).filter(function(t){return""!==t&&u.isDefined(t)})},t.queryParams=function(t){return t._params.filter(function(t){return t.location===c.DefType.SEARCH})},t.nameValidator=/^\w+([-.]+\w+)*(?:\[\])?$/,t}();e.UrlMatcher=h},function(t,e,n){"use strict";function r(){return{strict:a.matcherConfig.strictMode(),caseInsensitive:a.matcherConfig.caseInsensitive()}}var i=n(3),o=n(4),a=n(45),s=n(20),u=function(){function t(){i.extend(this,{UrlMatcher:a.UrlMatcher,Param:s.Param})}return t.prototype.caseInsensitive=function(t){return a.matcherConfig.caseInsensitive(t)},t.prototype.strictMode=function(t){return a.matcherConfig.strictMode(t)},t.prototype.defaultSquashPolicy=function(t){return a.matcherConfig.defaultSquashPolicy(t)},t.prototype.compile=function(t,e){return new a.UrlMatcher(t,i.extend(r(),e))},t.prototype.isMatcher=function(t){if(!o.isObject(t))return!1;var e=!0;return i.forEach(a.UrlMatcher.prototype,function(n,r){o.isFunction(n)&&(e=e&&o.isDefined(t[r])&&o.isFunction(t[r]))}),e},t.prototype.type=function(t,e,n){var r=s.paramTypes.type(t,e,n);return o.isDefined(e)?this:r},t.prototype.$get=function(){return s.paramTypes.enqueue=!1,s.paramTypes._flushTypeQueue(),this},t}();e.UrlMatcherFactory=u},function(t,e,n){"use strict";function r(t){var e=/^\^((?:\\[^a-zA-Z0-9]|[^\\\[\]\^$*+?.()|{}]+)*)/.exec(t.source);return null!=e?e[1].replace(/\\(.)/g,"$1"):""}function i(t,e){return t.replace(/\$(\$|\d{1,2})/,function(t,n){return e["$"===n?0:Number(n)]})}function o(t,e,n,r){if(!r)return!1;var i=t.invoke(n,n,{$match:r,$stateParams:e});return c.isDefined(i)?i:!0}function a(t,e,n){var r=l.services.locationConfig.baseHref();return"/"===r?t:e?r.slice(0,-1)+t:n?r.slice(1)+t:t}function s(t,e,n){function r(t){var e=t(l.services.$injector,f);return e?(c.isString(e)&&(f.replace(),f.url(e)),!0):!1}if(!n||!n.defaultPrevented){var i,o=t.length;for(i=0;o>i;i++)if(r(t[i]))return;e&&r(e)}}var u=n(3),c=n(4),l=n(6),f=l.services.location,p=function(){function t(t,e){this.$urlMatcherFactory=t,this.$stateParams=e,this.rules=[],this.otherwiseFn=null,this.interceptDeferred=!1}return t.prototype.rule=function(t){if(!c.isFunction(t))throw new Error("'rule' must be a function");return this.rules.push(t),this},t.prototype.otherwise=function(t){if(!c.isFunction(t)&&!c.isString(t))throw new Error("'rule' must be a string or function");return this.otherwiseFn=c.isString(t)?function(){return t}:t,this},t.prototype.when=function(t,e){var n,a=this,s=a.$urlMatcherFactory,p=a.$stateParams,h=c.isString(e);if(c.isString(t)&&(t=s.compile(t)),!h&&!c.isFunction(e)&&!c.isArray(e))throw new Error("invalid 'handler' in when()");var v={matcher:function(t,e){return h&&(n=s.compile(e),e=["$match",n.format.bind(n)]),u.extend(function(){return o(l.services.$injector,p,e,t.exec(f.path(),f.search(),f.hash()))},{prefix:c.isString(t.prefix)?t.prefix:""})},regex:function(t,e){if(t.global||t.sticky)throw new Error("when() RegExp must not be global or sticky");return h&&(n=e,e=["$match",function(t){return i(n,t)}]),u.extend(function(){return o(l.services.$injector,p,e,t.exec(f.path()))},{prefix:r(t)})}},d={matcher:s.isMatcher(t),regex:t instanceof RegExp};for(var m in d)if(d[m])return this.rule(v[m](t,e));throw new Error("invalid 'what' in when()")},t.prototype.deferIntercept=function(t){void 0===t&&(t=!0),this.interceptDeferred=t},t}();e.UrlRouterProvider=p;var h=function(){function t(e){this.urlRouterProvider=e,u.bindFunctions(t.prototype,this,this)}return t.prototype.sync=function(){s(this.urlRouterProvider.rules,this.urlRouterProvider.otherwiseFn)},t.prototype.listen=function(){var t=this;return this.listener=this.listener||f.onChange(function(e){return s(t.urlRouterProvider.rules,t.urlRouterProvider.otherwiseFn,e)})},t.prototype.update=function(t){return t?void(this.location=f.url()):void(f.url()!==this.location&&(f.url(this.location),f.replace()))},t.prototype.push=function(t,e,n){f.url(t.format(e||{})),n&&n.replace&&f.replace()},t.prototype.href=function(t,e,n){if(!t.validates(e))return null;var r=t.format(e);n=n||{};var i=l.services.locationConfig,o=i.html5Mode();if(o||null===r||(r="#"+i.hashPrefix()+r),r=a(r,o,n.absolute),!n.absolute||!r)return r;var s=!o&&r?"/":"",u=i.port();return u=80===u||443===u?"":":"+u,[i.protocol(),"://",i.host(),u,s,r].join("")},t}();e.UrlRouter=h},function(t,e,n){"use strict";function r(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}r(n(50))},function(t,e,n){"use strict";var r=n(3),i=n(5),o=n(4),a=n(2),s=function(){function t(){var t=this;this.uiViews=[],this.viewConfigs=[],this._viewConfigFactories={},this.sync=function(){function e(t){return t.fqn.split(".").length}function n(t){for(var e=t.viewDecl.$context,n=0;++n&&e.parent;)e=e.parent;return n}var o=t.uiViews.map(function(t){return[t.fqn,t]}).reduce(r.applyPairs,{}),a=function(t){return function(e){if(t.$type!==e.viewDecl.$type)return!1;var n=e.viewDecl,i=n.$uiViewName.split("."),a=t.fqn.split(".");if(!r.equals(i,a.slice(0-i.length)))return!1;var s=1-i.length||void 0,u=a.slice(0,s).join("."),c=o[u].creationContext;return n.$uiViewContextAnchor===(c&&c.name)}},s=i.curry(function(t,e,n,r){return e*(t(n)-t(r))}),u=function(e){var r=t.viewConfigs.filter(a(e));return r.length>1&&r.sort(s(n,-1)),[e,r[0]]},c=function(e){var n=e[0],r=e[1];-1!==t.uiViews.indexOf(n)&&n.configUpdated(r)};t.uiViews.sort(s(e,1)).map(u).forEach(c)}}return t.prototype.rootContext=function(t){return this._rootContext=t||this._rootContext},t.prototype.viewConfigFactory=function(t,e){this._viewConfigFactories[t]=e},t.prototype.createViewConfig=function(t,e){var n=this._viewConfigFactories[e.$type];if(!n)throw new Error("ViewService: No view config factory registered for type "+e.$type);var r=n(t,e);return o.isArray(r)?r:[r]},t.prototype.deactivateViewConfig=function(t){a.trace.traceViewServiceEvent("<- Removing",t),r.removeFrom(this.viewConfigs,t)},t.prototype.activateViewConfig=function(t){a.trace.traceViewServiceEvent("-> Registering",t),this.viewConfigs.push(t)},t.prototype.registerUiView=function(t){a.trace.traceViewServiceUiViewEvent("-> Registering",t);var e=this.uiViews,n=function(e){return e.fqn===t.fqn};return e.filter(n).length&&a.trace.traceViewServiceUiViewEvent("!!!! duplicate uiView named:",t),e.push(t),this.sync(),function(){var n=e.indexOf(t);return 0>=n?void a.trace.traceViewServiceUiViewEvent("Tried removing non-registered uiView",t):(a.trace.traceViewServiceUiViewEvent("<- Deregistering",t),void r.removeFrom(e)(t))}},t.prototype.available=function(){return this.uiViews.map(i.prop("fqn"))},t.prototype.active=function(){return this.uiViews.filter(i.prop("$config")).map(i.prop("name"))},t.normalizeUiViewTarget=function(t,e){void 0===e&&(e="");var n=e.split("@"),r=n[0]||"$default",i=o.isString(n[1])?n[1]:"^",a=/^(\^(?:\.\^)*)\.(.*$)/.exec(r);a&&(i=a[1],r=a[2]),"!"===r.charAt(0)&&(r=r.substr(1),i="");var s=/^(\^(?:\.\^)*)$/;if(s.exec(i)){var u=i.split(".").reduce(function(t,e){return t.parent},t);i=u.name}return{uiViewName:r,uiViewContextAnchor:i}},t}();e.ViewService=s},function(t,e,n){"use strict";var r=n(25),i=n(8),o=n(3),a=function(){function t(t){var e=this;this.params=new r.StateParams,this.transitionHistory=new i.Queue([],1),this.successfulTransitions=new i.Queue([],1);var n=function(t){e.transition=t,e.transitionHistory.enqueue(t);var n=function(){e.successfulTransitions.enqueue(t),e.$current=t.$to(),e.current=e.$current.self,o.copy(t.params(),e.params)};t.onSuccess({},n,{priority:1e4});var r=function(){e.transition===t&&(e.transition=null)};t.promise.then(r,r)};t.onBefore({},["$transition$",n])}return t}();e.UIRouterGlobals=a},function(t,e,n){"use strict";var r=n(47),i=n(48),o=n(18),a=n(48),s=n(43),u=n(50),c=n(36),l=n(37),f=n(51),p=function(){function t(){this.viewService=new u.ViewService,this.transitionService=new s.TransitionService(this.viewService),this.globals=new f.UIRouterGlobals(this.transitionService),this.urlMatcherFactory=new r.UrlMatcherFactory,this.urlRouterProvider=new i.UrlRouterProvider(this.urlMatcherFactory,this.globals.params),this.urlRouter=new a.UrlRouter(this.urlRouterProvider),this.stateRegistry=new c.StateRegistry(this.urlMatcherFactory,this.urlRouterProvider),this.stateProvider=new o.StateProvider(this.stateRegistry),this.stateService=new l.StateService(this.viewService,this.urlRouter,this.transitionService,this.stateRegistry,this.stateProvider,this.globals),this.viewService.rootContext(this.stateRegistry.root()),this.globals.$current=this.stateRegistry.root(),this.globals.current=this.globals.$current.self}return t}();e.UIRouter=p},function(t,e,n){"use strict";function r(t){var e=f.services.$injector,n=e.get("$controller"),r=e.instantiate;try{var i;return e.instantiate=function(t){e.instantiate=r,i=e.annotate(t)},n(t,{$scope:{}}),i}finally{e.instantiate=r}}function i(t,e){f.services.$injector=t,f.services.$q=e}function o(t){function e(e,r,i,o,a,s){return o.$on("$locationChangeSuccess",function(t){return n.forEach(function(e){return e(t)})}),f.services.locationConfig.html5Mode=function(){var e=t.html5Mode();return e=v.isObject(e)?e.enabled:e,e&&i.history},f.services.template.get=function(t){return a.get(t,{cache:s,headers:{Accept:"text/html"}}).then(h.prop("data"))},p.bindFunctions(e,f.services.location,e,["replace","url","path","search","hash"]),p.bindFunctions(e,f.services.locationConfig,e,["port","protocol","host"]),p.bindFunctions(r,f.services.locationConfig,r,["baseHref"]),S}S=new l.UIRouter,S.stateRegistry.decorator("views",w.ng1ViewsBuilder),S.stateRegistry.decorator("resolve",b.ng1ResolveBuilder),S.viewService.viewConfigFactory("ng1",w.ng1ViewConfigFactory),p.bindFunctions(t,f.services.locationConfig,t,["hashPrefix"]);var n=[];f.services.location.onChange=function(t){return n.push(t),function(){return p.removeFrom(n)(t)}},this.$get=e,e.$inject=["$location","$browser","$sniffer","$rootScope","$http","$templateCache"]}function a(){return S.urlRouterProvider.$get=function(){return S.urlRouter.update(!0),this.interceptDeferred||S.urlRouter.listen(),S.urlRouter},S.urlRouterProvider}function s(){return S.stateProvider.$get=function(){return S.stateRegistry.stateQueue.autoFlush(S.stateService),S.stateService},S.stateProvider}function u(){function t(t){var e=function(e){function n(){}var i=p.find(t.treeChanges().to,h.propEq("state",e.viewDecl.$context));if(!i)return f.services.$q.when();var o=i.resolveContext,a=r(e.controller),s=o.getResolvables();return n.$inject=a.filter(function(t){return s.hasOwnProperty(t)}),o.invokeLater(n).then(function(){return e.locals=p.map(s,function(t){return t.data})})},n=t.views("entering").filter(function(t){return!!t.controller}).map(e);return f.services.$q.all(n).then(p.noop)}return t.$inject=["$transition$"],S.transitionService.onFinish({},t),S.transitionService.$get=function(){return S.transitionService},S.transitionService}function c(t){t.$watch(function(){y.trace.approximateDigests++})}var l=n(52),f=n(6),p=n(3),h=n(5),v=n(4),d=n(44),m=n(40),g=n(17),y=n(12),w=n(54),$=n(55),b=n(56),R=angular.module("ui.router.angular1",[]);angular.module("ui.router.util",["ng","ui.router.init"]),angular.module("ui.router.router",["ui.router.util"]),angular.module("ui.router.state",["ui.router.router","ui.router.util","ui.router.angular1"]),angular.module("ui.router",["ui.router.init","ui.router.state","ui.router.angular1"]),angular.module("ui.router.compat",["ui.router"]),e.annotateController=r,i.$inject=["$injector","$q"],R.run(i);var S=null;o.$inject=["$locationProvider"];var x=function(){return{resolve:function(t,e,n){void 0===e&&(e={});var r=new d.Node(new g.State({params:{}})),i=new d.Node(new g.State({params:{}})),o=new m.ResolveContext([r,i]);o.addResolvables(m.Resolvable.makeResolvables(t),i.state);var a=function(t){var n=function(t){return m.Resolvable.makeResolvables(p.map(t,function(t){return function(){return t}}))};return o.addResolvables(n(t),r.state),o.addResolvables(n(e),i.state),o.resolvePath()};return n?n.then(a):a({})}}};angular.module("ui.router.init",[]).provider("ng1UIRouter",o),angular.module("ui.router.init").run(["ng1UIRouter",function(t){}]),angular.module("ui.router.util").provider("$urlMatcherFactory",["ng1UIRouterProvider",function(){return S.urlMatcherFactory}]),angular.module("ui.router.util").run(["$urlMatcherFactory",function(t){}]),angular.module("ui.router.router").provider("$urlRouter",["ng1UIRouterProvider",a]),angular.module("ui.router.router").run(["$urlRouter",function(t){}]),angular.module("ui.router.state").provider("$state",["ng1UIRouterProvider",s]),angular.module("ui.router.state").run(["$state",function(t){}]),angular.module("ui.router.state").factory("$stateParams",["ng1UIRouter",function(t){return t.globals.params}]),angular.module("ui.router.state").provider("$transitions",["ng1UIRouterProvider",u]),angular.module("ui.router.util").factory("$templateFactory",["ng1UIRouter",function(){return new $.TemplateFactory}]),angular.module("ui.router").factory("$view",function(){return S.viewService}),angular.module("ui.router").factory("$resolve",x),angular.module("ui.router").service("$trace",function(){return y.trace}),c.$inject=["$rootScope"],e.watchDigests=c,angular.module("ui.router").run(c)},function(t,e,n){"use strict";function r(t){var e=["templateProvider","templateUrl","template","notify","async"],n=["controller","controllerProvider","controllerAs","resolveAs"],r=["component","bindings"],c=e.concat(n),l=r.concat(c),f={},p=t.views||{$default:o.pick(t,l)};return o.forEach(p,function(e,n){if(n=n||"$default",u.isString(e)&&(e={component:e}),Object.keys(e).length){if(e.component){if(c.map(function(t){return u.isDefined(e[t])}).reduce(o.anyTrueR,!1))throw new Error("Cannot combine: "+r.join("|")+" with: "+c.join("|")+" in stateview: 'name@"+t.name+"'");e.templateProvider=["$injector",function(t){var n=function(t){return e.bindings&&e.bindings[t]||t},r=angular.version.minor>=3?"::":"",o=function(t){var e=a.kebobString(t.name),i=n(t.name);return"@"===t.type?e+"='{{"+r+"$resolve."+i+"}}'":e+"='"+r+"$resolve."+i+"'"},s=i(t,e.component).map(o).join(" "),u=a.kebobString(e.component);return"<"+u+" "+s+"></"+u+">"}]}e.resolveAs=e.resolveAs||"$resolve",e.$type="ng1",e.$context=t,e.$name=n;var l=s.ViewService.normalizeUiViewTarget(e.$context,e.$name);e.$uiViewName=l.uiViewName,e.$uiViewContextAnchor=l.uiViewContextAnchor,f[n]=e}}),f}function i(t,e){var n=t.get(e+"Directive");if(!n||!n.length)throw new Error("Unable to find component named '"+e+"'");return n.map(h).reduce(o.unnestR,[])}var o=n(3),a=n(9),s=n(50),u=n(4),c=n(6),l=n(12),f=n(55);e.ng1ViewConfigFactory=function(t,e){return new v(t,e)},e.ng1ViewsBuilder=r;var p=function(t){return Object.keys(t||{}).map(function(e){return[e,/^([=<@])[?]?(.*)/.exec(t[e])]}).filter(function(t){return u.isDefined(t)&&u.isDefined(t[1])}).map(function(t){return{name:t[1][2]||t[0],type:t[1][1]}})},h=function(t){return p(u.isObject(t.bindToController)?t.bindToController:t.scope)},v=function(){function t(t,e){this.node=t,this.viewDecl=e,this.loaded=!1}return t.prototype.load=function(){var t=this,e=c.services.$q;if(!this.hasTemplate())throw new Error("No template configuration specified for '"+this.viewDecl.$uiViewName+"@"+this.viewDecl.$uiViewContextAnchor+"'");var n=this.node.resolveContext,r=this.node.paramValues,i={template:e.when(this.getTemplate(r,new f.TemplateFactory,n)),controller:e.when(this.getController(n))};return e.all(i).then(function(e){l.trace.traceViewServiceEvent("Loaded",t),t.controller=e.controller,t.template=e.template})},t.prototype.hasTemplate=function(){return!!(this.viewDecl.template||this.viewDecl.templateUrl||this.viewDecl.templateProvider)},t.prototype.getTemplate=function(t,e,n){return e.fromConfig(this.viewDecl,t,n.invokeLater.bind(n))},t.prototype.getController=function(t){var e=this.viewDecl.controllerProvider;return u.isInjectable(e)?t.invokeLater(e,{}):this.viewDecl.controller},t}();e.Ng1ViewConfig=v},function(t,e,n){"use strict";var r=n(4),i=n(6),o=function(){function t(){}return t.prototype.fromConfig=function(t,e,n){return r.isDefined(t.template)?this.fromString(t.template,e):r.isDefined(t.templateUrl)?this.fromUrl(t.templateUrl,e):r.isDefined(t.templateProvider)?this.fromProvider(t.templateProvider,e,n):null},t.prototype.fromString=function(t,e){return r.isFunction(t)?t(e):t},t.prototype.fromUrl=function(t,e){return r.isFunction(t)&&(t=t(e)),null==t?null:i.services.template.get(t)},t.prototype.fromProvider=function(t,e,n){return n(t)},t}();e.TemplateFactory=o},function(t,e,n){"use strict";function r(t){var e={};return i.forEach(t.resolve||{},function(t,n){e[n]=o.isString(t)?[t,function(t){return t}]:t}),e}var i=n(3),o=n(4);e.ng1ResolveBuilder=r},function(t,e,n){"use strict";function r(t,e){var n,r=t.match(/^\s*({[^}]*})\s*$/);if(r&&(t=e+"("+r[1]+")"),n=t.replace(/\n/g," ").match(/^([^(]+?)\s*(\((.*)\))?$/),!n||4!==n.length)throw new Error("Invalid state ref '"+t+"'");return{state:n[1],paramExpr:n[3]||null}}function i(t){var e=t.parent().inheritedData("$uiView"),n=l.parse("$cfg.node.state")(e);return n&&n.name?n:void 0}function o(t){var e="[object SVGAnimatedString]"===Object.prototype.toString.call(t.prop("href")),n="FORM"===t[0].nodeName;return{attr:n?"action":e?"xlink:href":"href",isAnchor:"A"===t.prop("tagName").toUpperCase(),clickable:!n}}function a(t,e,n,r,i){return function(o){var a=o.which||o.button,s=i();if(!(a>1||o.ctrlKey||o.metaKey||o.shiftKey||t.attr("target"))){var u=n(function(){e.go(s.state,s.params,s.options)});o.preventDefault();var c=r.isAnchor&&!s.href?1:0;o.preventDefault=function(){c--<=0&&n.cancel(u)}}}}function s(t,e){return{relative:i(t)||e.$current,inherit:!0}}var u=n(3),c=n(4),l=n(5),f=["$state","$timeout",function(t,e){return{restrict:"A",require:["?^uiSrefActive","?^uiSrefActiveEq"],link:function(n,i,c,l){var f=r(c.uiSref,t.current.name),p={state:f.state,href:null,params:null,options:null},h=o(i),v=l[1]||l[0],d=null;p.options=u.extend(s(i,t),c.uiSrefOpts?n.$eval(c.uiSrefOpts):{});var m=function(e){e&&(p.params=angular.copy(e)),p.href=t.href(f.state,p.params,p.options),d&&d(),v&&(d=v.$$addStateInfo(f.state,p.params)),null!==p.href&&c.$set(h.attr,p.href)};f.paramExpr&&(n.$watch(f.paramExpr,function(t){t!==p.params&&m(t)},!0),p.params=angular.copy(n.$eval(f.paramExpr))),m(),h.clickable&&i.bind("click",a(i,t,e,h,function(){return p}))}}}],p=["$state","$timeout",function(t,e){return{restrict:"A",require:["?^uiSrefActive","?^uiSrefActiveEq"],link:function(n,r,i,s){function u(e){h.state=e[0],h.params=e[1],h.options=e[2],h.href=t.href(h.state,h.params,h.options),v&&v(),l&&(v=l.$$addStateInfo(h.state,h.params)),h.href&&i.$set(c.attr,h.href)}var c=o(r),l=s[1]||s[0],f=[i.uiState,i.uiStateParams||null,i.uiStateOpts||null],p="["+f.map(function(t){return t||"null"}).join(", ")+"]",h={state:null,params:null,options:null,href:null},v=null;n.$watch(p,u,!0),u(n.$eval(p)),c.clickable&&r.bind("click",a(r,t,e,c,function(){return h}))}}}],h=["$state","$stateParams","$interpolate","$transitions",function(t,e,n,o){return{restrict:"A",controller:["$scope","$element","$attrs","$timeout",function(e,a,s,l){function f(e,n,r){var o=t.get(e,i(a)),s=p(e,n),u={state:o||{name:e},params:n,hash:s};return $.push(u),b[s]=r,function(){var t=$.indexOf(u);-1!==t&&$.splice(t,1)}}function p(t,n){if(!c.isString(t))throw new Error("state should be a string");return c.isObject(n)?t+u.toJson(n):(n=e.$eval(n),c.isObject(n)?t+u.toJson(n):t)}function h(){for(var t=0;t<$.length;t++)m($[t].state,$[t].params)?v(a,b[$[t].hash]):d(a,b[$[t].hash]),g($[t].state,$[t].params)?v(a,y):d(a,y)}function v(t,e){l(function(){t.addClass(e)})}function d(t,e){t.removeClass(e)}function m(e,n){return t.includes(e.name,n)}function g(e,n){return t.is(e.name,n)}var y,w,$=[],b={};y=n(s.uiSrefActiveEq||"",!1)(e);try{w=e.$eval(s.uiSrefActive)}catch(R){}w=w||n(s.uiSrefActive||"",!1)(e),c.isObject(w)&&u.forEach(w,function(n,i){if(c.isString(n)){var o=r(n,t.current.name);f(o.state,e.$eval(o.paramExpr),i)}}),this.$$addStateInfo=function(t,e){if(!(c.isObject(w)&&$.length>0)){var n=f(t,e,w);return h(),n}},e.$on("$stateChangeSuccess",h);var S=["$transition$",function(t){t.promise.then(h)}],x=o.onStart({},S);e.$on("$destroy",x),h()}]}}];angular.module("ui.router.state").directive("uiSref",f).directive("uiSrefActive",h).directive("uiSrefActiveEq",h).directive("uiState",p)},function(t,e){"use strict";function n(t){var e=function(e,n,r){return t.is(e,n,r)};return e.$stateful=!0,e}function r(t){var e=function(e,n,r){return t.includes(e,n,r)};return e.$stateful=!0,e}n.$inject=["$state"],e.$IsStateFilter=n,r.$inject=["$state"],e.$IncludedByStateFilter=r,angular.module("ui.router.state").filter("isState",n).filter("includedByState",r)},function(t,e,n){"use strict";function r(t,e,n,r,u){var c=l.parse("viewDecl.controllerAs"),p=l.parse("viewDecl.resolveAs"),h=l.parse("node.resolveContext");return{restrict:"ECA",priority:-400,compile:function(r){var u=r.html();return function(r,l){var v=l.data("$uiView");if(v){var d=v.$cfg||{viewDecl:{}};l.html(d.template||u),s.trace.traceUiViewFill(v.$uiView,l.html());var m=t(l.contents()),g=d.controller,y=c(d),w=p(d),$=h(d),b=$&&o.map($.getResolvables(),function(t){return t.data});if(r[w]=b,g){var R=e(g,o.extend({},b,{$scope:r,$element:l}));y&&(r[y]=R,r[y][w]=b),l.data("$ngControllerController",R),l.children().data("$ngControllerController",R),i(n,R,r,d)}if(a.isString(d.viewDecl.component))var S=d.viewDecl.component,x=f.kebobString(S),E=function(){var t=[].slice.call(l[0].children).filter(function(t){return t&&t.tagName&&t.tagName.toLowerCase()===x});return t&&angular.element(t).data("$"+S+"Controller")},P=r.$watch(E,function(t){t&&(i(n,t,r,d),P())});m(r)}}}}}function i(t,e,n,r){!a.isFunction(e.$onInit)||r.viewDecl.component&&h||e.$onInit();var i={bind:e};if(a.isFunction(e.uiOnParamsChanged)){var s=function(t){var n=r.node.resolveContext,i=n.getResolvables().$transition$.data;if(t!==i&&-1===t.exiting().indexOf(r.node.state.self)){var a=t.params("to"),s=t.params("from"),u=t.treeChanges().to.map(function(t){return t.paramSchema}).reduce(o.unnestR,[]),c=t.treeChanges().from.map(function(t){return t.paramSchema}).reduce(o.unnestR,[]),l=u.filter(function(t){var e=c.indexOf(t);return-1===e||!c[e].type.equals(a[t.id],s[t.id])});if(l.length){var f=l.map(function(t){return t.id});e.uiOnParamsChanged(o.filter(a,function(t,e){return-1!==f.indexOf(e)}),t)}}};n.$on("$destroy",t.onSuccess({},["$transition$",s]),i);var u=function(t,e){t.type===c.RejectType.IGNORED&&s(e)};n.$on("$destroy",t.onError({},["$error$","$transition$",u]),i)}if(a.isFunction(e.uiCanExit)){var l={exiting:r.node.state.name};n.$on("$destroy",t.onBefore(l,e.uiCanExit,i))}}var o=n(3),a=n(4),s=n(12),u=n(54),c=n(10),l=n(5),f=n(9),p=["$view","$animate","$uiViewScroll","$interpolate","$q",function(t,e,n,r,i){function o(t,n){return{enter:function(t,n,r){angular.version.minor>2?e.enter(t,null,n).then(r):e.enter(t,null,n,r)},leave:function(t,n){angular.version.minor>2?e.leave(t).then(n):e.leave(t,n)}}}function c(t,e){return t===e}var f={$cfg:{viewDecl:{$context:t.rootContext()}},$uiView:{}},p={count:0,restrict:"ECA",terminal:!0,priority:400,transclude:"element",compile:function(e,h,v){return function(e,h,d){function m(t){(!t||t instanceof u.Ng1ViewConfig)&&(c(P,t)||(s.trace.traceUiViewConfigUpdated(C,t&&t.viewDecl&&t.viewDecl.$context),P=t,y(t)))}function g(){if(w&&(s.trace.traceUiViewEvent("Removing (previous) el",w.data("$uiView")),w.remove(),w=null),b&&(s.trace.traceUiViewEvent("Destroying scope",C),b.$destroy(),b=null),$){var t=$.data("$uiView");s.trace.traceUiViewEvent("Animate out",t),E.leave($,function(){t.$$animLeave.resolve(),w=null}),w=$,$=null}}function y(t){var r=e.$new();s.trace.traceUiViewScopeCreated(C,r);var o=i.defer(),u=i.defer(),c={$cfg:t,$uiView:C,$animEnter:o.promise,$animLeave:u.promise,$$animLeave:u},l=v(r,function(t){E.enter(t.data("$uiView",c),h,function(){o.resolve(),b&&b.$emit("$viewContentAnimationEnded"),(a.isDefined(x)&&!x||e.$eval(x))&&n(t)}),g()});$=l,b=r,b.$emit("$viewContentLoaded",t||P),b.$eval(S)}var w,$,b,R,S=d.onload||"",x=d.autoscroll,E=o(d,e),P=void 0,k=h.inheritedData("$uiView")||f,O=r(d.uiView||d.name||"")(e)||"$default",C={$type:"ng1",id:p.count++,name:O,fqn:k.$uiView.fqn?k.$uiView.fqn+"."+O:O,config:null,configUpdated:m,get creationContext(){return l.parse("$cfg.viewDecl.$context")(k)}};s.trace.traceUiViewEvent("Linking",C),h.data("$uiView",{$uiView:C}),y(),R=t.registerUiView(C),e.$on("$destroy",function(){s.trace.traceUiViewEvent("Destroying/Unregistering",C),R()})}}};return p}];r.$inject=["$compile","$controller","$transitions","$view","$timeout"];var h="function"==typeof angular.module("ui.router").component;angular.module("ui.router.state").directive("uiView",p),angular.module("ui.router.state").directive("uiView",r)},function(t,e){"use strict";function n(){var t=!1;this.useAnchorScroll=function(){t=!0},this.$get=["$anchorScroll","$timeout",function(e,n){return t?e:function(t){return n(function(){t[0].scrollIntoView()},0,!1)}}]}angular.module("ui.router.state").provider("$uiViewScroll",n)}])});
1778 //# sourceMappingURL=angular-ui-router.min.js.map
1778 //# sourceMappingURL=angular-ui-router.min.js.map
1779 ;angular.module('angular-toArrayFilter', [])
1779 ;angular.module('angular-toArrayFilter', [])
1780
1780
1781 .filter('toArray', function () {
1781 .filter('toArray', function () {
1782 return function (obj, addKey) {
1782 return function (obj, addKey) {
1783 if (!angular.isObject(obj)) return obj;
1783 if (!angular.isObject(obj)) return obj;
1784 if ( addKey === false ) {
1784 if ( addKey === false ) {
1785 return Object.keys(obj).map(function(key) {
1785 return Object.keys(obj).map(function(key) {
1786 return obj[key];
1786 return obj[key];
1787 });
1787 });
1788 } else {
1788 } else {
1789 return Object.keys(obj).map(function (key) {
1789 return Object.keys(obj).map(function (key) {
1790 var value = obj[key];
1790 var value = obj[key];
1791 return angular.isObject(value) ?
1791 return angular.isObject(value) ?
1792 Object.defineProperty(value, '$key', { enumerable: false, value: key}) :
1792 Object.defineProperty(value, '$key', { enumerable: false, value: key}) :
1793 { $key: key, $value: value };
1793 { $key: key, $value: value };
1794 });
1794 });
1795 }
1795 }
1796 };
1796 };
1797 });
1797 });
1798 ;//Copyright (C) 2012 Kory Nunn
1798 ;//Copyright (C) 2012 Kory Nunn
1799
1799
1800 //Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
1800 //Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
1801
1801
1802 //The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
1802 //The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
1803
1803
1804 //THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
1804 //THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
1805
1805
1806 /*
1806 /*
1807
1807
1808 This code is not formatted for readability, but rather run-speed and to assist compilers.
1808 This code is not formatted for readability, but rather run-speed and to assist compilers.
1809
1809
1810 However, the code's intention should be transparent.
1810 However, the code's intention should be transparent.
1811
1811
1812 *** IE SUPPORT ***
1812 *** IE SUPPORT ***
1813
1813
1814 If you require this library to work in IE7, add the following after declaring crel.
1814 If you require this library to work in IE7, add the following after declaring crel.
1815
1815
1816 var testDiv = document.createElement('div'),
1816 var testDiv = document.createElement('div'),
1817 testLabel = document.createElement('label');
1817 testLabel = document.createElement('label');
1818
1818
1819 testDiv.setAttribute('class', 'a');
1819 testDiv.setAttribute('class', 'a');
1820 testDiv['className'] !== 'a' ? crel.attrMap['class'] = 'className':undefined;
1820 testDiv['className'] !== 'a' ? crel.attrMap['class'] = 'className':undefined;
1821 testDiv.setAttribute('name','a');
1821 testDiv.setAttribute('name','a');
1822 testDiv['name'] !== 'a' ? crel.attrMap['name'] = function(element, value){
1822 testDiv['name'] !== 'a' ? crel.attrMap['name'] = function(element, value){
1823 element.id = value;
1823 element.id = value;
1824 }:undefined;
1824 }:undefined;
1825
1825
1826
1826
1827 testLabel.setAttribute('for', 'a');
1827 testLabel.setAttribute('for', 'a');
1828 testLabel['htmlFor'] !== 'a' ? crel.attrMap['for'] = 'htmlFor':undefined;
1828 testLabel['htmlFor'] !== 'a' ? crel.attrMap['for'] = 'htmlFor':undefined;
1829
1829
1830
1830
1831
1831
1832 */
1832 */
1833
1833
1834 (function (root, factory) {
1834 (function (root, factory) {
1835 if (typeof exports === 'object') {
1835 if (typeof exports === 'object') {
1836 if (!root.window) {
1836 if (!root.window) {
1837 var jsdom = require('jsdom').jsdom;
1837 var jsdom = require('jsdom').jsdom;
1838 root.window = jsdom().parentWindow;
1838 root.window = jsdom().parentWindow;
1839 }
1839 }
1840 module.exports = factory(root.window);
1840 module.exports = factory(root.window);
1841 } else if (typeof define === 'function' && define.amd) {
1841 } else if (typeof define === 'function' && define.amd) {
1842 define(factory.bind(null, window));
1842 define(factory.bind(null, window));
1843 } else {
1843 } else {
1844 root.crel = factory(root.window);
1844 root.crel = factory(root.window);
1845 }
1845 }
1846 }(this, function (window) {
1846 }(this, function (window) {
1847 // based on http://stackoverflow.com/questions/384286/javascript-isdom-how-do-you-check-if-a-javascript-object-is-a-dom-object
1847 // based on http://stackoverflow.com/questions/384286/javascript-isdom-how-do-you-check-if-a-javascript-object-is-a-dom-object
1848 var isNode = typeof Node === 'object'
1848 var isNode = typeof Node === 'object'
1849 ? function (object) { return object instanceof Node }
1849 ? function (object) { return object instanceof Node }
1850 : function (object) {
1850 : function (object) {
1851 return object
1851 return object
1852 && typeof object === 'object'
1852 && typeof object === 'object'
1853 && typeof object.nodeType === 'number'
1853 && typeof object.nodeType === 'number'
1854 && typeof object.nodeName === 'string';
1854 && typeof object.nodeName === 'string';
1855 };
1855 };
1856
1856
1857 function crel(){
1857 function crel(){
1858 var document = window.document,
1858 var document = window.document,
1859 args = arguments, //Note: assigned to a variable to assist compilers. Saves about 40 bytes in closure compiler. Has negligable effect on performance.
1859 args = arguments, //Note: assigned to a variable to assist compilers. Saves about 40 bytes in closure compiler. Has negligable effect on performance.
1860 element = document.createElement(args[0]),
1860 element = document.createElement(args[0]),
1861 child,
1861 child,
1862 settings = args[1],
1862 settings = args[1],
1863 childIndex = 2,
1863 childIndex = 2,
1864 argumentsLength = args.length,
1864 argumentsLength = args.length,
1865 attributeMap = crel.attrMap;
1865 attributeMap = crel.attrMap;
1866
1866
1867 // shortcut
1867 // shortcut
1868 if(argumentsLength === 1){
1868 if(argumentsLength === 1){
1869 return element;
1869 return element;
1870 }
1870 }
1871
1871
1872 if(typeof settings !== 'object' || isNode(settings)) {
1872 if(typeof settings !== 'object' || isNode(settings)) {
1873 --childIndex;
1873 --childIndex;
1874 settings = null;
1874 settings = null;
1875 }
1875 }
1876
1876
1877 // shortcut if there is only one child that is a string
1877 // shortcut if there is only one child that is a string
1878 if((argumentsLength - childIndex) === 1 && typeof args[childIndex] === 'string' && element.textContent !== undefined){
1878 if((argumentsLength - childIndex) === 1 && typeof args[childIndex] === 'string' && element.textContent !== undefined){
1879 element.textContent = args[childIndex];
1879 element.textContent = args[childIndex];
1880 }else{
1880 }else{
1881 for(; childIndex < argumentsLength; ++childIndex){
1881 for(; childIndex < argumentsLength; ++childIndex){
1882 child = args[childIndex];
1882 child = args[childIndex];
1883
1883
1884 if(child == null){
1884 if(child == null){
1885 continue;
1885 continue;
1886 }
1886 }
1887
1887
1888 if(!isNode(child)){
1888 if(!isNode(child)){
1889 child = document.createTextNode(child);
1889 child = document.createTextNode(child);
1890 }
1890 }
1891
1891
1892 element.appendChild(child);
1892 element.appendChild(child);
1893 }
1893 }
1894 }
1894 }
1895
1895
1896 for(var key in settings){
1896 for(var key in settings){
1897 if(!attributeMap[key]){
1897 if(!attributeMap[key]){
1898 element.setAttribute(key, settings[key]);
1898 element.setAttribute(key, settings[key]);
1899 }else{
1899 }else{
1900 var attr = crel.attrMap[key];
1900 var attr = crel.attrMap[key];
1901 if(typeof attr === 'function'){
1901 if(typeof attr === 'function'){
1902 attr(element, settings[key]);
1902 attr(element, settings[key]);
1903 }else{
1903 }else{
1904 element.setAttribute(attr, settings[key]);
1904 element.setAttribute(attr, settings[key]);
1905 }
1905 }
1906 }
1906 }
1907 }
1907 }
1908
1908
1909 return element;
1909 return element;
1910 }
1910 }
1911
1911
1912 // Used for mapping one kind of attribute to the supported version of that in bad browsers.
1912 // Used for mapping one kind of attribute to the supported version of that in bad browsers.
1913 // String referenced so that compilers maintain the property name.
1913 // String referenced so that compilers maintain the property name.
1914 crel['attrMap'] = {};
1914 crel['attrMap'] = {};
1915
1915
1916 // String referenced so that compilers maintain the property name.
1916 // String referenced so that compilers maintain the property name.
1917 crel["isNode"] = isNode;
1917 crel["isNode"] = isNode;
1918
1918
1919 return crel;
1919 return crel;
1920 }));
1920 }));
1921
1921
1922 ;/*globals define, module, require, document*/
1922 ;/*globals define, module, require, document*/
1923 (function (root, factory) {
1923 (function (root, factory) {
1924 "use strict";
1924 "use strict";
1925 if (typeof define === 'function' && define.amd) {
1925 if (typeof define === 'function' && define.amd) {
1926 define([], factory);
1926 define([], factory);
1927 } else if (typeof module !== 'undefined' && module.exports) {
1927 } else if (typeof module !== 'undefined' && module.exports) {
1928 module.exports = factory();
1928 module.exports = factory();
1929 } else {
1929 } else {
1930 root.JsonHuman = factory();
1930 root.JsonHuman = factory();
1931 }
1931 }
1932 }(this, function () {
1932 }(this, function () {
1933 "use strict";
1933 "use strict";
1934
1934
1935 var indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };
1935 var indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };
1936
1936
1937 function makePrefixer(prefix) {
1937 function makePrefixer(prefix) {
1938 return function (name) {
1938 return function (name) {
1939 return prefix + "-" + name;
1939 return prefix + "-" + name;
1940 };
1940 };
1941 }
1941 }
1942
1942
1943 function isArray(obj) {
1943 function isArray(obj) {
1944 return toString.call(obj) === '[object Array]';
1944 return toString.call(obj) === '[object Array]';
1945 }
1945 }
1946
1946
1947 function sn(tagName, className, data) {
1947 function sn(tagName, className, data) {
1948 var result = document.createElement(tagName);
1948 var result = document.createElement(tagName);
1949
1949
1950 result.className = className;
1950 result.className = className;
1951 result.appendChild(document.createTextNode("" + data));
1951 result.appendChild(document.createTextNode("" + data));
1952
1952
1953 return result;
1953 return result;
1954 }
1954 }
1955
1955
1956 function scn(tagName, className, child) {
1956 function scn(tagName, className, child) {
1957 var result = document.createElement(tagName),
1957 var result = document.createElement(tagName),
1958 i, len;
1958 i, len;
1959
1959
1960 result.className = className;
1960 result.className = className;
1961
1961
1962 if (isArray(child)) {
1962 if (isArray(child)) {
1963 for (i = 0, len = child.length; i < len; i += 1) {
1963 for (i = 0, len = child.length; i < len; i += 1) {
1964 result.appendChild(child[i]);
1964 result.appendChild(child[i]);
1965 }
1965 }
1966 } else {
1966 } else {
1967 result.appendChild(child);
1967 result.appendChild(child);
1968 }
1968 }
1969
1969
1970 return result;
1970 return result;
1971 }
1971 }
1972
1972
1973 function linkNode(child, href, target){
1973 function linkNode(child, href, target){
1974 var a = scn("a", HYPERLINK_CLASS_NAME, child);
1974 var a = scn("a", HYPERLINK_CLASS_NAME, child);
1975 a.setAttribute('href', href);
1975 a.setAttribute('href', href);
1976 a.setAttribute('target', target);
1976 a.setAttribute('target', target);
1977 return a;
1977 return a;
1978 }
1978 }
1979
1979
1980 var toString = Object.prototype.toString,
1980 var toString = Object.prototype.toString,
1981 prefixer = makePrefixer("jh"),
1981 prefixer = makePrefixer("jh"),
1982 p = prefixer,
1982 p = prefixer,
1983 ARRAY = 2,
1983 ARRAY = 2,
1984 BOOL = 4,
1984 BOOL = 4,
1985 INT = 8,
1985 INT = 8,
1986 FLOAT = 16,
1986 FLOAT = 16,
1987 STRING = 32,
1987 STRING = 32,
1988 OBJECT = 64,
1988 OBJECT = 64,
1989 SPECIAL_OBJECT = 128,
1989 SPECIAL_OBJECT = 128,
1990 FUNCTION = 256,
1990 FUNCTION = 256,
1991 UNK = 1,
1991 UNK = 1,
1992
1992
1993 STRING_CLASS_NAME = p("type-string"),
1993 STRING_CLASS_NAME = p("type-string"),
1994 STRING_EMPTY_CLASS_NAME = p("type-string") + " " + p("empty"),
1994 STRING_EMPTY_CLASS_NAME = p("type-string") + " " + p("empty"),
1995
1995
1996 BOOL_TRUE_CLASS_NAME = p("type-bool-true"),
1996 BOOL_TRUE_CLASS_NAME = p("type-bool-true"),
1997 BOOL_FALSE_CLASS_NAME = p("type-bool-false"),
1997 BOOL_FALSE_CLASS_NAME = p("type-bool-false"),
1998 BOOL_IMAGE = p("type-bool-image"),
1998 BOOL_IMAGE = p("type-bool-image"),
1999 INT_CLASS_NAME = p("type-int") + " " + p("type-number"),
1999 INT_CLASS_NAME = p("type-int") + " " + p("type-number"),
2000 FLOAT_CLASS_NAME = p("type-float") + " " + p("type-number"),
2000 FLOAT_CLASS_NAME = p("type-float") + " " + p("type-number"),
2001
2001
2002 OBJECT_CLASS_NAME = p("type-object"),
2002 OBJECT_CLASS_NAME = p("type-object"),
2003 OBJ_KEY_CLASS_NAME = p("key") + " " + p("object-key"),
2003 OBJ_KEY_CLASS_NAME = p("key") + " " + p("object-key"),
2004 OBJ_VAL_CLASS_NAME = p("value") + " " + p("object-value"),
2004 OBJ_VAL_CLASS_NAME = p("value") + " " + p("object-value"),
2005 OBJ_EMPTY_CLASS_NAME = p("type-object") + " " + p("empty"),
2005 OBJ_EMPTY_CLASS_NAME = p("type-object") + " " + p("empty"),
2006
2006
2007 FUNCTION_CLASS_NAME = p("type-function"),
2007 FUNCTION_CLASS_NAME = p("type-function"),
2008
2008
2009 ARRAY_KEY_CLASS_NAME = p("key") + " " + p("array-key"),
2009 ARRAY_KEY_CLASS_NAME = p("key") + " " + p("array-key"),
2010 ARRAY_VAL_CLASS_NAME = p("value") + " " + p("array-value"),
2010 ARRAY_VAL_CLASS_NAME = p("value") + " " + p("array-value"),
2011 ARRAY_CLASS_NAME = p("type-array"),
2011 ARRAY_CLASS_NAME = p("type-array"),
2012 ARRAY_EMPTY_CLASS_NAME = p("type-array") + " " + p("empty"),
2012 ARRAY_EMPTY_CLASS_NAME = p("type-array") + " " + p("empty"),
2013
2013
2014 HYPERLINK_CLASS_NAME = p('a'),
2014 HYPERLINK_CLASS_NAME = p('a'),
2015
2015
2016 UNKNOWN_CLASS_NAME = p("type-unk");
2016 UNKNOWN_CLASS_NAME = p("type-unk");
2017
2017
2018 function getType(obj) {
2018 function getType(obj) {
2019 var type = typeof obj;
2019 var type = typeof obj;
2020
2020
2021 switch (type) {
2021 switch (type) {
2022 case "boolean":
2022 case "boolean":
2023 return BOOL;
2023 return BOOL;
2024 case "string":
2024 case "string":
2025 return STRING;
2025 return STRING;
2026 case "number":
2026 case "number":
2027 return (obj % 1 === 0) ? INT : FLOAT;
2027 return (obj % 1 === 0) ? INT : FLOAT;
2028 case "function":
2028 case "function":
2029 return FUNCTION;
2029 return FUNCTION;
2030 default:
2030 default:
2031 if (isArray(obj)) {
2031 if (isArray(obj)) {
2032 return ARRAY;
2032 return ARRAY;
2033 } else if (obj === Object(obj)) {
2033 } else if (obj === Object(obj)) {
2034 if (obj.constructor === Object) {
2034 if (obj.constructor === Object) {
2035 return OBJECT;
2035 return OBJECT;
2036 }
2036 }
2037 return OBJECT | SPECIAL_OBJECT
2037 return OBJECT | SPECIAL_OBJECT
2038 } else {
2038 } else {
2039 return UNK;
2039 return UNK;
2040 }
2040 }
2041 }
2041 }
2042 }
2042 }
2043
2043
2044 function _format(data, options, parentKey) {
2044 function _format(data, options, parentKey) {
2045
2045
2046 var result, container, key, keyNode, valNode, len, childs, tr, value,
2046 var result, container, key, keyNode, valNode, len, childs, tr, value,
2047 isEmpty = true,
2047 isEmpty = true,
2048 isSpecial = false,
2048 isSpecial = false,
2049 accum = [],
2049 accum = [],
2050 type = getType(data);
2050 type = getType(data);
2051
2051
2052 // Initialized & used only in case of objects & arrays
2052 // Initialized & used only in case of objects & arrays
2053 var hyperlinksEnabled, aTarget, hyperlinkKeys ;
2053 var hyperlinksEnabled, aTarget, hyperlinkKeys ;
2054
2054
2055 if (type === BOOL) {
2055 if (type === BOOL) {
2056 var boolOpt = options.bool;
2056 var boolOpt = options.bool;
2057 container = document.createElement('div');
2057 container = document.createElement('div');
2058
2058
2059 if (boolOpt.showImage) {
2059 if (boolOpt.showImage) {
2060 var img = document.createElement('img');
2060 var img = document.createElement('img');
2061 img.setAttribute('class', BOOL_IMAGE);
2061 img.setAttribute('class', BOOL_IMAGE);
2062
2062
2063 img.setAttribute('src',
2063 img.setAttribute('src',
2064 '' + (data ? boolOpt.img.true : boolOpt.img.false));
2064 '' + (data ? boolOpt.img.true : boolOpt.img.false));
2065
2065
2066 container.appendChild(img);
2066 container.appendChild(img);
2067 }
2067 }
2068
2068
2069 if (boolOpt.showText) {
2069 if (boolOpt.showText) {
2070 container.appendChild(data ?
2070 container.appendChild(data ?
2071 sn("span", BOOL_TRUE_CLASS_NAME, boolOpt.text.true) :
2071 sn("span", BOOL_TRUE_CLASS_NAME, boolOpt.text.true) :
2072 sn("span", BOOL_FALSE_CLASS_NAME, boolOpt.text.false));
2072 sn("span", BOOL_FALSE_CLASS_NAME, boolOpt.text.false));
2073 }
2073 }
2074
2074
2075 result = container;
2075 result = container;
2076
2076
2077 } else if (type === STRING) {
2077 } else if (type === STRING) {
2078 if (data === "") {
2078 if (data === "") {
2079 result = sn("span", STRING_EMPTY_CLASS_NAME, "(Empty Text)");
2079 result = sn("span", STRING_EMPTY_CLASS_NAME, "(Empty Text)");
2080 } else {
2080 } else {
2081 result = sn("span", STRING_CLASS_NAME, data);
2081 result = sn("span", STRING_CLASS_NAME, data);
2082 }
2082 }
2083 } else if (type === INT) {
2083 } else if (type === INT) {
2084 result = sn("span", INT_CLASS_NAME, data);
2084 result = sn("span", INT_CLASS_NAME, data);
2085 } else if (type === FLOAT) {
2085 } else if (type === FLOAT) {
2086 result = sn("span", FLOAT_CLASS_NAME, data);
2086 result = sn("span", FLOAT_CLASS_NAME, data);
2087 } else if (type & OBJECT) {
2087 } else if (type & OBJECT) {
2088 if (type & SPECIAL_OBJECT) {
2088 if (type & SPECIAL_OBJECT) {
2089 isSpecial = true;
2089 isSpecial = true;
2090 }
2090 }
2091 childs = [];
2091 childs = [];
2092
2092
2093 aTarget = options.hyperlinks.target;
2093 aTarget = options.hyperlinks.target;
2094 hyperlinkKeys = options.hyperlinks.keys;
2094 hyperlinkKeys = options.hyperlinks.keys;
2095
2095
2096 // Is Hyperlink Key
2096 // Is Hyperlink Key
2097 hyperlinksEnabled =
2097 hyperlinksEnabled =
2098 options.hyperlinks.enable &&
2098 options.hyperlinks.enable &&
2099 hyperlinkKeys &&
2099 hyperlinkKeys &&
2100 hyperlinkKeys.length > 0;
2100 hyperlinkKeys.length > 0;
2101
2101
2102 for (key in data) {
2102 for (key in data) {
2103 isEmpty = false;
2103 isEmpty = false;
2104
2104
2105 value = data[key];
2105 value = data[key];
2106
2106
2107 valNode = _format(value, options, key);
2107 valNode = _format(value, options, key);
2108 keyNode = sn("th", OBJ_KEY_CLASS_NAME, key);
2108 keyNode = sn("th", OBJ_KEY_CLASS_NAME, key);
2109
2109
2110 if( hyperlinksEnabled &&
2110 if( hyperlinksEnabled &&
2111 typeof(value) === 'string' &&
2111 typeof(value) === 'string' &&
2112 indexOf.call(hyperlinkKeys, key) >= 0){
2112 indexOf.call(hyperlinkKeys, key) >= 0){
2113
2113
2114 valNode = scn("td", OBJ_VAL_CLASS_NAME, linkNode(valNode, value, aTarget));
2114 valNode = scn("td", OBJ_VAL_CLASS_NAME, linkNode(valNode, value, aTarget));
2115 } else {
2115 } else {
2116 valNode = scn("td", OBJ_VAL_CLASS_NAME, valNode);
2116 valNode = scn("td", OBJ_VAL_CLASS_NAME, valNode);
2117 }
2117 }
2118
2118
2119 tr = document.createElement("tr");
2119 tr = document.createElement("tr");
2120 tr.appendChild(keyNode);
2120 tr.appendChild(keyNode);
2121 tr.appendChild(valNode);
2121 tr.appendChild(valNode);
2122
2122
2123 childs.push(tr);
2123 childs.push(tr);
2124 }
2124 }
2125
2125
2126 if (isSpecial) {
2126 if (isSpecial) {
2127 result = sn('span', STRING_CLASS_NAME, data.toString())
2127 result = sn('span', STRING_CLASS_NAME, data.toString())
2128 } else if (isEmpty) {
2128 } else if (isEmpty) {
2129 result = sn("span", OBJ_EMPTY_CLASS_NAME, "(Empty Object)");
2129 result = sn("span", OBJ_EMPTY_CLASS_NAME, "(Empty Object)");
2130 } else {
2130 } else {
2131 result = scn("table", OBJECT_CLASS_NAME, scn("tbody", '', childs));
2131 result = scn("table", OBJECT_CLASS_NAME, scn("tbody", '', childs));
2132 }
2132 }
2133 } else if (type === FUNCTION) {
2133 } else if (type === FUNCTION) {
2134 result = sn("span", FUNCTION_CLASS_NAME, data);
2134 result = sn("span", FUNCTION_CLASS_NAME, data);
2135 } else if (type === ARRAY) {
2135 } else if (type === ARRAY) {
2136 if (data.length > 0) {
2136 if (data.length > 0) {
2137 childs = [];
2137 childs = [];
2138 var showArrayIndices = options.showArrayIndex;
2138 var showArrayIndices = options.showArrayIndex;
2139
2139
2140 aTarget = options.hyperlinks.target;
2140 aTarget = options.hyperlinks.target;
2141 hyperlinkKeys = options.hyperlinks.keys;
2141 hyperlinkKeys = options.hyperlinks.keys;
2142
2142
2143 // Hyperlink of arrays?
2143 // Hyperlink of arrays?
2144 hyperlinksEnabled = parentKey && options.hyperlinks.enable &&
2144 hyperlinksEnabled = parentKey && options.hyperlinks.enable &&
2145 hyperlinkKeys &&
2145 hyperlinkKeys &&
2146 hyperlinkKeys.length > 0 &&
2146 hyperlinkKeys.length > 0 &&
2147 indexOf.call(hyperlinkKeys, parentKey) >= 0;
2147 indexOf.call(hyperlinkKeys, parentKey) >= 0;
2148
2148
2149 for (key = 0, len = data.length; key < len; key += 1) {
2149 for (key = 0, len = data.length; key < len; key += 1) {
2150
2150
2151 keyNode = sn("th", ARRAY_KEY_CLASS_NAME, key);
2151 keyNode = sn("th", ARRAY_KEY_CLASS_NAME, key);
2152 value = data[key];
2152 value = data[key];
2153
2153
2154 if (hyperlinksEnabled && typeof(value) === "string") {
2154 if (hyperlinksEnabled && typeof(value) === "string") {
2155 valNode = _format(value, options, key);
2155 valNode = _format(value, options, key);
2156 valNode = scn("td", ARRAY_VAL_CLASS_NAME,
2156 valNode = scn("td", ARRAY_VAL_CLASS_NAME,
2157 linkNode(valNode, value, aTarget));
2157 linkNode(valNode, value, aTarget));
2158 } else {
2158 } else {
2159 valNode = scn("td", ARRAY_VAL_CLASS_NAME,
2159 valNode = scn("td", ARRAY_VAL_CLASS_NAME,
2160 _format(value, options, key));
2160 _format(value, options, key));
2161 }
2161 }
2162
2162
2163 tr = document.createElement("tr");
2163 tr = document.createElement("tr");
2164
2164
2165 if (showArrayIndices) {
2165 if (showArrayIndices) {
2166 tr.appendChild(keyNode);
2166 tr.appendChild(keyNode);
2167 }
2167 }
2168 tr.appendChild(valNode);
2168 tr.appendChild(valNode);
2169
2169
2170 childs.push(tr);
2170 childs.push(tr);
2171 }
2171 }
2172
2172
2173 result = scn("table", ARRAY_CLASS_NAME, scn("tbody", '', childs));
2173 result = scn("table", ARRAY_CLASS_NAME, scn("tbody", '', childs));
2174 } else {
2174 } else {
2175 result = sn("span", ARRAY_EMPTY_CLASS_NAME, "(Empty List)");
2175 result = sn("span", ARRAY_EMPTY_CLASS_NAME, "(Empty List)");
2176 }
2176 }
2177 } else {
2177 } else {
2178 result = sn("span", UNKNOWN_CLASS_NAME, data);
2178 result = sn("span", UNKNOWN_CLASS_NAME, data);
2179 }
2179 }
2180
2180
2181 return result;
2181 return result;
2182 }
2182 }
2183
2183
2184 function format(data, options) {
2184 function format(data, options) {
2185 options = validateOptions(options || {});
2185 options = validateOptions(options || {});
2186
2186
2187 var result;
2187 var result;
2188
2188
2189 result = _format(data, options);
2189 result = _format(data, options);
2190 result.className = result.className + " " + prefixer("root");
2190 result.className = result.className + " " + prefixer("root");
2191
2191
2192 return result;
2192 return result;
2193 }
2193 }
2194
2194
2195 function validateOptions(options){
2195 function validateOptions(options){
2196 options = validateArrayIndexOption(options);
2196 options = validateArrayIndexOption(options);
2197 options = validateHyperlinkOptions(options);
2197 options = validateHyperlinkOptions(options);
2198 options = validateBoolOptions(options);
2198 options = validateBoolOptions(options);
2199
2199
2200 // Add any more option validators here
2200 // Add any more option validators here
2201
2201
2202 return options;
2202 return options;
2203 }
2203 }
2204
2204
2205
2205
2206 function validateArrayIndexOption(options) {
2206 function validateArrayIndexOption(options) {
2207 if(options.showArrayIndex === undefined){
2207 if(options.showArrayIndex === undefined){
2208 options.showArrayIndex = true;
2208 options.showArrayIndex = true;
2209 } else {
2209 } else {
2210 // Force to boolean just in case
2210 // Force to boolean just in case
2211 options.showArrayIndex = options.showArrayIndex ? true: false;
2211 options.showArrayIndex = options.showArrayIndex ? true: false;
2212 }
2212 }
2213
2213
2214 return options;
2214 return options;
2215 }
2215 }
2216
2216
2217 function validateHyperlinkOptions(options){
2217 function validateHyperlinkOptions(options){
2218 var hyperlinks = {
2218 var hyperlinks = {
2219 enable : false,
2219 enable : false,
2220 keys : null,
2220 keys : null,
2221 target : ''
2221 target : ''
2222 };
2222 };
2223
2223
2224 if(options.hyperlinks && options.hyperlinks.enable) {
2224 if(options.hyperlinks && options.hyperlinks.enable) {
2225 hyperlinks.enable = true;
2225 hyperlinks.enable = true;
2226
2226
2227 hyperlinks.keys = isArray(options.hyperlinks.keys) ? options.hyperlinks.keys : [];
2227 hyperlinks.keys = isArray(options.hyperlinks.keys) ? options.hyperlinks.keys : [];
2228
2228
2229 if(options.hyperlinks.target) {
2229 if(options.hyperlinks.target) {
2230 hyperlinks.target = '' + options.hyperlinks.target;
2230 hyperlinks.target = '' + options.hyperlinks.target;
2231 } else {
2231 } else {
2232 hyperlinks.target = '_blank';
2232 hyperlinks.target = '_blank';
2233 }
2233 }
2234 }
2234 }
2235
2235
2236 options.hyperlinks = hyperlinks;
2236 options.hyperlinks = hyperlinks;
2237
2237
2238 return options;
2238 return options;
2239 }
2239 }
2240
2240
2241 function validateBoolOptions(options){
2241 function validateBoolOptions(options){
2242 if(!options.bool){
2242 if(!options.bool){
2243 options.bool = {
2243 options.bool = {
2244 text: {
2244 text: {
2245 true : "true",
2245 true : "true",
2246 false : "false"
2246 false : "false"
2247 },
2247 },
2248 img : {
2248 img : {
2249 true: "",
2249 true: "",
2250 false: ""
2250 false: ""
2251 },
2251 },
2252 showImage : false,
2252 showImage : false,
2253 showText : true
2253 showText : true
2254 };
2254 };
2255 } else {
2255 } else {
2256 var boolOptions = options.bool;
2256 var boolOptions = options.bool;
2257
2257
2258 // Show text if no option
2258 // Show text if no option
2259 if(!boolOptions.showText && !boolOptions.showImage){
2259 if(!boolOptions.showText && !boolOptions.showImage){
2260 boolOptions.showImage = false;
2260 boolOptions.showImage = false;
2261 boolOptions.showText = true;
2261 boolOptions.showText = true;
2262 }
2262 }
2263
2263
2264 if(boolOptions.showText){
2264 if(boolOptions.showText){
2265 if(!boolOptions.text){
2265 if(!boolOptions.text){
2266 boolOptions.text = {
2266 boolOptions.text = {
2267 true : "true",
2267 true : "true",
2268 false : "false"
2268 false : "false"
2269 };
2269 };
2270 } else {
2270 } else {
2271 var t = boolOptions.text.true, f = boolOptions.text.false;
2271 var t = boolOptions.text.true, f = boolOptions.text.false;
2272
2272
2273 if(getType(t) != STRING || t === ''){
2273 if(getType(t) != STRING || t === ''){
2274 boolOptions.text.true = 'true';
2274 boolOptions.text.true = 'true';
2275 }
2275 }
2276
2276
2277 if(getType(f) != STRING || f === ''){
2277 if(getType(f) != STRING || f === ''){
2278 boolOptions.text.false = 'false';
2278 boolOptions.text.false = 'false';
2279 }
2279 }
2280 }
2280 }
2281 }
2281 }
2282
2282
2283 if(boolOptions.showImage){
2283 if(boolOptions.showImage){
2284 if(!boolOptions.img.true && !boolOptions.img.false){
2284 if(!boolOptions.img.true && !boolOptions.img.false){
2285 boolOptions.showImage = false;
2285 boolOptions.showImage = false;
2286 }
2286 }
2287 }
2287 }
2288 }
2288 }
2289
2289
2290 return options;
2290 return options;
2291 }
2291 }
2292
2292
2293 return {
2293 return {
2294 format: format
2294 format: format
2295 };
2295 };
2296 }));
2296 }));
2297
2297
2298 ;//! moment.js
2298 ;//! moment.js
2299 //! version : 2.8.4
2299 //! version : 2.8.4
2300 //! authors : Tim Wood, Iskren Chernev, Moment.js contributors
2300 //! authors : Tim Wood, Iskren Chernev, Moment.js contributors
2301 //! license : MIT
2301 //! license : MIT
2302 //! momentjs.com
2302 //! momentjs.com
2303 (function(a){function b(a,b,c){switch(arguments.length){case 2:return null!=a?a:b;case 3:return null!=a?a:null!=b?b:c;default:throw new Error("Implement me")}}function c(a,b){return zb.call(a,b)}function d(){return{empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1}}function e(a){tb.suppressDeprecationWarnings===!1&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+a)}function f(a,b){var c=!0;return m(function(){return c&&(e(a),c=!1),b.apply(this,arguments)},b)}function g(a,b){qc[a]||(e(b),qc[a]=!0)}function h(a,b){return function(c){return p(a.call(this,c),b)}}function i(a,b){return function(c){return this.localeData().ordinal(a.call(this,c),b)}}function j(){}function k(a,b){b!==!1&&F(a),n(this,a),this._d=new Date(+a._d)}function l(a){var b=y(a),c=b.year||0,d=b.quarter||0,e=b.month||0,f=b.week||0,g=b.day||0,h=b.hour||0,i=b.minute||0,j=b.second||0,k=b.millisecond||0;this._milliseconds=+k+1e3*j+6e4*i+36e5*h,this._days=+g+7*f,this._months=+e+3*d+12*c,this._data={},this._locale=tb.localeData(),this._bubble()}function m(a,b){for(var d in b)c(b,d)&&(a[d]=b[d]);return c(b,"toString")&&(a.toString=b.toString),c(b,"valueOf")&&(a.valueOf=b.valueOf),a}function n(a,b){var c,d,e;if("undefined"!=typeof b._isAMomentObject&&(a._isAMomentObject=b._isAMomentObject),"undefined"!=typeof b._i&&(a._i=b._i),"undefined"!=typeof b._f&&(a._f=b._f),"undefined"!=typeof b._l&&(a._l=b._l),"undefined"!=typeof b._strict&&(a._strict=b._strict),"undefined"!=typeof b._tzm&&(a._tzm=b._tzm),"undefined"!=typeof b._isUTC&&(a._isUTC=b._isUTC),"undefined"!=typeof b._offset&&(a._offset=b._offset),"undefined"!=typeof b._pf&&(a._pf=b._pf),"undefined"!=typeof b._locale&&(a._locale=b._locale),Ib.length>0)for(c in Ib)d=Ib[c],e=b[d],"undefined"!=typeof e&&(a[d]=e);return a}function o(a){return 0>a?Math.ceil(a):Math.floor(a)}function p(a,b,c){for(var d=""+Math.abs(a),e=a>=0;d.length<b;)d="0"+d;return(e?c?"+":"":"-")+d}function q(a,b){var c={milliseconds:0,months:0};return c.months=b.month()-a.month()+12*(b.year()-a.year()),a.clone().add(c.months,"M").isAfter(b)&&--c.months,c.milliseconds=+b-+a.clone().add(c.months,"M"),c}function r(a,b){var c;return b=K(b,a),a.isBefore(b)?c=q(a,b):(c=q(b,a),c.milliseconds=-c.milliseconds,c.months=-c.months),c}function s(a,b){return function(c,d){var e,f;return null===d||isNaN(+d)||(g(b,"moment()."+b+"(period, number) is deprecated. Please use moment()."+b+"(number, period)."),f=c,c=d,d=f),c="string"==typeof c?+c:c,e=tb.duration(c,d),t(this,e,a),this}}function t(a,b,c,d){var e=b._milliseconds,f=b._days,g=b._months;d=null==d?!0:d,e&&a._d.setTime(+a._d+e*c),f&&nb(a,"Date",mb(a,"Date")+f*c),g&&lb(a,mb(a,"Month")+g*c),d&&tb.updateOffset(a,f||g)}function u(a){return"[object Array]"===Object.prototype.toString.call(a)}function v(a){return"[object Date]"===Object.prototype.toString.call(a)||a instanceof Date}function w(a,b,c){var d,e=Math.min(a.length,b.length),f=Math.abs(a.length-b.length),g=0;for(d=0;e>d;d++)(c&&a[d]!==b[d]||!c&&A(a[d])!==A(b[d]))&&g++;return g+f}function x(a){if(a){var b=a.toLowerCase().replace(/(.)s$/,"$1");a=jc[a]||kc[b]||b}return a}function y(a){var b,d,e={};for(d in a)c(a,d)&&(b=x(d),b&&(e[b]=a[d]));return e}function z(b){var c,d;if(0===b.indexOf("week"))c=7,d="day";else{if(0!==b.indexOf("month"))return;c=12,d="month"}tb[b]=function(e,f){var g,h,i=tb._locale[b],j=[];if("number"==typeof e&&(f=e,e=a),h=function(a){var b=tb().utc().set(d,a);return i.call(tb._locale,b,e||"")},null!=f)return h(f);for(g=0;c>g;g++)j.push(h(g));return j}}function A(a){var b=+a,c=0;return 0!==b&&isFinite(b)&&(c=b>=0?Math.floor(b):Math.ceil(b)),c}function B(a,b){return new Date(Date.UTC(a,b+1,0)).getUTCDate()}function C(a,b,c){return hb(tb([a,11,31+b-c]),b,c).week}function D(a){return E(a)?366:365}function E(a){return a%4===0&&a%100!==0||a%400===0}function F(a){var b;a._a&&-2===a._pf.overflow&&(b=a._a[Bb]<0||a._a[Bb]>11?Bb:a._a[Cb]<1||a._a[Cb]>B(a._a[Ab],a._a[Bb])?Cb:a._a[Db]<0||a._a[Db]>24||24===a._a[Db]&&(0!==a._a[Eb]||0!==a._a[Fb]||0!==a._a[Gb])?Db:a._a[Eb]<0||a._a[Eb]>59?Eb:a._a[Fb]<0||a._a[Fb]>59?Fb:a._a[Gb]<0||a._a[Gb]>999?Gb:-1,a._pf._overflowDayOfYear&&(Ab>b||b>Cb)&&(b=Cb),a._pf.overflow=b)}function G(b){return null==b._isValid&&(b._isValid=!isNaN(b._d.getTime())&&b._pf.overflow<0&&!b._pf.empty&&!b._pf.invalidMonth&&!b._pf.nullInput&&!b._pf.invalidFormat&&!b._pf.userInvalidated,b._strict&&(b._isValid=b._isValid&&0===b._pf.charsLeftOver&&0===b._pf.unusedTokens.length&&b._pf.bigHour===a)),b._isValid}function H(a){return a?a.toLowerCase().replace("_","-"):a}function I(a){for(var b,c,d,e,f=0;f<a.length;){for(e=H(a[f]).split("-"),b=e.length,c=H(a[f+1]),c=c?c.split("-"):null;b>0;){if(d=J(e.slice(0,b).join("-")))return d;if(c&&c.length>=b&&w(e,c,!0)>=b-1)break;b--}f++}return null}function J(a){var b=null;if(!Hb[a]&&Jb)try{b=tb.locale(),require("./locale/"+a),tb.locale(b)}catch(c){}return Hb[a]}function K(a,b){var c,d;return b._isUTC?(c=b.clone(),d=(tb.isMoment(a)||v(a)?+a:+tb(a))-+c,c._d.setTime(+c._d+d),tb.updateOffset(c,!1),c):tb(a).local()}function L(a){return a.match(/\[[\s\S]/)?a.replace(/^\[|\]$/g,""):a.replace(/\\/g,"")}function M(a){var b,c,d=a.match(Nb);for(b=0,c=d.length;c>b;b++)d[b]=pc[d[b]]?pc[d[b]]:L(d[b]);return function(e){var f="";for(b=0;c>b;b++)f+=d[b]instanceof Function?d[b].call(e,a):d[b];return f}}function N(a,b){return a.isValid()?(b=O(b,a.localeData()),lc[b]||(lc[b]=M(b)),lc[b](a)):a.localeData().invalidDate()}function O(a,b){function c(a){return b.longDateFormat(a)||a}var d=5;for(Ob.lastIndex=0;d>=0&&Ob.test(a);)a=a.replace(Ob,c),Ob.lastIndex=0,d-=1;return a}function P(a,b){var c,d=b._strict;switch(a){case"Q":return Zb;case"DDDD":return _b;case"YYYY":case"GGGG":case"gggg":return d?ac:Rb;case"Y":case"G":case"g":return cc;case"YYYYYY":case"YYYYY":case"GGGGG":case"ggggg":return d?bc:Sb;case"S":if(d)return Zb;case"SS":if(d)return $b;case"SSS":if(d)return _b;case"DDD":return Qb;case"MMM":case"MMMM":case"dd":case"ddd":case"dddd":return Ub;case"a":case"A":return b._locale._meridiemParse;case"x":return Xb;case"X":return Yb;case"Z":case"ZZ":return Vb;case"T":return Wb;case"SSSS":return Tb;case"MM":case"DD":case"YY":case"GG":case"gg":case"HH":case"hh":case"mm":case"ss":case"ww":case"WW":return d?$b:Pb;case"M":case"D":case"d":case"H":case"h":case"m":case"s":case"w":case"W":case"e":case"E":return Pb;case"Do":return d?b._locale._ordinalParse:b._locale._ordinalParseLenient;default:return c=new RegExp(Y(X(a.replace("\\","")),"i"))}}function Q(a){a=a||"";var b=a.match(Vb)||[],c=b[b.length-1]||[],d=(c+"").match(hc)||["-",0,0],e=+(60*d[1])+A(d[2]);return"+"===d[0]?-e:e}function R(a,b,c){var d,e=c._a;switch(a){case"Q":null!=b&&(e[Bb]=3*(A(b)-1));break;case"M":case"MM":null!=b&&(e[Bb]=A(b)-1);break;case"MMM":case"MMMM":d=c._locale.monthsParse(b,a,c._strict),null!=d?e[Bb]=d:c._pf.invalidMonth=b;break;case"D":case"DD":null!=b&&(e[Cb]=A(b));break;case"Do":null!=b&&(e[Cb]=A(parseInt(b.match(/\d{1,2}/)[0],10)));break;case"DDD":case"DDDD":null!=b&&(c._dayOfYear=A(b));break;case"YY":e[Ab]=tb.parseTwoDigitYear(b);break;case"YYYY":case"YYYYY":case"YYYYYY":e[Ab]=A(b);break;case"a":case"A":c._isPm=c._locale.isPM(b);break;case"h":case"hh":c._pf.bigHour=!0;case"H":case"HH":e[Db]=A(b);break;case"m":case"mm":e[Eb]=A(b);break;case"s":case"ss":e[Fb]=A(b);break;case"S":case"SS":case"SSS":case"SSSS":e[Gb]=A(1e3*("0."+b));break;case"x":c._d=new Date(A(b));break;case"X":c._d=new Date(1e3*parseFloat(b));break;case"Z":case"ZZ":c._useUTC=!0,c._tzm=Q(b);break;case"dd":case"ddd":case"dddd":d=c._locale.weekdaysParse(b),null!=d?(c._w=c._w||{},c._w.d=d):c._pf.invalidWeekday=b;break;case"w":case"ww":case"W":case"WW":case"d":case"e":case"E":a=a.substr(0,1);case"gggg":case"GGGG":case"GGGGG":a=a.substr(0,2),b&&(c._w=c._w||{},c._w[a]=A(b));break;case"gg":case"GG":c._w=c._w||{},c._w[a]=tb.parseTwoDigitYear(b)}}function S(a){var c,d,e,f,g,h,i;c=a._w,null!=c.GG||null!=c.W||null!=c.E?(g=1,h=4,d=b(c.GG,a._a[Ab],hb(tb(),1,4).year),e=b(c.W,1),f=b(c.E,1)):(g=a._locale._week.dow,h=a._locale._week.doy,d=b(c.gg,a._a[Ab],hb(tb(),g,h).year),e=b(c.w,1),null!=c.d?(f=c.d,g>f&&++e):f=null!=c.e?c.e+g:g),i=ib(d,e,f,h,g),a._a[Ab]=i.year,a._dayOfYear=i.dayOfYear}function T(a){var c,d,e,f,g=[];if(!a._d){for(e=V(a),a._w&&null==a._a[Cb]&&null==a._a[Bb]&&S(a),a._dayOfYear&&(f=b(a._a[Ab],e[Ab]),a._dayOfYear>D(f)&&(a._pf._overflowDayOfYear=!0),d=db(f,0,a._dayOfYear),a._a[Bb]=d.getUTCMonth(),a._a[Cb]=d.getUTCDate()),c=0;3>c&&null==a._a[c];++c)a._a[c]=g[c]=e[c];for(;7>c;c++)a._a[c]=g[c]=null==a._a[c]?2===c?1:0:a._a[c];24===a._a[Db]&&0===a._a[Eb]&&0===a._a[Fb]&&0===a._a[Gb]&&(a._nextDay=!0,a._a[Db]=0),a._d=(a._useUTC?db:cb).apply(null,g),null!=a._tzm&&a._d.setUTCMinutes(a._d.getUTCMinutes()+a._tzm),a._nextDay&&(a._a[Db]=24)}}function U(a){var b;a._d||(b=y(a._i),a._a=[b.year,b.month,b.day||b.date,b.hour,b.minute,b.second,b.millisecond],T(a))}function V(a){var b=new Date;return a._useUTC?[b.getUTCFullYear(),b.getUTCMonth(),b.getUTCDate()]:[b.getFullYear(),b.getMonth(),b.getDate()]}function W(b){if(b._f===tb.ISO_8601)return void $(b);b._a=[],b._pf.empty=!0;var c,d,e,f,g,h=""+b._i,i=h.length,j=0;for(e=O(b._f,b._locale).match(Nb)||[],c=0;c<e.length;c++)f=e[c],d=(h.match(P(f,b))||[])[0],d&&(g=h.substr(0,h.indexOf(d)),g.length>0&&b._pf.unusedInput.push(g),h=h.slice(h.indexOf(d)+d.length),j+=d.length),pc[f]?(d?b._pf.empty=!1:b._pf.unusedTokens.push(f),R(f,d,b)):b._strict&&!d&&b._pf.unusedTokens.push(f);b._pf.charsLeftOver=i-j,h.length>0&&b._pf.unusedInput.push(h),b._pf.bigHour===!0&&b._a[Db]<=12&&(b._pf.bigHour=a),b._isPm&&b._a[Db]<12&&(b._a[Db]+=12),b._isPm===!1&&12===b._a[Db]&&(b._a[Db]=0),T(b),F(b)}function X(a){return a.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(a,b,c,d,e){return b||c||d||e})}function Y(a){return a.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function Z(a){var b,c,e,f,g;if(0===a._f.length)return a._pf.invalidFormat=!0,void(a._d=new Date(0/0));for(f=0;f<a._f.length;f++)g=0,b=n({},a),null!=a._useUTC&&(b._useUTC=a._useUTC),b._pf=d(),b._f=a._f[f],W(b),G(b)&&(g+=b._pf.charsLeftOver,g+=10*b._pf.unusedTokens.length,b._pf.score=g,(null==e||e>g)&&(e=g,c=b));m(a,c||b)}function $(a){var b,c,d=a._i,e=dc.exec(d);if(e){for(a._pf.iso=!0,b=0,c=fc.length;c>b;b++)if(fc[b][1].exec(d)){a._f=fc[b][0]+(e[6]||" ");break}for(b=0,c=gc.length;c>b;b++)if(gc[b][1].exec(d)){a._f+=gc[b][0];break}d.match(Vb)&&(a._f+="Z"),W(a)}else a._isValid=!1}function _(a){$(a),a._isValid===!1&&(delete a._isValid,tb.createFromInputFallback(a))}function ab(a,b){var c,d=[];for(c=0;c<a.length;++c)d.push(b(a[c],c));return d}function bb(b){var c,d=b._i;d===a?b._d=new Date:v(d)?b._d=new Date(+d):null!==(c=Kb.exec(d))?b._d=new Date(+c[1]):"string"==typeof d?_(b):u(d)?(b._a=ab(d.slice(0),function(a){return parseInt(a,10)}),T(b)):"object"==typeof d?U(b):"number"==typeof d?b._d=new Date(d):tb.createFromInputFallback(b)}function cb(a,b,c,d,e,f,g){var h=new Date(a,b,c,d,e,f,g);return 1970>a&&h.setFullYear(a),h}function db(a){var b=new Date(Date.UTC.apply(null,arguments));return 1970>a&&b.setUTCFullYear(a),b}function eb(a,b){if("string"==typeof a)if(isNaN(a)){if(a=b.weekdaysParse(a),"number"!=typeof a)return null}else a=parseInt(a,10);return a}function fb(a,b,c,d,e){return e.relativeTime(b||1,!!c,a,d)}function gb(a,b,c){var d=tb.duration(a).abs(),e=yb(d.as("s")),f=yb(d.as("m")),g=yb(d.as("h")),h=yb(d.as("d")),i=yb(d.as("M")),j=yb(d.as("y")),k=e<mc.s&&["s",e]||1===f&&["m"]||f<mc.m&&["mm",f]||1===g&&["h"]||g<mc.h&&["hh",g]||1===h&&["d"]||h<mc.d&&["dd",h]||1===i&&["M"]||i<mc.M&&["MM",i]||1===j&&["y"]||["yy",j];return k[2]=b,k[3]=+a>0,k[4]=c,fb.apply({},k)}function hb(a,b,c){var d,e=c-b,f=c-a.day();return f>e&&(f-=7),e-7>f&&(f+=7),d=tb(a).add(f,"d"),{week:Math.ceil(d.dayOfYear()/7),year:d.year()}}function ib(a,b,c,d,e){var f,g,h=db(a,0,1).getUTCDay();return h=0===h?7:h,c=null!=c?c:e,f=e-h+(h>d?7:0)-(e>h?7:0),g=7*(b-1)+(c-e)+f+1,{year:g>0?a:a-1,dayOfYear:g>0?g:D(a-1)+g}}function jb(b){var c,d=b._i,e=b._f;return b._locale=b._locale||tb.localeData(b._l),null===d||e===a&&""===d?tb.invalid({nullInput:!0}):("string"==typeof d&&(b._i=d=b._locale.preparse(d)),tb.isMoment(d)?new k(d,!0):(e?u(e)?Z(b):W(b):bb(b),c=new k(b),c._nextDay&&(c.add(1,"d"),c._nextDay=a),c))}function kb(a,b){var c,d;if(1===b.length&&u(b[0])&&(b=b[0]),!b.length)return tb();for(c=b[0],d=1;d<b.length;++d)b[d][a](c)&&(c=b[d]);return c}function lb(a,b){var c;return"string"==typeof b&&(b=a.localeData().monthsParse(b),"number"!=typeof b)?a:(c=Math.min(a.date(),B(a.year(),b)),a._d["set"+(a._isUTC?"UTC":"")+"Month"](b,c),a)}function mb(a,b){return a._d["get"+(a._isUTC?"UTC":"")+b]()}function nb(a,b,c){return"Month"===b?lb(a,c):a._d["set"+(a._isUTC?"UTC":"")+b](c)}function ob(a,b){return function(c){return null!=c?(nb(this,a,c),tb.updateOffset(this,b),this):mb(this,a)}}function pb(a){return 400*a/146097}function qb(a){return 146097*a/400}function rb(a){tb.duration.fn[a]=function(){return this._data[a]}}function sb(a){"undefined"==typeof ender&&(ub=xb.moment,xb.moment=a?f("Accessing Moment through the global scope is deprecated, and will be removed in an upcoming release.",tb):tb)}for(var tb,ub,vb,wb="2.8.4",xb="undefined"!=typeof global?global:this,yb=Math.round,zb=Object.prototype.hasOwnProperty,Ab=0,Bb=1,Cb=2,Db=3,Eb=4,Fb=5,Gb=6,Hb={},Ib=[],Jb="undefined"!=typeof module&&module&&module.exports,Kb=/^\/?Date\((\-?\d+)/i,Lb=/(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/,Mb=/^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/,Nb=/(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,4}|x|X|zz?|ZZ?|.)/g,Ob=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,Pb=/\d\d?/,Qb=/\d{1,3}/,Rb=/\d{1,4}/,Sb=/[+\-]?\d{1,6}/,Tb=/\d+/,Ub=/[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i,Vb=/Z|[\+\-]\d\d:?\d\d/gi,Wb=/T/i,Xb=/[\+\-]?\d+/,Yb=/[\+\-]?\d+(\.\d{1,3})?/,Zb=/\d/,$b=/\d\d/,_b=/\d{3}/,ac=/\d{4}/,bc=/[+-]?\d{6}/,cc=/[+-]?\d+/,dc=/^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,ec="YYYY-MM-DDTHH:mm:ssZ",fc=[["YYYYYY-MM-DD",/[+-]\d{6}-\d{2}-\d{2}/],["YYYY-MM-DD",/\d{4}-\d{2}-\d{2}/],["GGGG-[W]WW-E",/\d{4}-W\d{2}-\d/],["GGGG-[W]WW",/\d{4}-W\d{2}/],["YYYY-DDD",/\d{4}-\d{3}/]],gc=[["HH:mm:ss.SSSS",/(T| )\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss",/(T| )\d\d:\d\d:\d\d/],["HH:mm",/(T| )\d\d:\d\d/],["HH",/(T| )\d\d/]],hc=/([\+\-]|\d\d)/gi,ic=("Date|Hours|Minutes|Seconds|Milliseconds".split("|"),{Milliseconds:1,Seconds:1e3,Minutes:6e4,Hours:36e5,Days:864e5,Months:2592e6,Years:31536e6}),jc={ms:"millisecond",s:"second",m:"minute",h:"hour",d:"day",D:"date",w:"week",W:"isoWeek",M:"month",Q:"quarter",y:"year",DDD:"dayOfYear",e:"weekday",E:"isoWeekday",gg:"weekYear",GG:"isoWeekYear"},kc={dayofyear:"dayOfYear",isoweekday:"isoWeekday",isoweek:"isoWeek",weekyear:"weekYear",isoweekyear:"isoWeekYear"},lc={},mc={s:45,m:45,h:22,d:26,M:11},nc="DDD w W M D d".split(" "),oc="M D H h m s w W".split(" "),pc={M:function(){return this.month()+1},MMM:function(a){return this.localeData().monthsShort(this,a)},MMMM:function(a){return this.localeData().months(this,a)},D:function(){return this.date()},DDD:function(){return this.dayOfYear()},d:function(){return this.day()},dd:function(a){return this.localeData().weekdaysMin(this,a)},ddd:function(a){return this.localeData().weekdaysShort(this,a)},dddd:function(a){return this.localeData().weekdays(this,a)},w:function(){return this.week()},W:function(){return this.isoWeek()},YY:function(){return p(this.year()%100,2)},YYYY:function(){return p(this.year(),4)},YYYYY:function(){return p(this.year(),5)},YYYYYY:function(){var a=this.year(),b=a>=0?"+":"-";return b+p(Math.abs(a),6)},gg:function(){return p(this.weekYear()%100,2)},gggg:function(){return p(this.weekYear(),4)},ggggg:function(){return p(this.weekYear(),5)},GG:function(){return p(this.isoWeekYear()%100,2)},GGGG:function(){return p(this.isoWeekYear(),4)},GGGGG:function(){return p(this.isoWeekYear(),5)},e:function(){return this.weekday()},E:function(){return this.isoWeekday()},a:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!0)},A:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!1)},H:function(){return this.hours()},h:function(){return this.hours()%12||12},m:function(){return this.minutes()},s:function(){return this.seconds()},S:function(){return A(this.milliseconds()/100)},SS:function(){return p(A(this.milliseconds()/10),2)},SSS:function(){return p(this.milliseconds(),3)},SSSS:function(){return p(this.milliseconds(),3)},Z:function(){var a=-this.zone(),b="+";return 0>a&&(a=-a,b="-"),b+p(A(a/60),2)+":"+p(A(a)%60,2)},ZZ:function(){var a=-this.zone(),b="+";return 0>a&&(a=-a,b="-"),b+p(A(a/60),2)+p(A(a)%60,2)},z:function(){return this.zoneAbbr()},zz:function(){return this.zoneName()},x:function(){return this.valueOf()},X:function(){return this.unix()},Q:function(){return this.quarter()}},qc={},rc=["months","monthsShort","weekdays","weekdaysShort","weekdaysMin"];nc.length;)vb=nc.pop(),pc[vb+"o"]=i(pc[vb],vb);for(;oc.length;)vb=oc.pop(),pc[vb+vb]=h(pc[vb],2);pc.DDDD=h(pc.DDD,3),m(j.prototype,{set:function(a){var b,c;for(c in a)b=a[c],"function"==typeof b?this[c]=b:this["_"+c]=b;this._ordinalParseLenient=new RegExp(this._ordinalParse.source+"|"+/\d{1,2}/.source)},_months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),months:function(a){return this._months[a.month()]},_monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),monthsShort:function(a){return this._monthsShort[a.month()]},monthsParse:function(a,b,c){var d,e,f;for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),d=0;12>d;d++){if(e=tb.utc([2e3,d]),c&&!this._longMonthsParse[d]&&(this._longMonthsParse[d]=new RegExp("^"+this.months(e,"").replace(".","")+"$","i"),this._shortMonthsParse[d]=new RegExp("^"+this.monthsShort(e,"").replace(".","")+"$","i")),c||this._monthsParse[d]||(f="^"+this.months(e,"")+"|^"+this.monthsShort(e,""),this._monthsParse[d]=new RegExp(f.replace(".",""),"i")),c&&"MMMM"===b&&this._longMonthsParse[d].test(a))return d;if(c&&"MMM"===b&&this._shortMonthsParse[d].test(a))return d;if(!c&&this._monthsParse[d].test(a))return d}},_weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdays:function(a){return this._weekdays[a.day()]},_weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysShort:function(a){return this._weekdaysShort[a.day()]},_weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),weekdaysMin:function(a){return this._weekdaysMin[a.day()]},weekdaysParse:function(a){var b,c,d;for(this._weekdaysParse||(this._weekdaysParse=[]),b=0;7>b;b++)if(this._weekdaysParse[b]||(c=tb([2e3,1]).day(b),d="^"+this.weekdays(c,"")+"|^"+this.weekdaysShort(c,"")+"|^"+this.weekdaysMin(c,""),this._weekdaysParse[b]=new RegExp(d.replace(".",""),"i")),this._weekdaysParse[b].test(a))return b},_longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY LT",LLLL:"dddd, MMMM D, YYYY LT"},longDateFormat:function(a){var b=this._longDateFormat[a];return!b&&this._longDateFormat[a.toUpperCase()]&&(b=this._longDateFormat[a.toUpperCase()].replace(/MMMM|MM|DD|dddd/g,function(a){return a.slice(1)}),this._longDateFormat[a]=b),b},isPM:function(a){return"p"===(a+"").toLowerCase().charAt(0)},_meridiemParse:/[ap]\.?m?\.?/i,meridiem:function(a,b,c){return a>11?c?"pm":"PM":c?"am":"AM"},_calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},calendar:function(a,b,c){var d=this._calendar[a];return"function"==typeof d?d.apply(b,[c]):d},_relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},relativeTime:function(a,b,c,d){var e=this._relativeTime[c];return"function"==typeof e?e(a,b,c,d):e.replace(/%d/i,a)},pastFuture:function(a,b){var c=this._relativeTime[a>0?"future":"past"];return"function"==typeof c?c(b):c.replace(/%s/i,b)},ordinal:function(a){return this._ordinal.replace("%d",a)},_ordinal:"%d",_ordinalParse:/\d{1,2}/,preparse:function(a){return a},postformat:function(a){return a},week:function(a){return hb(a,this._week.dow,this._week.doy).week},_week:{dow:0,doy:6},_invalidDate:"Invalid date",invalidDate:function(){return this._invalidDate}}),tb=function(b,c,e,f){var g;return"boolean"==typeof e&&(f=e,e=a),g={},g._isAMomentObject=!0,g._i=b,g._f=c,g._l=e,g._strict=f,g._isUTC=!1,g._pf=d(),jb(g)},tb.suppressDeprecationWarnings=!1,tb.createFromInputFallback=f("moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.",function(a){a._d=new Date(a._i+(a._useUTC?" UTC":""))}),tb.min=function(){var a=[].slice.call(arguments,0);return kb("isBefore",a)},tb.max=function(){var a=[].slice.call(arguments,0);return kb("isAfter",a)},tb.utc=function(b,c,e,f){var g;return"boolean"==typeof e&&(f=e,e=a),g={},g._isAMomentObject=!0,g._useUTC=!0,g._isUTC=!0,g._l=e,g._i=b,g._f=c,g._strict=f,g._pf=d(),jb(g).utc()},tb.unix=function(a){return tb(1e3*a)},tb.duration=function(a,b){var d,e,f,g,h=a,i=null;return tb.isDuration(a)?h={ms:a._milliseconds,d:a._days,M:a._months}:"number"==typeof a?(h={},b?h[b]=a:h.milliseconds=a):(i=Lb.exec(a))?(d="-"===i[1]?-1:1,h={y:0,d:A(i[Cb])*d,h:A(i[Db])*d,m:A(i[Eb])*d,s:A(i[Fb])*d,ms:A(i[Gb])*d}):(i=Mb.exec(a))?(d="-"===i[1]?-1:1,f=function(a){var b=a&&parseFloat(a.replace(",","."));return(isNaN(b)?0:b)*d},h={y:f(i[2]),M:f(i[3]),d:f(i[4]),h:f(i[5]),m:f(i[6]),s:f(i[7]),w:f(i[8])}):"object"==typeof h&&("from"in h||"to"in h)&&(g=r(tb(h.from),tb(h.to)),h={},h.ms=g.milliseconds,h.M=g.months),e=new l(h),tb.isDuration(a)&&c(a,"_locale")&&(e._locale=a._locale),e},tb.version=wb,tb.defaultFormat=ec,tb.ISO_8601=function(){},tb.momentProperties=Ib,tb.updateOffset=function(){},tb.relativeTimeThreshold=function(b,c){return mc[b]===a?!1:c===a?mc[b]:(mc[b]=c,!0)},tb.lang=f("moment.lang is deprecated. Use moment.locale instead.",function(a,b){return tb.locale(a,b)}),tb.locale=function(a,b){var c;return a&&(c="undefined"!=typeof b?tb.defineLocale(a,b):tb.localeData(a),c&&(tb.duration._locale=tb._locale=c)),tb._locale._abbr},tb.defineLocale=function(a,b){return null!==b?(b.abbr=a,Hb[a]||(Hb[a]=new j),Hb[a].set(b),tb.locale(a),Hb[a]):(delete Hb[a],null)},tb.langData=f("moment.langData is deprecated. Use moment.localeData instead.",function(a){return tb.localeData(a)}),tb.localeData=function(a){var b;if(a&&a._locale&&a._locale._abbr&&(a=a._locale._abbr),!a)return tb._locale;if(!u(a)){if(b=J(a))return b;a=[a]}return I(a)},tb.isMoment=function(a){return a instanceof k||null!=a&&c(a,"_isAMomentObject")},tb.isDuration=function(a){return a instanceof l};for(vb=rc.length-1;vb>=0;--vb)z(rc[vb]);tb.normalizeUnits=function(a){return x(a)},tb.invalid=function(a){var b=tb.utc(0/0);return null!=a?m(b._pf,a):b._pf.userInvalidated=!0,b},tb.parseZone=function(){return tb.apply(null,arguments).parseZone()},tb.parseTwoDigitYear=function(a){return A(a)+(A(a)>68?1900:2e3)},m(tb.fn=k.prototype,{clone:function(){return tb(this)},valueOf:function(){return+this._d+6e4*(this._offset||0)},unix:function(){return Math.floor(+this/1e3)},toString:function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},toDate:function(){return this._offset?new Date(+this):this._d},toISOString:function(){var a=tb(this).utc();return 0<a.year()&&a.year()<=9999?"function"==typeof Date.prototype.toISOString?this.toDate().toISOString():N(a,"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]"):N(a,"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]")},toArray:function(){var a=this;return[a.year(),a.month(),a.date(),a.hours(),a.minutes(),a.seconds(),a.milliseconds()]},isValid:function(){return G(this)},isDSTShifted:function(){return this._a?this.isValid()&&w(this._a,(this._isUTC?tb.utc(this._a):tb(this._a)).toArray())>0:!1},parsingFlags:function(){return m({},this._pf)},invalidAt:function(){return this._pf.overflow},utc:function(a){return this.zone(0,a)},local:function(a){return this._isUTC&&(this.zone(0,a),this._isUTC=!1,a&&this.add(this._dateTzOffset(),"m")),this},format:function(a){var b=N(this,a||tb.defaultFormat);return this.localeData().postformat(b)},add:s(1,"add"),subtract:s(-1,"subtract"),diff:function(a,b,c){var d,e,f,g=K(a,this),h=6e4*(this.zone()-g.zone());return b=x(b),"year"===b||"month"===b?(d=432e5*(this.daysInMonth()+g.daysInMonth()),e=12*(this.year()-g.year())+(this.month()-g.month()),f=this-tb(this).startOf("month")-(g-tb(g).startOf("month")),f-=6e4*(this.zone()-tb(this).startOf("month").zone()-(g.zone()-tb(g).startOf("month").zone())),e+=f/d,"year"===b&&(e/=12)):(d=this-g,e="second"===b?d/1e3:"minute"===b?d/6e4:"hour"===b?d/36e5:"day"===b?(d-h)/864e5:"week"===b?(d-h)/6048e5:d),c?e:o(e)},from:function(a,b){return tb.duration({to:this,from:a}).locale(this.locale()).humanize(!b)},fromNow:function(a){return this.from(tb(),a)},calendar:function(a){var b=a||tb(),c=K(b,this).startOf("day"),d=this.diff(c,"days",!0),e=-6>d?"sameElse":-1>d?"lastWeek":0>d?"lastDay":1>d?"sameDay":2>d?"nextDay":7>d?"nextWeek":"sameElse";return this.format(this.localeData().calendar(e,this,tb(b)))},isLeapYear:function(){return E(this.year())},isDST:function(){return this.zone()<this.clone().month(0).zone()||this.zone()<this.clone().month(5).zone()},day:function(a){var b=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=a?(a=eb(a,this.localeData()),this.add(a-b,"d")):b},month:ob("Month",!0),startOf:function(a){switch(a=x(a)){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===a?this.weekday(0):"isoWeek"===a&&this.isoWeekday(1),"quarter"===a&&this.month(3*Math.floor(this.month()/3)),this},endOf:function(b){return b=x(b),b===a||"millisecond"===b?this:this.startOf(b).add(1,"isoWeek"===b?"week":b).subtract(1,"ms")},isAfter:function(a,b){var c;return b=x("undefined"!=typeof b?b:"millisecond"),"millisecond"===b?(a=tb.isMoment(a)?a:tb(a),+this>+a):(c=tb.isMoment(a)?+a:+tb(a),c<+this.clone().startOf(b))},isBefore:function(a,b){var c;return b=x("undefined"!=typeof b?b:"millisecond"),"millisecond"===b?(a=tb.isMoment(a)?a:tb(a),+a>+this):(c=tb.isMoment(a)?+a:+tb(a),+this.clone().endOf(b)<c)},isSame:function(a,b){var c;return b=x(b||"millisecond"),"millisecond"===b?(a=tb.isMoment(a)?a:tb(a),+this===+a):(c=+tb(a),+this.clone().startOf(b)<=c&&c<=+this.clone().endOf(b))},min:f("moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548",function(a){return a=tb.apply(null,arguments),this>a?this:a}),max:f("moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(a){return a=tb.apply(null,arguments),a>this?this:a}),zone:function(a,b){var c,d=this._offset||0;return null==a?this._isUTC?d:this._dateTzOffset():("string"==typeof a&&(a=Q(a)),Math.abs(a)<16&&(a=60*a),!this._isUTC&&b&&(c=this._dateTzOffset()),this._offset=a,this._isUTC=!0,null!=c&&this.subtract(c,"m"),d!==a&&(!b||this._changeInProgress?t(this,tb.duration(d-a,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,tb.updateOffset(this,!0),this._changeInProgress=null)),this)},zoneAbbr:function(){return this._isUTC?"UTC":""},zoneName:function(){return this._isUTC?"Coordinated Universal Time":""},parseZone:function(){return this._tzm?this.zone(this._tzm):"string"==typeof this._i&&this.zone(this._i),this},hasAlignedHourOffset:function(a){return a=a?tb(a).zone():0,(this.zone()-a)%60===0},daysInMonth:function(){return B(this.year(),this.month())},dayOfYear:function(a){var b=yb((tb(this).startOf("day")-tb(this).startOf("year"))/864e5)+1;return null==a?b:this.add(a-b,"d")},quarter:function(a){return null==a?Math.ceil((this.month()+1)/3):this.month(3*(a-1)+this.month()%3)},weekYear:function(a){var b=hb(this,this.localeData()._week.dow,this.localeData()._week.doy).year;return null==a?b:this.add(a-b,"y")},isoWeekYear:function(a){var b=hb(this,1,4).year;return null==a?b:this.add(a-b,"y")},week:function(a){var b=this.localeData().week(this);return null==a?b:this.add(7*(a-b),"d")},isoWeek:function(a){var b=hb(this,1,4).week;return null==a?b:this.add(7*(a-b),"d")},weekday:function(a){var b=(this.day()+7-this.localeData()._week.dow)%7;return null==a?b:this.add(a-b,"d")},isoWeekday:function(a){return null==a?this.day()||7:this.day(this.day()%7?a:a-7)},isoWeeksInYear:function(){return C(this.year(),1,4)},weeksInYear:function(){var a=this.localeData()._week;return C(this.year(),a.dow,a.doy)},get:function(a){return a=x(a),this[a]()},set:function(a,b){return a=x(a),"function"==typeof this[a]&&this[a](b),this},locale:function(b){var c;return b===a?this._locale._abbr:(c=tb.localeData(b),null!=c&&(this._locale=c),this)},lang:f("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(b){return b===a?this.localeData():this.locale(b)}),localeData:function(){return this._locale},_dateTzOffset:function(){return 15*Math.round(this._d.getTimezoneOffset()/15)}}),tb.fn.millisecond=tb.fn.milliseconds=ob("Milliseconds",!1),tb.fn.second=tb.fn.seconds=ob("Seconds",!1),tb.fn.minute=tb.fn.minutes=ob("Minutes",!1),tb.fn.hour=tb.fn.hours=ob("Hours",!0),tb.fn.date=ob("Date",!0),tb.fn.dates=f("dates accessor is deprecated. Use date instead.",ob("Date",!0)),tb.fn.year=ob("FullYear",!0),tb.fn.years=f("years accessor is deprecated. Use year instead.",ob("FullYear",!0)),tb.fn.days=tb.fn.day,tb.fn.months=tb.fn.month,tb.fn.weeks=tb.fn.week,tb.fn.isoWeeks=tb.fn.isoWeek,tb.fn.quarters=tb.fn.quarter,tb.fn.toJSON=tb.fn.toISOString,m(tb.duration.fn=l.prototype,{_bubble:function(){var a,b,c,d=this._milliseconds,e=this._days,f=this._months,g=this._data,h=0;g.milliseconds=d%1e3,a=o(d/1e3),g.seconds=a%60,b=o(a/60),g.minutes=b%60,c=o(b/60),g.hours=c%24,e+=o(c/24),h=o(pb(e)),e-=o(qb(h)),f+=o(e/30),e%=30,h+=o(f/12),f%=12,g.days=e,g.months=f,g.years=h},abs:function(){return this._milliseconds=Math.abs(this._milliseconds),this._days=Math.abs(this._days),this._months=Math.abs(this._months),this._data.milliseconds=Math.abs(this._data.milliseconds),this._data.seconds=Math.abs(this._data.seconds),this._data.minutes=Math.abs(this._data.minutes),this._data.hours=Math.abs(this._data.hours),this._data.months=Math.abs(this._data.months),this._data.years=Math.abs(this._data.years),this},weeks:function(){return o(this.days()/7)},valueOf:function(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*A(this._months/12)},humanize:function(a){var b=gb(this,!a,this.localeData());return a&&(b=this.localeData().pastFuture(+this,b)),this.localeData().postformat(b)},add:function(a,b){var c=tb.duration(a,b);return this._milliseconds+=c._milliseconds,this._days+=c._days,this._months+=c._months,this._bubble(),this},subtract:function(a,b){var c=tb.duration(a,b);return this._milliseconds-=c._milliseconds,this._days-=c._days,this._months-=c._months,this._bubble(),this},get:function(a){return a=x(a),this[a.toLowerCase()+"s"]()},as:function(a){var b,c;if(a=x(a),"month"===a||"year"===a)return b=this._days+this._milliseconds/864e5,c=this._months+12*pb(b),"month"===a?c:c/12;switch(b=this._days+Math.round(qb(this._months/12)),a){case"week":return b/7+this._milliseconds/6048e5;case"day":return b+this._milliseconds/864e5;case"hour":return 24*b+this._milliseconds/36e5;case"minute":return 24*b*60+this._milliseconds/6e4;case"second":return 24*b*60*60+this._milliseconds/1e3;
2303 (function(a){function b(a,b,c){switch(arguments.length){case 2:return null!=a?a:b;case 3:return null!=a?a:null!=b?b:c;default:throw new Error("Implement me")}}function c(a,b){return zb.call(a,b)}function d(){return{empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1}}function e(a){tb.suppressDeprecationWarnings===!1&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+a)}function f(a,b){var c=!0;return m(function(){return c&&(e(a),c=!1),b.apply(this,arguments)},b)}function g(a,b){qc[a]||(e(b),qc[a]=!0)}function h(a,b){return function(c){return p(a.call(this,c),b)}}function i(a,b){return function(c){return this.localeData().ordinal(a.call(this,c),b)}}function j(){}function k(a,b){b!==!1&&F(a),n(this,a),this._d=new Date(+a._d)}function l(a){var b=y(a),c=b.year||0,d=b.quarter||0,e=b.month||0,f=b.week||0,g=b.day||0,h=b.hour||0,i=b.minute||0,j=b.second||0,k=b.millisecond||0;this._milliseconds=+k+1e3*j+6e4*i+36e5*h,this._days=+g+7*f,this._months=+e+3*d+12*c,this._data={},this._locale=tb.localeData(),this._bubble()}function m(a,b){for(var d in b)c(b,d)&&(a[d]=b[d]);return c(b,"toString")&&(a.toString=b.toString),c(b,"valueOf")&&(a.valueOf=b.valueOf),a}function n(a,b){var c,d,e;if("undefined"!=typeof b._isAMomentObject&&(a._isAMomentObject=b._isAMomentObject),"undefined"!=typeof b._i&&(a._i=b._i),"undefined"!=typeof b._f&&(a._f=b._f),"undefined"!=typeof b._l&&(a._l=b._l),"undefined"!=typeof b._strict&&(a._strict=b._strict),"undefined"!=typeof b._tzm&&(a._tzm=b._tzm),"undefined"!=typeof b._isUTC&&(a._isUTC=b._isUTC),"undefined"!=typeof b._offset&&(a._offset=b._offset),"undefined"!=typeof b._pf&&(a._pf=b._pf),"undefined"!=typeof b._locale&&(a._locale=b._locale),Ib.length>0)for(c in Ib)d=Ib[c],e=b[d],"undefined"!=typeof e&&(a[d]=e);return a}function o(a){return 0>a?Math.ceil(a):Math.floor(a)}function p(a,b,c){for(var d=""+Math.abs(a),e=a>=0;d.length<b;)d="0"+d;return(e?c?"+":"":"-")+d}function q(a,b){var c={milliseconds:0,months:0};return c.months=b.month()-a.month()+12*(b.year()-a.year()),a.clone().add(c.months,"M").isAfter(b)&&--c.months,c.milliseconds=+b-+a.clone().add(c.months,"M"),c}function r(a,b){var c;return b=K(b,a),a.isBefore(b)?c=q(a,b):(c=q(b,a),c.milliseconds=-c.milliseconds,c.months=-c.months),c}function s(a,b){return function(c,d){var e,f;return null===d||isNaN(+d)||(g(b,"moment()."+b+"(period, number) is deprecated. Please use moment()."+b+"(number, period)."),f=c,c=d,d=f),c="string"==typeof c?+c:c,e=tb.duration(c,d),t(this,e,a),this}}function t(a,b,c,d){var e=b._milliseconds,f=b._days,g=b._months;d=null==d?!0:d,e&&a._d.setTime(+a._d+e*c),f&&nb(a,"Date",mb(a,"Date")+f*c),g&&lb(a,mb(a,"Month")+g*c),d&&tb.updateOffset(a,f||g)}function u(a){return"[object Array]"===Object.prototype.toString.call(a)}function v(a){return"[object Date]"===Object.prototype.toString.call(a)||a instanceof Date}function w(a,b,c){var d,e=Math.min(a.length,b.length),f=Math.abs(a.length-b.length),g=0;for(d=0;e>d;d++)(c&&a[d]!==b[d]||!c&&A(a[d])!==A(b[d]))&&g++;return g+f}function x(a){if(a){var b=a.toLowerCase().replace(/(.)s$/,"$1");a=jc[a]||kc[b]||b}return a}function y(a){var b,d,e={};for(d in a)c(a,d)&&(b=x(d),b&&(e[b]=a[d]));return e}function z(b){var c,d;if(0===b.indexOf("week"))c=7,d="day";else{if(0!==b.indexOf("month"))return;c=12,d="month"}tb[b]=function(e,f){var g,h,i=tb._locale[b],j=[];if("number"==typeof e&&(f=e,e=a),h=function(a){var b=tb().utc().set(d,a);return i.call(tb._locale,b,e||"")},null!=f)return h(f);for(g=0;c>g;g++)j.push(h(g));return j}}function A(a){var b=+a,c=0;return 0!==b&&isFinite(b)&&(c=b>=0?Math.floor(b):Math.ceil(b)),c}function B(a,b){return new Date(Date.UTC(a,b+1,0)).getUTCDate()}function C(a,b,c){return hb(tb([a,11,31+b-c]),b,c).week}function D(a){return E(a)?366:365}function E(a){return a%4===0&&a%100!==0||a%400===0}function F(a){var b;a._a&&-2===a._pf.overflow&&(b=a._a[Bb]<0||a._a[Bb]>11?Bb:a._a[Cb]<1||a._a[Cb]>B(a._a[Ab],a._a[Bb])?Cb:a._a[Db]<0||a._a[Db]>24||24===a._a[Db]&&(0!==a._a[Eb]||0!==a._a[Fb]||0!==a._a[Gb])?Db:a._a[Eb]<0||a._a[Eb]>59?Eb:a._a[Fb]<0||a._a[Fb]>59?Fb:a._a[Gb]<0||a._a[Gb]>999?Gb:-1,a._pf._overflowDayOfYear&&(Ab>b||b>Cb)&&(b=Cb),a._pf.overflow=b)}function G(b){return null==b._isValid&&(b._isValid=!isNaN(b._d.getTime())&&b._pf.overflow<0&&!b._pf.empty&&!b._pf.invalidMonth&&!b._pf.nullInput&&!b._pf.invalidFormat&&!b._pf.userInvalidated,b._strict&&(b._isValid=b._isValid&&0===b._pf.charsLeftOver&&0===b._pf.unusedTokens.length&&b._pf.bigHour===a)),b._isValid}function H(a){return a?a.toLowerCase().replace("_","-"):a}function I(a){for(var b,c,d,e,f=0;f<a.length;){for(e=H(a[f]).split("-"),b=e.length,c=H(a[f+1]),c=c?c.split("-"):null;b>0;){if(d=J(e.slice(0,b).join("-")))return d;if(c&&c.length>=b&&w(e,c,!0)>=b-1)break;b--}f++}return null}function J(a){var b=null;if(!Hb[a]&&Jb)try{b=tb.locale(),require("./locale/"+a),tb.locale(b)}catch(c){}return Hb[a]}function K(a,b){var c,d;return b._isUTC?(c=b.clone(),d=(tb.isMoment(a)||v(a)?+a:+tb(a))-+c,c._d.setTime(+c._d+d),tb.updateOffset(c,!1),c):tb(a).local()}function L(a){return a.match(/\[[\s\S]/)?a.replace(/^\[|\]$/g,""):a.replace(/\\/g,"")}function M(a){var b,c,d=a.match(Nb);for(b=0,c=d.length;c>b;b++)d[b]=pc[d[b]]?pc[d[b]]:L(d[b]);return function(e){var f="";for(b=0;c>b;b++)f+=d[b]instanceof Function?d[b].call(e,a):d[b];return f}}function N(a,b){return a.isValid()?(b=O(b,a.localeData()),lc[b]||(lc[b]=M(b)),lc[b](a)):a.localeData().invalidDate()}function O(a,b){function c(a){return b.longDateFormat(a)||a}var d=5;for(Ob.lastIndex=0;d>=0&&Ob.test(a);)a=a.replace(Ob,c),Ob.lastIndex=0,d-=1;return a}function P(a,b){var c,d=b._strict;switch(a){case"Q":return Zb;case"DDDD":return _b;case"YYYY":case"GGGG":case"gggg":return d?ac:Rb;case"Y":case"G":case"g":return cc;case"YYYYYY":case"YYYYY":case"GGGGG":case"ggggg":return d?bc:Sb;case"S":if(d)return Zb;case"SS":if(d)return $b;case"SSS":if(d)return _b;case"DDD":return Qb;case"MMM":case"MMMM":case"dd":case"ddd":case"dddd":return Ub;case"a":case"A":return b._locale._meridiemParse;case"x":return Xb;case"X":return Yb;case"Z":case"ZZ":return Vb;case"T":return Wb;case"SSSS":return Tb;case"MM":case"DD":case"YY":case"GG":case"gg":case"HH":case"hh":case"mm":case"ss":case"ww":case"WW":return d?$b:Pb;case"M":case"D":case"d":case"H":case"h":case"m":case"s":case"w":case"W":case"e":case"E":return Pb;case"Do":return d?b._locale._ordinalParse:b._locale._ordinalParseLenient;default:return c=new RegExp(Y(X(a.replace("\\","")),"i"))}}function Q(a){a=a||"";var b=a.match(Vb)||[],c=b[b.length-1]||[],d=(c+"").match(hc)||["-",0,0],e=+(60*d[1])+A(d[2]);return"+"===d[0]?-e:e}function R(a,b,c){var d,e=c._a;switch(a){case"Q":null!=b&&(e[Bb]=3*(A(b)-1));break;case"M":case"MM":null!=b&&(e[Bb]=A(b)-1);break;case"MMM":case"MMMM":d=c._locale.monthsParse(b,a,c._strict),null!=d?e[Bb]=d:c._pf.invalidMonth=b;break;case"D":case"DD":null!=b&&(e[Cb]=A(b));break;case"Do":null!=b&&(e[Cb]=A(parseInt(b.match(/\d{1,2}/)[0],10)));break;case"DDD":case"DDDD":null!=b&&(c._dayOfYear=A(b));break;case"YY":e[Ab]=tb.parseTwoDigitYear(b);break;case"YYYY":case"YYYYY":case"YYYYYY":e[Ab]=A(b);break;case"a":case"A":c._isPm=c._locale.isPM(b);break;case"h":case"hh":c._pf.bigHour=!0;case"H":case"HH":e[Db]=A(b);break;case"m":case"mm":e[Eb]=A(b);break;case"s":case"ss":e[Fb]=A(b);break;case"S":case"SS":case"SSS":case"SSSS":e[Gb]=A(1e3*("0."+b));break;case"x":c._d=new Date(A(b));break;case"X":c._d=new Date(1e3*parseFloat(b));break;case"Z":case"ZZ":c._useUTC=!0,c._tzm=Q(b);break;case"dd":case"ddd":case"dddd":d=c._locale.weekdaysParse(b),null!=d?(c._w=c._w||{},c._w.d=d):c._pf.invalidWeekday=b;break;case"w":case"ww":case"W":case"WW":case"d":case"e":case"E":a=a.substr(0,1);case"gggg":case"GGGG":case"GGGGG":a=a.substr(0,2),b&&(c._w=c._w||{},c._w[a]=A(b));break;case"gg":case"GG":c._w=c._w||{},c._w[a]=tb.parseTwoDigitYear(b)}}function S(a){var c,d,e,f,g,h,i;c=a._w,null!=c.GG||null!=c.W||null!=c.E?(g=1,h=4,d=b(c.GG,a._a[Ab],hb(tb(),1,4).year),e=b(c.W,1),f=b(c.E,1)):(g=a._locale._week.dow,h=a._locale._week.doy,d=b(c.gg,a._a[Ab],hb(tb(),g,h).year),e=b(c.w,1),null!=c.d?(f=c.d,g>f&&++e):f=null!=c.e?c.e+g:g),i=ib(d,e,f,h,g),a._a[Ab]=i.year,a._dayOfYear=i.dayOfYear}function T(a){var c,d,e,f,g=[];if(!a._d){for(e=V(a),a._w&&null==a._a[Cb]&&null==a._a[Bb]&&S(a),a._dayOfYear&&(f=b(a._a[Ab],e[Ab]),a._dayOfYear>D(f)&&(a._pf._overflowDayOfYear=!0),d=db(f,0,a._dayOfYear),a._a[Bb]=d.getUTCMonth(),a._a[Cb]=d.getUTCDate()),c=0;3>c&&null==a._a[c];++c)a._a[c]=g[c]=e[c];for(;7>c;c++)a._a[c]=g[c]=null==a._a[c]?2===c?1:0:a._a[c];24===a._a[Db]&&0===a._a[Eb]&&0===a._a[Fb]&&0===a._a[Gb]&&(a._nextDay=!0,a._a[Db]=0),a._d=(a._useUTC?db:cb).apply(null,g),null!=a._tzm&&a._d.setUTCMinutes(a._d.getUTCMinutes()+a._tzm),a._nextDay&&(a._a[Db]=24)}}function U(a){var b;a._d||(b=y(a._i),a._a=[b.year,b.month,b.day||b.date,b.hour,b.minute,b.second,b.millisecond],T(a))}function V(a){var b=new Date;return a._useUTC?[b.getUTCFullYear(),b.getUTCMonth(),b.getUTCDate()]:[b.getFullYear(),b.getMonth(),b.getDate()]}function W(b){if(b._f===tb.ISO_8601)return void $(b);b._a=[],b._pf.empty=!0;var c,d,e,f,g,h=""+b._i,i=h.length,j=0;for(e=O(b._f,b._locale).match(Nb)||[],c=0;c<e.length;c++)f=e[c],d=(h.match(P(f,b))||[])[0],d&&(g=h.substr(0,h.indexOf(d)),g.length>0&&b._pf.unusedInput.push(g),h=h.slice(h.indexOf(d)+d.length),j+=d.length),pc[f]?(d?b._pf.empty=!1:b._pf.unusedTokens.push(f),R(f,d,b)):b._strict&&!d&&b._pf.unusedTokens.push(f);b._pf.charsLeftOver=i-j,h.length>0&&b._pf.unusedInput.push(h),b._pf.bigHour===!0&&b._a[Db]<=12&&(b._pf.bigHour=a),b._isPm&&b._a[Db]<12&&(b._a[Db]+=12),b._isPm===!1&&12===b._a[Db]&&(b._a[Db]=0),T(b),F(b)}function X(a){return a.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(a,b,c,d,e){return b||c||d||e})}function Y(a){return a.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function Z(a){var b,c,e,f,g;if(0===a._f.length)return a._pf.invalidFormat=!0,void(a._d=new Date(0/0));for(f=0;f<a._f.length;f++)g=0,b=n({},a),null!=a._useUTC&&(b._useUTC=a._useUTC),b._pf=d(),b._f=a._f[f],W(b),G(b)&&(g+=b._pf.charsLeftOver,g+=10*b._pf.unusedTokens.length,b._pf.score=g,(null==e||e>g)&&(e=g,c=b));m(a,c||b)}function $(a){var b,c,d=a._i,e=dc.exec(d);if(e){for(a._pf.iso=!0,b=0,c=fc.length;c>b;b++)if(fc[b][1].exec(d)){a._f=fc[b][0]+(e[6]||" ");break}for(b=0,c=gc.length;c>b;b++)if(gc[b][1].exec(d)){a._f+=gc[b][0];break}d.match(Vb)&&(a._f+="Z"),W(a)}else a._isValid=!1}function _(a){$(a),a._isValid===!1&&(delete a._isValid,tb.createFromInputFallback(a))}function ab(a,b){var c,d=[];for(c=0;c<a.length;++c)d.push(b(a[c],c));return d}function bb(b){var c,d=b._i;d===a?b._d=new Date:v(d)?b._d=new Date(+d):null!==(c=Kb.exec(d))?b._d=new Date(+c[1]):"string"==typeof d?_(b):u(d)?(b._a=ab(d.slice(0),function(a){return parseInt(a,10)}),T(b)):"object"==typeof d?U(b):"number"==typeof d?b._d=new Date(d):tb.createFromInputFallback(b)}function cb(a,b,c,d,e,f,g){var h=new Date(a,b,c,d,e,f,g);return 1970>a&&h.setFullYear(a),h}function db(a){var b=new Date(Date.UTC.apply(null,arguments));return 1970>a&&b.setUTCFullYear(a),b}function eb(a,b){if("string"==typeof a)if(isNaN(a)){if(a=b.weekdaysParse(a),"number"!=typeof a)return null}else a=parseInt(a,10);return a}function fb(a,b,c,d,e){return e.relativeTime(b||1,!!c,a,d)}function gb(a,b,c){var d=tb.duration(a).abs(),e=yb(d.as("s")),f=yb(d.as("m")),g=yb(d.as("h")),h=yb(d.as("d")),i=yb(d.as("M")),j=yb(d.as("y")),k=e<mc.s&&["s",e]||1===f&&["m"]||f<mc.m&&["mm",f]||1===g&&["h"]||g<mc.h&&["hh",g]||1===h&&["d"]||h<mc.d&&["dd",h]||1===i&&["M"]||i<mc.M&&["MM",i]||1===j&&["y"]||["yy",j];return k[2]=b,k[3]=+a>0,k[4]=c,fb.apply({},k)}function hb(a,b,c){var d,e=c-b,f=c-a.day();return f>e&&(f-=7),e-7>f&&(f+=7),d=tb(a).add(f,"d"),{week:Math.ceil(d.dayOfYear()/7),year:d.year()}}function ib(a,b,c,d,e){var f,g,h=db(a,0,1).getUTCDay();return h=0===h?7:h,c=null!=c?c:e,f=e-h+(h>d?7:0)-(e>h?7:0),g=7*(b-1)+(c-e)+f+1,{year:g>0?a:a-1,dayOfYear:g>0?g:D(a-1)+g}}function jb(b){var c,d=b._i,e=b._f;return b._locale=b._locale||tb.localeData(b._l),null===d||e===a&&""===d?tb.invalid({nullInput:!0}):("string"==typeof d&&(b._i=d=b._locale.preparse(d)),tb.isMoment(d)?new k(d,!0):(e?u(e)?Z(b):W(b):bb(b),c=new k(b),c._nextDay&&(c.add(1,"d"),c._nextDay=a),c))}function kb(a,b){var c,d;if(1===b.length&&u(b[0])&&(b=b[0]),!b.length)return tb();for(c=b[0],d=1;d<b.length;++d)b[d][a](c)&&(c=b[d]);return c}function lb(a,b){var c;return"string"==typeof b&&(b=a.localeData().monthsParse(b),"number"!=typeof b)?a:(c=Math.min(a.date(),B(a.year(),b)),a._d["set"+(a._isUTC?"UTC":"")+"Month"](b,c),a)}function mb(a,b){return a._d["get"+(a._isUTC?"UTC":"")+b]()}function nb(a,b,c){return"Month"===b?lb(a,c):a._d["set"+(a._isUTC?"UTC":"")+b](c)}function ob(a,b){return function(c){return null!=c?(nb(this,a,c),tb.updateOffset(this,b),this):mb(this,a)}}function pb(a){return 400*a/146097}function qb(a){return 146097*a/400}function rb(a){tb.duration.fn[a]=function(){return this._data[a]}}function sb(a){"undefined"==typeof ender&&(ub=xb.moment,xb.moment=a?f("Accessing Moment through the global scope is deprecated, and will be removed in an upcoming release.",tb):tb)}for(var tb,ub,vb,wb="2.8.4",xb="undefined"!=typeof global?global:this,yb=Math.round,zb=Object.prototype.hasOwnProperty,Ab=0,Bb=1,Cb=2,Db=3,Eb=4,Fb=5,Gb=6,Hb={},Ib=[],Jb="undefined"!=typeof module&&module&&module.exports,Kb=/^\/?Date\((\-?\d+)/i,Lb=/(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/,Mb=/^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/,Nb=/(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,4}|x|X|zz?|ZZ?|.)/g,Ob=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,Pb=/\d\d?/,Qb=/\d{1,3}/,Rb=/\d{1,4}/,Sb=/[+\-]?\d{1,6}/,Tb=/\d+/,Ub=/[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i,Vb=/Z|[\+\-]\d\d:?\d\d/gi,Wb=/T/i,Xb=/[\+\-]?\d+/,Yb=/[\+\-]?\d+(\.\d{1,3})?/,Zb=/\d/,$b=/\d\d/,_b=/\d{3}/,ac=/\d{4}/,bc=/[+-]?\d{6}/,cc=/[+-]?\d+/,dc=/^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,ec="YYYY-MM-DDTHH:mm:ssZ",fc=[["YYYYYY-MM-DD",/[+-]\d{6}-\d{2}-\d{2}/],["YYYY-MM-DD",/\d{4}-\d{2}-\d{2}/],["GGGG-[W]WW-E",/\d{4}-W\d{2}-\d/],["GGGG-[W]WW",/\d{4}-W\d{2}/],["YYYY-DDD",/\d{4}-\d{3}/]],gc=[["HH:mm:ss.SSSS",/(T| )\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss",/(T| )\d\d:\d\d:\d\d/],["HH:mm",/(T| )\d\d:\d\d/],["HH",/(T| )\d\d/]],hc=/([\+\-]|\d\d)/gi,ic=("Date|Hours|Minutes|Seconds|Milliseconds".split("|"),{Milliseconds:1,Seconds:1e3,Minutes:6e4,Hours:36e5,Days:864e5,Months:2592e6,Years:31536e6}),jc={ms:"millisecond",s:"second",m:"minute",h:"hour",d:"day",D:"date",w:"week",W:"isoWeek",M:"month",Q:"quarter",y:"year",DDD:"dayOfYear",e:"weekday",E:"isoWeekday",gg:"weekYear",GG:"isoWeekYear"},kc={dayofyear:"dayOfYear",isoweekday:"isoWeekday",isoweek:"isoWeek",weekyear:"weekYear",isoweekyear:"isoWeekYear"},lc={},mc={s:45,m:45,h:22,d:26,M:11},nc="DDD w W M D d".split(" "),oc="M D H h m s w W".split(" "),pc={M:function(){return this.month()+1},MMM:function(a){return this.localeData().monthsShort(this,a)},MMMM:function(a){return this.localeData().months(this,a)},D:function(){return this.date()},DDD:function(){return this.dayOfYear()},d:function(){return this.day()},dd:function(a){return this.localeData().weekdaysMin(this,a)},ddd:function(a){return this.localeData().weekdaysShort(this,a)},dddd:function(a){return this.localeData().weekdays(this,a)},w:function(){return this.week()},W:function(){return this.isoWeek()},YY:function(){return p(this.year()%100,2)},YYYY:function(){return p(this.year(),4)},YYYYY:function(){return p(this.year(),5)},YYYYYY:function(){var a=this.year(),b=a>=0?"+":"-";return b+p(Math.abs(a),6)},gg:function(){return p(this.weekYear()%100,2)},gggg:function(){return p(this.weekYear(),4)},ggggg:function(){return p(this.weekYear(),5)},GG:function(){return p(this.isoWeekYear()%100,2)},GGGG:function(){return p(this.isoWeekYear(),4)},GGGGG:function(){return p(this.isoWeekYear(),5)},e:function(){return this.weekday()},E:function(){return this.isoWeekday()},a:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!0)},A:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!1)},H:function(){return this.hours()},h:function(){return this.hours()%12||12},m:function(){return this.minutes()},s:function(){return this.seconds()},S:function(){return A(this.milliseconds()/100)},SS:function(){return p(A(this.milliseconds()/10),2)},SSS:function(){return p(this.milliseconds(),3)},SSSS:function(){return p(this.milliseconds(),3)},Z:function(){var a=-this.zone(),b="+";return 0>a&&(a=-a,b="-"),b+p(A(a/60),2)+":"+p(A(a)%60,2)},ZZ:function(){var a=-this.zone(),b="+";return 0>a&&(a=-a,b="-"),b+p(A(a/60),2)+p(A(a)%60,2)},z:function(){return this.zoneAbbr()},zz:function(){return this.zoneName()},x:function(){return this.valueOf()},X:function(){return this.unix()},Q:function(){return this.quarter()}},qc={},rc=["months","monthsShort","weekdays","weekdaysShort","weekdaysMin"];nc.length;)vb=nc.pop(),pc[vb+"o"]=i(pc[vb],vb);for(;oc.length;)vb=oc.pop(),pc[vb+vb]=h(pc[vb],2);pc.DDDD=h(pc.DDD,3),m(j.prototype,{set:function(a){var b,c;for(c in a)b=a[c],"function"==typeof b?this[c]=b:this["_"+c]=b;this._ordinalParseLenient=new RegExp(this._ordinalParse.source+"|"+/\d{1,2}/.source)},_months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),months:function(a){return this._months[a.month()]},_monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),monthsShort:function(a){return this._monthsShort[a.month()]},monthsParse:function(a,b,c){var d,e,f;for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),d=0;12>d;d++){if(e=tb.utc([2e3,d]),c&&!this._longMonthsParse[d]&&(this._longMonthsParse[d]=new RegExp("^"+this.months(e,"").replace(".","")+"$","i"),this._shortMonthsParse[d]=new RegExp("^"+this.monthsShort(e,"").replace(".","")+"$","i")),c||this._monthsParse[d]||(f="^"+this.months(e,"")+"|^"+this.monthsShort(e,""),this._monthsParse[d]=new RegExp(f.replace(".",""),"i")),c&&"MMMM"===b&&this._longMonthsParse[d].test(a))return d;if(c&&"MMM"===b&&this._shortMonthsParse[d].test(a))return d;if(!c&&this._monthsParse[d].test(a))return d}},_weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdays:function(a){return this._weekdays[a.day()]},_weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysShort:function(a){return this._weekdaysShort[a.day()]},_weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),weekdaysMin:function(a){return this._weekdaysMin[a.day()]},weekdaysParse:function(a){var b,c,d;for(this._weekdaysParse||(this._weekdaysParse=[]),b=0;7>b;b++)if(this._weekdaysParse[b]||(c=tb([2e3,1]).day(b),d="^"+this.weekdays(c,"")+"|^"+this.weekdaysShort(c,"")+"|^"+this.weekdaysMin(c,""),this._weekdaysParse[b]=new RegExp(d.replace(".",""),"i")),this._weekdaysParse[b].test(a))return b},_longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY LT",LLLL:"dddd, MMMM D, YYYY LT"},longDateFormat:function(a){var b=this._longDateFormat[a];return!b&&this._longDateFormat[a.toUpperCase()]&&(b=this._longDateFormat[a.toUpperCase()].replace(/MMMM|MM|DD|dddd/g,function(a){return a.slice(1)}),this._longDateFormat[a]=b),b},isPM:function(a){return"p"===(a+"").toLowerCase().charAt(0)},_meridiemParse:/[ap]\.?m?\.?/i,meridiem:function(a,b,c){return a>11?c?"pm":"PM":c?"am":"AM"},_calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},calendar:function(a,b,c){var d=this._calendar[a];return"function"==typeof d?d.apply(b,[c]):d},_relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},relativeTime:function(a,b,c,d){var e=this._relativeTime[c];return"function"==typeof e?e(a,b,c,d):e.replace(/%d/i,a)},pastFuture:function(a,b){var c=this._relativeTime[a>0?"future":"past"];return"function"==typeof c?c(b):c.replace(/%s/i,b)},ordinal:function(a){return this._ordinal.replace("%d",a)},_ordinal:"%d",_ordinalParse:/\d{1,2}/,preparse:function(a){return a},postformat:function(a){return a},week:function(a){return hb(a,this._week.dow,this._week.doy).week},_week:{dow:0,doy:6},_invalidDate:"Invalid date",invalidDate:function(){return this._invalidDate}}),tb=function(b,c,e,f){var g;return"boolean"==typeof e&&(f=e,e=a),g={},g._isAMomentObject=!0,g._i=b,g._f=c,g._l=e,g._strict=f,g._isUTC=!1,g._pf=d(),jb(g)},tb.suppressDeprecationWarnings=!1,tb.createFromInputFallback=f("moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.",function(a){a._d=new Date(a._i+(a._useUTC?" UTC":""))}),tb.min=function(){var a=[].slice.call(arguments,0);return kb("isBefore",a)},tb.max=function(){var a=[].slice.call(arguments,0);return kb("isAfter",a)},tb.utc=function(b,c,e,f){var g;return"boolean"==typeof e&&(f=e,e=a),g={},g._isAMomentObject=!0,g._useUTC=!0,g._isUTC=!0,g._l=e,g._i=b,g._f=c,g._strict=f,g._pf=d(),jb(g).utc()},tb.unix=function(a){return tb(1e3*a)},tb.duration=function(a,b){var d,e,f,g,h=a,i=null;return tb.isDuration(a)?h={ms:a._milliseconds,d:a._days,M:a._months}:"number"==typeof a?(h={},b?h[b]=a:h.milliseconds=a):(i=Lb.exec(a))?(d="-"===i[1]?-1:1,h={y:0,d:A(i[Cb])*d,h:A(i[Db])*d,m:A(i[Eb])*d,s:A(i[Fb])*d,ms:A(i[Gb])*d}):(i=Mb.exec(a))?(d="-"===i[1]?-1:1,f=function(a){var b=a&&parseFloat(a.replace(",","."));return(isNaN(b)?0:b)*d},h={y:f(i[2]),M:f(i[3]),d:f(i[4]),h:f(i[5]),m:f(i[6]),s:f(i[7]),w:f(i[8])}):"object"==typeof h&&("from"in h||"to"in h)&&(g=r(tb(h.from),tb(h.to)),h={},h.ms=g.milliseconds,h.M=g.months),e=new l(h),tb.isDuration(a)&&c(a,"_locale")&&(e._locale=a._locale),e},tb.version=wb,tb.defaultFormat=ec,tb.ISO_8601=function(){},tb.momentProperties=Ib,tb.updateOffset=function(){},tb.relativeTimeThreshold=function(b,c){return mc[b]===a?!1:c===a?mc[b]:(mc[b]=c,!0)},tb.lang=f("moment.lang is deprecated. Use moment.locale instead.",function(a,b){return tb.locale(a,b)}),tb.locale=function(a,b){var c;return a&&(c="undefined"!=typeof b?tb.defineLocale(a,b):tb.localeData(a),c&&(tb.duration._locale=tb._locale=c)),tb._locale._abbr},tb.defineLocale=function(a,b){return null!==b?(b.abbr=a,Hb[a]||(Hb[a]=new j),Hb[a].set(b),tb.locale(a),Hb[a]):(delete Hb[a],null)},tb.langData=f("moment.langData is deprecated. Use moment.localeData instead.",function(a){return tb.localeData(a)}),tb.localeData=function(a){var b;if(a&&a._locale&&a._locale._abbr&&(a=a._locale._abbr),!a)return tb._locale;if(!u(a)){if(b=J(a))return b;a=[a]}return I(a)},tb.isMoment=function(a){return a instanceof k||null!=a&&c(a,"_isAMomentObject")},tb.isDuration=function(a){return a instanceof l};for(vb=rc.length-1;vb>=0;--vb)z(rc[vb]);tb.normalizeUnits=function(a){return x(a)},tb.invalid=function(a){var b=tb.utc(0/0);return null!=a?m(b._pf,a):b._pf.userInvalidated=!0,b},tb.parseZone=function(){return tb.apply(null,arguments).parseZone()},tb.parseTwoDigitYear=function(a){return A(a)+(A(a)>68?1900:2e3)},m(tb.fn=k.prototype,{clone:function(){return tb(this)},valueOf:function(){return+this._d+6e4*(this._offset||0)},unix:function(){return Math.floor(+this/1e3)},toString:function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},toDate:function(){return this._offset?new Date(+this):this._d},toISOString:function(){var a=tb(this).utc();return 0<a.year()&&a.year()<=9999?"function"==typeof Date.prototype.toISOString?this.toDate().toISOString():N(a,"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]"):N(a,"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]")},toArray:function(){var a=this;return[a.year(),a.month(),a.date(),a.hours(),a.minutes(),a.seconds(),a.milliseconds()]},isValid:function(){return G(this)},isDSTShifted:function(){return this._a?this.isValid()&&w(this._a,(this._isUTC?tb.utc(this._a):tb(this._a)).toArray())>0:!1},parsingFlags:function(){return m({},this._pf)},invalidAt:function(){return this._pf.overflow},utc:function(a){return this.zone(0,a)},local:function(a){return this._isUTC&&(this.zone(0,a),this._isUTC=!1,a&&this.add(this._dateTzOffset(),"m")),this},format:function(a){var b=N(this,a||tb.defaultFormat);return this.localeData().postformat(b)},add:s(1,"add"),subtract:s(-1,"subtract"),diff:function(a,b,c){var d,e,f,g=K(a,this),h=6e4*(this.zone()-g.zone());return b=x(b),"year"===b||"month"===b?(d=432e5*(this.daysInMonth()+g.daysInMonth()),e=12*(this.year()-g.year())+(this.month()-g.month()),f=this-tb(this).startOf("month")-(g-tb(g).startOf("month")),f-=6e4*(this.zone()-tb(this).startOf("month").zone()-(g.zone()-tb(g).startOf("month").zone())),e+=f/d,"year"===b&&(e/=12)):(d=this-g,e="second"===b?d/1e3:"minute"===b?d/6e4:"hour"===b?d/36e5:"day"===b?(d-h)/864e5:"week"===b?(d-h)/6048e5:d),c?e:o(e)},from:function(a,b){return tb.duration({to:this,from:a}).locale(this.locale()).humanize(!b)},fromNow:function(a){return this.from(tb(),a)},calendar:function(a){var b=a||tb(),c=K(b,this).startOf("day"),d=this.diff(c,"days",!0),e=-6>d?"sameElse":-1>d?"lastWeek":0>d?"lastDay":1>d?"sameDay":2>d?"nextDay":7>d?"nextWeek":"sameElse";return this.format(this.localeData().calendar(e,this,tb(b)))},isLeapYear:function(){return E(this.year())},isDST:function(){return this.zone()<this.clone().month(0).zone()||this.zone()<this.clone().month(5).zone()},day:function(a){var b=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=a?(a=eb(a,this.localeData()),this.add(a-b,"d")):b},month:ob("Month",!0),startOf:function(a){switch(a=x(a)){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===a?this.weekday(0):"isoWeek"===a&&this.isoWeekday(1),"quarter"===a&&this.month(3*Math.floor(this.month()/3)),this},endOf:function(b){return b=x(b),b===a||"millisecond"===b?this:this.startOf(b).add(1,"isoWeek"===b?"week":b).subtract(1,"ms")},isAfter:function(a,b){var c;return b=x("undefined"!=typeof b?b:"millisecond"),"millisecond"===b?(a=tb.isMoment(a)?a:tb(a),+this>+a):(c=tb.isMoment(a)?+a:+tb(a),c<+this.clone().startOf(b))},isBefore:function(a,b){var c;return b=x("undefined"!=typeof b?b:"millisecond"),"millisecond"===b?(a=tb.isMoment(a)?a:tb(a),+a>+this):(c=tb.isMoment(a)?+a:+tb(a),+this.clone().endOf(b)<c)},isSame:function(a,b){var c;return b=x(b||"millisecond"),"millisecond"===b?(a=tb.isMoment(a)?a:tb(a),+this===+a):(c=+tb(a),+this.clone().startOf(b)<=c&&c<=+this.clone().endOf(b))},min:f("moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548",function(a){return a=tb.apply(null,arguments),this>a?this:a}),max:f("moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(a){return a=tb.apply(null,arguments),a>this?this:a}),zone:function(a,b){var c,d=this._offset||0;return null==a?this._isUTC?d:this._dateTzOffset():("string"==typeof a&&(a=Q(a)),Math.abs(a)<16&&(a=60*a),!this._isUTC&&b&&(c=this._dateTzOffset()),this._offset=a,this._isUTC=!0,null!=c&&this.subtract(c,"m"),d!==a&&(!b||this._changeInProgress?t(this,tb.duration(d-a,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,tb.updateOffset(this,!0),this._changeInProgress=null)),this)},zoneAbbr:function(){return this._isUTC?"UTC":""},zoneName:function(){return this._isUTC?"Coordinated Universal Time":""},parseZone:function(){return this._tzm?this.zone(this._tzm):"string"==typeof this._i&&this.zone(this._i),this},hasAlignedHourOffset:function(a){return a=a?tb(a).zone():0,(this.zone()-a)%60===0},daysInMonth:function(){return B(this.year(),this.month())},dayOfYear:function(a){var b=yb((tb(this).startOf("day")-tb(this).startOf("year"))/864e5)+1;return null==a?b:this.add(a-b,"d")},quarter:function(a){return null==a?Math.ceil((this.month()+1)/3):this.month(3*(a-1)+this.month()%3)},weekYear:function(a){var b=hb(this,this.localeData()._week.dow,this.localeData()._week.doy).year;return null==a?b:this.add(a-b,"y")},isoWeekYear:function(a){var b=hb(this,1,4).year;return null==a?b:this.add(a-b,"y")},week:function(a){var b=this.localeData().week(this);return null==a?b:this.add(7*(a-b),"d")},isoWeek:function(a){var b=hb(this,1,4).week;return null==a?b:this.add(7*(a-b),"d")},weekday:function(a){var b=(this.day()+7-this.localeData()._week.dow)%7;return null==a?b:this.add(a-b,"d")},isoWeekday:function(a){return null==a?this.day()||7:this.day(this.day()%7?a:a-7)},isoWeeksInYear:function(){return C(this.year(),1,4)},weeksInYear:function(){var a=this.localeData()._week;return C(this.year(),a.dow,a.doy)},get:function(a){return a=x(a),this[a]()},set:function(a,b){return a=x(a),"function"==typeof this[a]&&this[a](b),this},locale:function(b){var c;return b===a?this._locale._abbr:(c=tb.localeData(b),null!=c&&(this._locale=c),this)},lang:f("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(b){return b===a?this.localeData():this.locale(b)}),localeData:function(){return this._locale},_dateTzOffset:function(){return 15*Math.round(this._d.getTimezoneOffset()/15)}}),tb.fn.millisecond=tb.fn.milliseconds=ob("Milliseconds",!1),tb.fn.second=tb.fn.seconds=ob("Seconds",!1),tb.fn.minute=tb.fn.minutes=ob("Minutes",!1),tb.fn.hour=tb.fn.hours=ob("Hours",!0),tb.fn.date=ob("Date",!0),tb.fn.dates=f("dates accessor is deprecated. Use date instead.",ob("Date",!0)),tb.fn.year=ob("FullYear",!0),tb.fn.years=f("years accessor is deprecated. Use year instead.",ob("FullYear",!0)),tb.fn.days=tb.fn.day,tb.fn.months=tb.fn.month,tb.fn.weeks=tb.fn.week,tb.fn.isoWeeks=tb.fn.isoWeek,tb.fn.quarters=tb.fn.quarter,tb.fn.toJSON=tb.fn.toISOString,m(tb.duration.fn=l.prototype,{_bubble:function(){var a,b,c,d=this._milliseconds,e=this._days,f=this._months,g=this._data,h=0;g.milliseconds=d%1e3,a=o(d/1e3),g.seconds=a%60,b=o(a/60),g.minutes=b%60,c=o(b/60),g.hours=c%24,e+=o(c/24),h=o(pb(e)),e-=o(qb(h)),f+=o(e/30),e%=30,h+=o(f/12),f%=12,g.days=e,g.months=f,g.years=h},abs:function(){return this._milliseconds=Math.abs(this._milliseconds),this._days=Math.abs(this._days),this._months=Math.abs(this._months),this._data.milliseconds=Math.abs(this._data.milliseconds),this._data.seconds=Math.abs(this._data.seconds),this._data.minutes=Math.abs(this._data.minutes),this._data.hours=Math.abs(this._data.hours),this._data.months=Math.abs(this._data.months),this._data.years=Math.abs(this._data.years),this},weeks:function(){return o(this.days()/7)},valueOf:function(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*A(this._months/12)},humanize:function(a){var b=gb(this,!a,this.localeData());return a&&(b=this.localeData().pastFuture(+this,b)),this.localeData().postformat(b)},add:function(a,b){var c=tb.duration(a,b);return this._milliseconds+=c._milliseconds,this._days+=c._days,this._months+=c._months,this._bubble(),this},subtract:function(a,b){var c=tb.duration(a,b);return this._milliseconds-=c._milliseconds,this._days-=c._days,this._months-=c._months,this._bubble(),this},get:function(a){return a=x(a),this[a.toLowerCase()+"s"]()},as:function(a){var b,c;if(a=x(a),"month"===a||"year"===a)return b=this._days+this._milliseconds/864e5,c=this._months+12*pb(b),"month"===a?c:c/12;switch(b=this._days+Math.round(qb(this._months/12)),a){case"week":return b/7+this._milliseconds/6048e5;case"day":return b+this._milliseconds/864e5;case"hour":return 24*b+this._milliseconds/36e5;case"minute":return 24*b*60+this._milliseconds/6e4;case"second":return 24*b*60*60+this._milliseconds/1e3;
2304 case"millisecond":return Math.floor(24*b*60*60*1e3)+this._milliseconds;default:throw new Error("Unknown unit "+a)}},lang:tb.fn.lang,locale:tb.fn.locale,toIsoString:f("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",function(){return this.toISOString()}),toISOString:function(){var a=Math.abs(this.years()),b=Math.abs(this.months()),c=Math.abs(this.days()),d=Math.abs(this.hours()),e=Math.abs(this.minutes()),f=Math.abs(this.seconds()+this.milliseconds()/1e3);return this.asSeconds()?(this.asSeconds()<0?"-":"")+"P"+(a?a+"Y":"")+(b?b+"M":"")+(c?c+"D":"")+(d||e||f?"T":"")+(d?d+"H":"")+(e?e+"M":"")+(f?f+"S":""):"P0D"},localeData:function(){return this._locale}}),tb.duration.fn.toString=tb.duration.fn.toISOString;for(vb in ic)c(ic,vb)&&rb(vb.toLowerCase());tb.duration.fn.asMilliseconds=function(){return this.as("ms")},tb.duration.fn.asSeconds=function(){return this.as("s")},tb.duration.fn.asMinutes=function(){return this.as("m")},tb.duration.fn.asHours=function(){return this.as("h")},tb.duration.fn.asDays=function(){return this.as("d")},tb.duration.fn.asWeeks=function(){return this.as("weeks")},tb.duration.fn.asMonths=function(){return this.as("M")},tb.duration.fn.asYears=function(){return this.as("y")},tb.locale("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(a){var b=a%10,c=1===A(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c}}),Jb?module.exports=tb:"function"==typeof define&&define.amd?(define("moment",function(a,b,c){return c.config&&c.config()&&c.config().noGlobal===!0&&(xb.moment=ub),tb}),sb(!0)):sb()}).call(this);
2304 case"millisecond":return Math.floor(24*b*60*60*1e3)+this._milliseconds;default:throw new Error("Unknown unit "+a)}},lang:tb.fn.lang,locale:tb.fn.locale,toIsoString:f("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",function(){return this.toISOString()}),toISOString:function(){var a=Math.abs(this.years()),b=Math.abs(this.months()),c=Math.abs(this.days()),d=Math.abs(this.hours()),e=Math.abs(this.minutes()),f=Math.abs(this.seconds()+this.milliseconds()/1e3);return this.asSeconds()?(this.asSeconds()<0?"-":"")+"P"+(a?a+"Y":"")+(b?b+"M":"")+(c?c+"D":"")+(d||e||f?"T":"")+(d?d+"H":"")+(e?e+"M":"")+(f?f+"S":""):"P0D"},localeData:function(){return this._locale}}),tb.duration.fn.toString=tb.duration.fn.toISOString;for(vb in ic)c(ic,vb)&&rb(vb.toLowerCase());tb.duration.fn.asMilliseconds=function(){return this.as("ms")},tb.duration.fn.asSeconds=function(){return this.as("s")},tb.duration.fn.asMinutes=function(){return this.as("m")},tb.duration.fn.asHours=function(){return this.as("h")},tb.duration.fn.asDays=function(){return this.as("d")},tb.duration.fn.asWeeks=function(){return this.as("weeks")},tb.duration.fn.asMonths=function(){return this.as("M")},tb.duration.fn.asYears=function(){return this.as("y")},tb.locale("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(a){var b=a%10,c=1===A(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c}}),Jb?module.exports=tb:"function"==typeof define&&define.amd?(define("moment",function(a,b,c){return c.config&&c.config()&&c.config().noGlobal===!0&&(xb.moment=ub),tb}),sb(!0)):sb()}).call(this);
2305 ;!function(){function n(n,t){return t>n?-1:n>t?1:n>=t?0:0/0}function t(n){return null===n?0/0:+n}function e(n){return!isNaN(n)}function r(n){return{left:function(t,e,r,u){for(arguments.length<3&&(r=0),arguments.length<4&&(u=t.length);u>r;){var i=r+u>>>1;n(t[i],e)<0?r=i+1:u=i}return r},right:function(t,e,r,u){for(arguments.length<3&&(r=0),arguments.length<4&&(u=t.length);u>r;){var i=r+u>>>1;n(t[i],e)>0?u=i:r=i+1}return r}}}function u(n){return n.length}function i(n){for(var t=1;n*t%1;)t*=10;return t}function o(n,t){for(var e in t)Object.defineProperty(n.prototype,e,{value:t[e],enumerable:!1})}function a(){this._=Object.create(null)}function c(n){return(n+="")===da||n[0]===ma?ma+n:n}function l(n){return(n+="")[0]===ma?n.slice(1):n}function s(n){return c(n)in this._}function f(n){return(n=c(n))in this._&&delete this._[n]}function h(){var n=[];for(var t in this._)n.push(l(t));return n}function g(){var n=0;for(var t in this._)++n;return n}function p(){for(var n in this._)return!1;return!0}function v(){this._=Object.create(null)}function d(n,t,e){return function(){var r=e.apply(t,arguments);return r===t?n:r}}function m(n,t){if(t in n)return t;t=t.charAt(0).toUpperCase()+t.slice(1);for(var e=0,r=ya.length;r>e;++e){var u=ya[e]+t;if(u in n)return u}}function y(){}function M(){}function x(n){function t(){for(var t,r=e,u=-1,i=r.length;++u<i;)(t=r[u].on)&&t.apply(this,arguments);return n}var e=[],r=new a;return t.on=function(t,u){var i,o=r.get(t);return arguments.length<2?o&&o.on:(o&&(o.on=null,e=e.slice(0,i=e.indexOf(o)).concat(e.slice(i+1)),r.remove(t)),u&&e.push(r.set(t,{on:u})),n)},t}function b(){ta.event.preventDefault()}function _(){for(var n,t=ta.event;n=t.sourceEvent;)t=n;return t}function w(n){for(var t=new M,e=0,r=arguments.length;++e<r;)t[arguments[e]]=x(t);return t.of=function(e,r){return function(u){try{var i=u.sourceEvent=ta.event;u.target=n,ta.event=u,t[u.type].apply(e,r)}finally{ta.event=i}}},t}function S(n){return xa(n,ka),n}function k(n){return"function"==typeof n?n:function(){return ba(n,this)}}function E(n){return"function"==typeof n?n:function(){return _a(n,this)}}function A(n,t){function e(){this.removeAttribute(n)}function r(){this.removeAttributeNS(n.space,n.local)}function u(){this.setAttribute(n,t)}function i(){this.setAttributeNS(n.space,n.local,t)}function o(){var e=t.apply(this,arguments);null==e?this.removeAttribute(n):this.setAttribute(n,e)}function a(){var e=t.apply(this,arguments);null==e?this.removeAttributeNS(n.space,n.local):this.setAttributeNS(n.space,n.local,e)}return n=ta.ns.qualify(n),null==t?n.local?r:e:"function"==typeof t?n.local?a:o:n.local?i:u}function N(n){return n.trim().replace(/\s+/g," ")}function C(n){return new RegExp("(?:^|\\s+)"+ta.requote(n)+"(?:\\s+|$)","g")}function z(n){return(n+"").trim().split(/^|\s+/)}function q(n,t){function e(){for(var e=-1;++e<u;)n[e](this,t)}function r(){for(var e=-1,r=t.apply(this,arguments);++e<u;)n[e](this,r)}n=z(n).map(L);var u=n.length;return"function"==typeof t?r:e}function L(n){var t=C(n);return function(e,r){if(u=e.classList)return r?u.add(n):u.remove(n);var u=e.getAttribute("class")||"";r?(t.lastIndex=0,t.test(u)||e.setAttribute("class",N(u+" "+n))):e.setAttribute("class",N(u.replace(t," ")))}}function T(n,t,e){function r(){this.style.removeProperty(n)}function u(){this.style.setProperty(n,t,e)}function i(){var r=t.apply(this,arguments);null==r?this.style.removeProperty(n):this.style.setProperty(n,r,e)}return null==t?r:"function"==typeof t?i:u}function R(n,t){function e(){delete this[n]}function r(){this[n]=t}function u(){var e=t.apply(this,arguments);null==e?delete this[n]:this[n]=e}return null==t?e:"function"==typeof t?u:r}function D(n){return"function"==typeof n?n:(n=ta.ns.qualify(n)).local?function(){return this.ownerDocument.createElementNS(n.space,n.local)}:function(){return this.ownerDocument.createElementNS(this.namespaceURI,n)}}function P(){var n=this.parentNode;n&&n.removeChild(this)}function U(n){return{__data__:n}}function j(n){return function(){return Sa(this,n)}}function F(t){return arguments.length||(t=n),function(n,e){return n&&e?t(n.__data__,e.__data__):!n-!e}}function H(n,t){for(var e=0,r=n.length;r>e;e++)for(var u,i=n[e],o=0,a=i.length;a>o;o++)(u=i[o])&&t(u,o,e);return n}function O(n){return xa(n,Aa),n}function Y(n){var t,e;return function(r,u,i){var o,a=n[i].update,c=a.length;for(i!=e&&(e=i,t=0),u>=t&&(t=u+1);!(o=a[t])&&++t<c;);return o}}function I(n){var t=n.__transition__;t&&++t.active}function Z(n,t,e){function r(){var t=this[o];t&&(this.removeEventListener(n,t,t.$),delete this[o])}function u(){var u=c(t,ra(arguments));r.call(this),this.addEventListener(n,this[o]=u,u.$=e),u._=t}function i(){var t,e=new RegExp("^__on([^.]+)"+ta.requote(n)+"$");for(var r in this)if(t=r.match(e)){var u=this[r];this.removeEventListener(t[1],u,u.$),delete this[r]}}var o="__on"+n,a=n.indexOf("."),c=V;a>0&&(n=n.slice(0,a));var l=Ca.get(n);return l&&(n=l,c=X),a?t?u:r:t?y:i}function V(n,t){return function(e){var r=ta.event;ta.event=e,t[0]=this.__data__;try{n.apply(this,t)}finally{ta.event=r}}}function X(n,t){var e=V(n,t);return function(n){var t=this,r=n.relatedTarget;r&&(r===t||8&r.compareDocumentPosition(t))||e.call(t,n)}}function $(){var n=".dragsuppress-"+ ++qa,t="click"+n,e=ta.select(oa).on("touchmove"+n,b).on("dragstart"+n,b).on("selectstart"+n,b);if(za){var r=ia.style,u=r[za];r[za]="none"}return function(i){if(e.on(n,null),za&&(r[za]=u),i){var o=function(){e.on(t,null)};e.on(t,function(){b(),o()},!0),setTimeout(o,0)}}}function B(n,t){t.changedTouches&&(t=t.changedTouches[0]);var e=n.ownerSVGElement||n;if(e.createSVGPoint){var r=e.createSVGPoint();if(0>La&&(oa.scrollX||oa.scrollY)){e=ta.select("body").append("svg").style({position:"absolute",top:0,left:0,margin:0,padding:0,border:"none"},"important");var u=e[0][0].getScreenCTM();La=!(u.f||u.e),e.remove()}return La?(r.x=t.pageX,r.y=t.pageY):(r.x=t.clientX,r.y=t.clientY),r=r.matrixTransform(n.getScreenCTM().inverse()),[r.x,r.y]}var i=n.getBoundingClientRect();return[t.clientX-i.left-n.clientLeft,t.clientY-i.top-n.clientTop]}function W(){return ta.event.changedTouches[0].identifier}function J(){return ta.event.target}function G(){return oa}function K(n){return n>0?1:0>n?-1:0}function Q(n,t,e){return(t[0]-n[0])*(e[1]-n[1])-(t[1]-n[1])*(e[0]-n[0])}function nt(n){return n>1?0:-1>n?Da:Math.acos(n)}function tt(n){return n>1?ja:-1>n?-ja:Math.asin(n)}function et(n){return((n=Math.exp(n))-1/n)/2}function rt(n){return((n=Math.exp(n))+1/n)/2}function ut(n){return((n=Math.exp(2*n))-1)/(n+1)}function it(n){return(n=Math.sin(n/2))*n}function ot(){}function at(n,t,e){return this instanceof at?(this.h=+n,this.s=+t,void(this.l=+e)):arguments.length<2?n instanceof at?new at(n.h,n.s,n.l):bt(""+n,_t,at):new at(n,t,e)}function ct(n,t,e){function r(n){return n>360?n-=360:0>n&&(n+=360),60>n?i+(o-i)*n/60:180>n?o:240>n?i+(o-i)*(240-n)/60:i}function u(n){return Math.round(255*r(n))}var i,o;return n=isNaN(n)?0:(n%=360)<0?n+360:n,t=isNaN(t)?0:0>t?0:t>1?1:t,e=0>e?0:e>1?1:e,o=.5>=e?e*(1+t):e+t-e*t,i=2*e-o,new mt(u(n+120),u(n),u(n-120))}function lt(n,t,e){return this instanceof lt?(this.h=+n,this.c=+t,void(this.l=+e)):arguments.length<2?n instanceof lt?new lt(n.h,n.c,n.l):n instanceof ft?gt(n.l,n.a,n.b):gt((n=wt((n=ta.rgb(n)).r,n.g,n.b)).l,n.a,n.b):new lt(n,t,e)}function st(n,t,e){return isNaN(n)&&(n=0),isNaN(t)&&(t=0),new ft(e,Math.cos(n*=Fa)*t,Math.sin(n)*t)}function ft(n,t,e){return this instanceof ft?(this.l=+n,this.a=+t,void(this.b=+e)):arguments.length<2?n instanceof ft?new ft(n.l,n.a,n.b):n instanceof lt?st(n.h,n.c,n.l):wt((n=mt(n)).r,n.g,n.b):new ft(n,t,e)}function ht(n,t,e){var r=(n+16)/116,u=r+t/500,i=r-e/200;return u=pt(u)*Ja,r=pt(r)*Ga,i=pt(i)*Ka,new mt(dt(3.2404542*u-1.5371385*r-.4985314*i),dt(-.969266*u+1.8760108*r+.041556*i),dt(.0556434*u-.2040259*r+1.0572252*i))}function gt(n,t,e){return n>0?new lt(Math.atan2(e,t)*Ha,Math.sqrt(t*t+e*e),n):new lt(0/0,0/0,n)}function pt(n){return n>.206893034?n*n*n:(n-4/29)/7.787037}function vt(n){return n>.008856?Math.pow(n,1/3):7.787037*n+4/29}function dt(n){return Math.round(255*(.00304>=n?12.92*n:1.055*Math.pow(n,1/2.4)-.055))}function mt(n,t,e){return this instanceof mt?(this.r=~~n,this.g=~~t,void(this.b=~~e)):arguments.length<2?n instanceof mt?new mt(n.r,n.g,n.b):bt(""+n,mt,ct):new mt(n,t,e)}function yt(n){return new mt(n>>16,255&n>>8,255&n)}function Mt(n){return yt(n)+""}function xt(n){return 16>n?"0"+Math.max(0,n).toString(16):Math.min(255,n).toString(16)}function bt(n,t,e){var r,u,i,o=0,a=0,c=0;if(r=/([a-z]+)\((.*)\)/i.exec(n))switch(u=r[2].split(","),r[1]){case"hsl":return e(parseFloat(u[0]),parseFloat(u[1])/100,parseFloat(u[2])/100);case"rgb":return t(kt(u[0]),kt(u[1]),kt(u[2]))}return(i=tc.get(n))?t(i.r,i.g,i.b):(null==n||"#"!==n.charAt(0)||isNaN(i=parseInt(n.slice(1),16))||(4===n.length?(o=(3840&i)>>4,o=o>>4|o,a=240&i,a=a>>4|a,c=15&i,c=c<<4|c):7===n.length&&(o=(16711680&i)>>16,a=(65280&i)>>8,c=255&i)),t(o,a,c))}function _t(n,t,e){var r,u,i=Math.min(n/=255,t/=255,e/=255),o=Math.max(n,t,e),a=o-i,c=(o+i)/2;return a?(u=.5>c?a/(o+i):a/(2-o-i),r=n==o?(t-e)/a+(e>t?6:0):t==o?(e-n)/a+2:(n-t)/a+4,r*=60):(r=0/0,u=c>0&&1>c?0:r),new at(r,u,c)}function wt(n,t,e){n=St(n),t=St(t),e=St(e);var r=vt((.4124564*n+.3575761*t+.1804375*e)/Ja),u=vt((.2126729*n+.7151522*t+.072175*e)/Ga),i=vt((.0193339*n+.119192*t+.9503041*e)/Ka);return ft(116*u-16,500*(r-u),200*(u-i))}function St(n){return(n/=255)<=.04045?n/12.92:Math.pow((n+.055)/1.055,2.4)}function kt(n){var t=parseFloat(n);return"%"===n.charAt(n.length-1)?Math.round(2.55*t):t}function Et(n){return"function"==typeof n?n:function(){return n}}function At(n){return n}function Nt(n){return function(t,e,r){return 2===arguments.length&&"function"==typeof e&&(r=e,e=null),Ct(t,e,n,r)}}function Ct(n,t,e,r){function u(){var n,t=c.status;if(!t&&qt(c)||t>=200&&300>t||304===t){try{n=e.call(i,c)}catch(r){return o.error.call(i,r),void 0}o.load.call(i,n)}else o.error.call(i,c)}var i={},o=ta.dispatch("beforesend","progress","load","error"),a={},c=new XMLHttpRequest,l=null;return!oa.XDomainRequest||"withCredentials"in c||!/^(http(s)?:)?\/\//.test(n)||(c=new XDomainRequest),"onload"in c?c.onload=c.onerror=u:c.onreadystatechange=function(){c.readyState>3&&u()},c.onprogress=function(n){var t=ta.event;ta.event=n;try{o.progress.call(i,c)}finally{ta.event=t}},i.header=function(n,t){return n=(n+"").toLowerCase(),arguments.length<2?a[n]:(null==t?delete a[n]:a[n]=t+"",i)},i.mimeType=function(n){return arguments.length?(t=null==n?null:n+"",i):t},i.responseType=function(n){return arguments.length?(l=n,i):l},i.response=function(n){return e=n,i},["get","post"].forEach(function(n){i[n]=function(){return i.send.apply(i,[n].concat(ra(arguments)))}}),i.send=function(e,r,u){if(2===arguments.length&&"function"==typeof r&&(u=r,r=null),c.open(e,n,!0),null==t||"accept"in a||(a.accept=t+",*/*"),c.setRequestHeader)for(var s in a)c.setRequestHeader(s,a[s]);return null!=t&&c.overrideMimeType&&c.overrideMimeType(t),null!=l&&(c.responseType=l),null!=u&&i.on("error",u).on("load",function(n){u(null,n)}),o.beforesend.call(i,c),c.send(null==r?null:r),i},i.abort=function(){return c.abort(),i},ta.rebind(i,o,"on"),null==r?i:i.get(zt(r))}function zt(n){return 1===n.length?function(t,e){n(null==t?e:null)}:n}function qt(n){var t=n.responseType;return t&&"text"!==t?n.response:n.responseText}function Lt(){var n=Tt(),t=Rt()-n;t>24?(isFinite(t)&&(clearTimeout(ic),ic=setTimeout(Lt,t)),uc=0):(uc=1,ac(Lt))}function Tt(){var n=Date.now();for(oc=ec;oc;)n>=oc.t&&(oc.f=oc.c(n-oc.t)),oc=oc.n;return n}function Rt(){for(var n,t=ec,e=1/0;t;)t.f?t=n?n.n=t.n:ec=t.n:(t.t<e&&(e=t.t),t=(n=t).n);return rc=n,e}function Dt(n,t){return t-(n?Math.ceil(Math.log(n)/Math.LN10):1)}function Pt(n,t){var e=Math.pow(10,3*va(8-t));return{scale:t>8?function(n){return n/e}:function(n){return n*e},symbol:n}}function Ut(n){var t=n.decimal,e=n.thousands,r=n.grouping,u=n.currency,i=r&&e?function(n,t){for(var u=n.length,i=[],o=0,a=r[0],c=0;u>0&&a>0&&(c+a+1>t&&(a=Math.max(1,t-c)),i.push(n.substring(u-=a,u+a)),!((c+=a+1)>t));)a=r[o=(o+1)%r.length];return i.reverse().join(e)}:At;return function(n){var e=lc.exec(n),r=e[1]||" ",o=e[2]||">",a=e[3]||"-",c=e[4]||"",l=e[5],s=+e[6],f=e[7],h=e[8],g=e[9],p=1,v="",d="",m=!1,y=!0;switch(h&&(h=+h.substring(1)),(l||"0"===r&&"="===o)&&(l=r="0",o="="),g){case"n":f=!0,g="g";break;case"%":p=100,d="%",g="f";break;case"p":p=100,d="%",g="r";break;case"b":case"o":case"x":case"X":"#"===c&&(v="0"+g.toLowerCase());case"c":y=!1;case"d":m=!0,h=0;break;case"s":p=-1,g="r"}"$"===c&&(v=u[0],d=u[1]),"r"!=g||h||(g="g"),null!=h&&("g"==g?h=Math.max(1,Math.min(21,h)):("e"==g||"f"==g)&&(h=Math.max(0,Math.min(20,h)))),g=sc.get(g)||jt;var M=l&&f;return function(n){var e=d;if(m&&n%1)return"";var u=0>n||0===n&&0>1/n?(n=-n,"-"):"-"===a?"":a;if(0>p){var c=ta.formatPrefix(n,h);n=c.scale(n),e=c.symbol+d}else n*=p;n=g(n,h);var x,b,_=n.lastIndexOf(".");if(0>_){var w=y?n.lastIndexOf("e"):-1;0>w?(x=n,b=""):(x=n.substring(0,w),b=n.substring(w))}else x=n.substring(0,_),b=t+n.substring(_+1);!l&&f&&(x=i(x,1/0));var S=v.length+x.length+b.length+(M?0:u.length),k=s>S?new Array(S=s-S+1).join(r):"";return M&&(x=i(k+x,k.length?s-b.length:1/0)),u+=v,n=x+b,("<"===o?u+n+k:">"===o?k+u+n:"^"===o?k.substring(0,S>>=1)+u+n+k.substring(S):u+(M?n:k+n))+e}}}function jt(n){return n+""}function Ft(){this._=new Date(arguments.length>1?Date.UTC.apply(this,arguments):arguments[0])}function Ht(n,t,e){function r(t){var e=n(t),r=i(e,1);return r-t>t-e?e:r}function u(e){return t(e=n(new hc(e-1)),1),e}function i(n,e){return t(n=new hc(+n),e),n}function o(n,r,i){var o=u(n),a=[];if(i>1)for(;r>o;)e(o)%i||a.push(new Date(+o)),t(o,1);else for(;r>o;)a.push(new Date(+o)),t(o,1);return a}function a(n,t,e){try{hc=Ft;var r=new Ft;return r._=n,o(r,t,e)}finally{hc=Date}}n.floor=n,n.round=r,n.ceil=u,n.offset=i,n.range=o;var c=n.utc=Ot(n);return c.floor=c,c.round=Ot(r),c.ceil=Ot(u),c.offset=Ot(i),c.range=a,n}function Ot(n){return function(t,e){try{hc=Ft;var r=new Ft;return r._=t,n(r,e)._}finally{hc=Date}}}function Yt(n){function t(n){function t(t){for(var e,u,i,o=[],a=-1,c=0;++a<r;)37===n.charCodeAt(a)&&(o.push(n.slice(c,a)),null!=(u=pc[e=n.charAt(++a)])&&(e=n.charAt(++a)),(i=N[e])&&(e=i(t,null==u?"e"===e?" ":"0":u)),o.push(e),c=a+1);return o.push(n.slice(c,a)),o.join("")}var r=n.length;return t.parse=function(t){var r={y:1900,m:0,d:1,H:0,M:0,S:0,L:0,Z:null},u=e(r,n,t,0);if(u!=t.length)return null;"p"in r&&(r.H=r.H%12+12*r.p);var i=null!=r.Z&&hc!==Ft,o=new(i?Ft:hc);return"j"in r?o.setFullYear(r.y,0,r.j):"w"in r&&("W"in r||"U"in r)?(o.setFullYear(r.y,0,1),o.setFullYear(r.y,0,"W"in r?(r.w+6)%7+7*r.W-(o.getDay()+5)%7:r.w+7*r.U-(o.getDay()+6)%7)):o.setFullYear(r.y,r.m,r.d),o.setHours(r.H+(0|r.Z/100),r.M+r.Z%100,r.S,r.L),i?o._:o},t.toString=function(){return n},t}function e(n,t,e,r){for(var u,i,o,a=0,c=t.length,l=e.length;c>a;){if(r>=l)return-1;if(u=t.charCodeAt(a++),37===u){if(o=t.charAt(a++),i=C[o in pc?t.charAt(a++):o],!i||(r=i(n,e,r))<0)return-1}else if(u!=e.charCodeAt(r++))return-1}return r}function r(n,t,e){_.lastIndex=0;var r=_.exec(t.slice(e));return r?(n.w=w.get(r[0].toLowerCase()),e+r[0].length):-1}function u(n,t,e){x.lastIndex=0;var r=x.exec(t.slice(e));return r?(n.w=b.get(r[0].toLowerCase()),e+r[0].length):-1}function i(n,t,e){E.lastIndex=0;var r=E.exec(t.slice(e));return r?(n.m=A.get(r[0].toLowerCase()),e+r[0].length):-1}function o(n,t,e){S.lastIndex=0;var r=S.exec(t.slice(e));return r?(n.m=k.get(r[0].toLowerCase()),e+r[0].length):-1}function a(n,t,r){return e(n,N.c.toString(),t,r)}function c(n,t,r){return e(n,N.x.toString(),t,r)}function l(n,t,r){return e(n,N.X.toString(),t,r)}function s(n,t,e){var r=M.get(t.slice(e,e+=2).toLowerCase());return null==r?-1:(n.p=r,e)}var f=n.dateTime,h=n.date,g=n.time,p=n.periods,v=n.days,d=n.shortDays,m=n.months,y=n.shortMonths;t.utc=function(n){function e(n){try{hc=Ft;var t=new hc;return t._=n,r(t)}finally{hc=Date}}var r=t(n);return e.parse=function(n){try{hc=Ft;var t=r.parse(n);return t&&t._}finally{hc=Date}},e.toString=r.toString,e},t.multi=t.utc.multi=ce;var M=ta.map(),x=Zt(v),b=Vt(v),_=Zt(d),w=Vt(d),S=Zt(m),k=Vt(m),E=Zt(y),A=Vt(y);p.forEach(function(n,t){M.set(n.toLowerCase(),t)});var N={a:function(n){return d[n.getDay()]},A:function(n){return v[n.getDay()]},b:function(n){return y[n.getMonth()]},B:function(n){return m[n.getMonth()]},c:t(f),d:function(n,t){return It(n.getDate(),t,2)},e:function(n,t){return It(n.getDate(),t,2)},H:function(n,t){return It(n.getHours(),t,2)},I:function(n,t){return It(n.getHours()%12||12,t,2)},j:function(n,t){return It(1+fc.dayOfYear(n),t,3)},L:function(n,t){return It(n.getMilliseconds(),t,3)},m:function(n,t){return It(n.getMonth()+1,t,2)},M:function(n,t){return It(n.getMinutes(),t,2)},p:function(n){return p[+(n.getHours()>=12)]},S:function(n,t){return It(n.getSeconds(),t,2)},U:function(n,t){return It(fc.sundayOfYear(n),t,2)},w:function(n){return n.getDay()},W:function(n,t){return It(fc.mondayOfYear(n),t,2)},x:t(h),X:t(g),y:function(n,t){return It(n.getFullYear()%100,t,2)},Y:function(n,t){return It(n.getFullYear()%1e4,t,4)},Z:oe,"%":function(){return"%"}},C={a:r,A:u,b:i,B:o,c:a,d:ne,e:ne,H:ee,I:ee,j:te,L:ie,m:Qt,M:re,p:s,S:ue,U:$t,w:Xt,W:Bt,x:c,X:l,y:Jt,Y:Wt,Z:Gt,"%":ae};return t}function It(n,t,e){var r=0>n?"-":"",u=(r?-n:n)+"",i=u.length;return r+(e>i?new Array(e-i+1).join(t)+u:u)}function Zt(n){return new RegExp("^(?:"+n.map(ta.requote).join("|")+")","i")}function Vt(n){for(var t=new a,e=-1,r=n.length;++e<r;)t.set(n[e].toLowerCase(),e);return t}function Xt(n,t,e){vc.lastIndex=0;var r=vc.exec(t.slice(e,e+1));return r?(n.w=+r[0],e+r[0].length):-1}function $t(n,t,e){vc.lastIndex=0;var r=vc.exec(t.slice(e));return r?(n.U=+r[0],e+r[0].length):-1}function Bt(n,t,e){vc.lastIndex=0;var r=vc.exec(t.slice(e));return r?(n.W=+r[0],e+r[0].length):-1}function Wt(n,t,e){vc.lastIndex=0;var r=vc.exec(t.slice(e,e+4));return r?(n.y=+r[0],e+r[0].length):-1}function Jt(n,t,e){vc.lastIndex=0;var r=vc.exec(t.slice(e,e+2));return r?(n.y=Kt(+r[0]),e+r[0].length):-1}function Gt(n,t,e){return/^[+-]\d{4}$/.test(t=t.slice(e,e+5))?(n.Z=-t,e+5):-1}function Kt(n){return n+(n>68?1900:2e3)}function Qt(n,t,e){vc.lastIndex=0;var r=vc.exec(t.slice(e,e+2));return r?(n.m=r[0]-1,e+r[0].length):-1}function ne(n,t,e){vc.lastIndex=0;var r=vc.exec(t.slice(e,e+2));return r?(n.d=+r[0],e+r[0].length):-1}function te(n,t,e){vc.lastIndex=0;var r=vc.exec(t.slice(e,e+3));return r?(n.j=+r[0],e+r[0].length):-1}function ee(n,t,e){vc.lastIndex=0;var r=vc.exec(t.slice(e,e+2));return r?(n.H=+r[0],e+r[0].length):-1}function re(n,t,e){vc.lastIndex=0;var r=vc.exec(t.slice(e,e+2));return r?(n.M=+r[0],e+r[0].length):-1}function ue(n,t,e){vc.lastIndex=0;var r=vc.exec(t.slice(e,e+2));return r?(n.S=+r[0],e+r[0].length):-1}function ie(n,t,e){vc.lastIndex=0;var r=vc.exec(t.slice(e,e+3));return r?(n.L=+r[0],e+r[0].length):-1}function oe(n){var t=n.getTimezoneOffset(),e=t>0?"-":"+",r=0|va(t)/60,u=va(t)%60;return e+It(r,"0",2)+It(u,"0",2)}function ae(n,t,e){dc.lastIndex=0;var r=dc.exec(t.slice(e,e+1));return r?e+r[0].length:-1}function ce(n){for(var t=n.length,e=-1;++e<t;)n[e][0]=this(n[e][0]);return function(t){for(var e=0,r=n[e];!r[1](t);)r=n[++e];return r[0](t)}}function le(){}function se(n,t,e){var r=e.s=n+t,u=r-n,i=r-u;e.t=n-i+(t-u)}function fe(n,t){n&&xc.hasOwnProperty(n.type)&&xc[n.type](n,t)}function he(n,t,e){var r,u=-1,i=n.length-e;for(t.lineStart();++u<i;)r=n[u],t.point(r[0],r[1],r[2]);t.lineEnd()}function ge(n,t){var e=-1,r=n.length;for(t.polygonStart();++e<r;)he(n[e],t,1);t.polygonEnd()}function pe(){function n(n,t){n*=Fa,t=t*Fa/2+Da/4;var e=n-r,o=e>=0?1:-1,a=o*e,c=Math.cos(t),l=Math.sin(t),s=i*l,f=u*c+s*Math.cos(a),h=s*o*Math.sin(a);_c.add(Math.atan2(h,f)),r=n,u=c,i=l}var t,e,r,u,i;wc.point=function(o,a){wc.point=n,r=(t=o)*Fa,u=Math.cos(a=(e=a)*Fa/2+Da/4),i=Math.sin(a)},wc.lineEnd=function(){n(t,e)}}function ve(n){var t=n[0],e=n[1],r=Math.cos(e);return[r*Math.cos(t),r*Math.sin(t),Math.sin(e)]}function de(n,t){return n[0]*t[0]+n[1]*t[1]+n[2]*t[2]}function me(n,t){return[n[1]*t[2]-n[2]*t[1],n[2]*t[0]-n[0]*t[2],n[0]*t[1]-n[1]*t[0]]}function ye(n,t){n[0]+=t[0],n[1]+=t[1],n[2]+=t[2]}function Me(n,t){return[n[0]*t,n[1]*t,n[2]*t]}function xe(n){var t=Math.sqrt(n[0]*n[0]+n[1]*n[1]+n[2]*n[2]);n[0]/=t,n[1]/=t,n[2]/=t}function be(n){return[Math.atan2(n[1],n[0]),tt(n[2])]}function _e(n,t){return va(n[0]-t[0])<Ta&&va(n[1]-t[1])<Ta}function we(n,t){n*=Fa;var e=Math.cos(t*=Fa);Se(e*Math.cos(n),e*Math.sin(n),Math.sin(t))}function Se(n,t,e){++Sc,Ec+=(n-Ec)/Sc,Ac+=(t-Ac)/Sc,Nc+=(e-Nc)/Sc}function ke(){function n(n,u){n*=Fa;var i=Math.cos(u*=Fa),o=i*Math.cos(n),a=i*Math.sin(n),c=Math.sin(u),l=Math.atan2(Math.sqrt((l=e*c-r*a)*l+(l=r*o-t*c)*l+(l=t*a-e*o)*l),t*o+e*a+r*c);kc+=l,Cc+=l*(t+(t=o)),zc+=l*(e+(e=a)),qc+=l*(r+(r=c)),Se(t,e,r)}var t,e,r;Dc.point=function(u,i){u*=Fa;var o=Math.cos(i*=Fa);t=o*Math.cos(u),e=o*Math.sin(u),r=Math.sin(i),Dc.point=n,Se(t,e,r)}}function Ee(){Dc.point=we}function Ae(){function n(n,t){n*=Fa;var e=Math.cos(t*=Fa),o=e*Math.cos(n),a=e*Math.sin(n),c=Math.sin(t),l=u*c-i*a,s=i*o-r*c,f=r*a-u*o,h=Math.sqrt(l*l+s*s+f*f),g=r*o+u*a+i*c,p=h&&-nt(g)/h,v=Math.atan2(h,g);Lc+=p*l,Tc+=p*s,Rc+=p*f,kc+=v,Cc+=v*(r+(r=o)),zc+=v*(u+(u=a)),qc+=v*(i+(i=c)),Se(r,u,i)}var t,e,r,u,i;Dc.point=function(o,a){t=o,e=a,Dc.point=n,o*=Fa;var c=Math.cos(a*=Fa);r=c*Math.cos(o),u=c*Math.sin(o),i=Math.sin(a),Se(r,u,i)},Dc.lineEnd=function(){n(t,e),Dc.lineEnd=Ee,Dc.point=we}}function Ne(n,t){function e(e,r){return e=n(e,r),t(e[0],e[1])}return n.invert&&t.invert&&(e.invert=function(e,r){return e=t.invert(e,r),e&&n.invert(e[0],e[1])}),e}function Ce(){return!0}function ze(n,t,e,r,u){var i=[],o=[];if(n.forEach(function(n){if(!((t=n.length-1)<=0)){var t,e=n[0],r=n[t];if(_e(e,r)){u.lineStart();for(var a=0;t>a;++a)u.point((e=n[a])[0],e[1]);return u.lineEnd(),void 0}var c=new Le(e,n,null,!0),l=new Le(e,null,c,!1);c.o=l,i.push(c),o.push(l),c=new Le(r,n,null,!1),l=new Le(r,null,c,!0),c.o=l,i.push(c),o.push(l)}}),o.sort(t),qe(i),qe(o),i.length){for(var a=0,c=e,l=o.length;l>a;++a)o[a].e=c=!c;for(var s,f,h=i[0];;){for(var g=h,p=!0;g.v;)if((g=g.n)===h)return;s=g.z,u.lineStart();do{if(g.v=g.o.v=!0,g.e){if(p)for(var a=0,l=s.length;l>a;++a)u.point((f=s[a])[0],f[1]);else r(g.x,g.n.x,1,u);g=g.n}else{if(p){s=g.p.z;for(var a=s.length-1;a>=0;--a)u.point((f=s[a])[0],f[1])}else r(g.x,g.p.x,-1,u);g=g.p}g=g.o,s=g.z,p=!p}while(!g.v);u.lineEnd()}}}function qe(n){if(t=n.length){for(var t,e,r=0,u=n[0];++r<t;)u.n=e=n[r],e.p=u,u=e;u.n=e=n[0],e.p=u}}function Le(n,t,e,r){this.x=n,this.z=t,this.o=e,this.e=r,this.v=!1,this.n=this.p=null}function Te(n,t,e,r){return function(u,i){function o(t,e){var r=u(t,e);n(t=r[0],e=r[1])&&i.point(t,e)}function a(n,t){var e=u(n,t);d.point(e[0],e[1])}function c(){y.point=a,d.lineStart()}function l(){y.point=o,d.lineEnd()}function s(n,t){v.push([n,t]);var e=u(n,t);x.point(e[0],e[1])}function f(){x.lineStart(),v=[]}function h(){s(v[0][0],v[0][1]),x.lineEnd();var n,t=x.clean(),e=M.buffer(),r=e.length;if(v.pop(),p.push(v),v=null,r)if(1&t){n=e[0];var u,r=n.length-1,o=-1;if(r>0){for(b||(i.polygonStart(),b=!0),i.lineStart();++o<r;)i.point((u=n[o])[0],u[1]);i.lineEnd()}}else r>1&&2&t&&e.push(e.pop().concat(e.shift())),g.push(e.filter(Re))}var g,p,v,d=t(i),m=u.invert(r[0],r[1]),y={point:o,lineStart:c,lineEnd:l,polygonStart:function(){y.point=s,y.lineStart=f,y.lineEnd=h,g=[],p=[]},polygonEnd:function(){y.point=o,y.lineStart=c,y.lineEnd=l,g=ta.merge(g);var n=He(m,p);g.length?(b||(i.polygonStart(),b=!0),ze(g,Pe,n,e,i)):n&&(b||(i.polygonStart(),b=!0),i.lineStart(),e(null,null,1,i),i.lineEnd()),b&&(i.polygonEnd(),b=!1),g=p=null},sphere:function(){i.polygonStart(),i.lineStart(),e(null,null,1,i),i.lineEnd(),i.polygonEnd()}},M=De(),x=t(M),b=!1;return y}}function Re(n){return n.length>1}function De(){var n,t=[];return{lineStart:function(){t.push(n=[])},point:function(t,e){n.push([t,e])},lineEnd:y,buffer:function(){var e=t;return t=[],n=null,e},rejoin:function(){t.length>1&&t.push(t.pop().concat(t.shift()))}}}function Pe(n,t){return((n=n.x)[0]<0?n[1]-ja-Ta:ja-n[1])-((t=t.x)[0]<0?t[1]-ja-Ta:ja-t[1])}function Ue(n){var t,e=0/0,r=0/0,u=0/0;return{lineStart:function(){n.lineStart(),t=1},point:function(i,o){var a=i>0?Da:-Da,c=va(i-e);va(c-Da)<Ta?(n.point(e,r=(r+o)/2>0?ja:-ja),n.point(u,r),n.lineEnd(),n.lineStart(),n.point(a,r),n.point(i,r),t=0):u!==a&&c>=Da&&(va(e-u)<Ta&&(e-=u*Ta),va(i-a)<Ta&&(i-=a*Ta),r=je(e,r,i,o),n.point(u,r),n.lineEnd(),n.lineStart(),n.point(a,r),t=0),n.point(e=i,r=o),u=a},lineEnd:function(){n.lineEnd(),e=r=0/0},clean:function(){return 2-t}}}function je(n,t,e,r){var u,i,o=Math.sin(n-e);return va(o)>Ta?Math.atan((Math.sin(t)*(i=Math.cos(r))*Math.sin(e)-Math.sin(r)*(u=Math.cos(t))*Math.sin(n))/(u*i*o)):(t+r)/2}function Fe(n,t,e,r){var u;if(null==n)u=e*ja,r.point(-Da,u),r.point(0,u),r.point(Da,u),r.point(Da,0),r.point(Da,-u),r.point(0,-u),r.point(-Da,-u),r.point(-Da,0),r.point(-Da,u);else if(va(n[0]-t[0])>Ta){var i=n[0]<t[0]?Da:-Da;u=e*i/2,r.point(-i,u),r.point(0,u),r.point(i,u)}else r.point(t[0],t[1])}function He(n,t){var e=n[0],r=n[1],u=[Math.sin(e),-Math.cos(e),0],i=0,o=0;_c.reset();for(var a=0,c=t.length;c>a;++a){var l=t[a],s=l.length;if(s)for(var f=l[0],h=f[0],g=f[1]/2+Da/4,p=Math.sin(g),v=Math.cos(g),d=1;;){d===s&&(d=0),n=l[d];var m=n[0],y=n[1]/2+Da/4,M=Math.sin(y),x=Math.cos(y),b=m-h,_=b>=0?1:-1,w=_*b,S=w>Da,k=p*M;if(_c.add(Math.atan2(k*_*Math.sin(w),v*x+k*Math.cos(w))),i+=S?b+_*Pa:b,S^h>=e^m>=e){var E=me(ve(f),ve(n));xe(E);var A=me(u,E);xe(A);var N=(S^b>=0?-1:1)*tt(A[2]);(r>N||r===N&&(E[0]||E[1]))&&(o+=S^b>=0?1:-1)}if(!d++)break;h=m,p=M,v=x,f=n}}return(-Ta>i||Ta>i&&0>_c)^1&o}function Oe(n){function t(n,t){return Math.cos(n)*Math.cos(t)>i}function e(n){var e,i,c,l,s;return{lineStart:function(){l=c=!1,s=1},point:function(f,h){var g,p=[f,h],v=t(f,h),d=o?v?0:u(f,h):v?u(f+(0>f?Da:-Da),h):0;if(!e&&(l=c=v)&&n.lineStart(),v!==c&&(g=r(e,p),(_e(e,g)||_e(p,g))&&(p[0]+=Ta,p[1]+=Ta,v=t(p[0],p[1]))),v!==c)s=0,v?(n.lineStart(),g=r(p,e),n.point(g[0],g[1])):(g=r(e,p),n.point(g[0],g[1]),n.lineEnd()),e=g;else if(a&&e&&o^v){var m;d&i||!(m=r(p,e,!0))||(s=0,o?(n.lineStart(),n.point(m[0][0],m[0][1]),n.point(m[1][0],m[1][1]),n.lineEnd()):(n.point(m[1][0],m[1][1]),n.lineEnd(),n.lineStart(),n.point(m[0][0],m[0][1])))}!v||e&&_e(e,p)||n.point(p[0],p[1]),e=p,c=v,i=d},lineEnd:function(){c&&n.lineEnd(),e=null},clean:function(){return s|(l&&c)<<1}}}function r(n,t,e){var r=ve(n),u=ve(t),o=[1,0,0],a=me(r,u),c=de(a,a),l=a[0],s=c-l*l;if(!s)return!e&&n;var f=i*c/s,h=-i*l/s,g=me(o,a),p=Me(o,f),v=Me(a,h);ye(p,v);var d=g,m=de(p,d),y=de(d,d),M=m*m-y*(de(p,p)-1);if(!(0>M)){var x=Math.sqrt(M),b=Me(d,(-m-x)/y);if(ye(b,p),b=be(b),!e)return b;var _,w=n[0],S=t[0],k=n[1],E=t[1];w>S&&(_=w,w=S,S=_);var A=S-w,N=va(A-Da)<Ta,C=N||Ta>A;if(!N&&k>E&&(_=k,k=E,E=_),C?N?k+E>0^b[1]<(va(b[0]-w)<Ta?k:E):k<=b[1]&&b[1]<=E:A>Da^(w<=b[0]&&b[0]<=S)){var z=Me(d,(-m+x)/y);return ye(z,p),[b,be(z)]}}}function u(t,e){var r=o?n:Da-n,u=0;return-r>t?u|=1:t>r&&(u|=2),-r>e?u|=4:e>r&&(u|=8),u}var i=Math.cos(n),o=i>0,a=va(i)>Ta,c=pr(n,6*Fa);return Te(t,e,c,o?[0,-n]:[-Da,n-Da])}function Ye(n,t,e,r){return function(u){var i,o=u.a,a=u.b,c=o.x,l=o.y,s=a.x,f=a.y,h=0,g=1,p=s-c,v=f-l;if(i=n-c,p||!(i>0)){if(i/=p,0>p){if(h>i)return;g>i&&(g=i)}else if(p>0){if(i>g)return;i>h&&(h=i)}if(i=e-c,p||!(0>i)){if(i/=p,0>p){if(i>g)return;i>h&&(h=i)}else if(p>0){if(h>i)return;g>i&&(g=i)}if(i=t-l,v||!(i>0)){if(i/=v,0>v){if(h>i)return;g>i&&(g=i)}else if(v>0){if(i>g)return;i>h&&(h=i)}if(i=r-l,v||!(0>i)){if(i/=v,0>v){if(i>g)return;i>h&&(h=i)}else if(v>0){if(h>i)return;g>i&&(g=i)}return h>0&&(u.a={x:c+h*p,y:l+h*v}),1>g&&(u.b={x:c+g*p,y:l+g*v}),u}}}}}}function Ie(n,t,e,r){function u(r,u){return va(r[0]-n)<Ta?u>0?0:3:va(r[0]-e)<Ta?u>0?2:1:va(r[1]-t)<Ta?u>0?1:0:u>0?3:2}function i(n,t){return o(n.x,t.x)}function o(n,t){var e=u(n,1),r=u(t,1);return e!==r?e-r:0===e?t[1]-n[1]:1===e?n[0]-t[0]:2===e?n[1]-t[1]:t[0]-n[0]}return function(a){function c(n){for(var t=0,e=d.length,r=n[1],u=0;e>u;++u)for(var i,o=1,a=d[u],c=a.length,l=a[0];c>o;++o)i=a[o],l[1]<=r?i[1]>r&&Q(l,i,n)>0&&++t:i[1]<=r&&Q(l,i,n)<0&&--t,l=i;return 0!==t}function l(i,a,c,l){var s=0,f=0;if(null==i||(s=u(i,c))!==(f=u(a,c))||o(i,a)<0^c>0){do l.point(0===s||3===s?n:e,s>1?r:t);while((s=(s+c+4)%4)!==f)}else l.point(a[0],a[1])}function s(u,i){return u>=n&&e>=u&&i>=t&&r>=i}function f(n,t){s(n,t)&&a.point(n,t)}function h(){C.point=p,d&&d.push(m=[]),S=!0,w=!1,b=_=0/0}function g(){v&&(p(y,M),x&&w&&A.rejoin(),v.push(A.buffer())),C.point=f,w&&a.lineEnd()}function p(n,t){n=Math.max(-Uc,Math.min(Uc,n)),t=Math.max(-Uc,Math.min(Uc,t));var e=s(n,t);if(d&&m.push([n,t]),S)y=n,M=t,x=e,S=!1,e&&(a.lineStart(),a.point(n,t));else if(e&&w)a.point(n,t);else{var r={a:{x:b,y:_},b:{x:n,y:t}};N(r)?(w||(a.lineStart(),a.point(r.a.x,r.a.y)),a.point(r.b.x,r.b.y),e||a.lineEnd(),k=!1):e&&(a.lineStart(),a.point(n,t),k=!1)}b=n,_=t,w=e}var v,d,m,y,M,x,b,_,w,S,k,E=a,A=De(),N=Ye(n,t,e,r),C={point:f,lineStart:h,lineEnd:g,polygonStart:function(){a=A,v=[],d=[],k=!0},polygonEnd:function(){a=E,v=ta.merge(v);var t=c([n,r]),e=k&&t,u=v.length;(e||u)&&(a.polygonStart(),e&&(a.lineStart(),l(null,null,1,a),a.lineEnd()),u&&ze(v,i,t,l,a),a.polygonEnd()),v=d=m=null}};return C}}function Ze(n){var t=0,e=Da/3,r=or(n),u=r(t,e);return u.parallels=function(n){return arguments.length?r(t=n[0]*Da/180,e=n[1]*Da/180):[180*(t/Da),180*(e/Da)]},u}function Ve(n,t){function e(n,t){var e=Math.sqrt(i-2*u*Math.sin(t))/u;return[e*Math.sin(n*=u),o-e*Math.cos(n)]}var r=Math.sin(n),u=(r+Math.sin(t))/2,i=1+r*(2*u-r),o=Math.sqrt(i)/u;return e.invert=function(n,t){var e=o-t;return[Math.atan2(n,e)/u,tt((i-(n*n+e*e)*u*u)/(2*u))]},e}function Xe(){function n(n,t){Fc+=u*n-r*t,r=n,u=t}var t,e,r,u;Zc.point=function(i,o){Zc.point=n,t=r=i,e=u=o},Zc.lineEnd=function(){n(t,e)}}function $e(n,t){Hc>n&&(Hc=n),n>Yc&&(Yc=n),Oc>t&&(Oc=t),t>Ic&&(Ic=t)}function Be(){function n(n,t){o.push("M",n,",",t,i)}function t(n,t){o.push("M",n,",",t),a.point=e}function e(n,t){o.push("L",n,",",t)}function r(){a.point=n}function u(){o.push("Z")}var i=We(4.5),o=[],a={point:n,lineStart:function(){a.point=t},lineEnd:r,polygonStart:function(){a.lineEnd=u},polygonEnd:function(){a.lineEnd=r,a.point=n},pointRadius:function(n){return i=We(n),a},result:function(){if(o.length){var n=o.join("");return o=[],n}}};return a}function We(n){return"m0,"+n+"a"+n+","+n+" 0 1,1 0,"+-2*n+"a"+n+","+n+" 0 1,1 0,"+2*n+"z"}function Je(n,t){Ec+=n,Ac+=t,++Nc}function Ge(){function n(n,r){var u=n-t,i=r-e,o=Math.sqrt(u*u+i*i);Cc+=o*(t+n)/2,zc+=o*(e+r)/2,qc+=o,Je(t=n,e=r)}var t,e;Xc.point=function(r,u){Xc.point=n,Je(t=r,e=u)}}function Ke(){Xc.point=Je}function Qe(){function n(n,t){var e=n-r,i=t-u,o=Math.sqrt(e*e+i*i);Cc+=o*(r+n)/2,zc+=o*(u+t)/2,qc+=o,o=u*n-r*t,Lc+=o*(r+n),Tc+=o*(u+t),Rc+=3*o,Je(r=n,u=t)}var t,e,r,u;Xc.point=function(i,o){Xc.point=n,Je(t=r=i,e=u=o)},Xc.lineEnd=function(){n(t,e)}}function nr(n){function t(t,e){n.moveTo(t+o,e),n.arc(t,e,o,0,Pa)}function e(t,e){n.moveTo(t,e),a.point=r}function r(t,e){n.lineTo(t,e)}function u(){a.point=t}function i(){n.closePath()}var o=4.5,a={point:t,lineStart:function(){a.point=e},lineEnd:u,polygonStart:function(){a.lineEnd=i},polygonEnd:function(){a.lineEnd=u,a.point=t},pointRadius:function(n){return o=n,a},result:y};return a}function tr(n){function t(n){return(a?r:e)(n)}function e(t){return ur(t,function(e,r){e=n(e,r),t.point(e[0],e[1])})}function r(t){function e(e,r){e=n(e,r),t.point(e[0],e[1])}function r(){M=0/0,S.point=i,t.lineStart()}function i(e,r){var i=ve([e,r]),o=n(e,r);u(M,x,y,b,_,w,M=o[0],x=o[1],y=e,b=i[0],_=i[1],w=i[2],a,t),t.point(M,x)}function o(){S.point=e,t.lineEnd()}function c(){r(),S.point=l,S.lineEnd=s}function l(n,t){i(f=n,h=t),g=M,p=x,v=b,d=_,m=w,S.point=i}function s(){u(M,x,y,b,_,w,g,p,f,v,d,m,a,t),S.lineEnd=o,o()}var f,h,g,p,v,d,m,y,M,x,b,_,w,S={point:e,lineStart:r,lineEnd:o,polygonStart:function(){t.polygonStart(),S.lineStart=c},polygonEnd:function(){t.polygonEnd(),S.lineStart=r}};return S}function u(t,e,r,a,c,l,s,f,h,g,p,v,d,m){var y=s-t,M=f-e,x=y*y+M*M;if(x>4*i&&d--){var b=a+g,_=c+p,w=l+v,S=Math.sqrt(b*b+_*_+w*w),k=Math.asin(w/=S),E=va(va(w)-1)<Ta||va(r-h)<Ta?(r+h)/2:Math.atan2(_,b),A=n(E,k),N=A[0],C=A[1],z=N-t,q=C-e,L=M*z-y*q;
2305 ;!function(){function n(n,t){return t>n?-1:n>t?1:n>=t?0:0/0}function t(n){return null===n?0/0:+n}function e(n){return!isNaN(n)}function r(n){return{left:function(t,e,r,u){for(arguments.length<3&&(r=0),arguments.length<4&&(u=t.length);u>r;){var i=r+u>>>1;n(t[i],e)<0?r=i+1:u=i}return r},right:function(t,e,r,u){for(arguments.length<3&&(r=0),arguments.length<4&&(u=t.length);u>r;){var i=r+u>>>1;n(t[i],e)>0?u=i:r=i+1}return r}}}function u(n){return n.length}function i(n){for(var t=1;n*t%1;)t*=10;return t}function o(n,t){for(var e in t)Object.defineProperty(n.prototype,e,{value:t[e],enumerable:!1})}function a(){this._=Object.create(null)}function c(n){return(n+="")===da||n[0]===ma?ma+n:n}function l(n){return(n+="")[0]===ma?n.slice(1):n}function s(n){return c(n)in this._}function f(n){return(n=c(n))in this._&&delete this._[n]}function h(){var n=[];for(var t in this._)n.push(l(t));return n}function g(){var n=0;for(var t in this._)++n;return n}function p(){for(var n in this._)return!1;return!0}function v(){this._=Object.create(null)}function d(n,t,e){return function(){var r=e.apply(t,arguments);return r===t?n:r}}function m(n,t){if(t in n)return t;t=t.charAt(0).toUpperCase()+t.slice(1);for(var e=0,r=ya.length;r>e;++e){var u=ya[e]+t;if(u in n)return u}}function y(){}function M(){}function x(n){function t(){for(var t,r=e,u=-1,i=r.length;++u<i;)(t=r[u].on)&&t.apply(this,arguments);return n}var e=[],r=new a;return t.on=function(t,u){var i,o=r.get(t);return arguments.length<2?o&&o.on:(o&&(o.on=null,e=e.slice(0,i=e.indexOf(o)).concat(e.slice(i+1)),r.remove(t)),u&&e.push(r.set(t,{on:u})),n)},t}function b(){ta.event.preventDefault()}function _(){for(var n,t=ta.event;n=t.sourceEvent;)t=n;return t}function w(n){for(var t=new M,e=0,r=arguments.length;++e<r;)t[arguments[e]]=x(t);return t.of=function(e,r){return function(u){try{var i=u.sourceEvent=ta.event;u.target=n,ta.event=u,t[u.type].apply(e,r)}finally{ta.event=i}}},t}function S(n){return xa(n,ka),n}function k(n){return"function"==typeof n?n:function(){return ba(n,this)}}function E(n){return"function"==typeof n?n:function(){return _a(n,this)}}function A(n,t){function e(){this.removeAttribute(n)}function r(){this.removeAttributeNS(n.space,n.local)}function u(){this.setAttribute(n,t)}function i(){this.setAttributeNS(n.space,n.local,t)}function o(){var e=t.apply(this,arguments);null==e?this.removeAttribute(n):this.setAttribute(n,e)}function a(){var e=t.apply(this,arguments);null==e?this.removeAttributeNS(n.space,n.local):this.setAttributeNS(n.space,n.local,e)}return n=ta.ns.qualify(n),null==t?n.local?r:e:"function"==typeof t?n.local?a:o:n.local?i:u}function N(n){return n.trim().replace(/\s+/g," ")}function C(n){return new RegExp("(?:^|\\s+)"+ta.requote(n)+"(?:\\s+|$)","g")}function z(n){return(n+"").trim().split(/^|\s+/)}function q(n,t){function e(){for(var e=-1;++e<u;)n[e](this,t)}function r(){for(var e=-1,r=t.apply(this,arguments);++e<u;)n[e](this,r)}n=z(n).map(L);var u=n.length;return"function"==typeof t?r:e}function L(n){var t=C(n);return function(e,r){if(u=e.classList)return r?u.add(n):u.remove(n);var u=e.getAttribute("class")||"";r?(t.lastIndex=0,t.test(u)||e.setAttribute("class",N(u+" "+n))):e.setAttribute("class",N(u.replace(t," ")))}}function T(n,t,e){function r(){this.style.removeProperty(n)}function u(){this.style.setProperty(n,t,e)}function i(){var r=t.apply(this,arguments);null==r?this.style.removeProperty(n):this.style.setProperty(n,r,e)}return null==t?r:"function"==typeof t?i:u}function R(n,t){function e(){delete this[n]}function r(){this[n]=t}function u(){var e=t.apply(this,arguments);null==e?delete this[n]:this[n]=e}return null==t?e:"function"==typeof t?u:r}function D(n){return"function"==typeof n?n:(n=ta.ns.qualify(n)).local?function(){return this.ownerDocument.createElementNS(n.space,n.local)}:function(){return this.ownerDocument.createElementNS(this.namespaceURI,n)}}function P(){var n=this.parentNode;n&&n.removeChild(this)}function U(n){return{__data__:n}}function j(n){return function(){return Sa(this,n)}}function F(t){return arguments.length||(t=n),function(n,e){return n&&e?t(n.__data__,e.__data__):!n-!e}}function H(n,t){for(var e=0,r=n.length;r>e;e++)for(var u,i=n[e],o=0,a=i.length;a>o;o++)(u=i[o])&&t(u,o,e);return n}function O(n){return xa(n,Aa),n}function Y(n){var t,e;return function(r,u,i){var o,a=n[i].update,c=a.length;for(i!=e&&(e=i,t=0),u>=t&&(t=u+1);!(o=a[t])&&++t<c;);return o}}function I(n){var t=n.__transition__;t&&++t.active}function Z(n,t,e){function r(){var t=this[o];t&&(this.removeEventListener(n,t,t.$),delete this[o])}function u(){var u=c(t,ra(arguments));r.call(this),this.addEventListener(n,this[o]=u,u.$=e),u._=t}function i(){var t,e=new RegExp("^__on([^.]+)"+ta.requote(n)+"$");for(var r in this)if(t=r.match(e)){var u=this[r];this.removeEventListener(t[1],u,u.$),delete this[r]}}var o="__on"+n,a=n.indexOf("."),c=V;a>0&&(n=n.slice(0,a));var l=Ca.get(n);return l&&(n=l,c=X),a?t?u:r:t?y:i}function V(n,t){return function(e){var r=ta.event;ta.event=e,t[0]=this.__data__;try{n.apply(this,t)}finally{ta.event=r}}}function X(n,t){var e=V(n,t);return function(n){var t=this,r=n.relatedTarget;r&&(r===t||8&r.compareDocumentPosition(t))||e.call(t,n)}}function $(){var n=".dragsuppress-"+ ++qa,t="click"+n,e=ta.select(oa).on("touchmove"+n,b).on("dragstart"+n,b).on("selectstart"+n,b);if(za){var r=ia.style,u=r[za];r[za]="none"}return function(i){if(e.on(n,null),za&&(r[za]=u),i){var o=function(){e.on(t,null)};e.on(t,function(){b(),o()},!0),setTimeout(o,0)}}}function B(n,t){t.changedTouches&&(t=t.changedTouches[0]);var e=n.ownerSVGElement||n;if(e.createSVGPoint){var r=e.createSVGPoint();if(0>La&&(oa.scrollX||oa.scrollY)){e=ta.select("body").append("svg").style({position:"absolute",top:0,left:0,margin:0,padding:0,border:"none"},"important");var u=e[0][0].getScreenCTM();La=!(u.f||u.e),e.remove()}return La?(r.x=t.pageX,r.y=t.pageY):(r.x=t.clientX,r.y=t.clientY),r=r.matrixTransform(n.getScreenCTM().inverse()),[r.x,r.y]}var i=n.getBoundingClientRect();return[t.clientX-i.left-n.clientLeft,t.clientY-i.top-n.clientTop]}function W(){return ta.event.changedTouches[0].identifier}function J(){return ta.event.target}function G(){return oa}function K(n){return n>0?1:0>n?-1:0}function Q(n,t,e){return(t[0]-n[0])*(e[1]-n[1])-(t[1]-n[1])*(e[0]-n[0])}function nt(n){return n>1?0:-1>n?Da:Math.acos(n)}function tt(n){return n>1?ja:-1>n?-ja:Math.asin(n)}function et(n){return((n=Math.exp(n))-1/n)/2}function rt(n){return((n=Math.exp(n))+1/n)/2}function ut(n){return((n=Math.exp(2*n))-1)/(n+1)}function it(n){return(n=Math.sin(n/2))*n}function ot(){}function at(n,t,e){return this instanceof at?(this.h=+n,this.s=+t,void(this.l=+e)):arguments.length<2?n instanceof at?new at(n.h,n.s,n.l):bt(""+n,_t,at):new at(n,t,e)}function ct(n,t,e){function r(n){return n>360?n-=360:0>n&&(n+=360),60>n?i+(o-i)*n/60:180>n?o:240>n?i+(o-i)*(240-n)/60:i}function u(n){return Math.round(255*r(n))}var i,o;return n=isNaN(n)?0:(n%=360)<0?n+360:n,t=isNaN(t)?0:0>t?0:t>1?1:t,e=0>e?0:e>1?1:e,o=.5>=e?e*(1+t):e+t-e*t,i=2*e-o,new mt(u(n+120),u(n),u(n-120))}function lt(n,t,e){return this instanceof lt?(this.h=+n,this.c=+t,void(this.l=+e)):arguments.length<2?n instanceof lt?new lt(n.h,n.c,n.l):n instanceof ft?gt(n.l,n.a,n.b):gt((n=wt((n=ta.rgb(n)).r,n.g,n.b)).l,n.a,n.b):new lt(n,t,e)}function st(n,t,e){return isNaN(n)&&(n=0),isNaN(t)&&(t=0),new ft(e,Math.cos(n*=Fa)*t,Math.sin(n)*t)}function ft(n,t,e){return this instanceof ft?(this.l=+n,this.a=+t,void(this.b=+e)):arguments.length<2?n instanceof ft?new ft(n.l,n.a,n.b):n instanceof lt?st(n.h,n.c,n.l):wt((n=mt(n)).r,n.g,n.b):new ft(n,t,e)}function ht(n,t,e){var r=(n+16)/116,u=r+t/500,i=r-e/200;return u=pt(u)*Ja,r=pt(r)*Ga,i=pt(i)*Ka,new mt(dt(3.2404542*u-1.5371385*r-.4985314*i),dt(-.969266*u+1.8760108*r+.041556*i),dt(.0556434*u-.2040259*r+1.0572252*i))}function gt(n,t,e){return n>0?new lt(Math.atan2(e,t)*Ha,Math.sqrt(t*t+e*e),n):new lt(0/0,0/0,n)}function pt(n){return n>.206893034?n*n*n:(n-4/29)/7.787037}function vt(n){return n>.008856?Math.pow(n,1/3):7.787037*n+4/29}function dt(n){return Math.round(255*(.00304>=n?12.92*n:1.055*Math.pow(n,1/2.4)-.055))}function mt(n,t,e){return this instanceof mt?(this.r=~~n,this.g=~~t,void(this.b=~~e)):arguments.length<2?n instanceof mt?new mt(n.r,n.g,n.b):bt(""+n,mt,ct):new mt(n,t,e)}function yt(n){return new mt(n>>16,255&n>>8,255&n)}function Mt(n){return yt(n)+""}function xt(n){return 16>n?"0"+Math.max(0,n).toString(16):Math.min(255,n).toString(16)}function bt(n,t,e){var r,u,i,o=0,a=0,c=0;if(r=/([a-z]+)\((.*)\)/i.exec(n))switch(u=r[2].split(","),r[1]){case"hsl":return e(parseFloat(u[0]),parseFloat(u[1])/100,parseFloat(u[2])/100);case"rgb":return t(kt(u[0]),kt(u[1]),kt(u[2]))}return(i=tc.get(n))?t(i.r,i.g,i.b):(null==n||"#"!==n.charAt(0)||isNaN(i=parseInt(n.slice(1),16))||(4===n.length?(o=(3840&i)>>4,o=o>>4|o,a=240&i,a=a>>4|a,c=15&i,c=c<<4|c):7===n.length&&(o=(16711680&i)>>16,a=(65280&i)>>8,c=255&i)),t(o,a,c))}function _t(n,t,e){var r,u,i=Math.min(n/=255,t/=255,e/=255),o=Math.max(n,t,e),a=o-i,c=(o+i)/2;return a?(u=.5>c?a/(o+i):a/(2-o-i),r=n==o?(t-e)/a+(e>t?6:0):t==o?(e-n)/a+2:(n-t)/a+4,r*=60):(r=0/0,u=c>0&&1>c?0:r),new at(r,u,c)}function wt(n,t,e){n=St(n),t=St(t),e=St(e);var r=vt((.4124564*n+.3575761*t+.1804375*e)/Ja),u=vt((.2126729*n+.7151522*t+.072175*e)/Ga),i=vt((.0193339*n+.119192*t+.9503041*e)/Ka);return ft(116*u-16,500*(r-u),200*(u-i))}function St(n){return(n/=255)<=.04045?n/12.92:Math.pow((n+.055)/1.055,2.4)}function kt(n){var t=parseFloat(n);return"%"===n.charAt(n.length-1)?Math.round(2.55*t):t}function Et(n){return"function"==typeof n?n:function(){return n}}function At(n){return n}function Nt(n){return function(t,e,r){return 2===arguments.length&&"function"==typeof e&&(r=e,e=null),Ct(t,e,n,r)}}function Ct(n,t,e,r){function u(){var n,t=c.status;if(!t&&qt(c)||t>=200&&300>t||304===t){try{n=e.call(i,c)}catch(r){return o.error.call(i,r),void 0}o.load.call(i,n)}else o.error.call(i,c)}var i={},o=ta.dispatch("beforesend","progress","load","error"),a={},c=new XMLHttpRequest,l=null;return!oa.XDomainRequest||"withCredentials"in c||!/^(http(s)?:)?\/\//.test(n)||(c=new XDomainRequest),"onload"in c?c.onload=c.onerror=u:c.onreadystatechange=function(){c.readyState>3&&u()},c.onprogress=function(n){var t=ta.event;ta.event=n;try{o.progress.call(i,c)}finally{ta.event=t}},i.header=function(n,t){return n=(n+"").toLowerCase(),arguments.length<2?a[n]:(null==t?delete a[n]:a[n]=t+"",i)},i.mimeType=function(n){return arguments.length?(t=null==n?null:n+"",i):t},i.responseType=function(n){return arguments.length?(l=n,i):l},i.response=function(n){return e=n,i},["get","post"].forEach(function(n){i[n]=function(){return i.send.apply(i,[n].concat(ra(arguments)))}}),i.send=function(e,r,u){if(2===arguments.length&&"function"==typeof r&&(u=r,r=null),c.open(e,n,!0),null==t||"accept"in a||(a.accept=t+",*/*"),c.setRequestHeader)for(var s in a)c.setRequestHeader(s,a[s]);return null!=t&&c.overrideMimeType&&c.overrideMimeType(t),null!=l&&(c.responseType=l),null!=u&&i.on("error",u).on("load",function(n){u(null,n)}),o.beforesend.call(i,c),c.send(null==r?null:r),i},i.abort=function(){return c.abort(),i},ta.rebind(i,o,"on"),null==r?i:i.get(zt(r))}function zt(n){return 1===n.length?function(t,e){n(null==t?e:null)}:n}function qt(n){var t=n.responseType;return t&&"text"!==t?n.response:n.responseText}function Lt(){var n=Tt(),t=Rt()-n;t>24?(isFinite(t)&&(clearTimeout(ic),ic=setTimeout(Lt,t)),uc=0):(uc=1,ac(Lt))}function Tt(){var n=Date.now();for(oc=ec;oc;)n>=oc.t&&(oc.f=oc.c(n-oc.t)),oc=oc.n;return n}function Rt(){for(var n,t=ec,e=1/0;t;)t.f?t=n?n.n=t.n:ec=t.n:(t.t<e&&(e=t.t),t=(n=t).n);return rc=n,e}function Dt(n,t){return t-(n?Math.ceil(Math.log(n)/Math.LN10):1)}function Pt(n,t){var e=Math.pow(10,3*va(8-t));return{scale:t>8?function(n){return n/e}:function(n){return n*e},symbol:n}}function Ut(n){var t=n.decimal,e=n.thousands,r=n.grouping,u=n.currency,i=r&&e?function(n,t){for(var u=n.length,i=[],o=0,a=r[0],c=0;u>0&&a>0&&(c+a+1>t&&(a=Math.max(1,t-c)),i.push(n.substring(u-=a,u+a)),!((c+=a+1)>t));)a=r[o=(o+1)%r.length];return i.reverse().join(e)}:At;return function(n){var e=lc.exec(n),r=e[1]||" ",o=e[2]||">",a=e[3]||"-",c=e[4]||"",l=e[5],s=+e[6],f=e[7],h=e[8],g=e[9],p=1,v="",d="",m=!1,y=!0;switch(h&&(h=+h.substring(1)),(l||"0"===r&&"="===o)&&(l=r="0",o="="),g){case"n":f=!0,g="g";break;case"%":p=100,d="%",g="f";break;case"p":p=100,d="%",g="r";break;case"b":case"o":case"x":case"X":"#"===c&&(v="0"+g.toLowerCase());case"c":y=!1;case"d":m=!0,h=0;break;case"s":p=-1,g="r"}"$"===c&&(v=u[0],d=u[1]),"r"!=g||h||(g="g"),null!=h&&("g"==g?h=Math.max(1,Math.min(21,h)):("e"==g||"f"==g)&&(h=Math.max(0,Math.min(20,h)))),g=sc.get(g)||jt;var M=l&&f;return function(n){var e=d;if(m&&n%1)return"";var u=0>n||0===n&&0>1/n?(n=-n,"-"):"-"===a?"":a;if(0>p){var c=ta.formatPrefix(n,h);n=c.scale(n),e=c.symbol+d}else n*=p;n=g(n,h);var x,b,_=n.lastIndexOf(".");if(0>_){var w=y?n.lastIndexOf("e"):-1;0>w?(x=n,b=""):(x=n.substring(0,w),b=n.substring(w))}else x=n.substring(0,_),b=t+n.substring(_+1);!l&&f&&(x=i(x,1/0));var S=v.length+x.length+b.length+(M?0:u.length),k=s>S?new Array(S=s-S+1).join(r):"";return M&&(x=i(k+x,k.length?s-b.length:1/0)),u+=v,n=x+b,("<"===o?u+n+k:">"===o?k+u+n:"^"===o?k.substring(0,S>>=1)+u+n+k.substring(S):u+(M?n:k+n))+e}}}function jt(n){return n+""}function Ft(){this._=new Date(arguments.length>1?Date.UTC.apply(this,arguments):arguments[0])}function Ht(n,t,e){function r(t){var e=n(t),r=i(e,1);return r-t>t-e?e:r}function u(e){return t(e=n(new hc(e-1)),1),e}function i(n,e){return t(n=new hc(+n),e),n}function o(n,r,i){var o=u(n),a=[];if(i>1)for(;r>o;)e(o)%i||a.push(new Date(+o)),t(o,1);else for(;r>o;)a.push(new Date(+o)),t(o,1);return a}function a(n,t,e){try{hc=Ft;var r=new Ft;return r._=n,o(r,t,e)}finally{hc=Date}}n.floor=n,n.round=r,n.ceil=u,n.offset=i,n.range=o;var c=n.utc=Ot(n);return c.floor=c,c.round=Ot(r),c.ceil=Ot(u),c.offset=Ot(i),c.range=a,n}function Ot(n){return function(t,e){try{hc=Ft;var r=new Ft;return r._=t,n(r,e)._}finally{hc=Date}}}function Yt(n){function t(n){function t(t){for(var e,u,i,o=[],a=-1,c=0;++a<r;)37===n.charCodeAt(a)&&(o.push(n.slice(c,a)),null!=(u=pc[e=n.charAt(++a)])&&(e=n.charAt(++a)),(i=N[e])&&(e=i(t,null==u?"e"===e?" ":"0":u)),o.push(e),c=a+1);return o.push(n.slice(c,a)),o.join("")}var r=n.length;return t.parse=function(t){var r={y:1900,m:0,d:1,H:0,M:0,S:0,L:0,Z:null},u=e(r,n,t,0);if(u!=t.length)return null;"p"in r&&(r.H=r.H%12+12*r.p);var i=null!=r.Z&&hc!==Ft,o=new(i?Ft:hc);return"j"in r?o.setFullYear(r.y,0,r.j):"w"in r&&("W"in r||"U"in r)?(o.setFullYear(r.y,0,1),o.setFullYear(r.y,0,"W"in r?(r.w+6)%7+7*r.W-(o.getDay()+5)%7:r.w+7*r.U-(o.getDay()+6)%7)):o.setFullYear(r.y,r.m,r.d),o.setHours(r.H+(0|r.Z/100),r.M+r.Z%100,r.S,r.L),i?o._:o},t.toString=function(){return n},t}function e(n,t,e,r){for(var u,i,o,a=0,c=t.length,l=e.length;c>a;){if(r>=l)return-1;if(u=t.charCodeAt(a++),37===u){if(o=t.charAt(a++),i=C[o in pc?t.charAt(a++):o],!i||(r=i(n,e,r))<0)return-1}else if(u!=e.charCodeAt(r++))return-1}return r}function r(n,t,e){_.lastIndex=0;var r=_.exec(t.slice(e));return r?(n.w=w.get(r[0].toLowerCase()),e+r[0].length):-1}function u(n,t,e){x.lastIndex=0;var r=x.exec(t.slice(e));return r?(n.w=b.get(r[0].toLowerCase()),e+r[0].length):-1}function i(n,t,e){E.lastIndex=0;var r=E.exec(t.slice(e));return r?(n.m=A.get(r[0].toLowerCase()),e+r[0].length):-1}function o(n,t,e){S.lastIndex=0;var r=S.exec(t.slice(e));return r?(n.m=k.get(r[0].toLowerCase()),e+r[0].length):-1}function a(n,t,r){return e(n,N.c.toString(),t,r)}function c(n,t,r){return e(n,N.x.toString(),t,r)}function l(n,t,r){return e(n,N.X.toString(),t,r)}function s(n,t,e){var r=M.get(t.slice(e,e+=2).toLowerCase());return null==r?-1:(n.p=r,e)}var f=n.dateTime,h=n.date,g=n.time,p=n.periods,v=n.days,d=n.shortDays,m=n.months,y=n.shortMonths;t.utc=function(n){function e(n){try{hc=Ft;var t=new hc;return t._=n,r(t)}finally{hc=Date}}var r=t(n);return e.parse=function(n){try{hc=Ft;var t=r.parse(n);return t&&t._}finally{hc=Date}},e.toString=r.toString,e},t.multi=t.utc.multi=ce;var M=ta.map(),x=Zt(v),b=Vt(v),_=Zt(d),w=Vt(d),S=Zt(m),k=Vt(m),E=Zt(y),A=Vt(y);p.forEach(function(n,t){M.set(n.toLowerCase(),t)});var N={a:function(n){return d[n.getDay()]},A:function(n){return v[n.getDay()]},b:function(n){return y[n.getMonth()]},B:function(n){return m[n.getMonth()]},c:t(f),d:function(n,t){return It(n.getDate(),t,2)},e:function(n,t){return It(n.getDate(),t,2)},H:function(n,t){return It(n.getHours(),t,2)},I:function(n,t){return It(n.getHours()%12||12,t,2)},j:function(n,t){return It(1+fc.dayOfYear(n),t,3)},L:function(n,t){return It(n.getMilliseconds(),t,3)},m:function(n,t){return It(n.getMonth()+1,t,2)},M:function(n,t){return It(n.getMinutes(),t,2)},p:function(n){return p[+(n.getHours()>=12)]},S:function(n,t){return It(n.getSeconds(),t,2)},U:function(n,t){return It(fc.sundayOfYear(n),t,2)},w:function(n){return n.getDay()},W:function(n,t){return It(fc.mondayOfYear(n),t,2)},x:t(h),X:t(g),y:function(n,t){return It(n.getFullYear()%100,t,2)},Y:function(n,t){return It(n.getFullYear()%1e4,t,4)},Z:oe,"%":function(){return"%"}},C={a:r,A:u,b:i,B:o,c:a,d:ne,e:ne,H:ee,I:ee,j:te,L:ie,m:Qt,M:re,p:s,S:ue,U:$t,w:Xt,W:Bt,x:c,X:l,y:Jt,Y:Wt,Z:Gt,"%":ae};return t}function It(n,t,e){var r=0>n?"-":"",u=(r?-n:n)+"",i=u.length;return r+(e>i?new Array(e-i+1).join(t)+u:u)}function Zt(n){return new RegExp("^(?:"+n.map(ta.requote).join("|")+")","i")}function Vt(n){for(var t=new a,e=-1,r=n.length;++e<r;)t.set(n[e].toLowerCase(),e);return t}function Xt(n,t,e){vc.lastIndex=0;var r=vc.exec(t.slice(e,e+1));return r?(n.w=+r[0],e+r[0].length):-1}function $t(n,t,e){vc.lastIndex=0;var r=vc.exec(t.slice(e));return r?(n.U=+r[0],e+r[0].length):-1}function Bt(n,t,e){vc.lastIndex=0;var r=vc.exec(t.slice(e));return r?(n.W=+r[0],e+r[0].length):-1}function Wt(n,t,e){vc.lastIndex=0;var r=vc.exec(t.slice(e,e+4));return r?(n.y=+r[0],e+r[0].length):-1}function Jt(n,t,e){vc.lastIndex=0;var r=vc.exec(t.slice(e,e+2));return r?(n.y=Kt(+r[0]),e+r[0].length):-1}function Gt(n,t,e){return/^[+-]\d{4}$/.test(t=t.slice(e,e+5))?(n.Z=-t,e+5):-1}function Kt(n){return n+(n>68?1900:2e3)}function Qt(n,t,e){vc.lastIndex=0;var r=vc.exec(t.slice(e,e+2));return r?(n.m=r[0]-1,e+r[0].length):-1}function ne(n,t,e){vc.lastIndex=0;var r=vc.exec(t.slice(e,e+2));return r?(n.d=+r[0],e+r[0].length):-1}function te(n,t,e){vc.lastIndex=0;var r=vc.exec(t.slice(e,e+3));return r?(n.j=+r[0],e+r[0].length):-1}function ee(n,t,e){vc.lastIndex=0;var r=vc.exec(t.slice(e,e+2));return r?(n.H=+r[0],e+r[0].length):-1}function re(n,t,e){vc.lastIndex=0;var r=vc.exec(t.slice(e,e+2));return r?(n.M=+r[0],e+r[0].length):-1}function ue(n,t,e){vc.lastIndex=0;var r=vc.exec(t.slice(e,e+2));return r?(n.S=+r[0],e+r[0].length):-1}function ie(n,t,e){vc.lastIndex=0;var r=vc.exec(t.slice(e,e+3));return r?(n.L=+r[0],e+r[0].length):-1}function oe(n){var t=n.getTimezoneOffset(),e=t>0?"-":"+",r=0|va(t)/60,u=va(t)%60;return e+It(r,"0",2)+It(u,"0",2)}function ae(n,t,e){dc.lastIndex=0;var r=dc.exec(t.slice(e,e+1));return r?e+r[0].length:-1}function ce(n){for(var t=n.length,e=-1;++e<t;)n[e][0]=this(n[e][0]);return function(t){for(var e=0,r=n[e];!r[1](t);)r=n[++e];return r[0](t)}}function le(){}function se(n,t,e){var r=e.s=n+t,u=r-n,i=r-u;e.t=n-i+(t-u)}function fe(n,t){n&&xc.hasOwnProperty(n.type)&&xc[n.type](n,t)}function he(n,t,e){var r,u=-1,i=n.length-e;for(t.lineStart();++u<i;)r=n[u],t.point(r[0],r[1],r[2]);t.lineEnd()}function ge(n,t){var e=-1,r=n.length;for(t.polygonStart();++e<r;)he(n[e],t,1);t.polygonEnd()}function pe(){function n(n,t){n*=Fa,t=t*Fa/2+Da/4;var e=n-r,o=e>=0?1:-1,a=o*e,c=Math.cos(t),l=Math.sin(t),s=i*l,f=u*c+s*Math.cos(a),h=s*o*Math.sin(a);_c.add(Math.atan2(h,f)),r=n,u=c,i=l}var t,e,r,u,i;wc.point=function(o,a){wc.point=n,r=(t=o)*Fa,u=Math.cos(a=(e=a)*Fa/2+Da/4),i=Math.sin(a)},wc.lineEnd=function(){n(t,e)}}function ve(n){var t=n[0],e=n[1],r=Math.cos(e);return[r*Math.cos(t),r*Math.sin(t),Math.sin(e)]}function de(n,t){return n[0]*t[0]+n[1]*t[1]+n[2]*t[2]}function me(n,t){return[n[1]*t[2]-n[2]*t[1],n[2]*t[0]-n[0]*t[2],n[0]*t[1]-n[1]*t[0]]}function ye(n,t){n[0]+=t[0],n[1]+=t[1],n[2]+=t[2]}function Me(n,t){return[n[0]*t,n[1]*t,n[2]*t]}function xe(n){var t=Math.sqrt(n[0]*n[0]+n[1]*n[1]+n[2]*n[2]);n[0]/=t,n[1]/=t,n[2]/=t}function be(n){return[Math.atan2(n[1],n[0]),tt(n[2])]}function _e(n,t){return va(n[0]-t[0])<Ta&&va(n[1]-t[1])<Ta}function we(n,t){n*=Fa;var e=Math.cos(t*=Fa);Se(e*Math.cos(n),e*Math.sin(n),Math.sin(t))}function Se(n,t,e){++Sc,Ec+=(n-Ec)/Sc,Ac+=(t-Ac)/Sc,Nc+=(e-Nc)/Sc}function ke(){function n(n,u){n*=Fa;var i=Math.cos(u*=Fa),o=i*Math.cos(n),a=i*Math.sin(n),c=Math.sin(u),l=Math.atan2(Math.sqrt((l=e*c-r*a)*l+(l=r*o-t*c)*l+(l=t*a-e*o)*l),t*o+e*a+r*c);kc+=l,Cc+=l*(t+(t=o)),zc+=l*(e+(e=a)),qc+=l*(r+(r=c)),Se(t,e,r)}var t,e,r;Dc.point=function(u,i){u*=Fa;var o=Math.cos(i*=Fa);t=o*Math.cos(u),e=o*Math.sin(u),r=Math.sin(i),Dc.point=n,Se(t,e,r)}}function Ee(){Dc.point=we}function Ae(){function n(n,t){n*=Fa;var e=Math.cos(t*=Fa),o=e*Math.cos(n),a=e*Math.sin(n),c=Math.sin(t),l=u*c-i*a,s=i*o-r*c,f=r*a-u*o,h=Math.sqrt(l*l+s*s+f*f),g=r*o+u*a+i*c,p=h&&-nt(g)/h,v=Math.atan2(h,g);Lc+=p*l,Tc+=p*s,Rc+=p*f,kc+=v,Cc+=v*(r+(r=o)),zc+=v*(u+(u=a)),qc+=v*(i+(i=c)),Se(r,u,i)}var t,e,r,u,i;Dc.point=function(o,a){t=o,e=a,Dc.point=n,o*=Fa;var c=Math.cos(a*=Fa);r=c*Math.cos(o),u=c*Math.sin(o),i=Math.sin(a),Se(r,u,i)},Dc.lineEnd=function(){n(t,e),Dc.lineEnd=Ee,Dc.point=we}}function Ne(n,t){function e(e,r){return e=n(e,r),t(e[0],e[1])}return n.invert&&t.invert&&(e.invert=function(e,r){return e=t.invert(e,r),e&&n.invert(e[0],e[1])}),e}function Ce(){return!0}function ze(n,t,e,r,u){var i=[],o=[];if(n.forEach(function(n){if(!((t=n.length-1)<=0)){var t,e=n[0],r=n[t];if(_e(e,r)){u.lineStart();for(var a=0;t>a;++a)u.point((e=n[a])[0],e[1]);return u.lineEnd(),void 0}var c=new Le(e,n,null,!0),l=new Le(e,null,c,!1);c.o=l,i.push(c),o.push(l),c=new Le(r,n,null,!1),l=new Le(r,null,c,!0),c.o=l,i.push(c),o.push(l)}}),o.sort(t),qe(i),qe(o),i.length){for(var a=0,c=e,l=o.length;l>a;++a)o[a].e=c=!c;for(var s,f,h=i[0];;){for(var g=h,p=!0;g.v;)if((g=g.n)===h)return;s=g.z,u.lineStart();do{if(g.v=g.o.v=!0,g.e){if(p)for(var a=0,l=s.length;l>a;++a)u.point((f=s[a])[0],f[1]);else r(g.x,g.n.x,1,u);g=g.n}else{if(p){s=g.p.z;for(var a=s.length-1;a>=0;--a)u.point((f=s[a])[0],f[1])}else r(g.x,g.p.x,-1,u);g=g.p}g=g.o,s=g.z,p=!p}while(!g.v);u.lineEnd()}}}function qe(n){if(t=n.length){for(var t,e,r=0,u=n[0];++r<t;)u.n=e=n[r],e.p=u,u=e;u.n=e=n[0],e.p=u}}function Le(n,t,e,r){this.x=n,this.z=t,this.o=e,this.e=r,this.v=!1,this.n=this.p=null}function Te(n,t,e,r){return function(u,i){function o(t,e){var r=u(t,e);n(t=r[0],e=r[1])&&i.point(t,e)}function a(n,t){var e=u(n,t);d.point(e[0],e[1])}function c(){y.point=a,d.lineStart()}function l(){y.point=o,d.lineEnd()}function s(n,t){v.push([n,t]);var e=u(n,t);x.point(e[0],e[1])}function f(){x.lineStart(),v=[]}function h(){s(v[0][0],v[0][1]),x.lineEnd();var n,t=x.clean(),e=M.buffer(),r=e.length;if(v.pop(),p.push(v),v=null,r)if(1&t){n=e[0];var u,r=n.length-1,o=-1;if(r>0){for(b||(i.polygonStart(),b=!0),i.lineStart();++o<r;)i.point((u=n[o])[0],u[1]);i.lineEnd()}}else r>1&&2&t&&e.push(e.pop().concat(e.shift())),g.push(e.filter(Re))}var g,p,v,d=t(i),m=u.invert(r[0],r[1]),y={point:o,lineStart:c,lineEnd:l,polygonStart:function(){y.point=s,y.lineStart=f,y.lineEnd=h,g=[],p=[]},polygonEnd:function(){y.point=o,y.lineStart=c,y.lineEnd=l,g=ta.merge(g);var n=He(m,p);g.length?(b||(i.polygonStart(),b=!0),ze(g,Pe,n,e,i)):n&&(b||(i.polygonStart(),b=!0),i.lineStart(),e(null,null,1,i),i.lineEnd()),b&&(i.polygonEnd(),b=!1),g=p=null},sphere:function(){i.polygonStart(),i.lineStart(),e(null,null,1,i),i.lineEnd(),i.polygonEnd()}},M=De(),x=t(M),b=!1;return y}}function Re(n){return n.length>1}function De(){var n,t=[];return{lineStart:function(){t.push(n=[])},point:function(t,e){n.push([t,e])},lineEnd:y,buffer:function(){var e=t;return t=[],n=null,e},rejoin:function(){t.length>1&&t.push(t.pop().concat(t.shift()))}}}function Pe(n,t){return((n=n.x)[0]<0?n[1]-ja-Ta:ja-n[1])-((t=t.x)[0]<0?t[1]-ja-Ta:ja-t[1])}function Ue(n){var t,e=0/0,r=0/0,u=0/0;return{lineStart:function(){n.lineStart(),t=1},point:function(i,o){var a=i>0?Da:-Da,c=va(i-e);va(c-Da)<Ta?(n.point(e,r=(r+o)/2>0?ja:-ja),n.point(u,r),n.lineEnd(),n.lineStart(),n.point(a,r),n.point(i,r),t=0):u!==a&&c>=Da&&(va(e-u)<Ta&&(e-=u*Ta),va(i-a)<Ta&&(i-=a*Ta),r=je(e,r,i,o),n.point(u,r),n.lineEnd(),n.lineStart(),n.point(a,r),t=0),n.point(e=i,r=o),u=a},lineEnd:function(){n.lineEnd(),e=r=0/0},clean:function(){return 2-t}}}function je(n,t,e,r){var u,i,o=Math.sin(n-e);return va(o)>Ta?Math.atan((Math.sin(t)*(i=Math.cos(r))*Math.sin(e)-Math.sin(r)*(u=Math.cos(t))*Math.sin(n))/(u*i*o)):(t+r)/2}function Fe(n,t,e,r){var u;if(null==n)u=e*ja,r.point(-Da,u),r.point(0,u),r.point(Da,u),r.point(Da,0),r.point(Da,-u),r.point(0,-u),r.point(-Da,-u),r.point(-Da,0),r.point(-Da,u);else if(va(n[0]-t[0])>Ta){var i=n[0]<t[0]?Da:-Da;u=e*i/2,r.point(-i,u),r.point(0,u),r.point(i,u)}else r.point(t[0],t[1])}function He(n,t){var e=n[0],r=n[1],u=[Math.sin(e),-Math.cos(e),0],i=0,o=0;_c.reset();for(var a=0,c=t.length;c>a;++a){var l=t[a],s=l.length;if(s)for(var f=l[0],h=f[0],g=f[1]/2+Da/4,p=Math.sin(g),v=Math.cos(g),d=1;;){d===s&&(d=0),n=l[d];var m=n[0],y=n[1]/2+Da/4,M=Math.sin(y),x=Math.cos(y),b=m-h,_=b>=0?1:-1,w=_*b,S=w>Da,k=p*M;if(_c.add(Math.atan2(k*_*Math.sin(w),v*x+k*Math.cos(w))),i+=S?b+_*Pa:b,S^h>=e^m>=e){var E=me(ve(f),ve(n));xe(E);var A=me(u,E);xe(A);var N=(S^b>=0?-1:1)*tt(A[2]);(r>N||r===N&&(E[0]||E[1]))&&(o+=S^b>=0?1:-1)}if(!d++)break;h=m,p=M,v=x,f=n}}return(-Ta>i||Ta>i&&0>_c)^1&o}function Oe(n){function t(n,t){return Math.cos(n)*Math.cos(t)>i}function e(n){var e,i,c,l,s;return{lineStart:function(){l=c=!1,s=1},point:function(f,h){var g,p=[f,h],v=t(f,h),d=o?v?0:u(f,h):v?u(f+(0>f?Da:-Da),h):0;if(!e&&(l=c=v)&&n.lineStart(),v!==c&&(g=r(e,p),(_e(e,g)||_e(p,g))&&(p[0]+=Ta,p[1]+=Ta,v=t(p[0],p[1]))),v!==c)s=0,v?(n.lineStart(),g=r(p,e),n.point(g[0],g[1])):(g=r(e,p),n.point(g[0],g[1]),n.lineEnd()),e=g;else if(a&&e&&o^v){var m;d&i||!(m=r(p,e,!0))||(s=0,o?(n.lineStart(),n.point(m[0][0],m[0][1]),n.point(m[1][0],m[1][1]),n.lineEnd()):(n.point(m[1][0],m[1][1]),n.lineEnd(),n.lineStart(),n.point(m[0][0],m[0][1])))}!v||e&&_e(e,p)||n.point(p[0],p[1]),e=p,c=v,i=d},lineEnd:function(){c&&n.lineEnd(),e=null},clean:function(){return s|(l&&c)<<1}}}function r(n,t,e){var r=ve(n),u=ve(t),o=[1,0,0],a=me(r,u),c=de(a,a),l=a[0],s=c-l*l;if(!s)return!e&&n;var f=i*c/s,h=-i*l/s,g=me(o,a),p=Me(o,f),v=Me(a,h);ye(p,v);var d=g,m=de(p,d),y=de(d,d),M=m*m-y*(de(p,p)-1);if(!(0>M)){var x=Math.sqrt(M),b=Me(d,(-m-x)/y);if(ye(b,p),b=be(b),!e)return b;var _,w=n[0],S=t[0],k=n[1],E=t[1];w>S&&(_=w,w=S,S=_);var A=S-w,N=va(A-Da)<Ta,C=N||Ta>A;if(!N&&k>E&&(_=k,k=E,E=_),C?N?k+E>0^b[1]<(va(b[0]-w)<Ta?k:E):k<=b[1]&&b[1]<=E:A>Da^(w<=b[0]&&b[0]<=S)){var z=Me(d,(-m+x)/y);return ye(z,p),[b,be(z)]}}}function u(t,e){var r=o?n:Da-n,u=0;return-r>t?u|=1:t>r&&(u|=2),-r>e?u|=4:e>r&&(u|=8),u}var i=Math.cos(n),o=i>0,a=va(i)>Ta,c=pr(n,6*Fa);return Te(t,e,c,o?[0,-n]:[-Da,n-Da])}function Ye(n,t,e,r){return function(u){var i,o=u.a,a=u.b,c=o.x,l=o.y,s=a.x,f=a.y,h=0,g=1,p=s-c,v=f-l;if(i=n-c,p||!(i>0)){if(i/=p,0>p){if(h>i)return;g>i&&(g=i)}else if(p>0){if(i>g)return;i>h&&(h=i)}if(i=e-c,p||!(0>i)){if(i/=p,0>p){if(i>g)return;i>h&&(h=i)}else if(p>0){if(h>i)return;g>i&&(g=i)}if(i=t-l,v||!(i>0)){if(i/=v,0>v){if(h>i)return;g>i&&(g=i)}else if(v>0){if(i>g)return;i>h&&(h=i)}if(i=r-l,v||!(0>i)){if(i/=v,0>v){if(i>g)return;i>h&&(h=i)}else if(v>0){if(h>i)return;g>i&&(g=i)}return h>0&&(u.a={x:c+h*p,y:l+h*v}),1>g&&(u.b={x:c+g*p,y:l+g*v}),u}}}}}}function Ie(n,t,e,r){function u(r,u){return va(r[0]-n)<Ta?u>0?0:3:va(r[0]-e)<Ta?u>0?2:1:va(r[1]-t)<Ta?u>0?1:0:u>0?3:2}function i(n,t){return o(n.x,t.x)}function o(n,t){var e=u(n,1),r=u(t,1);return e!==r?e-r:0===e?t[1]-n[1]:1===e?n[0]-t[0]:2===e?n[1]-t[1]:t[0]-n[0]}return function(a){function c(n){for(var t=0,e=d.length,r=n[1],u=0;e>u;++u)for(var i,o=1,a=d[u],c=a.length,l=a[0];c>o;++o)i=a[o],l[1]<=r?i[1]>r&&Q(l,i,n)>0&&++t:i[1]<=r&&Q(l,i,n)<0&&--t,l=i;return 0!==t}function l(i,a,c,l){var s=0,f=0;if(null==i||(s=u(i,c))!==(f=u(a,c))||o(i,a)<0^c>0){do l.point(0===s||3===s?n:e,s>1?r:t);while((s=(s+c+4)%4)!==f)}else l.point(a[0],a[1])}function s(u,i){return u>=n&&e>=u&&i>=t&&r>=i}function f(n,t){s(n,t)&&a.point(n,t)}function h(){C.point=p,d&&d.push(m=[]),S=!0,w=!1,b=_=0/0}function g(){v&&(p(y,M),x&&w&&A.rejoin(),v.push(A.buffer())),C.point=f,w&&a.lineEnd()}function p(n,t){n=Math.max(-Uc,Math.min(Uc,n)),t=Math.max(-Uc,Math.min(Uc,t));var e=s(n,t);if(d&&m.push([n,t]),S)y=n,M=t,x=e,S=!1,e&&(a.lineStart(),a.point(n,t));else if(e&&w)a.point(n,t);else{var r={a:{x:b,y:_},b:{x:n,y:t}};N(r)?(w||(a.lineStart(),a.point(r.a.x,r.a.y)),a.point(r.b.x,r.b.y),e||a.lineEnd(),k=!1):e&&(a.lineStart(),a.point(n,t),k=!1)}b=n,_=t,w=e}var v,d,m,y,M,x,b,_,w,S,k,E=a,A=De(),N=Ye(n,t,e,r),C={point:f,lineStart:h,lineEnd:g,polygonStart:function(){a=A,v=[],d=[],k=!0},polygonEnd:function(){a=E,v=ta.merge(v);var t=c([n,r]),e=k&&t,u=v.length;(e||u)&&(a.polygonStart(),e&&(a.lineStart(),l(null,null,1,a),a.lineEnd()),u&&ze(v,i,t,l,a),a.polygonEnd()),v=d=m=null}};return C}}function Ze(n){var t=0,e=Da/3,r=or(n),u=r(t,e);return u.parallels=function(n){return arguments.length?r(t=n[0]*Da/180,e=n[1]*Da/180):[180*(t/Da),180*(e/Da)]},u}function Ve(n,t){function e(n,t){var e=Math.sqrt(i-2*u*Math.sin(t))/u;return[e*Math.sin(n*=u),o-e*Math.cos(n)]}var r=Math.sin(n),u=(r+Math.sin(t))/2,i=1+r*(2*u-r),o=Math.sqrt(i)/u;return e.invert=function(n,t){var e=o-t;return[Math.atan2(n,e)/u,tt((i-(n*n+e*e)*u*u)/(2*u))]},e}function Xe(){function n(n,t){Fc+=u*n-r*t,r=n,u=t}var t,e,r,u;Zc.point=function(i,o){Zc.point=n,t=r=i,e=u=o},Zc.lineEnd=function(){n(t,e)}}function $e(n,t){Hc>n&&(Hc=n),n>Yc&&(Yc=n),Oc>t&&(Oc=t),t>Ic&&(Ic=t)}function Be(){function n(n,t){o.push("M",n,",",t,i)}function t(n,t){o.push("M",n,",",t),a.point=e}function e(n,t){o.push("L",n,",",t)}function r(){a.point=n}function u(){o.push("Z")}var i=We(4.5),o=[],a={point:n,lineStart:function(){a.point=t},lineEnd:r,polygonStart:function(){a.lineEnd=u},polygonEnd:function(){a.lineEnd=r,a.point=n},pointRadius:function(n){return i=We(n),a},result:function(){if(o.length){var n=o.join("");return o=[],n}}};return a}function We(n){return"m0,"+n+"a"+n+","+n+" 0 1,1 0,"+-2*n+"a"+n+","+n+" 0 1,1 0,"+2*n+"z"}function Je(n,t){Ec+=n,Ac+=t,++Nc}function Ge(){function n(n,r){var u=n-t,i=r-e,o=Math.sqrt(u*u+i*i);Cc+=o*(t+n)/2,zc+=o*(e+r)/2,qc+=o,Je(t=n,e=r)}var t,e;Xc.point=function(r,u){Xc.point=n,Je(t=r,e=u)}}function Ke(){Xc.point=Je}function Qe(){function n(n,t){var e=n-r,i=t-u,o=Math.sqrt(e*e+i*i);Cc+=o*(r+n)/2,zc+=o*(u+t)/2,qc+=o,o=u*n-r*t,Lc+=o*(r+n),Tc+=o*(u+t),Rc+=3*o,Je(r=n,u=t)}var t,e,r,u;Xc.point=function(i,o){Xc.point=n,Je(t=r=i,e=u=o)},Xc.lineEnd=function(){n(t,e)}}function nr(n){function t(t,e){n.moveTo(t+o,e),n.arc(t,e,o,0,Pa)}function e(t,e){n.moveTo(t,e),a.point=r}function r(t,e){n.lineTo(t,e)}function u(){a.point=t}function i(){n.closePath()}var o=4.5,a={point:t,lineStart:function(){a.point=e},lineEnd:u,polygonStart:function(){a.lineEnd=i},polygonEnd:function(){a.lineEnd=u,a.point=t},pointRadius:function(n){return o=n,a},result:y};return a}function tr(n){function t(n){return(a?r:e)(n)}function e(t){return ur(t,function(e,r){e=n(e,r),t.point(e[0],e[1])})}function r(t){function e(e,r){e=n(e,r),t.point(e[0],e[1])}function r(){M=0/0,S.point=i,t.lineStart()}function i(e,r){var i=ve([e,r]),o=n(e,r);u(M,x,y,b,_,w,M=o[0],x=o[1],y=e,b=i[0],_=i[1],w=i[2],a,t),t.point(M,x)}function o(){S.point=e,t.lineEnd()}function c(){r(),S.point=l,S.lineEnd=s}function l(n,t){i(f=n,h=t),g=M,p=x,v=b,d=_,m=w,S.point=i}function s(){u(M,x,y,b,_,w,g,p,f,v,d,m,a,t),S.lineEnd=o,o()}var f,h,g,p,v,d,m,y,M,x,b,_,w,S={point:e,lineStart:r,lineEnd:o,polygonStart:function(){t.polygonStart(),S.lineStart=c},polygonEnd:function(){t.polygonEnd(),S.lineStart=r}};return S}function u(t,e,r,a,c,l,s,f,h,g,p,v,d,m){var y=s-t,M=f-e,x=y*y+M*M;if(x>4*i&&d--){var b=a+g,_=c+p,w=l+v,S=Math.sqrt(b*b+_*_+w*w),k=Math.asin(w/=S),E=va(va(w)-1)<Ta||va(r-h)<Ta?(r+h)/2:Math.atan2(_,b),A=n(E,k),N=A[0],C=A[1],z=N-t,q=C-e,L=M*z-y*q;
2306 (L*L/x>i||va((y*z+M*q)/x-.5)>.3||o>a*g+c*p+l*v)&&(u(t,e,r,a,c,l,N,C,E,b/=S,_/=S,w,d,m),m.point(N,C),u(N,C,E,b,_,w,s,f,h,g,p,v,d,m))}}var i=.5,o=Math.cos(30*Fa),a=16;return t.precision=function(n){return arguments.length?(a=(i=n*n)>0&&16,t):Math.sqrt(i)},t}function er(n){var t=tr(function(t,e){return n([t*Ha,e*Ha])});return function(n){return ar(t(n))}}function rr(n){this.stream=n}function ur(n,t){return{point:t,sphere:function(){n.sphere()},lineStart:function(){n.lineStart()},lineEnd:function(){n.lineEnd()},polygonStart:function(){n.polygonStart()},polygonEnd:function(){n.polygonEnd()}}}function ir(n){return or(function(){return n})()}function or(n){function t(n){return n=a(n[0]*Fa,n[1]*Fa),[n[0]*h+c,l-n[1]*h]}function e(n){return n=a.invert((n[0]-c)/h,(l-n[1])/h),n&&[n[0]*Ha,n[1]*Ha]}function r(){a=Ne(o=sr(m,y,M),i);var n=i(v,d);return c=g-n[0]*h,l=p+n[1]*h,u()}function u(){return s&&(s.valid=!1,s=null),t}var i,o,a,c,l,s,f=tr(function(n,t){return n=i(n,t),[n[0]*h+c,l-n[1]*h]}),h=150,g=480,p=250,v=0,d=0,m=0,y=0,M=0,x=Pc,b=At,_=null,w=null;return t.stream=function(n){return s&&(s.valid=!1),s=ar(x(o,f(b(n)))),s.valid=!0,s},t.clipAngle=function(n){return arguments.length?(x=null==n?(_=n,Pc):Oe((_=+n)*Fa),u()):_},t.clipExtent=function(n){return arguments.length?(w=n,b=n?Ie(n[0][0],n[0][1],n[1][0],n[1][1]):At,u()):w},t.scale=function(n){return arguments.length?(h=+n,r()):h},t.translate=function(n){return arguments.length?(g=+n[0],p=+n[1],r()):[g,p]},t.center=function(n){return arguments.length?(v=n[0]%360*Fa,d=n[1]%360*Fa,r()):[v*Ha,d*Ha]},t.rotate=function(n){return arguments.length?(m=n[0]%360*Fa,y=n[1]%360*Fa,M=n.length>2?n[2]%360*Fa:0,r()):[m*Ha,y*Ha,M*Ha]},ta.rebind(t,f,"precision"),function(){return i=n.apply(this,arguments),t.invert=i.invert&&e,r()}}function ar(n){return ur(n,function(t,e){n.point(t*Fa,e*Fa)})}function cr(n,t){return[n,t]}function lr(n,t){return[n>Da?n-Pa:-Da>n?n+Pa:n,t]}function sr(n,t,e){return n?t||e?Ne(hr(n),gr(t,e)):hr(n):t||e?gr(t,e):lr}function fr(n){return function(t,e){return t+=n,[t>Da?t-Pa:-Da>t?t+Pa:t,e]}}function hr(n){var t=fr(n);return t.invert=fr(-n),t}function gr(n,t){function e(n,t){var e=Math.cos(t),a=Math.cos(n)*e,c=Math.sin(n)*e,l=Math.sin(t),s=l*r+a*u;return[Math.atan2(c*i-s*o,a*r-l*u),tt(s*i+c*o)]}var r=Math.cos(n),u=Math.sin(n),i=Math.cos(t),o=Math.sin(t);return e.invert=function(n,t){var e=Math.cos(t),a=Math.cos(n)*e,c=Math.sin(n)*e,l=Math.sin(t),s=l*i-c*o;return[Math.atan2(c*i+l*o,a*r+s*u),tt(s*r-a*u)]},e}function pr(n,t){var e=Math.cos(n),r=Math.sin(n);return function(u,i,o,a){var c=o*t;null!=u?(u=vr(e,u),i=vr(e,i),(o>0?i>u:u>i)&&(u+=o*Pa)):(u=n+o*Pa,i=n-.5*c);for(var l,s=u;o>0?s>i:i>s;s-=c)a.point((l=be([e,-r*Math.cos(s),-r*Math.sin(s)]))[0],l[1])}}function vr(n,t){var e=ve(t);e[0]-=n,xe(e);var r=nt(-e[1]);return((-e[2]<0?-r:r)+2*Math.PI-Ta)%(2*Math.PI)}function dr(n,t,e){var r=ta.range(n,t-Ta,e).concat(t);return function(n){return r.map(function(t){return[n,t]})}}function mr(n,t,e){var r=ta.range(n,t-Ta,e).concat(t);return function(n){return r.map(function(t){return[t,n]})}}function yr(n){return n.source}function Mr(n){return n.target}function xr(n,t,e,r){var u=Math.cos(t),i=Math.sin(t),o=Math.cos(r),a=Math.sin(r),c=u*Math.cos(n),l=u*Math.sin(n),s=o*Math.cos(e),f=o*Math.sin(e),h=2*Math.asin(Math.sqrt(it(r-t)+u*o*it(e-n))),g=1/Math.sin(h),p=h?function(n){var t=Math.sin(n*=h)*g,e=Math.sin(h-n)*g,r=e*c+t*s,u=e*l+t*f,o=e*i+t*a;return[Math.atan2(u,r)*Ha,Math.atan2(o,Math.sqrt(r*r+u*u))*Ha]}:function(){return[n*Ha,t*Ha]};return p.distance=h,p}function br(){function n(n,u){var i=Math.sin(u*=Fa),o=Math.cos(u),a=va((n*=Fa)-t),c=Math.cos(a);$c+=Math.atan2(Math.sqrt((a=o*Math.sin(a))*a+(a=r*i-e*o*c)*a),e*i+r*o*c),t=n,e=i,r=o}var t,e,r;Bc.point=function(u,i){t=u*Fa,e=Math.sin(i*=Fa),r=Math.cos(i),Bc.point=n},Bc.lineEnd=function(){Bc.point=Bc.lineEnd=y}}function _r(n,t){function e(t,e){var r=Math.cos(t),u=Math.cos(e),i=n(r*u);return[i*u*Math.sin(t),i*Math.sin(e)]}return e.invert=function(n,e){var r=Math.sqrt(n*n+e*e),u=t(r),i=Math.sin(u),o=Math.cos(u);return[Math.atan2(n*i,r*o),Math.asin(r&&e*i/r)]},e}function wr(n,t){function e(n,t){o>0?-ja+Ta>t&&(t=-ja+Ta):t>ja-Ta&&(t=ja-Ta);var e=o/Math.pow(u(t),i);return[e*Math.sin(i*n),o-e*Math.cos(i*n)]}var r=Math.cos(n),u=function(n){return Math.tan(Da/4+n/2)},i=n===t?Math.sin(n):Math.log(r/Math.cos(t))/Math.log(u(t)/u(n)),o=r*Math.pow(u(n),i)/i;return i?(e.invert=function(n,t){var e=o-t,r=K(i)*Math.sqrt(n*n+e*e);return[Math.atan2(n,e)/i,2*Math.atan(Math.pow(o/r,1/i))-ja]},e):kr}function Sr(n,t){function e(n,t){var e=i-t;return[e*Math.sin(u*n),i-e*Math.cos(u*n)]}var r=Math.cos(n),u=n===t?Math.sin(n):(r-Math.cos(t))/(t-n),i=r/u+n;return va(u)<Ta?cr:(e.invert=function(n,t){var e=i-t;return[Math.atan2(n,e)/u,i-K(u)*Math.sqrt(n*n+e*e)]},e)}function kr(n,t){return[n,Math.log(Math.tan(Da/4+t/2))]}function Er(n){var t,e=ir(n),r=e.scale,u=e.translate,i=e.clipExtent;return e.scale=function(){var n=r.apply(e,arguments);return n===e?t?e.clipExtent(null):e:n},e.translate=function(){var n=u.apply(e,arguments);return n===e?t?e.clipExtent(null):e:n},e.clipExtent=function(n){var o=i.apply(e,arguments);if(o===e){if(t=null==n){var a=Da*r(),c=u();i([[c[0]-a,c[1]-a],[c[0]+a,c[1]+a]])}}else t&&(o=null);return o},e.clipExtent(null)}function Ar(n,t){return[Math.log(Math.tan(Da/4+t/2)),-n]}function Nr(n){return n[0]}function Cr(n){return n[1]}function zr(n){for(var t=n.length,e=[0,1],r=2,u=2;t>u;u++){for(;r>1&&Q(n[e[r-2]],n[e[r-1]],n[u])<=0;)--r;e[r++]=u}return e.slice(0,r)}function qr(n,t){return n[0]-t[0]||n[1]-t[1]}function Lr(n,t,e){return(e[0]-t[0])*(n[1]-t[1])<(e[1]-t[1])*(n[0]-t[0])}function Tr(n,t,e,r){var u=n[0],i=e[0],o=t[0]-u,a=r[0]-i,c=n[1],l=e[1],s=t[1]-c,f=r[1]-l,h=(a*(c-l)-f*(u-i))/(f*o-a*s);return[u+h*o,c+h*s]}function Rr(n){var t=n[0],e=n[n.length-1];return!(t[0]-e[0]||t[1]-e[1])}function Dr(){eu(this),this.edge=this.site=this.circle=null}function Pr(n){var t=ol.pop()||new Dr;return t.site=n,t}function Ur(n){$r(n),rl.remove(n),ol.push(n),eu(n)}function jr(n){var t=n.circle,e=t.x,r=t.cy,u={x:e,y:r},i=n.P,o=n.N,a=[n];Ur(n);for(var c=i;c.circle&&va(e-c.circle.x)<Ta&&va(r-c.circle.cy)<Ta;)i=c.P,a.unshift(c),Ur(c),c=i;a.unshift(c),$r(c);for(var l=o;l.circle&&va(e-l.circle.x)<Ta&&va(r-l.circle.cy)<Ta;)o=l.N,a.push(l),Ur(l),l=o;a.push(l),$r(l);var s,f=a.length;for(s=1;f>s;++s)l=a[s],c=a[s-1],Qr(l.edge,c.site,l.site,u);c=a[0],l=a[f-1],l.edge=Gr(c.site,l.site,null,u),Xr(c),Xr(l)}function Fr(n){for(var t,e,r,u,i=n.x,o=n.y,a=rl._;a;)if(r=Hr(a,o)-i,r>Ta)a=a.L;else{if(u=i-Or(a,o),!(u>Ta)){r>-Ta?(t=a.P,e=a):u>-Ta?(t=a,e=a.N):t=e=a;break}if(!a.R){t=a;break}a=a.R}var c=Pr(n);if(rl.insert(t,c),t||e){if(t===e)return $r(t),e=Pr(t.site),rl.insert(c,e),c.edge=e.edge=Gr(t.site,c.site),Xr(t),Xr(e),void 0;if(!e)return c.edge=Gr(t.site,c.site),void 0;$r(t),$r(e);var l=t.site,s=l.x,f=l.y,h=n.x-s,g=n.y-f,p=e.site,v=p.x-s,d=p.y-f,m=2*(h*d-g*v),y=h*h+g*g,M=v*v+d*d,x={x:(d*y-g*M)/m+s,y:(h*M-v*y)/m+f};Qr(e.edge,l,p,x),c.edge=Gr(l,n,null,x),e.edge=Gr(n,p,null,x),Xr(t),Xr(e)}}function Hr(n,t){var e=n.site,r=e.x,u=e.y,i=u-t;if(!i)return r;var o=n.P;if(!o)return-1/0;e=o.site;var a=e.x,c=e.y,l=c-t;if(!l)return a;var s=a-r,f=1/i-1/l,h=s/l;return f?(-h+Math.sqrt(h*h-2*f*(s*s/(-2*l)-c+l/2+u-i/2)))/f+r:(r+a)/2}function Or(n,t){var e=n.N;if(e)return Hr(e,t);var r=n.site;return r.y===t?r.x:1/0}function Yr(n){this.site=n,this.edges=[]}function Ir(n){for(var t,e,r,u,i,o,a,c,l,s,f=n[0][0],h=n[1][0],g=n[0][1],p=n[1][1],v=el,d=v.length;d--;)if(i=v[d],i&&i.prepare())for(a=i.edges,c=a.length,o=0;c>o;)s=a[o].end(),r=s.x,u=s.y,l=a[++o%c].start(),t=l.x,e=l.y,(va(r-t)>Ta||va(u-e)>Ta)&&(a.splice(o,0,new nu(Kr(i.site,s,va(r-f)<Ta&&p-u>Ta?{x:f,y:va(t-f)<Ta?e:p}:va(u-p)<Ta&&h-r>Ta?{x:va(e-p)<Ta?t:h,y:p}:va(r-h)<Ta&&u-g>Ta?{x:h,y:va(t-h)<Ta?e:g}:va(u-g)<Ta&&r-f>Ta?{x:va(e-g)<Ta?t:f,y:g}:null),i.site,null)),++c)}function Zr(n,t){return t.angle-n.angle}function Vr(){eu(this),this.x=this.y=this.arc=this.site=this.cy=null}function Xr(n){var t=n.P,e=n.N;if(t&&e){var r=t.site,u=n.site,i=e.site;if(r!==i){var o=u.x,a=u.y,c=r.x-o,l=r.y-a,s=i.x-o,f=i.y-a,h=2*(c*f-l*s);if(!(h>=-Ra)){var g=c*c+l*l,p=s*s+f*f,v=(f*g-l*p)/h,d=(c*p-s*g)/h,f=d+a,m=al.pop()||new Vr;m.arc=n,m.site=u,m.x=v+o,m.y=f+Math.sqrt(v*v+d*d),m.cy=f,n.circle=m;for(var y=null,M=il._;M;)if(m.y<M.y||m.y===M.y&&m.x<=M.x){if(!M.L){y=M.P;break}M=M.L}else{if(!M.R){y=M;break}M=M.R}il.insert(y,m),y||(ul=m)}}}}function $r(n){var t=n.circle;t&&(t.P||(ul=t.N),il.remove(t),al.push(t),eu(t),n.circle=null)}function Br(n){for(var t,e=tl,r=Ye(n[0][0],n[0][1],n[1][0],n[1][1]),u=e.length;u--;)t=e[u],(!Wr(t,n)||!r(t)||va(t.a.x-t.b.x)<Ta&&va(t.a.y-t.b.y)<Ta)&&(t.a=t.b=null,e.splice(u,1))}function Wr(n,t){var e=n.b;if(e)return!0;var r,u,i=n.a,o=t[0][0],a=t[1][0],c=t[0][1],l=t[1][1],s=n.l,f=n.r,h=s.x,g=s.y,p=f.x,v=f.y,d=(h+p)/2,m=(g+v)/2;if(v===g){if(o>d||d>=a)return;if(h>p){if(i){if(i.y>=l)return}else i={x:d,y:c};e={x:d,y:l}}else{if(i){if(i.y<c)return}else i={x:d,y:l};e={x:d,y:c}}}else if(r=(h-p)/(v-g),u=m-r*d,-1>r||r>1)if(h>p){if(i){if(i.y>=l)return}else i={x:(c-u)/r,y:c};e={x:(l-u)/r,y:l}}else{if(i){if(i.y<c)return}else i={x:(l-u)/r,y:l};e={x:(c-u)/r,y:c}}else if(v>g){if(i){if(i.x>=a)return}else i={x:o,y:r*o+u};e={x:a,y:r*a+u}}else{if(i){if(i.x<o)return}else i={x:a,y:r*a+u};e={x:o,y:r*o+u}}return n.a=i,n.b=e,!0}function Jr(n,t){this.l=n,this.r=t,this.a=this.b=null}function Gr(n,t,e,r){var u=new Jr(n,t);return tl.push(u),e&&Qr(u,n,t,e),r&&Qr(u,t,n,r),el[n.i].edges.push(new nu(u,n,t)),el[t.i].edges.push(new nu(u,t,n)),u}function Kr(n,t,e){var r=new Jr(n,null);return r.a=t,r.b=e,tl.push(r),r}function Qr(n,t,e,r){n.a||n.b?n.l===e?n.b=r:n.a=r:(n.a=r,n.l=t,n.r=e)}function nu(n,t,e){var r=n.a,u=n.b;this.edge=n,this.site=t,this.angle=e?Math.atan2(e.y-t.y,e.x-t.x):n.l===t?Math.atan2(u.x-r.x,r.y-u.y):Math.atan2(r.x-u.x,u.y-r.y)}function tu(){this._=null}function eu(n){n.U=n.C=n.L=n.R=n.P=n.N=null}function ru(n,t){var e=t,r=t.R,u=e.U;u?u.L===e?u.L=r:u.R=r:n._=r,r.U=u,e.U=r,e.R=r.L,e.R&&(e.R.U=e),r.L=e}function uu(n,t){var e=t,r=t.L,u=e.U;u?u.L===e?u.L=r:u.R=r:n._=r,r.U=u,e.U=r,e.L=r.R,e.L&&(e.L.U=e),r.R=e}function iu(n){for(;n.L;)n=n.L;return n}function ou(n,t){var e,r,u,i=n.sort(au).pop();for(tl=[],el=new Array(n.length),rl=new tu,il=new tu;;)if(u=ul,i&&(!u||i.y<u.y||i.y===u.y&&i.x<u.x))(i.x!==e||i.y!==r)&&(el[i.i]=new Yr(i),Fr(i),e=i.x,r=i.y),i=n.pop();else{if(!u)break;jr(u.arc)}t&&(Br(t),Ir(t));var o={cells:el,edges:tl};return rl=il=tl=el=null,o}function au(n,t){return t.y-n.y||t.x-n.x}function cu(n,t,e){return(n.x-e.x)*(t.y-n.y)-(n.x-t.x)*(e.y-n.y)}function lu(n){return n.x}function su(n){return n.y}function fu(){return{leaf:!0,nodes:[],point:null,x:null,y:null}}function hu(n,t,e,r,u,i){if(!n(t,e,r,u,i)){var o=.5*(e+u),a=.5*(r+i),c=t.nodes;c[0]&&hu(n,c[0],e,r,o,a),c[1]&&hu(n,c[1],o,r,u,a),c[2]&&hu(n,c[2],e,a,o,i),c[3]&&hu(n,c[3],o,a,u,i)}}function gu(n,t,e,r,u,i,o){var a,c=1/0;return function l(n,s,f,h,g){if(!(s>i||f>o||r>h||u>g)){if(p=n.point){var p,v=t-p[0],d=e-p[1],m=v*v+d*d;if(c>m){var y=Math.sqrt(c=m);r=t-y,u=e-y,i=t+y,o=e+y,a=p}}for(var M=n.nodes,x=.5*(s+h),b=.5*(f+g),_=t>=x,w=e>=b,S=w<<1|_,k=S+4;k>S;++S)if(n=M[3&S])switch(3&S){case 0:l(n,s,f,x,b);break;case 1:l(n,x,f,h,b);break;case 2:l(n,s,b,x,g);break;case 3:l(n,x,b,h,g)}}}(n,r,u,i,o),a}function pu(n,t){n=ta.rgb(n),t=ta.rgb(t);var e=n.r,r=n.g,u=n.b,i=t.r-e,o=t.g-r,a=t.b-u;return function(n){return"#"+xt(Math.round(e+i*n))+xt(Math.round(r+o*n))+xt(Math.round(u+a*n))}}function vu(n,t){var e,r={},u={};for(e in n)e in t?r[e]=yu(n[e],t[e]):u[e]=n[e];for(e in t)e in n||(u[e]=t[e]);return function(n){for(e in r)u[e]=r[e](n);return u}}function du(n,t){return n=+n,t=+t,function(e){return n*(1-e)+t*e}}function mu(n,t){var e,r,u,i=ll.lastIndex=sl.lastIndex=0,o=-1,a=[],c=[];for(n+="",t+="";(e=ll.exec(n))&&(r=sl.exec(t));)(u=r.index)>i&&(u=t.slice(i,u),a[o]?a[o]+=u:a[++o]=u),(e=e[0])===(r=r[0])?a[o]?a[o]+=r:a[++o]=r:(a[++o]=null,c.push({i:o,x:du(e,r)})),i=sl.lastIndex;return i<t.length&&(u=t.slice(i),a[o]?a[o]+=u:a[++o]=u),a.length<2?c[0]?(t=c[0].x,function(n){return t(n)+""}):function(){return t}:(t=c.length,function(n){for(var e,r=0;t>r;++r)a[(e=c[r]).i]=e.x(n);return a.join("")})}function yu(n,t){for(var e,r=ta.interpolators.length;--r>=0&&!(e=ta.interpolators[r](n,t)););return e}function Mu(n,t){var e,r=[],u=[],i=n.length,o=t.length,a=Math.min(n.length,t.length);for(e=0;a>e;++e)r.push(yu(n[e],t[e]));for(;i>e;++e)u[e]=n[e];for(;o>e;++e)u[e]=t[e];return function(n){for(e=0;a>e;++e)u[e]=r[e](n);return u}}function xu(n){return function(t){return 0>=t?0:t>=1?1:n(t)}}function bu(n){return function(t){return 1-n(1-t)}}function _u(n){return function(t){return.5*(.5>t?n(2*t):2-n(2-2*t))}}function wu(n){return n*n}function Su(n){return n*n*n}function ku(n){if(0>=n)return 0;if(n>=1)return 1;var t=n*n,e=t*n;return 4*(.5>n?e:3*(n-t)+e-.75)}function Eu(n){return function(t){return Math.pow(t,n)}}function Au(n){return 1-Math.cos(n*ja)}function Nu(n){return Math.pow(2,10*(n-1))}function Cu(n){return 1-Math.sqrt(1-n*n)}function zu(n,t){var e;return arguments.length<2&&(t=.45),arguments.length?e=t/Pa*Math.asin(1/n):(n=1,e=t/4),function(r){return 1+n*Math.pow(2,-10*r)*Math.sin((r-e)*Pa/t)}}function qu(n){return n||(n=1.70158),function(t){return t*t*((n+1)*t-n)}}function Lu(n){return 1/2.75>n?7.5625*n*n:2/2.75>n?7.5625*(n-=1.5/2.75)*n+.75:2.5/2.75>n?7.5625*(n-=2.25/2.75)*n+.9375:7.5625*(n-=2.625/2.75)*n+.984375}function Tu(n,t){n=ta.hcl(n),t=ta.hcl(t);var e=n.h,r=n.c,u=n.l,i=t.h-e,o=t.c-r,a=t.l-u;return isNaN(o)&&(o=0,r=isNaN(r)?t.c:r),isNaN(i)?(i=0,e=isNaN(e)?t.h:e):i>180?i-=360:-180>i&&(i+=360),function(n){return st(e+i*n,r+o*n,u+a*n)+""}}function Ru(n,t){n=ta.hsl(n),t=ta.hsl(t);var e=n.h,r=n.s,u=n.l,i=t.h-e,o=t.s-r,a=t.l-u;return isNaN(o)&&(o=0,r=isNaN(r)?t.s:r),isNaN(i)?(i=0,e=isNaN(e)?t.h:e):i>180?i-=360:-180>i&&(i+=360),function(n){return ct(e+i*n,r+o*n,u+a*n)+""}}function Du(n,t){n=ta.lab(n),t=ta.lab(t);var e=n.l,r=n.a,u=n.b,i=t.l-e,o=t.a-r,a=t.b-u;return function(n){return ht(e+i*n,r+o*n,u+a*n)+""}}function Pu(n,t){return t-=n,function(e){return Math.round(n+t*e)}}function Uu(n){var t=[n.a,n.b],e=[n.c,n.d],r=Fu(t),u=ju(t,e),i=Fu(Hu(e,t,-u))||0;t[0]*e[1]<e[0]*t[1]&&(t[0]*=-1,t[1]*=-1,r*=-1,u*=-1),this.rotate=(r?Math.atan2(t[1],t[0]):Math.atan2(-e[0],e[1]))*Ha,this.translate=[n.e,n.f],this.scale=[r,i],this.skew=i?Math.atan2(u,i)*Ha:0}function ju(n,t){return n[0]*t[0]+n[1]*t[1]}function Fu(n){var t=Math.sqrt(ju(n,n));return t&&(n[0]/=t,n[1]/=t),t}function Hu(n,t,e){return n[0]+=e*t[0],n[1]+=e*t[1],n}function Ou(n,t){var e,r=[],u=[],i=ta.transform(n),o=ta.transform(t),a=i.translate,c=o.translate,l=i.rotate,s=o.rotate,f=i.skew,h=o.skew,g=i.scale,p=o.scale;return a[0]!=c[0]||a[1]!=c[1]?(r.push("translate(",null,",",null,")"),u.push({i:1,x:du(a[0],c[0])},{i:3,x:du(a[1],c[1])})):c[0]||c[1]?r.push("translate("+c+")"):r.push(""),l!=s?(l-s>180?s+=360:s-l>180&&(l+=360),u.push({i:r.push(r.pop()+"rotate(",null,")")-2,x:du(l,s)})):s&&r.push(r.pop()+"rotate("+s+")"),f!=h?u.push({i:r.push(r.pop()+"skewX(",null,")")-2,x:du(f,h)}):h&&r.push(r.pop()+"skewX("+h+")"),g[0]!=p[0]||g[1]!=p[1]?(e=r.push(r.pop()+"scale(",null,",",null,")"),u.push({i:e-4,x:du(g[0],p[0])},{i:e-2,x:du(g[1],p[1])})):(1!=p[0]||1!=p[1])&&r.push(r.pop()+"scale("+p+")"),e=u.length,function(n){for(var t,i=-1;++i<e;)r[(t=u[i]).i]=t.x(n);return r.join("")}}function Yu(n,t){return t=(t-=n=+n)||1/t,function(e){return(e-n)/t}}function Iu(n,t){return t=(t-=n=+n)||1/t,function(e){return Math.max(0,Math.min(1,(e-n)/t))}}function Zu(n){for(var t=n.source,e=n.target,r=Xu(t,e),u=[t];t!==r;)t=t.parent,u.push(t);for(var i=u.length;e!==r;)u.splice(i,0,e),e=e.parent;return u}function Vu(n){for(var t=[],e=n.parent;null!=e;)t.push(n),n=e,e=e.parent;return t.push(n),t}function Xu(n,t){if(n===t)return n;for(var e=Vu(n),r=Vu(t),u=e.pop(),i=r.pop(),o=null;u===i;)o=u,u=e.pop(),i=r.pop();return o}function $u(n){n.fixed|=2}function Bu(n){n.fixed&=-7}function Wu(n){n.fixed|=4,n.px=n.x,n.py=n.y}function Ju(n){n.fixed&=-5}function Gu(n,t,e){var r=0,u=0;if(n.charge=0,!n.leaf)for(var i,o=n.nodes,a=o.length,c=-1;++c<a;)i=o[c],null!=i&&(Gu(i,t,e),n.charge+=i.charge,r+=i.charge*i.cx,u+=i.charge*i.cy);if(n.point){n.leaf||(n.point.x+=Math.random()-.5,n.point.y+=Math.random()-.5);var l=t*e[n.point.index];n.charge+=n.pointCharge=l,r+=l*n.point.x,u+=l*n.point.y}n.cx=r/n.charge,n.cy=u/n.charge}function Ku(n,t){return ta.rebind(n,t,"sort","children","value"),n.nodes=n,n.links=ui,n}function Qu(n,t){for(var e=[n];null!=(n=e.pop());)if(t(n),(u=n.children)&&(r=u.length))for(var r,u;--r>=0;)e.push(u[r])}function ni(n,t){for(var e=[n],r=[];null!=(n=e.pop());)if(r.push(n),(i=n.children)&&(u=i.length))for(var u,i,o=-1;++o<u;)e.push(i[o]);for(;null!=(n=r.pop());)t(n)}function ti(n){return n.children}function ei(n){return n.value}function ri(n,t){return t.value-n.value}function ui(n){return ta.merge(n.map(function(n){return(n.children||[]).map(function(t){return{source:n,target:t}})}))}function ii(n){return n.x}function oi(n){return n.y}function ai(n,t,e){n.y0=t,n.y=e}function ci(n){return ta.range(n.length)}function li(n){for(var t=-1,e=n[0].length,r=[];++t<e;)r[t]=0;return r}function si(n){for(var t,e=1,r=0,u=n[0][1],i=n.length;i>e;++e)(t=n[e][1])>u&&(r=e,u=t);return r}function fi(n){return n.reduce(hi,0)}function hi(n,t){return n+t[1]}function gi(n,t){return pi(n,Math.ceil(Math.log(t.length)/Math.LN2+1))}function pi(n,t){for(var e=-1,r=+n[0],u=(n[1]-r)/t,i=[];++e<=t;)i[e]=u*e+r;return i}function vi(n){return[ta.min(n),ta.max(n)]}function di(n,t){return n.value-t.value}function mi(n,t){var e=n._pack_next;n._pack_next=t,t._pack_prev=n,t._pack_next=e,e._pack_prev=t}function yi(n,t){n._pack_next=t,t._pack_prev=n}function Mi(n,t){var e=t.x-n.x,r=t.y-n.y,u=n.r+t.r;return.999*u*u>e*e+r*r}function xi(n){function t(n){s=Math.min(n.x-n.r,s),f=Math.max(n.x+n.r,f),h=Math.min(n.y-n.r,h),g=Math.max(n.y+n.r,g)}if((e=n.children)&&(l=e.length)){var e,r,u,i,o,a,c,l,s=1/0,f=-1/0,h=1/0,g=-1/0;if(e.forEach(bi),r=e[0],r.x=-r.r,r.y=0,t(r),l>1&&(u=e[1],u.x=u.r,u.y=0,t(u),l>2))for(i=e[2],Si(r,u,i),t(i),mi(r,i),r._pack_prev=i,mi(i,u),u=r._pack_next,o=3;l>o;o++){Si(r,u,i=e[o]);var p=0,v=1,d=1;for(a=u._pack_next;a!==u;a=a._pack_next,v++)if(Mi(a,i)){p=1;break}if(1==p)for(c=r._pack_prev;c!==a._pack_prev&&!Mi(c,i);c=c._pack_prev,d++);p?(d>v||v==d&&u.r<r.r?yi(r,u=a):yi(r=c,u),o--):(mi(r,i),u=i,t(i))}var m=(s+f)/2,y=(h+g)/2,M=0;for(o=0;l>o;o++)i=e[o],i.x-=m,i.y-=y,M=Math.max(M,i.r+Math.sqrt(i.x*i.x+i.y*i.y));n.r=M,e.forEach(_i)}}function bi(n){n._pack_next=n._pack_prev=n}function _i(n){delete n._pack_next,delete n._pack_prev}function wi(n,t,e,r){var u=n.children;if(n.x=t+=r*n.x,n.y=e+=r*n.y,n.r*=r,u)for(var i=-1,o=u.length;++i<o;)wi(u[i],t,e,r)}function Si(n,t,e){var r=n.r+e.r,u=t.x-n.x,i=t.y-n.y;if(r&&(u||i)){var o=t.r+e.r,a=u*u+i*i;o*=o,r*=r;var c=.5+(r-o)/(2*a),l=Math.sqrt(Math.max(0,2*o*(r+a)-(r-=a)*r-o*o))/(2*a);e.x=n.x+c*u+l*i,e.y=n.y+c*i-l*u}else e.x=n.x+r,e.y=n.y}function ki(n,t){return n.parent==t.parent?1:2}function Ei(n){var t=n.children;return t.length?t[0]:n.t}function Ai(n){var t,e=n.children;return(t=e.length)?e[t-1]:n.t}function Ni(n,t,e){var r=e/(t.i-n.i);t.c-=r,t.s+=e,n.c+=r,t.z+=e,t.m+=e}function Ci(n){for(var t,e=0,r=0,u=n.children,i=u.length;--i>=0;)t=u[i],t.z+=e,t.m+=e,e+=t.s+(r+=t.c)}function zi(n,t,e){return n.a.parent===t.parent?n.a:e}function qi(n){return 1+ta.max(n,function(n){return n.y})}function Li(n){return n.reduce(function(n,t){return n+t.x},0)/n.length}function Ti(n){var t=n.children;return t&&t.length?Ti(t[0]):n}function Ri(n){var t,e=n.children;return e&&(t=e.length)?Ri(e[t-1]):n}function Di(n){return{x:n.x,y:n.y,dx:n.dx,dy:n.dy}}function Pi(n,t){var e=n.x+t[3],r=n.y+t[0],u=n.dx-t[1]-t[3],i=n.dy-t[0]-t[2];return 0>u&&(e+=u/2,u=0),0>i&&(r+=i/2,i=0),{x:e,y:r,dx:u,dy:i}}function Ui(n){var t=n[0],e=n[n.length-1];return e>t?[t,e]:[e,t]}function ji(n){return n.rangeExtent?n.rangeExtent():Ui(n.range())}function Fi(n,t,e,r){var u=e(n[0],n[1]),i=r(t[0],t[1]);return function(n){return i(u(n))}}function Hi(n,t){var e,r=0,u=n.length-1,i=n[r],o=n[u];return i>o&&(e=r,r=u,u=e,e=i,i=o,o=e),n[r]=t.floor(i),n[u]=t.ceil(o),n}function Oi(n){return n?{floor:function(t){return Math.floor(t/n)*n},ceil:function(t){return Math.ceil(t/n)*n}}:bl}function Yi(n,t,e,r){var u=[],i=[],o=0,a=Math.min(n.length,t.length)-1;for(n[a]<n[0]&&(n=n.slice().reverse(),t=t.slice().reverse());++o<=a;)u.push(e(n[o-1],n[o])),i.push(r(t[o-1],t[o]));return function(t){var e=ta.bisect(n,t,1,a)-1;return i[e](u[e](t))}}function Ii(n,t,e,r){function u(){var u=Math.min(n.length,t.length)>2?Yi:Fi,c=r?Iu:Yu;return o=u(n,t,c,e),a=u(t,n,c,yu),i}function i(n){return o(n)}var o,a;return i.invert=function(n){return a(n)},i.domain=function(t){return arguments.length?(n=t.map(Number),u()):n},i.range=function(n){return arguments.length?(t=n,u()):t},i.rangeRound=function(n){return i.range(n).interpolate(Pu)},i.clamp=function(n){return arguments.length?(r=n,u()):r},i.interpolate=function(n){return arguments.length?(e=n,u()):e},i.ticks=function(t){return $i(n,t)},i.tickFormat=function(t,e){return Bi(n,t,e)},i.nice=function(t){return Vi(n,t),u()},i.copy=function(){return Ii(n,t,e,r)},u()}function Zi(n,t){return ta.rebind(n,t,"range","rangeRound","interpolate","clamp")}function Vi(n,t){return Hi(n,Oi(Xi(n,t)[2]))}function Xi(n,t){null==t&&(t=10);var e=Ui(n),r=e[1]-e[0],u=Math.pow(10,Math.floor(Math.log(r/t)/Math.LN10)),i=t/r*u;return.15>=i?u*=10:.35>=i?u*=5:.75>=i&&(u*=2),e[0]=Math.ceil(e[0]/u)*u,e[1]=Math.floor(e[1]/u)*u+.5*u,e[2]=u,e}function $i(n,t){return ta.range.apply(ta,Xi(n,t))}function Bi(n,t,e){var r=Xi(n,t);if(e){var u=lc.exec(e);if(u.shift(),"s"===u[8]){var i=ta.formatPrefix(Math.max(va(r[0]),va(r[1])));return u[7]||(u[7]="."+Wi(i.scale(r[2]))),u[8]="f",e=ta.format(u.join("")),function(n){return e(i.scale(n))+i.symbol}}u[7]||(u[7]="."+Ji(u[8],r)),e=u.join("")}else e=",."+Wi(r[2])+"f";return ta.format(e)}function Wi(n){return-Math.floor(Math.log(n)/Math.LN10+.01)}function Ji(n,t){var e=Wi(t[2]);return n in _l?Math.abs(e-Wi(Math.max(va(t[0]),va(t[1]))))+ +("e"!==n):e-2*("%"===n)}function Gi(n,t,e,r){function u(n){return(e?Math.log(0>n?0:n):-Math.log(n>0?0:-n))/Math.log(t)}function i(n){return e?Math.pow(t,n):-Math.pow(t,-n)}function o(t){return n(u(t))}return o.invert=function(t){return i(n.invert(t))},o.domain=function(t){return arguments.length?(e=t[0]>=0,n.domain((r=t.map(Number)).map(u)),o):r},o.base=function(e){return arguments.length?(t=+e,n.domain(r.map(u)),o):t},o.nice=function(){var t=Hi(r.map(u),e?Math:Sl);return n.domain(t),r=t.map(i),o},o.ticks=function(){var n=Ui(r),o=[],a=n[0],c=n[1],l=Math.floor(u(a)),s=Math.ceil(u(c)),f=t%1?2:t;if(isFinite(s-l)){if(e){for(;s>l;l++)for(var h=1;f>h;h++)o.push(i(l)*h);o.push(i(l))}else for(o.push(i(l));l++<s;)for(var h=f-1;h>0;h--)o.push(i(l)*h);for(l=0;o[l]<a;l++);for(s=o.length;o[s-1]>c;s--);o=o.slice(l,s)}return o},o.tickFormat=function(n,t){if(!arguments.length)return wl;arguments.length<2?t=wl:"function"!=typeof t&&(t=ta.format(t));var r,a=Math.max(.1,n/o.ticks().length),c=e?(r=1e-12,Math.ceil):(r=-1e-12,Math.floor);return function(n){return n/i(c(u(n)+r))<=a?t(n):""}},o.copy=function(){return Gi(n.copy(),t,e,r)},Zi(o,n)}function Ki(n,t,e){function r(t){return n(u(t))}var u=Qi(t),i=Qi(1/t);return r.invert=function(t){return i(n.invert(t))},r.domain=function(t){return arguments.length?(n.domain((e=t.map(Number)).map(u)),r):e},r.ticks=function(n){return $i(e,n)},r.tickFormat=function(n,t){return Bi(e,n,t)},r.nice=function(n){return r.domain(Vi(e,n))},r.exponent=function(o){return arguments.length?(u=Qi(t=o),i=Qi(1/t),n.domain(e.map(u)),r):t},r.copy=function(){return Ki(n.copy(),t,e)},Zi(r,n)}function Qi(n){return function(t){return 0>t?-Math.pow(-t,n):Math.pow(t,n)}}function no(n,t){function e(e){return i[((u.get(e)||("range"===t.t?u.set(e,n.push(e)):0/0))-1)%i.length]}function r(t,e){return ta.range(n.length).map(function(n){return t+e*n})}var u,i,o;return e.domain=function(r){if(!arguments.length)return n;n=[],u=new a;for(var i,o=-1,c=r.length;++o<c;)u.has(i=r[o])||u.set(i,n.push(i));return e[t.t].apply(e,t.a)},e.range=function(n){return arguments.length?(i=n,o=0,t={t:"range",a:arguments},e):i},e.rangePoints=function(u,a){arguments.length<2&&(a=0);var c=u[0],l=u[1],s=n.length<2?(c=(c+l)/2,0):(l-c)/(n.length-1+a);return i=r(c+s*a/2,s),o=0,t={t:"rangePoints",a:arguments},e},e.rangeRoundPoints=function(u,a){arguments.length<2&&(a=0);var c=u[0],l=u[1],s=n.length<2?(c=l=Math.round((c+l)/2),0):0|(l-c)/(n.length-1+a);return i=r(c+Math.round(s*a/2+(l-c-(n.length-1+a)*s)/2),s),o=0,t={t:"rangeRoundPoints",a:arguments},e},e.rangeBands=function(u,a,c){arguments.length<2&&(a=0),arguments.length<3&&(c=a);var l=u[1]<u[0],s=u[l-0],f=u[1-l],h=(f-s)/(n.length-a+2*c);return i=r(s+h*c,h),l&&i.reverse(),o=h*(1-a),t={t:"rangeBands",a:arguments},e},e.rangeRoundBands=function(u,a,c){arguments.length<2&&(a=0),arguments.length<3&&(c=a);var l=u[1]<u[0],s=u[l-0],f=u[1-l],h=Math.floor((f-s)/(n.length-a+2*c));return i=r(s+Math.round((f-s-(n.length-a)*h)/2),h),l&&i.reverse(),o=Math.round(h*(1-a)),t={t:"rangeRoundBands",a:arguments},e},e.rangeBand=function(){return o},e.rangeExtent=function(){return Ui(t.a[0])},e.copy=function(){return no(n,t)},e.domain(n)}function to(r,u){function i(){var n=0,t=u.length;for(a=[];++n<t;)a[n-1]=ta.quantile(r,n/t);return o}function o(n){return isNaN(n=+n)?void 0:u[ta.bisect(a,n)]}var a;return o.domain=function(u){return arguments.length?(r=u.map(t).filter(e).sort(n),i()):r},o.range=function(n){return arguments.length?(u=n,i()):u},o.quantiles=function(){return a},o.invertExtent=function(n){return n=u.indexOf(n),0>n?[0/0,0/0]:[n>0?a[n-1]:r[0],n<a.length?a[n]:r[r.length-1]]},o.copy=function(){return to(r,u)},i()}function eo(n,t,e){function r(t){return e[Math.max(0,Math.min(o,Math.floor(i*(t-n))))]}function u(){return i=e.length/(t-n),o=e.length-1,r}var i,o;return r.domain=function(e){return arguments.length?(n=+e[0],t=+e[e.length-1],u()):[n,t]},r.range=function(n){return arguments.length?(e=n,u()):e},r.invertExtent=function(t){return t=e.indexOf(t),t=0>t?0/0:t/i+n,[t,t+1/i]},r.copy=function(){return eo(n,t,e)},u()}function ro(n,t){function e(e){return e>=e?t[ta.bisect(n,e)]:void 0}return e.domain=function(t){return arguments.length?(n=t,e):n},e.range=function(n){return arguments.length?(t=n,e):t},e.invertExtent=function(e){return e=t.indexOf(e),[n[e-1],n[e]]},e.copy=function(){return ro(n,t)},e}function uo(n){function t(n){return+n}return t.invert=t,t.domain=t.range=function(e){return arguments.length?(n=e.map(t),t):n},t.ticks=function(t){return $i(n,t)},t.tickFormat=function(t,e){return Bi(n,t,e)},t.copy=function(){return uo(n)},t}function io(){return 0}function oo(n){return n.innerRadius}function ao(n){return n.outerRadius}function co(n){return n.startAngle}function lo(n){return n.endAngle}function so(n){return n&&n.padAngle}function fo(n,t,e,r){return(n-e)*t-(t-r)*n>0?0:1}function ho(n,t,e,r,u){var i=n[0]-t[0],o=n[1]-t[1],a=(u?r:-r)/Math.sqrt(i*i+o*o),c=a*o,l=-a*i,s=n[0]+c,f=n[1]+l,h=t[0]+c,g=t[1]+l,p=(s+h)/2,v=(f+g)/2,d=h-s,m=g-f,y=d*d+m*m,M=e-r,x=s*g-h*f,b=(0>m?-1:1)*Math.sqrt(M*M*y-x*x),_=(x*m-d*b)/y,w=(-x*d-m*b)/y,S=(x*m+d*b)/y,k=(-x*d+m*b)/y,E=_-p,A=w-v,N=S-p,C=k-v;return E*E+A*A>N*N+C*C&&(_=S,w=k),[[_-c,w-l],[_*e/M,w*e/M]]}function go(n){function t(t){function o(){l.push("M",i(n(s),a))}for(var c,l=[],s=[],f=-1,h=t.length,g=Et(e),p=Et(r);++f<h;)u.call(this,c=t[f],f)?s.push([+g.call(this,c,f),+p.call(this,c,f)]):s.length&&(o(),s=[]);return s.length&&o(),l.length?l.join(""):null}var e=Nr,r=Cr,u=Ce,i=po,o=i.key,a=.7;return t.x=function(n){return arguments.length?(e=n,t):e},t.y=function(n){return arguments.length?(r=n,t):r},t.defined=function(n){return arguments.length?(u=n,t):u},t.interpolate=function(n){return arguments.length?(o="function"==typeof n?i=n:(i=zl.get(n)||po).key,t):o},t.tension=function(n){return arguments.length?(a=n,t):a},t}function po(n){return n.join("L")}function vo(n){return po(n)+"Z"}function mo(n){for(var t=0,e=n.length,r=n[0],u=[r[0],",",r[1]];++t<e;)u.push("H",(r[0]+(r=n[t])[0])/2,"V",r[1]);return e>1&&u.push("H",r[0]),u.join("")}function yo(n){for(var t=0,e=n.length,r=n[0],u=[r[0],",",r[1]];++t<e;)u.push("V",(r=n[t])[1],"H",r[0]);return u.join("")}function Mo(n){for(var t=0,e=n.length,r=n[0],u=[r[0],",",r[1]];++t<e;)u.push("H",(r=n[t])[0],"V",r[1]);return u.join("")}function xo(n,t){return n.length<4?po(n):n[1]+wo(n.slice(1,-1),So(n,t))}function bo(n,t){return n.length<3?po(n):n[0]+wo((n.push(n[0]),n),So([n[n.length-2]].concat(n,[n[1]]),t))}function _o(n,t){return n.length<3?po(n):n[0]+wo(n,So(n,t))}function wo(n,t){if(t.length<1||n.length!=t.length&&n.length!=t.length+2)return po(n);var e=n.length!=t.length,r="",u=n[0],i=n[1],o=t[0],a=o,c=1;if(e&&(r+="Q"+(i[0]-2*o[0]/3)+","+(i[1]-2*o[1]/3)+","+i[0]+","+i[1],u=n[1],c=2),t.length>1){a=t[1],i=n[c],c++,r+="C"+(u[0]+o[0])+","+(u[1]+o[1])+","+(i[0]-a[0])+","+(i[1]-a[1])+","+i[0]+","+i[1];for(var l=2;l<t.length;l++,c++)i=n[c],a=t[l],r+="S"+(i[0]-a[0])+","+(i[1]-a[1])+","+i[0]+","+i[1]}if(e){var s=n[c];r+="Q"+(i[0]+2*a[0]/3)+","+(i[1]+2*a[1]/3)+","+s[0]+","+s[1]}return r}function So(n,t){for(var e,r=[],u=(1-t)/2,i=n[0],o=n[1],a=1,c=n.length;++a<c;)e=i,i=o,o=n[a],r.push([u*(o[0]-e[0]),u*(o[1]-e[1])]);return r}function ko(n){if(n.length<3)return po(n);var t=1,e=n.length,r=n[0],u=r[0],i=r[1],o=[u,u,u,(r=n[1])[0]],a=[i,i,i,r[1]],c=[u,",",i,"L",Co(Tl,o),",",Co(Tl,a)];for(n.push(n[e-1]);++t<=e;)r=n[t],o.shift(),o.push(r[0]),a.shift(),a.push(r[1]),zo(c,o,a);return n.pop(),c.push("L",r),c.join("")}function Eo(n){if(n.length<4)return po(n);for(var t,e=[],r=-1,u=n.length,i=[0],o=[0];++r<3;)t=n[r],i.push(t[0]),o.push(t[1]);for(e.push(Co(Tl,i)+","+Co(Tl,o)),--r;++r<u;)t=n[r],i.shift(),i.push(t[0]),o.shift(),o.push(t[1]),zo(e,i,o);return e.join("")}function Ao(n){for(var t,e,r=-1,u=n.length,i=u+4,o=[],a=[];++r<4;)e=n[r%u],o.push(e[0]),a.push(e[1]);for(t=[Co(Tl,o),",",Co(Tl,a)],--r;++r<i;)e=n[r%u],o.shift(),o.push(e[0]),a.shift(),a.push(e[1]),zo(t,o,a);return t.join("")}function No(n,t){var e=n.length-1;if(e)for(var r,u,i=n[0][0],o=n[0][1],a=n[e][0]-i,c=n[e][1]-o,l=-1;++l<=e;)r=n[l],u=l/e,r[0]=t*r[0]+(1-t)*(i+u*a),r[1]=t*r[1]+(1-t)*(o+u*c);return ko(n)}function Co(n,t){return n[0]*t[0]+n[1]*t[1]+n[2]*t[2]+n[3]*t[3]}function zo(n,t,e){n.push("C",Co(ql,t),",",Co(ql,e),",",Co(Ll,t),",",Co(Ll,e),",",Co(Tl,t),",",Co(Tl,e))}function qo(n,t){return(t[1]-n[1])/(t[0]-n[0])}function Lo(n){for(var t=0,e=n.length-1,r=[],u=n[0],i=n[1],o=r[0]=qo(u,i);++t<e;)r[t]=(o+(o=qo(u=i,i=n[t+1])))/2;return r[t]=o,r}function To(n){for(var t,e,r,u,i=[],o=Lo(n),a=-1,c=n.length-1;++a<c;)t=qo(n[a],n[a+1]),va(t)<Ta?o[a]=o[a+1]=0:(e=o[a]/t,r=o[a+1]/t,u=e*e+r*r,u>9&&(u=3*t/Math.sqrt(u),o[a]=u*e,o[a+1]=u*r));for(a=-1;++a<=c;)u=(n[Math.min(c,a+1)][0]-n[Math.max(0,a-1)][0])/(6*(1+o[a]*o[a])),i.push([u||0,o[a]*u||0]);return i}function Ro(n){return n.length<3?po(n):n[0]+wo(n,To(n))}function Do(n){for(var t,e,r,u=-1,i=n.length;++u<i;)t=n[u],e=t[0],r=t[1]-ja,t[0]=e*Math.cos(r),t[1]=e*Math.sin(r);return n}function Po(n){function t(t){function c(){v.push("M",a(n(m),f),s,l(n(d.reverse()),f),"Z")}for(var h,g,p,v=[],d=[],m=[],y=-1,M=t.length,x=Et(e),b=Et(u),_=e===r?function(){return g}:Et(r),w=u===i?function(){return p}:Et(i);++y<M;)o.call(this,h=t[y],y)?(d.push([g=+x.call(this,h,y),p=+b.call(this,h,y)]),m.push([+_.call(this,h,y),+w.call(this,h,y)])):d.length&&(c(),d=[],m=[]);return d.length&&c(),v.length?v.join(""):null}var e=Nr,r=Nr,u=0,i=Cr,o=Ce,a=po,c=a.key,l=a,s="L",f=.7;return t.x=function(n){return arguments.length?(e=r=n,t):r},t.x0=function(n){return arguments.length?(e=n,t):e},t.x1=function(n){return arguments.length?(r=n,t):r},t.y=function(n){return arguments.length?(u=i=n,t):i},t.y0=function(n){return arguments.length?(u=n,t):u},t.y1=function(n){return arguments.length?(i=n,t):i},t.defined=function(n){return arguments.length?(o=n,t):o},t.interpolate=function(n){return arguments.length?(c="function"==typeof n?a=n:(a=zl.get(n)||po).key,l=a.reverse||a,s=a.closed?"M":"L",t):c
2306 (L*L/x>i||va((y*z+M*q)/x-.5)>.3||o>a*g+c*p+l*v)&&(u(t,e,r,a,c,l,N,C,E,b/=S,_/=S,w,d,m),m.point(N,C),u(N,C,E,b,_,w,s,f,h,g,p,v,d,m))}}var i=.5,o=Math.cos(30*Fa),a=16;return t.precision=function(n){return arguments.length?(a=(i=n*n)>0&&16,t):Math.sqrt(i)},t}function er(n){var t=tr(function(t,e){return n([t*Ha,e*Ha])});return function(n){return ar(t(n))}}function rr(n){this.stream=n}function ur(n,t){return{point:t,sphere:function(){n.sphere()},lineStart:function(){n.lineStart()},lineEnd:function(){n.lineEnd()},polygonStart:function(){n.polygonStart()},polygonEnd:function(){n.polygonEnd()}}}function ir(n){return or(function(){return n})()}function or(n){function t(n){return n=a(n[0]*Fa,n[1]*Fa),[n[0]*h+c,l-n[1]*h]}function e(n){return n=a.invert((n[0]-c)/h,(l-n[1])/h),n&&[n[0]*Ha,n[1]*Ha]}function r(){a=Ne(o=sr(m,y,M),i);var n=i(v,d);return c=g-n[0]*h,l=p+n[1]*h,u()}function u(){return s&&(s.valid=!1,s=null),t}var i,o,a,c,l,s,f=tr(function(n,t){return n=i(n,t),[n[0]*h+c,l-n[1]*h]}),h=150,g=480,p=250,v=0,d=0,m=0,y=0,M=0,x=Pc,b=At,_=null,w=null;return t.stream=function(n){return s&&(s.valid=!1),s=ar(x(o,f(b(n)))),s.valid=!0,s},t.clipAngle=function(n){return arguments.length?(x=null==n?(_=n,Pc):Oe((_=+n)*Fa),u()):_},t.clipExtent=function(n){return arguments.length?(w=n,b=n?Ie(n[0][0],n[0][1],n[1][0],n[1][1]):At,u()):w},t.scale=function(n){return arguments.length?(h=+n,r()):h},t.translate=function(n){return arguments.length?(g=+n[0],p=+n[1],r()):[g,p]},t.center=function(n){return arguments.length?(v=n[0]%360*Fa,d=n[1]%360*Fa,r()):[v*Ha,d*Ha]},t.rotate=function(n){return arguments.length?(m=n[0]%360*Fa,y=n[1]%360*Fa,M=n.length>2?n[2]%360*Fa:0,r()):[m*Ha,y*Ha,M*Ha]},ta.rebind(t,f,"precision"),function(){return i=n.apply(this,arguments),t.invert=i.invert&&e,r()}}function ar(n){return ur(n,function(t,e){n.point(t*Fa,e*Fa)})}function cr(n,t){return[n,t]}function lr(n,t){return[n>Da?n-Pa:-Da>n?n+Pa:n,t]}function sr(n,t,e){return n?t||e?Ne(hr(n),gr(t,e)):hr(n):t||e?gr(t,e):lr}function fr(n){return function(t,e){return t+=n,[t>Da?t-Pa:-Da>t?t+Pa:t,e]}}function hr(n){var t=fr(n);return t.invert=fr(-n),t}function gr(n,t){function e(n,t){var e=Math.cos(t),a=Math.cos(n)*e,c=Math.sin(n)*e,l=Math.sin(t),s=l*r+a*u;return[Math.atan2(c*i-s*o,a*r-l*u),tt(s*i+c*o)]}var r=Math.cos(n),u=Math.sin(n),i=Math.cos(t),o=Math.sin(t);return e.invert=function(n,t){var e=Math.cos(t),a=Math.cos(n)*e,c=Math.sin(n)*e,l=Math.sin(t),s=l*i-c*o;return[Math.atan2(c*i+l*o,a*r+s*u),tt(s*r-a*u)]},e}function pr(n,t){var e=Math.cos(n),r=Math.sin(n);return function(u,i,o,a){var c=o*t;null!=u?(u=vr(e,u),i=vr(e,i),(o>0?i>u:u>i)&&(u+=o*Pa)):(u=n+o*Pa,i=n-.5*c);for(var l,s=u;o>0?s>i:i>s;s-=c)a.point((l=be([e,-r*Math.cos(s),-r*Math.sin(s)]))[0],l[1])}}function vr(n,t){var e=ve(t);e[0]-=n,xe(e);var r=nt(-e[1]);return((-e[2]<0?-r:r)+2*Math.PI-Ta)%(2*Math.PI)}function dr(n,t,e){var r=ta.range(n,t-Ta,e).concat(t);return function(n){return r.map(function(t){return[n,t]})}}function mr(n,t,e){var r=ta.range(n,t-Ta,e).concat(t);return function(n){return r.map(function(t){return[t,n]})}}function yr(n){return n.source}function Mr(n){return n.target}function xr(n,t,e,r){var u=Math.cos(t),i=Math.sin(t),o=Math.cos(r),a=Math.sin(r),c=u*Math.cos(n),l=u*Math.sin(n),s=o*Math.cos(e),f=o*Math.sin(e),h=2*Math.asin(Math.sqrt(it(r-t)+u*o*it(e-n))),g=1/Math.sin(h),p=h?function(n){var t=Math.sin(n*=h)*g,e=Math.sin(h-n)*g,r=e*c+t*s,u=e*l+t*f,o=e*i+t*a;return[Math.atan2(u,r)*Ha,Math.atan2(o,Math.sqrt(r*r+u*u))*Ha]}:function(){return[n*Ha,t*Ha]};return p.distance=h,p}function br(){function n(n,u){var i=Math.sin(u*=Fa),o=Math.cos(u),a=va((n*=Fa)-t),c=Math.cos(a);$c+=Math.atan2(Math.sqrt((a=o*Math.sin(a))*a+(a=r*i-e*o*c)*a),e*i+r*o*c),t=n,e=i,r=o}var t,e,r;Bc.point=function(u,i){t=u*Fa,e=Math.sin(i*=Fa),r=Math.cos(i),Bc.point=n},Bc.lineEnd=function(){Bc.point=Bc.lineEnd=y}}function _r(n,t){function e(t,e){var r=Math.cos(t),u=Math.cos(e),i=n(r*u);return[i*u*Math.sin(t),i*Math.sin(e)]}return e.invert=function(n,e){var r=Math.sqrt(n*n+e*e),u=t(r),i=Math.sin(u),o=Math.cos(u);return[Math.atan2(n*i,r*o),Math.asin(r&&e*i/r)]},e}function wr(n,t){function e(n,t){o>0?-ja+Ta>t&&(t=-ja+Ta):t>ja-Ta&&(t=ja-Ta);var e=o/Math.pow(u(t),i);return[e*Math.sin(i*n),o-e*Math.cos(i*n)]}var r=Math.cos(n),u=function(n){return Math.tan(Da/4+n/2)},i=n===t?Math.sin(n):Math.log(r/Math.cos(t))/Math.log(u(t)/u(n)),o=r*Math.pow(u(n),i)/i;return i?(e.invert=function(n,t){var e=o-t,r=K(i)*Math.sqrt(n*n+e*e);return[Math.atan2(n,e)/i,2*Math.atan(Math.pow(o/r,1/i))-ja]},e):kr}function Sr(n,t){function e(n,t){var e=i-t;return[e*Math.sin(u*n),i-e*Math.cos(u*n)]}var r=Math.cos(n),u=n===t?Math.sin(n):(r-Math.cos(t))/(t-n),i=r/u+n;return va(u)<Ta?cr:(e.invert=function(n,t){var e=i-t;return[Math.atan2(n,e)/u,i-K(u)*Math.sqrt(n*n+e*e)]},e)}function kr(n,t){return[n,Math.log(Math.tan(Da/4+t/2))]}function Er(n){var t,e=ir(n),r=e.scale,u=e.translate,i=e.clipExtent;return e.scale=function(){var n=r.apply(e,arguments);return n===e?t?e.clipExtent(null):e:n},e.translate=function(){var n=u.apply(e,arguments);return n===e?t?e.clipExtent(null):e:n},e.clipExtent=function(n){var o=i.apply(e,arguments);if(o===e){if(t=null==n){var a=Da*r(),c=u();i([[c[0]-a,c[1]-a],[c[0]+a,c[1]+a]])}}else t&&(o=null);return o},e.clipExtent(null)}function Ar(n,t){return[Math.log(Math.tan(Da/4+t/2)),-n]}function Nr(n){return n[0]}function Cr(n){return n[1]}function zr(n){for(var t=n.length,e=[0,1],r=2,u=2;t>u;u++){for(;r>1&&Q(n[e[r-2]],n[e[r-1]],n[u])<=0;)--r;e[r++]=u}return e.slice(0,r)}function qr(n,t){return n[0]-t[0]||n[1]-t[1]}function Lr(n,t,e){return(e[0]-t[0])*(n[1]-t[1])<(e[1]-t[1])*(n[0]-t[0])}function Tr(n,t,e,r){var u=n[0],i=e[0],o=t[0]-u,a=r[0]-i,c=n[1],l=e[1],s=t[1]-c,f=r[1]-l,h=(a*(c-l)-f*(u-i))/(f*o-a*s);return[u+h*o,c+h*s]}function Rr(n){var t=n[0],e=n[n.length-1];return!(t[0]-e[0]||t[1]-e[1])}function Dr(){eu(this),this.edge=this.site=this.circle=null}function Pr(n){var t=ol.pop()||new Dr;return t.site=n,t}function Ur(n){$r(n),rl.remove(n),ol.push(n),eu(n)}function jr(n){var t=n.circle,e=t.x,r=t.cy,u={x:e,y:r},i=n.P,o=n.N,a=[n];Ur(n);for(var c=i;c.circle&&va(e-c.circle.x)<Ta&&va(r-c.circle.cy)<Ta;)i=c.P,a.unshift(c),Ur(c),c=i;a.unshift(c),$r(c);for(var l=o;l.circle&&va(e-l.circle.x)<Ta&&va(r-l.circle.cy)<Ta;)o=l.N,a.push(l),Ur(l),l=o;a.push(l),$r(l);var s,f=a.length;for(s=1;f>s;++s)l=a[s],c=a[s-1],Qr(l.edge,c.site,l.site,u);c=a[0],l=a[f-1],l.edge=Gr(c.site,l.site,null,u),Xr(c),Xr(l)}function Fr(n){for(var t,e,r,u,i=n.x,o=n.y,a=rl._;a;)if(r=Hr(a,o)-i,r>Ta)a=a.L;else{if(u=i-Or(a,o),!(u>Ta)){r>-Ta?(t=a.P,e=a):u>-Ta?(t=a,e=a.N):t=e=a;break}if(!a.R){t=a;break}a=a.R}var c=Pr(n);if(rl.insert(t,c),t||e){if(t===e)return $r(t),e=Pr(t.site),rl.insert(c,e),c.edge=e.edge=Gr(t.site,c.site),Xr(t),Xr(e),void 0;if(!e)return c.edge=Gr(t.site,c.site),void 0;$r(t),$r(e);var l=t.site,s=l.x,f=l.y,h=n.x-s,g=n.y-f,p=e.site,v=p.x-s,d=p.y-f,m=2*(h*d-g*v),y=h*h+g*g,M=v*v+d*d,x={x:(d*y-g*M)/m+s,y:(h*M-v*y)/m+f};Qr(e.edge,l,p,x),c.edge=Gr(l,n,null,x),e.edge=Gr(n,p,null,x),Xr(t),Xr(e)}}function Hr(n,t){var e=n.site,r=e.x,u=e.y,i=u-t;if(!i)return r;var o=n.P;if(!o)return-1/0;e=o.site;var a=e.x,c=e.y,l=c-t;if(!l)return a;var s=a-r,f=1/i-1/l,h=s/l;return f?(-h+Math.sqrt(h*h-2*f*(s*s/(-2*l)-c+l/2+u-i/2)))/f+r:(r+a)/2}function Or(n,t){var e=n.N;if(e)return Hr(e,t);var r=n.site;return r.y===t?r.x:1/0}function Yr(n){this.site=n,this.edges=[]}function Ir(n){for(var t,e,r,u,i,o,a,c,l,s,f=n[0][0],h=n[1][0],g=n[0][1],p=n[1][1],v=el,d=v.length;d--;)if(i=v[d],i&&i.prepare())for(a=i.edges,c=a.length,o=0;c>o;)s=a[o].end(),r=s.x,u=s.y,l=a[++o%c].start(),t=l.x,e=l.y,(va(r-t)>Ta||va(u-e)>Ta)&&(a.splice(o,0,new nu(Kr(i.site,s,va(r-f)<Ta&&p-u>Ta?{x:f,y:va(t-f)<Ta?e:p}:va(u-p)<Ta&&h-r>Ta?{x:va(e-p)<Ta?t:h,y:p}:va(r-h)<Ta&&u-g>Ta?{x:h,y:va(t-h)<Ta?e:g}:va(u-g)<Ta&&r-f>Ta?{x:va(e-g)<Ta?t:f,y:g}:null),i.site,null)),++c)}function Zr(n,t){return t.angle-n.angle}function Vr(){eu(this),this.x=this.y=this.arc=this.site=this.cy=null}function Xr(n){var t=n.P,e=n.N;if(t&&e){var r=t.site,u=n.site,i=e.site;if(r!==i){var o=u.x,a=u.y,c=r.x-o,l=r.y-a,s=i.x-o,f=i.y-a,h=2*(c*f-l*s);if(!(h>=-Ra)){var g=c*c+l*l,p=s*s+f*f,v=(f*g-l*p)/h,d=(c*p-s*g)/h,f=d+a,m=al.pop()||new Vr;m.arc=n,m.site=u,m.x=v+o,m.y=f+Math.sqrt(v*v+d*d),m.cy=f,n.circle=m;for(var y=null,M=il._;M;)if(m.y<M.y||m.y===M.y&&m.x<=M.x){if(!M.L){y=M.P;break}M=M.L}else{if(!M.R){y=M;break}M=M.R}il.insert(y,m),y||(ul=m)}}}}function $r(n){var t=n.circle;t&&(t.P||(ul=t.N),il.remove(t),al.push(t),eu(t),n.circle=null)}function Br(n){for(var t,e=tl,r=Ye(n[0][0],n[0][1],n[1][0],n[1][1]),u=e.length;u--;)t=e[u],(!Wr(t,n)||!r(t)||va(t.a.x-t.b.x)<Ta&&va(t.a.y-t.b.y)<Ta)&&(t.a=t.b=null,e.splice(u,1))}function Wr(n,t){var e=n.b;if(e)return!0;var r,u,i=n.a,o=t[0][0],a=t[1][0],c=t[0][1],l=t[1][1],s=n.l,f=n.r,h=s.x,g=s.y,p=f.x,v=f.y,d=(h+p)/2,m=(g+v)/2;if(v===g){if(o>d||d>=a)return;if(h>p){if(i){if(i.y>=l)return}else i={x:d,y:c};e={x:d,y:l}}else{if(i){if(i.y<c)return}else i={x:d,y:l};e={x:d,y:c}}}else if(r=(h-p)/(v-g),u=m-r*d,-1>r||r>1)if(h>p){if(i){if(i.y>=l)return}else i={x:(c-u)/r,y:c};e={x:(l-u)/r,y:l}}else{if(i){if(i.y<c)return}else i={x:(l-u)/r,y:l};e={x:(c-u)/r,y:c}}else if(v>g){if(i){if(i.x>=a)return}else i={x:o,y:r*o+u};e={x:a,y:r*a+u}}else{if(i){if(i.x<o)return}else i={x:a,y:r*a+u};e={x:o,y:r*o+u}}return n.a=i,n.b=e,!0}function Jr(n,t){this.l=n,this.r=t,this.a=this.b=null}function Gr(n,t,e,r){var u=new Jr(n,t);return tl.push(u),e&&Qr(u,n,t,e),r&&Qr(u,t,n,r),el[n.i].edges.push(new nu(u,n,t)),el[t.i].edges.push(new nu(u,t,n)),u}function Kr(n,t,e){var r=new Jr(n,null);return r.a=t,r.b=e,tl.push(r),r}function Qr(n,t,e,r){n.a||n.b?n.l===e?n.b=r:n.a=r:(n.a=r,n.l=t,n.r=e)}function nu(n,t,e){var r=n.a,u=n.b;this.edge=n,this.site=t,this.angle=e?Math.atan2(e.y-t.y,e.x-t.x):n.l===t?Math.atan2(u.x-r.x,r.y-u.y):Math.atan2(r.x-u.x,u.y-r.y)}function tu(){this._=null}function eu(n){n.U=n.C=n.L=n.R=n.P=n.N=null}function ru(n,t){var e=t,r=t.R,u=e.U;u?u.L===e?u.L=r:u.R=r:n._=r,r.U=u,e.U=r,e.R=r.L,e.R&&(e.R.U=e),r.L=e}function uu(n,t){var e=t,r=t.L,u=e.U;u?u.L===e?u.L=r:u.R=r:n._=r,r.U=u,e.U=r,e.L=r.R,e.L&&(e.L.U=e),r.R=e}function iu(n){for(;n.L;)n=n.L;return n}function ou(n,t){var e,r,u,i=n.sort(au).pop();for(tl=[],el=new Array(n.length),rl=new tu,il=new tu;;)if(u=ul,i&&(!u||i.y<u.y||i.y===u.y&&i.x<u.x))(i.x!==e||i.y!==r)&&(el[i.i]=new Yr(i),Fr(i),e=i.x,r=i.y),i=n.pop();else{if(!u)break;jr(u.arc)}t&&(Br(t),Ir(t));var o={cells:el,edges:tl};return rl=il=tl=el=null,o}function au(n,t){return t.y-n.y||t.x-n.x}function cu(n,t,e){return(n.x-e.x)*(t.y-n.y)-(n.x-t.x)*(e.y-n.y)}function lu(n){return n.x}function su(n){return n.y}function fu(){return{leaf:!0,nodes:[],point:null,x:null,y:null}}function hu(n,t,e,r,u,i){if(!n(t,e,r,u,i)){var o=.5*(e+u),a=.5*(r+i),c=t.nodes;c[0]&&hu(n,c[0],e,r,o,a),c[1]&&hu(n,c[1],o,r,u,a),c[2]&&hu(n,c[2],e,a,o,i),c[3]&&hu(n,c[3],o,a,u,i)}}function gu(n,t,e,r,u,i,o){var a,c=1/0;return function l(n,s,f,h,g){if(!(s>i||f>o||r>h||u>g)){if(p=n.point){var p,v=t-p[0],d=e-p[1],m=v*v+d*d;if(c>m){var y=Math.sqrt(c=m);r=t-y,u=e-y,i=t+y,o=e+y,a=p}}for(var M=n.nodes,x=.5*(s+h),b=.5*(f+g),_=t>=x,w=e>=b,S=w<<1|_,k=S+4;k>S;++S)if(n=M[3&S])switch(3&S){case 0:l(n,s,f,x,b);break;case 1:l(n,x,f,h,b);break;case 2:l(n,s,b,x,g);break;case 3:l(n,x,b,h,g)}}}(n,r,u,i,o),a}function pu(n,t){n=ta.rgb(n),t=ta.rgb(t);var e=n.r,r=n.g,u=n.b,i=t.r-e,o=t.g-r,a=t.b-u;return function(n){return"#"+xt(Math.round(e+i*n))+xt(Math.round(r+o*n))+xt(Math.round(u+a*n))}}function vu(n,t){var e,r={},u={};for(e in n)e in t?r[e]=yu(n[e],t[e]):u[e]=n[e];for(e in t)e in n||(u[e]=t[e]);return function(n){for(e in r)u[e]=r[e](n);return u}}function du(n,t){return n=+n,t=+t,function(e){return n*(1-e)+t*e}}function mu(n,t){var e,r,u,i=ll.lastIndex=sl.lastIndex=0,o=-1,a=[],c=[];for(n+="",t+="";(e=ll.exec(n))&&(r=sl.exec(t));)(u=r.index)>i&&(u=t.slice(i,u),a[o]?a[o]+=u:a[++o]=u),(e=e[0])===(r=r[0])?a[o]?a[o]+=r:a[++o]=r:(a[++o]=null,c.push({i:o,x:du(e,r)})),i=sl.lastIndex;return i<t.length&&(u=t.slice(i),a[o]?a[o]+=u:a[++o]=u),a.length<2?c[0]?(t=c[0].x,function(n){return t(n)+""}):function(){return t}:(t=c.length,function(n){for(var e,r=0;t>r;++r)a[(e=c[r]).i]=e.x(n);return a.join("")})}function yu(n,t){for(var e,r=ta.interpolators.length;--r>=0&&!(e=ta.interpolators[r](n,t)););return e}function Mu(n,t){var e,r=[],u=[],i=n.length,o=t.length,a=Math.min(n.length,t.length);for(e=0;a>e;++e)r.push(yu(n[e],t[e]));for(;i>e;++e)u[e]=n[e];for(;o>e;++e)u[e]=t[e];return function(n){for(e=0;a>e;++e)u[e]=r[e](n);return u}}function xu(n){return function(t){return 0>=t?0:t>=1?1:n(t)}}function bu(n){return function(t){return 1-n(1-t)}}function _u(n){return function(t){return.5*(.5>t?n(2*t):2-n(2-2*t))}}function wu(n){return n*n}function Su(n){return n*n*n}function ku(n){if(0>=n)return 0;if(n>=1)return 1;var t=n*n,e=t*n;return 4*(.5>n?e:3*(n-t)+e-.75)}function Eu(n){return function(t){return Math.pow(t,n)}}function Au(n){return 1-Math.cos(n*ja)}function Nu(n){return Math.pow(2,10*(n-1))}function Cu(n){return 1-Math.sqrt(1-n*n)}function zu(n,t){var e;return arguments.length<2&&(t=.45),arguments.length?e=t/Pa*Math.asin(1/n):(n=1,e=t/4),function(r){return 1+n*Math.pow(2,-10*r)*Math.sin((r-e)*Pa/t)}}function qu(n){return n||(n=1.70158),function(t){return t*t*((n+1)*t-n)}}function Lu(n){return 1/2.75>n?7.5625*n*n:2/2.75>n?7.5625*(n-=1.5/2.75)*n+.75:2.5/2.75>n?7.5625*(n-=2.25/2.75)*n+.9375:7.5625*(n-=2.625/2.75)*n+.984375}function Tu(n,t){n=ta.hcl(n),t=ta.hcl(t);var e=n.h,r=n.c,u=n.l,i=t.h-e,o=t.c-r,a=t.l-u;return isNaN(o)&&(o=0,r=isNaN(r)?t.c:r),isNaN(i)?(i=0,e=isNaN(e)?t.h:e):i>180?i-=360:-180>i&&(i+=360),function(n){return st(e+i*n,r+o*n,u+a*n)+""}}function Ru(n,t){n=ta.hsl(n),t=ta.hsl(t);var e=n.h,r=n.s,u=n.l,i=t.h-e,o=t.s-r,a=t.l-u;return isNaN(o)&&(o=0,r=isNaN(r)?t.s:r),isNaN(i)?(i=0,e=isNaN(e)?t.h:e):i>180?i-=360:-180>i&&(i+=360),function(n){return ct(e+i*n,r+o*n,u+a*n)+""}}function Du(n,t){n=ta.lab(n),t=ta.lab(t);var e=n.l,r=n.a,u=n.b,i=t.l-e,o=t.a-r,a=t.b-u;return function(n){return ht(e+i*n,r+o*n,u+a*n)+""}}function Pu(n,t){return t-=n,function(e){return Math.round(n+t*e)}}function Uu(n){var t=[n.a,n.b],e=[n.c,n.d],r=Fu(t),u=ju(t,e),i=Fu(Hu(e,t,-u))||0;t[0]*e[1]<e[0]*t[1]&&(t[0]*=-1,t[1]*=-1,r*=-1,u*=-1),this.rotate=(r?Math.atan2(t[1],t[0]):Math.atan2(-e[0],e[1]))*Ha,this.translate=[n.e,n.f],this.scale=[r,i],this.skew=i?Math.atan2(u,i)*Ha:0}function ju(n,t){return n[0]*t[0]+n[1]*t[1]}function Fu(n){var t=Math.sqrt(ju(n,n));return t&&(n[0]/=t,n[1]/=t),t}function Hu(n,t,e){return n[0]+=e*t[0],n[1]+=e*t[1],n}function Ou(n,t){var e,r=[],u=[],i=ta.transform(n),o=ta.transform(t),a=i.translate,c=o.translate,l=i.rotate,s=o.rotate,f=i.skew,h=o.skew,g=i.scale,p=o.scale;return a[0]!=c[0]||a[1]!=c[1]?(r.push("translate(",null,",",null,")"),u.push({i:1,x:du(a[0],c[0])},{i:3,x:du(a[1],c[1])})):c[0]||c[1]?r.push("translate("+c+")"):r.push(""),l!=s?(l-s>180?s+=360:s-l>180&&(l+=360),u.push({i:r.push(r.pop()+"rotate(",null,")")-2,x:du(l,s)})):s&&r.push(r.pop()+"rotate("+s+")"),f!=h?u.push({i:r.push(r.pop()+"skewX(",null,")")-2,x:du(f,h)}):h&&r.push(r.pop()+"skewX("+h+")"),g[0]!=p[0]||g[1]!=p[1]?(e=r.push(r.pop()+"scale(",null,",",null,")"),u.push({i:e-4,x:du(g[0],p[0])},{i:e-2,x:du(g[1],p[1])})):(1!=p[0]||1!=p[1])&&r.push(r.pop()+"scale("+p+")"),e=u.length,function(n){for(var t,i=-1;++i<e;)r[(t=u[i]).i]=t.x(n);return r.join("")}}function Yu(n,t){return t=(t-=n=+n)||1/t,function(e){return(e-n)/t}}function Iu(n,t){return t=(t-=n=+n)||1/t,function(e){return Math.max(0,Math.min(1,(e-n)/t))}}function Zu(n){for(var t=n.source,e=n.target,r=Xu(t,e),u=[t];t!==r;)t=t.parent,u.push(t);for(var i=u.length;e!==r;)u.splice(i,0,e),e=e.parent;return u}function Vu(n){for(var t=[],e=n.parent;null!=e;)t.push(n),n=e,e=e.parent;return t.push(n),t}function Xu(n,t){if(n===t)return n;for(var e=Vu(n),r=Vu(t),u=e.pop(),i=r.pop(),o=null;u===i;)o=u,u=e.pop(),i=r.pop();return o}function $u(n){n.fixed|=2}function Bu(n){n.fixed&=-7}function Wu(n){n.fixed|=4,n.px=n.x,n.py=n.y}function Ju(n){n.fixed&=-5}function Gu(n,t,e){var r=0,u=0;if(n.charge=0,!n.leaf)for(var i,o=n.nodes,a=o.length,c=-1;++c<a;)i=o[c],null!=i&&(Gu(i,t,e),n.charge+=i.charge,r+=i.charge*i.cx,u+=i.charge*i.cy);if(n.point){n.leaf||(n.point.x+=Math.random()-.5,n.point.y+=Math.random()-.5);var l=t*e[n.point.index];n.charge+=n.pointCharge=l,r+=l*n.point.x,u+=l*n.point.y}n.cx=r/n.charge,n.cy=u/n.charge}function Ku(n,t){return ta.rebind(n,t,"sort","children","value"),n.nodes=n,n.links=ui,n}function Qu(n,t){for(var e=[n];null!=(n=e.pop());)if(t(n),(u=n.children)&&(r=u.length))for(var r,u;--r>=0;)e.push(u[r])}function ni(n,t){for(var e=[n],r=[];null!=(n=e.pop());)if(r.push(n),(i=n.children)&&(u=i.length))for(var u,i,o=-1;++o<u;)e.push(i[o]);for(;null!=(n=r.pop());)t(n)}function ti(n){return n.children}function ei(n){return n.value}function ri(n,t){return t.value-n.value}function ui(n){return ta.merge(n.map(function(n){return(n.children||[]).map(function(t){return{source:n,target:t}})}))}function ii(n){return n.x}function oi(n){return n.y}function ai(n,t,e){n.y0=t,n.y=e}function ci(n){return ta.range(n.length)}function li(n){for(var t=-1,e=n[0].length,r=[];++t<e;)r[t]=0;return r}function si(n){for(var t,e=1,r=0,u=n[0][1],i=n.length;i>e;++e)(t=n[e][1])>u&&(r=e,u=t);return r}function fi(n){return n.reduce(hi,0)}function hi(n,t){return n+t[1]}function gi(n,t){return pi(n,Math.ceil(Math.log(t.length)/Math.LN2+1))}function pi(n,t){for(var e=-1,r=+n[0],u=(n[1]-r)/t,i=[];++e<=t;)i[e]=u*e+r;return i}function vi(n){return[ta.min(n),ta.max(n)]}function di(n,t){return n.value-t.value}function mi(n,t){var e=n._pack_next;n._pack_next=t,t._pack_prev=n,t._pack_next=e,e._pack_prev=t}function yi(n,t){n._pack_next=t,t._pack_prev=n}function Mi(n,t){var e=t.x-n.x,r=t.y-n.y,u=n.r+t.r;return.999*u*u>e*e+r*r}function xi(n){function t(n){s=Math.min(n.x-n.r,s),f=Math.max(n.x+n.r,f),h=Math.min(n.y-n.r,h),g=Math.max(n.y+n.r,g)}if((e=n.children)&&(l=e.length)){var e,r,u,i,o,a,c,l,s=1/0,f=-1/0,h=1/0,g=-1/0;if(e.forEach(bi),r=e[0],r.x=-r.r,r.y=0,t(r),l>1&&(u=e[1],u.x=u.r,u.y=0,t(u),l>2))for(i=e[2],Si(r,u,i),t(i),mi(r,i),r._pack_prev=i,mi(i,u),u=r._pack_next,o=3;l>o;o++){Si(r,u,i=e[o]);var p=0,v=1,d=1;for(a=u._pack_next;a!==u;a=a._pack_next,v++)if(Mi(a,i)){p=1;break}if(1==p)for(c=r._pack_prev;c!==a._pack_prev&&!Mi(c,i);c=c._pack_prev,d++);p?(d>v||v==d&&u.r<r.r?yi(r,u=a):yi(r=c,u),o--):(mi(r,i),u=i,t(i))}var m=(s+f)/2,y=(h+g)/2,M=0;for(o=0;l>o;o++)i=e[o],i.x-=m,i.y-=y,M=Math.max(M,i.r+Math.sqrt(i.x*i.x+i.y*i.y));n.r=M,e.forEach(_i)}}function bi(n){n._pack_next=n._pack_prev=n}function _i(n){delete n._pack_next,delete n._pack_prev}function wi(n,t,e,r){var u=n.children;if(n.x=t+=r*n.x,n.y=e+=r*n.y,n.r*=r,u)for(var i=-1,o=u.length;++i<o;)wi(u[i],t,e,r)}function Si(n,t,e){var r=n.r+e.r,u=t.x-n.x,i=t.y-n.y;if(r&&(u||i)){var o=t.r+e.r,a=u*u+i*i;o*=o,r*=r;var c=.5+(r-o)/(2*a),l=Math.sqrt(Math.max(0,2*o*(r+a)-(r-=a)*r-o*o))/(2*a);e.x=n.x+c*u+l*i,e.y=n.y+c*i-l*u}else e.x=n.x+r,e.y=n.y}function ki(n,t){return n.parent==t.parent?1:2}function Ei(n){var t=n.children;return t.length?t[0]:n.t}function Ai(n){var t,e=n.children;return(t=e.length)?e[t-1]:n.t}function Ni(n,t,e){var r=e/(t.i-n.i);t.c-=r,t.s+=e,n.c+=r,t.z+=e,t.m+=e}function Ci(n){for(var t,e=0,r=0,u=n.children,i=u.length;--i>=0;)t=u[i],t.z+=e,t.m+=e,e+=t.s+(r+=t.c)}function zi(n,t,e){return n.a.parent===t.parent?n.a:e}function qi(n){return 1+ta.max(n,function(n){return n.y})}function Li(n){return n.reduce(function(n,t){return n+t.x},0)/n.length}function Ti(n){var t=n.children;return t&&t.length?Ti(t[0]):n}function Ri(n){var t,e=n.children;return e&&(t=e.length)?Ri(e[t-1]):n}function Di(n){return{x:n.x,y:n.y,dx:n.dx,dy:n.dy}}function Pi(n,t){var e=n.x+t[3],r=n.y+t[0],u=n.dx-t[1]-t[3],i=n.dy-t[0]-t[2];return 0>u&&(e+=u/2,u=0),0>i&&(r+=i/2,i=0),{x:e,y:r,dx:u,dy:i}}function Ui(n){var t=n[0],e=n[n.length-1];return e>t?[t,e]:[e,t]}function ji(n){return n.rangeExtent?n.rangeExtent():Ui(n.range())}function Fi(n,t,e,r){var u=e(n[0],n[1]),i=r(t[0],t[1]);return function(n){return i(u(n))}}function Hi(n,t){var e,r=0,u=n.length-1,i=n[r],o=n[u];return i>o&&(e=r,r=u,u=e,e=i,i=o,o=e),n[r]=t.floor(i),n[u]=t.ceil(o),n}function Oi(n){return n?{floor:function(t){return Math.floor(t/n)*n},ceil:function(t){return Math.ceil(t/n)*n}}:bl}function Yi(n,t,e,r){var u=[],i=[],o=0,a=Math.min(n.length,t.length)-1;for(n[a]<n[0]&&(n=n.slice().reverse(),t=t.slice().reverse());++o<=a;)u.push(e(n[o-1],n[o])),i.push(r(t[o-1],t[o]));return function(t){var e=ta.bisect(n,t,1,a)-1;return i[e](u[e](t))}}function Ii(n,t,e,r){function u(){var u=Math.min(n.length,t.length)>2?Yi:Fi,c=r?Iu:Yu;return o=u(n,t,c,e),a=u(t,n,c,yu),i}function i(n){return o(n)}var o,a;return i.invert=function(n){return a(n)},i.domain=function(t){return arguments.length?(n=t.map(Number),u()):n},i.range=function(n){return arguments.length?(t=n,u()):t},i.rangeRound=function(n){return i.range(n).interpolate(Pu)},i.clamp=function(n){return arguments.length?(r=n,u()):r},i.interpolate=function(n){return arguments.length?(e=n,u()):e},i.ticks=function(t){return $i(n,t)},i.tickFormat=function(t,e){return Bi(n,t,e)},i.nice=function(t){return Vi(n,t),u()},i.copy=function(){return Ii(n,t,e,r)},u()}function Zi(n,t){return ta.rebind(n,t,"range","rangeRound","interpolate","clamp")}function Vi(n,t){return Hi(n,Oi(Xi(n,t)[2]))}function Xi(n,t){null==t&&(t=10);var e=Ui(n),r=e[1]-e[0],u=Math.pow(10,Math.floor(Math.log(r/t)/Math.LN10)),i=t/r*u;return.15>=i?u*=10:.35>=i?u*=5:.75>=i&&(u*=2),e[0]=Math.ceil(e[0]/u)*u,e[1]=Math.floor(e[1]/u)*u+.5*u,e[2]=u,e}function $i(n,t){return ta.range.apply(ta,Xi(n,t))}function Bi(n,t,e){var r=Xi(n,t);if(e){var u=lc.exec(e);if(u.shift(),"s"===u[8]){var i=ta.formatPrefix(Math.max(va(r[0]),va(r[1])));return u[7]||(u[7]="."+Wi(i.scale(r[2]))),u[8]="f",e=ta.format(u.join("")),function(n){return e(i.scale(n))+i.symbol}}u[7]||(u[7]="."+Ji(u[8],r)),e=u.join("")}else e=",."+Wi(r[2])+"f";return ta.format(e)}function Wi(n){return-Math.floor(Math.log(n)/Math.LN10+.01)}function Ji(n,t){var e=Wi(t[2]);return n in _l?Math.abs(e-Wi(Math.max(va(t[0]),va(t[1]))))+ +("e"!==n):e-2*("%"===n)}function Gi(n,t,e,r){function u(n){return(e?Math.log(0>n?0:n):-Math.log(n>0?0:-n))/Math.log(t)}function i(n){return e?Math.pow(t,n):-Math.pow(t,-n)}function o(t){return n(u(t))}return o.invert=function(t){return i(n.invert(t))},o.domain=function(t){return arguments.length?(e=t[0]>=0,n.domain((r=t.map(Number)).map(u)),o):r},o.base=function(e){return arguments.length?(t=+e,n.domain(r.map(u)),o):t},o.nice=function(){var t=Hi(r.map(u),e?Math:Sl);return n.domain(t),r=t.map(i),o},o.ticks=function(){var n=Ui(r),o=[],a=n[0],c=n[1],l=Math.floor(u(a)),s=Math.ceil(u(c)),f=t%1?2:t;if(isFinite(s-l)){if(e){for(;s>l;l++)for(var h=1;f>h;h++)o.push(i(l)*h);o.push(i(l))}else for(o.push(i(l));l++<s;)for(var h=f-1;h>0;h--)o.push(i(l)*h);for(l=0;o[l]<a;l++);for(s=o.length;o[s-1]>c;s--);o=o.slice(l,s)}return o},o.tickFormat=function(n,t){if(!arguments.length)return wl;arguments.length<2?t=wl:"function"!=typeof t&&(t=ta.format(t));var r,a=Math.max(.1,n/o.ticks().length),c=e?(r=1e-12,Math.ceil):(r=-1e-12,Math.floor);return function(n){return n/i(c(u(n)+r))<=a?t(n):""}},o.copy=function(){return Gi(n.copy(),t,e,r)},Zi(o,n)}function Ki(n,t,e){function r(t){return n(u(t))}var u=Qi(t),i=Qi(1/t);return r.invert=function(t){return i(n.invert(t))},r.domain=function(t){return arguments.length?(n.domain((e=t.map(Number)).map(u)),r):e},r.ticks=function(n){return $i(e,n)},r.tickFormat=function(n,t){return Bi(e,n,t)},r.nice=function(n){return r.domain(Vi(e,n))},r.exponent=function(o){return arguments.length?(u=Qi(t=o),i=Qi(1/t),n.domain(e.map(u)),r):t},r.copy=function(){return Ki(n.copy(),t,e)},Zi(r,n)}function Qi(n){return function(t){return 0>t?-Math.pow(-t,n):Math.pow(t,n)}}function no(n,t){function e(e){return i[((u.get(e)||("range"===t.t?u.set(e,n.push(e)):0/0))-1)%i.length]}function r(t,e){return ta.range(n.length).map(function(n){return t+e*n})}var u,i,o;return e.domain=function(r){if(!arguments.length)return n;n=[],u=new a;for(var i,o=-1,c=r.length;++o<c;)u.has(i=r[o])||u.set(i,n.push(i));return e[t.t].apply(e,t.a)},e.range=function(n){return arguments.length?(i=n,o=0,t={t:"range",a:arguments},e):i},e.rangePoints=function(u,a){arguments.length<2&&(a=0);var c=u[0],l=u[1],s=n.length<2?(c=(c+l)/2,0):(l-c)/(n.length-1+a);return i=r(c+s*a/2,s),o=0,t={t:"rangePoints",a:arguments},e},e.rangeRoundPoints=function(u,a){arguments.length<2&&(a=0);var c=u[0],l=u[1],s=n.length<2?(c=l=Math.round((c+l)/2),0):0|(l-c)/(n.length-1+a);return i=r(c+Math.round(s*a/2+(l-c-(n.length-1+a)*s)/2),s),o=0,t={t:"rangeRoundPoints",a:arguments},e},e.rangeBands=function(u,a,c){arguments.length<2&&(a=0),arguments.length<3&&(c=a);var l=u[1]<u[0],s=u[l-0],f=u[1-l],h=(f-s)/(n.length-a+2*c);return i=r(s+h*c,h),l&&i.reverse(),o=h*(1-a),t={t:"rangeBands",a:arguments},e},e.rangeRoundBands=function(u,a,c){arguments.length<2&&(a=0),arguments.length<3&&(c=a);var l=u[1]<u[0],s=u[l-0],f=u[1-l],h=Math.floor((f-s)/(n.length-a+2*c));return i=r(s+Math.round((f-s-(n.length-a)*h)/2),h),l&&i.reverse(),o=Math.round(h*(1-a)),t={t:"rangeRoundBands",a:arguments},e},e.rangeBand=function(){return o},e.rangeExtent=function(){return Ui(t.a[0])},e.copy=function(){return no(n,t)},e.domain(n)}function to(r,u){function i(){var n=0,t=u.length;for(a=[];++n<t;)a[n-1]=ta.quantile(r,n/t);return o}function o(n){return isNaN(n=+n)?void 0:u[ta.bisect(a,n)]}var a;return o.domain=function(u){return arguments.length?(r=u.map(t).filter(e).sort(n),i()):r},o.range=function(n){return arguments.length?(u=n,i()):u},o.quantiles=function(){return a},o.invertExtent=function(n){return n=u.indexOf(n),0>n?[0/0,0/0]:[n>0?a[n-1]:r[0],n<a.length?a[n]:r[r.length-1]]},o.copy=function(){return to(r,u)},i()}function eo(n,t,e){function r(t){return e[Math.max(0,Math.min(o,Math.floor(i*(t-n))))]}function u(){return i=e.length/(t-n),o=e.length-1,r}var i,o;return r.domain=function(e){return arguments.length?(n=+e[0],t=+e[e.length-1],u()):[n,t]},r.range=function(n){return arguments.length?(e=n,u()):e},r.invertExtent=function(t){return t=e.indexOf(t),t=0>t?0/0:t/i+n,[t,t+1/i]},r.copy=function(){return eo(n,t,e)},u()}function ro(n,t){function e(e){return e>=e?t[ta.bisect(n,e)]:void 0}return e.domain=function(t){return arguments.length?(n=t,e):n},e.range=function(n){return arguments.length?(t=n,e):t},e.invertExtent=function(e){return e=t.indexOf(e),[n[e-1],n[e]]},e.copy=function(){return ro(n,t)},e}function uo(n){function t(n){return+n}return t.invert=t,t.domain=t.range=function(e){return arguments.length?(n=e.map(t),t):n},t.ticks=function(t){return $i(n,t)},t.tickFormat=function(t,e){return Bi(n,t,e)},t.copy=function(){return uo(n)},t}function io(){return 0}function oo(n){return n.innerRadius}function ao(n){return n.outerRadius}function co(n){return n.startAngle}function lo(n){return n.endAngle}function so(n){return n&&n.padAngle}function fo(n,t,e,r){return(n-e)*t-(t-r)*n>0?0:1}function ho(n,t,e,r,u){var i=n[0]-t[0],o=n[1]-t[1],a=(u?r:-r)/Math.sqrt(i*i+o*o),c=a*o,l=-a*i,s=n[0]+c,f=n[1]+l,h=t[0]+c,g=t[1]+l,p=(s+h)/2,v=(f+g)/2,d=h-s,m=g-f,y=d*d+m*m,M=e-r,x=s*g-h*f,b=(0>m?-1:1)*Math.sqrt(M*M*y-x*x),_=(x*m-d*b)/y,w=(-x*d-m*b)/y,S=(x*m+d*b)/y,k=(-x*d+m*b)/y,E=_-p,A=w-v,N=S-p,C=k-v;return E*E+A*A>N*N+C*C&&(_=S,w=k),[[_-c,w-l],[_*e/M,w*e/M]]}function go(n){function t(t){function o(){l.push("M",i(n(s),a))}for(var c,l=[],s=[],f=-1,h=t.length,g=Et(e),p=Et(r);++f<h;)u.call(this,c=t[f],f)?s.push([+g.call(this,c,f),+p.call(this,c,f)]):s.length&&(o(),s=[]);return s.length&&o(),l.length?l.join(""):null}var e=Nr,r=Cr,u=Ce,i=po,o=i.key,a=.7;return t.x=function(n){return arguments.length?(e=n,t):e},t.y=function(n){return arguments.length?(r=n,t):r},t.defined=function(n){return arguments.length?(u=n,t):u},t.interpolate=function(n){return arguments.length?(o="function"==typeof n?i=n:(i=zl.get(n)||po).key,t):o},t.tension=function(n){return arguments.length?(a=n,t):a},t}function po(n){return n.join("L")}function vo(n){return po(n)+"Z"}function mo(n){for(var t=0,e=n.length,r=n[0],u=[r[0],",",r[1]];++t<e;)u.push("H",(r[0]+(r=n[t])[0])/2,"V",r[1]);return e>1&&u.push("H",r[0]),u.join("")}function yo(n){for(var t=0,e=n.length,r=n[0],u=[r[0],",",r[1]];++t<e;)u.push("V",(r=n[t])[1],"H",r[0]);return u.join("")}function Mo(n){for(var t=0,e=n.length,r=n[0],u=[r[0],",",r[1]];++t<e;)u.push("H",(r=n[t])[0],"V",r[1]);return u.join("")}function xo(n,t){return n.length<4?po(n):n[1]+wo(n.slice(1,-1),So(n,t))}function bo(n,t){return n.length<3?po(n):n[0]+wo((n.push(n[0]),n),So([n[n.length-2]].concat(n,[n[1]]),t))}function _o(n,t){return n.length<3?po(n):n[0]+wo(n,So(n,t))}function wo(n,t){if(t.length<1||n.length!=t.length&&n.length!=t.length+2)return po(n);var e=n.length!=t.length,r="",u=n[0],i=n[1],o=t[0],a=o,c=1;if(e&&(r+="Q"+(i[0]-2*o[0]/3)+","+(i[1]-2*o[1]/3)+","+i[0]+","+i[1],u=n[1],c=2),t.length>1){a=t[1],i=n[c],c++,r+="C"+(u[0]+o[0])+","+(u[1]+o[1])+","+(i[0]-a[0])+","+(i[1]-a[1])+","+i[0]+","+i[1];for(var l=2;l<t.length;l++,c++)i=n[c],a=t[l],r+="S"+(i[0]-a[0])+","+(i[1]-a[1])+","+i[0]+","+i[1]}if(e){var s=n[c];r+="Q"+(i[0]+2*a[0]/3)+","+(i[1]+2*a[1]/3)+","+s[0]+","+s[1]}return r}function So(n,t){for(var e,r=[],u=(1-t)/2,i=n[0],o=n[1],a=1,c=n.length;++a<c;)e=i,i=o,o=n[a],r.push([u*(o[0]-e[0]),u*(o[1]-e[1])]);return r}function ko(n){if(n.length<3)return po(n);var t=1,e=n.length,r=n[0],u=r[0],i=r[1],o=[u,u,u,(r=n[1])[0]],a=[i,i,i,r[1]],c=[u,",",i,"L",Co(Tl,o),",",Co(Tl,a)];for(n.push(n[e-1]);++t<=e;)r=n[t],o.shift(),o.push(r[0]),a.shift(),a.push(r[1]),zo(c,o,a);return n.pop(),c.push("L",r),c.join("")}function Eo(n){if(n.length<4)return po(n);for(var t,e=[],r=-1,u=n.length,i=[0],o=[0];++r<3;)t=n[r],i.push(t[0]),o.push(t[1]);for(e.push(Co(Tl,i)+","+Co(Tl,o)),--r;++r<u;)t=n[r],i.shift(),i.push(t[0]),o.shift(),o.push(t[1]),zo(e,i,o);return e.join("")}function Ao(n){for(var t,e,r=-1,u=n.length,i=u+4,o=[],a=[];++r<4;)e=n[r%u],o.push(e[0]),a.push(e[1]);for(t=[Co(Tl,o),",",Co(Tl,a)],--r;++r<i;)e=n[r%u],o.shift(),o.push(e[0]),a.shift(),a.push(e[1]),zo(t,o,a);return t.join("")}function No(n,t){var e=n.length-1;if(e)for(var r,u,i=n[0][0],o=n[0][1],a=n[e][0]-i,c=n[e][1]-o,l=-1;++l<=e;)r=n[l],u=l/e,r[0]=t*r[0]+(1-t)*(i+u*a),r[1]=t*r[1]+(1-t)*(o+u*c);return ko(n)}function Co(n,t){return n[0]*t[0]+n[1]*t[1]+n[2]*t[2]+n[3]*t[3]}function zo(n,t,e){n.push("C",Co(ql,t),",",Co(ql,e),",",Co(Ll,t),",",Co(Ll,e),",",Co(Tl,t),",",Co(Tl,e))}function qo(n,t){return(t[1]-n[1])/(t[0]-n[0])}function Lo(n){for(var t=0,e=n.length-1,r=[],u=n[0],i=n[1],o=r[0]=qo(u,i);++t<e;)r[t]=(o+(o=qo(u=i,i=n[t+1])))/2;return r[t]=o,r}function To(n){for(var t,e,r,u,i=[],o=Lo(n),a=-1,c=n.length-1;++a<c;)t=qo(n[a],n[a+1]),va(t)<Ta?o[a]=o[a+1]=0:(e=o[a]/t,r=o[a+1]/t,u=e*e+r*r,u>9&&(u=3*t/Math.sqrt(u),o[a]=u*e,o[a+1]=u*r));for(a=-1;++a<=c;)u=(n[Math.min(c,a+1)][0]-n[Math.max(0,a-1)][0])/(6*(1+o[a]*o[a])),i.push([u||0,o[a]*u||0]);return i}function Ro(n){return n.length<3?po(n):n[0]+wo(n,To(n))}function Do(n){for(var t,e,r,u=-1,i=n.length;++u<i;)t=n[u],e=t[0],r=t[1]-ja,t[0]=e*Math.cos(r),t[1]=e*Math.sin(r);return n}function Po(n){function t(t){function c(){v.push("M",a(n(m),f),s,l(n(d.reverse()),f),"Z")}for(var h,g,p,v=[],d=[],m=[],y=-1,M=t.length,x=Et(e),b=Et(u),_=e===r?function(){return g}:Et(r),w=u===i?function(){return p}:Et(i);++y<M;)o.call(this,h=t[y],y)?(d.push([g=+x.call(this,h,y),p=+b.call(this,h,y)]),m.push([+_.call(this,h,y),+w.call(this,h,y)])):d.length&&(c(),d=[],m=[]);return d.length&&c(),v.length?v.join(""):null}var e=Nr,r=Nr,u=0,i=Cr,o=Ce,a=po,c=a.key,l=a,s="L",f=.7;return t.x=function(n){return arguments.length?(e=r=n,t):r},t.x0=function(n){return arguments.length?(e=n,t):e},t.x1=function(n){return arguments.length?(r=n,t):r},t.y=function(n){return arguments.length?(u=i=n,t):i},t.y0=function(n){return arguments.length?(u=n,t):u},t.y1=function(n){return arguments.length?(i=n,t):i},t.defined=function(n){return arguments.length?(o=n,t):o},t.interpolate=function(n){return arguments.length?(c="function"==typeof n?a=n:(a=zl.get(n)||po).key,l=a.reverse||a,s=a.closed?"M":"L",t):c
2307 },t.tension=function(n){return arguments.length?(f=n,t):f},t}function Uo(n){return n.radius}function jo(n){return[n.x,n.y]}function Fo(n){return function(){var t=n.apply(this,arguments),e=t[0],r=t[1]-ja;return[e*Math.cos(r),e*Math.sin(r)]}}function Ho(){return 64}function Oo(){return"circle"}function Yo(n){var t=Math.sqrt(n/Da);return"M0,"+t+"A"+t+","+t+" 0 1,1 0,"+-t+"A"+t+","+t+" 0 1,1 0,"+t+"Z"}function Io(n,t,e){return xa(n,Fl),n.namespace=t,n.id=e,n}function Zo(n,t,e,r){var u=n.id,i=n.namespace;return H(n,"function"==typeof e?function(n,o,a){n[i][u].tween.set(t,r(e.call(n,n.__data__,o,a)))}:(e=r(e),function(n){n[i][u].tween.set(t,e)}))}function Vo(n){return null==n&&(n=""),function(){this.textContent=n}}function Xo(n){return null==n?"__transition__":"__transition_"+n+"__"}function $o(n,t,e,r,u){var i=n[e]||(n[e]={active:0,count:0}),o=i[r];if(!o){var c=u.time;o=i[r]={tween:new a,time:c,delay:u.delay,duration:u.duration,ease:u.ease},u=null,++i.count,ta.timer(function(u){function a(e){return i.active>r?s(!1):(i.active=r,o.event&&o.event.start.call(n,g,t),o.tween.forEach(function(e,r){(r=r.call(n,g,t))&&d.push(r)}),h=o.ease,f=o.duration,ta.timer(function(){return v.c=l(e||1)?Ce:l,1},0,c),void 0)}function l(t){if(i.active!==r)return s(!1);for(var e=t/f,u=h(e),o=d.length;o>0;)d[--o].call(n,u);return e>=1?s(!0):void 0}function s(u){return o.event&&o.event[u?"end":"interrupt"].call(n,g,t),--i.count?delete i[r]:delete n[e],1}var f,h,g=n.__data__,p=o.delay,v=oc,d=[];return v.t=p+c,u>=p?a(u-p):(v.c=a,void 0)},0,c)}}function Bo(n,t,e){n.attr("transform",function(n){var r=t(n);return"translate("+(isFinite(r)?r:e(n))+",0)"})}function Wo(n,t,e){n.attr("transform",function(n){var r=t(n);return"translate(0,"+(isFinite(r)?r:e(n))+")"})}function Jo(n){return n.toISOString()}function Go(n,t,e){function r(t){return n(t)}function u(n,e){var r=n[1]-n[0],u=r/e,i=ta.bisect(Bl,u);return i==Bl.length?[t.year,Xi(n.map(function(n){return n/31536e6}),e)[2]]:i?t[u/Bl[i-1]<Bl[i]/u?i-1:i]:[Gl,Xi(n,e)[2]]}return r.invert=function(t){return Ko(n.invert(t))},r.domain=function(t){return arguments.length?(n.domain(t),r):n.domain().map(Ko)},r.nice=function(n,t){function e(e){return!isNaN(e)&&!n.range(e,Ko(+e+1),t).length}var i=r.domain(),o=Ui(i),a=null==n?u(o,10):"number"==typeof n&&u(o,n);return a&&(n=a[0],t=a[1]),r.domain(Hi(i,t>1?{floor:function(t){for(;e(t=n.floor(t));)t=Ko(t-1);return t},ceil:function(t){for(;e(t=n.ceil(t));)t=Ko(+t+1);return t}}:n))},r.ticks=function(n,t){var e=Ui(r.domain()),i=null==n?u(e,10):"number"==typeof n?u(e,n):!n.range&&[{range:n},t];return i&&(n=i[0],t=i[1]),n.range(e[0],Ko(+e[1]+1),1>t?1:t)},r.tickFormat=function(){return e},r.copy=function(){return Go(n.copy(),t,e)},Zi(r,n)}function Ko(n){return new Date(n)}function Qo(n){return JSON.parse(n.responseText)}function na(n){var t=ua.createRange();return t.selectNode(ua.body),t.createContextualFragment(n.responseText)}var ta={version:"3.5.0"};Date.now||(Date.now=function(){return+new Date});var ea=[].slice,ra=function(n){return ea.call(n)},ua=document,ia=ua.documentElement,oa=window;try{ra(ia.childNodes)[0].nodeType}catch(aa){ra=function(n){for(var t=n.length,e=new Array(t);t--;)e[t]=n[t];return e}}try{ua.createElement("div").style.setProperty("opacity",0,"")}catch(ca){var la=oa.Element.prototype,sa=la.setAttribute,fa=la.setAttributeNS,ha=oa.CSSStyleDeclaration.prototype,ga=ha.setProperty;la.setAttribute=function(n,t){sa.call(this,n,t+"")},la.setAttributeNS=function(n,t,e){fa.call(this,n,t,e+"")},ha.setProperty=function(n,t,e){ga.call(this,n,t+"",e)}}ta.ascending=n,ta.descending=function(n,t){return n>t?-1:t>n?1:t>=n?0:0/0},ta.min=function(n,t){var e,r,u=-1,i=n.length;if(1===arguments.length){for(;++u<i;)if(null!=(r=n[u])&&r>=r){e=r;break}for(;++u<i;)null!=(r=n[u])&&e>r&&(e=r)}else{for(;++u<i;)if(null!=(r=t.call(n,n[u],u))&&r>=r){e=r;break}for(;++u<i;)null!=(r=t.call(n,n[u],u))&&e>r&&(e=r)}return e},ta.max=function(n,t){var e,r,u=-1,i=n.length;if(1===arguments.length){for(;++u<i;)if(null!=(r=n[u])&&r>=r){e=r;break}for(;++u<i;)null!=(r=n[u])&&r>e&&(e=r)}else{for(;++u<i;)if(null!=(r=t.call(n,n[u],u))&&r>=r){e=r;break}for(;++u<i;)null!=(r=t.call(n,n[u],u))&&r>e&&(e=r)}return e},ta.extent=function(n,t){var e,r,u,i=-1,o=n.length;if(1===arguments.length){for(;++i<o;)if(null!=(r=n[i])&&r>=r){e=u=r;break}for(;++i<o;)null!=(r=n[i])&&(e>r&&(e=r),r>u&&(u=r))}else{for(;++i<o;)if(null!=(r=t.call(n,n[i],i))&&r>=r){e=u=r;break}for(;++i<o;)null!=(r=t.call(n,n[i],i))&&(e>r&&(e=r),r>u&&(u=r))}return[e,u]},ta.sum=function(n,t){var r,u=0,i=n.length,o=-1;if(1===arguments.length)for(;++o<i;)e(r=+n[o])&&(u+=r);else for(;++o<i;)e(r=+t.call(n,n[o],o))&&(u+=r);return u},ta.mean=function(n,r){var u,i=0,o=n.length,a=-1,c=o;if(1===arguments.length)for(;++a<o;)e(u=t(n[a]))?i+=u:--c;else for(;++a<o;)e(u=t(r.call(n,n[a],a)))?i+=u:--c;return c?i/c:void 0},ta.quantile=function(n,t){var e=(n.length-1)*t+1,r=Math.floor(e),u=+n[r-1],i=e-r;return i?u+i*(n[r]-u):u},ta.median=function(r,u){var i,o=[],a=r.length,c=-1;if(1===arguments.length)for(;++c<a;)e(i=t(r[c]))&&o.push(i);else for(;++c<a;)e(i=t(u.call(r,r[c],c)))&&o.push(i);return o.length?ta.quantile(o.sort(n),.5):void 0};var pa=r(n);ta.bisectLeft=pa.left,ta.bisect=ta.bisectRight=pa.right,ta.bisector=function(t){return r(1===t.length?function(e,r){return n(t(e),r)}:t)},ta.shuffle=function(n,t,e){(i=arguments.length)<3&&(e=n.length,2>i&&(t=0));for(var r,u,i=e-t;i;)u=0|Math.random()*i--,r=n[i+t],n[i+t]=n[u+t],n[u+t]=r;return n},ta.permute=function(n,t){for(var e=t.length,r=new Array(e);e--;)r[e]=n[t[e]];return r},ta.pairs=function(n){for(var t,e=0,r=n.length-1,u=n[0],i=new Array(0>r?0:r);r>e;)i[e]=[t=u,u=n[++e]];return i},ta.zip=function(){if(!(r=arguments.length))return[];for(var n=-1,t=ta.min(arguments,u),e=new Array(t);++n<t;)for(var r,i=-1,o=e[n]=new Array(r);++i<r;)o[i]=arguments[i][n];return e},ta.transpose=function(n){return ta.zip.apply(ta,n)},ta.keys=function(n){var t=[];for(var e in n)t.push(e);return t},ta.values=function(n){var t=[];for(var e in n)t.push(n[e]);return t},ta.entries=function(n){var t=[];for(var e in n)t.push({key:e,value:n[e]});return t},ta.merge=function(n){for(var t,e,r,u=n.length,i=-1,o=0;++i<u;)o+=n[i].length;for(e=new Array(o);--u>=0;)for(r=n[u],t=r.length;--t>=0;)e[--o]=r[t];return e};var va=Math.abs;ta.range=function(n,t,e){if(arguments.length<3&&(e=1,arguments.length<2&&(t=n,n=0)),1/0===(t-n)/e)throw new Error("infinite range");var r,u=[],o=i(va(e)),a=-1;if(n*=o,t*=o,e*=o,0>e)for(;(r=n+e*++a)>t;)u.push(r/o);else for(;(r=n+e*++a)<t;)u.push(r/o);return u},ta.map=function(n,t){var e=new a;if(n instanceof a)n.forEach(function(n,t){e.set(n,t)});else if(Array.isArray(n)){var r,u=-1,i=n.length;if(1===arguments.length)for(;++u<i;)e.set(u,n[u]);else for(;++u<i;)e.set(t.call(n,r=n[u],u),r)}else for(var o in n)e.set(o,n[o]);return e};var da="__proto__",ma="\x00";o(a,{has:s,get:function(n){return this._[c(n)]},set:function(n,t){return this._[c(n)]=t},remove:f,keys:h,values:function(){var n=[];for(var t in this._)n.push(this._[t]);return n},entries:function(){var n=[];for(var t in this._)n.push({key:l(t),value:this._[t]});return n},size:g,empty:p,forEach:function(n){for(var t in this._)n.call(this,l(t),this._[t])}}),ta.nest=function(){function n(t,o,c){if(c>=i.length)return r?r.call(u,o):e?o.sort(e):o;for(var l,s,f,h,g=-1,p=o.length,v=i[c++],d=new a;++g<p;)(h=d.get(l=v(s=o[g])))?h.push(s):d.set(l,[s]);return t?(s=t(),f=function(e,r){s.set(e,n(t,r,c))}):(s={},f=function(e,r){s[e]=n(t,r,c)}),d.forEach(f),s}function t(n,e){if(e>=i.length)return n;var r=[],u=o[e++];return n.forEach(function(n,u){r.push({key:n,values:t(u,e)})}),u?r.sort(function(n,t){return u(n.key,t.key)}):r}var e,r,u={},i=[],o=[];return u.map=function(t,e){return n(e,t,0)},u.entries=function(e){return t(n(ta.map,e,0),0)},u.key=function(n){return i.push(n),u},u.sortKeys=function(n){return o[i.length-1]=n,u},u.sortValues=function(n){return e=n,u},u.rollup=function(n){return r=n,u},u},ta.set=function(n){var t=new v;if(n)for(var e=0,r=n.length;r>e;++e)t.add(n[e]);return t},o(v,{has:s,add:function(n){return this._[c(n+="")]=!0,n},remove:f,values:h,size:g,empty:p,forEach:function(n){for(var t in this._)n.call(this,l(t))}}),ta.behavior={},ta.rebind=function(n,t){for(var e,r=1,u=arguments.length;++r<u;)n[e=arguments[r]]=d(n,t,t[e]);return n};var ya=["webkit","ms","moz","Moz","o","O"];ta.dispatch=function(){for(var n=new M,t=-1,e=arguments.length;++t<e;)n[arguments[t]]=x(n);return n},M.prototype.on=function(n,t){var e=n.indexOf("."),r="";if(e>=0&&(r=n.slice(e+1),n=n.slice(0,e)),n)return arguments.length<2?this[n].on(r):this[n].on(r,t);if(2===arguments.length){if(null==t)for(n in this)this.hasOwnProperty(n)&&this[n].on(r,null);return this}},ta.event=null,ta.requote=function(n){return n.replace(Ma,"\\$&")};var Ma=/[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g,xa={}.__proto__?function(n,t){n.__proto__=t}:function(n,t){for(var e in t)n[e]=t[e]},ba=function(n,t){return t.querySelector(n)},_a=function(n,t){return t.querySelectorAll(n)},wa=ia.matches||ia[m(ia,"matchesSelector")],Sa=function(n,t){return wa.call(n,t)};"function"==typeof Sizzle&&(ba=function(n,t){return Sizzle(n,t)[0]||null},_a=Sizzle,Sa=Sizzle.matchesSelector),ta.selection=function(){return Na};var ka=ta.selection.prototype=[];ka.select=function(n){var t,e,r,u,i=[];n=k(n);for(var o=-1,a=this.length;++o<a;){i.push(t=[]),t.parentNode=(r=this[o]).parentNode;for(var c=-1,l=r.length;++c<l;)(u=r[c])?(t.push(e=n.call(u,u.__data__,c,o)),e&&"__data__"in u&&(e.__data__=u.__data__)):t.push(null)}return S(i)},ka.selectAll=function(n){var t,e,r=[];n=E(n);for(var u=-1,i=this.length;++u<i;)for(var o=this[u],a=-1,c=o.length;++a<c;)(e=o[a])&&(r.push(t=ra(n.call(e,e.__data__,a,u))),t.parentNode=e);return S(r)};var Ea={svg:"http://www.w3.org/2000/svg",xhtml:"http://www.w3.org/1999/xhtml",xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};ta.ns={prefix:Ea,qualify:function(n){var t=n.indexOf(":"),e=n;return t>=0&&(e=n.slice(0,t),n=n.slice(t+1)),Ea.hasOwnProperty(e)?{space:Ea[e],local:n}:n}},ka.attr=function(n,t){if(arguments.length<2){if("string"==typeof n){var e=this.node();return n=ta.ns.qualify(n),n.local?e.getAttributeNS(n.space,n.local):e.getAttribute(n)}for(t in n)this.each(A(t,n[t]));return this}return this.each(A(n,t))},ka.classed=function(n,t){if(arguments.length<2){if("string"==typeof n){var e=this.node(),r=(n=z(n)).length,u=-1;if(t=e.classList){for(;++u<r;)if(!t.contains(n[u]))return!1}else for(t=e.getAttribute("class");++u<r;)if(!C(n[u]).test(t))return!1;return!0}for(t in n)this.each(q(t,n[t]));return this}return this.each(q(n,t))},ka.style=function(n,t,e){var r=arguments.length;if(3>r){if("string"!=typeof n){2>r&&(t="");for(e in n)this.each(T(e,n[e],t));return this}if(2>r)return oa.getComputedStyle(this.node(),null).getPropertyValue(n);e=""}return this.each(T(n,t,e))},ka.property=function(n,t){if(arguments.length<2){if("string"==typeof n)return this.node()[n];for(t in n)this.each(R(t,n[t]));return this}return this.each(R(n,t))},ka.text=function(n){return arguments.length?this.each("function"==typeof n?function(){var t=n.apply(this,arguments);this.textContent=null==t?"":t}:null==n?function(){this.textContent=""}:function(){this.textContent=n}):this.node().textContent},ka.html=function(n){return arguments.length?this.each("function"==typeof n?function(){var t=n.apply(this,arguments);this.innerHTML=null==t?"":t}:null==n?function(){this.innerHTML=""}:function(){this.innerHTML=n}):this.node().innerHTML},ka.append=function(n){return n=D(n),this.select(function(){return this.appendChild(n.apply(this,arguments))})},ka.insert=function(n,t){return n=D(n),t=k(t),this.select(function(){return this.insertBefore(n.apply(this,arguments),t.apply(this,arguments)||null)})},ka.remove=function(){return this.each(P)},ka.data=function(n,t){function e(n,e){var r,u,i,o=n.length,f=e.length,h=Math.min(o,f),g=new Array(f),p=new Array(f),v=new Array(o);if(t){var d,m=new a,y=new Array(o);for(r=-1;++r<o;)m.has(d=t.call(u=n[r],u.__data__,r))?v[r]=u:m.set(d,u),y[r]=d;for(r=-1;++r<f;)(u=m.get(d=t.call(e,i=e[r],r)))?u!==!0&&(g[r]=u,u.__data__=i):p[r]=U(i),m.set(d,!0);for(r=-1;++r<o;)m.get(y[r])!==!0&&(v[r]=n[r])}else{for(r=-1;++r<h;)u=n[r],i=e[r],u?(u.__data__=i,g[r]=u):p[r]=U(i);for(;f>r;++r)p[r]=U(e[r]);for(;o>r;++r)v[r]=n[r]}p.update=g,p.parentNode=g.parentNode=v.parentNode=n.parentNode,c.push(p),l.push(g),s.push(v)}var r,u,i=-1,o=this.length;if(!arguments.length){for(n=new Array(o=(r=this[0]).length);++i<o;)(u=r[i])&&(n[i]=u.__data__);return n}var c=O([]),l=S([]),s=S([]);if("function"==typeof n)for(;++i<o;)e(r=this[i],n.call(r,r.parentNode.__data__,i));else for(;++i<o;)e(r=this[i],n);return l.enter=function(){return c},l.exit=function(){return s},l},ka.datum=function(n){return arguments.length?this.property("__data__",n):this.property("__data__")},ka.filter=function(n){var t,e,r,u=[];"function"!=typeof n&&(n=j(n));for(var i=0,o=this.length;o>i;i++){u.push(t=[]),t.parentNode=(e=this[i]).parentNode;for(var a=0,c=e.length;c>a;a++)(r=e[a])&&n.call(r,r.__data__,a,i)&&t.push(r)}return S(u)},ka.order=function(){for(var n=-1,t=this.length;++n<t;)for(var e,r=this[n],u=r.length-1,i=r[u];--u>=0;)(e=r[u])&&(i&&i!==e.nextSibling&&i.parentNode.insertBefore(e,i),i=e);return this},ka.sort=function(n){n=F.apply(this,arguments);for(var t=-1,e=this.length;++t<e;)this[t].sort(n);return this.order()},ka.each=function(n){return H(this,function(t,e,r){n.call(t,t.__data__,e,r)})},ka.call=function(n){var t=ra(arguments);return n.apply(t[0]=this,t),this},ka.empty=function(){return!this.node()},ka.node=function(){for(var n=0,t=this.length;t>n;n++)for(var e=this[n],r=0,u=e.length;u>r;r++){var i=e[r];if(i)return i}return null},ka.size=function(){var n=0;return H(this,function(){++n}),n};var Aa=[];ta.selection.enter=O,ta.selection.enter.prototype=Aa,Aa.append=ka.append,Aa.empty=ka.empty,Aa.node=ka.node,Aa.call=ka.call,Aa.size=ka.size,Aa.select=function(n){for(var t,e,r,u,i,o=[],a=-1,c=this.length;++a<c;){r=(u=this[a]).update,o.push(t=[]),t.parentNode=u.parentNode;for(var l=-1,s=u.length;++l<s;)(i=u[l])?(t.push(r[l]=e=n.call(u.parentNode,i.__data__,l,a)),e.__data__=i.__data__):t.push(null)}return S(o)},Aa.insert=function(n,t){return arguments.length<2&&(t=Y(this)),ka.insert.call(this,n,t)},ka.transition=function(n){for(var t,e,r=Dl||++Hl,u=Xo(n),i=[],o=Pl||{time:Date.now(),ease:ku,delay:0,duration:250},a=-1,c=this.length;++a<c;){i.push(t=[]);for(var l=this[a],s=-1,f=l.length;++s<f;)(e=l[s])&&$o(e,s,u,r,o),t.push(e)}return Io(i,u,r)},ka.interrupt=function(n){var t=Xo(n);return this.each(function(){var n=this[t];n&&++n.active})},ta.select=function(n){var t=["string"==typeof n?ba(n,ua):n];return t.parentNode=ia,S([t])},ta.selectAll=function(n){var t=ra("string"==typeof n?_a(n,ua):n);return t.parentNode=ia,S([t])};var Na=ta.select(ia);ka.on=function(n,t,e){var r=arguments.length;if(3>r){if("string"!=typeof n){2>r&&(t=!1);for(e in n)this.each(Z(e,n[e],t));return this}if(2>r)return(r=this.node()["__on"+n])&&r._;e=!1}return this.each(Z(n,t,e))};var Ca=ta.map({mouseenter:"mouseover",mouseleave:"mouseout"});Ca.forEach(function(n){"on"+n in ua&&Ca.remove(n)});var za="onselectstart"in ua?null:m(ia.style,"userSelect"),qa=0;ta.mouse=function(n){return B(n,_())};var La=/WebKit/.test(oa.navigator.userAgent)?-1:0;ta.touch=function(n,t,e){if(arguments.length<3&&(e=t,t=_().changedTouches),t)for(var r,u=0,i=t.length;i>u;++u)if((r=t[u]).identifier===e)return B(n,r)},ta.behavior.drag=function(){function n(){this.on("mousedown.drag",u).on("touchstart.drag",i)}function t(n,t,u,i,o){return function(){function a(){var n,e,r=t(h,v);r&&(n=r[0]-M[0],e=r[1]-M[1],p|=n|e,M=r,g({type:"drag",x:r[0]+l[0],y:r[1]+l[1],dx:n,dy:e}))}function c(){t(h,v)&&(m.on(i+d,null).on(o+d,null),y(p&&ta.event.target===f),g({type:"dragend"}))}var l,s=this,f=ta.event.target,h=s.parentNode,g=e.of(s,arguments),p=0,v=n(),d=".drag"+(null==v?"":"-"+v),m=ta.select(u()).on(i+d,a).on(o+d,c),y=$(),M=t(h,v);r?(l=r.apply(s,arguments),l=[l.x-M[0],l.y-M[1]]):l=[0,0],g({type:"dragstart"})}}var e=w(n,"drag","dragstart","dragend"),r=null,u=t(y,ta.mouse,G,"mousemove","mouseup"),i=t(W,ta.touch,J,"touchmove","touchend");return n.origin=function(t){return arguments.length?(r=t,n):r},ta.rebind(n,e,"on")},ta.touches=function(n,t){return arguments.length<2&&(t=_().touches),t?ra(t).map(function(t){var e=B(n,t);return e.identifier=t.identifier,e}):[]};var Ta=1e-6,Ra=Ta*Ta,Da=Math.PI,Pa=2*Da,Ua=Pa-Ta,ja=Da/2,Fa=Da/180,Ha=180/Da,Oa=Math.SQRT2,Ya=2,Ia=4;ta.interpolateZoom=function(n,t){function e(n){var t=n*y;if(m){var e=rt(v),o=i/(Ya*h)*(e*ut(Oa*t+v)-et(v));return[r+o*l,u+o*s,i*e/rt(Oa*t+v)]}return[r+n*l,u+n*s,i*Math.exp(Oa*t)]}var r=n[0],u=n[1],i=n[2],o=t[0],a=t[1],c=t[2],l=o-r,s=a-u,f=l*l+s*s,h=Math.sqrt(f),g=(c*c-i*i+Ia*f)/(2*i*Ya*h),p=(c*c-i*i-Ia*f)/(2*c*Ya*h),v=Math.log(Math.sqrt(g*g+1)-g),d=Math.log(Math.sqrt(p*p+1)-p),m=d-v,y=(m||Math.log(c/i))/Oa;return e.duration=1e3*y,e},ta.behavior.zoom=function(){function n(n){n.on(z,s).on(Xa+".zoom",h).on("dblclick.zoom",g).on(T,f)}function t(n){return[(n[0]-k.x)/k.k,(n[1]-k.y)/k.k]}function e(n){return[n[0]*k.k+k.x,n[1]*k.k+k.y]}function r(n){k.k=Math.max(A[0],Math.min(A[1],n))}function u(n,t){t=e(t),k.x+=n[0]-t[0],k.y+=n[1]-t[1]}function i(t,e,i,o){t.__chart__={x:k.x,y:k.y,k:k.k},r(Math.pow(2,o)),u(v=e,i),t=ta.select(t),N>0&&(t=t.transition().duration(N)),t.call(n.event)}function o(){x&&x.domain(M.range().map(function(n){return(n-k.x)/k.k}).map(M.invert)),S&&S.domain(_.range().map(function(n){return(n-k.y)/k.k}).map(_.invert))}function a(n){C++||n({type:"zoomstart"})}function c(n){o(),n({type:"zoom",scale:k.k,translate:[k.x,k.y]})}function l(n){--C||n({type:"zoomend"}),v=null}function s(){function n(){s=1,u(ta.mouse(r),h),c(o)}function e(){f.on(q,null).on(L,null),g(s&&ta.event.target===i),l(o)}var r=this,i=ta.event.target,o=R.of(r,arguments),s=0,f=ta.select(oa).on(q,n).on(L,e),h=t(ta.mouse(r)),g=$();I(r),a(o)}function f(){function n(){var n=ta.touches(p);return g=k.k,n.forEach(function(n){n.identifier in d&&(d[n.identifier]=t(n))}),n}function e(){var t=ta.event.target;ta.select(t).on(x,o).on(_,h),w.push(t);for(var e=ta.event.changedTouches,r=0,u=e.length;u>r;++r)d[e[r].identifier]=null;var a=n(),c=Date.now();if(1===a.length){if(500>c-y){var l=a[0];i(p,l,d[l.identifier],Math.floor(Math.log(k.k)/Math.LN2)+1),b()}y=c}else if(a.length>1){var l=a[0],s=a[1],f=l[0]-s[0],g=l[1]-s[1];m=f*f+g*g}}function o(){var n,t,e,i,o=ta.touches(p);I(p);for(var a=0,l=o.length;l>a;++a,i=null)if(e=o[a],i=d[e.identifier]){if(t)break;n=e,t=i}if(i){var s=(s=e[0]-n[0])*s+(s=e[1]-n[1])*s,f=m&&Math.sqrt(s/m);n=[(n[0]+e[0])/2,(n[1]+e[1])/2],t=[(t[0]+i[0])/2,(t[1]+i[1])/2],r(f*g)}y=null,u(n,t),c(v)}function h(){if(ta.event.touches.length){for(var t=ta.event.changedTouches,e=0,r=t.length;r>e;++e)delete d[t[e].identifier];for(var u in d)return void n()}ta.selectAll(w).on(M,null),S.on(z,s).on(T,f),E(),l(v)}var g,p=this,v=R.of(p,arguments),d={},m=0,M=".zoom-"+ta.event.changedTouches[0].identifier,x="touchmove"+M,_="touchend"+M,w=[],S=ta.select(p),E=$();e(),a(v),S.on(z,null).on(T,e)}function h(){var n=R.of(this,arguments);m?clearTimeout(m):(p=t(v=d||ta.mouse(this)),I(this),a(n)),m=setTimeout(function(){m=null,l(n)},50),b(),r(Math.pow(2,.002*Za())*k.k),u(v,p),c(n)}function g(){var n=ta.mouse(this),e=Math.log(k.k)/Math.LN2;i(this,n,t(n),ta.event.shiftKey?Math.ceil(e)-1:Math.floor(e)+1)}var p,v,d,m,y,M,x,_,S,k={x:0,y:0,k:1},E=[960,500],A=Va,N=250,C=0,z="mousedown.zoom",q="mousemove.zoom",L="mouseup.zoom",T="touchstart.zoom",R=w(n,"zoomstart","zoom","zoomend");return n.event=function(n){n.each(function(){var n=R.of(this,arguments),t=k;Dl?ta.select(this).transition().each("start.zoom",function(){k=this.__chart__||{x:0,y:0,k:1},a(n)}).tween("zoom:zoom",function(){var e=E[0],r=E[1],u=v?v[0]:e/2,i=v?v[1]:r/2,o=ta.interpolateZoom([(u-k.x)/k.k,(i-k.y)/k.k,e/k.k],[(u-t.x)/t.k,(i-t.y)/t.k,e/t.k]);return function(t){var r=o(t),a=e/r[2];this.__chart__=k={x:u-r[0]*a,y:i-r[1]*a,k:a},c(n)}}).each("interrupt.zoom",function(){l(n)}).each("end.zoom",function(){l(n)}):(this.__chart__=k,a(n),c(n),l(n))})},n.translate=function(t){return arguments.length?(k={x:+t[0],y:+t[1],k:k.k},o(),n):[k.x,k.y]},n.scale=function(t){return arguments.length?(k={x:k.x,y:k.y,k:+t},o(),n):k.k},n.scaleExtent=function(t){return arguments.length?(A=null==t?Va:[+t[0],+t[1]],n):A},n.center=function(t){return arguments.length?(d=t&&[+t[0],+t[1]],n):d},n.size=function(t){return arguments.length?(E=t&&[+t[0],+t[1]],n):E},n.duration=function(t){return arguments.length?(N=+t,n):N},n.x=function(t){return arguments.length?(x=t,M=t.copy(),k={x:0,y:0,k:1},n):x},n.y=function(t){return arguments.length?(S=t,_=t.copy(),k={x:0,y:0,k:1},n):S},ta.rebind(n,R,"on")};var Za,Va=[0,1/0],Xa="onwheel"in ua?(Za=function(){return-ta.event.deltaY*(ta.event.deltaMode?120:1)},"wheel"):"onmousewheel"in ua?(Za=function(){return ta.event.wheelDelta},"mousewheel"):(Za=function(){return-ta.event.detail},"MozMousePixelScroll");ta.color=ot,ot.prototype.toString=function(){return this.rgb()+""},ta.hsl=at;var $a=at.prototype=new ot;$a.brighter=function(n){return n=Math.pow(.7,arguments.length?n:1),new at(this.h,this.s,this.l/n)},$a.darker=function(n){return n=Math.pow(.7,arguments.length?n:1),new at(this.h,this.s,n*this.l)},$a.rgb=function(){return ct(this.h,this.s,this.l)},ta.hcl=lt;var Ba=lt.prototype=new ot;Ba.brighter=function(n){return new lt(this.h,this.c,Math.min(100,this.l+Wa*(arguments.length?n:1)))},Ba.darker=function(n){return new lt(this.h,this.c,Math.max(0,this.l-Wa*(arguments.length?n:1)))},Ba.rgb=function(){return st(this.h,this.c,this.l).rgb()},ta.lab=ft;var Wa=18,Ja=.95047,Ga=1,Ka=1.08883,Qa=ft.prototype=new ot;Qa.brighter=function(n){return new ft(Math.min(100,this.l+Wa*(arguments.length?n:1)),this.a,this.b)},Qa.darker=function(n){return new ft(Math.max(0,this.l-Wa*(arguments.length?n:1)),this.a,this.b)},Qa.rgb=function(){return ht(this.l,this.a,this.b)},ta.rgb=mt;var nc=mt.prototype=new ot;nc.brighter=function(n){n=Math.pow(.7,arguments.length?n:1);var t=this.r,e=this.g,r=this.b,u=30;return t||e||r?(t&&u>t&&(t=u),e&&u>e&&(e=u),r&&u>r&&(r=u),new mt(Math.min(255,t/n),Math.min(255,e/n),Math.min(255,r/n))):new mt(u,u,u)},nc.darker=function(n){return n=Math.pow(.7,arguments.length?n:1),new mt(n*this.r,n*this.g,n*this.b)},nc.hsl=function(){return _t(this.r,this.g,this.b)},nc.toString=function(){return"#"+xt(this.r)+xt(this.g)+xt(this.b)};var tc=ta.map({aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074});tc.forEach(function(n,t){tc.set(n,yt(t))}),ta.functor=Et,ta.xhr=Nt(At),ta.dsv=function(n,t){function e(n,e,i){arguments.length<3&&(i=e,e=null);var o=Ct(n,t,null==e?r:u(e),i);return o.row=function(n){return arguments.length?o.response(null==(e=n)?r:u(n)):e},o}function r(n){return e.parse(n.responseText)}function u(n){return function(t){return e.parse(t.responseText,n)}}function i(t){return t.map(o).join(n)}function o(n){return a.test(n)?'"'+n.replace(/\"/g,'""')+'"':n}var a=new RegExp('["'+n+"\n]"),c=n.charCodeAt(0);return e.parse=function(n,t){var r;return e.parseRows(n,function(n,e){if(r)return r(n,e-1);var u=new Function("d","return {"+n.map(function(n,t){return JSON.stringify(n)+": d["+t+"]"}).join(",")+"}");r=t?function(n,e){return t(u(n),e)}:u})},e.parseRows=function(n,t){function e(){if(s>=l)return o;if(u)return u=!1,i;var t=s;if(34===n.charCodeAt(t)){for(var e=t;e++<l;)if(34===n.charCodeAt(e)){if(34!==n.charCodeAt(e+1))break;++e}s=e+2;var r=n.charCodeAt(e+1);return 13===r?(u=!0,10===n.charCodeAt(e+2)&&++s):10===r&&(u=!0),n.slice(t+1,e).replace(/""/g,'"')}for(;l>s;){var r=n.charCodeAt(s++),a=1;if(10===r)u=!0;else if(13===r)u=!0,10===n.charCodeAt(s)&&(++s,++a);else if(r!==c)continue;return n.slice(t,s-a)}return n.slice(t)}for(var r,u,i={},o={},a=[],l=n.length,s=0,f=0;(r=e())!==o;){for(var h=[];r!==i&&r!==o;)h.push(r),r=e();t&&null==(h=t(h,f++))||a.push(h)}return a},e.format=function(t){if(Array.isArray(t[0]))return e.formatRows(t);var r=new v,u=[];return t.forEach(function(n){for(var t in n)r.has(t)||u.push(r.add(t))}),[u.map(o).join(n)].concat(t.map(function(t){return u.map(function(n){return o(t[n])}).join(n)})).join("\n")},e.formatRows=function(n){return n.map(i).join("\n")},e},ta.csv=ta.dsv(",","text/csv"),ta.tsv=ta.dsv(" ","text/tab-separated-values");var ec,rc,uc,ic,oc,ac=oa[m(oa,"requestAnimationFrame")]||function(n){setTimeout(n,17)};ta.timer=function(n,t,e){var r=arguments.length;2>r&&(t=0),3>r&&(e=Date.now());var u=e+t,i={c:n,t:u,f:!1,n:null};rc?rc.n=i:ec=i,rc=i,uc||(ic=clearTimeout(ic),uc=1,ac(Lt))},ta.timer.flush=function(){Tt(),Rt()},ta.round=function(n,t){return t?Math.round(n*(t=Math.pow(10,t)))/t:Math.round(n)};var cc=["y","z","a","f","p","n","\xb5","m","","k","M","G","T","P","E","Z","Y"].map(Pt);ta.formatPrefix=function(n,t){var e=0;return n&&(0>n&&(n*=-1),t&&(n=ta.round(n,Dt(n,t))),e=1+Math.floor(1e-12+Math.log(n)/Math.LN10),e=Math.max(-24,Math.min(24,3*Math.floor((e-1)/3)))),cc[8+e/3]};var lc=/(?:([^{])?([<>=^]))?([+\- ])?([$#])?(0)?(\d+)?(,)?(\.-?\d+)?([a-z%])?/i,sc=ta.map({b:function(n){return n.toString(2)},c:function(n){return String.fromCharCode(n)},o:function(n){return n.toString(8)},x:function(n){return n.toString(16)},X:function(n){return n.toString(16).toUpperCase()},g:function(n,t){return n.toPrecision(t)},e:function(n,t){return n.toExponential(t)},f:function(n,t){return n.toFixed(t)},r:function(n,t){return(n=ta.round(n,Dt(n,t))).toFixed(Math.max(0,Math.min(20,Dt(n*(1+1e-15),t))))}}),fc=ta.time={},hc=Date;Ft.prototype={getDate:function(){return this._.getUTCDate()},getDay:function(){return this._.getUTCDay()},getFullYear:function(){return this._.getUTCFullYear()},getHours:function(){return this._.getUTCHours()},getMilliseconds:function(){return this._.getUTCMilliseconds()},getMinutes:function(){return this._.getUTCMinutes()},getMonth:function(){return this._.getUTCMonth()},getSeconds:function(){return this._.getUTCSeconds()},getTime:function(){return this._.getTime()},getTimezoneOffset:function(){return 0},valueOf:function(){return this._.valueOf()},setDate:function(){gc.setUTCDate.apply(this._,arguments)},setDay:function(){gc.setUTCDay.apply(this._,arguments)},setFullYear:function(){gc.setUTCFullYear.apply(this._,arguments)},setHours:function(){gc.setUTCHours.apply(this._,arguments)},setMilliseconds:function(){gc.setUTCMilliseconds.apply(this._,arguments)},setMinutes:function(){gc.setUTCMinutes.apply(this._,arguments)},setMonth:function(){gc.setUTCMonth.apply(this._,arguments)},setSeconds:function(){gc.setUTCSeconds.apply(this._,arguments)},setTime:function(){gc.setTime.apply(this._,arguments)}};var gc=Date.prototype;fc.year=Ht(function(n){return n=fc.day(n),n.setMonth(0,1),n},function(n,t){n.setFullYear(n.getFullYear()+t)},function(n){return n.getFullYear()}),fc.years=fc.year.range,fc.years.utc=fc.year.utc.range,fc.day=Ht(function(n){var t=new hc(2e3,0);return t.setFullYear(n.getFullYear(),n.getMonth(),n.getDate()),t},function(n,t){n.setDate(n.getDate()+t)},function(n){return n.getDate()-1}),fc.days=fc.day.range,fc.days.utc=fc.day.utc.range,fc.dayOfYear=function(n){var t=fc.year(n);return Math.floor((n-t-6e4*(n.getTimezoneOffset()-t.getTimezoneOffset()))/864e5)},["sunday","monday","tuesday","wednesday","thursday","friday","saturday"].forEach(function(n,t){t=7-t;var e=fc[n]=Ht(function(n){return(n=fc.day(n)).setDate(n.getDate()-(n.getDay()+t)%7),n},function(n,t){n.setDate(n.getDate()+7*Math.floor(t))},function(n){var e=fc.year(n).getDay();return Math.floor((fc.dayOfYear(n)+(e+t)%7)/7)-(e!==t)});fc[n+"s"]=e.range,fc[n+"s"].utc=e.utc.range,fc[n+"OfYear"]=function(n){var e=fc.year(n).getDay();return Math.floor((fc.dayOfYear(n)+(e+t)%7)/7)}}),fc.week=fc.sunday,fc.weeks=fc.sunday.range,fc.weeks.utc=fc.sunday.utc.range,fc.weekOfYear=fc.sundayOfYear;var pc={"-":"",_:" ",0:"0"},vc=/^\s*\d+/,dc=/^%/;ta.locale=function(n){return{numberFormat:Ut(n),timeFormat:Yt(n)}};var mc=ta.locale({decimal:".",thousands:",",grouping:[3],currency:["$",""],dateTime:"%a %b %e %X %Y",date:"%m/%d/%Y",time:"%H:%M:%S",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});ta.format=mc.numberFormat,ta.geo={},le.prototype={s:0,t:0,add:function(n){se(n,this.t,yc),se(yc.s,this.s,this),this.s?this.t+=yc.t:this.s=yc.t},reset:function(){this.s=this.t=0},valueOf:function(){return this.s}};var yc=new le;ta.geo.stream=function(n,t){n&&Mc.hasOwnProperty(n.type)?Mc[n.type](n,t):fe(n,t)};var Mc={Feature:function(n,t){fe(n.geometry,t)},FeatureCollection:function(n,t){for(var e=n.features,r=-1,u=e.length;++r<u;)fe(e[r].geometry,t)}},xc={Sphere:function(n,t){t.sphere()},Point:function(n,t){n=n.coordinates,t.point(n[0],n[1],n[2])},MultiPoint:function(n,t){for(var e=n.coordinates,r=-1,u=e.length;++r<u;)n=e[r],t.point(n[0],n[1],n[2])},LineString:function(n,t){he(n.coordinates,t,0)},MultiLineString:function(n,t){for(var e=n.coordinates,r=-1,u=e.length;++r<u;)he(e[r],t,0)},Polygon:function(n,t){ge(n.coordinates,t)},MultiPolygon:function(n,t){for(var e=n.coordinates,r=-1,u=e.length;++r<u;)ge(e[r],t)
2307 },t.tension=function(n){return arguments.length?(f=n,t):f},t}function Uo(n){return n.radius}function jo(n){return[n.x,n.y]}function Fo(n){return function(){var t=n.apply(this,arguments),e=t[0],r=t[1]-ja;return[e*Math.cos(r),e*Math.sin(r)]}}function Ho(){return 64}function Oo(){return"circle"}function Yo(n){var t=Math.sqrt(n/Da);return"M0,"+t+"A"+t+","+t+" 0 1,1 0,"+-t+"A"+t+","+t+" 0 1,1 0,"+t+"Z"}function Io(n,t,e){return xa(n,Fl),n.namespace=t,n.id=e,n}function Zo(n,t,e,r){var u=n.id,i=n.namespace;return H(n,"function"==typeof e?function(n,o,a){n[i][u].tween.set(t,r(e.call(n,n.__data__,o,a)))}:(e=r(e),function(n){n[i][u].tween.set(t,e)}))}function Vo(n){return null==n&&(n=""),function(){this.textContent=n}}function Xo(n){return null==n?"__transition__":"__transition_"+n+"__"}function $o(n,t,e,r,u){var i=n[e]||(n[e]={active:0,count:0}),o=i[r];if(!o){var c=u.time;o=i[r]={tween:new a,time:c,delay:u.delay,duration:u.duration,ease:u.ease},u=null,++i.count,ta.timer(function(u){function a(e){return i.active>r?s(!1):(i.active=r,o.event&&o.event.start.call(n,g,t),o.tween.forEach(function(e,r){(r=r.call(n,g,t))&&d.push(r)}),h=o.ease,f=o.duration,ta.timer(function(){return v.c=l(e||1)?Ce:l,1},0,c),void 0)}function l(t){if(i.active!==r)return s(!1);for(var e=t/f,u=h(e),o=d.length;o>0;)d[--o].call(n,u);return e>=1?s(!0):void 0}function s(u){return o.event&&o.event[u?"end":"interrupt"].call(n,g,t),--i.count?delete i[r]:delete n[e],1}var f,h,g=n.__data__,p=o.delay,v=oc,d=[];return v.t=p+c,u>=p?a(u-p):(v.c=a,void 0)},0,c)}}function Bo(n,t,e){n.attr("transform",function(n){var r=t(n);return"translate("+(isFinite(r)?r:e(n))+",0)"})}function Wo(n,t,e){n.attr("transform",function(n){var r=t(n);return"translate(0,"+(isFinite(r)?r:e(n))+")"})}function Jo(n){return n.toISOString()}function Go(n,t,e){function r(t){return n(t)}function u(n,e){var r=n[1]-n[0],u=r/e,i=ta.bisect(Bl,u);return i==Bl.length?[t.year,Xi(n.map(function(n){return n/31536e6}),e)[2]]:i?t[u/Bl[i-1]<Bl[i]/u?i-1:i]:[Gl,Xi(n,e)[2]]}return r.invert=function(t){return Ko(n.invert(t))},r.domain=function(t){return arguments.length?(n.domain(t),r):n.domain().map(Ko)},r.nice=function(n,t){function e(e){return!isNaN(e)&&!n.range(e,Ko(+e+1),t).length}var i=r.domain(),o=Ui(i),a=null==n?u(o,10):"number"==typeof n&&u(o,n);return a&&(n=a[0],t=a[1]),r.domain(Hi(i,t>1?{floor:function(t){for(;e(t=n.floor(t));)t=Ko(t-1);return t},ceil:function(t){for(;e(t=n.ceil(t));)t=Ko(+t+1);return t}}:n))},r.ticks=function(n,t){var e=Ui(r.domain()),i=null==n?u(e,10):"number"==typeof n?u(e,n):!n.range&&[{range:n},t];return i&&(n=i[0],t=i[1]),n.range(e[0],Ko(+e[1]+1),1>t?1:t)},r.tickFormat=function(){return e},r.copy=function(){return Go(n.copy(),t,e)},Zi(r,n)}function Ko(n){return new Date(n)}function Qo(n){return JSON.parse(n.responseText)}function na(n){var t=ua.createRange();return t.selectNode(ua.body),t.createContextualFragment(n.responseText)}var ta={version:"3.5.0"};Date.now||(Date.now=function(){return+new Date});var ea=[].slice,ra=function(n){return ea.call(n)},ua=document,ia=ua.documentElement,oa=window;try{ra(ia.childNodes)[0].nodeType}catch(aa){ra=function(n){for(var t=n.length,e=new Array(t);t--;)e[t]=n[t];return e}}try{ua.createElement("div").style.setProperty("opacity",0,"")}catch(ca){var la=oa.Element.prototype,sa=la.setAttribute,fa=la.setAttributeNS,ha=oa.CSSStyleDeclaration.prototype,ga=ha.setProperty;la.setAttribute=function(n,t){sa.call(this,n,t+"")},la.setAttributeNS=function(n,t,e){fa.call(this,n,t,e+"")},ha.setProperty=function(n,t,e){ga.call(this,n,t+"",e)}}ta.ascending=n,ta.descending=function(n,t){return n>t?-1:t>n?1:t>=n?0:0/0},ta.min=function(n,t){var e,r,u=-1,i=n.length;if(1===arguments.length){for(;++u<i;)if(null!=(r=n[u])&&r>=r){e=r;break}for(;++u<i;)null!=(r=n[u])&&e>r&&(e=r)}else{for(;++u<i;)if(null!=(r=t.call(n,n[u],u))&&r>=r){e=r;break}for(;++u<i;)null!=(r=t.call(n,n[u],u))&&e>r&&(e=r)}return e},ta.max=function(n,t){var e,r,u=-1,i=n.length;if(1===arguments.length){for(;++u<i;)if(null!=(r=n[u])&&r>=r){e=r;break}for(;++u<i;)null!=(r=n[u])&&r>e&&(e=r)}else{for(;++u<i;)if(null!=(r=t.call(n,n[u],u))&&r>=r){e=r;break}for(;++u<i;)null!=(r=t.call(n,n[u],u))&&r>e&&(e=r)}return e},ta.extent=function(n,t){var e,r,u,i=-1,o=n.length;if(1===arguments.length){for(;++i<o;)if(null!=(r=n[i])&&r>=r){e=u=r;break}for(;++i<o;)null!=(r=n[i])&&(e>r&&(e=r),r>u&&(u=r))}else{for(;++i<o;)if(null!=(r=t.call(n,n[i],i))&&r>=r){e=u=r;break}for(;++i<o;)null!=(r=t.call(n,n[i],i))&&(e>r&&(e=r),r>u&&(u=r))}return[e,u]},ta.sum=function(n,t){var r,u=0,i=n.length,o=-1;if(1===arguments.length)for(;++o<i;)e(r=+n[o])&&(u+=r);else for(;++o<i;)e(r=+t.call(n,n[o],o))&&(u+=r);return u},ta.mean=function(n,r){var u,i=0,o=n.length,a=-1,c=o;if(1===arguments.length)for(;++a<o;)e(u=t(n[a]))?i+=u:--c;else for(;++a<o;)e(u=t(r.call(n,n[a],a)))?i+=u:--c;return c?i/c:void 0},ta.quantile=function(n,t){var e=(n.length-1)*t+1,r=Math.floor(e),u=+n[r-1],i=e-r;return i?u+i*(n[r]-u):u},ta.median=function(r,u){var i,o=[],a=r.length,c=-1;if(1===arguments.length)for(;++c<a;)e(i=t(r[c]))&&o.push(i);else for(;++c<a;)e(i=t(u.call(r,r[c],c)))&&o.push(i);return o.length?ta.quantile(o.sort(n),.5):void 0};var pa=r(n);ta.bisectLeft=pa.left,ta.bisect=ta.bisectRight=pa.right,ta.bisector=function(t){return r(1===t.length?function(e,r){return n(t(e),r)}:t)},ta.shuffle=function(n,t,e){(i=arguments.length)<3&&(e=n.length,2>i&&(t=0));for(var r,u,i=e-t;i;)u=0|Math.random()*i--,r=n[i+t],n[i+t]=n[u+t],n[u+t]=r;return n},ta.permute=function(n,t){for(var e=t.length,r=new Array(e);e--;)r[e]=n[t[e]];return r},ta.pairs=function(n){for(var t,e=0,r=n.length-1,u=n[0],i=new Array(0>r?0:r);r>e;)i[e]=[t=u,u=n[++e]];return i},ta.zip=function(){if(!(r=arguments.length))return[];for(var n=-1,t=ta.min(arguments,u),e=new Array(t);++n<t;)for(var r,i=-1,o=e[n]=new Array(r);++i<r;)o[i]=arguments[i][n];return e},ta.transpose=function(n){return ta.zip.apply(ta,n)},ta.keys=function(n){var t=[];for(var e in n)t.push(e);return t},ta.values=function(n){var t=[];for(var e in n)t.push(n[e]);return t},ta.entries=function(n){var t=[];for(var e in n)t.push({key:e,value:n[e]});return t},ta.merge=function(n){for(var t,e,r,u=n.length,i=-1,o=0;++i<u;)o+=n[i].length;for(e=new Array(o);--u>=0;)for(r=n[u],t=r.length;--t>=0;)e[--o]=r[t];return e};var va=Math.abs;ta.range=function(n,t,e){if(arguments.length<3&&(e=1,arguments.length<2&&(t=n,n=0)),1/0===(t-n)/e)throw new Error("infinite range");var r,u=[],o=i(va(e)),a=-1;if(n*=o,t*=o,e*=o,0>e)for(;(r=n+e*++a)>t;)u.push(r/o);else for(;(r=n+e*++a)<t;)u.push(r/o);return u},ta.map=function(n,t){var e=new a;if(n instanceof a)n.forEach(function(n,t){e.set(n,t)});else if(Array.isArray(n)){var r,u=-1,i=n.length;if(1===arguments.length)for(;++u<i;)e.set(u,n[u]);else for(;++u<i;)e.set(t.call(n,r=n[u],u),r)}else for(var o in n)e.set(o,n[o]);return e};var da="__proto__",ma="\x00";o(a,{has:s,get:function(n){return this._[c(n)]},set:function(n,t){return this._[c(n)]=t},remove:f,keys:h,values:function(){var n=[];for(var t in this._)n.push(this._[t]);return n},entries:function(){var n=[];for(var t in this._)n.push({key:l(t),value:this._[t]});return n},size:g,empty:p,forEach:function(n){for(var t in this._)n.call(this,l(t),this._[t])}}),ta.nest=function(){function n(t,o,c){if(c>=i.length)return r?r.call(u,o):e?o.sort(e):o;for(var l,s,f,h,g=-1,p=o.length,v=i[c++],d=new a;++g<p;)(h=d.get(l=v(s=o[g])))?h.push(s):d.set(l,[s]);return t?(s=t(),f=function(e,r){s.set(e,n(t,r,c))}):(s={},f=function(e,r){s[e]=n(t,r,c)}),d.forEach(f),s}function t(n,e){if(e>=i.length)return n;var r=[],u=o[e++];return n.forEach(function(n,u){r.push({key:n,values:t(u,e)})}),u?r.sort(function(n,t){return u(n.key,t.key)}):r}var e,r,u={},i=[],o=[];return u.map=function(t,e){return n(e,t,0)},u.entries=function(e){return t(n(ta.map,e,0),0)},u.key=function(n){return i.push(n),u},u.sortKeys=function(n){return o[i.length-1]=n,u},u.sortValues=function(n){return e=n,u},u.rollup=function(n){return r=n,u},u},ta.set=function(n){var t=new v;if(n)for(var e=0,r=n.length;r>e;++e)t.add(n[e]);return t},o(v,{has:s,add:function(n){return this._[c(n+="")]=!0,n},remove:f,values:h,size:g,empty:p,forEach:function(n){for(var t in this._)n.call(this,l(t))}}),ta.behavior={},ta.rebind=function(n,t){for(var e,r=1,u=arguments.length;++r<u;)n[e=arguments[r]]=d(n,t,t[e]);return n};var ya=["webkit","ms","moz","Moz","o","O"];ta.dispatch=function(){for(var n=new M,t=-1,e=arguments.length;++t<e;)n[arguments[t]]=x(n);return n},M.prototype.on=function(n,t){var e=n.indexOf("."),r="";if(e>=0&&(r=n.slice(e+1),n=n.slice(0,e)),n)return arguments.length<2?this[n].on(r):this[n].on(r,t);if(2===arguments.length){if(null==t)for(n in this)this.hasOwnProperty(n)&&this[n].on(r,null);return this}},ta.event=null,ta.requote=function(n){return n.replace(Ma,"\\$&")};var Ma=/[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g,xa={}.__proto__?function(n,t){n.__proto__=t}:function(n,t){for(var e in t)n[e]=t[e]},ba=function(n,t){return t.querySelector(n)},_a=function(n,t){return t.querySelectorAll(n)},wa=ia.matches||ia[m(ia,"matchesSelector")],Sa=function(n,t){return wa.call(n,t)};"function"==typeof Sizzle&&(ba=function(n,t){return Sizzle(n,t)[0]||null},_a=Sizzle,Sa=Sizzle.matchesSelector),ta.selection=function(){return Na};var ka=ta.selection.prototype=[];ka.select=function(n){var t,e,r,u,i=[];n=k(n);for(var o=-1,a=this.length;++o<a;){i.push(t=[]),t.parentNode=(r=this[o]).parentNode;for(var c=-1,l=r.length;++c<l;)(u=r[c])?(t.push(e=n.call(u,u.__data__,c,o)),e&&"__data__"in u&&(e.__data__=u.__data__)):t.push(null)}return S(i)},ka.selectAll=function(n){var t,e,r=[];n=E(n);for(var u=-1,i=this.length;++u<i;)for(var o=this[u],a=-1,c=o.length;++a<c;)(e=o[a])&&(r.push(t=ra(n.call(e,e.__data__,a,u))),t.parentNode=e);return S(r)};var Ea={svg:"http://www.w3.org/2000/svg",xhtml:"http://www.w3.org/1999/xhtml",xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};ta.ns={prefix:Ea,qualify:function(n){var t=n.indexOf(":"),e=n;return t>=0&&(e=n.slice(0,t),n=n.slice(t+1)),Ea.hasOwnProperty(e)?{space:Ea[e],local:n}:n}},ka.attr=function(n,t){if(arguments.length<2){if("string"==typeof n){var e=this.node();return n=ta.ns.qualify(n),n.local?e.getAttributeNS(n.space,n.local):e.getAttribute(n)}for(t in n)this.each(A(t,n[t]));return this}return this.each(A(n,t))},ka.classed=function(n,t){if(arguments.length<2){if("string"==typeof n){var e=this.node(),r=(n=z(n)).length,u=-1;if(t=e.classList){for(;++u<r;)if(!t.contains(n[u]))return!1}else for(t=e.getAttribute("class");++u<r;)if(!C(n[u]).test(t))return!1;return!0}for(t in n)this.each(q(t,n[t]));return this}return this.each(q(n,t))},ka.style=function(n,t,e){var r=arguments.length;if(3>r){if("string"!=typeof n){2>r&&(t="");for(e in n)this.each(T(e,n[e],t));return this}if(2>r)return oa.getComputedStyle(this.node(),null).getPropertyValue(n);e=""}return this.each(T(n,t,e))},ka.property=function(n,t){if(arguments.length<2){if("string"==typeof n)return this.node()[n];for(t in n)this.each(R(t,n[t]));return this}return this.each(R(n,t))},ka.text=function(n){return arguments.length?this.each("function"==typeof n?function(){var t=n.apply(this,arguments);this.textContent=null==t?"":t}:null==n?function(){this.textContent=""}:function(){this.textContent=n}):this.node().textContent},ka.html=function(n){return arguments.length?this.each("function"==typeof n?function(){var t=n.apply(this,arguments);this.innerHTML=null==t?"":t}:null==n?function(){this.innerHTML=""}:function(){this.innerHTML=n}):this.node().innerHTML},ka.append=function(n){return n=D(n),this.select(function(){return this.appendChild(n.apply(this,arguments))})},ka.insert=function(n,t){return n=D(n),t=k(t),this.select(function(){return this.insertBefore(n.apply(this,arguments),t.apply(this,arguments)||null)})},ka.remove=function(){return this.each(P)},ka.data=function(n,t){function e(n,e){var r,u,i,o=n.length,f=e.length,h=Math.min(o,f),g=new Array(f),p=new Array(f),v=new Array(o);if(t){var d,m=new a,y=new Array(o);for(r=-1;++r<o;)m.has(d=t.call(u=n[r],u.__data__,r))?v[r]=u:m.set(d,u),y[r]=d;for(r=-1;++r<f;)(u=m.get(d=t.call(e,i=e[r],r)))?u!==!0&&(g[r]=u,u.__data__=i):p[r]=U(i),m.set(d,!0);for(r=-1;++r<o;)m.get(y[r])!==!0&&(v[r]=n[r])}else{for(r=-1;++r<h;)u=n[r],i=e[r],u?(u.__data__=i,g[r]=u):p[r]=U(i);for(;f>r;++r)p[r]=U(e[r]);for(;o>r;++r)v[r]=n[r]}p.update=g,p.parentNode=g.parentNode=v.parentNode=n.parentNode,c.push(p),l.push(g),s.push(v)}var r,u,i=-1,o=this.length;if(!arguments.length){for(n=new Array(o=(r=this[0]).length);++i<o;)(u=r[i])&&(n[i]=u.__data__);return n}var c=O([]),l=S([]),s=S([]);if("function"==typeof n)for(;++i<o;)e(r=this[i],n.call(r,r.parentNode.__data__,i));else for(;++i<o;)e(r=this[i],n);return l.enter=function(){return c},l.exit=function(){return s},l},ka.datum=function(n){return arguments.length?this.property("__data__",n):this.property("__data__")},ka.filter=function(n){var t,e,r,u=[];"function"!=typeof n&&(n=j(n));for(var i=0,o=this.length;o>i;i++){u.push(t=[]),t.parentNode=(e=this[i]).parentNode;for(var a=0,c=e.length;c>a;a++)(r=e[a])&&n.call(r,r.__data__,a,i)&&t.push(r)}return S(u)},ka.order=function(){for(var n=-1,t=this.length;++n<t;)for(var e,r=this[n],u=r.length-1,i=r[u];--u>=0;)(e=r[u])&&(i&&i!==e.nextSibling&&i.parentNode.insertBefore(e,i),i=e);return this},ka.sort=function(n){n=F.apply(this,arguments);for(var t=-1,e=this.length;++t<e;)this[t].sort(n);return this.order()},ka.each=function(n){return H(this,function(t,e,r){n.call(t,t.__data__,e,r)})},ka.call=function(n){var t=ra(arguments);return n.apply(t[0]=this,t),this},ka.empty=function(){return!this.node()},ka.node=function(){for(var n=0,t=this.length;t>n;n++)for(var e=this[n],r=0,u=e.length;u>r;r++){var i=e[r];if(i)return i}return null},ka.size=function(){var n=0;return H(this,function(){++n}),n};var Aa=[];ta.selection.enter=O,ta.selection.enter.prototype=Aa,Aa.append=ka.append,Aa.empty=ka.empty,Aa.node=ka.node,Aa.call=ka.call,Aa.size=ka.size,Aa.select=function(n){for(var t,e,r,u,i,o=[],a=-1,c=this.length;++a<c;){r=(u=this[a]).update,o.push(t=[]),t.parentNode=u.parentNode;for(var l=-1,s=u.length;++l<s;)(i=u[l])?(t.push(r[l]=e=n.call(u.parentNode,i.__data__,l,a)),e.__data__=i.__data__):t.push(null)}return S(o)},Aa.insert=function(n,t){return arguments.length<2&&(t=Y(this)),ka.insert.call(this,n,t)},ka.transition=function(n){for(var t,e,r=Dl||++Hl,u=Xo(n),i=[],o=Pl||{time:Date.now(),ease:ku,delay:0,duration:250},a=-1,c=this.length;++a<c;){i.push(t=[]);for(var l=this[a],s=-1,f=l.length;++s<f;)(e=l[s])&&$o(e,s,u,r,o),t.push(e)}return Io(i,u,r)},ka.interrupt=function(n){var t=Xo(n);return this.each(function(){var n=this[t];n&&++n.active})},ta.select=function(n){var t=["string"==typeof n?ba(n,ua):n];return t.parentNode=ia,S([t])},ta.selectAll=function(n){var t=ra("string"==typeof n?_a(n,ua):n);return t.parentNode=ia,S([t])};var Na=ta.select(ia);ka.on=function(n,t,e){var r=arguments.length;if(3>r){if("string"!=typeof n){2>r&&(t=!1);for(e in n)this.each(Z(e,n[e],t));return this}if(2>r)return(r=this.node()["__on"+n])&&r._;e=!1}return this.each(Z(n,t,e))};var Ca=ta.map({mouseenter:"mouseover",mouseleave:"mouseout"});Ca.forEach(function(n){"on"+n in ua&&Ca.remove(n)});var za="onselectstart"in ua?null:m(ia.style,"userSelect"),qa=0;ta.mouse=function(n){return B(n,_())};var La=/WebKit/.test(oa.navigator.userAgent)?-1:0;ta.touch=function(n,t,e){if(arguments.length<3&&(e=t,t=_().changedTouches),t)for(var r,u=0,i=t.length;i>u;++u)if((r=t[u]).identifier===e)return B(n,r)},ta.behavior.drag=function(){function n(){this.on("mousedown.drag",u).on("touchstart.drag",i)}function t(n,t,u,i,o){return function(){function a(){var n,e,r=t(h,v);r&&(n=r[0]-M[0],e=r[1]-M[1],p|=n|e,M=r,g({type:"drag",x:r[0]+l[0],y:r[1]+l[1],dx:n,dy:e}))}function c(){t(h,v)&&(m.on(i+d,null).on(o+d,null),y(p&&ta.event.target===f),g({type:"dragend"}))}var l,s=this,f=ta.event.target,h=s.parentNode,g=e.of(s,arguments),p=0,v=n(),d=".drag"+(null==v?"":"-"+v),m=ta.select(u()).on(i+d,a).on(o+d,c),y=$(),M=t(h,v);r?(l=r.apply(s,arguments),l=[l.x-M[0],l.y-M[1]]):l=[0,0],g({type:"dragstart"})}}var e=w(n,"drag","dragstart","dragend"),r=null,u=t(y,ta.mouse,G,"mousemove","mouseup"),i=t(W,ta.touch,J,"touchmove","touchend");return n.origin=function(t){return arguments.length?(r=t,n):r},ta.rebind(n,e,"on")},ta.touches=function(n,t){return arguments.length<2&&(t=_().touches),t?ra(t).map(function(t){var e=B(n,t);return e.identifier=t.identifier,e}):[]};var Ta=1e-6,Ra=Ta*Ta,Da=Math.PI,Pa=2*Da,Ua=Pa-Ta,ja=Da/2,Fa=Da/180,Ha=180/Da,Oa=Math.SQRT2,Ya=2,Ia=4;ta.interpolateZoom=function(n,t){function e(n){var t=n*y;if(m){var e=rt(v),o=i/(Ya*h)*(e*ut(Oa*t+v)-et(v));return[r+o*l,u+o*s,i*e/rt(Oa*t+v)]}return[r+n*l,u+n*s,i*Math.exp(Oa*t)]}var r=n[0],u=n[1],i=n[2],o=t[0],a=t[1],c=t[2],l=o-r,s=a-u,f=l*l+s*s,h=Math.sqrt(f),g=(c*c-i*i+Ia*f)/(2*i*Ya*h),p=(c*c-i*i-Ia*f)/(2*c*Ya*h),v=Math.log(Math.sqrt(g*g+1)-g),d=Math.log(Math.sqrt(p*p+1)-p),m=d-v,y=(m||Math.log(c/i))/Oa;return e.duration=1e3*y,e},ta.behavior.zoom=function(){function n(n){n.on(z,s).on(Xa+".zoom",h).on("dblclick.zoom",g).on(T,f)}function t(n){return[(n[0]-k.x)/k.k,(n[1]-k.y)/k.k]}function e(n){return[n[0]*k.k+k.x,n[1]*k.k+k.y]}function r(n){k.k=Math.max(A[0],Math.min(A[1],n))}function u(n,t){t=e(t),k.x+=n[0]-t[0],k.y+=n[1]-t[1]}function i(t,e,i,o){t.__chart__={x:k.x,y:k.y,k:k.k},r(Math.pow(2,o)),u(v=e,i),t=ta.select(t),N>0&&(t=t.transition().duration(N)),t.call(n.event)}function o(){x&&x.domain(M.range().map(function(n){return(n-k.x)/k.k}).map(M.invert)),S&&S.domain(_.range().map(function(n){return(n-k.y)/k.k}).map(_.invert))}function a(n){C++||n({type:"zoomstart"})}function c(n){o(),n({type:"zoom",scale:k.k,translate:[k.x,k.y]})}function l(n){--C||n({type:"zoomend"}),v=null}function s(){function n(){s=1,u(ta.mouse(r),h),c(o)}function e(){f.on(q,null).on(L,null),g(s&&ta.event.target===i),l(o)}var r=this,i=ta.event.target,o=R.of(r,arguments),s=0,f=ta.select(oa).on(q,n).on(L,e),h=t(ta.mouse(r)),g=$();I(r),a(o)}function f(){function n(){var n=ta.touches(p);return g=k.k,n.forEach(function(n){n.identifier in d&&(d[n.identifier]=t(n))}),n}function e(){var t=ta.event.target;ta.select(t).on(x,o).on(_,h),w.push(t);for(var e=ta.event.changedTouches,r=0,u=e.length;u>r;++r)d[e[r].identifier]=null;var a=n(),c=Date.now();if(1===a.length){if(500>c-y){var l=a[0];i(p,l,d[l.identifier],Math.floor(Math.log(k.k)/Math.LN2)+1),b()}y=c}else if(a.length>1){var l=a[0],s=a[1],f=l[0]-s[0],g=l[1]-s[1];m=f*f+g*g}}function o(){var n,t,e,i,o=ta.touches(p);I(p);for(var a=0,l=o.length;l>a;++a,i=null)if(e=o[a],i=d[e.identifier]){if(t)break;n=e,t=i}if(i){var s=(s=e[0]-n[0])*s+(s=e[1]-n[1])*s,f=m&&Math.sqrt(s/m);n=[(n[0]+e[0])/2,(n[1]+e[1])/2],t=[(t[0]+i[0])/2,(t[1]+i[1])/2],r(f*g)}y=null,u(n,t),c(v)}function h(){if(ta.event.touches.length){for(var t=ta.event.changedTouches,e=0,r=t.length;r>e;++e)delete d[t[e].identifier];for(var u in d)return void n()}ta.selectAll(w).on(M,null),S.on(z,s).on(T,f),E(),l(v)}var g,p=this,v=R.of(p,arguments),d={},m=0,M=".zoom-"+ta.event.changedTouches[0].identifier,x="touchmove"+M,_="touchend"+M,w=[],S=ta.select(p),E=$();e(),a(v),S.on(z,null).on(T,e)}function h(){var n=R.of(this,arguments);m?clearTimeout(m):(p=t(v=d||ta.mouse(this)),I(this),a(n)),m=setTimeout(function(){m=null,l(n)},50),b(),r(Math.pow(2,.002*Za())*k.k),u(v,p),c(n)}function g(){var n=ta.mouse(this),e=Math.log(k.k)/Math.LN2;i(this,n,t(n),ta.event.shiftKey?Math.ceil(e)-1:Math.floor(e)+1)}var p,v,d,m,y,M,x,_,S,k={x:0,y:0,k:1},E=[960,500],A=Va,N=250,C=0,z="mousedown.zoom",q="mousemove.zoom",L="mouseup.zoom",T="touchstart.zoom",R=w(n,"zoomstart","zoom","zoomend");return n.event=function(n){n.each(function(){var n=R.of(this,arguments),t=k;Dl?ta.select(this).transition().each("start.zoom",function(){k=this.__chart__||{x:0,y:0,k:1},a(n)}).tween("zoom:zoom",function(){var e=E[0],r=E[1],u=v?v[0]:e/2,i=v?v[1]:r/2,o=ta.interpolateZoom([(u-k.x)/k.k,(i-k.y)/k.k,e/k.k],[(u-t.x)/t.k,(i-t.y)/t.k,e/t.k]);return function(t){var r=o(t),a=e/r[2];this.__chart__=k={x:u-r[0]*a,y:i-r[1]*a,k:a},c(n)}}).each("interrupt.zoom",function(){l(n)}).each("end.zoom",function(){l(n)}):(this.__chart__=k,a(n),c(n),l(n))})},n.translate=function(t){return arguments.length?(k={x:+t[0],y:+t[1],k:k.k},o(),n):[k.x,k.y]},n.scale=function(t){return arguments.length?(k={x:k.x,y:k.y,k:+t},o(),n):k.k},n.scaleExtent=function(t){return arguments.length?(A=null==t?Va:[+t[0],+t[1]],n):A},n.center=function(t){return arguments.length?(d=t&&[+t[0],+t[1]],n):d},n.size=function(t){return arguments.length?(E=t&&[+t[0],+t[1]],n):E},n.duration=function(t){return arguments.length?(N=+t,n):N},n.x=function(t){return arguments.length?(x=t,M=t.copy(),k={x:0,y:0,k:1},n):x},n.y=function(t){return arguments.length?(S=t,_=t.copy(),k={x:0,y:0,k:1},n):S},ta.rebind(n,R,"on")};var Za,Va=[0,1/0],Xa="onwheel"in ua?(Za=function(){return-ta.event.deltaY*(ta.event.deltaMode?120:1)},"wheel"):"onmousewheel"in ua?(Za=function(){return ta.event.wheelDelta},"mousewheel"):(Za=function(){return-ta.event.detail},"MozMousePixelScroll");ta.color=ot,ot.prototype.toString=function(){return this.rgb()+""},ta.hsl=at;var $a=at.prototype=new ot;$a.brighter=function(n){return n=Math.pow(.7,arguments.length?n:1),new at(this.h,this.s,this.l/n)},$a.darker=function(n){return n=Math.pow(.7,arguments.length?n:1),new at(this.h,this.s,n*this.l)},$a.rgb=function(){return ct(this.h,this.s,this.l)},ta.hcl=lt;var Ba=lt.prototype=new ot;Ba.brighter=function(n){return new lt(this.h,this.c,Math.min(100,this.l+Wa*(arguments.length?n:1)))},Ba.darker=function(n){return new lt(this.h,this.c,Math.max(0,this.l-Wa*(arguments.length?n:1)))},Ba.rgb=function(){return st(this.h,this.c,this.l).rgb()},ta.lab=ft;var Wa=18,Ja=.95047,Ga=1,Ka=1.08883,Qa=ft.prototype=new ot;Qa.brighter=function(n){return new ft(Math.min(100,this.l+Wa*(arguments.length?n:1)),this.a,this.b)},Qa.darker=function(n){return new ft(Math.max(0,this.l-Wa*(arguments.length?n:1)),this.a,this.b)},Qa.rgb=function(){return ht(this.l,this.a,this.b)},ta.rgb=mt;var nc=mt.prototype=new ot;nc.brighter=function(n){n=Math.pow(.7,arguments.length?n:1);var t=this.r,e=this.g,r=this.b,u=30;return t||e||r?(t&&u>t&&(t=u),e&&u>e&&(e=u),r&&u>r&&(r=u),new mt(Math.min(255,t/n),Math.min(255,e/n),Math.min(255,r/n))):new mt(u,u,u)},nc.darker=function(n){return n=Math.pow(.7,arguments.length?n:1),new mt(n*this.r,n*this.g,n*this.b)},nc.hsl=function(){return _t(this.r,this.g,this.b)},nc.toString=function(){return"#"+xt(this.r)+xt(this.g)+xt(this.b)};var tc=ta.map({aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074});tc.forEach(function(n,t){tc.set(n,yt(t))}),ta.functor=Et,ta.xhr=Nt(At),ta.dsv=function(n,t){function e(n,e,i){arguments.length<3&&(i=e,e=null);var o=Ct(n,t,null==e?r:u(e),i);return o.row=function(n){return arguments.length?o.response(null==(e=n)?r:u(n)):e},o}function r(n){return e.parse(n.responseText)}function u(n){return function(t){return e.parse(t.responseText,n)}}function i(t){return t.map(o).join(n)}function o(n){return a.test(n)?'"'+n.replace(/\"/g,'""')+'"':n}var a=new RegExp('["'+n+"\n]"),c=n.charCodeAt(0);return e.parse=function(n,t){var r;return e.parseRows(n,function(n,e){if(r)return r(n,e-1);var u=new Function("d","return {"+n.map(function(n,t){return JSON.stringify(n)+": d["+t+"]"}).join(",")+"}");r=t?function(n,e){return t(u(n),e)}:u})},e.parseRows=function(n,t){function e(){if(s>=l)return o;if(u)return u=!1,i;var t=s;if(34===n.charCodeAt(t)){for(var e=t;e++<l;)if(34===n.charCodeAt(e)){if(34!==n.charCodeAt(e+1))break;++e}s=e+2;var r=n.charCodeAt(e+1);return 13===r?(u=!0,10===n.charCodeAt(e+2)&&++s):10===r&&(u=!0),n.slice(t+1,e).replace(/""/g,'"')}for(;l>s;){var r=n.charCodeAt(s++),a=1;if(10===r)u=!0;else if(13===r)u=!0,10===n.charCodeAt(s)&&(++s,++a);else if(r!==c)continue;return n.slice(t,s-a)}return n.slice(t)}for(var r,u,i={},o={},a=[],l=n.length,s=0,f=0;(r=e())!==o;){for(var h=[];r!==i&&r!==o;)h.push(r),r=e();t&&null==(h=t(h,f++))||a.push(h)}return a},e.format=function(t){if(Array.isArray(t[0]))return e.formatRows(t);var r=new v,u=[];return t.forEach(function(n){for(var t in n)r.has(t)||u.push(r.add(t))}),[u.map(o).join(n)].concat(t.map(function(t){return u.map(function(n){return o(t[n])}).join(n)})).join("\n")},e.formatRows=function(n){return n.map(i).join("\n")},e},ta.csv=ta.dsv(",","text/csv"),ta.tsv=ta.dsv(" ","text/tab-separated-values");var ec,rc,uc,ic,oc,ac=oa[m(oa,"requestAnimationFrame")]||function(n){setTimeout(n,17)};ta.timer=function(n,t,e){var r=arguments.length;2>r&&(t=0),3>r&&(e=Date.now());var u=e+t,i={c:n,t:u,f:!1,n:null};rc?rc.n=i:ec=i,rc=i,uc||(ic=clearTimeout(ic),uc=1,ac(Lt))},ta.timer.flush=function(){Tt(),Rt()},ta.round=function(n,t){return t?Math.round(n*(t=Math.pow(10,t)))/t:Math.round(n)};var cc=["y","z","a","f","p","n","\xb5","m","","k","M","G","T","P","E","Z","Y"].map(Pt);ta.formatPrefix=function(n,t){var e=0;return n&&(0>n&&(n*=-1),t&&(n=ta.round(n,Dt(n,t))),e=1+Math.floor(1e-12+Math.log(n)/Math.LN10),e=Math.max(-24,Math.min(24,3*Math.floor((e-1)/3)))),cc[8+e/3]};var lc=/(?:([^{])?([<>=^]))?([+\- ])?([$#])?(0)?(\d+)?(,)?(\.-?\d+)?([a-z%])?/i,sc=ta.map({b:function(n){return n.toString(2)},c:function(n){return String.fromCharCode(n)},o:function(n){return n.toString(8)},x:function(n){return n.toString(16)},X:function(n){return n.toString(16).toUpperCase()},g:function(n,t){return n.toPrecision(t)},e:function(n,t){return n.toExponential(t)},f:function(n,t){return n.toFixed(t)},r:function(n,t){return(n=ta.round(n,Dt(n,t))).toFixed(Math.max(0,Math.min(20,Dt(n*(1+1e-15),t))))}}),fc=ta.time={},hc=Date;Ft.prototype={getDate:function(){return this._.getUTCDate()},getDay:function(){return this._.getUTCDay()},getFullYear:function(){return this._.getUTCFullYear()},getHours:function(){return this._.getUTCHours()},getMilliseconds:function(){return this._.getUTCMilliseconds()},getMinutes:function(){return this._.getUTCMinutes()},getMonth:function(){return this._.getUTCMonth()},getSeconds:function(){return this._.getUTCSeconds()},getTime:function(){return this._.getTime()},getTimezoneOffset:function(){return 0},valueOf:function(){return this._.valueOf()},setDate:function(){gc.setUTCDate.apply(this._,arguments)},setDay:function(){gc.setUTCDay.apply(this._,arguments)},setFullYear:function(){gc.setUTCFullYear.apply(this._,arguments)},setHours:function(){gc.setUTCHours.apply(this._,arguments)},setMilliseconds:function(){gc.setUTCMilliseconds.apply(this._,arguments)},setMinutes:function(){gc.setUTCMinutes.apply(this._,arguments)},setMonth:function(){gc.setUTCMonth.apply(this._,arguments)},setSeconds:function(){gc.setUTCSeconds.apply(this._,arguments)},setTime:function(){gc.setTime.apply(this._,arguments)}};var gc=Date.prototype;fc.year=Ht(function(n){return n=fc.day(n),n.setMonth(0,1),n},function(n,t){n.setFullYear(n.getFullYear()+t)},function(n){return n.getFullYear()}),fc.years=fc.year.range,fc.years.utc=fc.year.utc.range,fc.day=Ht(function(n){var t=new hc(2e3,0);return t.setFullYear(n.getFullYear(),n.getMonth(),n.getDate()),t},function(n,t){n.setDate(n.getDate()+t)},function(n){return n.getDate()-1}),fc.days=fc.day.range,fc.days.utc=fc.day.utc.range,fc.dayOfYear=function(n){var t=fc.year(n);return Math.floor((n-t-6e4*(n.getTimezoneOffset()-t.getTimezoneOffset()))/864e5)},["sunday","monday","tuesday","wednesday","thursday","friday","saturday"].forEach(function(n,t){t=7-t;var e=fc[n]=Ht(function(n){return(n=fc.day(n)).setDate(n.getDate()-(n.getDay()+t)%7),n},function(n,t){n.setDate(n.getDate()+7*Math.floor(t))},function(n){var e=fc.year(n).getDay();return Math.floor((fc.dayOfYear(n)+(e+t)%7)/7)-(e!==t)});fc[n+"s"]=e.range,fc[n+"s"].utc=e.utc.range,fc[n+"OfYear"]=function(n){var e=fc.year(n).getDay();return Math.floor((fc.dayOfYear(n)+(e+t)%7)/7)}}),fc.week=fc.sunday,fc.weeks=fc.sunday.range,fc.weeks.utc=fc.sunday.utc.range,fc.weekOfYear=fc.sundayOfYear;var pc={"-":"",_:" ",0:"0"},vc=/^\s*\d+/,dc=/^%/;ta.locale=function(n){return{numberFormat:Ut(n),timeFormat:Yt(n)}};var mc=ta.locale({decimal:".",thousands:",",grouping:[3],currency:["$",""],dateTime:"%a %b %e %X %Y",date:"%m/%d/%Y",time:"%H:%M:%S",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});ta.format=mc.numberFormat,ta.geo={},le.prototype={s:0,t:0,add:function(n){se(n,this.t,yc),se(yc.s,this.s,this),this.s?this.t+=yc.t:this.s=yc.t},reset:function(){this.s=this.t=0},valueOf:function(){return this.s}};var yc=new le;ta.geo.stream=function(n,t){n&&Mc.hasOwnProperty(n.type)?Mc[n.type](n,t):fe(n,t)};var Mc={Feature:function(n,t){fe(n.geometry,t)},FeatureCollection:function(n,t){for(var e=n.features,r=-1,u=e.length;++r<u;)fe(e[r].geometry,t)}},xc={Sphere:function(n,t){t.sphere()},Point:function(n,t){n=n.coordinates,t.point(n[0],n[1],n[2])},MultiPoint:function(n,t){for(var e=n.coordinates,r=-1,u=e.length;++r<u;)n=e[r],t.point(n[0],n[1],n[2])},LineString:function(n,t){he(n.coordinates,t,0)},MultiLineString:function(n,t){for(var e=n.coordinates,r=-1,u=e.length;++r<u;)he(e[r],t,0)},Polygon:function(n,t){ge(n.coordinates,t)},MultiPolygon:function(n,t){for(var e=n.coordinates,r=-1,u=e.length;++r<u;)ge(e[r],t)
2308 },GeometryCollection:function(n,t){for(var e=n.geometries,r=-1,u=e.length;++r<u;)fe(e[r],t)}};ta.geo.area=function(n){return bc=0,ta.geo.stream(n,wc),bc};var bc,_c=new le,wc={sphere:function(){bc+=4*Da},point:y,lineStart:y,lineEnd:y,polygonStart:function(){_c.reset(),wc.lineStart=pe},polygonEnd:function(){var n=2*_c;bc+=0>n?4*Da+n:n,wc.lineStart=wc.lineEnd=wc.point=y}};ta.geo.bounds=function(){function n(n,t){M.push(x=[s=n,h=n]),f>t&&(f=t),t>g&&(g=t)}function t(t,e){var r=ve([t*Fa,e*Fa]);if(m){var u=me(m,r),i=[u[1],-u[0],0],o=me(i,u);xe(o),o=be(o);var c=t-p,l=c>0?1:-1,v=o[0]*Ha*l,d=va(c)>180;if(d^(v>l*p&&l*t>v)){var y=o[1]*Ha;y>g&&(g=y)}else if(v=(v+360)%360-180,d^(v>l*p&&l*t>v)){var y=-o[1]*Ha;f>y&&(f=y)}else f>e&&(f=e),e>g&&(g=e);d?p>t?a(s,t)>a(s,h)&&(h=t):a(t,h)>a(s,h)&&(s=t):h>=s?(s>t&&(s=t),t>h&&(h=t)):t>p?a(s,t)>a(s,h)&&(h=t):a(t,h)>a(s,h)&&(s=t)}else n(t,e);m=r,p=t}function e(){b.point=t}function r(){x[0]=s,x[1]=h,b.point=n,m=null}function u(n,e){if(m){var r=n-p;y+=va(r)>180?r+(r>0?360:-360):r}else v=n,d=e;wc.point(n,e),t(n,e)}function i(){wc.lineStart()}function o(){u(v,d),wc.lineEnd(),va(y)>Ta&&(s=-(h=180)),x[0]=s,x[1]=h,m=null}function a(n,t){return(t-=n)<0?t+360:t}function c(n,t){return n[0]-t[0]}function l(n,t){return t[0]<=t[1]?t[0]<=n&&n<=t[1]:n<t[0]||t[1]<n}var s,f,h,g,p,v,d,m,y,M,x,b={point:n,lineStart:e,lineEnd:r,polygonStart:function(){b.point=u,b.lineStart=i,b.lineEnd=o,y=0,wc.polygonStart()},polygonEnd:function(){wc.polygonEnd(),b.point=n,b.lineStart=e,b.lineEnd=r,0>_c?(s=-(h=180),f=-(g=90)):y>Ta?g=90:-Ta>y&&(f=-90),x[0]=s,x[1]=h}};return function(n){g=h=-(s=f=1/0),M=[],ta.geo.stream(n,b);var t=M.length;if(t){M.sort(c);for(var e,r=1,u=M[0],i=[u];t>r;++r)e=M[r],l(e[0],u)||l(e[1],u)?(a(u[0],e[1])>a(u[0],u[1])&&(u[1]=e[1]),a(e[0],u[1])>a(u[0],u[1])&&(u[0]=e[0])):i.push(u=e);for(var o,e,p=-1/0,t=i.length-1,r=0,u=i[t];t>=r;u=e,++r)e=i[r],(o=a(u[1],e[0]))>p&&(p=o,s=e[0],h=u[1])}return M=x=null,1/0===s||1/0===f?[[0/0,0/0],[0/0,0/0]]:[[s,f],[h,g]]}}(),ta.geo.centroid=function(n){Sc=kc=Ec=Ac=Nc=Cc=zc=qc=Lc=Tc=Rc=0,ta.geo.stream(n,Dc);var t=Lc,e=Tc,r=Rc,u=t*t+e*e+r*r;return Ra>u&&(t=Cc,e=zc,r=qc,Ta>kc&&(t=Ec,e=Ac,r=Nc),u=t*t+e*e+r*r,Ra>u)?[0/0,0/0]:[Math.atan2(e,t)*Ha,tt(r/Math.sqrt(u))*Ha]};var Sc,kc,Ec,Ac,Nc,Cc,zc,qc,Lc,Tc,Rc,Dc={sphere:y,point:we,lineStart:ke,lineEnd:Ee,polygonStart:function(){Dc.lineStart=Ae},polygonEnd:function(){Dc.lineStart=ke}},Pc=Te(Ce,Ue,Fe,[-Da,-Da/2]),Uc=1e9;ta.geo.clipExtent=function(){var n,t,e,r,u,i,o={stream:function(n){return u&&(u.valid=!1),u=i(n),u.valid=!0,u},extent:function(a){return arguments.length?(i=Ie(n=+a[0][0],t=+a[0][1],e=+a[1][0],r=+a[1][1]),u&&(u.valid=!1,u=null),o):[[n,t],[e,r]]}};return o.extent([[0,0],[960,500]])},(ta.geo.conicEqualArea=function(){return Ze(Ve)}).raw=Ve,ta.geo.albers=function(){return ta.geo.conicEqualArea().rotate([96,0]).center([-.6,38.7]).parallels([29.5,45.5]).scale(1070)},ta.geo.albersUsa=function(){function n(n){var i=n[0],o=n[1];return t=null,e(i,o),t||(r(i,o),t)||u(i,o),t}var t,e,r,u,i=ta.geo.albers(),o=ta.geo.conicEqualArea().rotate([154,0]).center([-2,58.5]).parallels([55,65]),a=ta.geo.conicEqualArea().rotate([157,0]).center([-3,19.9]).parallels([8,18]),c={point:function(n,e){t=[n,e]}};return n.invert=function(n){var t=i.scale(),e=i.translate(),r=(n[0]-e[0])/t,u=(n[1]-e[1])/t;return(u>=.12&&.234>u&&r>=-.425&&-.214>r?o:u>=.166&&.234>u&&r>=-.214&&-.115>r?a:i).invert(n)},n.stream=function(n){var t=i.stream(n),e=o.stream(n),r=a.stream(n);return{point:function(n,u){t.point(n,u),e.point(n,u),r.point(n,u)},sphere:function(){t.sphere(),e.sphere(),r.sphere()},lineStart:function(){t.lineStart(),e.lineStart(),r.lineStart()},lineEnd:function(){t.lineEnd(),e.lineEnd(),r.lineEnd()},polygonStart:function(){t.polygonStart(),e.polygonStart(),r.polygonStart()},polygonEnd:function(){t.polygonEnd(),e.polygonEnd(),r.polygonEnd()}}},n.precision=function(t){return arguments.length?(i.precision(t),o.precision(t),a.precision(t),n):i.precision()},n.scale=function(t){return arguments.length?(i.scale(t),o.scale(.35*t),a.scale(t),n.translate(i.translate())):i.scale()},n.translate=function(t){if(!arguments.length)return i.translate();var l=i.scale(),s=+t[0],f=+t[1];return e=i.translate(t).clipExtent([[s-.455*l,f-.238*l],[s+.455*l,f+.238*l]]).stream(c).point,r=o.translate([s-.307*l,f+.201*l]).clipExtent([[s-.425*l+Ta,f+.12*l+Ta],[s-.214*l-Ta,f+.234*l-Ta]]).stream(c).point,u=a.translate([s-.205*l,f+.212*l]).clipExtent([[s-.214*l+Ta,f+.166*l+Ta],[s-.115*l-Ta,f+.234*l-Ta]]).stream(c).point,n},n.scale(1070)};var jc,Fc,Hc,Oc,Yc,Ic,Zc={point:y,lineStart:y,lineEnd:y,polygonStart:function(){Fc=0,Zc.lineStart=Xe},polygonEnd:function(){Zc.lineStart=Zc.lineEnd=Zc.point=y,jc+=va(Fc/2)}},Vc={point:$e,lineStart:y,lineEnd:y,polygonStart:y,polygonEnd:y},Xc={point:Je,lineStart:Ge,lineEnd:Ke,polygonStart:function(){Xc.lineStart=Qe},polygonEnd:function(){Xc.point=Je,Xc.lineStart=Ge,Xc.lineEnd=Ke}};ta.geo.path=function(){function n(n){return n&&("function"==typeof a&&i.pointRadius(+a.apply(this,arguments)),o&&o.valid||(o=u(i)),ta.geo.stream(n,o)),i.result()}function t(){return o=null,n}var e,r,u,i,o,a=4.5;return n.area=function(n){return jc=0,ta.geo.stream(n,u(Zc)),jc},n.centroid=function(n){return Ec=Ac=Nc=Cc=zc=qc=Lc=Tc=Rc=0,ta.geo.stream(n,u(Xc)),Rc?[Lc/Rc,Tc/Rc]:qc?[Cc/qc,zc/qc]:Nc?[Ec/Nc,Ac/Nc]:[0/0,0/0]},n.bounds=function(n){return Yc=Ic=-(Hc=Oc=1/0),ta.geo.stream(n,u(Vc)),[[Hc,Oc],[Yc,Ic]]},n.projection=function(n){return arguments.length?(u=(e=n)?n.stream||er(n):At,t()):e},n.context=function(n){return arguments.length?(i=null==(r=n)?new Be:new nr(n),"function"!=typeof a&&i.pointRadius(a),t()):r},n.pointRadius=function(t){return arguments.length?(a="function"==typeof t?t:(i.pointRadius(+t),+t),n):a},n.projection(ta.geo.albersUsa()).context(null)},ta.geo.transform=function(n){return{stream:function(t){var e=new rr(t);for(var r in n)e[r]=n[r];return e}}},rr.prototype={point:function(n,t){this.stream.point(n,t)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}},ta.geo.projection=ir,ta.geo.projectionMutator=or,(ta.geo.equirectangular=function(){return ir(cr)}).raw=cr.invert=cr,ta.geo.rotation=function(n){function t(t){return t=n(t[0]*Fa,t[1]*Fa),t[0]*=Ha,t[1]*=Ha,t}return n=sr(n[0]%360*Fa,n[1]*Fa,n.length>2?n[2]*Fa:0),t.invert=function(t){return t=n.invert(t[0]*Fa,t[1]*Fa),t[0]*=Ha,t[1]*=Ha,t},t},lr.invert=cr,ta.geo.circle=function(){function n(){var n="function"==typeof r?r.apply(this,arguments):r,t=sr(-n[0]*Fa,-n[1]*Fa,0).invert,u=[];return e(null,null,1,{point:function(n,e){u.push(n=t(n,e)),n[0]*=Ha,n[1]*=Ha}}),{type:"Polygon",coordinates:[u]}}var t,e,r=[0,0],u=6;return n.origin=function(t){return arguments.length?(r=t,n):r},n.angle=function(r){return arguments.length?(e=pr((t=+r)*Fa,u*Fa),n):t},n.precision=function(r){return arguments.length?(e=pr(t*Fa,(u=+r)*Fa),n):u},n.angle(90)},ta.geo.distance=function(n,t){var e,r=(t[0]-n[0])*Fa,u=n[1]*Fa,i=t[1]*Fa,o=Math.sin(r),a=Math.cos(r),c=Math.sin(u),l=Math.cos(u),s=Math.sin(i),f=Math.cos(i);return Math.atan2(Math.sqrt((e=f*o)*e+(e=l*s-c*f*a)*e),c*s+l*f*a)},ta.geo.graticule=function(){function n(){return{type:"MultiLineString",coordinates:t()}}function t(){return ta.range(Math.ceil(i/d)*d,u,d).map(h).concat(ta.range(Math.ceil(l/m)*m,c,m).map(g)).concat(ta.range(Math.ceil(r/p)*p,e,p).filter(function(n){return va(n%d)>Ta}).map(s)).concat(ta.range(Math.ceil(a/v)*v,o,v).filter(function(n){return va(n%m)>Ta}).map(f))}var e,r,u,i,o,a,c,l,s,f,h,g,p=10,v=p,d=90,m=360,y=2.5;return n.lines=function(){return t().map(function(n){return{type:"LineString",coordinates:n}})},n.outline=function(){return{type:"Polygon",coordinates:[h(i).concat(g(c).slice(1),h(u).reverse().slice(1),g(l).reverse().slice(1))]}},n.extent=function(t){return arguments.length?n.majorExtent(t).minorExtent(t):n.minorExtent()},n.majorExtent=function(t){return arguments.length?(i=+t[0][0],u=+t[1][0],l=+t[0][1],c=+t[1][1],i>u&&(t=i,i=u,u=t),l>c&&(t=l,l=c,c=t),n.precision(y)):[[i,l],[u,c]]},n.minorExtent=function(t){return arguments.length?(r=+t[0][0],e=+t[1][0],a=+t[0][1],o=+t[1][1],r>e&&(t=r,r=e,e=t),a>o&&(t=a,a=o,o=t),n.precision(y)):[[r,a],[e,o]]},n.step=function(t){return arguments.length?n.majorStep(t).minorStep(t):n.minorStep()},n.majorStep=function(t){return arguments.length?(d=+t[0],m=+t[1],n):[d,m]},n.minorStep=function(t){return arguments.length?(p=+t[0],v=+t[1],n):[p,v]},n.precision=function(t){return arguments.length?(y=+t,s=dr(a,o,90),f=mr(r,e,y),h=dr(l,c,90),g=mr(i,u,y),n):y},n.majorExtent([[-180,-90+Ta],[180,90-Ta]]).minorExtent([[-180,-80-Ta],[180,80+Ta]])},ta.geo.greatArc=function(){function n(){return{type:"LineString",coordinates:[t||r.apply(this,arguments),e||u.apply(this,arguments)]}}var t,e,r=yr,u=Mr;return n.distance=function(){return ta.geo.distance(t||r.apply(this,arguments),e||u.apply(this,arguments))},n.source=function(e){return arguments.length?(r=e,t="function"==typeof e?null:e,n):r},n.target=function(t){return arguments.length?(u=t,e="function"==typeof t?null:t,n):u},n.precision=function(){return arguments.length?n:0},n},ta.geo.interpolate=function(n,t){return xr(n[0]*Fa,n[1]*Fa,t[0]*Fa,t[1]*Fa)},ta.geo.length=function(n){return $c=0,ta.geo.stream(n,Bc),$c};var $c,Bc={sphere:y,point:y,lineStart:br,lineEnd:y,polygonStart:y,polygonEnd:y},Wc=_r(function(n){return Math.sqrt(2/(1+n))},function(n){return 2*Math.asin(n/2)});(ta.geo.azimuthalEqualArea=function(){return ir(Wc)}).raw=Wc;var Jc=_r(function(n){var t=Math.acos(n);return t&&t/Math.sin(t)},At);(ta.geo.azimuthalEquidistant=function(){return ir(Jc)}).raw=Jc,(ta.geo.conicConformal=function(){return Ze(wr)}).raw=wr,(ta.geo.conicEquidistant=function(){return Ze(Sr)}).raw=Sr;var Gc=_r(function(n){return 1/n},Math.atan);(ta.geo.gnomonic=function(){return ir(Gc)}).raw=Gc,kr.invert=function(n,t){return[n,2*Math.atan(Math.exp(t))-ja]},(ta.geo.mercator=function(){return Er(kr)}).raw=kr;var Kc=_r(function(){return 1},Math.asin);(ta.geo.orthographic=function(){return ir(Kc)}).raw=Kc;var Qc=_r(function(n){return 1/(1+n)},function(n){return 2*Math.atan(n)});(ta.geo.stereographic=function(){return ir(Qc)}).raw=Qc,Ar.invert=function(n,t){return[-t,2*Math.atan(Math.exp(n))-ja]},(ta.geo.transverseMercator=function(){var n=Er(Ar),t=n.center,e=n.rotate;return n.center=function(n){return n?t([-n[1],n[0]]):(n=t(),[n[1],-n[0]])},n.rotate=function(n){return n?e([n[0],n[1],n.length>2?n[2]+90:90]):(n=e(),[n[0],n[1],n[2]-90])},e([0,0,90])}).raw=Ar,ta.geom={},ta.geom.hull=function(n){function t(n){if(n.length<3)return[];var t,u=Et(e),i=Et(r),o=n.length,a=[],c=[];for(t=0;o>t;t++)a.push([+u.call(this,n[t],t),+i.call(this,n[t],t),t]);for(a.sort(qr),t=0;o>t;t++)c.push([a[t][0],-a[t][1]]);var l=zr(a),s=zr(c),f=s[0]===l[0],h=s[s.length-1]===l[l.length-1],g=[];for(t=l.length-1;t>=0;--t)g.push(n[a[l[t]][2]]);for(t=+f;t<s.length-h;++t)g.push(n[a[s[t]][2]]);return g}var e=Nr,r=Cr;return arguments.length?t(n):(t.x=function(n){return arguments.length?(e=n,t):e},t.y=function(n){return arguments.length?(r=n,t):r},t)},ta.geom.polygon=function(n){return xa(n,nl),n};var nl=ta.geom.polygon.prototype=[];nl.area=function(){for(var n,t=-1,e=this.length,r=this[e-1],u=0;++t<e;)n=r,r=this[t],u+=n[1]*r[0]-n[0]*r[1];return.5*u},nl.centroid=function(n){var t,e,r=-1,u=this.length,i=0,o=0,a=this[u-1];for(arguments.length||(n=-1/(6*this.area()));++r<u;)t=a,a=this[r],e=t[0]*a[1]-a[0]*t[1],i+=(t[0]+a[0])*e,o+=(t[1]+a[1])*e;return[i*n,o*n]},nl.clip=function(n){for(var t,e,r,u,i,o,a=Rr(n),c=-1,l=this.length-Rr(this),s=this[l-1];++c<l;){for(t=n.slice(),n.length=0,u=this[c],i=t[(r=t.length-a)-1],e=-1;++e<r;)o=t[e],Lr(o,s,u)?(Lr(i,s,u)||n.push(Tr(i,o,s,u)),n.push(o)):Lr(i,s,u)&&n.push(Tr(i,o,s,u)),i=o;a&&n.push(n[0]),s=u}return n};var tl,el,rl,ul,il,ol=[],al=[];Yr.prototype.prepare=function(){for(var n,t=this.edges,e=t.length;e--;)n=t[e].edge,n.b&&n.a||t.splice(e,1);return t.sort(Zr),t.length},nu.prototype={start:function(){return this.edge.l===this.site?this.edge.a:this.edge.b},end:function(){return this.edge.l===this.site?this.edge.b:this.edge.a}},tu.prototype={insert:function(n,t){var e,r,u;if(n){if(t.P=n,t.N=n.N,n.N&&(n.N.P=t),n.N=t,n.R){for(n=n.R;n.L;)n=n.L;n.L=t}else n.R=t;e=n}else this._?(n=iu(this._),t.P=null,t.N=n,n.P=n.L=t,e=n):(t.P=t.N=null,this._=t,e=null);for(t.L=t.R=null,t.U=e,t.C=!0,n=t;e&&e.C;)r=e.U,e===r.L?(u=r.R,u&&u.C?(e.C=u.C=!1,r.C=!0,n=r):(n===e.R&&(ru(this,e),n=e,e=n.U),e.C=!1,r.C=!0,uu(this,r))):(u=r.L,u&&u.C?(e.C=u.C=!1,r.C=!0,n=r):(n===e.L&&(uu(this,e),n=e,e=n.U),e.C=!1,r.C=!0,ru(this,r))),e=n.U;this._.C=!1},remove:function(n){n.N&&(n.N.P=n.P),n.P&&(n.P.N=n.N),n.N=n.P=null;var t,e,r,u=n.U,i=n.L,o=n.R;if(e=i?o?iu(o):i:o,u?u.L===n?u.L=e:u.R=e:this._=e,i&&o?(r=e.C,e.C=n.C,e.L=i,i.U=e,e!==o?(u=e.U,e.U=n.U,n=e.R,u.L=n,e.R=o,o.U=e):(e.U=u,u=e,n=e.R)):(r=n.C,n=e),n&&(n.U=u),!r){if(n&&n.C)return n.C=!1,void 0;do{if(n===this._)break;if(n===u.L){if(t=u.R,t.C&&(t.C=!1,u.C=!0,ru(this,u),t=u.R),t.L&&t.L.C||t.R&&t.R.C){t.R&&t.R.C||(t.L.C=!1,t.C=!0,uu(this,t),t=u.R),t.C=u.C,u.C=t.R.C=!1,ru(this,u),n=this._;break}}else if(t=u.L,t.C&&(t.C=!1,u.C=!0,uu(this,u),t=u.L),t.L&&t.L.C||t.R&&t.R.C){t.L&&t.L.C||(t.R.C=!1,t.C=!0,ru(this,t),t=u.L),t.C=u.C,u.C=t.L.C=!1,uu(this,u),n=this._;break}t.C=!0,n=u,u=u.U}while(!n.C);n&&(n.C=!1)}}},ta.geom.voronoi=function(n){function t(n){var t=new Array(n.length),r=a[0][0],u=a[0][1],i=a[1][0],o=a[1][1];return ou(e(n),a).cells.forEach(function(e,a){var c=e.edges,l=e.site,s=t[a]=c.length?c.map(function(n){var t=n.start();return[t.x,t.y]}):l.x>=r&&l.x<=i&&l.y>=u&&l.y<=o?[[r,o],[i,o],[i,u],[r,u]]:[];s.point=n[a]}),t}function e(n){return n.map(function(n,t){return{x:Math.round(i(n,t)/Ta)*Ta,y:Math.round(o(n,t)/Ta)*Ta,i:t}})}var r=Nr,u=Cr,i=r,o=u,a=cl;return n?t(n):(t.links=function(n){return ou(e(n)).edges.filter(function(n){return n.l&&n.r}).map(function(t){return{source:n[t.l.i],target:n[t.r.i]}})},t.triangles=function(n){var t=[];return ou(e(n)).cells.forEach(function(e,r){for(var u,i,o=e.site,a=e.edges.sort(Zr),c=-1,l=a.length,s=a[l-1].edge,f=s.l===o?s.r:s.l;++c<l;)u=s,i=f,s=a[c].edge,f=s.l===o?s.r:s.l,r<i.i&&r<f.i&&cu(o,i,f)<0&&t.push([n[r],n[i.i],n[f.i]])}),t},t.x=function(n){return arguments.length?(i=Et(r=n),t):r},t.y=function(n){return arguments.length?(o=Et(u=n),t):u},t.clipExtent=function(n){return arguments.length?(a=null==n?cl:n,t):a===cl?null:a},t.size=function(n){return arguments.length?t.clipExtent(n&&[[0,0],n]):a===cl?null:a&&a[1]},t)};var cl=[[-1e6,-1e6],[1e6,1e6]];ta.geom.delaunay=function(n){return ta.geom.voronoi().triangles(n)},ta.geom.quadtree=function(n,t,e,r,u){function i(n){function i(n,t,e,r,u,i,o,a){if(!isNaN(e)&&!isNaN(r))if(n.leaf){var c=n.x,s=n.y;if(null!=c)if(va(c-e)+va(s-r)<.01)l(n,t,e,r,u,i,o,a);else{var f=n.point;n.x=n.y=n.point=null,l(n,f,c,s,u,i,o,a),l(n,t,e,r,u,i,o,a)}else n.x=e,n.y=r,n.point=t}else l(n,t,e,r,u,i,o,a)}function l(n,t,e,r,u,o,a,c){var l=.5*(u+a),s=.5*(o+c),f=e>=l,h=r>=s,g=h<<1|f;n.leaf=!1,n=n.nodes[g]||(n.nodes[g]=fu()),f?u=l:a=l,h?o=s:c=s,i(n,t,e,r,u,o,a,c)}var s,f,h,g,p,v,d,m,y,M=Et(a),x=Et(c);if(null!=t)v=t,d=e,m=r,y=u;else if(m=y=-(v=d=1/0),f=[],h=[],p=n.length,o)for(g=0;p>g;++g)s=n[g],s.x<v&&(v=s.x),s.y<d&&(d=s.y),s.x>m&&(m=s.x),s.y>y&&(y=s.y),f.push(s.x),h.push(s.y);else for(g=0;p>g;++g){var b=+M(s=n[g],g),_=+x(s,g);v>b&&(v=b),d>_&&(d=_),b>m&&(m=b),_>y&&(y=_),f.push(b),h.push(_)}var w=m-v,S=y-d;w>S?y=d+w:m=v+S;var k=fu();if(k.add=function(n){i(k,n,+M(n,++g),+x(n,g),v,d,m,y)},k.visit=function(n){hu(n,k,v,d,m,y)},k.find=function(n){return gu(k,n[0],n[1],v,d,m,y)},g=-1,null==t){for(;++g<p;)i(k,n[g],f[g],h[g],v,d,m,y);--g}else n.forEach(k.add);return f=h=n=s=null,k}var o,a=Nr,c=Cr;return(o=arguments.length)?(a=lu,c=su,3===o&&(u=e,r=t,e=t=0),i(n)):(i.x=function(n){return arguments.length?(a=n,i):a},i.y=function(n){return arguments.length?(c=n,i):c},i.extent=function(n){return arguments.length?(null==n?t=e=r=u=null:(t=+n[0][0],e=+n[0][1],r=+n[1][0],u=+n[1][1]),i):null==t?null:[[t,e],[r,u]]},i.size=function(n){return arguments.length?(null==n?t=e=r=u=null:(t=e=0,r=+n[0],u=+n[1]),i):null==t?null:[r-t,u-e]},i)},ta.interpolateRgb=pu,ta.interpolateObject=vu,ta.interpolateNumber=du,ta.interpolateString=mu;var ll=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,sl=new RegExp(ll.source,"g");ta.interpolate=yu,ta.interpolators=[function(n,t){var e=typeof t;return("string"===e?tc.has(t)||/^(#|rgb\(|hsl\()/.test(t)?pu:mu:t instanceof ot?pu:Array.isArray(t)?Mu:"object"===e&&isNaN(t)?vu:du)(n,t)}],ta.interpolateArray=Mu;var fl=function(){return At},hl=ta.map({linear:fl,poly:Eu,quad:function(){return wu},cubic:function(){return Su},sin:function(){return Au},exp:function(){return Nu},circle:function(){return Cu},elastic:zu,back:qu,bounce:function(){return Lu}}),gl=ta.map({"in":At,out:bu,"in-out":_u,"out-in":function(n){return _u(bu(n))}});ta.ease=function(n){var t=n.indexOf("-"),e=t>=0?n.slice(0,t):n,r=t>=0?n.slice(t+1):"in";return e=hl.get(e)||fl,r=gl.get(r)||At,xu(r(e.apply(null,ea.call(arguments,1))))},ta.interpolateHcl=Tu,ta.interpolateHsl=Ru,ta.interpolateLab=Du,ta.interpolateRound=Pu,ta.transform=function(n){var t=ua.createElementNS(ta.ns.prefix.svg,"g");return(ta.transform=function(n){if(null!=n){t.setAttribute("transform",n);var e=t.transform.baseVal.consolidate()}return new Uu(e?e.matrix:pl)})(n)},Uu.prototype.toString=function(){return"translate("+this.translate+")rotate("+this.rotate+")skewX("+this.skew+")scale("+this.scale+")"};var pl={a:1,b:0,c:0,d:1,e:0,f:0};ta.interpolateTransform=Ou,ta.layout={},ta.layout.bundle=function(){return function(n){for(var t=[],e=-1,r=n.length;++e<r;)t.push(Zu(n[e]));return t}},ta.layout.chord=function(){function n(){var n,l,f,h,g,p={},v=[],d=ta.range(i),m=[];for(e=[],r=[],n=0,h=-1;++h<i;){for(l=0,g=-1;++g<i;)l+=u[h][g];v.push(l),m.push(ta.range(i)),n+=l}for(o&&d.sort(function(n,t){return o(v[n],v[t])}),a&&m.forEach(function(n,t){n.sort(function(n,e){return a(u[t][n],u[t][e])})}),n=(Pa-s*i)/n,l=0,h=-1;++h<i;){for(f=l,g=-1;++g<i;){var y=d[h],M=m[y][g],x=u[y][M],b=l,_=l+=x*n;p[y+"-"+M]={index:y,subindex:M,startAngle:b,endAngle:_,value:x}}r[y]={index:y,startAngle:f,endAngle:l,value:(l-f)/n},l+=s}for(h=-1;++h<i;)for(g=h-1;++g<i;){var w=p[h+"-"+g],S=p[g+"-"+h];(w.value||S.value)&&e.push(w.value<S.value?{source:S,target:w}:{source:w,target:S})}c&&t()}function t(){e.sort(function(n,t){return c((n.source.value+n.target.value)/2,(t.source.value+t.target.value)/2)})}var e,r,u,i,o,a,c,l={},s=0;return l.matrix=function(n){return arguments.length?(i=(u=n)&&u.length,e=r=null,l):u},l.padding=function(n){return arguments.length?(s=n,e=r=null,l):s},l.sortGroups=function(n){return arguments.length?(o=n,e=r=null,l):o},l.sortSubgroups=function(n){return arguments.length?(a=n,e=null,l):a},l.sortChords=function(n){return arguments.length?(c=n,e&&t(),l):c},l.chords=function(){return e||n(),e},l.groups=function(){return r||n(),r},l},ta.layout.force=function(){function n(n){return function(t,e,r,u){if(t.point!==n){var i=t.cx-n.x,o=t.cy-n.y,a=u-e,c=i*i+o*o;if(c>a*a/d){if(p>c){var l=t.charge/c;n.px-=i*l,n.py-=o*l}return!0}if(t.point&&c&&p>c){var l=t.pointCharge/c;n.px-=i*l,n.py-=o*l}}return!t.charge}}function t(n){n.px=ta.event.x,n.py=ta.event.y,a.resume()}var e,r,u,i,o,a={},c=ta.dispatch("start","tick","end"),l=[1,1],s=.9,f=vl,h=dl,g=-30,p=ml,v=.1,d=.64,m=[],y=[];return a.tick=function(){if((r*=.99)<.005)return c.end({type:"end",alpha:r=0}),!0;var t,e,a,f,h,p,d,M,x,b=m.length,_=y.length;for(e=0;_>e;++e)a=y[e],f=a.source,h=a.target,M=h.x-f.x,x=h.y-f.y,(p=M*M+x*x)&&(p=r*i[e]*((p=Math.sqrt(p))-u[e])/p,M*=p,x*=p,h.x-=M*(d=f.weight/(h.weight+f.weight)),h.y-=x*d,f.x+=M*(d=1-d),f.y+=x*d);if((d=r*v)&&(M=l[0]/2,x=l[1]/2,e=-1,d))for(;++e<b;)a=m[e],a.x+=(M-a.x)*d,a.y+=(x-a.y)*d;if(g)for(Gu(t=ta.geom.quadtree(m),r,o),e=-1;++e<b;)(a=m[e]).fixed||t.visit(n(a));for(e=-1;++e<b;)a=m[e],a.fixed?(a.x=a.px,a.y=a.py):(a.x-=(a.px-(a.px=a.x))*s,a.y-=(a.py-(a.py=a.y))*s);c.tick({type:"tick",alpha:r})},a.nodes=function(n){return arguments.length?(m=n,a):m},a.links=function(n){return arguments.length?(y=n,a):y},a.size=function(n){return arguments.length?(l=n,a):l},a.linkDistance=function(n){return arguments.length?(f="function"==typeof n?n:+n,a):f},a.distance=a.linkDistance,a.linkStrength=function(n){return arguments.length?(h="function"==typeof n?n:+n,a):h},a.friction=function(n){return arguments.length?(s=+n,a):s},a.charge=function(n){return arguments.length?(g="function"==typeof n?n:+n,a):g},a.chargeDistance=function(n){return arguments.length?(p=n*n,a):Math.sqrt(p)},a.gravity=function(n){return arguments.length?(v=+n,a):v},a.theta=function(n){return arguments.length?(d=n*n,a):Math.sqrt(d)},a.alpha=function(n){return arguments.length?(n=+n,r?r=n>0?n:0:n>0&&(c.start({type:"start",alpha:r=n}),ta.timer(a.tick)),a):r},a.start=function(){function n(n,r){if(!e){for(e=new Array(c),a=0;c>a;++a)e[a]=[];for(a=0;l>a;++a){var u=y[a];e[u.source.index].push(u.target),e[u.target.index].push(u.source)}}for(var i,o=e[t],a=-1,l=o.length;++a<l;)if(!isNaN(i=o[a][n]))return i;return Math.random()*r}var t,e,r,c=m.length,s=y.length,p=l[0],v=l[1];for(t=0;c>t;++t)(r=m[t]).index=t,r.weight=0;for(t=0;s>t;++t)r=y[t],"number"==typeof r.source&&(r.source=m[r.source]),"number"==typeof r.target&&(r.target=m[r.target]),++r.source.weight,++r.target.weight;for(t=0;c>t;++t)r=m[t],isNaN(r.x)&&(r.x=n("x",p)),isNaN(r.y)&&(r.y=n("y",v)),isNaN(r.px)&&(r.px=r.x),isNaN(r.py)&&(r.py=r.y);if(u=[],"function"==typeof f)for(t=0;s>t;++t)u[t]=+f.call(this,y[t],t);else for(t=0;s>t;++t)u[t]=f;if(i=[],"function"==typeof h)for(t=0;s>t;++t)i[t]=+h.call(this,y[t],t);else for(t=0;s>t;++t)i[t]=h;if(o=[],"function"==typeof g)for(t=0;c>t;++t)o[t]=+g.call(this,m[t],t);else for(t=0;c>t;++t)o[t]=g;return a.resume()},a.resume=function(){return a.alpha(.1)},a.stop=function(){return a.alpha(0)},a.drag=function(){return e||(e=ta.behavior.drag().origin(At).on("dragstart.force",$u).on("drag.force",t).on("dragend.force",Bu)),arguments.length?(this.on("mouseover.force",Wu).on("mouseout.force",Ju).call(e),void 0):e},ta.rebind(a,c,"on")};var vl=20,dl=1,ml=1/0;ta.layout.hierarchy=function(){function n(u){var i,o=[u],a=[];for(u.depth=0;null!=(i=o.pop());)if(a.push(i),(l=e.call(n,i,i.depth))&&(c=l.length)){for(var c,l,s;--c>=0;)o.push(s=l[c]),s.parent=i,s.depth=i.depth+1;r&&(i.value=0),i.children=l}else r&&(i.value=+r.call(n,i,i.depth)||0),delete i.children;return ni(u,function(n){var e,u;t&&(e=n.children)&&e.sort(t),r&&(u=n.parent)&&(u.value+=n.value)}),a}var t=ri,e=ti,r=ei;return n.sort=function(e){return arguments.length?(t=e,n):t},n.children=function(t){return arguments.length?(e=t,n):e},n.value=function(t){return arguments.length?(r=t,n):r},n.revalue=function(t){return r&&(Qu(t,function(n){n.children&&(n.value=0)}),ni(t,function(t){var e;t.children||(t.value=+r.call(n,t,t.depth)||0),(e=t.parent)&&(e.value+=t.value)})),t},n},ta.layout.partition=function(){function n(t,e,r,u){var i=t.children;if(t.x=e,t.y=t.depth*u,t.dx=r,t.dy=u,i&&(o=i.length)){var o,a,c,l=-1;for(r=t.value?r/t.value:0;++l<o;)n(a=i[l],e,c=a.value*r,u),e+=c}}function t(n){var e=n.children,r=0;if(e&&(u=e.length))for(var u,i=-1;++i<u;)r=Math.max(r,t(e[i]));return 1+r}function e(e,i){var o=r.call(this,e,i);return n(o[0],0,u[0],u[1]/t(o[0])),o}var r=ta.layout.hierarchy(),u=[1,1];return e.size=function(n){return arguments.length?(u=n,e):u},Ku(e,r)},ta.layout.pie=function(){function n(o){var a,c=o.length,l=o.map(function(e,r){return+t.call(n,e,r)}),s=+("function"==typeof r?r.apply(this,arguments):r),f=("function"==typeof u?u.apply(this,arguments):u)-s,h=Math.min(Math.abs(f)/c,+("function"==typeof i?i.apply(this,arguments):i)),g=h*(0>f?-1:1),p=(f-c*g)/ta.sum(l),v=ta.range(c),d=[];return null!=e&&v.sort(e===yl?function(n,t){return l[t]-l[n]}:function(n,t){return e(o[n],o[t])}),v.forEach(function(n){d[n]={data:o[n],value:a=l[n],startAngle:s,endAngle:s+=a*p+g,padAngle:h}}),d}var t=Number,e=yl,r=0,u=Pa,i=0;return n.value=function(e){return arguments.length?(t=e,n):t},n.sort=function(t){return arguments.length?(e=t,n):e},n.startAngle=function(t){return arguments.length?(r=t,n):r},n.endAngle=function(t){return arguments.length?(u=t,n):u},n.padAngle=function(t){return arguments.length?(i=t,n):i},n};var yl={};ta.layout.stack=function(){function n(a,c){if(!(h=a.length))return a;var l=a.map(function(e,r){return t.call(n,e,r)}),s=l.map(function(t){return t.map(function(t,e){return[i.call(n,t,e),o.call(n,t,e)]})}),f=e.call(n,s,c);l=ta.permute(l,f),s=ta.permute(s,f);var h,g,p,v,d=r.call(n,s,c),m=l[0].length;for(p=0;m>p;++p)for(u.call(n,l[0][p],v=d[p],s[0][p][1]),g=1;h>g;++g)u.call(n,l[g][p],v+=s[g-1][p][1],s[g][p][1]);return a}var t=At,e=ci,r=li,u=ai,i=ii,o=oi;return n.values=function(e){return arguments.length?(t=e,n):t},n.order=function(t){return arguments.length?(e="function"==typeof t?t:Ml.get(t)||ci,n):e},n.offset=function(t){return arguments.length?(r="function"==typeof t?t:xl.get(t)||li,n):r},n.x=function(t){return arguments.length?(i=t,n):i},n.y=function(t){return arguments.length?(o=t,n):o},n.out=function(t){return arguments.length?(u=t,n):u},n};var Ml=ta.map({"inside-out":function(n){var t,e,r=n.length,u=n.map(si),i=n.map(fi),o=ta.range(r).sort(function(n,t){return u[n]-u[t]}),a=0,c=0,l=[],s=[];for(t=0;r>t;++t)e=o[t],c>a?(a+=i[e],l.push(e)):(c+=i[e],s.push(e));return s.reverse().concat(l)},reverse:function(n){return ta.range(n.length).reverse()},"default":ci}),xl=ta.map({silhouette:function(n){var t,e,r,u=n.length,i=n[0].length,o=[],a=0,c=[];for(e=0;i>e;++e){for(t=0,r=0;u>t;t++)r+=n[t][e][1];r>a&&(a=r),o.push(r)}for(e=0;i>e;++e)c[e]=(a-o[e])/2;return c},wiggle:function(n){var t,e,r,u,i,o,a,c,l,s=n.length,f=n[0],h=f.length,g=[];for(g[0]=c=l=0,e=1;h>e;++e){for(t=0,u=0;s>t;++t)u+=n[t][e][1];for(t=0,i=0,a=f[e][0]-f[e-1][0];s>t;++t){for(r=0,o=(n[t][e][1]-n[t][e-1][1])/(2*a);t>r;++r)o+=(n[r][e][1]-n[r][e-1][1])/a;i+=o*n[t][e][1]}g[e]=c-=u?i/u*a:0,l>c&&(l=c)}for(e=0;h>e;++e)g[e]-=l;return g},expand:function(n){var t,e,r,u=n.length,i=n[0].length,o=1/u,a=[];for(e=0;i>e;++e){for(t=0,r=0;u>t;t++)r+=n[t][e][1];if(r)for(t=0;u>t;t++)n[t][e][1]/=r;else for(t=0;u>t;t++)n[t][e][1]=o}for(e=0;i>e;++e)a[e]=0;return a},zero:li});ta.layout.histogram=function(){function n(n,i){for(var o,a,c=[],l=n.map(e,this),s=r.call(this,l,i),f=u.call(this,s,l,i),i=-1,h=l.length,g=f.length-1,p=t?1:1/h;++i<g;)o=c[i]=[],o.dx=f[i+1]-(o.x=f[i]),o.y=0;if(g>0)for(i=-1;++i<h;)a=l[i],a>=s[0]&&a<=s[1]&&(o=c[ta.bisect(f,a,1,g)-1],o.y+=p,o.push(n[i]));return c}var t=!0,e=Number,r=vi,u=gi;return n.value=function(t){return arguments.length?(e=t,n):e},n.range=function(t){return arguments.length?(r=Et(t),n):r},n.bins=function(t){return arguments.length?(u="number"==typeof t?function(n){return pi(n,t)}:Et(t),n):u},n.frequency=function(e){return arguments.length?(t=!!e,n):t},n},ta.layout.pack=function(){function n(n,i){var o=e.call(this,n,i),a=o[0],c=u[0],l=u[1],s=null==t?Math.sqrt:"function"==typeof t?t:function(){return t};if(a.x=a.y=0,ni(a,function(n){n.r=+s(n.value)}),ni(a,xi),r){var f=r*(t?1:Math.max(2*a.r/c,2*a.r/l))/2;ni(a,function(n){n.r+=f}),ni(a,xi),ni(a,function(n){n.r-=f})}return wi(a,c/2,l/2,t?1:1/Math.max(2*a.r/c,2*a.r/l)),o}var t,e=ta.layout.hierarchy().sort(di),r=0,u=[1,1];return n.size=function(t){return arguments.length?(u=t,n):u},n.radius=function(e){return arguments.length?(t=null==e||"function"==typeof e?e:+e,n):t},n.padding=function(t){return arguments.length?(r=+t,n):r},Ku(n,e)},ta.layout.tree=function(){function n(n,u){var s=o.call(this,n,u),f=s[0],h=t(f);if(ni(h,e),h.parent.m=-h.z,Qu(h,r),l)Qu(f,i);else{var g=f,p=f,v=f;Qu(f,function(n){n.x<g.x&&(g=n),n.x>p.x&&(p=n),n.depth>v.depth&&(v=n)});var d=a(g,p)/2-g.x,m=c[0]/(p.x+a(p,g)/2+d),y=c[1]/(v.depth||1);Qu(f,function(n){n.x=(n.x+d)*m,n.y=n.depth*y})}return s}function t(n){for(var t,e={A:null,children:[n]},r=[e];null!=(t=r.pop());)for(var u,i=t.children,o=0,a=i.length;a>o;++o)r.push((i[o]=u={_:i[o],parent:t,children:(u=i[o].children)&&u.slice()||[],A:null,a:null,z:0,m:0,c:0,s:0,t:null,i:o}).a=u);return e.children[0]}function e(n){var t=n.children,e=n.parent.children,r=n.i?e[n.i-1]:null;if(t.length){Ci(n);var i=(t[0].z+t[t.length-1].z)/2;r?(n.z=r.z+a(n._,r._),n.m=n.z-i):n.z=i}else r&&(n.z=r.z+a(n._,r._));n.parent.A=u(n,r,n.parent.A||e[0])}function r(n){n._.x=n.z+n.parent.m,n.m+=n.parent.m}function u(n,t,e){if(t){for(var r,u=n,i=n,o=t,c=u.parent.children[0],l=u.m,s=i.m,f=o.m,h=c.m;o=Ai(o),u=Ei(u),o&&u;)c=Ei(c),i=Ai(i),i.a=n,r=o.z+f-u.z-l+a(o._,u._),r>0&&(Ni(zi(o,n,e),n,r),l+=r,s+=r),f+=o.m,l+=u.m,h+=c.m,s+=i.m;o&&!Ai(i)&&(i.t=o,i.m+=f-s),u&&!Ei(c)&&(c.t=u,c.m+=l-h,e=n)}return e}function i(n){n.x*=c[0],n.y=n.depth*c[1]}var o=ta.layout.hierarchy().sort(null).value(null),a=ki,c=[1,1],l=null;return n.separation=function(t){return arguments.length?(a=t,n):a},n.size=function(t){return arguments.length?(l=null==(c=t)?i:null,n):l?null:c},n.nodeSize=function(t){return arguments.length?(l=null==(c=t)?null:i,n):l?c:null},Ku(n,o)},ta.layout.cluster=function(){function n(n,i){var o,a=t.call(this,n,i),c=a[0],l=0;ni(c,function(n){var t=n.children;t&&t.length?(n.x=Li(t),n.y=qi(t)):(n.x=o?l+=e(n,o):0,n.y=0,o=n)});var s=Ti(c),f=Ri(c),h=s.x-e(s,f)/2,g=f.x+e(f,s)/2;return ni(c,u?function(n){n.x=(n.x-c.x)*r[0],n.y=(c.y-n.y)*r[1]}:function(n){n.x=(n.x-h)/(g-h)*r[0],n.y=(1-(c.y?n.y/c.y:1))*r[1]}),a}var t=ta.layout.hierarchy().sort(null).value(null),e=ki,r=[1,1],u=!1;return n.separation=function(t){return arguments.length?(e=t,n):e},n.size=function(t){return arguments.length?(u=null==(r=t),n):u?null:r},n.nodeSize=function(t){return arguments.length?(u=null!=(r=t),n):u?r:null},Ku(n,t)},ta.layout.treemap=function(){function n(n,t){for(var e,r,u=-1,i=n.length;++u<i;)r=(e=n[u]).value*(0>t?0:t),e.area=isNaN(r)||0>=r?0:r}function t(e){var i=e.children;if(i&&i.length){var o,a,c,l=f(e),s=[],h=i.slice(),p=1/0,v="slice"===g?l.dx:"dice"===g?l.dy:"slice-dice"===g?1&e.depth?l.dy:l.dx:Math.min(l.dx,l.dy);for(n(h,l.dx*l.dy/e.value),s.area=0;(c=h.length)>0;)s.push(o=h[c-1]),s.area+=o.area,"squarify"!==g||(a=r(s,v))<=p?(h.pop(),p=a):(s.area-=s.pop().area,u(s,v,l,!1),v=Math.min(l.dx,l.dy),s.length=s.area=0,p=1/0);s.length&&(u(s,v,l,!0),s.length=s.area=0),i.forEach(t)}}function e(t){var r=t.children;if(r&&r.length){var i,o=f(t),a=r.slice(),c=[];for(n(a,o.dx*o.dy/t.value),c.area=0;i=a.pop();)c.push(i),c.area+=i.area,null!=i.z&&(u(c,i.z?o.dx:o.dy,o,!a.length),c.length=c.area=0);r.forEach(e)}}function r(n,t){for(var e,r=n.area,u=0,i=1/0,o=-1,a=n.length;++o<a;)(e=n[o].area)&&(i>e&&(i=e),e>u&&(u=e));return r*=r,t*=t,r?Math.max(t*u*p/r,r/(t*i*p)):1/0}function u(n,t,e,r){var u,i=-1,o=n.length,a=e.x,l=e.y,s=t?c(n.area/t):0;if(t==e.dx){for((r||s>e.dy)&&(s=e.dy);++i<o;)u=n[i],u.x=a,u.y=l,u.dy=s,a+=u.dx=Math.min(e.x+e.dx-a,s?c(u.area/s):0);u.z=!0,u.dx+=e.x+e.dx-a,e.y+=s,e.dy-=s}else{for((r||s>e.dx)&&(s=e.dx);++i<o;)u=n[i],u.x=a,u.y=l,u.dx=s,l+=u.dy=Math.min(e.y+e.dy-l,s?c(u.area/s):0);u.z=!1,u.dy+=e.y+e.dy-l,e.x+=s,e.dx-=s}}function i(r){var u=o||a(r),i=u[0];return i.x=0,i.y=0,i.dx=l[0],i.dy=l[1],o&&a.revalue(i),n([i],i.dx*i.dy/i.value),(o?e:t)(i),h&&(o=u),u}var o,a=ta.layout.hierarchy(),c=Math.round,l=[1,1],s=null,f=Di,h=!1,g="squarify",p=.5*(1+Math.sqrt(5));return i.size=function(n){return arguments.length?(l=n,i):l},i.padding=function(n){function t(t){var e=n.call(i,t,t.depth);return null==e?Di(t):Pi(t,"number"==typeof e?[e,e,e,e]:e)}function e(t){return Pi(t,n)}if(!arguments.length)return s;var r;return f=null==(s=n)?Di:"function"==(r=typeof n)?t:"number"===r?(n=[n,n,n,n],e):e,i},i.round=function(n){return arguments.length?(c=n?Math.round:Number,i):c!=Number},i.sticky=function(n){return arguments.length?(h=n,o=null,i):h},i.ratio=function(n){return arguments.length?(p=n,i):p},i.mode=function(n){return arguments.length?(g=n+"",i):g},Ku(i,a)},ta.random={normal:function(n,t){var e=arguments.length;return 2>e&&(t=1),1>e&&(n=0),function(){var e,r,u;
2308 },GeometryCollection:function(n,t){for(var e=n.geometries,r=-1,u=e.length;++r<u;)fe(e[r],t)}};ta.geo.area=function(n){return bc=0,ta.geo.stream(n,wc),bc};var bc,_c=new le,wc={sphere:function(){bc+=4*Da},point:y,lineStart:y,lineEnd:y,polygonStart:function(){_c.reset(),wc.lineStart=pe},polygonEnd:function(){var n=2*_c;bc+=0>n?4*Da+n:n,wc.lineStart=wc.lineEnd=wc.point=y}};ta.geo.bounds=function(){function n(n,t){M.push(x=[s=n,h=n]),f>t&&(f=t),t>g&&(g=t)}function t(t,e){var r=ve([t*Fa,e*Fa]);if(m){var u=me(m,r),i=[u[1],-u[0],0],o=me(i,u);xe(o),o=be(o);var c=t-p,l=c>0?1:-1,v=o[0]*Ha*l,d=va(c)>180;if(d^(v>l*p&&l*t>v)){var y=o[1]*Ha;y>g&&(g=y)}else if(v=(v+360)%360-180,d^(v>l*p&&l*t>v)){var y=-o[1]*Ha;f>y&&(f=y)}else f>e&&(f=e),e>g&&(g=e);d?p>t?a(s,t)>a(s,h)&&(h=t):a(t,h)>a(s,h)&&(s=t):h>=s?(s>t&&(s=t),t>h&&(h=t)):t>p?a(s,t)>a(s,h)&&(h=t):a(t,h)>a(s,h)&&(s=t)}else n(t,e);m=r,p=t}function e(){b.point=t}function r(){x[0]=s,x[1]=h,b.point=n,m=null}function u(n,e){if(m){var r=n-p;y+=va(r)>180?r+(r>0?360:-360):r}else v=n,d=e;wc.point(n,e),t(n,e)}function i(){wc.lineStart()}function o(){u(v,d),wc.lineEnd(),va(y)>Ta&&(s=-(h=180)),x[0]=s,x[1]=h,m=null}function a(n,t){return(t-=n)<0?t+360:t}function c(n,t){return n[0]-t[0]}function l(n,t){return t[0]<=t[1]?t[0]<=n&&n<=t[1]:n<t[0]||t[1]<n}var s,f,h,g,p,v,d,m,y,M,x,b={point:n,lineStart:e,lineEnd:r,polygonStart:function(){b.point=u,b.lineStart=i,b.lineEnd=o,y=0,wc.polygonStart()},polygonEnd:function(){wc.polygonEnd(),b.point=n,b.lineStart=e,b.lineEnd=r,0>_c?(s=-(h=180),f=-(g=90)):y>Ta?g=90:-Ta>y&&(f=-90),x[0]=s,x[1]=h}};return function(n){g=h=-(s=f=1/0),M=[],ta.geo.stream(n,b);var t=M.length;if(t){M.sort(c);for(var e,r=1,u=M[0],i=[u];t>r;++r)e=M[r],l(e[0],u)||l(e[1],u)?(a(u[0],e[1])>a(u[0],u[1])&&(u[1]=e[1]),a(e[0],u[1])>a(u[0],u[1])&&(u[0]=e[0])):i.push(u=e);for(var o,e,p=-1/0,t=i.length-1,r=0,u=i[t];t>=r;u=e,++r)e=i[r],(o=a(u[1],e[0]))>p&&(p=o,s=e[0],h=u[1])}return M=x=null,1/0===s||1/0===f?[[0/0,0/0],[0/0,0/0]]:[[s,f],[h,g]]}}(),ta.geo.centroid=function(n){Sc=kc=Ec=Ac=Nc=Cc=zc=qc=Lc=Tc=Rc=0,ta.geo.stream(n,Dc);var t=Lc,e=Tc,r=Rc,u=t*t+e*e+r*r;return Ra>u&&(t=Cc,e=zc,r=qc,Ta>kc&&(t=Ec,e=Ac,r=Nc),u=t*t+e*e+r*r,Ra>u)?[0/0,0/0]:[Math.atan2(e,t)*Ha,tt(r/Math.sqrt(u))*Ha]};var Sc,kc,Ec,Ac,Nc,Cc,zc,qc,Lc,Tc,Rc,Dc={sphere:y,point:we,lineStart:ke,lineEnd:Ee,polygonStart:function(){Dc.lineStart=Ae},polygonEnd:function(){Dc.lineStart=ke}},Pc=Te(Ce,Ue,Fe,[-Da,-Da/2]),Uc=1e9;ta.geo.clipExtent=function(){var n,t,e,r,u,i,o={stream:function(n){return u&&(u.valid=!1),u=i(n),u.valid=!0,u},extent:function(a){return arguments.length?(i=Ie(n=+a[0][0],t=+a[0][1],e=+a[1][0],r=+a[1][1]),u&&(u.valid=!1,u=null),o):[[n,t],[e,r]]}};return o.extent([[0,0],[960,500]])},(ta.geo.conicEqualArea=function(){return Ze(Ve)}).raw=Ve,ta.geo.albers=function(){return ta.geo.conicEqualArea().rotate([96,0]).center([-.6,38.7]).parallels([29.5,45.5]).scale(1070)},ta.geo.albersUsa=function(){function n(n){var i=n[0],o=n[1];return t=null,e(i,o),t||(r(i,o),t)||u(i,o),t}var t,e,r,u,i=ta.geo.albers(),o=ta.geo.conicEqualArea().rotate([154,0]).center([-2,58.5]).parallels([55,65]),a=ta.geo.conicEqualArea().rotate([157,0]).center([-3,19.9]).parallels([8,18]),c={point:function(n,e){t=[n,e]}};return n.invert=function(n){var t=i.scale(),e=i.translate(),r=(n[0]-e[0])/t,u=(n[1]-e[1])/t;return(u>=.12&&.234>u&&r>=-.425&&-.214>r?o:u>=.166&&.234>u&&r>=-.214&&-.115>r?a:i).invert(n)},n.stream=function(n){var t=i.stream(n),e=o.stream(n),r=a.stream(n);return{point:function(n,u){t.point(n,u),e.point(n,u),r.point(n,u)},sphere:function(){t.sphere(),e.sphere(),r.sphere()},lineStart:function(){t.lineStart(),e.lineStart(),r.lineStart()},lineEnd:function(){t.lineEnd(),e.lineEnd(),r.lineEnd()},polygonStart:function(){t.polygonStart(),e.polygonStart(),r.polygonStart()},polygonEnd:function(){t.polygonEnd(),e.polygonEnd(),r.polygonEnd()}}},n.precision=function(t){return arguments.length?(i.precision(t),o.precision(t),a.precision(t),n):i.precision()},n.scale=function(t){return arguments.length?(i.scale(t),o.scale(.35*t),a.scale(t),n.translate(i.translate())):i.scale()},n.translate=function(t){if(!arguments.length)return i.translate();var l=i.scale(),s=+t[0],f=+t[1];return e=i.translate(t).clipExtent([[s-.455*l,f-.238*l],[s+.455*l,f+.238*l]]).stream(c).point,r=o.translate([s-.307*l,f+.201*l]).clipExtent([[s-.425*l+Ta,f+.12*l+Ta],[s-.214*l-Ta,f+.234*l-Ta]]).stream(c).point,u=a.translate([s-.205*l,f+.212*l]).clipExtent([[s-.214*l+Ta,f+.166*l+Ta],[s-.115*l-Ta,f+.234*l-Ta]]).stream(c).point,n},n.scale(1070)};var jc,Fc,Hc,Oc,Yc,Ic,Zc={point:y,lineStart:y,lineEnd:y,polygonStart:function(){Fc=0,Zc.lineStart=Xe},polygonEnd:function(){Zc.lineStart=Zc.lineEnd=Zc.point=y,jc+=va(Fc/2)}},Vc={point:$e,lineStart:y,lineEnd:y,polygonStart:y,polygonEnd:y},Xc={point:Je,lineStart:Ge,lineEnd:Ke,polygonStart:function(){Xc.lineStart=Qe},polygonEnd:function(){Xc.point=Je,Xc.lineStart=Ge,Xc.lineEnd=Ke}};ta.geo.path=function(){function n(n){return n&&("function"==typeof a&&i.pointRadius(+a.apply(this,arguments)),o&&o.valid||(o=u(i)),ta.geo.stream(n,o)),i.result()}function t(){return o=null,n}var e,r,u,i,o,a=4.5;return n.area=function(n){return jc=0,ta.geo.stream(n,u(Zc)),jc},n.centroid=function(n){return Ec=Ac=Nc=Cc=zc=qc=Lc=Tc=Rc=0,ta.geo.stream(n,u(Xc)),Rc?[Lc/Rc,Tc/Rc]:qc?[Cc/qc,zc/qc]:Nc?[Ec/Nc,Ac/Nc]:[0/0,0/0]},n.bounds=function(n){return Yc=Ic=-(Hc=Oc=1/0),ta.geo.stream(n,u(Vc)),[[Hc,Oc],[Yc,Ic]]},n.projection=function(n){return arguments.length?(u=(e=n)?n.stream||er(n):At,t()):e},n.context=function(n){return arguments.length?(i=null==(r=n)?new Be:new nr(n),"function"!=typeof a&&i.pointRadius(a),t()):r},n.pointRadius=function(t){return arguments.length?(a="function"==typeof t?t:(i.pointRadius(+t),+t),n):a},n.projection(ta.geo.albersUsa()).context(null)},ta.geo.transform=function(n){return{stream:function(t){var e=new rr(t);for(var r in n)e[r]=n[r];return e}}},rr.prototype={point:function(n,t){this.stream.point(n,t)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}},ta.geo.projection=ir,ta.geo.projectionMutator=or,(ta.geo.equirectangular=function(){return ir(cr)}).raw=cr.invert=cr,ta.geo.rotation=function(n){function t(t){return t=n(t[0]*Fa,t[1]*Fa),t[0]*=Ha,t[1]*=Ha,t}return n=sr(n[0]%360*Fa,n[1]*Fa,n.length>2?n[2]*Fa:0),t.invert=function(t){return t=n.invert(t[0]*Fa,t[1]*Fa),t[0]*=Ha,t[1]*=Ha,t},t},lr.invert=cr,ta.geo.circle=function(){function n(){var n="function"==typeof r?r.apply(this,arguments):r,t=sr(-n[0]*Fa,-n[1]*Fa,0).invert,u=[];return e(null,null,1,{point:function(n,e){u.push(n=t(n,e)),n[0]*=Ha,n[1]*=Ha}}),{type:"Polygon",coordinates:[u]}}var t,e,r=[0,0],u=6;return n.origin=function(t){return arguments.length?(r=t,n):r},n.angle=function(r){return arguments.length?(e=pr((t=+r)*Fa,u*Fa),n):t},n.precision=function(r){return arguments.length?(e=pr(t*Fa,(u=+r)*Fa),n):u},n.angle(90)},ta.geo.distance=function(n,t){var e,r=(t[0]-n[0])*Fa,u=n[1]*Fa,i=t[1]*Fa,o=Math.sin(r),a=Math.cos(r),c=Math.sin(u),l=Math.cos(u),s=Math.sin(i),f=Math.cos(i);return Math.atan2(Math.sqrt((e=f*o)*e+(e=l*s-c*f*a)*e),c*s+l*f*a)},ta.geo.graticule=function(){function n(){return{type:"MultiLineString",coordinates:t()}}function t(){return ta.range(Math.ceil(i/d)*d,u,d).map(h).concat(ta.range(Math.ceil(l/m)*m,c,m).map(g)).concat(ta.range(Math.ceil(r/p)*p,e,p).filter(function(n){return va(n%d)>Ta}).map(s)).concat(ta.range(Math.ceil(a/v)*v,o,v).filter(function(n){return va(n%m)>Ta}).map(f))}var e,r,u,i,o,a,c,l,s,f,h,g,p=10,v=p,d=90,m=360,y=2.5;return n.lines=function(){return t().map(function(n){return{type:"LineString",coordinates:n}})},n.outline=function(){return{type:"Polygon",coordinates:[h(i).concat(g(c).slice(1),h(u).reverse().slice(1),g(l).reverse().slice(1))]}},n.extent=function(t){return arguments.length?n.majorExtent(t).minorExtent(t):n.minorExtent()},n.majorExtent=function(t){return arguments.length?(i=+t[0][0],u=+t[1][0],l=+t[0][1],c=+t[1][1],i>u&&(t=i,i=u,u=t),l>c&&(t=l,l=c,c=t),n.precision(y)):[[i,l],[u,c]]},n.minorExtent=function(t){return arguments.length?(r=+t[0][0],e=+t[1][0],a=+t[0][1],o=+t[1][1],r>e&&(t=r,r=e,e=t),a>o&&(t=a,a=o,o=t),n.precision(y)):[[r,a],[e,o]]},n.step=function(t){return arguments.length?n.majorStep(t).minorStep(t):n.minorStep()},n.majorStep=function(t){return arguments.length?(d=+t[0],m=+t[1],n):[d,m]},n.minorStep=function(t){return arguments.length?(p=+t[0],v=+t[1],n):[p,v]},n.precision=function(t){return arguments.length?(y=+t,s=dr(a,o,90),f=mr(r,e,y),h=dr(l,c,90),g=mr(i,u,y),n):y},n.majorExtent([[-180,-90+Ta],[180,90-Ta]]).minorExtent([[-180,-80-Ta],[180,80+Ta]])},ta.geo.greatArc=function(){function n(){return{type:"LineString",coordinates:[t||r.apply(this,arguments),e||u.apply(this,arguments)]}}var t,e,r=yr,u=Mr;return n.distance=function(){return ta.geo.distance(t||r.apply(this,arguments),e||u.apply(this,arguments))},n.source=function(e){return arguments.length?(r=e,t="function"==typeof e?null:e,n):r},n.target=function(t){return arguments.length?(u=t,e="function"==typeof t?null:t,n):u},n.precision=function(){return arguments.length?n:0},n},ta.geo.interpolate=function(n,t){return xr(n[0]*Fa,n[1]*Fa,t[0]*Fa,t[1]*Fa)},ta.geo.length=function(n){return $c=0,ta.geo.stream(n,Bc),$c};var $c,Bc={sphere:y,point:y,lineStart:br,lineEnd:y,polygonStart:y,polygonEnd:y},Wc=_r(function(n){return Math.sqrt(2/(1+n))},function(n){return 2*Math.asin(n/2)});(ta.geo.azimuthalEqualArea=function(){return ir(Wc)}).raw=Wc;var Jc=_r(function(n){var t=Math.acos(n);return t&&t/Math.sin(t)},At);(ta.geo.azimuthalEquidistant=function(){return ir(Jc)}).raw=Jc,(ta.geo.conicConformal=function(){return Ze(wr)}).raw=wr,(ta.geo.conicEquidistant=function(){return Ze(Sr)}).raw=Sr;var Gc=_r(function(n){return 1/n},Math.atan);(ta.geo.gnomonic=function(){return ir(Gc)}).raw=Gc,kr.invert=function(n,t){return[n,2*Math.atan(Math.exp(t))-ja]},(ta.geo.mercator=function(){return Er(kr)}).raw=kr;var Kc=_r(function(){return 1},Math.asin);(ta.geo.orthographic=function(){return ir(Kc)}).raw=Kc;var Qc=_r(function(n){return 1/(1+n)},function(n){return 2*Math.atan(n)});(ta.geo.stereographic=function(){return ir(Qc)}).raw=Qc,Ar.invert=function(n,t){return[-t,2*Math.atan(Math.exp(n))-ja]},(ta.geo.transverseMercator=function(){var n=Er(Ar),t=n.center,e=n.rotate;return n.center=function(n){return n?t([-n[1],n[0]]):(n=t(),[n[1],-n[0]])},n.rotate=function(n){return n?e([n[0],n[1],n.length>2?n[2]+90:90]):(n=e(),[n[0],n[1],n[2]-90])},e([0,0,90])}).raw=Ar,ta.geom={},ta.geom.hull=function(n){function t(n){if(n.length<3)return[];var t,u=Et(e),i=Et(r),o=n.length,a=[],c=[];for(t=0;o>t;t++)a.push([+u.call(this,n[t],t),+i.call(this,n[t],t),t]);for(a.sort(qr),t=0;o>t;t++)c.push([a[t][0],-a[t][1]]);var l=zr(a),s=zr(c),f=s[0]===l[0],h=s[s.length-1]===l[l.length-1],g=[];for(t=l.length-1;t>=0;--t)g.push(n[a[l[t]][2]]);for(t=+f;t<s.length-h;++t)g.push(n[a[s[t]][2]]);return g}var e=Nr,r=Cr;return arguments.length?t(n):(t.x=function(n){return arguments.length?(e=n,t):e},t.y=function(n){return arguments.length?(r=n,t):r},t)},ta.geom.polygon=function(n){return xa(n,nl),n};var nl=ta.geom.polygon.prototype=[];nl.area=function(){for(var n,t=-1,e=this.length,r=this[e-1],u=0;++t<e;)n=r,r=this[t],u+=n[1]*r[0]-n[0]*r[1];return.5*u},nl.centroid=function(n){var t,e,r=-1,u=this.length,i=0,o=0,a=this[u-1];for(arguments.length||(n=-1/(6*this.area()));++r<u;)t=a,a=this[r],e=t[0]*a[1]-a[0]*t[1],i+=(t[0]+a[0])*e,o+=(t[1]+a[1])*e;return[i*n,o*n]},nl.clip=function(n){for(var t,e,r,u,i,o,a=Rr(n),c=-1,l=this.length-Rr(this),s=this[l-1];++c<l;){for(t=n.slice(),n.length=0,u=this[c],i=t[(r=t.length-a)-1],e=-1;++e<r;)o=t[e],Lr(o,s,u)?(Lr(i,s,u)||n.push(Tr(i,o,s,u)),n.push(o)):Lr(i,s,u)&&n.push(Tr(i,o,s,u)),i=o;a&&n.push(n[0]),s=u}return n};var tl,el,rl,ul,il,ol=[],al=[];Yr.prototype.prepare=function(){for(var n,t=this.edges,e=t.length;e--;)n=t[e].edge,n.b&&n.a||t.splice(e,1);return t.sort(Zr),t.length},nu.prototype={start:function(){return this.edge.l===this.site?this.edge.a:this.edge.b},end:function(){return this.edge.l===this.site?this.edge.b:this.edge.a}},tu.prototype={insert:function(n,t){var e,r,u;if(n){if(t.P=n,t.N=n.N,n.N&&(n.N.P=t),n.N=t,n.R){for(n=n.R;n.L;)n=n.L;n.L=t}else n.R=t;e=n}else this._?(n=iu(this._),t.P=null,t.N=n,n.P=n.L=t,e=n):(t.P=t.N=null,this._=t,e=null);for(t.L=t.R=null,t.U=e,t.C=!0,n=t;e&&e.C;)r=e.U,e===r.L?(u=r.R,u&&u.C?(e.C=u.C=!1,r.C=!0,n=r):(n===e.R&&(ru(this,e),n=e,e=n.U),e.C=!1,r.C=!0,uu(this,r))):(u=r.L,u&&u.C?(e.C=u.C=!1,r.C=!0,n=r):(n===e.L&&(uu(this,e),n=e,e=n.U),e.C=!1,r.C=!0,ru(this,r))),e=n.U;this._.C=!1},remove:function(n){n.N&&(n.N.P=n.P),n.P&&(n.P.N=n.N),n.N=n.P=null;var t,e,r,u=n.U,i=n.L,o=n.R;if(e=i?o?iu(o):i:o,u?u.L===n?u.L=e:u.R=e:this._=e,i&&o?(r=e.C,e.C=n.C,e.L=i,i.U=e,e!==o?(u=e.U,e.U=n.U,n=e.R,u.L=n,e.R=o,o.U=e):(e.U=u,u=e,n=e.R)):(r=n.C,n=e),n&&(n.U=u),!r){if(n&&n.C)return n.C=!1,void 0;do{if(n===this._)break;if(n===u.L){if(t=u.R,t.C&&(t.C=!1,u.C=!0,ru(this,u),t=u.R),t.L&&t.L.C||t.R&&t.R.C){t.R&&t.R.C||(t.L.C=!1,t.C=!0,uu(this,t),t=u.R),t.C=u.C,u.C=t.R.C=!1,ru(this,u),n=this._;break}}else if(t=u.L,t.C&&(t.C=!1,u.C=!0,uu(this,u),t=u.L),t.L&&t.L.C||t.R&&t.R.C){t.L&&t.L.C||(t.R.C=!1,t.C=!0,ru(this,t),t=u.L),t.C=u.C,u.C=t.L.C=!1,uu(this,u),n=this._;break}t.C=!0,n=u,u=u.U}while(!n.C);n&&(n.C=!1)}}},ta.geom.voronoi=function(n){function t(n){var t=new Array(n.length),r=a[0][0],u=a[0][1],i=a[1][0],o=a[1][1];return ou(e(n),a).cells.forEach(function(e,a){var c=e.edges,l=e.site,s=t[a]=c.length?c.map(function(n){var t=n.start();return[t.x,t.y]}):l.x>=r&&l.x<=i&&l.y>=u&&l.y<=o?[[r,o],[i,o],[i,u],[r,u]]:[];s.point=n[a]}),t}function e(n){return n.map(function(n,t){return{x:Math.round(i(n,t)/Ta)*Ta,y:Math.round(o(n,t)/Ta)*Ta,i:t}})}var r=Nr,u=Cr,i=r,o=u,a=cl;return n?t(n):(t.links=function(n){return ou(e(n)).edges.filter(function(n){return n.l&&n.r}).map(function(t){return{source:n[t.l.i],target:n[t.r.i]}})},t.triangles=function(n){var t=[];return ou(e(n)).cells.forEach(function(e,r){for(var u,i,o=e.site,a=e.edges.sort(Zr),c=-1,l=a.length,s=a[l-1].edge,f=s.l===o?s.r:s.l;++c<l;)u=s,i=f,s=a[c].edge,f=s.l===o?s.r:s.l,r<i.i&&r<f.i&&cu(o,i,f)<0&&t.push([n[r],n[i.i],n[f.i]])}),t},t.x=function(n){return arguments.length?(i=Et(r=n),t):r},t.y=function(n){return arguments.length?(o=Et(u=n),t):u},t.clipExtent=function(n){return arguments.length?(a=null==n?cl:n,t):a===cl?null:a},t.size=function(n){return arguments.length?t.clipExtent(n&&[[0,0],n]):a===cl?null:a&&a[1]},t)};var cl=[[-1e6,-1e6],[1e6,1e6]];ta.geom.delaunay=function(n){return ta.geom.voronoi().triangles(n)},ta.geom.quadtree=function(n,t,e,r,u){function i(n){function i(n,t,e,r,u,i,o,a){if(!isNaN(e)&&!isNaN(r))if(n.leaf){var c=n.x,s=n.y;if(null!=c)if(va(c-e)+va(s-r)<.01)l(n,t,e,r,u,i,o,a);else{var f=n.point;n.x=n.y=n.point=null,l(n,f,c,s,u,i,o,a),l(n,t,e,r,u,i,o,a)}else n.x=e,n.y=r,n.point=t}else l(n,t,e,r,u,i,o,a)}function l(n,t,e,r,u,o,a,c){var l=.5*(u+a),s=.5*(o+c),f=e>=l,h=r>=s,g=h<<1|f;n.leaf=!1,n=n.nodes[g]||(n.nodes[g]=fu()),f?u=l:a=l,h?o=s:c=s,i(n,t,e,r,u,o,a,c)}var s,f,h,g,p,v,d,m,y,M=Et(a),x=Et(c);if(null!=t)v=t,d=e,m=r,y=u;else if(m=y=-(v=d=1/0),f=[],h=[],p=n.length,o)for(g=0;p>g;++g)s=n[g],s.x<v&&(v=s.x),s.y<d&&(d=s.y),s.x>m&&(m=s.x),s.y>y&&(y=s.y),f.push(s.x),h.push(s.y);else for(g=0;p>g;++g){var b=+M(s=n[g],g),_=+x(s,g);v>b&&(v=b),d>_&&(d=_),b>m&&(m=b),_>y&&(y=_),f.push(b),h.push(_)}var w=m-v,S=y-d;w>S?y=d+w:m=v+S;var k=fu();if(k.add=function(n){i(k,n,+M(n,++g),+x(n,g),v,d,m,y)},k.visit=function(n){hu(n,k,v,d,m,y)},k.find=function(n){return gu(k,n[0],n[1],v,d,m,y)},g=-1,null==t){for(;++g<p;)i(k,n[g],f[g],h[g],v,d,m,y);--g}else n.forEach(k.add);return f=h=n=s=null,k}var o,a=Nr,c=Cr;return(o=arguments.length)?(a=lu,c=su,3===o&&(u=e,r=t,e=t=0),i(n)):(i.x=function(n){return arguments.length?(a=n,i):a},i.y=function(n){return arguments.length?(c=n,i):c},i.extent=function(n){return arguments.length?(null==n?t=e=r=u=null:(t=+n[0][0],e=+n[0][1],r=+n[1][0],u=+n[1][1]),i):null==t?null:[[t,e],[r,u]]},i.size=function(n){return arguments.length?(null==n?t=e=r=u=null:(t=e=0,r=+n[0],u=+n[1]),i):null==t?null:[r-t,u-e]},i)},ta.interpolateRgb=pu,ta.interpolateObject=vu,ta.interpolateNumber=du,ta.interpolateString=mu;var ll=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,sl=new RegExp(ll.source,"g");ta.interpolate=yu,ta.interpolators=[function(n,t){var e=typeof t;return("string"===e?tc.has(t)||/^(#|rgb\(|hsl\()/.test(t)?pu:mu:t instanceof ot?pu:Array.isArray(t)?Mu:"object"===e&&isNaN(t)?vu:du)(n,t)}],ta.interpolateArray=Mu;var fl=function(){return At},hl=ta.map({linear:fl,poly:Eu,quad:function(){return wu},cubic:function(){return Su},sin:function(){return Au},exp:function(){return Nu},circle:function(){return Cu},elastic:zu,back:qu,bounce:function(){return Lu}}),gl=ta.map({"in":At,out:bu,"in-out":_u,"out-in":function(n){return _u(bu(n))}});ta.ease=function(n){var t=n.indexOf("-"),e=t>=0?n.slice(0,t):n,r=t>=0?n.slice(t+1):"in";return e=hl.get(e)||fl,r=gl.get(r)||At,xu(r(e.apply(null,ea.call(arguments,1))))},ta.interpolateHcl=Tu,ta.interpolateHsl=Ru,ta.interpolateLab=Du,ta.interpolateRound=Pu,ta.transform=function(n){var t=ua.createElementNS(ta.ns.prefix.svg,"g");return(ta.transform=function(n){if(null!=n){t.setAttribute("transform",n);var e=t.transform.baseVal.consolidate()}return new Uu(e?e.matrix:pl)})(n)},Uu.prototype.toString=function(){return"translate("+this.translate+")rotate("+this.rotate+")skewX("+this.skew+")scale("+this.scale+")"};var pl={a:1,b:0,c:0,d:1,e:0,f:0};ta.interpolateTransform=Ou,ta.layout={},ta.layout.bundle=function(){return function(n){for(var t=[],e=-1,r=n.length;++e<r;)t.push(Zu(n[e]));return t}},ta.layout.chord=function(){function n(){var n,l,f,h,g,p={},v=[],d=ta.range(i),m=[];for(e=[],r=[],n=0,h=-1;++h<i;){for(l=0,g=-1;++g<i;)l+=u[h][g];v.push(l),m.push(ta.range(i)),n+=l}for(o&&d.sort(function(n,t){return o(v[n],v[t])}),a&&m.forEach(function(n,t){n.sort(function(n,e){return a(u[t][n],u[t][e])})}),n=(Pa-s*i)/n,l=0,h=-1;++h<i;){for(f=l,g=-1;++g<i;){var y=d[h],M=m[y][g],x=u[y][M],b=l,_=l+=x*n;p[y+"-"+M]={index:y,subindex:M,startAngle:b,endAngle:_,value:x}}r[y]={index:y,startAngle:f,endAngle:l,value:(l-f)/n},l+=s}for(h=-1;++h<i;)for(g=h-1;++g<i;){var w=p[h+"-"+g],S=p[g+"-"+h];(w.value||S.value)&&e.push(w.value<S.value?{source:S,target:w}:{source:w,target:S})}c&&t()}function t(){e.sort(function(n,t){return c((n.source.value+n.target.value)/2,(t.source.value+t.target.value)/2)})}var e,r,u,i,o,a,c,l={},s=0;return l.matrix=function(n){return arguments.length?(i=(u=n)&&u.length,e=r=null,l):u},l.padding=function(n){return arguments.length?(s=n,e=r=null,l):s},l.sortGroups=function(n){return arguments.length?(o=n,e=r=null,l):o},l.sortSubgroups=function(n){return arguments.length?(a=n,e=null,l):a},l.sortChords=function(n){return arguments.length?(c=n,e&&t(),l):c},l.chords=function(){return e||n(),e},l.groups=function(){return r||n(),r},l},ta.layout.force=function(){function n(n){return function(t,e,r,u){if(t.point!==n){var i=t.cx-n.x,o=t.cy-n.y,a=u-e,c=i*i+o*o;if(c>a*a/d){if(p>c){var l=t.charge/c;n.px-=i*l,n.py-=o*l}return!0}if(t.point&&c&&p>c){var l=t.pointCharge/c;n.px-=i*l,n.py-=o*l}}return!t.charge}}function t(n){n.px=ta.event.x,n.py=ta.event.y,a.resume()}var e,r,u,i,o,a={},c=ta.dispatch("start","tick","end"),l=[1,1],s=.9,f=vl,h=dl,g=-30,p=ml,v=.1,d=.64,m=[],y=[];return a.tick=function(){if((r*=.99)<.005)return c.end({type:"end",alpha:r=0}),!0;var t,e,a,f,h,p,d,M,x,b=m.length,_=y.length;for(e=0;_>e;++e)a=y[e],f=a.source,h=a.target,M=h.x-f.x,x=h.y-f.y,(p=M*M+x*x)&&(p=r*i[e]*((p=Math.sqrt(p))-u[e])/p,M*=p,x*=p,h.x-=M*(d=f.weight/(h.weight+f.weight)),h.y-=x*d,f.x+=M*(d=1-d),f.y+=x*d);if((d=r*v)&&(M=l[0]/2,x=l[1]/2,e=-1,d))for(;++e<b;)a=m[e],a.x+=(M-a.x)*d,a.y+=(x-a.y)*d;if(g)for(Gu(t=ta.geom.quadtree(m),r,o),e=-1;++e<b;)(a=m[e]).fixed||t.visit(n(a));for(e=-1;++e<b;)a=m[e],a.fixed?(a.x=a.px,a.y=a.py):(a.x-=(a.px-(a.px=a.x))*s,a.y-=(a.py-(a.py=a.y))*s);c.tick({type:"tick",alpha:r})},a.nodes=function(n){return arguments.length?(m=n,a):m},a.links=function(n){return arguments.length?(y=n,a):y},a.size=function(n){return arguments.length?(l=n,a):l},a.linkDistance=function(n){return arguments.length?(f="function"==typeof n?n:+n,a):f},a.distance=a.linkDistance,a.linkStrength=function(n){return arguments.length?(h="function"==typeof n?n:+n,a):h},a.friction=function(n){return arguments.length?(s=+n,a):s},a.charge=function(n){return arguments.length?(g="function"==typeof n?n:+n,a):g},a.chargeDistance=function(n){return arguments.length?(p=n*n,a):Math.sqrt(p)},a.gravity=function(n){return arguments.length?(v=+n,a):v},a.theta=function(n){return arguments.length?(d=n*n,a):Math.sqrt(d)},a.alpha=function(n){return arguments.length?(n=+n,r?r=n>0?n:0:n>0&&(c.start({type:"start",alpha:r=n}),ta.timer(a.tick)),a):r},a.start=function(){function n(n,r){if(!e){for(e=new Array(c),a=0;c>a;++a)e[a]=[];for(a=0;l>a;++a){var u=y[a];e[u.source.index].push(u.target),e[u.target.index].push(u.source)}}for(var i,o=e[t],a=-1,l=o.length;++a<l;)if(!isNaN(i=o[a][n]))return i;return Math.random()*r}var t,e,r,c=m.length,s=y.length,p=l[0],v=l[1];for(t=0;c>t;++t)(r=m[t]).index=t,r.weight=0;for(t=0;s>t;++t)r=y[t],"number"==typeof r.source&&(r.source=m[r.source]),"number"==typeof r.target&&(r.target=m[r.target]),++r.source.weight,++r.target.weight;for(t=0;c>t;++t)r=m[t],isNaN(r.x)&&(r.x=n("x",p)),isNaN(r.y)&&(r.y=n("y",v)),isNaN(r.px)&&(r.px=r.x),isNaN(r.py)&&(r.py=r.y);if(u=[],"function"==typeof f)for(t=0;s>t;++t)u[t]=+f.call(this,y[t],t);else for(t=0;s>t;++t)u[t]=f;if(i=[],"function"==typeof h)for(t=0;s>t;++t)i[t]=+h.call(this,y[t],t);else for(t=0;s>t;++t)i[t]=h;if(o=[],"function"==typeof g)for(t=0;c>t;++t)o[t]=+g.call(this,m[t],t);else for(t=0;c>t;++t)o[t]=g;return a.resume()},a.resume=function(){return a.alpha(.1)},a.stop=function(){return a.alpha(0)},a.drag=function(){return e||(e=ta.behavior.drag().origin(At).on("dragstart.force",$u).on("drag.force",t).on("dragend.force",Bu)),arguments.length?(this.on("mouseover.force",Wu).on("mouseout.force",Ju).call(e),void 0):e},ta.rebind(a,c,"on")};var vl=20,dl=1,ml=1/0;ta.layout.hierarchy=function(){function n(u){var i,o=[u],a=[];for(u.depth=0;null!=(i=o.pop());)if(a.push(i),(l=e.call(n,i,i.depth))&&(c=l.length)){for(var c,l,s;--c>=0;)o.push(s=l[c]),s.parent=i,s.depth=i.depth+1;r&&(i.value=0),i.children=l}else r&&(i.value=+r.call(n,i,i.depth)||0),delete i.children;return ni(u,function(n){var e,u;t&&(e=n.children)&&e.sort(t),r&&(u=n.parent)&&(u.value+=n.value)}),a}var t=ri,e=ti,r=ei;return n.sort=function(e){return arguments.length?(t=e,n):t},n.children=function(t){return arguments.length?(e=t,n):e},n.value=function(t){return arguments.length?(r=t,n):r},n.revalue=function(t){return r&&(Qu(t,function(n){n.children&&(n.value=0)}),ni(t,function(t){var e;t.children||(t.value=+r.call(n,t,t.depth)||0),(e=t.parent)&&(e.value+=t.value)})),t},n},ta.layout.partition=function(){function n(t,e,r,u){var i=t.children;if(t.x=e,t.y=t.depth*u,t.dx=r,t.dy=u,i&&(o=i.length)){var o,a,c,l=-1;for(r=t.value?r/t.value:0;++l<o;)n(a=i[l],e,c=a.value*r,u),e+=c}}function t(n){var e=n.children,r=0;if(e&&(u=e.length))for(var u,i=-1;++i<u;)r=Math.max(r,t(e[i]));return 1+r}function e(e,i){var o=r.call(this,e,i);return n(o[0],0,u[0],u[1]/t(o[0])),o}var r=ta.layout.hierarchy(),u=[1,1];return e.size=function(n){return arguments.length?(u=n,e):u},Ku(e,r)},ta.layout.pie=function(){function n(o){var a,c=o.length,l=o.map(function(e,r){return+t.call(n,e,r)}),s=+("function"==typeof r?r.apply(this,arguments):r),f=("function"==typeof u?u.apply(this,arguments):u)-s,h=Math.min(Math.abs(f)/c,+("function"==typeof i?i.apply(this,arguments):i)),g=h*(0>f?-1:1),p=(f-c*g)/ta.sum(l),v=ta.range(c),d=[];return null!=e&&v.sort(e===yl?function(n,t){return l[t]-l[n]}:function(n,t){return e(o[n],o[t])}),v.forEach(function(n){d[n]={data:o[n],value:a=l[n],startAngle:s,endAngle:s+=a*p+g,padAngle:h}}),d}var t=Number,e=yl,r=0,u=Pa,i=0;return n.value=function(e){return arguments.length?(t=e,n):t},n.sort=function(t){return arguments.length?(e=t,n):e},n.startAngle=function(t){return arguments.length?(r=t,n):r},n.endAngle=function(t){return arguments.length?(u=t,n):u},n.padAngle=function(t){return arguments.length?(i=t,n):i},n};var yl={};ta.layout.stack=function(){function n(a,c){if(!(h=a.length))return a;var l=a.map(function(e,r){return t.call(n,e,r)}),s=l.map(function(t){return t.map(function(t,e){return[i.call(n,t,e),o.call(n,t,e)]})}),f=e.call(n,s,c);l=ta.permute(l,f),s=ta.permute(s,f);var h,g,p,v,d=r.call(n,s,c),m=l[0].length;for(p=0;m>p;++p)for(u.call(n,l[0][p],v=d[p],s[0][p][1]),g=1;h>g;++g)u.call(n,l[g][p],v+=s[g-1][p][1],s[g][p][1]);return a}var t=At,e=ci,r=li,u=ai,i=ii,o=oi;return n.values=function(e){return arguments.length?(t=e,n):t},n.order=function(t){return arguments.length?(e="function"==typeof t?t:Ml.get(t)||ci,n):e},n.offset=function(t){return arguments.length?(r="function"==typeof t?t:xl.get(t)||li,n):r},n.x=function(t){return arguments.length?(i=t,n):i},n.y=function(t){return arguments.length?(o=t,n):o},n.out=function(t){return arguments.length?(u=t,n):u},n};var Ml=ta.map({"inside-out":function(n){var t,e,r=n.length,u=n.map(si),i=n.map(fi),o=ta.range(r).sort(function(n,t){return u[n]-u[t]}),a=0,c=0,l=[],s=[];for(t=0;r>t;++t)e=o[t],c>a?(a+=i[e],l.push(e)):(c+=i[e],s.push(e));return s.reverse().concat(l)},reverse:function(n){return ta.range(n.length).reverse()},"default":ci}),xl=ta.map({silhouette:function(n){var t,e,r,u=n.length,i=n[0].length,o=[],a=0,c=[];for(e=0;i>e;++e){for(t=0,r=0;u>t;t++)r+=n[t][e][1];r>a&&(a=r),o.push(r)}for(e=0;i>e;++e)c[e]=(a-o[e])/2;return c},wiggle:function(n){var t,e,r,u,i,o,a,c,l,s=n.length,f=n[0],h=f.length,g=[];for(g[0]=c=l=0,e=1;h>e;++e){for(t=0,u=0;s>t;++t)u+=n[t][e][1];for(t=0,i=0,a=f[e][0]-f[e-1][0];s>t;++t){for(r=0,o=(n[t][e][1]-n[t][e-1][1])/(2*a);t>r;++r)o+=(n[r][e][1]-n[r][e-1][1])/a;i+=o*n[t][e][1]}g[e]=c-=u?i/u*a:0,l>c&&(l=c)}for(e=0;h>e;++e)g[e]-=l;return g},expand:function(n){var t,e,r,u=n.length,i=n[0].length,o=1/u,a=[];for(e=0;i>e;++e){for(t=0,r=0;u>t;t++)r+=n[t][e][1];if(r)for(t=0;u>t;t++)n[t][e][1]/=r;else for(t=0;u>t;t++)n[t][e][1]=o}for(e=0;i>e;++e)a[e]=0;return a},zero:li});ta.layout.histogram=function(){function n(n,i){for(var o,a,c=[],l=n.map(e,this),s=r.call(this,l,i),f=u.call(this,s,l,i),i=-1,h=l.length,g=f.length-1,p=t?1:1/h;++i<g;)o=c[i]=[],o.dx=f[i+1]-(o.x=f[i]),o.y=0;if(g>0)for(i=-1;++i<h;)a=l[i],a>=s[0]&&a<=s[1]&&(o=c[ta.bisect(f,a,1,g)-1],o.y+=p,o.push(n[i]));return c}var t=!0,e=Number,r=vi,u=gi;return n.value=function(t){return arguments.length?(e=t,n):e},n.range=function(t){return arguments.length?(r=Et(t),n):r},n.bins=function(t){return arguments.length?(u="number"==typeof t?function(n){return pi(n,t)}:Et(t),n):u},n.frequency=function(e){return arguments.length?(t=!!e,n):t},n},ta.layout.pack=function(){function n(n,i){var o=e.call(this,n,i),a=o[0],c=u[0],l=u[1],s=null==t?Math.sqrt:"function"==typeof t?t:function(){return t};if(a.x=a.y=0,ni(a,function(n){n.r=+s(n.value)}),ni(a,xi),r){var f=r*(t?1:Math.max(2*a.r/c,2*a.r/l))/2;ni(a,function(n){n.r+=f}),ni(a,xi),ni(a,function(n){n.r-=f})}return wi(a,c/2,l/2,t?1:1/Math.max(2*a.r/c,2*a.r/l)),o}var t,e=ta.layout.hierarchy().sort(di),r=0,u=[1,1];return n.size=function(t){return arguments.length?(u=t,n):u},n.radius=function(e){return arguments.length?(t=null==e||"function"==typeof e?e:+e,n):t},n.padding=function(t){return arguments.length?(r=+t,n):r},Ku(n,e)},ta.layout.tree=function(){function n(n,u){var s=o.call(this,n,u),f=s[0],h=t(f);if(ni(h,e),h.parent.m=-h.z,Qu(h,r),l)Qu(f,i);else{var g=f,p=f,v=f;Qu(f,function(n){n.x<g.x&&(g=n),n.x>p.x&&(p=n),n.depth>v.depth&&(v=n)});var d=a(g,p)/2-g.x,m=c[0]/(p.x+a(p,g)/2+d),y=c[1]/(v.depth||1);Qu(f,function(n){n.x=(n.x+d)*m,n.y=n.depth*y})}return s}function t(n){for(var t,e={A:null,children:[n]},r=[e];null!=(t=r.pop());)for(var u,i=t.children,o=0,a=i.length;a>o;++o)r.push((i[o]=u={_:i[o],parent:t,children:(u=i[o].children)&&u.slice()||[],A:null,a:null,z:0,m:0,c:0,s:0,t:null,i:o}).a=u);return e.children[0]}function e(n){var t=n.children,e=n.parent.children,r=n.i?e[n.i-1]:null;if(t.length){Ci(n);var i=(t[0].z+t[t.length-1].z)/2;r?(n.z=r.z+a(n._,r._),n.m=n.z-i):n.z=i}else r&&(n.z=r.z+a(n._,r._));n.parent.A=u(n,r,n.parent.A||e[0])}function r(n){n._.x=n.z+n.parent.m,n.m+=n.parent.m}function u(n,t,e){if(t){for(var r,u=n,i=n,o=t,c=u.parent.children[0],l=u.m,s=i.m,f=o.m,h=c.m;o=Ai(o),u=Ei(u),o&&u;)c=Ei(c),i=Ai(i),i.a=n,r=o.z+f-u.z-l+a(o._,u._),r>0&&(Ni(zi(o,n,e),n,r),l+=r,s+=r),f+=o.m,l+=u.m,h+=c.m,s+=i.m;o&&!Ai(i)&&(i.t=o,i.m+=f-s),u&&!Ei(c)&&(c.t=u,c.m+=l-h,e=n)}return e}function i(n){n.x*=c[0],n.y=n.depth*c[1]}var o=ta.layout.hierarchy().sort(null).value(null),a=ki,c=[1,1],l=null;return n.separation=function(t){return arguments.length?(a=t,n):a},n.size=function(t){return arguments.length?(l=null==(c=t)?i:null,n):l?null:c},n.nodeSize=function(t){return arguments.length?(l=null==(c=t)?null:i,n):l?c:null},Ku(n,o)},ta.layout.cluster=function(){function n(n,i){var o,a=t.call(this,n,i),c=a[0],l=0;ni(c,function(n){var t=n.children;t&&t.length?(n.x=Li(t),n.y=qi(t)):(n.x=o?l+=e(n,o):0,n.y=0,o=n)});var s=Ti(c),f=Ri(c),h=s.x-e(s,f)/2,g=f.x+e(f,s)/2;return ni(c,u?function(n){n.x=(n.x-c.x)*r[0],n.y=(c.y-n.y)*r[1]}:function(n){n.x=(n.x-h)/(g-h)*r[0],n.y=(1-(c.y?n.y/c.y:1))*r[1]}),a}var t=ta.layout.hierarchy().sort(null).value(null),e=ki,r=[1,1],u=!1;return n.separation=function(t){return arguments.length?(e=t,n):e},n.size=function(t){return arguments.length?(u=null==(r=t),n):u?null:r},n.nodeSize=function(t){return arguments.length?(u=null!=(r=t),n):u?r:null},Ku(n,t)},ta.layout.treemap=function(){function n(n,t){for(var e,r,u=-1,i=n.length;++u<i;)r=(e=n[u]).value*(0>t?0:t),e.area=isNaN(r)||0>=r?0:r}function t(e){var i=e.children;if(i&&i.length){var o,a,c,l=f(e),s=[],h=i.slice(),p=1/0,v="slice"===g?l.dx:"dice"===g?l.dy:"slice-dice"===g?1&e.depth?l.dy:l.dx:Math.min(l.dx,l.dy);for(n(h,l.dx*l.dy/e.value),s.area=0;(c=h.length)>0;)s.push(o=h[c-1]),s.area+=o.area,"squarify"!==g||(a=r(s,v))<=p?(h.pop(),p=a):(s.area-=s.pop().area,u(s,v,l,!1),v=Math.min(l.dx,l.dy),s.length=s.area=0,p=1/0);s.length&&(u(s,v,l,!0),s.length=s.area=0),i.forEach(t)}}function e(t){var r=t.children;if(r&&r.length){var i,o=f(t),a=r.slice(),c=[];for(n(a,o.dx*o.dy/t.value),c.area=0;i=a.pop();)c.push(i),c.area+=i.area,null!=i.z&&(u(c,i.z?o.dx:o.dy,o,!a.length),c.length=c.area=0);r.forEach(e)}}function r(n,t){for(var e,r=n.area,u=0,i=1/0,o=-1,a=n.length;++o<a;)(e=n[o].area)&&(i>e&&(i=e),e>u&&(u=e));return r*=r,t*=t,r?Math.max(t*u*p/r,r/(t*i*p)):1/0}function u(n,t,e,r){var u,i=-1,o=n.length,a=e.x,l=e.y,s=t?c(n.area/t):0;if(t==e.dx){for((r||s>e.dy)&&(s=e.dy);++i<o;)u=n[i],u.x=a,u.y=l,u.dy=s,a+=u.dx=Math.min(e.x+e.dx-a,s?c(u.area/s):0);u.z=!0,u.dx+=e.x+e.dx-a,e.y+=s,e.dy-=s}else{for((r||s>e.dx)&&(s=e.dx);++i<o;)u=n[i],u.x=a,u.y=l,u.dx=s,l+=u.dy=Math.min(e.y+e.dy-l,s?c(u.area/s):0);u.z=!1,u.dy+=e.y+e.dy-l,e.x+=s,e.dx-=s}}function i(r){var u=o||a(r),i=u[0];return i.x=0,i.y=0,i.dx=l[0],i.dy=l[1],o&&a.revalue(i),n([i],i.dx*i.dy/i.value),(o?e:t)(i),h&&(o=u),u}var o,a=ta.layout.hierarchy(),c=Math.round,l=[1,1],s=null,f=Di,h=!1,g="squarify",p=.5*(1+Math.sqrt(5));return i.size=function(n){return arguments.length?(l=n,i):l},i.padding=function(n){function t(t){var e=n.call(i,t,t.depth);return null==e?Di(t):Pi(t,"number"==typeof e?[e,e,e,e]:e)}function e(t){return Pi(t,n)}if(!arguments.length)return s;var r;return f=null==(s=n)?Di:"function"==(r=typeof n)?t:"number"===r?(n=[n,n,n,n],e):e,i},i.round=function(n){return arguments.length?(c=n?Math.round:Number,i):c!=Number},i.sticky=function(n){return arguments.length?(h=n,o=null,i):h},i.ratio=function(n){return arguments.length?(p=n,i):p},i.mode=function(n){return arguments.length?(g=n+"",i):g},Ku(i,a)},ta.random={normal:function(n,t){var e=arguments.length;return 2>e&&(t=1),1>e&&(n=0),function(){var e,r,u;
2309 do e=2*Math.random()-1,r=2*Math.random()-1,u=e*e+r*r;while(!u||u>1);return n+t*e*Math.sqrt(-2*Math.log(u)/u)}},logNormal:function(){var n=ta.random.normal.apply(ta,arguments);return function(){return Math.exp(n())}},bates:function(n){var t=ta.random.irwinHall(n);return function(){return t()/n}},irwinHall:function(n){return function(){for(var t=0,e=0;n>e;e++)t+=Math.random();return t}}},ta.scale={};var bl={floor:At,ceil:At};ta.scale.linear=function(){return Ii([0,1],[0,1],yu,!1)};var _l={s:1,g:1,p:1,r:1,e:1};ta.scale.log=function(){return Gi(ta.scale.linear().domain([0,1]),10,!0,[1,10])};var wl=ta.format(".0e"),Sl={floor:function(n){return-Math.ceil(-n)},ceil:function(n){return-Math.floor(-n)}};ta.scale.pow=function(){return Ki(ta.scale.linear(),1,[0,1])},ta.scale.sqrt=function(){return ta.scale.pow().exponent(.5)},ta.scale.ordinal=function(){return no([],{t:"range",a:[[]]})},ta.scale.category10=function(){return ta.scale.ordinal().range(kl)},ta.scale.category20=function(){return ta.scale.ordinal().range(El)},ta.scale.category20b=function(){return ta.scale.ordinal().range(Al)},ta.scale.category20c=function(){return ta.scale.ordinal().range(Nl)};var kl=[2062260,16744206,2924588,14034728,9725885,9197131,14907330,8355711,12369186,1556175].map(Mt),El=[2062260,11454440,16744206,16759672,2924588,10018698,14034728,16750742,9725885,12955861,9197131,12885140,14907330,16234194,8355711,13092807,12369186,14408589,1556175,10410725].map(Mt),Al=[3750777,5395619,7040719,10264286,6519097,9216594,11915115,13556636,9202993,12426809,15186514,15190932,8666169,11356490,14049643,15177372,8077683,10834324,13528509,14589654].map(Mt),Nl=[3244733,7057110,10406625,13032431,15095053,16616764,16625259,16634018,3253076,7652470,10607003,13101504,7695281,10394312,12369372,14342891,6513507,9868950,12434877,14277081].map(Mt);ta.scale.quantile=function(){return to([],[])},ta.scale.quantize=function(){return eo(0,1,[0,1])},ta.scale.threshold=function(){return ro([.5],[0,1])},ta.scale.identity=function(){return uo([0,1])},ta.svg={},ta.svg.arc=function(){function n(){var n=Math.max(0,+e.apply(this,arguments)),l=Math.max(0,+r.apply(this,arguments)),s=o.apply(this,arguments)-ja,f=a.apply(this,arguments)-ja,h=Math.abs(f-s),g=s>f?0:1;if(n>l&&(p=l,l=n,n=p),h>=Ua)return t(l,g)+(n?t(n,1-g):"")+"Z";var p,v,d,m,y,M,x,b,_,w,S,k,E=0,A=0,N=[];if((m=(+c.apply(this,arguments)||0)/2)&&(d=i===Cl?Math.sqrt(n*n+l*l):+i.apply(this,arguments),g||(A*=-1),l&&(A=tt(d/l*Math.sin(m))),n&&(E=tt(d/n*Math.sin(m)))),l){y=l*Math.cos(s+A),M=l*Math.sin(s+A),x=l*Math.cos(f-A),b=l*Math.sin(f-A);var C=Math.abs(f-s-2*A)<=Da?0:1;if(A&&fo(y,M,x,b)===g^C){var z=(s+f)/2;y=l*Math.cos(z),M=l*Math.sin(z),x=b=null}}else y=M=0;if(n){_=n*Math.cos(f-E),w=n*Math.sin(f-E),S=n*Math.cos(s+E),k=n*Math.sin(s+E);var q=Math.abs(s-f+2*E)<=Da?0:1;if(E&&fo(_,w,S,k)===1-g^q){var L=(s+f)/2;_=n*Math.cos(L),w=n*Math.sin(L),S=k=null}}else _=w=0;if((p=Math.min(Math.abs(l-n)/2,+u.apply(this,arguments)))>.001){v=l>n^g?0:1;var T=null==S?[_,w]:null==x?[y,M]:Tr([y,M],[S,k],[x,b],[_,w]),R=y-T[0],D=M-T[1],P=x-T[0],U=b-T[1],j=1/Math.sin(Math.acos((R*P+D*U)/(Math.sqrt(R*R+D*D)*Math.sqrt(P*P+U*U)))/2),F=Math.sqrt(T[0]*T[0]+T[1]*T[1]);if(null!=x){var H=Math.min(p,(l-F)/(j+1)),O=ho(null==S?[_,w]:[S,k],[y,M],l,H,g),Y=ho([x,b],[_,w],l,H,g);p===H?N.push("M",O[0],"A",H,",",H," 0 0,",v," ",O[1],"A",l,",",l," 0 ",1-g^fo(O[1][0],O[1][1],Y[1][0],Y[1][1]),",",g," ",Y[1],"A",H,",",H," 0 0,",v," ",Y[0]):N.push("M",O[0],"A",H,",",H," 0 1,",v," ",Y[0])}else N.push("M",y,",",M);if(null!=S){var I=Math.min(p,(n-F)/(j-1)),Z=ho([y,M],[S,k],n,-I,g),V=ho([_,w],null==x?[y,M]:[x,b],n,-I,g);p===I?N.push("L",V[0],"A",I,",",I," 0 0,",v," ",V[1],"A",n,",",n," 0 ",g^fo(V[1][0],V[1][1],Z[1][0],Z[1][1]),",",1-g," ",Z[1],"A",I,",",I," 0 0,",v," ",Z[0]):N.push("L",V[0],"A",I,",",I," 0 0,",v," ",Z[0])}else N.push("L",_,",",w)}else N.push("M",y,",",M),null!=x&&N.push("A",l,",",l," 0 ",C,",",g," ",x,",",b),N.push("L",_,",",w),null!=S&&N.push("A",n,",",n," 0 ",q,",",1-g," ",S,",",k);return N.push("Z"),N.join("")}function t(n,t){return"M0,"+n+"A"+n+","+n+" 0 1,"+t+" 0,"+-n+"A"+n+","+n+" 0 1,"+t+" 0,"+n}var e=oo,r=ao,u=io,i=Cl,o=co,a=lo,c=so;return n.innerRadius=function(t){return arguments.length?(e=Et(t),n):e},n.outerRadius=function(t){return arguments.length?(r=Et(t),n):r},n.cornerRadius=function(t){return arguments.length?(u=Et(t),n):u},n.padRadius=function(t){return arguments.length?(i=t==Cl?Cl:Et(t),n):i},n.startAngle=function(t){return arguments.length?(o=Et(t),n):o},n.endAngle=function(t){return arguments.length?(a=Et(t),n):a},n.padAngle=function(t){return arguments.length?(c=Et(t),n):c},n.centroid=function(){var n=(+e.apply(this,arguments)+ +r.apply(this,arguments))/2,t=(+o.apply(this,arguments)+ +a.apply(this,arguments))/2-ja;return[Math.cos(t)*n,Math.sin(t)*n]},n};var Cl="auto";ta.svg.line=function(){return go(At)};var zl=ta.map({linear:po,"linear-closed":vo,step:mo,"step-before":yo,"step-after":Mo,basis:ko,"basis-open":Eo,"basis-closed":Ao,bundle:No,cardinal:_o,"cardinal-open":xo,"cardinal-closed":bo,monotone:Ro});zl.forEach(function(n,t){t.key=n,t.closed=/-closed$/.test(n)});var ql=[0,2/3,1/3,0],Ll=[0,1/3,2/3,0],Tl=[0,1/6,2/3,1/6];ta.svg.line.radial=function(){var n=go(Do);return n.radius=n.x,delete n.x,n.angle=n.y,delete n.y,n},yo.reverse=Mo,Mo.reverse=yo,ta.svg.area=function(){return Po(At)},ta.svg.area.radial=function(){var n=Po(Do);return n.radius=n.x,delete n.x,n.innerRadius=n.x0,delete n.x0,n.outerRadius=n.x1,delete n.x1,n.angle=n.y,delete n.y,n.startAngle=n.y0,delete n.y0,n.endAngle=n.y1,delete n.y1,n},ta.svg.chord=function(){function n(n,a){var c=t(this,i,n,a),l=t(this,o,n,a);return"M"+c.p0+r(c.r,c.p1,c.a1-c.a0)+(e(c,l)?u(c.r,c.p1,c.r,c.p0):u(c.r,c.p1,l.r,l.p0)+r(l.r,l.p1,l.a1-l.a0)+u(l.r,l.p1,c.r,c.p0))+"Z"}function t(n,t,e,r){var u=t.call(n,e,r),i=a.call(n,u,r),o=c.call(n,u,r)-ja,s=l.call(n,u,r)-ja;return{r:i,a0:o,a1:s,p0:[i*Math.cos(o),i*Math.sin(o)],p1:[i*Math.cos(s),i*Math.sin(s)]}}function e(n,t){return n.a0==t.a0&&n.a1==t.a1}function r(n,t,e){return"A"+n+","+n+" 0 "+ +(e>Da)+",1 "+t}function u(n,t,e,r){return"Q 0,0 "+r}var i=yr,o=Mr,a=Uo,c=co,l=lo;return n.radius=function(t){return arguments.length?(a=Et(t),n):a},n.source=function(t){return arguments.length?(i=Et(t),n):i},n.target=function(t){return arguments.length?(o=Et(t),n):o},n.startAngle=function(t){return arguments.length?(c=Et(t),n):c},n.endAngle=function(t){return arguments.length?(l=Et(t),n):l},n},ta.svg.diagonal=function(){function n(n,u){var i=t.call(this,n,u),o=e.call(this,n,u),a=(i.y+o.y)/2,c=[i,{x:i.x,y:a},{x:o.x,y:a},o];return c=c.map(r),"M"+c[0]+"C"+c[1]+" "+c[2]+" "+c[3]}var t=yr,e=Mr,r=jo;return n.source=function(e){return arguments.length?(t=Et(e),n):t},n.target=function(t){return arguments.length?(e=Et(t),n):e},n.projection=function(t){return arguments.length?(r=t,n):r},n},ta.svg.diagonal.radial=function(){var n=ta.svg.diagonal(),t=jo,e=n.projection;return n.projection=function(n){return arguments.length?e(Fo(t=n)):t},n},ta.svg.symbol=function(){function n(n,r){return(Rl.get(t.call(this,n,r))||Yo)(e.call(this,n,r))}var t=Oo,e=Ho;return n.type=function(e){return arguments.length?(t=Et(e),n):t},n.size=function(t){return arguments.length?(e=Et(t),n):e},n};var Rl=ta.map({circle:Yo,cross:function(n){var t=Math.sqrt(n/5)/2;return"M"+-3*t+","+-t+"H"+-t+"V"+-3*t+"H"+t+"V"+-t+"H"+3*t+"V"+t+"H"+t+"V"+3*t+"H"+-t+"V"+t+"H"+-3*t+"Z"},diamond:function(n){var t=Math.sqrt(n/(2*jl)),e=t*jl;return"M0,"+-t+"L"+e+",0"+" 0,"+t+" "+-e+",0"+"Z"},square:function(n){var t=Math.sqrt(n)/2;return"M"+-t+","+-t+"L"+t+","+-t+" "+t+","+t+" "+-t+","+t+"Z"},"triangle-down":function(n){var t=Math.sqrt(n/Ul),e=t*Ul/2;return"M0,"+e+"L"+t+","+-e+" "+-t+","+-e+"Z"},"triangle-up":function(n){var t=Math.sqrt(n/Ul),e=t*Ul/2;return"M0,"+-e+"L"+t+","+e+" "+-t+","+e+"Z"}});ta.svg.symbolTypes=Rl.keys();var Dl,Pl,Ul=Math.sqrt(3),jl=Math.tan(30*Fa),Fl=[],Hl=0;Fl.call=ka.call,Fl.empty=ka.empty,Fl.node=ka.node,Fl.size=ka.size,ta.transition=function(n){return arguments.length?Dl?n.transition():n:Na.transition()},ta.transition.prototype=Fl,Fl.select=function(n){var t,e,r,u=this.id,i=this.namespace,o=[];n=k(n);for(var a=-1,c=this.length;++a<c;){o.push(t=[]);for(var l=this[a],s=-1,f=l.length;++s<f;)(r=l[s])&&(e=n.call(r,r.__data__,s,a))?("__data__"in r&&(e.__data__=r.__data__),$o(e,s,i,u,r[i][u]),t.push(e)):t.push(null)}return Io(o,i,u)},Fl.selectAll=function(n){var t,e,r,u,i,o=this.id,a=this.namespace,c=[];n=E(n);for(var l=-1,s=this.length;++l<s;)for(var f=this[l],h=-1,g=f.length;++h<g;)if(r=f[h]){i=r[a][o],e=n.call(r,r.__data__,h,l),c.push(t=[]);for(var p=-1,v=e.length;++p<v;)(u=e[p])&&$o(u,p,a,o,i),t.push(u)}return Io(c,a,o)},Fl.filter=function(n){var t,e,r,u=[];"function"!=typeof n&&(n=j(n));for(var i=0,o=this.length;o>i;i++){u.push(t=[]);for(var e=this[i],a=0,c=e.length;c>a;a++)(r=e[a])&&n.call(r,r.__data__,a,i)&&t.push(r)}return Io(u,this.namespace,this.id)},Fl.tween=function(n,t){var e=this.id,r=this.namespace;return arguments.length<2?this.node()[r][e].tween.get(n):H(this,null==t?function(t){t[r][e].tween.remove(n)}:function(u){u[r][e].tween.set(n,t)})},Fl.attr=function(n,t){function e(){this.removeAttribute(a)}function r(){this.removeAttributeNS(a.space,a.local)}function u(n){return null==n?e:(n+="",function(){var t,e=this.getAttribute(a);return e!==n&&(t=o(e,n),function(n){this.setAttribute(a,t(n))})})}function i(n){return null==n?r:(n+="",function(){var t,e=this.getAttributeNS(a.space,a.local);return e!==n&&(t=o(e,n),function(n){this.setAttributeNS(a.space,a.local,t(n))})})}if(arguments.length<2){for(t in n)this.attr(t,n[t]);return this}var o="transform"==n?Ou:yu,a=ta.ns.qualify(n);return Zo(this,"attr."+n,t,a.local?i:u)},Fl.attrTween=function(n,t){function e(n,e){var r=t.call(this,n,e,this.getAttribute(u));return r&&function(n){this.setAttribute(u,r(n))}}function r(n,e){var r=t.call(this,n,e,this.getAttributeNS(u.space,u.local));return r&&function(n){this.setAttributeNS(u.space,u.local,r(n))}}var u=ta.ns.qualify(n);return this.tween("attr."+n,u.local?r:e)},Fl.style=function(n,t,e){function r(){this.style.removeProperty(n)}function u(t){return null==t?r:(t+="",function(){var r,u=oa.getComputedStyle(this,null).getPropertyValue(n);return u!==t&&(r=yu(u,t),function(t){this.style.setProperty(n,r(t),e)})})}var i=arguments.length;if(3>i){if("string"!=typeof n){2>i&&(t="");for(e in n)this.style(e,n[e],t);return this}e=""}return Zo(this,"style."+n,t,u)},Fl.styleTween=function(n,t,e){function r(r,u){var i=t.call(this,r,u,oa.getComputedStyle(this,null).getPropertyValue(n));return i&&function(t){this.style.setProperty(n,i(t),e)}}return arguments.length<3&&(e=""),this.tween("style."+n,r)},Fl.text=function(n){return Zo(this,"text",n,Vo)},Fl.remove=function(){var n=this.namespace;return this.each("end.transition",function(){var t;this[n].count<2&&(t=this.parentNode)&&t.removeChild(this)})},Fl.ease=function(n){var t=this.id,e=this.namespace;return arguments.length<1?this.node()[e][t].ease:("function"!=typeof n&&(n=ta.ease.apply(ta,arguments)),H(this,function(r){r[e][t].ease=n}))},Fl.delay=function(n){var t=this.id,e=this.namespace;return arguments.length<1?this.node()[e][t].delay:H(this,"function"==typeof n?function(r,u,i){r[e][t].delay=+n.call(r,r.__data__,u,i)}:(n=+n,function(r){r[e][t].delay=n}))},Fl.duration=function(n){var t=this.id,e=this.namespace;return arguments.length<1?this.node()[e][t].duration:H(this,"function"==typeof n?function(r,u,i){r[e][t].duration=Math.max(1,n.call(r,r.__data__,u,i))}:(n=Math.max(1,n),function(r){r[e][t].duration=n}))},Fl.each=function(n,t){var e=this.id,r=this.namespace;if(arguments.length<2){var u=Pl,i=Dl;Dl=e,H(this,function(t,u,i){Pl=t[r][e],n.call(t,t.__data__,u,i)}),Pl=u,Dl=i}else H(this,function(u){var i=u[r][e];(i.event||(i.event=ta.dispatch("start","end","interrupt"))).on(n,t)});return this},Fl.transition=function(){for(var n,t,e,r,u=this.id,i=++Hl,o=this.namespace,a=[],c=0,l=this.length;l>c;c++){a.push(n=[]);for(var t=this[c],s=0,f=t.length;f>s;s++)(e=t[s])&&(r=e[o][u],$o(e,s,o,i,{time:r.time,ease:r.ease,delay:r.delay+r.duration,duration:r.duration})),n.push(e)}return Io(a,o,i)},ta.svg.axis=function(){function n(n){n.each(function(){var n,l=ta.select(this),s=this.__chart__||e,f=this.__chart__=e.copy(),h=null==c?f.ticks?f.ticks.apply(f,a):f.domain():c,g=null==t?f.tickFormat?f.tickFormat.apply(f,a):At:t,p=l.selectAll(".tick").data(h,f),v=p.enter().insert("g",".domain").attr("class","tick").style("opacity",Ta),d=ta.transition(p.exit()).style("opacity",Ta).remove(),m=ta.transition(p.order()).style("opacity",1),y=Math.max(u,0)+o,M=ji(f),x=l.selectAll(".domain").data([0]),b=(x.enter().append("path").attr("class","domain"),ta.transition(x));v.append("line"),v.append("text");var _,w,S,k,E=v.select("line"),A=m.select("line"),N=p.select("text").text(g),C=v.select("text"),z=m.select("text"),q="top"===r||"left"===r?-1:1;if("bottom"===r||"top"===r?(n=Bo,_="x",S="y",w="x2",k="y2",N.attr("dy",0>q?"0em":".71em").style("text-anchor","middle"),b.attr("d","M"+M[0]+","+q*i+"V0H"+M[1]+"V"+q*i)):(n=Wo,_="y",S="x",w="y2",k="x2",N.attr("dy",".32em").style("text-anchor",0>q?"end":"start"),b.attr("d","M"+q*i+","+M[0]+"H0V"+M[1]+"H"+q*i)),E.attr(k,q*u),C.attr(S,q*y),A.attr(w,0).attr(k,q*u),z.attr(_,0).attr(S,q*y),f.rangeBand){var L=f,T=L.rangeBand()/2;s=f=function(n){return L(n)+T}}else s.rangeBand?s=f:d.call(n,f,s);v.call(n,s,f),m.call(n,f,f)})}var t,e=ta.scale.linear(),r=Ol,u=6,i=6,o=3,a=[10],c=null;return n.scale=function(t){return arguments.length?(e=t,n):e},n.orient=function(t){return arguments.length?(r=t in Yl?t+"":Ol,n):r},n.ticks=function(){return arguments.length?(a=arguments,n):a},n.tickValues=function(t){return arguments.length?(c=t,n):c},n.tickFormat=function(e){return arguments.length?(t=e,n):t},n.tickSize=function(t){var e=arguments.length;return e?(u=+t,i=+arguments[e-1],n):u},n.innerTickSize=function(t){return arguments.length?(u=+t,n):u},n.outerTickSize=function(t){return arguments.length?(i=+t,n):i},n.tickPadding=function(t){return arguments.length?(o=+t,n):o},n.tickSubdivide=function(){return arguments.length&&n},n};var Ol="bottom",Yl={top:1,right:1,bottom:1,left:1};ta.svg.brush=function(){function n(i){i.each(function(){var i=ta.select(this).style("pointer-events","all").style("-webkit-tap-highlight-color","rgba(0,0,0,0)").on("mousedown.brush",u).on("touchstart.brush",u),o=i.selectAll(".background").data([0]);o.enter().append("rect").attr("class","background").style("visibility","hidden").style("cursor","crosshair"),i.selectAll(".extent").data([0]).enter().append("rect").attr("class","extent").style("cursor","move");var a=i.selectAll(".resize").data(p,At);a.exit().remove(),a.enter().append("g").attr("class",function(n){return"resize "+n}).style("cursor",function(n){return Il[n]}).append("rect").attr("x",function(n){return/[ew]$/.test(n)?-3:null}).attr("y",function(n){return/^[ns]/.test(n)?-3:null}).attr("width",6).attr("height",6).style("visibility","hidden"),a.style("display",n.empty()?"none":null);var s,f=ta.transition(i),h=ta.transition(o);c&&(s=ji(c),h.attr("x",s[0]).attr("width",s[1]-s[0]),e(f)),l&&(s=ji(l),h.attr("y",s[0]).attr("height",s[1]-s[0]),r(f)),t(f)})}function t(n){n.selectAll(".resize").attr("transform",function(n){return"translate("+s[+/e$/.test(n)]+","+f[+/^s/.test(n)]+")"})}function e(n){n.select(".extent").attr("x",s[0]),n.selectAll(".extent,.n>rect,.s>rect").attr("width",s[1]-s[0])}function r(n){n.select(".extent").attr("y",f[0]),n.selectAll(".extent,.e>rect,.w>rect").attr("height",f[1]-f[0])}function u(){function u(){32==ta.event.keyCode&&(N||(y=null,z[0]-=s[1],z[1]-=f[1],N=2),b())}function p(){32==ta.event.keyCode&&2==N&&(z[0]+=s[1],z[1]+=f[1],N=0,b())}function v(){var n=ta.mouse(x),u=!1;M&&(n[0]+=M[0],n[1]+=M[1]),N||(ta.event.altKey?(y||(y=[(s[0]+s[1])/2,(f[0]+f[1])/2]),z[0]=s[+(n[0]<y[0])],z[1]=f[+(n[1]<y[1])]):y=null),E&&d(n,c,0)&&(e(S),u=!0),A&&d(n,l,1)&&(r(S),u=!0),u&&(t(S),w({type:"brush",mode:N?"move":"resize"}))}function d(n,t,e){var r,u,a=ji(t),c=a[0],l=a[1],p=z[e],v=e?f:s,d=v[1]-v[0];return N&&(c-=p,l-=d+p),r=(e?g:h)?Math.max(c,Math.min(l,n[e])):n[e],N?u=(r+=p)+d:(y&&(p=Math.max(c,Math.min(l,2*y[e]-r))),r>p?(u=r,r=p):u=p),v[0]!=r||v[1]!=u?(e?o=null:i=null,v[0]=r,v[1]=u,!0):void 0}function m(){v(),S.style("pointer-events","all").selectAll(".resize").style("display",n.empty()?"none":null),ta.select("body").style("cursor",null),q.on("mousemove.brush",null).on("mouseup.brush",null).on("touchmove.brush",null).on("touchend.brush",null).on("keydown.brush",null).on("keyup.brush",null),C(),w({type:"brushend"})}var y,M,x=this,_=ta.select(ta.event.target),w=a.of(x,arguments),S=ta.select(x),k=_.datum(),E=!/^(n|s)$/.test(k)&&c,A=!/^(e|w)$/.test(k)&&l,N=_.classed("extent"),C=$(),z=ta.mouse(x),q=ta.select(oa).on("keydown.brush",u).on("keyup.brush",p);if(ta.event.changedTouches?q.on("touchmove.brush",v).on("touchend.brush",m):q.on("mousemove.brush",v).on("mouseup.brush",m),S.interrupt().selectAll("*").interrupt(),N)z[0]=s[0]-z[0],z[1]=f[0]-z[1];else if(k){var L=+/w$/.test(k),T=+/^n/.test(k);M=[s[1-L]-z[0],f[1-T]-z[1]],z[0]=s[L],z[1]=f[T]}else ta.event.altKey&&(y=z.slice());S.style("pointer-events","none").selectAll(".resize").style("display",null),ta.select("body").style("cursor",_.style("cursor")),w({type:"brushstart"}),v()}var i,o,a=w(n,"brushstart","brush","brushend"),c=null,l=null,s=[0,0],f=[0,0],h=!0,g=!0,p=Zl[0];return n.event=function(n){n.each(function(){var n=a.of(this,arguments),t={x:s,y:f,i:i,j:o},e=this.__chart__||t;this.__chart__=t,Dl?ta.select(this).transition().each("start.brush",function(){i=e.i,o=e.j,s=e.x,f=e.y,n({type:"brushstart"})}).tween("brush:brush",function(){var e=Mu(s,t.x),r=Mu(f,t.y);return i=o=null,function(u){s=t.x=e(u),f=t.y=r(u),n({type:"brush",mode:"resize"})}}).each("end.brush",function(){i=t.i,o=t.j,n({type:"brush",mode:"resize"}),n({type:"brushend"})}):(n({type:"brushstart"}),n({type:"brush",mode:"resize"}),n({type:"brushend"}))})},n.x=function(t){return arguments.length?(c=t,p=Zl[!c<<1|!l],n):c},n.y=function(t){return arguments.length?(l=t,p=Zl[!c<<1|!l],n):l},n.clamp=function(t){return arguments.length?(c&&l?(h=!!t[0],g=!!t[1]):c?h=!!t:l&&(g=!!t),n):c&&l?[h,g]:c?h:l?g:null},n.extent=function(t){var e,r,u,a,h;return arguments.length?(c&&(e=t[0],r=t[1],l&&(e=e[0],r=r[0]),i=[e,r],c.invert&&(e=c(e),r=c(r)),e>r&&(h=e,e=r,r=h),(e!=s[0]||r!=s[1])&&(s=[e,r])),l&&(u=t[0],a=t[1],c&&(u=u[1],a=a[1]),o=[u,a],l.invert&&(u=l(u),a=l(a)),u>a&&(h=u,u=a,a=h),(u!=f[0]||a!=f[1])&&(f=[u,a])),n):(c&&(i?(e=i[0],r=i[1]):(e=s[0],r=s[1],c.invert&&(e=c.invert(e),r=c.invert(r)),e>r&&(h=e,e=r,r=h))),l&&(o?(u=o[0],a=o[1]):(u=f[0],a=f[1],l.invert&&(u=l.invert(u),a=l.invert(a)),u>a&&(h=u,u=a,a=h))),c&&l?[[e,u],[r,a]]:c?[e,r]:l&&[u,a])},n.clear=function(){return n.empty()||(s=[0,0],f=[0,0],i=o=null),n},n.empty=function(){return!!c&&s[0]==s[1]||!!l&&f[0]==f[1]},ta.rebind(n,a,"on")};var Il={n:"ns-resize",e:"ew-resize",s:"ns-resize",w:"ew-resize",nw:"nwse-resize",ne:"nesw-resize",se:"nwse-resize",sw:"nesw-resize"},Zl=[["n","e","s","w","nw","ne","se","sw"],["e","w"],["n","s"],[]],Vl=fc.format=mc.timeFormat,Xl=Vl.utc,$l=Xl("%Y-%m-%dT%H:%M:%S.%LZ");Vl.iso=Date.prototype.toISOString&&+new Date("2000-01-01T00:00:00.000Z")?Jo:$l,Jo.parse=function(n){var t=new Date(n);return isNaN(t)?null:t},Jo.toString=$l.toString,fc.second=Ht(function(n){return new hc(1e3*Math.floor(n/1e3))},function(n,t){n.setTime(n.getTime()+1e3*Math.floor(t))},function(n){return n.getSeconds()}),fc.seconds=fc.second.range,fc.seconds.utc=fc.second.utc.range,fc.minute=Ht(function(n){return new hc(6e4*Math.floor(n/6e4))},function(n,t){n.setTime(n.getTime()+6e4*Math.floor(t))},function(n){return n.getMinutes()}),fc.minutes=fc.minute.range,fc.minutes.utc=fc.minute.utc.range,fc.hour=Ht(function(n){var t=n.getTimezoneOffset()/60;return new hc(36e5*(Math.floor(n/36e5-t)+t))},function(n,t){n.setTime(n.getTime()+36e5*Math.floor(t))},function(n){return n.getHours()}),fc.hours=fc.hour.range,fc.hours.utc=fc.hour.utc.range,fc.month=Ht(function(n){return n=fc.day(n),n.setDate(1),n},function(n,t){n.setMonth(n.getMonth()+t)},function(n){return n.getMonth()}),fc.months=fc.month.range,fc.months.utc=fc.month.utc.range;var Bl=[1e3,5e3,15e3,3e4,6e4,3e5,9e5,18e5,36e5,108e5,216e5,432e5,864e5,1728e5,6048e5,2592e6,7776e6,31536e6],Wl=[[fc.second,1],[fc.second,5],[fc.second,15],[fc.second,30],[fc.minute,1],[fc.minute,5],[fc.minute,15],[fc.minute,30],[fc.hour,1],[fc.hour,3],[fc.hour,6],[fc.hour,12],[fc.day,1],[fc.day,2],[fc.week,1],[fc.month,1],[fc.month,3],[fc.year,1]],Jl=Vl.multi([[".%L",function(n){return n.getMilliseconds()}],[":%S",function(n){return n.getSeconds()}],["%I:%M",function(n){return n.getMinutes()}],["%I %p",function(n){return n.getHours()}],["%a %d",function(n){return n.getDay()&&1!=n.getDate()}],["%b %d",function(n){return 1!=n.getDate()}],["%B",function(n){return n.getMonth()}],["%Y",Ce]]),Gl={range:function(n,t,e){return ta.range(Math.ceil(n/e)*e,+t,e).map(Ko)},floor:At,ceil:At};Wl.year=fc.year,fc.scale=function(){return Go(ta.scale.linear(),Wl,Jl)};var Kl=Wl.map(function(n){return[n[0].utc,n[1]]}),Ql=Xl.multi([[".%L",function(n){return n.getUTCMilliseconds()}],[":%S",function(n){return n.getUTCSeconds()}],["%I:%M",function(n){return n.getUTCMinutes()}],["%I %p",function(n){return n.getUTCHours()}],["%a %d",function(n){return n.getUTCDay()&&1!=n.getUTCDate()}],["%b %d",function(n){return 1!=n.getUTCDate()}],["%B",function(n){return n.getUTCMonth()}],["%Y",Ce]]);Kl.year=fc.year.utc,fc.scale.utc=function(){return Go(ta.scale.linear(),Kl,Ql)},ta.text=Nt(function(n){return n.responseText}),ta.json=function(n,t){return Ct(n,"application/json",Qo,t)},ta.html=function(n,t){return Ct(n,"text/html",na,t)},ta.xml=Nt(function(n){return n.responseXML}),"function"==typeof define&&define.amd?define(ta):"object"==typeof module&&module.exports&&(module.exports=ta),this.d3=ta}();
2309 do e=2*Math.random()-1,r=2*Math.random()-1,u=e*e+r*r;while(!u||u>1);return n+t*e*Math.sqrt(-2*Math.log(u)/u)}},logNormal:function(){var n=ta.random.normal.apply(ta,arguments);return function(){return Math.exp(n())}},bates:function(n){var t=ta.random.irwinHall(n);return function(){return t()/n}},irwinHall:function(n){return function(){for(var t=0,e=0;n>e;e++)t+=Math.random();return t}}},ta.scale={};var bl={floor:At,ceil:At};ta.scale.linear=function(){return Ii([0,1],[0,1],yu,!1)};var _l={s:1,g:1,p:1,r:1,e:1};ta.scale.log=function(){return Gi(ta.scale.linear().domain([0,1]),10,!0,[1,10])};var wl=ta.format(".0e"),Sl={floor:function(n){return-Math.ceil(-n)},ceil:function(n){return-Math.floor(-n)}};ta.scale.pow=function(){return Ki(ta.scale.linear(),1,[0,1])},ta.scale.sqrt=function(){return ta.scale.pow().exponent(.5)},ta.scale.ordinal=function(){return no([],{t:"range",a:[[]]})},ta.scale.category10=function(){return ta.scale.ordinal().range(kl)},ta.scale.category20=function(){return ta.scale.ordinal().range(El)},ta.scale.category20b=function(){return ta.scale.ordinal().range(Al)},ta.scale.category20c=function(){return ta.scale.ordinal().range(Nl)};var kl=[2062260,16744206,2924588,14034728,9725885,9197131,14907330,8355711,12369186,1556175].map(Mt),El=[2062260,11454440,16744206,16759672,2924588,10018698,14034728,16750742,9725885,12955861,9197131,12885140,14907330,16234194,8355711,13092807,12369186,14408589,1556175,10410725].map(Mt),Al=[3750777,5395619,7040719,10264286,6519097,9216594,11915115,13556636,9202993,12426809,15186514,15190932,8666169,11356490,14049643,15177372,8077683,10834324,13528509,14589654].map(Mt),Nl=[3244733,7057110,10406625,13032431,15095053,16616764,16625259,16634018,3253076,7652470,10607003,13101504,7695281,10394312,12369372,14342891,6513507,9868950,12434877,14277081].map(Mt);ta.scale.quantile=function(){return to([],[])},ta.scale.quantize=function(){return eo(0,1,[0,1])},ta.scale.threshold=function(){return ro([.5],[0,1])},ta.scale.identity=function(){return uo([0,1])},ta.svg={},ta.svg.arc=function(){function n(){var n=Math.max(0,+e.apply(this,arguments)),l=Math.max(0,+r.apply(this,arguments)),s=o.apply(this,arguments)-ja,f=a.apply(this,arguments)-ja,h=Math.abs(f-s),g=s>f?0:1;if(n>l&&(p=l,l=n,n=p),h>=Ua)return t(l,g)+(n?t(n,1-g):"")+"Z";var p,v,d,m,y,M,x,b,_,w,S,k,E=0,A=0,N=[];if((m=(+c.apply(this,arguments)||0)/2)&&(d=i===Cl?Math.sqrt(n*n+l*l):+i.apply(this,arguments),g||(A*=-1),l&&(A=tt(d/l*Math.sin(m))),n&&(E=tt(d/n*Math.sin(m)))),l){y=l*Math.cos(s+A),M=l*Math.sin(s+A),x=l*Math.cos(f-A),b=l*Math.sin(f-A);var C=Math.abs(f-s-2*A)<=Da?0:1;if(A&&fo(y,M,x,b)===g^C){var z=(s+f)/2;y=l*Math.cos(z),M=l*Math.sin(z),x=b=null}}else y=M=0;if(n){_=n*Math.cos(f-E),w=n*Math.sin(f-E),S=n*Math.cos(s+E),k=n*Math.sin(s+E);var q=Math.abs(s-f+2*E)<=Da?0:1;if(E&&fo(_,w,S,k)===1-g^q){var L=(s+f)/2;_=n*Math.cos(L),w=n*Math.sin(L),S=k=null}}else _=w=0;if((p=Math.min(Math.abs(l-n)/2,+u.apply(this,arguments)))>.001){v=l>n^g?0:1;var T=null==S?[_,w]:null==x?[y,M]:Tr([y,M],[S,k],[x,b],[_,w]),R=y-T[0],D=M-T[1],P=x-T[0],U=b-T[1],j=1/Math.sin(Math.acos((R*P+D*U)/(Math.sqrt(R*R+D*D)*Math.sqrt(P*P+U*U)))/2),F=Math.sqrt(T[0]*T[0]+T[1]*T[1]);if(null!=x){var H=Math.min(p,(l-F)/(j+1)),O=ho(null==S?[_,w]:[S,k],[y,M],l,H,g),Y=ho([x,b],[_,w],l,H,g);p===H?N.push("M",O[0],"A",H,",",H," 0 0,",v," ",O[1],"A",l,",",l," 0 ",1-g^fo(O[1][0],O[1][1],Y[1][0],Y[1][1]),",",g," ",Y[1],"A",H,",",H," 0 0,",v," ",Y[0]):N.push("M",O[0],"A",H,",",H," 0 1,",v," ",Y[0])}else N.push("M",y,",",M);if(null!=S){var I=Math.min(p,(n-F)/(j-1)),Z=ho([y,M],[S,k],n,-I,g),V=ho([_,w],null==x?[y,M]:[x,b],n,-I,g);p===I?N.push("L",V[0],"A",I,",",I," 0 0,",v," ",V[1],"A",n,",",n," 0 ",g^fo(V[1][0],V[1][1],Z[1][0],Z[1][1]),",",1-g," ",Z[1],"A",I,",",I," 0 0,",v," ",Z[0]):N.push("L",V[0],"A",I,",",I," 0 0,",v," ",Z[0])}else N.push("L",_,",",w)}else N.push("M",y,",",M),null!=x&&N.push("A",l,",",l," 0 ",C,",",g," ",x,",",b),N.push("L",_,",",w),null!=S&&N.push("A",n,",",n," 0 ",q,",",1-g," ",S,",",k);return N.push("Z"),N.join("")}function t(n,t){return"M0,"+n+"A"+n+","+n+" 0 1,"+t+" 0,"+-n+"A"+n+","+n+" 0 1,"+t+" 0,"+n}var e=oo,r=ao,u=io,i=Cl,o=co,a=lo,c=so;return n.innerRadius=function(t){return arguments.length?(e=Et(t),n):e},n.outerRadius=function(t){return arguments.length?(r=Et(t),n):r},n.cornerRadius=function(t){return arguments.length?(u=Et(t),n):u},n.padRadius=function(t){return arguments.length?(i=t==Cl?Cl:Et(t),n):i},n.startAngle=function(t){return arguments.length?(o=Et(t),n):o},n.endAngle=function(t){return arguments.length?(a=Et(t),n):a},n.padAngle=function(t){return arguments.length?(c=Et(t),n):c},n.centroid=function(){var n=(+e.apply(this,arguments)+ +r.apply(this,arguments))/2,t=(+o.apply(this,arguments)+ +a.apply(this,arguments))/2-ja;return[Math.cos(t)*n,Math.sin(t)*n]},n};var Cl="auto";ta.svg.line=function(){return go(At)};var zl=ta.map({linear:po,"linear-closed":vo,step:mo,"step-before":yo,"step-after":Mo,basis:ko,"basis-open":Eo,"basis-closed":Ao,bundle:No,cardinal:_o,"cardinal-open":xo,"cardinal-closed":bo,monotone:Ro});zl.forEach(function(n,t){t.key=n,t.closed=/-closed$/.test(n)});var ql=[0,2/3,1/3,0],Ll=[0,1/3,2/3,0],Tl=[0,1/6,2/3,1/6];ta.svg.line.radial=function(){var n=go(Do);return n.radius=n.x,delete n.x,n.angle=n.y,delete n.y,n},yo.reverse=Mo,Mo.reverse=yo,ta.svg.area=function(){return Po(At)},ta.svg.area.radial=function(){var n=Po(Do);return n.radius=n.x,delete n.x,n.innerRadius=n.x0,delete n.x0,n.outerRadius=n.x1,delete n.x1,n.angle=n.y,delete n.y,n.startAngle=n.y0,delete n.y0,n.endAngle=n.y1,delete n.y1,n},ta.svg.chord=function(){function n(n,a){var c=t(this,i,n,a),l=t(this,o,n,a);return"M"+c.p0+r(c.r,c.p1,c.a1-c.a0)+(e(c,l)?u(c.r,c.p1,c.r,c.p0):u(c.r,c.p1,l.r,l.p0)+r(l.r,l.p1,l.a1-l.a0)+u(l.r,l.p1,c.r,c.p0))+"Z"}function t(n,t,e,r){var u=t.call(n,e,r),i=a.call(n,u,r),o=c.call(n,u,r)-ja,s=l.call(n,u,r)-ja;return{r:i,a0:o,a1:s,p0:[i*Math.cos(o),i*Math.sin(o)],p1:[i*Math.cos(s),i*Math.sin(s)]}}function e(n,t){return n.a0==t.a0&&n.a1==t.a1}function r(n,t,e){return"A"+n+","+n+" 0 "+ +(e>Da)+",1 "+t}function u(n,t,e,r){return"Q 0,0 "+r}var i=yr,o=Mr,a=Uo,c=co,l=lo;return n.radius=function(t){return arguments.length?(a=Et(t),n):a},n.source=function(t){return arguments.length?(i=Et(t),n):i},n.target=function(t){return arguments.length?(o=Et(t),n):o},n.startAngle=function(t){return arguments.length?(c=Et(t),n):c},n.endAngle=function(t){return arguments.length?(l=Et(t),n):l},n},ta.svg.diagonal=function(){function n(n,u){var i=t.call(this,n,u),o=e.call(this,n,u),a=(i.y+o.y)/2,c=[i,{x:i.x,y:a},{x:o.x,y:a},o];return c=c.map(r),"M"+c[0]+"C"+c[1]+" "+c[2]+" "+c[3]}var t=yr,e=Mr,r=jo;return n.source=function(e){return arguments.length?(t=Et(e),n):t},n.target=function(t){return arguments.length?(e=Et(t),n):e},n.projection=function(t){return arguments.length?(r=t,n):r},n},ta.svg.diagonal.radial=function(){var n=ta.svg.diagonal(),t=jo,e=n.projection;return n.projection=function(n){return arguments.length?e(Fo(t=n)):t},n},ta.svg.symbol=function(){function n(n,r){return(Rl.get(t.call(this,n,r))||Yo)(e.call(this,n,r))}var t=Oo,e=Ho;return n.type=function(e){return arguments.length?(t=Et(e),n):t},n.size=function(t){return arguments.length?(e=Et(t),n):e},n};var Rl=ta.map({circle:Yo,cross:function(n){var t=Math.sqrt(n/5)/2;return"M"+-3*t+","+-t+"H"+-t+"V"+-3*t+"H"+t+"V"+-t+"H"+3*t+"V"+t+"H"+t+"V"+3*t+"H"+-t+"V"+t+"H"+-3*t+"Z"},diamond:function(n){var t=Math.sqrt(n/(2*jl)),e=t*jl;return"M0,"+-t+"L"+e+",0"+" 0,"+t+" "+-e+",0"+"Z"},square:function(n){var t=Math.sqrt(n)/2;return"M"+-t+","+-t+"L"+t+","+-t+" "+t+","+t+" "+-t+","+t+"Z"},"triangle-down":function(n){var t=Math.sqrt(n/Ul),e=t*Ul/2;return"M0,"+e+"L"+t+","+-e+" "+-t+","+-e+"Z"},"triangle-up":function(n){var t=Math.sqrt(n/Ul),e=t*Ul/2;return"M0,"+-e+"L"+t+","+e+" "+-t+","+e+"Z"}});ta.svg.symbolTypes=Rl.keys();var Dl,Pl,Ul=Math.sqrt(3),jl=Math.tan(30*Fa),Fl=[],Hl=0;Fl.call=ka.call,Fl.empty=ka.empty,Fl.node=ka.node,Fl.size=ka.size,ta.transition=function(n){return arguments.length?Dl?n.transition():n:Na.transition()},ta.transition.prototype=Fl,Fl.select=function(n){var t,e,r,u=this.id,i=this.namespace,o=[];n=k(n);for(var a=-1,c=this.length;++a<c;){o.push(t=[]);for(var l=this[a],s=-1,f=l.length;++s<f;)(r=l[s])&&(e=n.call(r,r.__data__,s,a))?("__data__"in r&&(e.__data__=r.__data__),$o(e,s,i,u,r[i][u]),t.push(e)):t.push(null)}return Io(o,i,u)},Fl.selectAll=function(n){var t,e,r,u,i,o=this.id,a=this.namespace,c=[];n=E(n);for(var l=-1,s=this.length;++l<s;)for(var f=this[l],h=-1,g=f.length;++h<g;)if(r=f[h]){i=r[a][o],e=n.call(r,r.__data__,h,l),c.push(t=[]);for(var p=-1,v=e.length;++p<v;)(u=e[p])&&$o(u,p,a,o,i),t.push(u)}return Io(c,a,o)},Fl.filter=function(n){var t,e,r,u=[];"function"!=typeof n&&(n=j(n));for(var i=0,o=this.length;o>i;i++){u.push(t=[]);for(var e=this[i],a=0,c=e.length;c>a;a++)(r=e[a])&&n.call(r,r.__data__,a,i)&&t.push(r)}return Io(u,this.namespace,this.id)},Fl.tween=function(n,t){var e=this.id,r=this.namespace;return arguments.length<2?this.node()[r][e].tween.get(n):H(this,null==t?function(t){t[r][e].tween.remove(n)}:function(u){u[r][e].tween.set(n,t)})},Fl.attr=function(n,t){function e(){this.removeAttribute(a)}function r(){this.removeAttributeNS(a.space,a.local)}function u(n){return null==n?e:(n+="",function(){var t,e=this.getAttribute(a);return e!==n&&(t=o(e,n),function(n){this.setAttribute(a,t(n))})})}function i(n){return null==n?r:(n+="",function(){var t,e=this.getAttributeNS(a.space,a.local);return e!==n&&(t=o(e,n),function(n){this.setAttributeNS(a.space,a.local,t(n))})})}if(arguments.length<2){for(t in n)this.attr(t,n[t]);return this}var o="transform"==n?Ou:yu,a=ta.ns.qualify(n);return Zo(this,"attr."+n,t,a.local?i:u)},Fl.attrTween=function(n,t){function e(n,e){var r=t.call(this,n,e,this.getAttribute(u));return r&&function(n){this.setAttribute(u,r(n))}}function r(n,e){var r=t.call(this,n,e,this.getAttributeNS(u.space,u.local));return r&&function(n){this.setAttributeNS(u.space,u.local,r(n))}}var u=ta.ns.qualify(n);return this.tween("attr."+n,u.local?r:e)},Fl.style=function(n,t,e){function r(){this.style.removeProperty(n)}function u(t){return null==t?r:(t+="",function(){var r,u=oa.getComputedStyle(this,null).getPropertyValue(n);return u!==t&&(r=yu(u,t),function(t){this.style.setProperty(n,r(t),e)})})}var i=arguments.length;if(3>i){if("string"!=typeof n){2>i&&(t="");for(e in n)this.style(e,n[e],t);return this}e=""}return Zo(this,"style."+n,t,u)},Fl.styleTween=function(n,t,e){function r(r,u){var i=t.call(this,r,u,oa.getComputedStyle(this,null).getPropertyValue(n));return i&&function(t){this.style.setProperty(n,i(t),e)}}return arguments.length<3&&(e=""),this.tween("style."+n,r)},Fl.text=function(n){return Zo(this,"text",n,Vo)},Fl.remove=function(){var n=this.namespace;return this.each("end.transition",function(){var t;this[n].count<2&&(t=this.parentNode)&&t.removeChild(this)})},Fl.ease=function(n){var t=this.id,e=this.namespace;return arguments.length<1?this.node()[e][t].ease:("function"!=typeof n&&(n=ta.ease.apply(ta,arguments)),H(this,function(r){r[e][t].ease=n}))},Fl.delay=function(n){var t=this.id,e=this.namespace;return arguments.length<1?this.node()[e][t].delay:H(this,"function"==typeof n?function(r,u,i){r[e][t].delay=+n.call(r,r.__data__,u,i)}:(n=+n,function(r){r[e][t].delay=n}))},Fl.duration=function(n){var t=this.id,e=this.namespace;return arguments.length<1?this.node()[e][t].duration:H(this,"function"==typeof n?function(r,u,i){r[e][t].duration=Math.max(1,n.call(r,r.__data__,u,i))}:(n=Math.max(1,n),function(r){r[e][t].duration=n}))},Fl.each=function(n,t){var e=this.id,r=this.namespace;if(arguments.length<2){var u=Pl,i=Dl;Dl=e,H(this,function(t,u,i){Pl=t[r][e],n.call(t,t.__data__,u,i)}),Pl=u,Dl=i}else H(this,function(u){var i=u[r][e];(i.event||(i.event=ta.dispatch("start","end","interrupt"))).on(n,t)});return this},Fl.transition=function(){for(var n,t,e,r,u=this.id,i=++Hl,o=this.namespace,a=[],c=0,l=this.length;l>c;c++){a.push(n=[]);for(var t=this[c],s=0,f=t.length;f>s;s++)(e=t[s])&&(r=e[o][u],$o(e,s,o,i,{time:r.time,ease:r.ease,delay:r.delay+r.duration,duration:r.duration})),n.push(e)}return Io(a,o,i)},ta.svg.axis=function(){function n(n){n.each(function(){var n,l=ta.select(this),s=this.__chart__||e,f=this.__chart__=e.copy(),h=null==c?f.ticks?f.ticks.apply(f,a):f.domain():c,g=null==t?f.tickFormat?f.tickFormat.apply(f,a):At:t,p=l.selectAll(".tick").data(h,f),v=p.enter().insert("g",".domain").attr("class","tick").style("opacity",Ta),d=ta.transition(p.exit()).style("opacity",Ta).remove(),m=ta.transition(p.order()).style("opacity",1),y=Math.max(u,0)+o,M=ji(f),x=l.selectAll(".domain").data([0]),b=(x.enter().append("path").attr("class","domain"),ta.transition(x));v.append("line"),v.append("text");var _,w,S,k,E=v.select("line"),A=m.select("line"),N=p.select("text").text(g),C=v.select("text"),z=m.select("text"),q="top"===r||"left"===r?-1:1;if("bottom"===r||"top"===r?(n=Bo,_="x",S="y",w="x2",k="y2",N.attr("dy",0>q?"0em":".71em").style("text-anchor","middle"),b.attr("d","M"+M[0]+","+q*i+"V0H"+M[1]+"V"+q*i)):(n=Wo,_="y",S="x",w="y2",k="x2",N.attr("dy",".32em").style("text-anchor",0>q?"end":"start"),b.attr("d","M"+q*i+","+M[0]+"H0V"+M[1]+"H"+q*i)),E.attr(k,q*u),C.attr(S,q*y),A.attr(w,0).attr(k,q*u),z.attr(_,0).attr(S,q*y),f.rangeBand){var L=f,T=L.rangeBand()/2;s=f=function(n){return L(n)+T}}else s.rangeBand?s=f:d.call(n,f,s);v.call(n,s,f),m.call(n,f,f)})}var t,e=ta.scale.linear(),r=Ol,u=6,i=6,o=3,a=[10],c=null;return n.scale=function(t){return arguments.length?(e=t,n):e},n.orient=function(t){return arguments.length?(r=t in Yl?t+"":Ol,n):r},n.ticks=function(){return arguments.length?(a=arguments,n):a},n.tickValues=function(t){return arguments.length?(c=t,n):c},n.tickFormat=function(e){return arguments.length?(t=e,n):t},n.tickSize=function(t){var e=arguments.length;return e?(u=+t,i=+arguments[e-1],n):u},n.innerTickSize=function(t){return arguments.length?(u=+t,n):u},n.outerTickSize=function(t){return arguments.length?(i=+t,n):i},n.tickPadding=function(t){return arguments.length?(o=+t,n):o},n.tickSubdivide=function(){return arguments.length&&n},n};var Ol="bottom",Yl={top:1,right:1,bottom:1,left:1};ta.svg.brush=function(){function n(i){i.each(function(){var i=ta.select(this).style("pointer-events","all").style("-webkit-tap-highlight-color","rgba(0,0,0,0)").on("mousedown.brush",u).on("touchstart.brush",u),o=i.selectAll(".background").data([0]);o.enter().append("rect").attr("class","background").style("visibility","hidden").style("cursor","crosshair"),i.selectAll(".extent").data([0]).enter().append("rect").attr("class","extent").style("cursor","move");var a=i.selectAll(".resize").data(p,At);a.exit().remove(),a.enter().append("g").attr("class",function(n){return"resize "+n}).style("cursor",function(n){return Il[n]}).append("rect").attr("x",function(n){return/[ew]$/.test(n)?-3:null}).attr("y",function(n){return/^[ns]/.test(n)?-3:null}).attr("width",6).attr("height",6).style("visibility","hidden"),a.style("display",n.empty()?"none":null);var s,f=ta.transition(i),h=ta.transition(o);c&&(s=ji(c),h.attr("x",s[0]).attr("width",s[1]-s[0]),e(f)),l&&(s=ji(l),h.attr("y",s[0]).attr("height",s[1]-s[0]),r(f)),t(f)})}function t(n){n.selectAll(".resize").attr("transform",function(n){return"translate("+s[+/e$/.test(n)]+","+f[+/^s/.test(n)]+")"})}function e(n){n.select(".extent").attr("x",s[0]),n.selectAll(".extent,.n>rect,.s>rect").attr("width",s[1]-s[0])}function r(n){n.select(".extent").attr("y",f[0]),n.selectAll(".extent,.e>rect,.w>rect").attr("height",f[1]-f[0])}function u(){function u(){32==ta.event.keyCode&&(N||(y=null,z[0]-=s[1],z[1]-=f[1],N=2),b())}function p(){32==ta.event.keyCode&&2==N&&(z[0]+=s[1],z[1]+=f[1],N=0,b())}function v(){var n=ta.mouse(x),u=!1;M&&(n[0]+=M[0],n[1]+=M[1]),N||(ta.event.altKey?(y||(y=[(s[0]+s[1])/2,(f[0]+f[1])/2]),z[0]=s[+(n[0]<y[0])],z[1]=f[+(n[1]<y[1])]):y=null),E&&d(n,c,0)&&(e(S),u=!0),A&&d(n,l,1)&&(r(S),u=!0),u&&(t(S),w({type:"brush",mode:N?"move":"resize"}))}function d(n,t,e){var r,u,a=ji(t),c=a[0],l=a[1],p=z[e],v=e?f:s,d=v[1]-v[0];return N&&(c-=p,l-=d+p),r=(e?g:h)?Math.max(c,Math.min(l,n[e])):n[e],N?u=(r+=p)+d:(y&&(p=Math.max(c,Math.min(l,2*y[e]-r))),r>p?(u=r,r=p):u=p),v[0]!=r||v[1]!=u?(e?o=null:i=null,v[0]=r,v[1]=u,!0):void 0}function m(){v(),S.style("pointer-events","all").selectAll(".resize").style("display",n.empty()?"none":null),ta.select("body").style("cursor",null),q.on("mousemove.brush",null).on("mouseup.brush",null).on("touchmove.brush",null).on("touchend.brush",null).on("keydown.brush",null).on("keyup.brush",null),C(),w({type:"brushend"})}var y,M,x=this,_=ta.select(ta.event.target),w=a.of(x,arguments),S=ta.select(x),k=_.datum(),E=!/^(n|s)$/.test(k)&&c,A=!/^(e|w)$/.test(k)&&l,N=_.classed("extent"),C=$(),z=ta.mouse(x),q=ta.select(oa).on("keydown.brush",u).on("keyup.brush",p);if(ta.event.changedTouches?q.on("touchmove.brush",v).on("touchend.brush",m):q.on("mousemove.brush",v).on("mouseup.brush",m),S.interrupt().selectAll("*").interrupt(),N)z[0]=s[0]-z[0],z[1]=f[0]-z[1];else if(k){var L=+/w$/.test(k),T=+/^n/.test(k);M=[s[1-L]-z[0],f[1-T]-z[1]],z[0]=s[L],z[1]=f[T]}else ta.event.altKey&&(y=z.slice());S.style("pointer-events","none").selectAll(".resize").style("display",null),ta.select("body").style("cursor",_.style("cursor")),w({type:"brushstart"}),v()}var i,o,a=w(n,"brushstart","brush","brushend"),c=null,l=null,s=[0,0],f=[0,0],h=!0,g=!0,p=Zl[0];return n.event=function(n){n.each(function(){var n=a.of(this,arguments),t={x:s,y:f,i:i,j:o},e=this.__chart__||t;this.__chart__=t,Dl?ta.select(this).transition().each("start.brush",function(){i=e.i,o=e.j,s=e.x,f=e.y,n({type:"brushstart"})}).tween("brush:brush",function(){var e=Mu(s,t.x),r=Mu(f,t.y);return i=o=null,function(u){s=t.x=e(u),f=t.y=r(u),n({type:"brush",mode:"resize"})}}).each("end.brush",function(){i=t.i,o=t.j,n({type:"brush",mode:"resize"}),n({type:"brushend"})}):(n({type:"brushstart"}),n({type:"brush",mode:"resize"}),n({type:"brushend"}))})},n.x=function(t){return arguments.length?(c=t,p=Zl[!c<<1|!l],n):c},n.y=function(t){return arguments.length?(l=t,p=Zl[!c<<1|!l],n):l},n.clamp=function(t){return arguments.length?(c&&l?(h=!!t[0],g=!!t[1]):c?h=!!t:l&&(g=!!t),n):c&&l?[h,g]:c?h:l?g:null},n.extent=function(t){var e,r,u,a,h;return arguments.length?(c&&(e=t[0],r=t[1],l&&(e=e[0],r=r[0]),i=[e,r],c.invert&&(e=c(e),r=c(r)),e>r&&(h=e,e=r,r=h),(e!=s[0]||r!=s[1])&&(s=[e,r])),l&&(u=t[0],a=t[1],c&&(u=u[1],a=a[1]),o=[u,a],l.invert&&(u=l(u),a=l(a)),u>a&&(h=u,u=a,a=h),(u!=f[0]||a!=f[1])&&(f=[u,a])),n):(c&&(i?(e=i[0],r=i[1]):(e=s[0],r=s[1],c.invert&&(e=c.invert(e),r=c.invert(r)),e>r&&(h=e,e=r,r=h))),l&&(o?(u=o[0],a=o[1]):(u=f[0],a=f[1],l.invert&&(u=l.invert(u),a=l.invert(a)),u>a&&(h=u,u=a,a=h))),c&&l?[[e,u],[r,a]]:c?[e,r]:l&&[u,a])},n.clear=function(){return n.empty()||(s=[0,0],f=[0,0],i=o=null),n},n.empty=function(){return!!c&&s[0]==s[1]||!!l&&f[0]==f[1]},ta.rebind(n,a,"on")};var Il={n:"ns-resize",e:"ew-resize",s:"ns-resize",w:"ew-resize",nw:"nwse-resize",ne:"nesw-resize",se:"nwse-resize",sw:"nesw-resize"},Zl=[["n","e","s","w","nw","ne","se","sw"],["e","w"],["n","s"],[]],Vl=fc.format=mc.timeFormat,Xl=Vl.utc,$l=Xl("%Y-%m-%dT%H:%M:%S.%LZ");Vl.iso=Date.prototype.toISOString&&+new Date("2000-01-01T00:00:00.000Z")?Jo:$l,Jo.parse=function(n){var t=new Date(n);return isNaN(t)?null:t},Jo.toString=$l.toString,fc.second=Ht(function(n){return new hc(1e3*Math.floor(n/1e3))},function(n,t){n.setTime(n.getTime()+1e3*Math.floor(t))},function(n){return n.getSeconds()}),fc.seconds=fc.second.range,fc.seconds.utc=fc.second.utc.range,fc.minute=Ht(function(n){return new hc(6e4*Math.floor(n/6e4))},function(n,t){n.setTime(n.getTime()+6e4*Math.floor(t))},function(n){return n.getMinutes()}),fc.minutes=fc.minute.range,fc.minutes.utc=fc.minute.utc.range,fc.hour=Ht(function(n){var t=n.getTimezoneOffset()/60;return new hc(36e5*(Math.floor(n/36e5-t)+t))},function(n,t){n.setTime(n.getTime()+36e5*Math.floor(t))},function(n){return n.getHours()}),fc.hours=fc.hour.range,fc.hours.utc=fc.hour.utc.range,fc.month=Ht(function(n){return n=fc.day(n),n.setDate(1),n},function(n,t){n.setMonth(n.getMonth()+t)},function(n){return n.getMonth()}),fc.months=fc.month.range,fc.months.utc=fc.month.utc.range;var Bl=[1e3,5e3,15e3,3e4,6e4,3e5,9e5,18e5,36e5,108e5,216e5,432e5,864e5,1728e5,6048e5,2592e6,7776e6,31536e6],Wl=[[fc.second,1],[fc.second,5],[fc.second,15],[fc.second,30],[fc.minute,1],[fc.minute,5],[fc.minute,15],[fc.minute,30],[fc.hour,1],[fc.hour,3],[fc.hour,6],[fc.hour,12],[fc.day,1],[fc.day,2],[fc.week,1],[fc.month,1],[fc.month,3],[fc.year,1]],Jl=Vl.multi([[".%L",function(n){return n.getMilliseconds()}],[":%S",function(n){return n.getSeconds()}],["%I:%M",function(n){return n.getMinutes()}],["%I %p",function(n){return n.getHours()}],["%a %d",function(n){return n.getDay()&&1!=n.getDate()}],["%b %d",function(n){return 1!=n.getDate()}],["%B",function(n){return n.getMonth()}],["%Y",Ce]]),Gl={range:function(n,t,e){return ta.range(Math.ceil(n/e)*e,+t,e).map(Ko)},floor:At,ceil:At};Wl.year=fc.year,fc.scale=function(){return Go(ta.scale.linear(),Wl,Jl)};var Kl=Wl.map(function(n){return[n[0].utc,n[1]]}),Ql=Xl.multi([[".%L",function(n){return n.getUTCMilliseconds()}],[":%S",function(n){return n.getUTCSeconds()}],["%I:%M",function(n){return n.getUTCMinutes()}],["%I %p",function(n){return n.getUTCHours()}],["%a %d",function(n){return n.getUTCDay()&&1!=n.getUTCDate()}],["%b %d",function(n){return 1!=n.getUTCDate()}],["%B",function(n){return n.getUTCMonth()}],["%Y",Ce]]);Kl.year=fc.year.utc,fc.scale.utc=function(){return Go(ta.scale.linear(),Kl,Ql)},ta.text=Nt(function(n){return n.responseText}),ta.json=function(n,t){return Ct(n,"application/json",Qo,t)},ta.html=function(n,t){return Ct(n,"text/html",na,t)},ta.xml=Nt(function(n){return n.responseXML}),"function"==typeof define&&define.amd?define(ta):"object"==typeof module&&module.exports&&(module.exports=ta),this.d3=ta}();
2310 ;!function(a){"use strict";function b(a){this.owner=a}function c(a,b){if(Object.create)b.prototype=Object.create(a.prototype);else{var c=function(){};c.prototype=a.prototype,b.prototype=new c}return b.prototype.constructor=b,b}function d(a){var b=this.internal=new e(this);b.loadConfig(a),b.beforeInit(a),b.init(),b.afterInit(a),function c(a,b,d){Object.keys(a).forEach(function(e){b[e]=a[e].bind(d),Object.keys(a[e]).length>0&&c(a[e],b[e],d)})}(h,this,this)}function e(b){var c=this;c.d3=a.d3?a.d3:"undefined"!=typeof require?require("d3"):void 0,c.api=b,c.config=c.getDefaultConfig(),c.data={},c.cache={},c.axes={}}function f(a){b.call(this,a)}function g(a,b){function c(a,b){a.attr("transform",function(a){return"translate("+Math.ceil(b(a)+u)+", 0)"})}function d(a,b){a.attr("transform",function(a){return"translate(0,"+Math.ceil(b(a))+")"})}function e(a){var b=a[0],c=a[a.length-1];return c>b?[b,c]:[c,b]}function f(a){var b,c,d=[];if(a.ticks)return a.ticks.apply(a,n);for(c=a.domain(),b=Math.ceil(c[0]);b<c[1];b++)d.push(b);return d.length>0&&d[0]>0&&d.unshift(d[0]-(d[1]-d[0])),d}function g(){var a,c=p.copy();return b.isCategory&&(a=p.domain(),c.domain([a[0],a[1]-1])),c}function h(a){var b=m?m(a):a;return"undefined"!=typeof b?b:""}function i(a){if(A)return A;var b={h:11.5,w:5.5};return a.select("text").text(h).each(function(a){var c=this.getBoundingClientRect(),d=h(a),e=c.height,f=d?c.width/d.length:void 0;e&&f&&(b.h=e,b.w=f)}).text(""),A=b,b}function j(c){return b.withoutTransition?c:a.transition(c)}function k(m){m.each(function(){function m(a,c){function d(a,b){f=void 0;for(var h=1;h<b.length;h++)if(" "===b.charAt(h)&&(f=h),e=b.substr(0,h+1),g=U.w*e.length,g>c)return d(a.concat(b.substr(0,f?f:h)),b.slice(f?f+1:h));return a.concat(b)}var e,f,g,i=h(a),j=[];return"[object Array]"===Object.prototype.toString.call(i)?i:((!c||0>=c)&&(c=X?95:b.isCategory?Math.ceil(F(G[1])-F(G[0]))-12:110),d(j,i+""))}function n(a,b){var c=U.h;return 0===b&&(c="left"===q||"right"===q?-((V[a.index]-1)*(U.h/2)-3):".71em"),c}function v(a){var b=p(a)+(o?0:u);return L[0]<b&&b<L[1]?r:0}function w(a){return a?a>0?"start":"end":"middle"}function x(a){return a?"rotate("+a+")":""}function y(a){return a?8*Math.sin(Math.PI*(a/180)):0}function z(a){return a?11.5-2.5*(a/15)*(a>0?1:-1):W}var A,B,C,D=k.g=a.select(this),E=this.__chart__||p,F=this.__chart__=g(),G=t?t:f(F),H=D.selectAll(".tick").data(G,F),I=H.enter().insert("g",".domain").attr("class","tick").style("opacity",1e-6),J=H.exit().remove(),K=j(H).style("opacity",1),L=p.rangeExtent?p.rangeExtent():e(p.range()),M=D.selectAll(".domain").data([0]),N=(M.enter().append("path").attr("class","domain"),j(M));I.append("line"),I.append("text");var O=I.select("line"),P=K.select("line"),Q=I.select("text"),R=K.select("text");b.isCategory?(u=Math.ceil((F(1)-F(0))/2),B=o?0:u,C=o?u:0):u=B=0;var S,T,U=i(D.select(".tick")),V=[],W=Math.max(r,0)+s,X="left"===q||"right"===q;S=H.select("text"),T=S.selectAll("tspan").data(function(a,c){var d=b.tickMultiline?m(a,b.tickWidth):[].concat(h(a));return V[c]=d.length,d.map(function(a){return{index:c,splitted:a}})}),T.enter().append("tspan"),T.exit().remove(),T.text(function(a){return a.splitted});var Y=b.tickTextRotate;switch(q){case"bottom":A=c,O.attr("y2",r),Q.attr("y",W),P.attr("x1",B).attr("x2",B).attr("y2",v),R.attr("x",0).attr("y",z(Y)).style("text-anchor",w(Y)).attr("transform",x(Y)),T.attr("x",0).attr("dy",n).attr("dx",y(Y)),N.attr("d","M"+L[0]+","+l+"V0H"+L[1]+"V"+l);break;case"top":A=c,O.attr("y2",-r),Q.attr("y",-W),P.attr("x2",0).attr("y2",-r),R.attr("x",0).attr("y",-W),S.style("text-anchor","middle"),T.attr("x",0).attr("dy","0em"),N.attr("d","M"+L[0]+","+-l+"V0H"+L[1]+"V"+-l);break;case"left":A=d,O.attr("x2",-r),Q.attr("x",-W),P.attr("x2",-r).attr("y1",C).attr("y2",C),R.attr("x",-W).attr("y",u),S.style("text-anchor","end"),T.attr("x",-W).attr("dy",n),N.attr("d","M"+-l+","+L[0]+"H0V"+L[1]+"H"+-l);break;case"right":A=d,O.attr("x2",r),Q.attr("x",W),P.attr("x2",r).attr("y2",0),R.attr("x",W).attr("y",0),S.style("text-anchor","start"),T.attr("x",W).attr("dy",n),N.attr("d","M"+l+","+L[0]+"H0V"+L[1]+"H"+l)}if(F.rangeBand){var Z=F,$=Z.rangeBand()/2;E=F=function(a){return Z(a)+$}}else E.rangeBand?E=F:J.call(A,F);I.call(A,E),K.call(A,F)})}var l,m,n,o,p=a.scale.linear(),q="bottom",r=6,s=3,t=null,u=0,v=!0;return b=b||{},l=b.withOuterTick?6:0,k.scale=function(a){return arguments.length?(p=a,k):p},k.orient=function(a){return arguments.length?(q=a in{top:1,right:1,bottom:1,left:1}?a+"":"bottom",k):q},k.tickFormat=function(a){return arguments.length?(m=a,k):m},k.tickCentered=function(a){return arguments.length?(o=a,k):o},k.tickOffset=function(){return u},k.tickInterval=function(){var a,c;return b.isCategory?a=2*u:(c=k.g.select("path.domain").node().getTotalLength()-2*l,a=c/k.g.selectAll("line").size()),a===1/0?0:a},k.ticks=function(){return arguments.length?(n=arguments,k):n},k.tickCulling=function(a){return arguments.length?(v=a,k):v},k.tickValues=function(a){if("function"==typeof a)t=function(){return a(p.domain())};else{if(!arguments.length)return t;t=a}return k},k}var h,i,j,k={version:"0.4.11"};k.generate=function(a){return new d(a)},k.chart={fn:d.prototype,internal:{fn:e.prototype,axis:{fn:f.prototype}}},h=k.chart.fn,i=k.chart.internal.fn,j=k.chart.internal.axis.fn,i.beforeInit=function(){},i.afterInit=function(){},i.init=function(){var a=this,b=a.config;if(a.initParams(),b.data_url)a.convertUrlToData(b.data_url,b.data_mimeType,b.data_headers,b.data_keys,a.initWithData);else if(b.data_json)a.initWithData(a.convertJsonToData(b.data_json,b.data_keys));else if(b.data_rows)a.initWithData(a.convertRowsToData(b.data_rows));else{if(!b.data_columns)throw Error("url or json or rows or columns is required.");a.initWithData(a.convertColumnsToData(b.data_columns))}},i.initParams=function(){var a=this,b=a.d3,c=a.config;a.clipId="c3-"+ +new Date+"-clip",a.clipIdForXAxis=a.clipId+"-xaxis",a.clipIdForYAxis=a.clipId+"-yaxis",a.clipIdForGrid=a.clipId+"-grid",a.clipIdForSubchart=a.clipId+"-subchart",a.clipPath=a.getClipPath(a.clipId),a.clipPathForXAxis=a.getClipPath(a.clipIdForXAxis),a.clipPathForYAxis=a.getClipPath(a.clipIdForYAxis),a.clipPathForGrid=a.getClipPath(a.clipIdForGrid),a.clipPathForSubchart=a.getClipPath(a.clipIdForSubchart),a.dragStart=null,a.dragging=!1,a.flowing=!1,a.cancelClick=!1,a.mouseover=!1,a.transiting=!1,a.color=a.generateColor(),a.levelColor=a.generateLevelColor(),a.dataTimeFormat=c.data_xLocaltime?b.time.format:b.time.format.utc,a.axisTimeFormat=c.axis_x_localtime?b.time.format:b.time.format.utc,a.defaultAxisTimeFormat=a.axisTimeFormat.multi([[".%L",function(a){return a.getMilliseconds()}],[":%S",function(a){return a.getSeconds()}],["%I:%M",function(a){return a.getMinutes()}],["%I %p",function(a){return a.getHours()}],["%-m/%-d",function(a){return a.getDay()&&1!==a.getDate()}],["%-m/%-d",function(a){return 1!==a.getDate()}],["%-m/%-d",function(a){return a.getMonth()}],["%Y/%-m/%-d",function(){return!0}]]),a.hiddenTargetIds=[],a.hiddenLegendIds=[],a.focusedTargetIds=[],a.defocusedTargetIds=[],a.xOrient=c.axis_rotated?"left":"bottom",a.yOrient=c.axis_rotated?c.axis_y_inner?"top":"bottom":c.axis_y_inner?"right":"left",a.y2Orient=c.axis_rotated?c.axis_y2_inner?"bottom":"top":c.axis_y2_inner?"left":"right",a.subXOrient=c.axis_rotated?"left":"bottom",a.isLegendRight="right"===c.legend_position,a.isLegendInset="inset"===c.legend_position,a.isLegendTop="top-left"===c.legend_inset_anchor||"top-right"===c.legend_inset_anchor,a.isLegendLeft="top-left"===c.legend_inset_anchor||"bottom-left"===c.legend_inset_anchor,a.legendStep=0,a.legendItemWidth=0,a.legendItemHeight=0,a.currentMaxTickWidths={x:0,y:0,y2:0},a.rotated_padding_left=30,a.rotated_padding_right=c.axis_rotated&&!c.axis_x_show?0:30,a.rotated_padding_top=5,a.withoutFadeIn={},a.intervalForObserveInserted=void 0,a.axes.subx=b.selectAll([])},i.initChartElements=function(){this.initBar&&this.initBar(),this.initLine&&this.initLine(),this.initArc&&this.initArc(),this.initGauge&&this.initGauge(),this.initText&&this.initText()},i.initWithData=function(a){var b,c,d=this,e=d.d3,g=d.config,h=!0;d.axis=new f(d),d.initPie&&d.initPie(),d.initBrush&&d.initBrush(),d.initZoom&&d.initZoom(),g.bindto?"function"==typeof g.bindto.node?d.selectChart=g.bindto:d.selectChart=e.select(g.bindto):d.selectChart=e.selectAll([]),d.selectChart.empty()&&(d.selectChart=e.select(document.createElement("div")).style("opacity",0),d.observeInserted(d.selectChart),h=!1),d.selectChart.html("").classed("c3",!0),d.data.xs={},d.data.targets=d.convertDataToTargets(a),g.data_filter&&(d.data.targets=d.data.targets.filter(g.data_filter)),g.data_hide&&d.addHiddenTargetIds(g.data_hide===!0?d.mapToIds(d.data.targets):g.data_hide),g.legend_hide&&d.addHiddenLegendIds(g.legend_hide===!0?d.mapToIds(d.data.targets):g.legend_hide),d.hasType("gauge")&&(g.legend_show=!1),d.updateSizes(),d.updateScales(),d.x.domain(e.extent(d.getXDomain(d.data.targets))),d.y.domain(d.getYDomain(d.data.targets,"y")),d.y2.domain(d.getYDomain(d.data.targets,"y2")),d.subX.domain(d.x.domain()),d.subY.domain(d.y.domain()),d.subY2.domain(d.y2.domain()),d.orgXDomain=d.x.domain(),d.brush&&d.brush.scale(d.subX),g.zoom_enabled&&d.zoom.scale(d.x),d.svg=d.selectChart.append("svg").style("overflow","hidden").on("mouseenter",function(){return g.onmouseover.call(d)}).on("mouseleave",function(){return g.onmouseout.call(d)}),d.config.svg_classname&&d.svg.attr("class",d.config.svg_classname),b=d.svg.append("defs"),d.clipChart=d.appendClip(b,d.clipId),d.clipXAxis=d.appendClip(b,d.clipIdForXAxis),d.clipYAxis=d.appendClip(b,d.clipIdForYAxis),d.clipGrid=d.appendClip(b,d.clipIdForGrid),d.clipSubchart=d.appendClip(b,d.clipIdForSubchart),d.updateSvgSize(),c=d.main=d.svg.append("g").attr("transform",d.getTranslate("main")),d.initSubchart&&d.initSubchart(),d.initTooltip&&d.initTooltip(),d.initLegend&&d.initLegend(),d.initTitle&&d.initTitle(),c.append("text").attr("class",l.text+" "+l.empty).attr("text-anchor","middle").attr("dominant-baseline","middle"),d.initRegion(),d.initGrid(),c.append("g").attr("clip-path",d.clipPath).attr("class",l.chart),g.grid_lines_front&&d.initGridLines(),d.initEventRect(),d.initChartElements(),c.insert("rect",g.zoom_privileged?null:"g."+l.regions).attr("class",l.zoomRect).attr("width",d.width).attr("height",d.height).style("opacity",0).on("dblclick.zoom",null),g.axis_x_extent&&d.brush.extent(d.getDefaultExtent()),d.axis.init(),d.updateTargets(d.data.targets),h&&(d.updateDimension(),d.config.oninit.call(d),d.redraw({withTransition:!1,withTransform:!0,withUpdateXDomain:!0,withUpdateOrgXDomain:!0,withTransitionForAxis:!1})),d.bindResize(),d.api.element=d.selectChart.node()},i.smoothLines=function(a,b){var c=this;"grid"===b&&a.each(function(){var a=c.d3.select(this),b=a.attr("x1"),d=a.attr("x2"),e=a.attr("y1"),f=a.attr("y2");a.attr({x1:Math.ceil(b),x2:Math.ceil(d),y1:Math.ceil(e),y2:Math.ceil(f)})})},i.updateSizes=function(){var a=this,b=a.config,c=a.legend?a.getLegendHeight():0,d=a.legend?a.getLegendWidth():0,e=a.isLegendRight||a.isLegendInset?0:c,f=a.hasArcType(),g=b.axis_rotated||f?0:a.getHorizontalAxisHeight("x"),h=b.subchart_show&&!f?b.subchart_size_height+g:0;a.currentWidth=a.getCurrentWidth(),a.currentHeight=a.getCurrentHeight(),a.margin=b.axis_rotated?{top:a.getHorizontalAxisHeight("y2")+a.getCurrentPaddingTop(),right:f?0:a.getCurrentPaddingRight(),bottom:a.getHorizontalAxisHeight("y")+e+a.getCurrentPaddingBottom(),left:h+(f?0:a.getCurrentPaddingLeft())}:{top:4+a.getCurrentPaddingTop(),right:f?0:a.getCurrentPaddingRight(),bottom:g+h+e+a.getCurrentPaddingBottom(),left:f?0:a.getCurrentPaddingLeft()},a.margin2=b.axis_rotated?{top:a.margin.top,right:NaN,bottom:20+e,left:a.rotated_padding_left}:{top:a.currentHeight-h-e,right:NaN,bottom:g+e,left:a.margin.left},a.margin3={top:0,right:NaN,bottom:0,left:0},a.updateSizeForLegend&&a.updateSizeForLegend(c,d),a.width=a.currentWidth-a.margin.left-a.margin.right,a.height=a.currentHeight-a.margin.top-a.margin.bottom,a.width<0&&(a.width=0),a.height<0&&(a.height=0),a.width2=b.axis_rotated?a.margin.left-a.rotated_padding_left-a.rotated_padding_right:a.width,a.height2=b.axis_rotated?a.height:a.currentHeight-a.margin2.top-a.margin2.bottom,a.width2<0&&(a.width2=0),a.height2<0&&(a.height2=0),a.arcWidth=a.width-(a.isLegendRight?d+10:0),a.arcHeight=a.height-(a.isLegendRight?0:10),a.hasType("gauge")&&!b.gauge_fullCircle&&(a.arcHeight+=a.height-a.getGaugeLabelHeight()),a.updateRadius&&a.updateRadius(),a.isLegendRight&&f&&(a.margin3.left=a.arcWidth/2+1.1*a.radiusExpanded)},i.updateTargets=function(a){var b=this;b.updateTargetsForText(a),b.updateTargetsForBar(a),b.updateTargetsForLine(a),b.hasArcType()&&b.updateTargetsForArc&&b.updateTargetsForArc(a),b.updateTargetsForSubchart&&b.updateTargetsForSubchart(a),b.showTargets()},i.showTargets=function(){var a=this;a.svg.selectAll("."+l.target).filter(function(b){return a.isTargetToShow(b.id)}).transition().duration(a.config.transition_duration).style("opacity",1)},i.redraw=function(a,b){var c,d,e,f,g,h,i,j,k,m,n,o,p,q,r,s,t,u,v,x,y,z,A,B,C,D,E,F,G,H=this,I=H.main,J=H.d3,K=H.config,L=H.getShapeIndices(H.isAreaType),M=H.getShapeIndices(H.isBarType),N=H.getShapeIndices(H.isLineType),O=H.hasArcType(),P=H.filterTargetsToShow(H.data.targets),Q=H.xv.bind(H);if(a=a||{},c=w(a,"withY",!0),d=w(a,"withSubchart",!0),e=w(a,"withTransition",!0),h=w(a,"withTransform",!1),i=w(a,"withUpdateXDomain",!1),j=w(a,"withUpdateOrgXDomain",!1),k=w(a,"withTrimXDomain",!0),p=w(a,"withUpdateXAxis",i),m=w(a,"withLegend",!1),n=w(a,"withEventRect",!0),o=w(a,"withDimension",!0),f=w(a,"withTransitionForExit",e),g=w(a,"withTransitionForAxis",e),v=e?K.transition_duration:0,x=f?v:0,y=g?v:0,b=b||H.axis.generateTransitions(y),m&&K.legend_show?H.updateLegend(H.mapToIds(H.data.targets),a,b):o&&H.updateDimension(!0),H.isCategorized()&&0===P.length&&H.x.domain([0,H.axes.x.selectAll(".tick").size()]),P.length?(H.updateXDomain(P,i,j,k),K.axis_x_tick_values||(B=H.axis.updateXAxisTickValues(P))):(H.xAxis.tickValues([]),H.subXAxis.tickValues([])),K.zoom_rescale&&!a.flow&&(E=H.x.orgDomain()),H.y.domain(H.getYDomain(P,"y",E)),H.y2.domain(H.getYDomain(P,"y2",E)),!K.axis_y_tick_values&&K.axis_y_tick_count&&H.yAxis.tickValues(H.axis.generateTickValues(H.y.domain(),K.axis_y_tick_count)),!K.axis_y2_tick_values&&K.axis_y2_tick_count&&H.y2Axis.tickValues(H.axis.generateTickValues(H.y2.domain(),K.axis_y2_tick_count)),H.axis.redraw(b,O),H.axis.updateLabels(e),(i||p)&&P.length)if(K.axis_x_tick_culling&&B){for(C=1;C<B.length;C++)if(B.length/C<K.axis_x_tick_culling_max){D=C;break}H.svg.selectAll("."+l.axisX+" .tick text").each(function(a){var b=B.indexOf(a);b>=0&&J.select(this).style("display",b%D?"none":"block")})}else H.svg.selectAll("."+l.axisX+" .tick text").style("display","block");q=H.generateDrawArea?H.generateDrawArea(L,!1):void 0,r=H.generateDrawBar?H.generateDrawBar(M):void 0,s=H.generateDrawLine?H.generateDrawLine(N,!1):void 0,t=H.generateXYForText(L,M,N,!0),u=H.generateXYForText(L,M,N,!1),c&&(H.subY.domain(H.getYDomain(P,"y")),H.subY2.domain(H.getYDomain(P,"y2"))),H.updateXgridFocus(),I.select("text."+l.text+"."+l.empty).attr("x",H.width/2).attr("y",H.height/2).text(K.data_empty_label_text).transition().style("opacity",P.length?0:1),H.updateGrid(v),H.updateRegion(v),H.updateBar(x),H.updateLine(x),H.updateArea(x),H.updateCircle(),H.hasDataLabel()&&H.updateText(x),H.redrawTitle&&H.redrawTitle(),H.redrawArc&&H.redrawArc(v,x,h),H.redrawSubchart&&H.redrawSubchart(d,b,v,x,L,M,N),I.selectAll("."+l.selectedCircles).filter(H.isBarType.bind(H)).selectAll("circle").remove(),K.interaction_enabled&&!a.flow&&n&&(H.redrawEventRect(),H.updateZoom&&H.updateZoom()),H.updateCircleY(),F=(H.config.axis_rotated?H.circleY:H.circleX).bind(H),G=(H.config.axis_rotated?H.circleX:H.circleY).bind(H),a.flow&&(A=H.generateFlow({targets:P,flow:a.flow,duration:a.flow.duration,drawBar:r,drawLine:s,drawArea:q,cx:F,cy:G,xv:Q,xForText:t,yForText:u})),(v||A)&&H.isTabVisible()?J.transition().duration(v).each(function(){var b=[];[H.redrawBar(r,!0),H.redrawLine(s,!0),H.redrawArea(q,!0),H.redrawCircle(F,G,!0),H.redrawText(t,u,a.flow,!0),H.redrawRegion(!0),H.redrawGrid(!0)].forEach(function(a){a.forEach(function(a){b.push(a)})}),z=H.generateWait(),b.forEach(function(a){z.add(a)})}).call(z,function(){A&&A(),K.onrendered&&K.onrendered.call(H)}):(H.redrawBar(r),H.redrawLine(s),H.redrawArea(q),H.redrawCircle(F,G),H.redrawText(t,u,a.flow),H.redrawRegion(),H.redrawGrid(),K.onrendered&&K.onrendered.call(H)),H.mapToIds(H.data.targets).forEach(function(a){H.withoutFadeIn[a]=!0})},i.updateAndRedraw=function(a){var b,c=this,d=c.config;a=a||{},a.withTransition=w(a,"withTransition",!0),a.withTransform=w(a,"withTransform",!1),a.withLegend=w(a,"withLegend",!1),a.withUpdateXDomain=!0,a.withUpdateOrgXDomain=!0,a.withTransitionForExit=!1,a.withTransitionForTransform=w(a,"withTransitionForTransform",a.withTransition),c.updateSizes(),a.withLegend&&d.legend_show||(b=c.axis.generateTransitions(a.withTransitionForAxis?d.transition_duration:0),c.updateScales(),c.updateSvgSize(),c.transformAll(a.withTransitionForTransform,b)),c.redraw(a,b)},i.redrawWithoutRescale=function(){this.redraw({withY:!1,withSubchart:!1,withEventRect:!1,withTransitionForAxis:!1})},i.isTimeSeries=function(){return"timeseries"===this.config.axis_x_type},i.isCategorized=function(){return this.config.axis_x_type.indexOf("categor")>=0},i.isCustomX=function(){var a=this,b=a.config;return!a.isTimeSeries()&&(b.data_x||v(b.data_xs))},i.isTimeSeriesY=function(){return"timeseries"===this.config.axis_y_type},i.getTranslate=function(a){var b,c,d=this,e=d.config;return"main"===a?(b=s(d.margin.left),c=s(d.margin.top)):"context"===a?(b=s(d.margin2.left),c=s(d.margin2.top)):"legend"===a?(b=d.margin3.left,c=d.margin3.top):"x"===a?(b=0,c=e.axis_rotated?0:d.height):"y"===a?(b=0,c=e.axis_rotated?d.height:0):"y2"===a?(b=e.axis_rotated?0:d.width,c=e.axis_rotated?1:0):"subx"===a?(b=0,c=e.axis_rotated?0:d.height2):"arc"===a&&(b=d.arcWidth/2,c=d.arcHeight/2),"translate("+b+","+c+")"},i.initialOpacity=function(a){return null!==a.value&&this.withoutFadeIn[a.id]?1:0},i.initialOpacityForCircle=function(a){return null!==a.value&&this.withoutFadeIn[a.id]?this.opacityForCircle(a):0},i.opacityForCircle=function(a){var b=this.config.point_show?1:0;return m(a.value)?this.isScatterType(a)?.5:b:0},i.opacityForText=function(){return this.hasDataLabel()?1:0},i.xx=function(a){return a?this.x(a.x):null},i.xv=function(a){var b=this,c=a.value;return b.isTimeSeries()?c=b.parseDate(a.value):b.isCategorized()&&"string"==typeof a.value&&(c=b.config.axis_x_categories.indexOf(a.value)),Math.ceil(b.x(c))},i.yv=function(a){var b=this,c=a.axis&&"y2"===a.axis?b.y2:b.y;return Math.ceil(c(a.value))},i.subxx=function(a){return a?this.subX(a.x):null},i.transformMain=function(a,b){var c,d,e,f=this;b&&b.axisX?c=b.axisX:(c=f.main.select("."+l.axisX),a&&(c=c.transition())),b&&b.axisY?d=b.axisY:(d=f.main.select("."+l.axisY),a&&(d=d.transition())),b&&b.axisY2?e=b.axisY2:(e=f.main.select("."+l.axisY2),a&&(e=e.transition())),(a?f.main.transition():f.main).attr("transform",f.getTranslate("main")),c.attr("transform",f.getTranslate("x")),d.attr("transform",f.getTranslate("y")),e.attr("transform",f.getTranslate("y2")),f.main.select("."+l.chartArcs).attr("transform",f.getTranslate("arc"))},i.transformAll=function(a,b){var c=this;c.transformMain(a,b),c.config.subchart_show&&c.transformContext(a,b),c.legend&&c.transformLegend(a)},i.updateSvgSize=function(){var a=this,b=a.svg.select(".c3-brush .background");a.svg.attr("width",a.currentWidth).attr("height",a.currentHeight),a.svg.selectAll(["#"+a.clipId,"#"+a.clipIdForGrid]).select("rect").attr("width",a.width).attr("height",a.height),a.svg.select("#"+a.clipIdForXAxis).select("rect").attr("x",a.getXAxisClipX.bind(a)).attr("y",a.getXAxisClipY.bind(a)).attr("width",a.getXAxisClipWidth.bind(a)).attr("height",a.getXAxisClipHeight.bind(a)),a.svg.select("#"+a.clipIdForYAxis).select("rect").attr("x",a.getYAxisClipX.bind(a)).attr("y",a.getYAxisClipY.bind(a)).attr("width",a.getYAxisClipWidth.bind(a)).attr("height",a.getYAxisClipHeight.bind(a)),a.svg.select("#"+a.clipIdForSubchart).select("rect").attr("width",a.width).attr("height",b.size()?b.attr("height"):0),a.svg.select("."+l.zoomRect).attr("width",a.width).attr("height",a.height),a.selectChart.style("max-height",a.currentHeight+"px")},i.updateDimension=function(a){var b=this;a||(b.config.axis_rotated?(b.axes.x.call(b.xAxis),b.axes.subx.call(b.subXAxis)):(b.axes.y.call(b.yAxis),b.axes.y2.call(b.y2Axis))),b.updateSizes(),b.updateScales(),b.updateSvgSize(),b.transformAll(!1)},i.observeInserted=function(b){var c,d=this;return"undefined"==typeof MutationObserver?void a.console.error("MutationObserver not defined."):(c=new MutationObserver(function(e){e.forEach(function(e){"childList"===e.type&&e.previousSibling&&(c.disconnect(),d.intervalForObserveInserted=a.setInterval(function(){b.node().parentNode&&(a.clearInterval(d.intervalForObserveInserted),d.updateDimension(),d.brush&&d.brush.update(),d.config.oninit.call(d),d.redraw({withTransform:!0,withUpdateXDomain:!0,withUpdateOrgXDomain:!0,withTransition:!1,withTransitionForTransform:!1,withLegend:!0}),b.transition().style("opacity",1))},10))})}),void c.observe(b.node(),{attributes:!0,childList:!0,characterData:!0}))},i.bindResize=function(){var b=this,c=b.config;if(b.resizeFunction=b.generateResize(),b.resizeFunction.add(function(){c.onresize.call(b)}),c.resize_auto&&b.resizeFunction.add(function(){void 0!==b.resizeTimeout&&a.clearTimeout(b.resizeTimeout),b.resizeTimeout=a.setTimeout(function(){delete b.resizeTimeout,b.api.flush()},100)}),b.resizeFunction.add(function(){c.onresized.call(b)}),a.attachEvent)a.attachEvent("onresize",b.resizeFunction);else if(a.addEventListener)a.addEventListener("resize",b.resizeFunction,!1);else{var d=a.onresize;d?d.add&&d.remove||(d=b.generateResize(),d.add(a.onresize)):d=b.generateResize(),d.add(b.resizeFunction),a.onresize=d}},i.generateResize=function(){function a(){b.forEach(function(a){a()})}var b=[];return a.add=function(a){b.push(a)},a.remove=function(a){for(var c=0;c<b.length;c++)if(b[c]===a){b.splice(c,1);break}},a},i.endall=function(a,b){var c=0;a.each(function(){++c}).each("end",function(){--c||b.apply(this,arguments)})},i.generateWait=function(){var a=[],b=function(b,c){var d=setInterval(function(){var b=0;a.forEach(function(a){if(a.empty())return void(b+=1);try{a.transition()}catch(c){b+=1}}),b===a.length&&(clearInterval(d),c&&c())},10)};return b.add=function(b){a.push(b)},b},i.parseDate=function(b){var c,d=this;return b instanceof Date?c=b:"string"==typeof b?c=d.dataTimeFormat(d.config.data_xFormat).parse(b):"number"!=typeof b||isNaN(b)||(c=new Date(+b)),c&&!isNaN(+c)||a.console.error("Failed to parse x '"+b+"' to Date object"),c},i.isTabVisible=function(){var a;return"undefined"!=typeof document.hidden?a="hidden":"undefined"!=typeof document.mozHidden?a="mozHidden":"undefined"!=typeof document.msHidden?a="msHidden":"undefined"!=typeof document.webkitHidden&&(a="webkitHidden"),!document[a]},i.getDefaultConfig=function(){var a={bindto:"#chart",svg_classname:void 0,size_width:void 0,size_height:void 0,padding_left:void 0,padding_right:void 0,padding_top:void 0,padding_bottom:void 0,resize_auto:!0,zoom_enabled:!1,zoom_extent:void 0,zoom_privileged:!1,zoom_rescale:!1,zoom_onzoom:function(){},zoom_onzoomstart:function(){},zoom_onzoomend:function(){},zoom_x_min:void 0,zoom_x_max:void 0,interaction_brighten:!0,interaction_enabled:!0,onmouseover:function(){},onmouseout:function(){},onresize:function(){},onresized:function(){},oninit:function(){},onrendered:function(){},transition_duration:350,data_x:void 0,data_xs:{},data_xFormat:"%Y-%m-%d",data_xLocaltime:!0,data_xSort:!0,data_idConverter:function(a){return a},data_names:{},data_classes:{},data_groups:[],data_axes:{},data_type:void 0,data_types:{},data_labels:{},data_order:"desc",data_regions:{},data_color:void 0,data_colors:{},data_hide:!1,data_filter:void 0,data_selection_enabled:!1,data_selection_grouped:!1,data_selection_isselectable:function(){return!0},data_selection_multiple:!0,data_selection_draggable:!1,data_onclick:function(){},data_onmouseover:function(){},data_onmouseout:function(){},data_onselected:function(){},data_onunselected:function(){},data_url:void 0,data_headers:void 0,data_json:void 0,data_rows:void 0,data_columns:void 0,data_mimeType:void 0,data_keys:void 0,data_empty_label_text:"",subchart_show:!1,subchart_size_height:60,subchart_axis_x_show:!0,subchart_onbrush:function(){},color_pattern:[],color_threshold:{},legend_show:!0,legend_hide:!1,legend_position:"bottom",legend_inset_anchor:"top-left",legend_inset_x:10,legend_inset_y:0,legend_inset_step:void 0,legend_item_onclick:void 0,legend_item_onmouseover:void 0,legend_item_onmouseout:void 0,legend_equally:!1,legend_padding:0,legend_item_tile_width:10,legend_item_tile_height:10,axis_rotated:!1,axis_x_show:!0,axis_x_type:"indexed",axis_x_localtime:!0,axis_x_categories:[],axis_x_tick_centered:!1,axis_x_tick_format:void 0,axis_x_tick_culling:{},axis_x_tick_culling_max:10,axis_x_tick_count:void 0,axis_x_tick_fit:!0,axis_x_tick_values:null,axis_x_tick_rotate:0,axis_x_tick_outer:!0,axis_x_tick_multiline:!0,axis_x_tick_width:null,axis_x_max:void 0,axis_x_min:void 0,axis_x_padding:{},axis_x_height:void 0,axis_x_extent:void 0,axis_x_label:{},axis_y_show:!0,axis_y_type:void 0,axis_y_max:void 0,axis_y_min:void 0,axis_y_inverted:!1,axis_y_center:void 0,axis_y_inner:void 0,axis_y_label:{},axis_y_tick_format:void 0,axis_y_tick_outer:!0,axis_y_tick_values:null,axis_y_tick_rotate:0,axis_y_tick_count:void 0,axis_y_tick_time_value:void 0,axis_y_tick_time_interval:void 0,axis_y_padding:{},axis_y_default:void 0,axis_y2_show:!1,axis_y2_max:void 0,axis_y2_min:void 0,axis_y2_inverted:!1,axis_y2_center:void 0,axis_y2_inner:void 0,axis_y2_label:{},axis_y2_tick_format:void 0,axis_y2_tick_outer:!0,axis_y2_tick_values:null,axis_y2_tick_count:void 0,axis_y2_padding:{},axis_y2_default:void 0,grid_x_show:!1,grid_x_type:"tick",grid_x_lines:[],grid_y_show:!1,grid_y_lines:[],grid_y_ticks:10,grid_focus_show:!0,grid_lines_front:!0,point_show:!0,point_r:2.5,point_sensitivity:10,point_focus_expand_enabled:!0,point_focus_expand_r:void 0,point_select_r:void 0,line_connectNull:!1,line_step_type:"step",bar_width:void 0,bar_width_ratio:.6,bar_width_max:void 0,bar_zerobased:!0,area_zerobased:!0,area_above:!1,pie_label_show:!0,pie_label_format:void 0,pie_label_threshold:.05,pie_label_ratio:void 0,pie_expand:{},pie_expand_duration:50,gauge_fullCircle:!1,gauge_label_show:!0,gauge_label_format:void 0,gauge_min:0,gauge_max:100,gauge_startingAngle:-1*Math.PI/2,gauge_units:void 0,gauge_width:void 0,gauge_expand:{},gauge_expand_duration:50,donut_label_show:!0,donut_label_format:void 0,donut_label_threshold:.05,donut_label_ratio:void 0,donut_width:void 0,donut_title:"",donut_expand:{},donut_expand_duration:50,spline_interpolation_type:"cardinal",regions:[],tooltip_show:!0,tooltip_grouped:!0,tooltip_format_title:void 0,tooltip_format_name:void 0,tooltip_format_value:void 0,tooltip_position:void 0,tooltip_contents:function(a,b,c,d){return this.getTooltipContent?this.getTooltipContent(a,b,c,d):""},tooltip_init_show:!1,tooltip_init_x:0,tooltip_init_position:{top:"0px",left:"50px"},tooltip_onshow:function(){},tooltip_onhide:function(){},title_text:void 0,title_padding:{top:0,right:0,bottom:0,left:0},title_position:"top-center"};return Object.keys(this.additionalConfig).forEach(function(b){a[b]=this.additionalConfig[b]},this),a},i.additionalConfig={},i.loadConfig=function(a){function b(){var a=d.shift();return a&&c&&"object"==typeof c&&a in c?(c=c[a],b()):a?void 0:c}var c,d,e,f=this.config;Object.keys(f).forEach(function(g){c=a,d=g.split("_"),e=b(),q(e)&&(f[g]=e)})},i.getScale=function(a,b,c){return(c?this.d3.time.scale():this.d3.scale.linear()).range([a,b])},i.getX=function(a,b,c,d){var e,f=this,g=f.getScale(a,b,f.isTimeSeries()),h=c?g.domain(c):g;f.isCategorized()?(d=d||function(){return 0},g=function(a,b){var c=h(a)+d(a);return b?c:Math.ceil(c)}):g=function(a,b){var c=h(a);return b?c:Math.ceil(c)};for(e in h)g[e]=h[e];return g.orgDomain=function(){return h.domain()},f.isCategorized()&&(g.domain=function(a){return arguments.length?(h.domain(a),g):(a=this.orgDomain(),[a[0],a[1]+1])}),g},i.getY=function(a,b,c){var d=this.getScale(a,b,this.isTimeSeriesY());return c&&d.domain(c),d},i.getYScale=function(a){return"y2"===this.axis.getId(a)?this.y2:this.y},i.getSubYScale=function(a){return"y2"===this.axis.getId(a)?this.subY2:this.subY},i.updateScales=function(){var a=this,b=a.config,c=!a.x;a.xMin=b.axis_rotated?1:0,a.xMax=b.axis_rotated?a.height:a.width,a.yMin=b.axis_rotated?0:a.height,a.yMax=b.axis_rotated?a.width:1,a.subXMin=a.xMin,a.subXMax=a.xMax,a.subYMin=b.axis_rotated?0:a.height2,a.subYMax=b.axis_rotated?a.width2:1,a.x=a.getX(a.xMin,a.xMax,c?void 0:a.x.orgDomain(),function(){return a.xAxis.tickOffset()}),a.y=a.getY(a.yMin,a.yMax,c?b.axis_y_default:a.y.domain()),a.y2=a.getY(a.yMin,a.yMax,c?b.axis_y2_default:a.y2.domain()),a.subX=a.getX(a.xMin,a.xMax,a.orgXDomain,function(b){return b%1?0:a.subXAxis.tickOffset()}),a.subY=a.getY(a.subYMin,a.subYMax,c?b.axis_y_default:a.subY.domain()),a.subY2=a.getY(a.subYMin,a.subYMax,c?b.axis_y2_default:a.subY2.domain()),a.xAxisTickFormat=a.axis.getXAxisTickFormat(),a.xAxisTickValues=a.axis.getXAxisTickValues(),a.yAxisTickValues=a.axis.getYAxisTickValues(),a.y2AxisTickValues=a.axis.getY2AxisTickValues(),a.xAxis=a.axis.getXAxis(a.x,a.xOrient,a.xAxisTickFormat,a.xAxisTickValues,b.axis_x_tick_outer),a.subXAxis=a.axis.getXAxis(a.subX,a.subXOrient,a.xAxisTickFormat,a.xAxisTickValues,b.axis_x_tick_outer),a.yAxis=a.axis.getYAxis(a.y,a.yOrient,b.axis_y_tick_format,a.yAxisTickValues,b.axis_y_tick_outer),a.y2Axis=a.axis.getYAxis(a.y2,a.y2Orient,b.axis_y2_tick_format,a.y2AxisTickValues,b.axis_y2_tick_outer),c||(a.brush&&a.brush.scale(a.subX),b.zoom_enabled&&a.zoom.scale(a.x)),a.updateArc&&a.updateArc()},i.getYDomainMin=function(a){var b,c,d,e,f,g,h=this,i=h.config,j=h.mapToIds(a),k=h.getValuesAsIdKeyed(a);if(i.data_groups.length>0)for(g=h.hasNegativeValueInTargets(a),b=0;b<i.data_groups.length;b++)if(e=i.data_groups[b].filter(function(a){return j.indexOf(a)>=0}),0!==e.length)for(d=e[0],g&&k[d]&&k[d].forEach(function(a,b){k[d][b]=0>a?a:0}),c=1;c<e.length;c++)f=e[c],k[f]&&k[f].forEach(function(a,b){h.axis.getId(f)!==h.axis.getId(d)||!k[d]||g&&+a>0||(k[d][b]+=+a)});return h.d3.min(Object.keys(k).map(function(a){return h.d3.min(k[a])}))},i.getYDomainMax=function(a){var b,c,d,e,f,g,h=this,i=h.config,j=h.mapToIds(a),k=h.getValuesAsIdKeyed(a);if(i.data_groups.length>0)for(g=h.hasPositiveValueInTargets(a),b=0;b<i.data_groups.length;b++)if(e=i.data_groups[b].filter(function(a){return j.indexOf(a)>=0}),0!==e.length)for(d=e[0],g&&k[d]&&k[d].forEach(function(a,b){k[d][b]=a>0?a:0}),c=1;c<e.length;c++)f=e[c],k[f]&&k[f].forEach(function(a,b){h.axis.getId(f)!==h.axis.getId(d)||!k[d]||g&&0>+a||(k[d][b]+=+a)});return h.d3.max(Object.keys(k).map(function(a){return h.d3.max(k[a])}))},i.getYDomain=function(a,b,c){var d,e,f,g,h,i,j,k,l,n,o,p=this,q=p.config,r=a.filter(function(a){return p.axis.getId(a.id)===b}),s=c?p.filterByXDomain(r,c):r,u="y2"===b?q.axis_y2_min:q.axis_y_min,w="y2"===b?q.axis_y2_max:q.axis_y_max,x=p.getYDomainMin(s),y=p.getYDomainMax(s),z="y2"===b?q.axis_y2_center:q.axis_y_center,A=p.hasType("bar",s)&&q.bar_zerobased||p.hasType("area",s)&&q.area_zerobased,B="y2"===b?q.axis_y2_inverted:q.axis_y_inverted,C=p.hasDataLabel()&&q.axis_rotated,D=p.hasDataLabel()&&!q.axis_rotated;return x=m(u)?u:m(w)?w>x?x:w-10:x,y=m(w)?w:m(u)?y>u?y:u+10:y,0===s.length?"y2"===b?p.y2.domain():p.y.domain():(isNaN(x)&&(x=0),isNaN(y)&&(y=x),x===y&&(0>x?y=0:x=0),n=x>=0&&y>=0,o=0>=x&&0>=y,(m(u)&&n||m(w)&&o)&&(A=!1),A&&(n&&(x=0),o&&(y=0)),e=Math.abs(y-x),f=g=h=.1*e,"undefined"!=typeof z&&(i=Math.max(Math.abs(x),Math.abs(y)),y=z+i,x=z-i),C?(j=p.getDataLabelLength(x,y,"width"),k=t(p.y.range()),l=[j[0]/k,j[1]/k],
2310 ;!function(a){"use strict";function b(a){this.owner=a}function c(a,b){if(Object.create)b.prototype=Object.create(a.prototype);else{var c=function(){};c.prototype=a.prototype,b.prototype=new c}return b.prototype.constructor=b,b}function d(a){var b=this.internal=new e(this);b.loadConfig(a),b.beforeInit(a),b.init(),b.afterInit(a),function c(a,b,d){Object.keys(a).forEach(function(e){b[e]=a[e].bind(d),Object.keys(a[e]).length>0&&c(a[e],b[e],d)})}(h,this,this)}function e(b){var c=this;c.d3=a.d3?a.d3:"undefined"!=typeof require?require("d3"):void 0,c.api=b,c.config=c.getDefaultConfig(),c.data={},c.cache={},c.axes={}}function f(a){b.call(this,a)}function g(a,b){function c(a,b){a.attr("transform",function(a){return"translate("+Math.ceil(b(a)+u)+", 0)"})}function d(a,b){a.attr("transform",function(a){return"translate(0,"+Math.ceil(b(a))+")"})}function e(a){var b=a[0],c=a[a.length-1];return c>b?[b,c]:[c,b]}function f(a){var b,c,d=[];if(a.ticks)return a.ticks.apply(a,n);for(c=a.domain(),b=Math.ceil(c[0]);b<c[1];b++)d.push(b);return d.length>0&&d[0]>0&&d.unshift(d[0]-(d[1]-d[0])),d}function g(){var a,c=p.copy();return b.isCategory&&(a=p.domain(),c.domain([a[0],a[1]-1])),c}function h(a){var b=m?m(a):a;return"undefined"!=typeof b?b:""}function i(a){if(A)return A;var b={h:11.5,w:5.5};return a.select("text").text(h).each(function(a){var c=this.getBoundingClientRect(),d=h(a),e=c.height,f=d?c.width/d.length:void 0;e&&f&&(b.h=e,b.w=f)}).text(""),A=b,b}function j(c){return b.withoutTransition?c:a.transition(c)}function k(m){m.each(function(){function m(a,c){function d(a,b){f=void 0;for(var h=1;h<b.length;h++)if(" "===b.charAt(h)&&(f=h),e=b.substr(0,h+1),g=U.w*e.length,g>c)return d(a.concat(b.substr(0,f?f:h)),b.slice(f?f+1:h));return a.concat(b)}var e,f,g,i=h(a),j=[];return"[object Array]"===Object.prototype.toString.call(i)?i:((!c||0>=c)&&(c=X?95:b.isCategory?Math.ceil(F(G[1])-F(G[0]))-12:110),d(j,i+""))}function n(a,b){var c=U.h;return 0===b&&(c="left"===q||"right"===q?-((V[a.index]-1)*(U.h/2)-3):".71em"),c}function v(a){var b=p(a)+(o?0:u);return L[0]<b&&b<L[1]?r:0}function w(a){return a?a>0?"start":"end":"middle"}function x(a){return a?"rotate("+a+")":""}function y(a){return a?8*Math.sin(Math.PI*(a/180)):0}function z(a){return a?11.5-2.5*(a/15)*(a>0?1:-1):W}var A,B,C,D=k.g=a.select(this),E=this.__chart__||p,F=this.__chart__=g(),G=t?t:f(F),H=D.selectAll(".tick").data(G,F),I=H.enter().insert("g",".domain").attr("class","tick").style("opacity",1e-6),J=H.exit().remove(),K=j(H).style("opacity",1),L=p.rangeExtent?p.rangeExtent():e(p.range()),M=D.selectAll(".domain").data([0]),N=(M.enter().append("path").attr("class","domain"),j(M));I.append("line"),I.append("text");var O=I.select("line"),P=K.select("line"),Q=I.select("text"),R=K.select("text");b.isCategory?(u=Math.ceil((F(1)-F(0))/2),B=o?0:u,C=o?u:0):u=B=0;var S,T,U=i(D.select(".tick")),V=[],W=Math.max(r,0)+s,X="left"===q||"right"===q;S=H.select("text"),T=S.selectAll("tspan").data(function(a,c){var d=b.tickMultiline?m(a,b.tickWidth):[].concat(h(a));return V[c]=d.length,d.map(function(a){return{index:c,splitted:a}})}),T.enter().append("tspan"),T.exit().remove(),T.text(function(a){return a.splitted});var Y=b.tickTextRotate;switch(q){case"bottom":A=c,O.attr("y2",r),Q.attr("y",W),P.attr("x1",B).attr("x2",B).attr("y2",v),R.attr("x",0).attr("y",z(Y)).style("text-anchor",w(Y)).attr("transform",x(Y)),T.attr("x",0).attr("dy",n).attr("dx",y(Y)),N.attr("d","M"+L[0]+","+l+"V0H"+L[1]+"V"+l);break;case"top":A=c,O.attr("y2",-r),Q.attr("y",-W),P.attr("x2",0).attr("y2",-r),R.attr("x",0).attr("y",-W),S.style("text-anchor","middle"),T.attr("x",0).attr("dy","0em"),N.attr("d","M"+L[0]+","+-l+"V0H"+L[1]+"V"+-l);break;case"left":A=d,O.attr("x2",-r),Q.attr("x",-W),P.attr("x2",-r).attr("y1",C).attr("y2",C),R.attr("x",-W).attr("y",u),S.style("text-anchor","end"),T.attr("x",-W).attr("dy",n),N.attr("d","M"+-l+","+L[0]+"H0V"+L[1]+"H"+-l);break;case"right":A=d,O.attr("x2",r),Q.attr("x",W),P.attr("x2",r).attr("y2",0),R.attr("x",W).attr("y",0),S.style("text-anchor","start"),T.attr("x",W).attr("dy",n),N.attr("d","M"+l+","+L[0]+"H0V"+L[1]+"H"+l)}if(F.rangeBand){var Z=F,$=Z.rangeBand()/2;E=F=function(a){return Z(a)+$}}else E.rangeBand?E=F:J.call(A,F);I.call(A,E),K.call(A,F)})}var l,m,n,o,p=a.scale.linear(),q="bottom",r=6,s=3,t=null,u=0,v=!0;return b=b||{},l=b.withOuterTick?6:0,k.scale=function(a){return arguments.length?(p=a,k):p},k.orient=function(a){return arguments.length?(q=a in{top:1,right:1,bottom:1,left:1}?a+"":"bottom",k):q},k.tickFormat=function(a){return arguments.length?(m=a,k):m},k.tickCentered=function(a){return arguments.length?(o=a,k):o},k.tickOffset=function(){return u},k.tickInterval=function(){var a,c;return b.isCategory?a=2*u:(c=k.g.select("path.domain").node().getTotalLength()-2*l,a=c/k.g.selectAll("line").size()),a===1/0?0:a},k.ticks=function(){return arguments.length?(n=arguments,k):n},k.tickCulling=function(a){return arguments.length?(v=a,k):v},k.tickValues=function(a){if("function"==typeof a)t=function(){return a(p.domain())};else{if(!arguments.length)return t;t=a}return k},k}var h,i,j,k={version:"0.4.11"};k.generate=function(a){return new d(a)},k.chart={fn:d.prototype,internal:{fn:e.prototype,axis:{fn:f.prototype}}},h=k.chart.fn,i=k.chart.internal.fn,j=k.chart.internal.axis.fn,i.beforeInit=function(){},i.afterInit=function(){},i.init=function(){var a=this,b=a.config;if(a.initParams(),b.data_url)a.convertUrlToData(b.data_url,b.data_mimeType,b.data_headers,b.data_keys,a.initWithData);else if(b.data_json)a.initWithData(a.convertJsonToData(b.data_json,b.data_keys));else if(b.data_rows)a.initWithData(a.convertRowsToData(b.data_rows));else{if(!b.data_columns)throw Error("url or json or rows or columns is required.");a.initWithData(a.convertColumnsToData(b.data_columns))}},i.initParams=function(){var a=this,b=a.d3,c=a.config;a.clipId="c3-"+ +new Date+"-clip",a.clipIdForXAxis=a.clipId+"-xaxis",a.clipIdForYAxis=a.clipId+"-yaxis",a.clipIdForGrid=a.clipId+"-grid",a.clipIdForSubchart=a.clipId+"-subchart",a.clipPath=a.getClipPath(a.clipId),a.clipPathForXAxis=a.getClipPath(a.clipIdForXAxis),a.clipPathForYAxis=a.getClipPath(a.clipIdForYAxis),a.clipPathForGrid=a.getClipPath(a.clipIdForGrid),a.clipPathForSubchart=a.getClipPath(a.clipIdForSubchart),a.dragStart=null,a.dragging=!1,a.flowing=!1,a.cancelClick=!1,a.mouseover=!1,a.transiting=!1,a.color=a.generateColor(),a.levelColor=a.generateLevelColor(),a.dataTimeFormat=c.data_xLocaltime?b.time.format:b.time.format.utc,a.axisTimeFormat=c.axis_x_localtime?b.time.format:b.time.format.utc,a.defaultAxisTimeFormat=a.axisTimeFormat.multi([[".%L",function(a){return a.getMilliseconds()}],[":%S",function(a){return a.getSeconds()}],["%I:%M",function(a){return a.getMinutes()}],["%I %p",function(a){return a.getHours()}],["%-m/%-d",function(a){return a.getDay()&&1!==a.getDate()}],["%-m/%-d",function(a){return 1!==a.getDate()}],["%-m/%-d",function(a){return a.getMonth()}],["%Y/%-m/%-d",function(){return!0}]]),a.hiddenTargetIds=[],a.hiddenLegendIds=[],a.focusedTargetIds=[],a.defocusedTargetIds=[],a.xOrient=c.axis_rotated?"left":"bottom",a.yOrient=c.axis_rotated?c.axis_y_inner?"top":"bottom":c.axis_y_inner?"right":"left",a.y2Orient=c.axis_rotated?c.axis_y2_inner?"bottom":"top":c.axis_y2_inner?"left":"right",a.subXOrient=c.axis_rotated?"left":"bottom",a.isLegendRight="right"===c.legend_position,a.isLegendInset="inset"===c.legend_position,a.isLegendTop="top-left"===c.legend_inset_anchor||"top-right"===c.legend_inset_anchor,a.isLegendLeft="top-left"===c.legend_inset_anchor||"bottom-left"===c.legend_inset_anchor,a.legendStep=0,a.legendItemWidth=0,a.legendItemHeight=0,a.currentMaxTickWidths={x:0,y:0,y2:0},a.rotated_padding_left=30,a.rotated_padding_right=c.axis_rotated&&!c.axis_x_show?0:30,a.rotated_padding_top=5,a.withoutFadeIn={},a.intervalForObserveInserted=void 0,a.axes.subx=b.selectAll([])},i.initChartElements=function(){this.initBar&&this.initBar(),this.initLine&&this.initLine(),this.initArc&&this.initArc(),this.initGauge&&this.initGauge(),this.initText&&this.initText()},i.initWithData=function(a){var b,c,d=this,e=d.d3,g=d.config,h=!0;d.axis=new f(d),d.initPie&&d.initPie(),d.initBrush&&d.initBrush(),d.initZoom&&d.initZoom(),g.bindto?"function"==typeof g.bindto.node?d.selectChart=g.bindto:d.selectChart=e.select(g.bindto):d.selectChart=e.selectAll([]),d.selectChart.empty()&&(d.selectChart=e.select(document.createElement("div")).style("opacity",0),d.observeInserted(d.selectChart),h=!1),d.selectChart.html("").classed("c3",!0),d.data.xs={},d.data.targets=d.convertDataToTargets(a),g.data_filter&&(d.data.targets=d.data.targets.filter(g.data_filter)),g.data_hide&&d.addHiddenTargetIds(g.data_hide===!0?d.mapToIds(d.data.targets):g.data_hide),g.legend_hide&&d.addHiddenLegendIds(g.legend_hide===!0?d.mapToIds(d.data.targets):g.legend_hide),d.hasType("gauge")&&(g.legend_show=!1),d.updateSizes(),d.updateScales(),d.x.domain(e.extent(d.getXDomain(d.data.targets))),d.y.domain(d.getYDomain(d.data.targets,"y")),d.y2.domain(d.getYDomain(d.data.targets,"y2")),d.subX.domain(d.x.domain()),d.subY.domain(d.y.domain()),d.subY2.domain(d.y2.domain()),d.orgXDomain=d.x.domain(),d.brush&&d.brush.scale(d.subX),g.zoom_enabled&&d.zoom.scale(d.x),d.svg=d.selectChart.append("svg").style("overflow","hidden").on("mouseenter",function(){return g.onmouseover.call(d)}).on("mouseleave",function(){return g.onmouseout.call(d)}),d.config.svg_classname&&d.svg.attr("class",d.config.svg_classname),b=d.svg.append("defs"),d.clipChart=d.appendClip(b,d.clipId),d.clipXAxis=d.appendClip(b,d.clipIdForXAxis),d.clipYAxis=d.appendClip(b,d.clipIdForYAxis),d.clipGrid=d.appendClip(b,d.clipIdForGrid),d.clipSubchart=d.appendClip(b,d.clipIdForSubchart),d.updateSvgSize(),c=d.main=d.svg.append("g").attr("transform",d.getTranslate("main")),d.initSubchart&&d.initSubchart(),d.initTooltip&&d.initTooltip(),d.initLegend&&d.initLegend(),d.initTitle&&d.initTitle(),c.append("text").attr("class",l.text+" "+l.empty).attr("text-anchor","middle").attr("dominant-baseline","middle"),d.initRegion(),d.initGrid(),c.append("g").attr("clip-path",d.clipPath).attr("class",l.chart),g.grid_lines_front&&d.initGridLines(),d.initEventRect(),d.initChartElements(),c.insert("rect",g.zoom_privileged?null:"g."+l.regions).attr("class",l.zoomRect).attr("width",d.width).attr("height",d.height).style("opacity",0).on("dblclick.zoom",null),g.axis_x_extent&&d.brush.extent(d.getDefaultExtent()),d.axis.init(),d.updateTargets(d.data.targets),h&&(d.updateDimension(),d.config.oninit.call(d),d.redraw({withTransition:!1,withTransform:!0,withUpdateXDomain:!0,withUpdateOrgXDomain:!0,withTransitionForAxis:!1})),d.bindResize(),d.api.element=d.selectChart.node()},i.smoothLines=function(a,b){var c=this;"grid"===b&&a.each(function(){var a=c.d3.select(this),b=a.attr("x1"),d=a.attr("x2"),e=a.attr("y1"),f=a.attr("y2");a.attr({x1:Math.ceil(b),x2:Math.ceil(d),y1:Math.ceil(e),y2:Math.ceil(f)})})},i.updateSizes=function(){var a=this,b=a.config,c=a.legend?a.getLegendHeight():0,d=a.legend?a.getLegendWidth():0,e=a.isLegendRight||a.isLegendInset?0:c,f=a.hasArcType(),g=b.axis_rotated||f?0:a.getHorizontalAxisHeight("x"),h=b.subchart_show&&!f?b.subchart_size_height+g:0;a.currentWidth=a.getCurrentWidth(),a.currentHeight=a.getCurrentHeight(),a.margin=b.axis_rotated?{top:a.getHorizontalAxisHeight("y2")+a.getCurrentPaddingTop(),right:f?0:a.getCurrentPaddingRight(),bottom:a.getHorizontalAxisHeight("y")+e+a.getCurrentPaddingBottom(),left:h+(f?0:a.getCurrentPaddingLeft())}:{top:4+a.getCurrentPaddingTop(),right:f?0:a.getCurrentPaddingRight(),bottom:g+h+e+a.getCurrentPaddingBottom(),left:f?0:a.getCurrentPaddingLeft()},a.margin2=b.axis_rotated?{top:a.margin.top,right:NaN,bottom:20+e,left:a.rotated_padding_left}:{top:a.currentHeight-h-e,right:NaN,bottom:g+e,left:a.margin.left},a.margin3={top:0,right:NaN,bottom:0,left:0},a.updateSizeForLegend&&a.updateSizeForLegend(c,d),a.width=a.currentWidth-a.margin.left-a.margin.right,a.height=a.currentHeight-a.margin.top-a.margin.bottom,a.width<0&&(a.width=0),a.height<0&&(a.height=0),a.width2=b.axis_rotated?a.margin.left-a.rotated_padding_left-a.rotated_padding_right:a.width,a.height2=b.axis_rotated?a.height:a.currentHeight-a.margin2.top-a.margin2.bottom,a.width2<0&&(a.width2=0),a.height2<0&&(a.height2=0),a.arcWidth=a.width-(a.isLegendRight?d+10:0),a.arcHeight=a.height-(a.isLegendRight?0:10),a.hasType("gauge")&&!b.gauge_fullCircle&&(a.arcHeight+=a.height-a.getGaugeLabelHeight()),a.updateRadius&&a.updateRadius(),a.isLegendRight&&f&&(a.margin3.left=a.arcWidth/2+1.1*a.radiusExpanded)},i.updateTargets=function(a){var b=this;b.updateTargetsForText(a),b.updateTargetsForBar(a),b.updateTargetsForLine(a),b.hasArcType()&&b.updateTargetsForArc&&b.updateTargetsForArc(a),b.updateTargetsForSubchart&&b.updateTargetsForSubchart(a),b.showTargets()},i.showTargets=function(){var a=this;a.svg.selectAll("."+l.target).filter(function(b){return a.isTargetToShow(b.id)}).transition().duration(a.config.transition_duration).style("opacity",1)},i.redraw=function(a,b){var c,d,e,f,g,h,i,j,k,m,n,o,p,q,r,s,t,u,v,x,y,z,A,B,C,D,E,F,G,H=this,I=H.main,J=H.d3,K=H.config,L=H.getShapeIndices(H.isAreaType),M=H.getShapeIndices(H.isBarType),N=H.getShapeIndices(H.isLineType),O=H.hasArcType(),P=H.filterTargetsToShow(H.data.targets),Q=H.xv.bind(H);if(a=a||{},c=w(a,"withY",!0),d=w(a,"withSubchart",!0),e=w(a,"withTransition",!0),h=w(a,"withTransform",!1),i=w(a,"withUpdateXDomain",!1),j=w(a,"withUpdateOrgXDomain",!1),k=w(a,"withTrimXDomain",!0),p=w(a,"withUpdateXAxis",i),m=w(a,"withLegend",!1),n=w(a,"withEventRect",!0),o=w(a,"withDimension",!0),f=w(a,"withTransitionForExit",e),g=w(a,"withTransitionForAxis",e),v=e?K.transition_duration:0,x=f?v:0,y=g?v:0,b=b||H.axis.generateTransitions(y),m&&K.legend_show?H.updateLegend(H.mapToIds(H.data.targets),a,b):o&&H.updateDimension(!0),H.isCategorized()&&0===P.length&&H.x.domain([0,H.axes.x.selectAll(".tick").size()]),P.length?(H.updateXDomain(P,i,j,k),K.axis_x_tick_values||(B=H.axis.updateXAxisTickValues(P))):(H.xAxis.tickValues([]),H.subXAxis.tickValues([])),K.zoom_rescale&&!a.flow&&(E=H.x.orgDomain()),H.y.domain(H.getYDomain(P,"y",E)),H.y2.domain(H.getYDomain(P,"y2",E)),!K.axis_y_tick_values&&K.axis_y_tick_count&&H.yAxis.tickValues(H.axis.generateTickValues(H.y.domain(),K.axis_y_tick_count)),!K.axis_y2_tick_values&&K.axis_y2_tick_count&&H.y2Axis.tickValues(H.axis.generateTickValues(H.y2.domain(),K.axis_y2_tick_count)),H.axis.redraw(b,O),H.axis.updateLabels(e),(i||p)&&P.length)if(K.axis_x_tick_culling&&B){for(C=1;C<B.length;C++)if(B.length/C<K.axis_x_tick_culling_max){D=C;break}H.svg.selectAll("."+l.axisX+" .tick text").each(function(a){var b=B.indexOf(a);b>=0&&J.select(this).style("display",b%D?"none":"block")})}else H.svg.selectAll("."+l.axisX+" .tick text").style("display","block");q=H.generateDrawArea?H.generateDrawArea(L,!1):void 0,r=H.generateDrawBar?H.generateDrawBar(M):void 0,s=H.generateDrawLine?H.generateDrawLine(N,!1):void 0,t=H.generateXYForText(L,M,N,!0),u=H.generateXYForText(L,M,N,!1),c&&(H.subY.domain(H.getYDomain(P,"y")),H.subY2.domain(H.getYDomain(P,"y2"))),H.updateXgridFocus(),I.select("text."+l.text+"."+l.empty).attr("x",H.width/2).attr("y",H.height/2).text(K.data_empty_label_text).transition().style("opacity",P.length?0:1),H.updateGrid(v),H.updateRegion(v),H.updateBar(x),H.updateLine(x),H.updateArea(x),H.updateCircle(),H.hasDataLabel()&&H.updateText(x),H.redrawTitle&&H.redrawTitle(),H.redrawArc&&H.redrawArc(v,x,h),H.redrawSubchart&&H.redrawSubchart(d,b,v,x,L,M,N),I.selectAll("."+l.selectedCircles).filter(H.isBarType.bind(H)).selectAll("circle").remove(),K.interaction_enabled&&!a.flow&&n&&(H.redrawEventRect(),H.updateZoom&&H.updateZoom()),H.updateCircleY(),F=(H.config.axis_rotated?H.circleY:H.circleX).bind(H),G=(H.config.axis_rotated?H.circleX:H.circleY).bind(H),a.flow&&(A=H.generateFlow({targets:P,flow:a.flow,duration:a.flow.duration,drawBar:r,drawLine:s,drawArea:q,cx:F,cy:G,xv:Q,xForText:t,yForText:u})),(v||A)&&H.isTabVisible()?J.transition().duration(v).each(function(){var b=[];[H.redrawBar(r,!0),H.redrawLine(s,!0),H.redrawArea(q,!0),H.redrawCircle(F,G,!0),H.redrawText(t,u,a.flow,!0),H.redrawRegion(!0),H.redrawGrid(!0)].forEach(function(a){a.forEach(function(a){b.push(a)})}),z=H.generateWait(),b.forEach(function(a){z.add(a)})}).call(z,function(){A&&A(),K.onrendered&&K.onrendered.call(H)}):(H.redrawBar(r),H.redrawLine(s),H.redrawArea(q),H.redrawCircle(F,G),H.redrawText(t,u,a.flow),H.redrawRegion(),H.redrawGrid(),K.onrendered&&K.onrendered.call(H)),H.mapToIds(H.data.targets).forEach(function(a){H.withoutFadeIn[a]=!0})},i.updateAndRedraw=function(a){var b,c=this,d=c.config;a=a||{},a.withTransition=w(a,"withTransition",!0),a.withTransform=w(a,"withTransform",!1),a.withLegend=w(a,"withLegend",!1),a.withUpdateXDomain=!0,a.withUpdateOrgXDomain=!0,a.withTransitionForExit=!1,a.withTransitionForTransform=w(a,"withTransitionForTransform",a.withTransition),c.updateSizes(),a.withLegend&&d.legend_show||(b=c.axis.generateTransitions(a.withTransitionForAxis?d.transition_duration:0),c.updateScales(),c.updateSvgSize(),c.transformAll(a.withTransitionForTransform,b)),c.redraw(a,b)},i.redrawWithoutRescale=function(){this.redraw({withY:!1,withSubchart:!1,withEventRect:!1,withTransitionForAxis:!1})},i.isTimeSeries=function(){return"timeseries"===this.config.axis_x_type},i.isCategorized=function(){return this.config.axis_x_type.indexOf("categor")>=0},i.isCustomX=function(){var a=this,b=a.config;return!a.isTimeSeries()&&(b.data_x||v(b.data_xs))},i.isTimeSeriesY=function(){return"timeseries"===this.config.axis_y_type},i.getTranslate=function(a){var b,c,d=this,e=d.config;return"main"===a?(b=s(d.margin.left),c=s(d.margin.top)):"context"===a?(b=s(d.margin2.left),c=s(d.margin2.top)):"legend"===a?(b=d.margin3.left,c=d.margin3.top):"x"===a?(b=0,c=e.axis_rotated?0:d.height):"y"===a?(b=0,c=e.axis_rotated?d.height:0):"y2"===a?(b=e.axis_rotated?0:d.width,c=e.axis_rotated?1:0):"subx"===a?(b=0,c=e.axis_rotated?0:d.height2):"arc"===a&&(b=d.arcWidth/2,c=d.arcHeight/2),"translate("+b+","+c+")"},i.initialOpacity=function(a){return null!==a.value&&this.withoutFadeIn[a.id]?1:0},i.initialOpacityForCircle=function(a){return null!==a.value&&this.withoutFadeIn[a.id]?this.opacityForCircle(a):0},i.opacityForCircle=function(a){var b=this.config.point_show?1:0;return m(a.value)?this.isScatterType(a)?.5:b:0},i.opacityForText=function(){return this.hasDataLabel()?1:0},i.xx=function(a){return a?this.x(a.x):null},i.xv=function(a){var b=this,c=a.value;return b.isTimeSeries()?c=b.parseDate(a.value):b.isCategorized()&&"string"==typeof a.value&&(c=b.config.axis_x_categories.indexOf(a.value)),Math.ceil(b.x(c))},i.yv=function(a){var b=this,c=a.axis&&"y2"===a.axis?b.y2:b.y;return Math.ceil(c(a.value))},i.subxx=function(a){return a?this.subX(a.x):null},i.transformMain=function(a,b){var c,d,e,f=this;b&&b.axisX?c=b.axisX:(c=f.main.select("."+l.axisX),a&&(c=c.transition())),b&&b.axisY?d=b.axisY:(d=f.main.select("."+l.axisY),a&&(d=d.transition())),b&&b.axisY2?e=b.axisY2:(e=f.main.select("."+l.axisY2),a&&(e=e.transition())),(a?f.main.transition():f.main).attr("transform",f.getTranslate("main")),c.attr("transform",f.getTranslate("x")),d.attr("transform",f.getTranslate("y")),e.attr("transform",f.getTranslate("y2")),f.main.select("."+l.chartArcs).attr("transform",f.getTranslate("arc"))},i.transformAll=function(a,b){var c=this;c.transformMain(a,b),c.config.subchart_show&&c.transformContext(a,b),c.legend&&c.transformLegend(a)},i.updateSvgSize=function(){var a=this,b=a.svg.select(".c3-brush .background");a.svg.attr("width",a.currentWidth).attr("height",a.currentHeight),a.svg.selectAll(["#"+a.clipId,"#"+a.clipIdForGrid]).select("rect").attr("width",a.width).attr("height",a.height),a.svg.select("#"+a.clipIdForXAxis).select("rect").attr("x",a.getXAxisClipX.bind(a)).attr("y",a.getXAxisClipY.bind(a)).attr("width",a.getXAxisClipWidth.bind(a)).attr("height",a.getXAxisClipHeight.bind(a)),a.svg.select("#"+a.clipIdForYAxis).select("rect").attr("x",a.getYAxisClipX.bind(a)).attr("y",a.getYAxisClipY.bind(a)).attr("width",a.getYAxisClipWidth.bind(a)).attr("height",a.getYAxisClipHeight.bind(a)),a.svg.select("#"+a.clipIdForSubchart).select("rect").attr("width",a.width).attr("height",b.size()?b.attr("height"):0),a.svg.select("."+l.zoomRect).attr("width",a.width).attr("height",a.height),a.selectChart.style("max-height",a.currentHeight+"px")},i.updateDimension=function(a){var b=this;a||(b.config.axis_rotated?(b.axes.x.call(b.xAxis),b.axes.subx.call(b.subXAxis)):(b.axes.y.call(b.yAxis),b.axes.y2.call(b.y2Axis))),b.updateSizes(),b.updateScales(),b.updateSvgSize(),b.transformAll(!1)},i.observeInserted=function(b){var c,d=this;return"undefined"==typeof MutationObserver?void a.console.error("MutationObserver not defined."):(c=new MutationObserver(function(e){e.forEach(function(e){"childList"===e.type&&e.previousSibling&&(c.disconnect(),d.intervalForObserveInserted=a.setInterval(function(){b.node().parentNode&&(a.clearInterval(d.intervalForObserveInserted),d.updateDimension(),d.brush&&d.brush.update(),d.config.oninit.call(d),d.redraw({withTransform:!0,withUpdateXDomain:!0,withUpdateOrgXDomain:!0,withTransition:!1,withTransitionForTransform:!1,withLegend:!0}),b.transition().style("opacity",1))},10))})}),void c.observe(b.node(),{attributes:!0,childList:!0,characterData:!0}))},i.bindResize=function(){var b=this,c=b.config;if(b.resizeFunction=b.generateResize(),b.resizeFunction.add(function(){c.onresize.call(b)}),c.resize_auto&&b.resizeFunction.add(function(){void 0!==b.resizeTimeout&&a.clearTimeout(b.resizeTimeout),b.resizeTimeout=a.setTimeout(function(){delete b.resizeTimeout,b.api.flush()},100)}),b.resizeFunction.add(function(){c.onresized.call(b)}),a.attachEvent)a.attachEvent("onresize",b.resizeFunction);else if(a.addEventListener)a.addEventListener("resize",b.resizeFunction,!1);else{var d=a.onresize;d?d.add&&d.remove||(d=b.generateResize(),d.add(a.onresize)):d=b.generateResize(),d.add(b.resizeFunction),a.onresize=d}},i.generateResize=function(){function a(){b.forEach(function(a){a()})}var b=[];return a.add=function(a){b.push(a)},a.remove=function(a){for(var c=0;c<b.length;c++)if(b[c]===a){b.splice(c,1);break}},a},i.endall=function(a,b){var c=0;a.each(function(){++c}).each("end",function(){--c||b.apply(this,arguments)})},i.generateWait=function(){var a=[],b=function(b,c){var d=setInterval(function(){var b=0;a.forEach(function(a){if(a.empty())return void(b+=1);try{a.transition()}catch(c){b+=1}}),b===a.length&&(clearInterval(d),c&&c())},10)};return b.add=function(b){a.push(b)},b},i.parseDate=function(b){var c,d=this;return b instanceof Date?c=b:"string"==typeof b?c=d.dataTimeFormat(d.config.data_xFormat).parse(b):"number"!=typeof b||isNaN(b)||(c=new Date(+b)),c&&!isNaN(+c)||a.console.error("Failed to parse x '"+b+"' to Date object"),c},i.isTabVisible=function(){var a;return"undefined"!=typeof document.hidden?a="hidden":"undefined"!=typeof document.mozHidden?a="mozHidden":"undefined"!=typeof document.msHidden?a="msHidden":"undefined"!=typeof document.webkitHidden&&(a="webkitHidden"),!document[a]},i.getDefaultConfig=function(){var a={bindto:"#chart",svg_classname:void 0,size_width:void 0,size_height:void 0,padding_left:void 0,padding_right:void 0,padding_top:void 0,padding_bottom:void 0,resize_auto:!0,zoom_enabled:!1,zoom_extent:void 0,zoom_privileged:!1,zoom_rescale:!1,zoom_onzoom:function(){},zoom_onzoomstart:function(){},zoom_onzoomend:function(){},zoom_x_min:void 0,zoom_x_max:void 0,interaction_brighten:!0,interaction_enabled:!0,onmouseover:function(){},onmouseout:function(){},onresize:function(){},onresized:function(){},oninit:function(){},onrendered:function(){},transition_duration:350,data_x:void 0,data_xs:{},data_xFormat:"%Y-%m-%d",data_xLocaltime:!0,data_xSort:!0,data_idConverter:function(a){return a},data_names:{},data_classes:{},data_groups:[],data_axes:{},data_type:void 0,data_types:{},data_labels:{},data_order:"desc",data_regions:{},data_color:void 0,data_colors:{},data_hide:!1,data_filter:void 0,data_selection_enabled:!1,data_selection_grouped:!1,data_selection_isselectable:function(){return!0},data_selection_multiple:!0,data_selection_draggable:!1,data_onclick:function(){},data_onmouseover:function(){},data_onmouseout:function(){},data_onselected:function(){},data_onunselected:function(){},data_url:void 0,data_headers:void 0,data_json:void 0,data_rows:void 0,data_columns:void 0,data_mimeType:void 0,data_keys:void 0,data_empty_label_text:"",subchart_show:!1,subchart_size_height:60,subchart_axis_x_show:!0,subchart_onbrush:function(){},color_pattern:[],color_threshold:{},legend_show:!0,legend_hide:!1,legend_position:"bottom",legend_inset_anchor:"top-left",legend_inset_x:10,legend_inset_y:0,legend_inset_step:void 0,legend_item_onclick:void 0,legend_item_onmouseover:void 0,legend_item_onmouseout:void 0,legend_equally:!1,legend_padding:0,legend_item_tile_width:10,legend_item_tile_height:10,axis_rotated:!1,axis_x_show:!0,axis_x_type:"indexed",axis_x_localtime:!0,axis_x_categories:[],axis_x_tick_centered:!1,axis_x_tick_format:void 0,axis_x_tick_culling:{},axis_x_tick_culling_max:10,axis_x_tick_count:void 0,axis_x_tick_fit:!0,axis_x_tick_values:null,axis_x_tick_rotate:0,axis_x_tick_outer:!0,axis_x_tick_multiline:!0,axis_x_tick_width:null,axis_x_max:void 0,axis_x_min:void 0,axis_x_padding:{},axis_x_height:void 0,axis_x_extent:void 0,axis_x_label:{},axis_y_show:!0,axis_y_type:void 0,axis_y_max:void 0,axis_y_min:void 0,axis_y_inverted:!1,axis_y_center:void 0,axis_y_inner:void 0,axis_y_label:{},axis_y_tick_format:void 0,axis_y_tick_outer:!0,axis_y_tick_values:null,axis_y_tick_rotate:0,axis_y_tick_count:void 0,axis_y_tick_time_value:void 0,axis_y_tick_time_interval:void 0,axis_y_padding:{},axis_y_default:void 0,axis_y2_show:!1,axis_y2_max:void 0,axis_y2_min:void 0,axis_y2_inverted:!1,axis_y2_center:void 0,axis_y2_inner:void 0,axis_y2_label:{},axis_y2_tick_format:void 0,axis_y2_tick_outer:!0,axis_y2_tick_values:null,axis_y2_tick_count:void 0,axis_y2_padding:{},axis_y2_default:void 0,grid_x_show:!1,grid_x_type:"tick",grid_x_lines:[],grid_y_show:!1,grid_y_lines:[],grid_y_ticks:10,grid_focus_show:!0,grid_lines_front:!0,point_show:!0,point_r:2.5,point_sensitivity:10,point_focus_expand_enabled:!0,point_focus_expand_r:void 0,point_select_r:void 0,line_connectNull:!1,line_step_type:"step",bar_width:void 0,bar_width_ratio:.6,bar_width_max:void 0,bar_zerobased:!0,area_zerobased:!0,area_above:!1,pie_label_show:!0,pie_label_format:void 0,pie_label_threshold:.05,pie_label_ratio:void 0,pie_expand:{},pie_expand_duration:50,gauge_fullCircle:!1,gauge_label_show:!0,gauge_label_format:void 0,gauge_min:0,gauge_max:100,gauge_startingAngle:-1*Math.PI/2,gauge_units:void 0,gauge_width:void 0,gauge_expand:{},gauge_expand_duration:50,donut_label_show:!0,donut_label_format:void 0,donut_label_threshold:.05,donut_label_ratio:void 0,donut_width:void 0,donut_title:"",donut_expand:{},donut_expand_duration:50,spline_interpolation_type:"cardinal",regions:[],tooltip_show:!0,tooltip_grouped:!0,tooltip_format_title:void 0,tooltip_format_name:void 0,tooltip_format_value:void 0,tooltip_position:void 0,tooltip_contents:function(a,b,c,d){return this.getTooltipContent?this.getTooltipContent(a,b,c,d):""},tooltip_init_show:!1,tooltip_init_x:0,tooltip_init_position:{top:"0px",left:"50px"},tooltip_onshow:function(){},tooltip_onhide:function(){},title_text:void 0,title_padding:{top:0,right:0,bottom:0,left:0},title_position:"top-center"};return Object.keys(this.additionalConfig).forEach(function(b){a[b]=this.additionalConfig[b]},this),a},i.additionalConfig={},i.loadConfig=function(a){function b(){var a=d.shift();return a&&c&&"object"==typeof c&&a in c?(c=c[a],b()):a?void 0:c}var c,d,e,f=this.config;Object.keys(f).forEach(function(g){c=a,d=g.split("_"),e=b(),q(e)&&(f[g]=e)})},i.getScale=function(a,b,c){return(c?this.d3.time.scale():this.d3.scale.linear()).range([a,b])},i.getX=function(a,b,c,d){var e,f=this,g=f.getScale(a,b,f.isTimeSeries()),h=c?g.domain(c):g;f.isCategorized()?(d=d||function(){return 0},g=function(a,b){var c=h(a)+d(a);return b?c:Math.ceil(c)}):g=function(a,b){var c=h(a);return b?c:Math.ceil(c)};for(e in h)g[e]=h[e];return g.orgDomain=function(){return h.domain()},f.isCategorized()&&(g.domain=function(a){return arguments.length?(h.domain(a),g):(a=this.orgDomain(),[a[0],a[1]+1])}),g},i.getY=function(a,b,c){var d=this.getScale(a,b,this.isTimeSeriesY());return c&&d.domain(c),d},i.getYScale=function(a){return"y2"===this.axis.getId(a)?this.y2:this.y},i.getSubYScale=function(a){return"y2"===this.axis.getId(a)?this.subY2:this.subY},i.updateScales=function(){var a=this,b=a.config,c=!a.x;a.xMin=b.axis_rotated?1:0,a.xMax=b.axis_rotated?a.height:a.width,a.yMin=b.axis_rotated?0:a.height,a.yMax=b.axis_rotated?a.width:1,a.subXMin=a.xMin,a.subXMax=a.xMax,a.subYMin=b.axis_rotated?0:a.height2,a.subYMax=b.axis_rotated?a.width2:1,a.x=a.getX(a.xMin,a.xMax,c?void 0:a.x.orgDomain(),function(){return a.xAxis.tickOffset()}),a.y=a.getY(a.yMin,a.yMax,c?b.axis_y_default:a.y.domain()),a.y2=a.getY(a.yMin,a.yMax,c?b.axis_y2_default:a.y2.domain()),a.subX=a.getX(a.xMin,a.xMax,a.orgXDomain,function(b){return b%1?0:a.subXAxis.tickOffset()}),a.subY=a.getY(a.subYMin,a.subYMax,c?b.axis_y_default:a.subY.domain()),a.subY2=a.getY(a.subYMin,a.subYMax,c?b.axis_y2_default:a.subY2.domain()),a.xAxisTickFormat=a.axis.getXAxisTickFormat(),a.xAxisTickValues=a.axis.getXAxisTickValues(),a.yAxisTickValues=a.axis.getYAxisTickValues(),a.y2AxisTickValues=a.axis.getY2AxisTickValues(),a.xAxis=a.axis.getXAxis(a.x,a.xOrient,a.xAxisTickFormat,a.xAxisTickValues,b.axis_x_tick_outer),a.subXAxis=a.axis.getXAxis(a.subX,a.subXOrient,a.xAxisTickFormat,a.xAxisTickValues,b.axis_x_tick_outer),a.yAxis=a.axis.getYAxis(a.y,a.yOrient,b.axis_y_tick_format,a.yAxisTickValues,b.axis_y_tick_outer),a.y2Axis=a.axis.getYAxis(a.y2,a.y2Orient,b.axis_y2_tick_format,a.y2AxisTickValues,b.axis_y2_tick_outer),c||(a.brush&&a.brush.scale(a.subX),b.zoom_enabled&&a.zoom.scale(a.x)),a.updateArc&&a.updateArc()},i.getYDomainMin=function(a){var b,c,d,e,f,g,h=this,i=h.config,j=h.mapToIds(a),k=h.getValuesAsIdKeyed(a);if(i.data_groups.length>0)for(g=h.hasNegativeValueInTargets(a),b=0;b<i.data_groups.length;b++)if(e=i.data_groups[b].filter(function(a){return j.indexOf(a)>=0}),0!==e.length)for(d=e[0],g&&k[d]&&k[d].forEach(function(a,b){k[d][b]=0>a?a:0}),c=1;c<e.length;c++)f=e[c],k[f]&&k[f].forEach(function(a,b){h.axis.getId(f)!==h.axis.getId(d)||!k[d]||g&&+a>0||(k[d][b]+=+a)});return h.d3.min(Object.keys(k).map(function(a){return h.d3.min(k[a])}))},i.getYDomainMax=function(a){var b,c,d,e,f,g,h=this,i=h.config,j=h.mapToIds(a),k=h.getValuesAsIdKeyed(a);if(i.data_groups.length>0)for(g=h.hasPositiveValueInTargets(a),b=0;b<i.data_groups.length;b++)if(e=i.data_groups[b].filter(function(a){return j.indexOf(a)>=0}),0!==e.length)for(d=e[0],g&&k[d]&&k[d].forEach(function(a,b){k[d][b]=a>0?a:0}),c=1;c<e.length;c++)f=e[c],k[f]&&k[f].forEach(function(a,b){h.axis.getId(f)!==h.axis.getId(d)||!k[d]||g&&0>+a||(k[d][b]+=+a)});return h.d3.max(Object.keys(k).map(function(a){return h.d3.max(k[a])}))},i.getYDomain=function(a,b,c){var d,e,f,g,h,i,j,k,l,n,o,p=this,q=p.config,r=a.filter(function(a){return p.axis.getId(a.id)===b}),s=c?p.filterByXDomain(r,c):r,u="y2"===b?q.axis_y2_min:q.axis_y_min,w="y2"===b?q.axis_y2_max:q.axis_y_max,x=p.getYDomainMin(s),y=p.getYDomainMax(s),z="y2"===b?q.axis_y2_center:q.axis_y_center,A=p.hasType("bar",s)&&q.bar_zerobased||p.hasType("area",s)&&q.area_zerobased,B="y2"===b?q.axis_y2_inverted:q.axis_y_inverted,C=p.hasDataLabel()&&q.axis_rotated,D=p.hasDataLabel()&&!q.axis_rotated;return x=m(u)?u:m(w)?w>x?x:w-10:x,y=m(w)?w:m(u)?y>u?y:u+10:y,0===s.length?"y2"===b?p.y2.domain():p.y.domain():(isNaN(x)&&(x=0),isNaN(y)&&(y=x),x===y&&(0>x?y=0:x=0),n=x>=0&&y>=0,o=0>=x&&0>=y,(m(u)&&n||m(w)&&o)&&(A=!1),A&&(n&&(x=0),o&&(y=0)),e=Math.abs(y-x),f=g=h=.1*e,"undefined"!=typeof z&&(i=Math.max(Math.abs(x),Math.abs(y)),y=z+i,x=z-i),C?(j=p.getDataLabelLength(x,y,"width"),k=t(p.y.range()),l=[j[0]/k,j[1]/k],
2311 g+=e*(l[1]/(1-l[0]-l[1])),h+=e*(l[0]/(1-l[0]-l[1]))):D&&(j=p.getDataLabelLength(x,y,"height"),g+=p.axis.convertPixelsToAxisPadding(j[1],e),h+=p.axis.convertPixelsToAxisPadding(j[0],e)),"y"===b&&v(q.axis_y_padding)&&(g=p.axis.getPadding(q.axis_y_padding,"top",g,e),h=p.axis.getPadding(q.axis_y_padding,"bottom",h,e)),"y2"===b&&v(q.axis_y2_padding)&&(g=p.axis.getPadding(q.axis_y2_padding,"top",g,e),h=p.axis.getPadding(q.axis_y2_padding,"bottom",h,e)),A&&(n&&(h=x),o&&(g=-y)),d=[x-h,y+g],B?d.reverse():d)},i.getXDomainMin=function(a){var b=this,c=b.config;return q(c.axis_x_min)?b.isTimeSeries()?this.parseDate(c.axis_x_min):c.axis_x_min:b.d3.min(a,function(a){return b.d3.min(a.values,function(a){return a.x})})},i.getXDomainMax=function(a){var b=this,c=b.config;return q(c.axis_x_max)?b.isTimeSeries()?this.parseDate(c.axis_x_max):c.axis_x_max:b.d3.max(a,function(a){return b.d3.max(a.values,function(a){return a.x})})},i.getXDomainPadding=function(a){var b,c,d,e,f=this,g=f.config,h=a[1]-a[0];return f.isCategorized()?c=0:f.hasType("bar")?(b=f.getMaxDataCount(),c=b>1?h/(b-1)/2:.5):c=.01*h,"object"==typeof g.axis_x_padding&&v(g.axis_x_padding)?(d=m(g.axis_x_padding.left)?g.axis_x_padding.left:c,e=m(g.axis_x_padding.right)?g.axis_x_padding.right:c):d=e="number"==typeof g.axis_x_padding?g.axis_x_padding:c,{left:d,right:e}},i.getXDomain=function(a){var b=this,c=[b.getXDomainMin(a),b.getXDomainMax(a)],d=c[0],e=c[1],f=b.getXDomainPadding(c),g=0,h=0;return d-e!==0||b.isCategorized()||(b.isTimeSeries()?(d=new Date(.5*d.getTime()),e=new Date(1.5*e.getTime())):(d=0===d?1:.5*d,e=0===e?-1:1.5*e)),(d||0===d)&&(g=b.isTimeSeries()?new Date(d.getTime()-f.left):d-f.left),(e||0===e)&&(h=b.isTimeSeries()?new Date(e.getTime()+f.right):e+f.right),[g,h]},i.updateXDomain=function(a,b,c,d,e){var f=this,g=f.config;return c&&(f.x.domain(e?e:f.d3.extent(f.getXDomain(a))),f.orgXDomain=f.x.domain(),g.zoom_enabled&&f.zoom.scale(f.x).updateScaleExtent(),f.subX.domain(f.x.domain()),f.brush&&f.brush.scale(f.subX)),b&&(f.x.domain(e?e:!f.brush||f.brush.empty()?f.orgXDomain:f.brush.extent()),g.zoom_enabled&&f.zoom.scale(f.x).updateScaleExtent()),d&&f.x.domain(f.trimXDomain(f.x.orgDomain())),f.x.domain()},i.trimXDomain=function(a){var b=this.getZoomDomain(),c=b[0],d=b[1];return a[0]<=c&&(a[1]=+a[1]+(c-a[0]),a[0]=c),d<=a[1]&&(a[0]=+a[0]-(a[1]-d),a[1]=d),a},i.isX=function(a){var b=this,c=b.config;return c.data_x&&a===c.data_x||v(c.data_xs)&&x(c.data_xs,a)},i.isNotX=function(a){return!this.isX(a)},i.getXKey=function(a){var b=this,c=b.config;return c.data_x?c.data_x:v(c.data_xs)?c.data_xs[a]:null},i.getXValuesOfXKey=function(a,b){var c,d=this,e=b&&v(b)?d.mapToIds(b):[];return e.forEach(function(b){d.getXKey(b)===a&&(c=d.data.xs[b])}),c},i.getIndexByX=function(a){var b=this,c=b.filterByX(b.data.targets,a);return c.length?c[0].index:null},i.getXValue=function(a,b){var c=this;return a in c.data.xs&&c.data.xs[a]&&m(c.data.xs[a][b])?c.data.xs[a][b]:b},i.getOtherTargetXs=function(){var a=this,b=Object.keys(a.data.xs);return b.length?a.data.xs[b[0]]:null},i.getOtherTargetX=function(a){var b=this.getOtherTargetXs();return b&&a<b.length?b[a]:null},i.addXs=function(a){var b=this;Object.keys(a).forEach(function(c){b.config.data_xs[c]=a[c]})},i.hasMultipleX=function(a){return this.d3.set(Object.keys(a).map(function(b){return a[b]})).size()>1},i.isMultipleX=function(){return v(this.config.data_xs)||!this.config.data_xSort||this.hasType("scatter")},i.addName=function(a){var b,c=this;return a&&(b=c.config.data_names[a.id],a.name=void 0!==b?b:a.id),a},i.getValueOnIndex=function(a,b){var c=a.filter(function(a){return a.index===b});return c.length?c[0]:null},i.updateTargetX=function(a,b){var c=this;a.forEach(function(a){a.values.forEach(function(d,e){d.x=c.generateTargetX(b[e],a.id,e)}),c.data.xs[a.id]=b})},i.updateTargetXs=function(a,b){var c=this;a.forEach(function(a){b[a.id]&&c.updateTargetX([a],b[a.id])})},i.generateTargetX=function(a,b,c){var d,e=this;return d=e.isTimeSeries()?a?e.parseDate(a):e.parseDate(e.getXValue(b,c)):e.isCustomX()&&!e.isCategorized()?m(a)?+a:e.getXValue(b,c):c},i.cloneTarget=function(a){return{id:a.id,id_org:a.id_org,values:a.values.map(function(a){return{x:a.x,value:a.value,id:a.id}})}},i.updateXs=function(){var a=this;a.data.targets.length&&(a.xs=[],a.data.targets[0].values.forEach(function(b){a.xs[b.index]=b.x}))},i.getPrevX=function(a){var b=this.xs[a-1];return"undefined"!=typeof b?b:null},i.getNextX=function(a){var b=this.xs[a+1];return"undefined"!=typeof b?b:null},i.getMaxDataCount=function(){var a=this;return a.d3.max(a.data.targets,function(a){return a.values.length})},i.getMaxDataCountTarget=function(a){var b,c=a.length,d=0;return c>1?a.forEach(function(a){a.values.length>d&&(b=a,d=a.values.length)}):b=c?a[0]:null,b},i.getEdgeX=function(a){var b=this;return a.length?[b.d3.min(a,function(a){return a.values[0].x}),b.d3.max(a,function(a){return a.values[a.values.length-1].x})]:[0,0]},i.mapToIds=function(a){return a.map(function(a){return a.id})},i.mapToTargetIds=function(a){var b=this;return a?[].concat(a):b.mapToIds(b.data.targets)},i.hasTarget=function(a,b){var c,d=this.mapToIds(a);for(c=0;c<d.length;c++)if(d[c]===b)return!0;return!1},i.isTargetToShow=function(a){return this.hiddenTargetIds.indexOf(a)<0},i.isLegendToShow=function(a){return this.hiddenLegendIds.indexOf(a)<0},i.filterTargetsToShow=function(a){var b=this;return a.filter(function(a){return b.isTargetToShow(a.id)})},i.mapTargetsToUniqueXs=function(a){var b=this,c=b.d3.set(b.d3.merge(a.map(function(a){return a.values.map(function(a){return+a.x})}))).values();return c=b.isTimeSeries()?c.map(function(a){return new Date(+a)}):c.map(function(a){return+a}),c.sort(function(a,b){return b>a?-1:a>b?1:a>=b?0:NaN})},i.addHiddenTargetIds=function(a){this.hiddenTargetIds=this.hiddenTargetIds.concat(a)},i.removeHiddenTargetIds=function(a){this.hiddenTargetIds=this.hiddenTargetIds.filter(function(b){return a.indexOf(b)<0})},i.addHiddenLegendIds=function(a){this.hiddenLegendIds=this.hiddenLegendIds.concat(a)},i.removeHiddenLegendIds=function(a){this.hiddenLegendIds=this.hiddenLegendIds.filter(function(b){return a.indexOf(b)<0})},i.getValuesAsIdKeyed=function(a){var b={};return a.forEach(function(a){b[a.id]=[],a.values.forEach(function(c){b[a.id].push(c.value)})}),b},i.checkValueInTargets=function(a,b){var c,d,e,f=Object.keys(a);for(c=0;c<f.length;c++)for(e=a[f[c]].values,d=0;d<e.length;d++)if(b(e[d].value))return!0;return!1},i.hasNegativeValueInTargets=function(a){return this.checkValueInTargets(a,function(a){return 0>a})},i.hasPositiveValueInTargets=function(a){return this.checkValueInTargets(a,function(a){return a>0})},i.isOrderDesc=function(){var a=this.config;return"string"==typeof a.data_order&&"desc"===a.data_order.toLowerCase()},i.isOrderAsc=function(){var a=this.config;return"string"==typeof a.data_order&&"asc"===a.data_order.toLowerCase()},i.orderTargets=function(a){var b=this,c=b.config,d=b.isOrderAsc(),e=b.isOrderDesc();return d||e?a.sort(function(a,b){var c=function(a,b){return a+Math.abs(b.value)},e=a.values.reduce(c,0),f=b.values.reduce(c,0);return d?f-e:e-f}):n(c.data_order)&&a.sort(c.data_order),a},i.filterByX=function(a,b){return this.d3.merge(a.map(function(a){return a.values})).filter(function(a){return a.x-b===0})},i.filterRemoveNull=function(a){return a.filter(function(a){return m(a.value)})},i.filterByXDomain=function(a,b){return a.map(function(a){return{id:a.id,id_org:a.id_org,values:a.values.filter(function(a){return b[0]<=a.x&&a.x<=b[1]})}})},i.hasDataLabel=function(){var a=this.config;return"boolean"==typeof a.data_labels&&a.data_labels?!0:!("object"!=typeof a.data_labels||!v(a.data_labels))},i.getDataLabelLength=function(a,b,c){var d=this,e=[0,0],f=1.3;return d.selectChart.select("svg").selectAll(".dummy").data([a,b]).enter().append("text").text(function(a){return d.dataLabelFormat(a.id)(a)}).each(function(a,b){e[b]=this.getBoundingClientRect()[c]*f}).remove(),e},i.isNoneArc=function(a){return this.hasTarget(this.data.targets,a.id)},i.isArc=function(a){return"data"in a&&this.hasTarget(this.data.targets,a.data.id)},i.findSameXOfValues=function(a,b){var c,d=a[b].x,e=[];for(c=b-1;c>=0&&d===a[c].x;c--)e.push(a[c]);for(c=b;c<a.length&&d===a[c].x;c++)e.push(a[c]);return e},i.findClosestFromTargets=function(a,b){var c,d=this;return c=a.map(function(a){return d.findClosest(a.values,b)}),d.findClosest(c,b)},i.findClosest=function(a,b){var c,d=this,e=d.config.point_sensitivity;return a.filter(function(a){return a&&d.isBarType(a.id)}).forEach(function(a){var b=d.main.select("."+l.bars+d.getTargetSelectorSuffix(a.id)+" ."+l.bar+"-"+a.index).node();!c&&d.isWithinBar(b)&&(c=a)}),a.filter(function(a){return a&&!d.isBarType(a.id)}).forEach(function(a){var f=d.dist(a,b);e>f&&(e=f,c=a)}),c},i.dist=function(a,b){var c=this,d=c.config,e=d.axis_rotated?1:0,f=d.axis_rotated?0:1,g=c.circleY(a,a.index),h=c.x(a.x);return Math.sqrt(Math.pow(h-b[e],2)+Math.pow(g-b[f],2))},i.convertValuesToStep=function(a){var b,c=[].concat(a);if(!this.isCategorized())return a;for(b=a.length+1;b>0;b--)c[b]=c[b-1];return c[0]={x:c[0].x-1,value:c[0].value,id:c[0].id},c[a.length+1]={x:c[a.length].x+1,value:c[a.length].value,id:c[a.length].id},c},i.updateDataAttributes=function(a,b){var c=this,d=c.config,e=d["data_"+a];return"undefined"==typeof b?e:(Object.keys(b).forEach(function(a){e[a]=b[a]}),c.redraw({withLegend:!0}),e)},i.convertUrlToData=function(a,b,c,d,e){var f=this,g=b?b:"csv",h=f.d3.xhr(a);c&&Object.keys(c).forEach(function(a){h.header(a,c[a])}),h.get(function(a,b){var c;if(!b)throw new Error(a.responseURL+" "+a.status+" ("+a.statusText+")");c="json"===g?f.convertJsonToData(JSON.parse(b.response),d):"tsv"===g?f.convertTsvToData(b.response):f.convertCsvToData(b.response),e.call(f,c)})},i.convertXsvToData=function(a,b){var c,d=b.parseRows(a);return 1===d.length?(c=[{}],d[0].forEach(function(a){c[0][a]=null})):c=b.parse(a),c},i.convertCsvToData=function(a){return this.convertXsvToData(a,this.d3.csv)},i.convertTsvToData=function(a){return this.convertXsvToData(a,this.d3.tsv)},i.convertJsonToData=function(a,b){var c,d,e=this,f=[];return b?(b.x?(c=b.value.concat(b.x),e.config.data_x=b.x):c=b.value,f.push(c),a.forEach(function(a){var b=[];c.forEach(function(c){var d=e.findValueInJson(a,c);p(d)&&(d=null),b.push(d)}),f.push(b)}),d=e.convertRowsToData(f)):(Object.keys(a).forEach(function(b){f.push([b].concat(a[b]))}),d=e.convertColumnsToData(f)),d},i.findValueInJson=function(a,b){b=b.replace(/\[(\w+)\]/g,".$1"),b=b.replace(/^\./,"");for(var c=b.split("."),d=0;d<c.length;++d){var e=c[d];if(!(e in a))return;a=a[e]}return a},i.convertRowsToData=function(a){var b,c,d=a[0],e={},f=[];for(b=1;b<a.length;b++){for(e={},c=0;c<a[b].length;c++){if(p(a[b][c]))throw new Error("Source data is missing a component at ("+b+","+c+")!");e[d[c]]=a[b][c]}f.push(e)}return f},i.convertColumnsToData=function(a){var b,c,d,e=[];for(b=0;b<a.length;b++)for(d=a[b][0],c=1;c<a[b].length;c++){if(p(e[c-1])&&(e[c-1]={}),p(a[b][c]))throw new Error("Source data is missing a component at ("+b+","+c+")!");e[c-1][d]=a[b][c]}return e},i.convertDataToTargets=function(a,b){var c,d=this,e=d.config,f=d.d3.keys(a[0]).filter(d.isNotX,d),g=d.d3.keys(a[0]).filter(d.isX,d);return f.forEach(function(c){var f=d.getXKey(c);d.isCustomX()||d.isTimeSeries()?g.indexOf(f)>=0?d.data.xs[c]=(b&&d.data.xs[c]?d.data.xs[c]:[]).concat(a.map(function(a){return a[f]}).filter(m).map(function(a,b){return d.generateTargetX(a,c,b)})):e.data_x?d.data.xs[c]=d.getOtherTargetXs():v(e.data_xs)&&(d.data.xs[c]=d.getXValuesOfXKey(f,d.data.targets)):d.data.xs[c]=a.map(function(a,b){return b})}),f.forEach(function(a){if(!d.data.xs[a])throw new Error('x is not defined for id = "'+a+'".')}),c=f.map(function(b,c){var f=e.data_idConverter(b);return{id:f,id_org:b,values:a.map(function(a,g){var h,i=d.getXKey(b),j=a[i],k=null===a[b]||isNaN(a[b])?null:+a[b];return d.isCustomX()&&d.isCategorized()&&0===c&&!p(j)?(0===c&&0===g&&(e.axis_x_categories=[]),h=e.axis_x_categories.indexOf(j),-1===h&&(h=e.axis_x_categories.length,e.axis_x_categories.push(j))):h=d.generateTargetX(j,b,g),(p(a[b])||d.data.xs[b].length<=g)&&(h=void 0),{x:h,value:k,id:f}}).filter(function(a){return q(a.x)})}}),c.forEach(function(a){var b;e.data_xSort&&(a.values=a.values.sort(function(a,b){var c=a.x||0===a.x?a.x:1/0,d=b.x||0===b.x?b.x:1/0;return c-d})),b=0,a.values.forEach(function(a){a.index=b++}),d.data.xs[a.id].sort(function(a,b){return a-b})}),d.hasNegativeValue=d.hasNegativeValueInTargets(c),d.hasPositiveValue=d.hasPositiveValueInTargets(c),e.data_type&&d.setTargetType(d.mapToIds(c).filter(function(a){return!(a in e.data_types)}),e.data_type),c.forEach(function(a){d.addCache(a.id_org,a)}),c},i.load=function(a,b){var c=this;a&&(b.filter&&(a=a.filter(b.filter)),(b.type||b.types)&&a.forEach(function(a){var d=b.types&&b.types[a.id]?b.types[a.id]:b.type;c.setTargetType(a.id,d)}),c.data.targets.forEach(function(b){for(var c=0;c<a.length;c++)if(b.id===a[c].id){b.values=a[c].values,a.splice(c,1);break}}),c.data.targets=c.data.targets.concat(a)),c.updateTargets(c.data.targets),c.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0,withLegend:!0}),b.done&&b.done()},i.loadFromArgs=function(a){var b=this;a.data?b.load(b.convertDataToTargets(a.data),a):a.url?b.convertUrlToData(a.url,a.mimeType,a.headers,a.keys,function(c){b.load(b.convertDataToTargets(c),a)}):a.json?b.load(b.convertDataToTargets(b.convertJsonToData(a.json,a.keys)),a):a.rows?b.load(b.convertDataToTargets(b.convertRowsToData(a.rows)),a):a.columns?b.load(b.convertDataToTargets(b.convertColumnsToData(a.columns)),a):b.load(null,a)},i.unload=function(a,b){var c=this;return b||(b=function(){}),a=a.filter(function(a){return c.hasTarget(c.data.targets,a)}),a&&0!==a.length?(c.svg.selectAll(a.map(function(a){return c.selectorTarget(a)})).transition().style("opacity",0).remove().call(c.endall,b),void a.forEach(function(a){c.withoutFadeIn[a]=!1,c.legend&&c.legend.selectAll("."+l.legendItem+c.getTargetSelectorSuffix(a)).remove(),c.data.targets=c.data.targets.filter(function(b){return b.id!==a})})):void b()},i.categoryName=function(a){var b=this.config;return a<b.axis_x_categories.length?b.axis_x_categories[a]:a},i.initEventRect=function(){var a=this;a.main.select("."+l.chart).append("g").attr("class",l.eventRects).style("fill-opacity",0)},i.redrawEventRect=function(){var a,b,c=this,d=c.config,e=c.isMultipleX(),f=c.main.select("."+l.eventRects).style("cursor",d.zoom_enabled?d.axis_rotated?"ns-resize":"ew-resize":null).classed(l.eventRectsMultiple,e).classed(l.eventRectsSingle,!e);f.selectAll("."+l.eventRect).remove(),c.eventRect=f.selectAll("."+l.eventRect),e?(a=c.eventRect.data([0]),c.generateEventRectsForMultipleXs(a.enter()),c.updateEventRect(a)):(b=c.getMaxDataCountTarget(c.data.targets),f.datum(b?b.values:[]),c.eventRect=f.selectAll("."+l.eventRect),a=c.eventRect.data(function(a){return a}),c.generateEventRectsForSingleX(a.enter()),c.updateEventRect(a),a.exit().remove())},i.updateEventRect=function(a){var b,c,d,e,f,g,h=this,i=h.config;a=a||h.eventRect.data(function(a){return a}),h.isMultipleX()?(b=0,c=0,d=h.width,e=h.height):(!h.isCustomX()&&!h.isTimeSeries()||h.isCategorized()?(f=h.getEventRectWidth(),g=function(a){return h.x(a.x)-f/2}):(h.updateXs(),f=function(a){var b=h.getPrevX(a.index),c=h.getNextX(a.index);return null===b&&null===c?i.axis_rotated?h.height:h.width:(null===b&&(b=h.x.domain()[0]),null===c&&(c=h.x.domain()[1]),Math.max(0,(h.x(c)-h.x(b))/2))},g=function(a){var b=h.getPrevX(a.index),c=h.getNextX(a.index),d=h.data.xs[a.id][a.index];return null===b&&null===c?0:(null===b&&(b=h.x.domain()[0]),(h.x(d)+h.x(b))/2)}),b=i.axis_rotated?0:g,c=i.axis_rotated?g:0,d=i.axis_rotated?h.width:f,e=i.axis_rotated?f:h.height),a.attr("class",h.classEvent.bind(h)).attr("x",b).attr("y",c).attr("width",d).attr("height",e)},i.generateEventRectsForSingleX=function(a){var b=this,c=b.d3,d=b.config;a.append("rect").attr("class",b.classEvent.bind(b)).style("cursor",d.data_selection_enabled&&d.data_selection_grouped?"pointer":null).on("mouseover",function(a){var c=a.index;b.dragging||b.flowing||b.hasArcType()||(d.point_focus_expand_enabled&&b.expandCircles(c,null,!0),b.expandBars(c,null,!0),b.main.selectAll("."+l.shape+"-"+c).each(function(a){d.data_onmouseover.call(b.api,a)}))}).on("mouseout",function(a){var c=a.index;b.config&&(b.hasArcType()||(b.hideXGridFocus(),b.hideTooltip(),b.unexpandCircles(),b.unexpandBars(),b.main.selectAll("."+l.shape+"-"+c).each(function(a){d.data_onmouseout.call(b.api,a)})))}).on("mousemove",function(a){var e,f=a.index,g=b.svg.select("."+l.eventRect+"-"+f);b.dragging||b.flowing||b.hasArcType()||(b.isStepType(a)&&"step-after"===b.config.line_step_type&&c.mouse(this)[0]<b.x(b.getXValue(a.id,f))&&(f-=1),e=b.filterTargetsToShow(b.data.targets).map(function(a){return b.addName(b.getValueOnIndex(a.values,f))}),d.tooltip_grouped&&(b.showTooltip(e,this),b.showXGridFocus(e)),(!d.tooltip_grouped||d.data_selection_enabled&&!d.data_selection_grouped)&&b.main.selectAll("."+l.shape+"-"+f).each(function(){c.select(this).classed(l.EXPANDED,!0),d.data_selection_enabled&&g.style("cursor",d.data_selection_grouped?"pointer":null),d.tooltip_grouped||(b.hideXGridFocus(),b.hideTooltip(),d.data_selection_grouped||(b.unexpandCircles(f),b.unexpandBars(f)))}).filter(function(a){return b.isWithinShape(this,a)}).each(function(a){d.data_selection_enabled&&(d.data_selection_grouped||d.data_selection_isselectable(a))&&g.style("cursor","pointer"),d.tooltip_grouped||(b.showTooltip([a],this),b.showXGridFocus([a]),d.point_focus_expand_enabled&&b.expandCircles(f,a.id,!0),b.expandBars(f,a.id,!0))}))}).on("click",function(a){var e=a.index;if(!b.hasArcType()&&b.toggleShape){if(b.cancelClick)return void(b.cancelClick=!1);b.isStepType(a)&&"step-after"===d.line_step_type&&c.mouse(this)[0]<b.x(b.getXValue(a.id,e))&&(e-=1),b.main.selectAll("."+l.shape+"-"+e).each(function(a){(d.data_selection_grouped||b.isWithinShape(this,a))&&(b.toggleShape(this,a,e),b.config.data_onclick.call(b.api,a,this))})}}).call(d.data_selection_draggable&&b.drag?c.behavior.drag().origin(Object).on("drag",function(){b.drag(c.mouse(this))}).on("dragstart",function(){b.dragstart(c.mouse(this))}).on("dragend",function(){b.dragend()}):function(){})},i.generateEventRectsForMultipleXs=function(a){function b(){c.svg.select("."+l.eventRect).style("cursor",null),c.hideXGridFocus(),c.hideTooltip(),c.unexpandCircles(),c.unexpandBars()}var c=this,d=c.d3,e=c.config;a.append("rect").attr("x",0).attr("y",0).attr("width",c.width).attr("height",c.height).attr("class",l.eventRect).on("mouseout",function(){c.config&&(c.hasArcType()||b())}).on("mousemove",function(){var a,f,g,h,i=c.filterTargetsToShow(c.data.targets);if(!c.dragging&&!c.hasArcType(i)){if(a=d.mouse(this),f=c.findClosestFromTargets(i,a),!c.mouseover||f&&f.id===c.mouseover.id||(e.data_onmouseout.call(c.api,c.mouseover),c.mouseover=void 0),!f)return void b();g=c.isScatterType(f)||!e.tooltip_grouped?[f]:c.filterByX(i,f.x),h=g.map(function(a){return c.addName(a)}),c.showTooltip(h,this),e.point_focus_expand_enabled&&c.expandCircles(f.index,f.id,!0),c.expandBars(f.index,f.id,!0),c.showXGridFocus(h),(c.isBarType(f.id)||c.dist(f,a)<e.point_sensitivity)&&(c.svg.select("."+l.eventRect).style("cursor","pointer"),c.mouseover||(e.data_onmouseover.call(c.api,f),c.mouseover=f))}}).on("click",function(){var a,b,f=c.filterTargetsToShow(c.data.targets);c.hasArcType(f)||(a=d.mouse(this),b=c.findClosestFromTargets(f,a),b&&(c.isBarType(b.id)||c.dist(b,a)<e.point_sensitivity)&&c.main.selectAll("."+l.shapes+c.getTargetSelectorSuffix(b.id)).selectAll("."+l.shape+"-"+b.index).each(function(){(e.data_selection_grouped||c.isWithinShape(this,b))&&(c.toggleShape(this,b,b.index),c.config.data_onclick.call(c.api,b,this))}))}).call(e.data_selection_draggable&&c.drag?d.behavior.drag().origin(Object).on("drag",function(){c.drag(d.mouse(this))}).on("dragstart",function(){c.dragstart(d.mouse(this))}).on("dragend",function(){c.dragend()}):function(){})},i.dispatchEvent=function(b,c,d){var e=this,f="."+l.eventRect+(e.isMultipleX()?"":"-"+c),g=e.main.select(f).node(),h=g.getBoundingClientRect(),i=h.left+(d?d[0]:0),j=h.top+(d?d[1]:0),k=document.createEvent("MouseEvents");k.initMouseEvent(b,!0,!0,a,0,i,j,i,j,!1,!1,!1,!1,0,null),g.dispatchEvent(k)},i.getCurrentWidth=function(){var a=this,b=a.config;return b.size_width?b.size_width:a.getParentWidth()},i.getCurrentHeight=function(){var a=this,b=a.config,c=b.size_height?b.size_height:a.getParentHeight();return c>0?c:320/(a.hasType("gauge")&&!b.gauge_fullCircle?2:1)},i.getCurrentPaddingTop=function(){var a=this,b=a.config,c=m(b.padding_top)?b.padding_top:0;return a.title&&a.title.node()&&(c+=a.getTitlePadding()),c},i.getCurrentPaddingBottom=function(){var a=this.config;return m(a.padding_bottom)?a.padding_bottom:0},i.getCurrentPaddingLeft=function(a){var b=this,c=b.config;return m(c.padding_left)?c.padding_left:c.axis_rotated?c.axis_x_show?Math.max(r(b.getAxisWidthByAxisId("x",a)),40):1:!c.axis_y_show||c.axis_y_inner?b.axis.getYAxisLabelPosition().isOuter?30:1:r(b.getAxisWidthByAxisId("y",a))},i.getCurrentPaddingRight=function(){var a=this,b=a.config,c=10,d=a.isLegendRight?a.getLegendWidth()+20:0;return m(b.padding_right)?b.padding_right+1:b.axis_rotated?c+d:!b.axis_y2_show||b.axis_y2_inner?2+d+(a.axis.getY2AxisLabelPosition().isOuter?20:0):r(a.getAxisWidthByAxisId("y2"))+d},i.getParentRectValue=function(a){for(var b,c=this.selectChart.node();c&&"BODY"!==c.tagName;){try{b=c.getBoundingClientRect()[a]}catch(d){"width"===a&&(b=c.offsetWidth)}if(b)break;c=c.parentNode}return b},i.getParentWidth=function(){return this.getParentRectValue("width")},i.getParentHeight=function(){var a=this.selectChart.style("height");return a.indexOf("px")>0?+a.replace("px",""):0},i.getSvgLeft=function(a){var b=this,c=b.config,d=c.axis_rotated||!c.axis_rotated&&!c.axis_y_inner,e=c.axis_rotated?l.axisX:l.axisY,f=b.main.select("."+e).node(),g=f&&d?f.getBoundingClientRect():{right:0},h=b.selectChart.node().getBoundingClientRect(),i=b.hasArcType(),j=g.right-h.left-(i?0:b.getCurrentPaddingLeft(a));return j>0?j:0},i.getAxisWidthByAxisId=function(a,b){var c=this,d=c.axis.getLabelPositionById(a);return c.axis.getMaxTickWidth(a,b)+(d.isInner?20:40)},i.getHorizontalAxisHeight=function(a){var b=this,c=b.config,d=30;return"x"!==a||c.axis_x_show?"x"===a&&c.axis_x_height?c.axis_x_height:"y"!==a||c.axis_y_show?"y2"!==a||c.axis_y2_show?("x"===a&&!c.axis_rotated&&c.axis_x_tick_rotate&&(d=30+b.axis.getMaxTickWidth(a)*Math.cos(Math.PI*(90-c.axis_x_tick_rotate)/180)),"y"===a&&c.axis_rotated&&c.axis_y_tick_rotate&&(d=30+b.axis.getMaxTickWidth(a)*Math.cos(Math.PI*(90-c.axis_y_tick_rotate)/180)),d+(b.axis.getLabelPositionById(a).isInner?0:10)+("y2"===a?-10:0)):b.rotated_padding_top:!c.legend_show||b.isLegendRight||b.isLegendInset?1:10:8},i.getEventRectWidth=function(){return Math.max(0,this.xAxis.tickInterval())},i.getShapeIndices=function(a){var b,c,d=this,e=d.config,f={},g=0;return d.filterTargetsToShow(d.data.targets.filter(a,d)).forEach(function(a){for(b=0;b<e.data_groups.length;b++)if(!(e.data_groups[b].indexOf(a.id)<0))for(c=0;c<e.data_groups[b].length;c++)if(e.data_groups[b][c]in f){f[a.id]=f[e.data_groups[b][c]];break}p(f[a.id])&&(f[a.id]=g++)}),f.__max__=g-1,f},i.getShapeX=function(a,b,c,d){var e=this,f=d?e.subX:e.x;return function(d){var e=d.id in c?c[d.id]:0;return d.x||0===d.x?f(d.x)-a*(b/2-e):0}},i.getShapeY=function(a){var b=this;return function(c){var d=a?b.getSubYScale(c.id):b.getYScale(c.id);return d(c.value)}},i.getShapeOffset=function(a,b,c){var d=this,e=d.orderTargets(d.filterTargetsToShow(d.data.targets.filter(a,d))),f=e.map(function(a){return a.id});return function(a,g){var h=c?d.getSubYScale(a.id):d.getYScale(a.id),i=h(0),j=i;return e.forEach(function(c){var e=d.isStepType(a)?d.convertValuesToStep(c.values):c.values;c.id!==a.id&&b[c.id]===b[a.id]&&f.indexOf(c.id)<f.indexOf(a.id)&&("undefined"!=typeof e[g]&&+e[g].x===+a.x||(g=-1,e.forEach(function(b,c){b.x===a.x&&(g=c)})),g in e&&e[g].value*a.value>=0&&(j+=h(e[g].value)-i))}),j}},i.isWithinShape=function(a,b){var c,d=this,e=d.d3.select(a);return d.isTargetToShow(b.id)?"circle"===a.nodeName?c=d.isStepType(b)?d.isWithinStep(a,d.getYScale(b.id)(b.value)):d.isWithinCircle(a,1.5*d.pointSelectR(b)):"path"===a.nodeName&&(c=e.classed(l.bar)?d.isWithinBar(a):!0):c=!1,c},i.getInterpolate=function(a){var b=this,c=b.isInterpolationType(b.config.spline_interpolation_type)?b.config.spline_interpolation_type:"cardinal";return b.isSplineType(a)?c:b.isStepType(a)?b.config.line_step_type:"linear"},i.initLine=function(){var a=this;a.main.select("."+l.chart).append("g").attr("class",l.chartLines)},i.updateTargetsForLine=function(a){var b,c,d=this,e=d.config,f=d.classChartLine.bind(d),g=d.classLines.bind(d),h=d.classAreas.bind(d),i=d.classCircles.bind(d),j=d.classFocus.bind(d);b=d.main.select("."+l.chartLines).selectAll("."+l.chartLine).data(a).attr("class",function(a){return f(a)+j(a)}),c=b.enter().append("g").attr("class",f).style("opacity",0).style("pointer-events","none"),c.append("g").attr("class",g),c.append("g").attr("class",h),c.append("g").attr("class",function(a){return d.generateClass(l.selectedCircles,a.id)}),c.append("g").attr("class",i).style("cursor",function(a){return e.data_selection_isselectable(a)?"pointer":null}),a.forEach(function(a){d.main.selectAll("."+l.selectedCircles+d.getTargetSelectorSuffix(a.id)).selectAll("."+l.selectedCircle).each(function(b){b.value=a.values[b.index].value})})},i.updateLine=function(a){var b=this;b.mainLine=b.main.selectAll("."+l.lines).selectAll("."+l.line).data(b.lineData.bind(b)),b.mainLine.enter().append("path").attr("class",b.classLine.bind(b)).style("stroke",b.color),b.mainLine.style("opacity",b.initialOpacity.bind(b)).style("shape-rendering",function(a){return b.isStepType(a)?"crispEdges":""}).attr("transform",null),b.mainLine.exit().transition().duration(a).style("opacity",0).remove()},i.redrawLine=function(a,b){return[(b?this.mainLine.transition(Math.random().toString()):this.mainLine).attr("d",a).style("stroke",this.color).style("opacity",1)]},i.generateDrawLine=function(a,b){var c=this,d=c.config,e=c.d3.svg.line(),f=c.generateGetLinePoints(a,b),g=b?c.getSubYScale:c.getYScale,h=function(a){return(b?c.subxx:c.xx).call(c,a)},i=function(a,b){return d.data_groups.length>0?f(a,b)[0][1]:g.call(c,a.id)(a.value)};return e=d.axis_rotated?e.x(i).y(h):e.x(h).y(i),d.line_connectNull||(e=e.defined(function(a){return null!=a.value})),function(a){var f,h=d.line_connectNull?c.filterRemoveNull(a.values):a.values,i=b?c.x:c.subX,j=g.call(c,a.id),k=0,l=0;return c.isLineType(a)?d.data_regions[a.id]?f=c.lineWithRegions(h,i,j,d.data_regions[a.id]):(c.isStepType(a)&&(h=c.convertValuesToStep(h)),f=e.interpolate(c.getInterpolate(a))(h)):(h[0]&&(k=i(h[0].x),l=j(h[0].value)),f=d.axis_rotated?"M "+l+" "+k:"M "+k+" "+l),f?f:"M 0 0"}},i.generateGetLinePoints=function(a,b){var c=this,d=c.config,e=a.__max__+1,f=c.getShapeX(0,e,a,!!b),g=c.getShapeY(!!b),h=c.getShapeOffset(c.isLineType,a,!!b),i=b?c.getSubYScale:c.getYScale;return function(a,b){var e=i.call(c,a.id)(0),j=h(a,b)||e,k=f(a),l=g(a);return d.axis_rotated&&(0<a.value&&e>l||a.value<0&&l>e)&&(l=e),[[k,l-(e-j)],[k,l-(e-j)],[k,l-(e-j)],[k,l-(e-j)]]}},i.lineWithRegions=function(a,b,c,d){function e(a,b){var c;for(c=0;c<b.length;c++)if(b[c].start<a&&a<=b[c].end)return!0;return!1}function f(a){return"M"+a[0][0]+" "+a[0][1]+" "+a[1][0]+" "+a[1][1]}var g,h,i,j,k,l,m,n,o,r,s,t,u=this,v=u.config,w=-1,x="M",y=u.isCategorized()?.5:0,z=[];if(q(d))for(g=0;g<d.length;g++)z[g]={},p(d[g].start)?z[g].start=a[0].x:z[g].start=u.isTimeSeries()?u.parseDate(d[g].start):d[g].start,p(d[g].end)?z[g].end=a[a.length-1].x:z[g].end=u.isTimeSeries()?u.parseDate(d[g].end):d[g].end;for(s=v.axis_rotated?function(a){return c(a.value)}:function(a){return b(a.x)},t=v.axis_rotated?function(a){return b(a.x)}:function(a){return c(a.value)},i=u.isTimeSeries()?function(a,d,e,g){var h,i=a.x.getTime(),j=d.x-a.x,l=new Date(i+j*e),m=new Date(i+j*(e+g));return h=v.axis_rotated?[[c(k(e)),b(l)],[c(k(e+g)),b(m)]]:[[b(l),c(k(e))],[b(m),c(k(e+g))]],f(h)}:function(a,d,e,g){var h;return h=v.axis_rotated?[[c(k(e),!0),b(j(e))],[c(k(e+g),!0),b(j(e+g))]]:[[b(j(e),!0),c(k(e))],[b(j(e+g),!0),c(k(e+g))]],f(h)},g=0;g<a.length;g++){if(p(z)||!e(a[g].x,z))x+=" "+s(a[g])+" "+t(a[g]);else for(j=u.getScale(a[g-1].x+y,a[g].x+y,u.isTimeSeries()),k=u.getScale(a[g-1].value,a[g].value),l=b(a[g].x)-b(a[g-1].x),m=c(a[g].value)-c(a[g-1].value),n=Math.sqrt(Math.pow(l,2)+Math.pow(m,2)),o=2/n,r=2*o,h=o;1>=h;h+=r)x+=i(a[g-1],a[g],h,o);w=a[g].x}return x},i.updateArea=function(a){var b=this,c=b.d3;b.mainArea=b.main.selectAll("."+l.areas).selectAll("."+l.area).data(b.lineData.bind(b)),b.mainArea.enter().append("path").attr("class",b.classArea.bind(b)).style("fill",b.color).style("opacity",function(){return b.orgAreaOpacity=+c.select(this).style("opacity"),0}),b.mainArea.style("opacity",b.orgAreaOpacity),b.mainArea.exit().transition().duration(a).style("opacity",0).remove()},i.redrawArea=function(a,b){return[(b?this.mainArea.transition(Math.random().toString()):this.mainArea).attr("d",a).style("fill",this.color).style("opacity",this.orgAreaOpacity)]},i.generateDrawArea=function(a,b){var c=this,d=c.config,e=c.d3.svg.area(),f=c.generateGetAreaPoints(a,b),g=b?c.getSubYScale:c.getYScale,h=function(a){return(b?c.subxx:c.xx).call(c,a)},i=function(a,b){return d.data_groups.length>0?f(a,b)[0][1]:g.call(c,a.id)(c.getAreaBaseValue(a.id))},j=function(a,b){return d.data_groups.length>0?f(a,b)[1][1]:g.call(c,a.id)(a.value)};return e=d.axis_rotated?e.x0(i).x1(j).y(h):e.x(h).y0(d.area_above?0:i).y1(j),d.line_connectNull||(e=e.defined(function(a){return null!==a.value})),function(a){var b,f=d.line_connectNull?c.filterRemoveNull(a.values):a.values,g=0,h=0;return c.isAreaType(a)?(c.isStepType(a)&&(f=c.convertValuesToStep(f)),b=e.interpolate(c.getInterpolate(a))(f)):(f[0]&&(g=c.x(f[0].x),h=c.getYScale(a.id)(f[0].value)),b=d.axis_rotated?"M "+h+" "+g:"M "+g+" "+h),b?b:"M 0 0"}},i.getAreaBaseValue=function(){return 0},i.generateGetAreaPoints=function(a,b){var c=this,d=c.config,e=a.__max__+1,f=c.getShapeX(0,e,a,!!b),g=c.getShapeY(!!b),h=c.getShapeOffset(c.isAreaType,a,!!b),i=b?c.getSubYScale:c.getYScale;return function(a,b){var e=i.call(c,a.id)(0),j=h(a,b)||e,k=f(a),l=g(a);return d.axis_rotated&&(0<a.value&&e>l||a.value<0&&l>e)&&(l=e),[[k,j],[k,l-(e-j)],[k,l-(e-j)],[k,j]]}},i.updateCircle=function(){var a=this;a.mainCircle=a.main.selectAll("."+l.circles).selectAll("."+l.circle).data(a.lineOrScatterData.bind(a)),a.mainCircle.enter().append("circle").attr("class",a.classCircle.bind(a)).attr("r",a.pointR.bind(a)).style("fill",a.color),a.mainCircle.style("opacity",a.initialOpacityForCircle.bind(a)),a.mainCircle.exit().remove()},i.redrawCircle=function(a,b,c){var d=this.main.selectAll("."+l.selectedCircle);return[(c?this.mainCircle.transition(Math.random().toString()):this.mainCircle).style("opacity",this.opacityForCircle.bind(this)).style("fill",this.color).attr("cx",a).attr("cy",b),(c?d.transition(Math.random().toString()):d).attr("cx",a).attr("cy",b)]},i.circleX=function(a){return a.x||0===a.x?this.x(a.x):null},i.updateCircleY=function(){var a,b,c=this;c.config.data_groups.length>0?(a=c.getShapeIndices(c.isLineType),b=c.generateGetLinePoints(a),c.circleY=function(a,c){return b(a,c)[0][1]}):c.circleY=function(a){return c.getYScale(a.id)(a.value)}},i.getCircles=function(a,b){var c=this;return(b?c.main.selectAll("."+l.circles+c.getTargetSelectorSuffix(b)):c.main).selectAll("."+l.circle+(m(a)?"-"+a:""))},i.expandCircles=function(a,b,c){var d=this,e=d.pointExpandedR.bind(d);c&&d.unexpandCircles(),d.getCircles(a,b).classed(l.EXPANDED,!0).attr("r",e)},i.unexpandCircles=function(a){var b=this,c=b.pointR.bind(b);b.getCircles(a).filter(function(){return b.d3.select(this).classed(l.EXPANDED)}).classed(l.EXPANDED,!1).attr("r",c)},i.pointR=function(a){var b=this,c=b.config;return b.isStepType(a)?0:n(c.point_r)?c.point_r(a):c.point_r;
2311 g+=e*(l[1]/(1-l[0]-l[1])),h+=e*(l[0]/(1-l[0]-l[1]))):D&&(j=p.getDataLabelLength(x,y,"height"),g+=p.axis.convertPixelsToAxisPadding(j[1],e),h+=p.axis.convertPixelsToAxisPadding(j[0],e)),"y"===b&&v(q.axis_y_padding)&&(g=p.axis.getPadding(q.axis_y_padding,"top",g,e),h=p.axis.getPadding(q.axis_y_padding,"bottom",h,e)),"y2"===b&&v(q.axis_y2_padding)&&(g=p.axis.getPadding(q.axis_y2_padding,"top",g,e),h=p.axis.getPadding(q.axis_y2_padding,"bottom",h,e)),A&&(n&&(h=x),o&&(g=-y)),d=[x-h,y+g],B?d.reverse():d)},i.getXDomainMin=function(a){var b=this,c=b.config;return q(c.axis_x_min)?b.isTimeSeries()?this.parseDate(c.axis_x_min):c.axis_x_min:b.d3.min(a,function(a){return b.d3.min(a.values,function(a){return a.x})})},i.getXDomainMax=function(a){var b=this,c=b.config;return q(c.axis_x_max)?b.isTimeSeries()?this.parseDate(c.axis_x_max):c.axis_x_max:b.d3.max(a,function(a){return b.d3.max(a.values,function(a){return a.x})})},i.getXDomainPadding=function(a){var b,c,d,e,f=this,g=f.config,h=a[1]-a[0];return f.isCategorized()?c=0:f.hasType("bar")?(b=f.getMaxDataCount(),c=b>1?h/(b-1)/2:.5):c=.01*h,"object"==typeof g.axis_x_padding&&v(g.axis_x_padding)?(d=m(g.axis_x_padding.left)?g.axis_x_padding.left:c,e=m(g.axis_x_padding.right)?g.axis_x_padding.right:c):d=e="number"==typeof g.axis_x_padding?g.axis_x_padding:c,{left:d,right:e}},i.getXDomain=function(a){var b=this,c=[b.getXDomainMin(a),b.getXDomainMax(a)],d=c[0],e=c[1],f=b.getXDomainPadding(c),g=0,h=0;return d-e!==0||b.isCategorized()||(b.isTimeSeries()?(d=new Date(.5*d.getTime()),e=new Date(1.5*e.getTime())):(d=0===d?1:.5*d,e=0===e?-1:1.5*e)),(d||0===d)&&(g=b.isTimeSeries()?new Date(d.getTime()-f.left):d-f.left),(e||0===e)&&(h=b.isTimeSeries()?new Date(e.getTime()+f.right):e+f.right),[g,h]},i.updateXDomain=function(a,b,c,d,e){var f=this,g=f.config;return c&&(f.x.domain(e?e:f.d3.extent(f.getXDomain(a))),f.orgXDomain=f.x.domain(),g.zoom_enabled&&f.zoom.scale(f.x).updateScaleExtent(),f.subX.domain(f.x.domain()),f.brush&&f.brush.scale(f.subX)),b&&(f.x.domain(e?e:!f.brush||f.brush.empty()?f.orgXDomain:f.brush.extent()),g.zoom_enabled&&f.zoom.scale(f.x).updateScaleExtent()),d&&f.x.domain(f.trimXDomain(f.x.orgDomain())),f.x.domain()},i.trimXDomain=function(a){var b=this.getZoomDomain(),c=b[0],d=b[1];return a[0]<=c&&(a[1]=+a[1]+(c-a[0]),a[0]=c),d<=a[1]&&(a[0]=+a[0]-(a[1]-d),a[1]=d),a},i.isX=function(a){var b=this,c=b.config;return c.data_x&&a===c.data_x||v(c.data_xs)&&x(c.data_xs,a)},i.isNotX=function(a){return!this.isX(a)},i.getXKey=function(a){var b=this,c=b.config;return c.data_x?c.data_x:v(c.data_xs)?c.data_xs[a]:null},i.getXValuesOfXKey=function(a,b){var c,d=this,e=b&&v(b)?d.mapToIds(b):[];return e.forEach(function(b){d.getXKey(b)===a&&(c=d.data.xs[b])}),c},i.getIndexByX=function(a){var b=this,c=b.filterByX(b.data.targets,a);return c.length?c[0].index:null},i.getXValue=function(a,b){var c=this;return a in c.data.xs&&c.data.xs[a]&&m(c.data.xs[a][b])?c.data.xs[a][b]:b},i.getOtherTargetXs=function(){var a=this,b=Object.keys(a.data.xs);return b.length?a.data.xs[b[0]]:null},i.getOtherTargetX=function(a){var b=this.getOtherTargetXs();return b&&a<b.length?b[a]:null},i.addXs=function(a){var b=this;Object.keys(a).forEach(function(c){b.config.data_xs[c]=a[c]})},i.hasMultipleX=function(a){return this.d3.set(Object.keys(a).map(function(b){return a[b]})).size()>1},i.isMultipleX=function(){return v(this.config.data_xs)||!this.config.data_xSort||this.hasType("scatter")},i.addName=function(a){var b,c=this;return a&&(b=c.config.data_names[a.id],a.name=void 0!==b?b:a.id),a},i.getValueOnIndex=function(a,b){var c=a.filter(function(a){return a.index===b});return c.length?c[0]:null},i.updateTargetX=function(a,b){var c=this;a.forEach(function(a){a.values.forEach(function(d,e){d.x=c.generateTargetX(b[e],a.id,e)}),c.data.xs[a.id]=b})},i.updateTargetXs=function(a,b){var c=this;a.forEach(function(a){b[a.id]&&c.updateTargetX([a],b[a.id])})},i.generateTargetX=function(a,b,c){var d,e=this;return d=e.isTimeSeries()?a?e.parseDate(a):e.parseDate(e.getXValue(b,c)):e.isCustomX()&&!e.isCategorized()?m(a)?+a:e.getXValue(b,c):c},i.cloneTarget=function(a){return{id:a.id,id_org:a.id_org,values:a.values.map(function(a){return{x:a.x,value:a.value,id:a.id}})}},i.updateXs=function(){var a=this;a.data.targets.length&&(a.xs=[],a.data.targets[0].values.forEach(function(b){a.xs[b.index]=b.x}))},i.getPrevX=function(a){var b=this.xs[a-1];return"undefined"!=typeof b?b:null},i.getNextX=function(a){var b=this.xs[a+1];return"undefined"!=typeof b?b:null},i.getMaxDataCount=function(){var a=this;return a.d3.max(a.data.targets,function(a){return a.values.length})},i.getMaxDataCountTarget=function(a){var b,c=a.length,d=0;return c>1?a.forEach(function(a){a.values.length>d&&(b=a,d=a.values.length)}):b=c?a[0]:null,b},i.getEdgeX=function(a){var b=this;return a.length?[b.d3.min(a,function(a){return a.values[0].x}),b.d3.max(a,function(a){return a.values[a.values.length-1].x})]:[0,0]},i.mapToIds=function(a){return a.map(function(a){return a.id})},i.mapToTargetIds=function(a){var b=this;return a?[].concat(a):b.mapToIds(b.data.targets)},i.hasTarget=function(a,b){var c,d=this.mapToIds(a);for(c=0;c<d.length;c++)if(d[c]===b)return!0;return!1},i.isTargetToShow=function(a){return this.hiddenTargetIds.indexOf(a)<0},i.isLegendToShow=function(a){return this.hiddenLegendIds.indexOf(a)<0},i.filterTargetsToShow=function(a){var b=this;return a.filter(function(a){return b.isTargetToShow(a.id)})},i.mapTargetsToUniqueXs=function(a){var b=this,c=b.d3.set(b.d3.merge(a.map(function(a){return a.values.map(function(a){return+a.x})}))).values();return c=b.isTimeSeries()?c.map(function(a){return new Date(+a)}):c.map(function(a){return+a}),c.sort(function(a,b){return b>a?-1:a>b?1:a>=b?0:NaN})},i.addHiddenTargetIds=function(a){this.hiddenTargetIds=this.hiddenTargetIds.concat(a)},i.removeHiddenTargetIds=function(a){this.hiddenTargetIds=this.hiddenTargetIds.filter(function(b){return a.indexOf(b)<0})},i.addHiddenLegendIds=function(a){this.hiddenLegendIds=this.hiddenLegendIds.concat(a)},i.removeHiddenLegendIds=function(a){this.hiddenLegendIds=this.hiddenLegendIds.filter(function(b){return a.indexOf(b)<0})},i.getValuesAsIdKeyed=function(a){var b={};return a.forEach(function(a){b[a.id]=[],a.values.forEach(function(c){b[a.id].push(c.value)})}),b},i.checkValueInTargets=function(a,b){var c,d,e,f=Object.keys(a);for(c=0;c<f.length;c++)for(e=a[f[c]].values,d=0;d<e.length;d++)if(b(e[d].value))return!0;return!1},i.hasNegativeValueInTargets=function(a){return this.checkValueInTargets(a,function(a){return 0>a})},i.hasPositiveValueInTargets=function(a){return this.checkValueInTargets(a,function(a){return a>0})},i.isOrderDesc=function(){var a=this.config;return"string"==typeof a.data_order&&"desc"===a.data_order.toLowerCase()},i.isOrderAsc=function(){var a=this.config;return"string"==typeof a.data_order&&"asc"===a.data_order.toLowerCase()},i.orderTargets=function(a){var b=this,c=b.config,d=b.isOrderAsc(),e=b.isOrderDesc();return d||e?a.sort(function(a,b){var c=function(a,b){return a+Math.abs(b.value)},e=a.values.reduce(c,0),f=b.values.reduce(c,0);return d?f-e:e-f}):n(c.data_order)&&a.sort(c.data_order),a},i.filterByX=function(a,b){return this.d3.merge(a.map(function(a){return a.values})).filter(function(a){return a.x-b===0})},i.filterRemoveNull=function(a){return a.filter(function(a){return m(a.value)})},i.filterByXDomain=function(a,b){return a.map(function(a){return{id:a.id,id_org:a.id_org,values:a.values.filter(function(a){return b[0]<=a.x&&a.x<=b[1]})}})},i.hasDataLabel=function(){var a=this.config;return"boolean"==typeof a.data_labels&&a.data_labels?!0:!("object"!=typeof a.data_labels||!v(a.data_labels))},i.getDataLabelLength=function(a,b,c){var d=this,e=[0,0],f=1.3;return d.selectChart.select("svg").selectAll(".dummy").data([a,b]).enter().append("text").text(function(a){return d.dataLabelFormat(a.id)(a)}).each(function(a,b){e[b]=this.getBoundingClientRect()[c]*f}).remove(),e},i.isNoneArc=function(a){return this.hasTarget(this.data.targets,a.id)},i.isArc=function(a){return"data"in a&&this.hasTarget(this.data.targets,a.data.id)},i.findSameXOfValues=function(a,b){var c,d=a[b].x,e=[];for(c=b-1;c>=0&&d===a[c].x;c--)e.push(a[c]);for(c=b;c<a.length&&d===a[c].x;c++)e.push(a[c]);return e},i.findClosestFromTargets=function(a,b){var c,d=this;return c=a.map(function(a){return d.findClosest(a.values,b)}),d.findClosest(c,b)},i.findClosest=function(a,b){var c,d=this,e=d.config.point_sensitivity;return a.filter(function(a){return a&&d.isBarType(a.id)}).forEach(function(a){var b=d.main.select("."+l.bars+d.getTargetSelectorSuffix(a.id)+" ."+l.bar+"-"+a.index).node();!c&&d.isWithinBar(b)&&(c=a)}),a.filter(function(a){return a&&!d.isBarType(a.id)}).forEach(function(a){var f=d.dist(a,b);e>f&&(e=f,c=a)}),c},i.dist=function(a,b){var c=this,d=c.config,e=d.axis_rotated?1:0,f=d.axis_rotated?0:1,g=c.circleY(a,a.index),h=c.x(a.x);return Math.sqrt(Math.pow(h-b[e],2)+Math.pow(g-b[f],2))},i.convertValuesToStep=function(a){var b,c=[].concat(a);if(!this.isCategorized())return a;for(b=a.length+1;b>0;b--)c[b]=c[b-1];return c[0]={x:c[0].x-1,value:c[0].value,id:c[0].id},c[a.length+1]={x:c[a.length].x+1,value:c[a.length].value,id:c[a.length].id},c},i.updateDataAttributes=function(a,b){var c=this,d=c.config,e=d["data_"+a];return"undefined"==typeof b?e:(Object.keys(b).forEach(function(a){e[a]=b[a]}),c.redraw({withLegend:!0}),e)},i.convertUrlToData=function(a,b,c,d,e){var f=this,g=b?b:"csv",h=f.d3.xhr(a);c&&Object.keys(c).forEach(function(a){h.header(a,c[a])}),h.get(function(a,b){var c;if(!b)throw new Error(a.responseURL+" "+a.status+" ("+a.statusText+")");c="json"===g?f.convertJsonToData(JSON.parse(b.response),d):"tsv"===g?f.convertTsvToData(b.response):f.convertCsvToData(b.response),e.call(f,c)})},i.convertXsvToData=function(a,b){var c,d=b.parseRows(a);return 1===d.length?(c=[{}],d[0].forEach(function(a){c[0][a]=null})):c=b.parse(a),c},i.convertCsvToData=function(a){return this.convertXsvToData(a,this.d3.csv)},i.convertTsvToData=function(a){return this.convertXsvToData(a,this.d3.tsv)},i.convertJsonToData=function(a,b){var c,d,e=this,f=[];return b?(b.x?(c=b.value.concat(b.x),e.config.data_x=b.x):c=b.value,f.push(c),a.forEach(function(a){var b=[];c.forEach(function(c){var d=e.findValueInJson(a,c);p(d)&&(d=null),b.push(d)}),f.push(b)}),d=e.convertRowsToData(f)):(Object.keys(a).forEach(function(b){f.push([b].concat(a[b]))}),d=e.convertColumnsToData(f)),d},i.findValueInJson=function(a,b){b=b.replace(/\[(\w+)\]/g,".$1"),b=b.replace(/^\./,"");for(var c=b.split("."),d=0;d<c.length;++d){var e=c[d];if(!(e in a))return;a=a[e]}return a},i.convertRowsToData=function(a){var b,c,d=a[0],e={},f=[];for(b=1;b<a.length;b++){for(e={},c=0;c<a[b].length;c++){if(p(a[b][c]))throw new Error("Source data is missing a component at ("+b+","+c+")!");e[d[c]]=a[b][c]}f.push(e)}return f},i.convertColumnsToData=function(a){var b,c,d,e=[];for(b=0;b<a.length;b++)for(d=a[b][0],c=1;c<a[b].length;c++){if(p(e[c-1])&&(e[c-1]={}),p(a[b][c]))throw new Error("Source data is missing a component at ("+b+","+c+")!");e[c-1][d]=a[b][c]}return e},i.convertDataToTargets=function(a,b){var c,d=this,e=d.config,f=d.d3.keys(a[0]).filter(d.isNotX,d),g=d.d3.keys(a[0]).filter(d.isX,d);return f.forEach(function(c){var f=d.getXKey(c);d.isCustomX()||d.isTimeSeries()?g.indexOf(f)>=0?d.data.xs[c]=(b&&d.data.xs[c]?d.data.xs[c]:[]).concat(a.map(function(a){return a[f]}).filter(m).map(function(a,b){return d.generateTargetX(a,c,b)})):e.data_x?d.data.xs[c]=d.getOtherTargetXs():v(e.data_xs)&&(d.data.xs[c]=d.getXValuesOfXKey(f,d.data.targets)):d.data.xs[c]=a.map(function(a,b){return b})}),f.forEach(function(a){if(!d.data.xs[a])throw new Error('x is not defined for id = "'+a+'".')}),c=f.map(function(b,c){var f=e.data_idConverter(b);return{id:f,id_org:b,values:a.map(function(a,g){var h,i=d.getXKey(b),j=a[i],k=null===a[b]||isNaN(a[b])?null:+a[b];return d.isCustomX()&&d.isCategorized()&&0===c&&!p(j)?(0===c&&0===g&&(e.axis_x_categories=[]),h=e.axis_x_categories.indexOf(j),-1===h&&(h=e.axis_x_categories.length,e.axis_x_categories.push(j))):h=d.generateTargetX(j,b,g),(p(a[b])||d.data.xs[b].length<=g)&&(h=void 0),{x:h,value:k,id:f}}).filter(function(a){return q(a.x)})}}),c.forEach(function(a){var b;e.data_xSort&&(a.values=a.values.sort(function(a,b){var c=a.x||0===a.x?a.x:1/0,d=b.x||0===b.x?b.x:1/0;return c-d})),b=0,a.values.forEach(function(a){a.index=b++}),d.data.xs[a.id].sort(function(a,b){return a-b})}),d.hasNegativeValue=d.hasNegativeValueInTargets(c),d.hasPositiveValue=d.hasPositiveValueInTargets(c),e.data_type&&d.setTargetType(d.mapToIds(c).filter(function(a){return!(a in e.data_types)}),e.data_type),c.forEach(function(a){d.addCache(a.id_org,a)}),c},i.load=function(a,b){var c=this;a&&(b.filter&&(a=a.filter(b.filter)),(b.type||b.types)&&a.forEach(function(a){var d=b.types&&b.types[a.id]?b.types[a.id]:b.type;c.setTargetType(a.id,d)}),c.data.targets.forEach(function(b){for(var c=0;c<a.length;c++)if(b.id===a[c].id){b.values=a[c].values,a.splice(c,1);break}}),c.data.targets=c.data.targets.concat(a)),c.updateTargets(c.data.targets),c.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0,withLegend:!0}),b.done&&b.done()},i.loadFromArgs=function(a){var b=this;a.data?b.load(b.convertDataToTargets(a.data),a):a.url?b.convertUrlToData(a.url,a.mimeType,a.headers,a.keys,function(c){b.load(b.convertDataToTargets(c),a)}):a.json?b.load(b.convertDataToTargets(b.convertJsonToData(a.json,a.keys)),a):a.rows?b.load(b.convertDataToTargets(b.convertRowsToData(a.rows)),a):a.columns?b.load(b.convertDataToTargets(b.convertColumnsToData(a.columns)),a):b.load(null,a)},i.unload=function(a,b){var c=this;return b||(b=function(){}),a=a.filter(function(a){return c.hasTarget(c.data.targets,a)}),a&&0!==a.length?(c.svg.selectAll(a.map(function(a){return c.selectorTarget(a)})).transition().style("opacity",0).remove().call(c.endall,b),void a.forEach(function(a){c.withoutFadeIn[a]=!1,c.legend&&c.legend.selectAll("."+l.legendItem+c.getTargetSelectorSuffix(a)).remove(),c.data.targets=c.data.targets.filter(function(b){return b.id!==a})})):void b()},i.categoryName=function(a){var b=this.config;return a<b.axis_x_categories.length?b.axis_x_categories[a]:a},i.initEventRect=function(){var a=this;a.main.select("."+l.chart).append("g").attr("class",l.eventRects).style("fill-opacity",0)},i.redrawEventRect=function(){var a,b,c=this,d=c.config,e=c.isMultipleX(),f=c.main.select("."+l.eventRects).style("cursor",d.zoom_enabled?d.axis_rotated?"ns-resize":"ew-resize":null).classed(l.eventRectsMultiple,e).classed(l.eventRectsSingle,!e);f.selectAll("."+l.eventRect).remove(),c.eventRect=f.selectAll("."+l.eventRect),e?(a=c.eventRect.data([0]),c.generateEventRectsForMultipleXs(a.enter()),c.updateEventRect(a)):(b=c.getMaxDataCountTarget(c.data.targets),f.datum(b?b.values:[]),c.eventRect=f.selectAll("."+l.eventRect),a=c.eventRect.data(function(a){return a}),c.generateEventRectsForSingleX(a.enter()),c.updateEventRect(a),a.exit().remove())},i.updateEventRect=function(a){var b,c,d,e,f,g,h=this,i=h.config;a=a||h.eventRect.data(function(a){return a}),h.isMultipleX()?(b=0,c=0,d=h.width,e=h.height):(!h.isCustomX()&&!h.isTimeSeries()||h.isCategorized()?(f=h.getEventRectWidth(),g=function(a){return h.x(a.x)-f/2}):(h.updateXs(),f=function(a){var b=h.getPrevX(a.index),c=h.getNextX(a.index);return null===b&&null===c?i.axis_rotated?h.height:h.width:(null===b&&(b=h.x.domain()[0]),null===c&&(c=h.x.domain()[1]),Math.max(0,(h.x(c)-h.x(b))/2))},g=function(a){var b=h.getPrevX(a.index),c=h.getNextX(a.index),d=h.data.xs[a.id][a.index];return null===b&&null===c?0:(null===b&&(b=h.x.domain()[0]),(h.x(d)+h.x(b))/2)}),b=i.axis_rotated?0:g,c=i.axis_rotated?g:0,d=i.axis_rotated?h.width:f,e=i.axis_rotated?f:h.height),a.attr("class",h.classEvent.bind(h)).attr("x",b).attr("y",c).attr("width",d).attr("height",e)},i.generateEventRectsForSingleX=function(a){var b=this,c=b.d3,d=b.config;a.append("rect").attr("class",b.classEvent.bind(b)).style("cursor",d.data_selection_enabled&&d.data_selection_grouped?"pointer":null).on("mouseover",function(a){var c=a.index;b.dragging||b.flowing||b.hasArcType()||(d.point_focus_expand_enabled&&b.expandCircles(c,null,!0),b.expandBars(c,null,!0),b.main.selectAll("."+l.shape+"-"+c).each(function(a){d.data_onmouseover.call(b.api,a)}))}).on("mouseout",function(a){var c=a.index;b.config&&(b.hasArcType()||(b.hideXGridFocus(),b.hideTooltip(),b.unexpandCircles(),b.unexpandBars(),b.main.selectAll("."+l.shape+"-"+c).each(function(a){d.data_onmouseout.call(b.api,a)})))}).on("mousemove",function(a){var e,f=a.index,g=b.svg.select("."+l.eventRect+"-"+f);b.dragging||b.flowing||b.hasArcType()||(b.isStepType(a)&&"step-after"===b.config.line_step_type&&c.mouse(this)[0]<b.x(b.getXValue(a.id,f))&&(f-=1),e=b.filterTargetsToShow(b.data.targets).map(function(a){return b.addName(b.getValueOnIndex(a.values,f))}),d.tooltip_grouped&&(b.showTooltip(e,this),b.showXGridFocus(e)),(!d.tooltip_grouped||d.data_selection_enabled&&!d.data_selection_grouped)&&b.main.selectAll("."+l.shape+"-"+f).each(function(){c.select(this).classed(l.EXPANDED,!0),d.data_selection_enabled&&g.style("cursor",d.data_selection_grouped?"pointer":null),d.tooltip_grouped||(b.hideXGridFocus(),b.hideTooltip(),d.data_selection_grouped||(b.unexpandCircles(f),b.unexpandBars(f)))}).filter(function(a){return b.isWithinShape(this,a)}).each(function(a){d.data_selection_enabled&&(d.data_selection_grouped||d.data_selection_isselectable(a))&&g.style("cursor","pointer"),d.tooltip_grouped||(b.showTooltip([a],this),b.showXGridFocus([a]),d.point_focus_expand_enabled&&b.expandCircles(f,a.id,!0),b.expandBars(f,a.id,!0))}))}).on("click",function(a){var e=a.index;if(!b.hasArcType()&&b.toggleShape){if(b.cancelClick)return void(b.cancelClick=!1);b.isStepType(a)&&"step-after"===d.line_step_type&&c.mouse(this)[0]<b.x(b.getXValue(a.id,e))&&(e-=1),b.main.selectAll("."+l.shape+"-"+e).each(function(a){(d.data_selection_grouped||b.isWithinShape(this,a))&&(b.toggleShape(this,a,e),b.config.data_onclick.call(b.api,a,this))})}}).call(d.data_selection_draggable&&b.drag?c.behavior.drag().origin(Object).on("drag",function(){b.drag(c.mouse(this))}).on("dragstart",function(){b.dragstart(c.mouse(this))}).on("dragend",function(){b.dragend()}):function(){})},i.generateEventRectsForMultipleXs=function(a){function b(){c.svg.select("."+l.eventRect).style("cursor",null),c.hideXGridFocus(),c.hideTooltip(),c.unexpandCircles(),c.unexpandBars()}var c=this,d=c.d3,e=c.config;a.append("rect").attr("x",0).attr("y",0).attr("width",c.width).attr("height",c.height).attr("class",l.eventRect).on("mouseout",function(){c.config&&(c.hasArcType()||b())}).on("mousemove",function(){var a,f,g,h,i=c.filterTargetsToShow(c.data.targets);if(!c.dragging&&!c.hasArcType(i)){if(a=d.mouse(this),f=c.findClosestFromTargets(i,a),!c.mouseover||f&&f.id===c.mouseover.id||(e.data_onmouseout.call(c.api,c.mouseover),c.mouseover=void 0),!f)return void b();g=c.isScatterType(f)||!e.tooltip_grouped?[f]:c.filterByX(i,f.x),h=g.map(function(a){return c.addName(a)}),c.showTooltip(h,this),e.point_focus_expand_enabled&&c.expandCircles(f.index,f.id,!0),c.expandBars(f.index,f.id,!0),c.showXGridFocus(h),(c.isBarType(f.id)||c.dist(f,a)<e.point_sensitivity)&&(c.svg.select("."+l.eventRect).style("cursor","pointer"),c.mouseover||(e.data_onmouseover.call(c.api,f),c.mouseover=f))}}).on("click",function(){var a,b,f=c.filterTargetsToShow(c.data.targets);c.hasArcType(f)||(a=d.mouse(this),b=c.findClosestFromTargets(f,a),b&&(c.isBarType(b.id)||c.dist(b,a)<e.point_sensitivity)&&c.main.selectAll("."+l.shapes+c.getTargetSelectorSuffix(b.id)).selectAll("."+l.shape+"-"+b.index).each(function(){(e.data_selection_grouped||c.isWithinShape(this,b))&&(c.toggleShape(this,b,b.index),c.config.data_onclick.call(c.api,b,this))}))}).call(e.data_selection_draggable&&c.drag?d.behavior.drag().origin(Object).on("drag",function(){c.drag(d.mouse(this))}).on("dragstart",function(){c.dragstart(d.mouse(this))}).on("dragend",function(){c.dragend()}):function(){})},i.dispatchEvent=function(b,c,d){var e=this,f="."+l.eventRect+(e.isMultipleX()?"":"-"+c),g=e.main.select(f).node(),h=g.getBoundingClientRect(),i=h.left+(d?d[0]:0),j=h.top+(d?d[1]:0),k=document.createEvent("MouseEvents");k.initMouseEvent(b,!0,!0,a,0,i,j,i,j,!1,!1,!1,!1,0,null),g.dispatchEvent(k)},i.getCurrentWidth=function(){var a=this,b=a.config;return b.size_width?b.size_width:a.getParentWidth()},i.getCurrentHeight=function(){var a=this,b=a.config,c=b.size_height?b.size_height:a.getParentHeight();return c>0?c:320/(a.hasType("gauge")&&!b.gauge_fullCircle?2:1)},i.getCurrentPaddingTop=function(){var a=this,b=a.config,c=m(b.padding_top)?b.padding_top:0;return a.title&&a.title.node()&&(c+=a.getTitlePadding()),c},i.getCurrentPaddingBottom=function(){var a=this.config;return m(a.padding_bottom)?a.padding_bottom:0},i.getCurrentPaddingLeft=function(a){var b=this,c=b.config;return m(c.padding_left)?c.padding_left:c.axis_rotated?c.axis_x_show?Math.max(r(b.getAxisWidthByAxisId("x",a)),40):1:!c.axis_y_show||c.axis_y_inner?b.axis.getYAxisLabelPosition().isOuter?30:1:r(b.getAxisWidthByAxisId("y",a))},i.getCurrentPaddingRight=function(){var a=this,b=a.config,c=10,d=a.isLegendRight?a.getLegendWidth()+20:0;return m(b.padding_right)?b.padding_right+1:b.axis_rotated?c+d:!b.axis_y2_show||b.axis_y2_inner?2+d+(a.axis.getY2AxisLabelPosition().isOuter?20:0):r(a.getAxisWidthByAxisId("y2"))+d},i.getParentRectValue=function(a){for(var b,c=this.selectChart.node();c&&"BODY"!==c.tagName;){try{b=c.getBoundingClientRect()[a]}catch(d){"width"===a&&(b=c.offsetWidth)}if(b)break;c=c.parentNode}return b},i.getParentWidth=function(){return this.getParentRectValue("width")},i.getParentHeight=function(){var a=this.selectChart.style("height");return a.indexOf("px")>0?+a.replace("px",""):0},i.getSvgLeft=function(a){var b=this,c=b.config,d=c.axis_rotated||!c.axis_rotated&&!c.axis_y_inner,e=c.axis_rotated?l.axisX:l.axisY,f=b.main.select("."+e).node(),g=f&&d?f.getBoundingClientRect():{right:0},h=b.selectChart.node().getBoundingClientRect(),i=b.hasArcType(),j=g.right-h.left-(i?0:b.getCurrentPaddingLeft(a));return j>0?j:0},i.getAxisWidthByAxisId=function(a,b){var c=this,d=c.axis.getLabelPositionById(a);return c.axis.getMaxTickWidth(a,b)+(d.isInner?20:40)},i.getHorizontalAxisHeight=function(a){var b=this,c=b.config,d=30;return"x"!==a||c.axis_x_show?"x"===a&&c.axis_x_height?c.axis_x_height:"y"!==a||c.axis_y_show?"y2"!==a||c.axis_y2_show?("x"===a&&!c.axis_rotated&&c.axis_x_tick_rotate&&(d=30+b.axis.getMaxTickWidth(a)*Math.cos(Math.PI*(90-c.axis_x_tick_rotate)/180)),"y"===a&&c.axis_rotated&&c.axis_y_tick_rotate&&(d=30+b.axis.getMaxTickWidth(a)*Math.cos(Math.PI*(90-c.axis_y_tick_rotate)/180)),d+(b.axis.getLabelPositionById(a).isInner?0:10)+("y2"===a?-10:0)):b.rotated_padding_top:!c.legend_show||b.isLegendRight||b.isLegendInset?1:10:8},i.getEventRectWidth=function(){return Math.max(0,this.xAxis.tickInterval())},i.getShapeIndices=function(a){var b,c,d=this,e=d.config,f={},g=0;return d.filterTargetsToShow(d.data.targets.filter(a,d)).forEach(function(a){for(b=0;b<e.data_groups.length;b++)if(!(e.data_groups[b].indexOf(a.id)<0))for(c=0;c<e.data_groups[b].length;c++)if(e.data_groups[b][c]in f){f[a.id]=f[e.data_groups[b][c]];break}p(f[a.id])&&(f[a.id]=g++)}),f.__max__=g-1,f},i.getShapeX=function(a,b,c,d){var e=this,f=d?e.subX:e.x;return function(d){var e=d.id in c?c[d.id]:0;return d.x||0===d.x?f(d.x)-a*(b/2-e):0}},i.getShapeY=function(a){var b=this;return function(c){var d=a?b.getSubYScale(c.id):b.getYScale(c.id);return d(c.value)}},i.getShapeOffset=function(a,b,c){var d=this,e=d.orderTargets(d.filterTargetsToShow(d.data.targets.filter(a,d))),f=e.map(function(a){return a.id});return function(a,g){var h=c?d.getSubYScale(a.id):d.getYScale(a.id),i=h(0),j=i;return e.forEach(function(c){var e=d.isStepType(a)?d.convertValuesToStep(c.values):c.values;c.id!==a.id&&b[c.id]===b[a.id]&&f.indexOf(c.id)<f.indexOf(a.id)&&("undefined"!=typeof e[g]&&+e[g].x===+a.x||(g=-1,e.forEach(function(b,c){b.x===a.x&&(g=c)})),g in e&&e[g].value*a.value>=0&&(j+=h(e[g].value)-i))}),j}},i.isWithinShape=function(a,b){var c,d=this,e=d.d3.select(a);return d.isTargetToShow(b.id)?"circle"===a.nodeName?c=d.isStepType(b)?d.isWithinStep(a,d.getYScale(b.id)(b.value)):d.isWithinCircle(a,1.5*d.pointSelectR(b)):"path"===a.nodeName&&(c=e.classed(l.bar)?d.isWithinBar(a):!0):c=!1,c},i.getInterpolate=function(a){var b=this,c=b.isInterpolationType(b.config.spline_interpolation_type)?b.config.spline_interpolation_type:"cardinal";return b.isSplineType(a)?c:b.isStepType(a)?b.config.line_step_type:"linear"},i.initLine=function(){var a=this;a.main.select("."+l.chart).append("g").attr("class",l.chartLines)},i.updateTargetsForLine=function(a){var b,c,d=this,e=d.config,f=d.classChartLine.bind(d),g=d.classLines.bind(d),h=d.classAreas.bind(d),i=d.classCircles.bind(d),j=d.classFocus.bind(d);b=d.main.select("."+l.chartLines).selectAll("."+l.chartLine).data(a).attr("class",function(a){return f(a)+j(a)}),c=b.enter().append("g").attr("class",f).style("opacity",0).style("pointer-events","none"),c.append("g").attr("class",g),c.append("g").attr("class",h),c.append("g").attr("class",function(a){return d.generateClass(l.selectedCircles,a.id)}),c.append("g").attr("class",i).style("cursor",function(a){return e.data_selection_isselectable(a)?"pointer":null}),a.forEach(function(a){d.main.selectAll("."+l.selectedCircles+d.getTargetSelectorSuffix(a.id)).selectAll("."+l.selectedCircle).each(function(b){b.value=a.values[b.index].value})})},i.updateLine=function(a){var b=this;b.mainLine=b.main.selectAll("."+l.lines).selectAll("."+l.line).data(b.lineData.bind(b)),b.mainLine.enter().append("path").attr("class",b.classLine.bind(b)).style("stroke",b.color),b.mainLine.style("opacity",b.initialOpacity.bind(b)).style("shape-rendering",function(a){return b.isStepType(a)?"crispEdges":""}).attr("transform",null),b.mainLine.exit().transition().duration(a).style("opacity",0).remove()},i.redrawLine=function(a,b){return[(b?this.mainLine.transition(Math.random().toString()):this.mainLine).attr("d",a).style("stroke",this.color).style("opacity",1)]},i.generateDrawLine=function(a,b){var c=this,d=c.config,e=c.d3.svg.line(),f=c.generateGetLinePoints(a,b),g=b?c.getSubYScale:c.getYScale,h=function(a){return(b?c.subxx:c.xx).call(c,a)},i=function(a,b){return d.data_groups.length>0?f(a,b)[0][1]:g.call(c,a.id)(a.value)};return e=d.axis_rotated?e.x(i).y(h):e.x(h).y(i),d.line_connectNull||(e=e.defined(function(a){return null!=a.value})),function(a){var f,h=d.line_connectNull?c.filterRemoveNull(a.values):a.values,i=b?c.x:c.subX,j=g.call(c,a.id),k=0,l=0;return c.isLineType(a)?d.data_regions[a.id]?f=c.lineWithRegions(h,i,j,d.data_regions[a.id]):(c.isStepType(a)&&(h=c.convertValuesToStep(h)),f=e.interpolate(c.getInterpolate(a))(h)):(h[0]&&(k=i(h[0].x),l=j(h[0].value)),f=d.axis_rotated?"M "+l+" "+k:"M "+k+" "+l),f?f:"M 0 0"}},i.generateGetLinePoints=function(a,b){var c=this,d=c.config,e=a.__max__+1,f=c.getShapeX(0,e,a,!!b),g=c.getShapeY(!!b),h=c.getShapeOffset(c.isLineType,a,!!b),i=b?c.getSubYScale:c.getYScale;return function(a,b){var e=i.call(c,a.id)(0),j=h(a,b)||e,k=f(a),l=g(a);return d.axis_rotated&&(0<a.value&&e>l||a.value<0&&l>e)&&(l=e),[[k,l-(e-j)],[k,l-(e-j)],[k,l-(e-j)],[k,l-(e-j)]]}},i.lineWithRegions=function(a,b,c,d){function e(a,b){var c;for(c=0;c<b.length;c++)if(b[c].start<a&&a<=b[c].end)return!0;return!1}function f(a){return"M"+a[0][0]+" "+a[0][1]+" "+a[1][0]+" "+a[1][1]}var g,h,i,j,k,l,m,n,o,r,s,t,u=this,v=u.config,w=-1,x="M",y=u.isCategorized()?.5:0,z=[];if(q(d))for(g=0;g<d.length;g++)z[g]={},p(d[g].start)?z[g].start=a[0].x:z[g].start=u.isTimeSeries()?u.parseDate(d[g].start):d[g].start,p(d[g].end)?z[g].end=a[a.length-1].x:z[g].end=u.isTimeSeries()?u.parseDate(d[g].end):d[g].end;for(s=v.axis_rotated?function(a){return c(a.value)}:function(a){return b(a.x)},t=v.axis_rotated?function(a){return b(a.x)}:function(a){return c(a.value)},i=u.isTimeSeries()?function(a,d,e,g){var h,i=a.x.getTime(),j=d.x-a.x,l=new Date(i+j*e),m=new Date(i+j*(e+g));return h=v.axis_rotated?[[c(k(e)),b(l)],[c(k(e+g)),b(m)]]:[[b(l),c(k(e))],[b(m),c(k(e+g))]],f(h)}:function(a,d,e,g){var h;return h=v.axis_rotated?[[c(k(e),!0),b(j(e))],[c(k(e+g),!0),b(j(e+g))]]:[[b(j(e),!0),c(k(e))],[b(j(e+g),!0),c(k(e+g))]],f(h)},g=0;g<a.length;g++){if(p(z)||!e(a[g].x,z))x+=" "+s(a[g])+" "+t(a[g]);else for(j=u.getScale(a[g-1].x+y,a[g].x+y,u.isTimeSeries()),k=u.getScale(a[g-1].value,a[g].value),l=b(a[g].x)-b(a[g-1].x),m=c(a[g].value)-c(a[g-1].value),n=Math.sqrt(Math.pow(l,2)+Math.pow(m,2)),o=2/n,r=2*o,h=o;1>=h;h+=r)x+=i(a[g-1],a[g],h,o);w=a[g].x}return x},i.updateArea=function(a){var b=this,c=b.d3;b.mainArea=b.main.selectAll("."+l.areas).selectAll("."+l.area).data(b.lineData.bind(b)),b.mainArea.enter().append("path").attr("class",b.classArea.bind(b)).style("fill",b.color).style("opacity",function(){return b.orgAreaOpacity=+c.select(this).style("opacity"),0}),b.mainArea.style("opacity",b.orgAreaOpacity),b.mainArea.exit().transition().duration(a).style("opacity",0).remove()},i.redrawArea=function(a,b){return[(b?this.mainArea.transition(Math.random().toString()):this.mainArea).attr("d",a).style("fill",this.color).style("opacity",this.orgAreaOpacity)]},i.generateDrawArea=function(a,b){var c=this,d=c.config,e=c.d3.svg.area(),f=c.generateGetAreaPoints(a,b),g=b?c.getSubYScale:c.getYScale,h=function(a){return(b?c.subxx:c.xx).call(c,a)},i=function(a,b){return d.data_groups.length>0?f(a,b)[0][1]:g.call(c,a.id)(c.getAreaBaseValue(a.id))},j=function(a,b){return d.data_groups.length>0?f(a,b)[1][1]:g.call(c,a.id)(a.value)};return e=d.axis_rotated?e.x0(i).x1(j).y(h):e.x(h).y0(d.area_above?0:i).y1(j),d.line_connectNull||(e=e.defined(function(a){return null!==a.value})),function(a){var b,f=d.line_connectNull?c.filterRemoveNull(a.values):a.values,g=0,h=0;return c.isAreaType(a)?(c.isStepType(a)&&(f=c.convertValuesToStep(f)),b=e.interpolate(c.getInterpolate(a))(f)):(f[0]&&(g=c.x(f[0].x),h=c.getYScale(a.id)(f[0].value)),b=d.axis_rotated?"M "+h+" "+g:"M "+g+" "+h),b?b:"M 0 0"}},i.getAreaBaseValue=function(){return 0},i.generateGetAreaPoints=function(a,b){var c=this,d=c.config,e=a.__max__+1,f=c.getShapeX(0,e,a,!!b),g=c.getShapeY(!!b),h=c.getShapeOffset(c.isAreaType,a,!!b),i=b?c.getSubYScale:c.getYScale;return function(a,b){var e=i.call(c,a.id)(0),j=h(a,b)||e,k=f(a),l=g(a);return d.axis_rotated&&(0<a.value&&e>l||a.value<0&&l>e)&&(l=e),[[k,j],[k,l-(e-j)],[k,l-(e-j)],[k,j]]}},i.updateCircle=function(){var a=this;a.mainCircle=a.main.selectAll("."+l.circles).selectAll("."+l.circle).data(a.lineOrScatterData.bind(a)),a.mainCircle.enter().append("circle").attr("class",a.classCircle.bind(a)).attr("r",a.pointR.bind(a)).style("fill",a.color),a.mainCircle.style("opacity",a.initialOpacityForCircle.bind(a)),a.mainCircle.exit().remove()},i.redrawCircle=function(a,b,c){var d=this.main.selectAll("."+l.selectedCircle);return[(c?this.mainCircle.transition(Math.random().toString()):this.mainCircle).style("opacity",this.opacityForCircle.bind(this)).style("fill",this.color).attr("cx",a).attr("cy",b),(c?d.transition(Math.random().toString()):d).attr("cx",a).attr("cy",b)]},i.circleX=function(a){return a.x||0===a.x?this.x(a.x):null},i.updateCircleY=function(){var a,b,c=this;c.config.data_groups.length>0?(a=c.getShapeIndices(c.isLineType),b=c.generateGetLinePoints(a),c.circleY=function(a,c){return b(a,c)[0][1]}):c.circleY=function(a){return c.getYScale(a.id)(a.value)}},i.getCircles=function(a,b){var c=this;return(b?c.main.selectAll("."+l.circles+c.getTargetSelectorSuffix(b)):c.main).selectAll("."+l.circle+(m(a)?"-"+a:""))},i.expandCircles=function(a,b,c){var d=this,e=d.pointExpandedR.bind(d);c&&d.unexpandCircles(),d.getCircles(a,b).classed(l.EXPANDED,!0).attr("r",e)},i.unexpandCircles=function(a){var b=this,c=b.pointR.bind(b);b.getCircles(a).filter(function(){return b.d3.select(this).classed(l.EXPANDED)}).classed(l.EXPANDED,!1).attr("r",c)},i.pointR=function(a){var b=this,c=b.config;return b.isStepType(a)?0:n(c.point_r)?c.point_r(a):c.point_r;
2312 },i.pointExpandedR=function(a){var b=this,c=b.config;return c.point_focus_expand_enabled?c.point_focus_expand_r?c.point_focus_expand_r:1.75*b.pointR(a):b.pointR(a)},i.pointSelectR=function(a){var b=this,c=b.config;return n(c.point_select_r)?c.point_select_r(a):c.point_select_r?c.point_select_r:4*b.pointR(a)},i.isWithinCircle=function(a,b){var c=this.d3,d=c.mouse(a),e=c.select(a),f=+e.attr("cx"),g=+e.attr("cy");return Math.sqrt(Math.pow(f-d[0],2)+Math.pow(g-d[1],2))<b},i.isWithinStep=function(a,b){return Math.abs(b-this.d3.mouse(a)[1])<30},i.initBar=function(){var a=this;a.main.select("."+l.chart).append("g").attr("class",l.chartBars)},i.updateTargetsForBar=function(a){var b,c,d=this,e=d.config,f=d.classChartBar.bind(d),g=d.classBars.bind(d),h=d.classFocus.bind(d);b=d.main.select("."+l.chartBars).selectAll("."+l.chartBar).data(a).attr("class",function(a){return f(a)+h(a)}),c=b.enter().append("g").attr("class",f).style("opacity",0).style("pointer-events","none"),c.append("g").attr("class",g).style("cursor",function(a){return e.data_selection_isselectable(a)?"pointer":null})},i.updateBar=function(a){var b=this,c=b.barData.bind(b),d=b.classBar.bind(b),e=b.initialOpacity.bind(b),f=function(a){return b.color(a.id)};b.mainBar=b.main.selectAll("."+l.bars).selectAll("."+l.bar).data(c),b.mainBar.enter().append("path").attr("class",d).style("stroke",f).style("fill",f),b.mainBar.style("opacity",e),b.mainBar.exit().transition().duration(a).style("opacity",0).remove()},i.redrawBar=function(a,b){return[(b?this.mainBar.transition(Math.random().toString()):this.mainBar).attr("d",a).style("fill",this.color).style("opacity",1)]},i.getBarW=function(a,b){var c=this,d=c.config,e="number"==typeof d.bar_width?d.bar_width:b?a.tickInterval()*d.bar_width_ratio/b:0;return d.bar_width_max&&e>d.bar_width_max?d.bar_width_max:e},i.getBars=function(a,b){var c=this;return(b?c.main.selectAll("."+l.bars+c.getTargetSelectorSuffix(b)):c.main).selectAll("."+l.bar+(m(a)?"-"+a:""))},i.expandBars=function(a,b,c){var d=this;c&&d.unexpandBars(),d.getBars(a,b).classed(l.EXPANDED,!0)},i.unexpandBars=function(a){var b=this;b.getBars(a).classed(l.EXPANDED,!1)},i.generateDrawBar=function(a,b){var c=this,d=c.config,e=c.generateGetBarPoints(a,b);return function(a,b){var c=e(a,b),f=d.axis_rotated?1:0,g=d.axis_rotated?0:1,h="M "+c[0][f]+","+c[0][g]+" L"+c[1][f]+","+c[1][g]+" L"+c[2][f]+","+c[2][g]+" L"+c[3][f]+","+c[3][g]+" z";return h}},i.generateGetBarPoints=function(a,b){var c=this,d=b?c.subXAxis:c.xAxis,e=a.__max__+1,f=c.getBarW(d,e),g=c.getShapeX(f,e,a,!!b),h=c.getShapeY(!!b),i=c.getShapeOffset(c.isBarType,a,!!b),j=b?c.getSubYScale:c.getYScale;return function(a,b){var d=j.call(c,a.id)(0),e=i(a,b)||d,k=g(a),l=h(a);return c.config.axis_rotated&&(0<a.value&&d>l||a.value<0&&l>d)&&(l=d),[[k,e],[k,l-(d-e)],[k+f,l-(d-e)],[k+f,e]]}},i.isWithinBar=function(a){var b=this.d3.mouse(a),c=a.getBoundingClientRect(),d=a.pathSegList.getItem(0),e=a.pathSegList.getItem(1),f=Math.min(d.x,e.x),g=Math.min(d.y,e.y),h=c.width,i=c.height,j=2,k=f-j,l=f+h+j,m=g+i+j,n=g-j;return k<b[0]&&b[0]<l&&n<b[1]&&b[1]<m},i.initText=function(){var a=this;a.main.select("."+l.chart).append("g").attr("class",l.chartTexts),a.mainText=a.d3.selectAll([])},i.updateTargetsForText=function(a){var b,c,d=this,e=d.classChartText.bind(d),f=d.classTexts.bind(d),g=d.classFocus.bind(d);b=d.main.select("."+l.chartTexts).selectAll("."+l.chartText).data(a).attr("class",function(a){return e(a)+g(a)}),c=b.enter().append("g").attr("class",e).style("opacity",0).style("pointer-events","none"),c.append("g").attr("class",f)},i.updateText=function(a){var b=this,c=b.config,d=b.barOrLineData.bind(b),e=b.classText.bind(b);b.mainText=b.main.selectAll("."+l.texts).selectAll("."+l.text).data(d),b.mainText.enter().append("text").attr("class",e).attr("text-anchor",function(a){return c.axis_rotated?a.value<0?"end":"start":"middle"}).style("stroke","none").style("fill",function(a){return b.color(a)}).style("fill-opacity",0),b.mainText.text(function(a,c,d){return b.dataLabelFormat(a.id)(a.value,a.id,c,d)}),b.mainText.exit().transition().duration(a).style("fill-opacity",0).remove()},i.redrawText=function(a,b,c,d){return[(d?this.mainText.transition():this.mainText).attr("x",a).attr("y",b).style("fill",this.color).style("fill-opacity",c?0:this.opacityForText.bind(this))]},i.getTextRect=function(a,b,c){var d,e=this.d3.select("body").append("div").classed("c3",!0),f=e.append("svg").style("visibility","hidden").style("position","fixed").style("top",0).style("left",0),g=this.d3.select(c).style("font");return f.selectAll(".dummy").data([a]).enter().append("text").classed(b?b:"",!0).style("font",g).text(a).each(function(){d=this.getBoundingClientRect()}),e.remove(),d},i.generateXYForText=function(a,b,c,d){var e=this,f=e.generateGetAreaPoints(a,!1),g=e.generateGetBarPoints(b,!1),h=e.generateGetLinePoints(c,!1),i=d?e.getXForText:e.getYForText;return function(a,b){var c=e.isAreaType(a)?f:e.isBarType(a)?g:h;return i.call(e,c(a,b),a,this)}},i.getXForText=function(a,b,c){var d,e,f=this,g=c.getBoundingClientRect();return f.config.axis_rotated?(e=f.isBarType(b)?4:6,d=a[2][1]+e*(b.value<0?-1:1)):d=f.hasType("bar")?(a[2][0]+a[0][0])/2:a[0][0],null===b.value&&(d>f.width?d=f.width-g.width:0>d&&(d=4)),d},i.getYForText=function(a,b,c){var d,e=this,f=c.getBoundingClientRect();return e.config.axis_rotated?d=(a[0][0]+a[2][0]+.6*f.height)/2:(d=a[2][1],b.value<0||0===b.value&&!e.hasPositiveValue?(d+=f.height,e.isBarType(b)&&e.isSafari()?d-=3:!e.isBarType(b)&&e.isChrome()&&(d+=3)):d+=e.isBarType(b)?-3:-6),null!==b.value||e.config.axis_rotated||(d<f.height?d=f.height:d>this.height&&(d=this.height-4)),d},i.setTargetType=function(a,b){var c=this,d=c.config;c.mapToTargetIds(a).forEach(function(a){c.withoutFadeIn[a]=b===d.data_types[a],d.data_types[a]=b}),a||(d.data_type=b)},i.hasType=function(a,b){var c=this,d=c.config.data_types,e=!1;return b=b||c.data.targets,b&&b.length?b.forEach(function(b){var c=d[b.id];(c&&c.indexOf(a)>=0||!c&&"line"===a)&&(e=!0)}):Object.keys(d).length?Object.keys(d).forEach(function(b){d[b]===a&&(e=!0)}):e=c.config.data_type===a,e},i.hasArcType=function(a){return this.hasType("pie",a)||this.hasType("donut",a)||this.hasType("gauge",a)},i.isLineType=function(a){var b=this.config,c=o(a)?a:a.id;return!b.data_types[c]||["line","spline","area","area-spline","step","area-step"].indexOf(b.data_types[c])>=0},i.isStepType=function(a){var b=o(a)?a:a.id;return["step","area-step"].indexOf(this.config.data_types[b])>=0},i.isSplineType=function(a){var b=o(a)?a:a.id;return["spline","area-spline"].indexOf(this.config.data_types[b])>=0},i.isAreaType=function(a){var b=o(a)?a:a.id;return["area","area-spline","area-step"].indexOf(this.config.data_types[b])>=0},i.isBarType=function(a){var b=o(a)?a:a.id;return"bar"===this.config.data_types[b]},i.isScatterType=function(a){var b=o(a)?a:a.id;return"scatter"===this.config.data_types[b]},i.isPieType=function(a){var b=o(a)?a:a.id;return"pie"===this.config.data_types[b]},i.isGaugeType=function(a){var b=o(a)?a:a.id;return"gauge"===this.config.data_types[b]},i.isDonutType=function(a){var b=o(a)?a:a.id;return"donut"===this.config.data_types[b]},i.isArcType=function(a){return this.isPieType(a)||this.isDonutType(a)||this.isGaugeType(a)},i.lineData=function(a){return this.isLineType(a)?[a]:[]},i.arcData=function(a){return this.isArcType(a.data)?[a]:[]},i.barData=function(a){return this.isBarType(a)?a.values:[]},i.lineOrScatterData=function(a){return this.isLineType(a)||this.isScatterType(a)?a.values:[]},i.barOrLineData=function(a){return this.isBarType(a)||this.isLineType(a)?a.values:[]},i.isInterpolationType=function(a){return["linear","linear-closed","basis","basis-open","basis-closed","bundle","cardinal","cardinal-open","cardinal-closed","monotone"].indexOf(a)>=0},i.initGrid=function(){var a=this,b=a.config,c=a.d3;a.grid=a.main.append("g").attr("clip-path",a.clipPathForGrid).attr("class",l.grid),b.grid_x_show&&a.grid.append("g").attr("class",l.xgrids),b.grid_y_show&&a.grid.append("g").attr("class",l.ygrids),b.grid_focus_show&&a.grid.append("g").attr("class",l.xgridFocus).append("line").attr("class",l.xgridFocus),a.xgrid=c.selectAll([]),b.grid_lines_front||a.initGridLines()},i.initGridLines=function(){var a=this,b=a.d3;a.gridLines=a.main.append("g").attr("clip-path",a.clipPathForGrid).attr("class",l.grid+" "+l.gridLines),a.gridLines.append("g").attr("class",l.xgridLines),a.gridLines.append("g").attr("class",l.ygridLines),a.xgridLines=b.selectAll([])},i.updateXGrid=function(a){var b=this,c=b.config,d=b.d3,e=b.generateGridData(c.grid_x_type,b.x),f=b.isCategorized()?b.xAxis.tickOffset():0;b.xgridAttr=c.axis_rotated?{x1:0,x2:b.width,y1:function(a){return b.x(a)-f},y2:function(a){return b.x(a)-f}}:{x1:function(a){return b.x(a)+f},x2:function(a){return b.x(a)+f},y1:0,y2:b.height},b.xgrid=b.main.select("."+l.xgrids).selectAll("."+l.xgrid).data(e),b.xgrid.enter().append("line").attr("class",l.xgrid),a||b.xgrid.attr(b.xgridAttr).style("opacity",function(){return+d.select(this).attr(c.axis_rotated?"y1":"x1")===(c.axis_rotated?b.height:0)?0:1}),b.xgrid.exit().remove()},i.updateYGrid=function(){var a=this,b=a.config,c=a.yAxis.tickValues()||a.y.ticks(b.grid_y_ticks);a.ygrid=a.main.select("."+l.ygrids).selectAll("."+l.ygrid).data(c),a.ygrid.enter().append("line").attr("class",l.ygrid),a.ygrid.attr("x1",b.axis_rotated?a.y:0).attr("x2",b.axis_rotated?a.y:a.width).attr("y1",b.axis_rotated?0:a.y).attr("y2",b.axis_rotated?a.height:a.y),a.ygrid.exit().remove(),a.smoothLines(a.ygrid,"grid")},i.gridTextAnchor=function(a){return a.position?a.position:"end"},i.gridTextDx=function(a){return"start"===a.position?4:"middle"===a.position?0:-4},i.xGridTextX=function(a){return"start"===a.position?-this.height:"middle"===a.position?-this.height/2:0},i.yGridTextX=function(a){return"start"===a.position?0:"middle"===a.position?this.width/2:this.width},i.updateGrid=function(a){var b,c,d,e=this,f=e.main,g=e.config;e.grid.style("visibility",e.hasArcType()?"hidden":"visible"),f.select("line."+l.xgridFocus).style("visibility","hidden"),g.grid_x_show&&e.updateXGrid(),e.xgridLines=f.select("."+l.xgridLines).selectAll("."+l.xgridLine).data(g.grid_x_lines),b=e.xgridLines.enter().append("g").attr("class",function(a){return l.xgridLine+(a["class"]?" "+a["class"]:"")}),b.append("line").style("opacity",0),b.append("text").attr("text-anchor",e.gridTextAnchor).attr("transform",g.axis_rotated?"":"rotate(-90)").attr("dx",e.gridTextDx).attr("dy",-5).style("opacity",0),e.xgridLines.exit().transition().duration(a).style("opacity",0).remove(),g.grid_y_show&&e.updateYGrid(),e.ygridLines=f.select("."+l.ygridLines).selectAll("."+l.ygridLine).data(g.grid_y_lines),c=e.ygridLines.enter().append("g").attr("class",function(a){return l.ygridLine+(a["class"]?" "+a["class"]:"")}),c.append("line").style("opacity",0),c.append("text").attr("text-anchor",e.gridTextAnchor).attr("transform",g.axis_rotated?"rotate(-90)":"").attr("dx",e.gridTextDx).attr("dy",-5).style("opacity",0),d=e.yv.bind(e),e.ygridLines.select("line").transition().duration(a).attr("x1",g.axis_rotated?d:0).attr("x2",g.axis_rotated?d:e.width).attr("y1",g.axis_rotated?0:d).attr("y2",g.axis_rotated?e.height:d).style("opacity",1),e.ygridLines.select("text").transition().duration(a).attr("x",g.axis_rotated?e.xGridTextX.bind(e):e.yGridTextX.bind(e)).attr("y",d).text(function(a){return a.text}).style("opacity",1),e.ygridLines.exit().transition().duration(a).style("opacity",0).remove()},i.redrawGrid=function(a){var b=this,c=b.config,d=b.xv.bind(b),e=b.xgridLines.select("line"),f=b.xgridLines.select("text");return[(a?e.transition():e).attr("x1",c.axis_rotated?0:d).attr("x2",c.axis_rotated?b.width:d).attr("y1",c.axis_rotated?d:0).attr("y2",c.axis_rotated?d:b.height).style("opacity",1),(a?f.transition():f).attr("x",c.axis_rotated?b.yGridTextX.bind(b):b.xGridTextX.bind(b)).attr("y",d).text(function(a){return a.text}).style("opacity",1)]},i.showXGridFocus=function(a){var b=this,c=b.config,d=a.filter(function(a){return a&&m(a.value)}),e=b.main.selectAll("line."+l.xgridFocus),f=b.xx.bind(b);c.tooltip_show&&(b.hasType("scatter")||b.hasArcType()||(e.style("visibility","visible").data([d[0]]).attr(c.axis_rotated?"y1":"x1",f).attr(c.axis_rotated?"y2":"x2",f),b.smoothLines(e,"grid")))},i.hideXGridFocus=function(){this.main.select("line."+l.xgridFocus).style("visibility","hidden")},i.updateXgridFocus=function(){var a=this,b=a.config;a.main.select("line."+l.xgridFocus).attr("x1",b.axis_rotated?0:-10).attr("x2",b.axis_rotated?a.width:-10).attr("y1",b.axis_rotated?-10:0).attr("y2",b.axis_rotated?-10:a.height)},i.generateGridData=function(a,b){var c,d,e,f,g=this,h=[],i=g.main.select("."+l.axisX).selectAll(".tick").size();if("year"===a)for(c=g.getXDomain(),d=c[0].getFullYear(),e=c[1].getFullYear(),f=d;e>=f;f++)h.push(new Date(f+"-01-01 00:00:00"));else h=b.ticks(10),h.length>i&&(h=h.filter(function(a){return(""+a).indexOf(".")<0}));return h},i.getGridFilterToRemove=function(a){return a?function(b){var c=!1;return[].concat(a).forEach(function(a){("value"in a&&b.value===a.value||"class"in a&&b["class"]===a["class"])&&(c=!0)}),c}:function(){return!0}},i.removeGridLines=function(a,b){var c=this,d=c.config,e=c.getGridFilterToRemove(a),f=function(a){return!e(a)},g=b?l.xgridLines:l.ygridLines,h=b?l.xgridLine:l.ygridLine;c.main.select("."+g).selectAll("."+h).filter(e).transition().duration(d.transition_duration).style("opacity",0).remove(),b?d.grid_x_lines=d.grid_x_lines.filter(f):d.grid_y_lines=d.grid_y_lines.filter(f)},i.initTooltip=function(){var a,b=this,c=b.config;if(b.tooltip=b.selectChart.style("position","relative").append("div").attr("class",l.tooltipContainer).style("position","absolute").style("pointer-events","none").style("display","none"),c.tooltip_init_show){if(b.isTimeSeries()&&o(c.tooltip_init_x)){for(c.tooltip_init_x=b.parseDate(c.tooltip_init_x),a=0;a<b.data.targets[0].values.length&&b.data.targets[0].values[a].x-c.tooltip_init_x!==0;a++);c.tooltip_init_x=a}b.tooltip.html(c.tooltip_contents.call(b,b.data.targets.map(function(a){return b.addName(a.values[c.tooltip_init_x])}),b.axis.getXAxisTickFormat(),b.getYFormat(b.hasArcType()),b.color)),b.tooltip.style("top",c.tooltip_init_position.top).style("left",c.tooltip_init_position.left).style("display","block")}},i.getTooltipContent=function(a,b,c,d){var e,f,g,h,i,j,k=this,l=k.config,m=l.tooltip_format_title||b,n=l.tooltip_format_name||function(a){return a},o=l.tooltip_format_value||c,p=k.isOrderAsc();if(0===l.data_groups.length)a.sort(function(a,b){var c=a?a.value:null,d=b?b.value:null;return p?c-d:d-c});else{var q=k.orderTargets(k.data.targets).map(function(a){return a.id});a.sort(function(a,b){var c=a?a.value:null,d=b?b.value:null;return c>0&&d>0&&(c=a?q.indexOf(a.id):null,d=b?q.indexOf(b.id):null),p?c-d:d-c})}for(f=0;f<a.length;f++)if(a[f]&&(a[f].value||0===a[f].value)&&(e||(g=y(m?m(a[f].x):a[f].x),e="<table class='"+k.CLASS.tooltip+"'>"+(g||0===g?"<tr><th colspan='2'>"+g+"</th></tr>":"")),h=y(o(a[f].value,a[f].ratio,a[f].id,a[f].index,a)),void 0!==h)){if(null===a[f].name)continue;i=y(n(a[f].name,a[f].ratio,a[f].id,a[f].index)),j=k.levelColor?k.levelColor(a[f].value):d(a[f].id),e+="<tr class='"+k.CLASS.tooltipName+"-"+k.getTargetSelectorSuffix(a[f].id)+"'>",e+="<td class='name'><span style='background-color:"+j+"'></span>"+i+"</td>",e+="<td class='value'>"+h+"</td>",e+="</tr>"}return e+"</table>"},i.tooltipPosition=function(a,b,c,d){var e,f,g,h,i,j=this,k=j.config,l=j.d3,m=j.hasArcType(),n=l.mouse(d);return m?(f=(j.width-(j.isLegendRight?j.getLegendWidth():0))/2+n[0],h=j.height/2+n[1]+20):(e=j.getSvgLeft(!0),k.axis_rotated?(f=e+n[0]+100,g=f+b,i=j.currentWidth-j.getCurrentPaddingRight(),h=j.x(a[0].x)+20):(f=e+j.getCurrentPaddingLeft(!0)+j.x(a[0].x)+20,g=f+b,i=e+j.currentWidth-j.getCurrentPaddingRight(),h=n[1]+15),g>i&&(f-=g-i+20),h+c>j.currentHeight&&(h-=c+30)),0>h&&(h=0),{top:h,left:f}},i.showTooltip=function(a,b){var c,d,e,f=this,g=f.config,h=f.hasArcType(),j=a.filter(function(a){return a&&m(a.value)}),k=g.tooltip_position||i.tooltipPosition;0!==j.length&&g.tooltip_show&&(f.tooltip.html(g.tooltip_contents.call(f,a,f.axis.getXAxisTickFormat(),f.getYFormat(h),f.color)).style("display","block"),c=f.tooltip.property("offsetWidth"),d=f.tooltip.property("offsetHeight"),e=k.call(this,j,c,d,b),f.tooltip.style("top",e.top+"px").style("left",e.left+"px"))},i.hideTooltip=function(){this.tooltip.style("display","none")},i.initLegend=function(){var a=this;return a.legendItemTextBox={},a.legendHasRendered=!1,a.legend=a.svg.append("g").attr("transform",a.getTranslate("legend")),a.config.legend_show?void a.updateLegendWithDefaults():(a.legend.style("visibility","hidden"),void(a.hiddenLegendIds=a.mapToIds(a.data.targets)))},i.updateLegendWithDefaults=function(){var a=this;a.updateLegend(a.mapToIds(a.data.targets),{withTransform:!1,withTransitionForTransform:!1,withTransition:!1})},i.updateSizeForLegend=function(a,b){var c=this,d=c.config,e={top:c.isLegendTop?c.getCurrentPaddingTop()+d.legend_inset_y+5.5:c.currentHeight-a-c.getCurrentPaddingBottom()-d.legend_inset_y,left:c.isLegendLeft?c.getCurrentPaddingLeft()+d.legend_inset_x+.5:c.currentWidth-b-c.getCurrentPaddingRight()-d.legend_inset_x+.5};c.margin3={top:c.isLegendRight?0:c.isLegendInset?e.top:c.currentHeight-a,right:NaN,bottom:0,left:c.isLegendRight?c.currentWidth-b:c.isLegendInset?e.left:0}},i.transformLegend=function(a){var b=this;(a?b.legend.transition():b.legend).attr("transform",b.getTranslate("legend"))},i.updateLegendStep=function(a){this.legendStep=a},i.updateLegendItemWidth=function(a){this.legendItemWidth=a},i.updateLegendItemHeight=function(a){this.legendItemHeight=a},i.getLegendWidth=function(){var a=this;return a.config.legend_show?a.isLegendRight||a.isLegendInset?a.legendItemWidth*(a.legendStep+1):a.currentWidth:0},i.getLegendHeight=function(){var a=this,b=0;return a.config.legend_show&&(b=a.isLegendRight?a.currentHeight:Math.max(20,a.legendItemHeight)*(a.legendStep+1)),b},i.opacityForLegend=function(a){return a.classed(l.legendItemHidden)?null:1},i.opacityForUnfocusedLegend=function(a){return a.classed(l.legendItemHidden)?null:.3},i.toggleFocusLegend=function(a,b){var c=this;a=c.mapToTargetIds(a),c.legend.selectAll("."+l.legendItem).filter(function(b){return a.indexOf(b)>=0}).classed(l.legendItemFocused,b).transition().duration(100).style("opacity",function(){var a=b?c.opacityForLegend:c.opacityForUnfocusedLegend;return a.call(c,c.d3.select(this))})},i.revertLegend=function(){var a=this,b=a.d3;a.legend.selectAll("."+l.legendItem).classed(l.legendItemFocused,!1).transition().duration(100).style("opacity",function(){return a.opacityForLegend(b.select(this))})},i.showLegend=function(a){var b=this,c=b.config;c.legend_show||(c.legend_show=!0,b.legend.style("visibility","visible"),b.legendHasRendered||b.updateLegendWithDefaults()),b.removeHiddenLegendIds(a),b.legend.selectAll(b.selectorLegends(a)).style("visibility","visible").transition().style("opacity",function(){return b.opacityForLegend(b.d3.select(this))})},i.hideLegend=function(a){var b=this,c=b.config;c.legend_show&&u(a)&&(c.legend_show=!1,b.legend.style("visibility","hidden")),b.addHiddenLegendIds(a),b.legend.selectAll(b.selectorLegends(a)).style("opacity",0).style("visibility","hidden")},i.clearLegendItemTextBoxCache=function(){this.legendItemTextBox={}},i.updateLegend=function(a,b,c){function d(a,b){return y.legendItemTextBox[b]||(y.legendItemTextBox[b]=y.getTextRect(a.textContent,l.legendItem,a)),y.legendItemTextBox[b]}function e(b,c,e){function f(a,b){b||(g=(o-G-n)/2,E>g&&(g=(o-n)/2,G=0,M++)),L[a]=M,K[M]=y.isLegendInset?10:g,H[a]=G,G+=n}var g,h,i=0===e,j=e===a.length-1,k=d(b,c),l=k.width+F+(!j||y.isLegendRight||y.isLegendInset?B:0)+z.legend_padding,m=k.height+A,n=y.isLegendRight||y.isLegendInset?m:l,o=y.isLegendRight||y.isLegendInset?y.getLegendHeight():y.getLegendWidth();return i&&(G=0,M=0,C=0,D=0),z.legend_show&&!y.isLegendToShow(c)?void(I[c]=J[c]=L[c]=H[c]=0):(I[c]=l,J[c]=m,(!C||l>=C)&&(C=l),(!D||m>=D)&&(D=m),h=y.isLegendRight||y.isLegendInset?D:C,void(z.legend_equally?(Object.keys(I).forEach(function(a){I[a]=C}),Object.keys(J).forEach(function(a){J[a]=D}),g=(o-h*a.length)/2,E>g?(G=0,M=0,a.forEach(function(a){f(a)})):f(c,!0)):f(c)))}var f,g,h,i,j,k,m,n,o,p,r,s,t,u,v,x,y=this,z=y.config,A=4,B=10,C=0,D=0,E=10,F=z.legend_item_tile_width+5,G=0,H={},I={},J={},K=[0],L={},M=0;a=a.filter(function(a){return!q(z.data_names[a])||null!==z.data_names[a]}),b=b||{},r=w(b,"withTransition",!0),s=w(b,"withTransitionForTransform",!0),y.isLegendInset&&(M=z.legend_inset_step?z.legend_inset_step:a.length,y.updateLegendStep(M)),y.isLegendRight?(f=function(a){return C*L[a]},i=function(a){return K[L[a]]+H[a]}):y.isLegendInset?(f=function(a){return C*L[a]+10},i=function(a){return K[L[a]]+H[a]}):(f=function(a){return K[L[a]]+H[a]},i=function(a){return D*L[a]}),g=function(a,b){return f(a,b)+4+z.legend_item_tile_width},j=function(a,b){return i(a,b)+9},h=function(a,b){return f(a,b)},k=function(a,b){return i(a,b)-5},m=function(a,b){return f(a,b)-2},n=function(a,b){return f(a,b)-2+z.legend_item_tile_width},o=function(a,b){return i(a,b)+4},p=y.legend.selectAll("."+l.legendItem).data(a).enter().append("g").attr("class",function(a){return y.generateClass(l.legendItem,a)}).style("visibility",function(a){return y.isLegendToShow(a)?"visible":"hidden"}).style("cursor","pointer").on("click",function(a){z.legend_item_onclick?z.legend_item_onclick.call(y,a):y.d3.event.altKey?(y.api.hide(),y.api.show(a)):(y.api.toggle(a),y.isTargetToShow(a)?y.api.focus(a):y.api.revert())}).on("mouseover",function(a){z.legend_item_onmouseover?z.legend_item_onmouseover.call(y,a):(y.d3.select(this).classed(l.legendItemFocused,!0),!y.transiting&&y.isTargetToShow(a)&&y.api.focus(a))}).on("mouseout",function(a){z.legend_item_onmouseout?z.legend_item_onmouseout.call(y,a):(y.d3.select(this).classed(l.legendItemFocused,!1),y.api.revert())}),p.append("text").text(function(a){return q(z.data_names[a])?z.data_names[a]:a}).each(function(a,b){e(this,a,b)}).style("pointer-events","none").attr("x",y.isLegendRight||y.isLegendInset?g:-200).attr("y",y.isLegendRight||y.isLegendInset?-200:j),p.append("rect").attr("class",l.legendItemEvent).style("fill-opacity",0).attr("x",y.isLegendRight||y.isLegendInset?h:-200).attr("y",y.isLegendRight||y.isLegendInset?-200:k),p.append("line").attr("class",l.legendItemTile).style("stroke",y.color).style("pointer-events","none").attr("x1",y.isLegendRight||y.isLegendInset?m:-200).attr("y1",y.isLegendRight||y.isLegendInset?-200:o).attr("x2",y.isLegendRight||y.isLegendInset?n:-200).attr("y2",y.isLegendRight||y.isLegendInset?-200:o).attr("stroke-width",z.legend_item_tile_height),x=y.legend.select("."+l.legendBackground+" rect"),y.isLegendInset&&C>0&&0===x.size()&&(x=y.legend.insert("g","."+l.legendItem).attr("class",l.legendBackground).append("rect")),t=y.legend.selectAll("text").data(a).text(function(a){return q(z.data_names[a])?z.data_names[a]:a}).each(function(a,b){e(this,a,b)}),(r?t.transition():t).attr("x",g).attr("y",j),u=y.legend.selectAll("rect."+l.legendItemEvent).data(a),(r?u.transition():u).attr("width",function(a){return I[a]}).attr("height",function(a){return J[a]}).attr("x",h).attr("y",k),v=y.legend.selectAll("line."+l.legendItemTile).data(a),(r?v.transition():v).style("stroke",y.color).attr("x1",m).attr("y1",o).attr("x2",n).attr("y2",o),x&&(r?x.transition():x).attr("height",y.getLegendHeight()-12).attr("width",C*(M+1)+10),y.legend.selectAll("."+l.legendItem).classed(l.legendItemHidden,function(a){return!y.isTargetToShow(a)}),y.updateLegendItemWidth(C),y.updateLegendItemHeight(D),y.updateLegendStep(M),y.updateSizes(),y.updateScales(),y.updateSvgSize(),y.transformAll(s,c),y.legendHasRendered=!0},i.initTitle=function(){var a=this;a.title=a.svg.append("text").text(a.config.title_text).attr("class",a.CLASS.title)},i.redrawTitle=function(){var a=this;a.title.attr("x",a.xForTitle.bind(a)).attr("y",a.yForTitle.bind(a))},i.xForTitle=function(){var a,b=this,c=b.config,d=c.title_position||"left";return a=d.indexOf("right")>=0?b.currentWidth-b.getTextRect(b.title.node().textContent,b.CLASS.title,b.title.node()).width-c.title_padding.right:d.indexOf("center")>=0?(b.currentWidth-b.getTextRect(b.title.node().textContent,b.CLASS.title,b.title.node()).width)/2:c.title_padding.left},i.yForTitle=function(){var a=this;return a.config.title_padding.top+a.getTextRect(a.title.node().textContent,a.CLASS.title,a.title.node()).height},i.getTitlePadding=function(){var a=this;return a.yForTitle()+a.config.title_padding.bottom},c(b,f),f.prototype.init=function(){var a=this.owner,b=a.config,c=a.main;a.axes.x=c.append("g").attr("class",l.axis+" "+l.axisX).attr("clip-path",a.clipPathForXAxis).attr("transform",a.getTranslate("x")).style("visibility",b.axis_x_show?"visible":"hidden"),a.axes.x.append("text").attr("class",l.axisXLabel).attr("transform",b.axis_rotated?"rotate(-90)":"").style("text-anchor",this.textAnchorForXAxisLabel.bind(this)),a.axes.y=c.append("g").attr("class",l.axis+" "+l.axisY).attr("clip-path",b.axis_y_inner?"":a.clipPathForYAxis).attr("transform",a.getTranslate("y")).style("visibility",b.axis_y_show?"visible":"hidden"),a.axes.y.append("text").attr("class",l.axisYLabel).attr("transform",b.axis_rotated?"":"rotate(-90)").style("text-anchor",this.textAnchorForYAxisLabel.bind(this)),a.axes.y2=c.append("g").attr("class",l.axis+" "+l.axisY2).attr("transform",a.getTranslate("y2")).style("visibility",b.axis_y2_show?"visible":"hidden"),a.axes.y2.append("text").attr("class",l.axisY2Label).attr("transform",b.axis_rotated?"":"rotate(-90)").style("text-anchor",this.textAnchorForY2AxisLabel.bind(this))},f.prototype.getXAxis=function(a,b,c,d,e,f,h){var i=this.owner,j=i.config,k={isCategory:i.isCategorized(),withOuterTick:e,tickMultiline:j.axis_x_tick_multiline,tickWidth:j.axis_x_tick_width,tickTextRotate:h?0:j.axis_x_tick_rotate,withoutTransition:f},l=g(i.d3,k).scale(a).orient(b);return i.isTimeSeries()&&d&&"function"!=typeof d&&(d=d.map(function(a){return i.parseDate(a)})),l.tickFormat(c).tickValues(d),i.isCategorized()&&(l.tickCentered(j.axis_x_tick_centered),u(j.axis_x_tick_culling)&&(j.axis_x_tick_culling=!1)),l},f.prototype.updateXAxisTickValues=function(a,b){var c,d=this.owner,e=d.config;return(e.axis_x_tick_fit||e.axis_x_tick_count)&&(c=this.generateTickValues(d.mapTargetsToUniqueXs(a),e.axis_x_tick_count,d.isTimeSeries())),b?b.tickValues(c):(d.xAxis.tickValues(c),d.subXAxis.tickValues(c)),c},f.prototype.getYAxis=function(a,b,c,d,e,f,h){var i=this.owner,j=i.config,k={withOuterTick:e,withoutTransition:f,tickTextRotate:h?0:j.axis_y_tick_rotate},l=g(i.d3,k).scale(a).orient(b).tickFormat(c);return i.isTimeSeriesY()?l.ticks(i.d3.time[j.axis_y_tick_time_value],j.axis_y_tick_time_interval):l.tickValues(d),l},f.prototype.getId=function(a){var b=this.owner.config;return a in b.data_axes?b.data_axes[a]:"y"},f.prototype.getXAxisTickFormat=function(){var a=this.owner,b=a.config,c=a.isTimeSeries()?a.defaultAxisTimeFormat:a.isCategorized()?a.categoryName:function(a){return 0>a?a.toFixed(0):a};return b.axis_x_tick_format&&(n(b.axis_x_tick_format)?c=b.axis_x_tick_format:a.isTimeSeries()&&(c=function(c){return c?a.axisTimeFormat(b.axis_x_tick_format)(c):""})),n(c)?function(b){return c.call(a,b)}:c},f.prototype.getTickValues=function(a,b){return a?a:b?b.tickValues():void 0},f.prototype.getXAxisTickValues=function(){return this.getTickValues(this.owner.config.axis_x_tick_values,this.owner.xAxis)},f.prototype.getYAxisTickValues=function(){return this.getTickValues(this.owner.config.axis_y_tick_values,this.owner.yAxis)},f.prototype.getY2AxisTickValues=function(){return this.getTickValues(this.owner.config.axis_y2_tick_values,this.owner.y2Axis)},f.prototype.getLabelOptionByAxisId=function(a){var b,c=this.owner,d=c.config;return"y"===a?b=d.axis_y_label:"y2"===a?b=d.axis_y2_label:"x"===a&&(b=d.axis_x_label),b},f.prototype.getLabelText=function(a){var b=this.getLabelOptionByAxisId(a);return o(b)?b:b?b.text:null},f.prototype.setLabelText=function(a,b){var c=this.owner,d=c.config,e=this.getLabelOptionByAxisId(a);o(e)?"y"===a?d.axis_y_label=b:"y2"===a?d.axis_y2_label=b:"x"===a&&(d.axis_x_label=b):e&&(e.text=b)},f.prototype.getLabelPosition=function(a,b){var c=this.getLabelOptionByAxisId(a),d=c&&"object"==typeof c&&c.position?c.position:b;return{isInner:d.indexOf("inner")>=0,isOuter:d.indexOf("outer")>=0,isLeft:d.indexOf("left")>=0,isCenter:d.indexOf("center")>=0,isRight:d.indexOf("right")>=0,isTop:d.indexOf("top")>=0,isMiddle:d.indexOf("middle")>=0,isBottom:d.indexOf("bottom")>=0}},f.prototype.getXAxisLabelPosition=function(){return this.getLabelPosition("x",this.owner.config.axis_rotated?"inner-top":"inner-right")},f.prototype.getYAxisLabelPosition=function(){return this.getLabelPosition("y",this.owner.config.axis_rotated?"inner-right":"inner-top")},f.prototype.getY2AxisLabelPosition=function(){return this.getLabelPosition("y2",this.owner.config.axis_rotated?"inner-right":"inner-top")},f.prototype.getLabelPositionById=function(a){return"y2"===a?this.getY2AxisLabelPosition():"y"===a?this.getYAxisLabelPosition():this.getXAxisLabelPosition()},f.prototype.textForXAxisLabel=function(){return this.getLabelText("x")},f.prototype.textForYAxisLabel=function(){return this.getLabelText("y")},f.prototype.textForY2AxisLabel=function(){return this.getLabelText("y2")},f.prototype.xForAxisLabel=function(a,b){var c=this.owner;return a?b.isLeft?0:b.isCenter?c.width/2:c.width:b.isBottom?-c.height:b.isMiddle?-c.height/2:0},f.prototype.dxForAxisLabel=function(a,b){return a?b.isLeft?"0.5em":b.isRight?"-0.5em":"0":b.isTop?"-0.5em":b.isBottom?"0.5em":"0"},f.prototype.textAnchorForAxisLabel=function(a,b){return a?b.isLeft?"start":b.isCenter?"middle":"end":b.isBottom?"start":b.isMiddle?"middle":"end"},f.prototype.xForXAxisLabel=function(){return this.xForAxisLabel(!this.owner.config.axis_rotated,this.getXAxisLabelPosition())},f.prototype.xForYAxisLabel=function(){return this.xForAxisLabel(this.owner.config.axis_rotated,this.getYAxisLabelPosition())},f.prototype.xForY2AxisLabel=function(){return this.xForAxisLabel(this.owner.config.axis_rotated,this.getY2AxisLabelPosition())},f.prototype.dxForXAxisLabel=function(){return this.dxForAxisLabel(!this.owner.config.axis_rotated,this.getXAxisLabelPosition())},f.prototype.dxForYAxisLabel=function(){return this.dxForAxisLabel(this.owner.config.axis_rotated,this.getYAxisLabelPosition())},f.prototype.dxForY2AxisLabel=function(){return this.dxForAxisLabel(this.owner.config.axis_rotated,this.getY2AxisLabelPosition())},f.prototype.dyForXAxisLabel=function(){var a=this.owner,b=a.config,c=this.getXAxisLabelPosition();return b.axis_rotated?c.isInner?"1.2em":-25-this.getMaxTickWidth("x"):c.isInner?"-0.5em":b.axis_x_height?b.axis_x_height-10:"3em"},f.prototype.dyForYAxisLabel=function(){var a=this.owner,b=this.getYAxisLabelPosition();return a.config.axis_rotated?b.isInner?"-0.5em":"3em":b.isInner?"1.2em":-10-(a.config.axis_y_inner?0:this.getMaxTickWidth("y")+10)},f.prototype.dyForY2AxisLabel=function(){var a=this.owner,b=this.getY2AxisLabelPosition();return a.config.axis_rotated?b.isInner?"1.2em":"-2.2em":b.isInner?"-0.5em":15+(a.config.axis_y2_inner?0:this.getMaxTickWidth("y2")+15)},f.prototype.textAnchorForXAxisLabel=function(){var a=this.owner;return this.textAnchorForAxisLabel(!a.config.axis_rotated,this.getXAxisLabelPosition())},f.prototype.textAnchorForYAxisLabel=function(){var a=this.owner;return this.textAnchorForAxisLabel(a.config.axis_rotated,this.getYAxisLabelPosition())},f.prototype.textAnchorForY2AxisLabel=function(){var a=this.owner;return this.textAnchorForAxisLabel(a.config.axis_rotated,this.getY2AxisLabelPosition())},f.prototype.getMaxTickWidth=function(a,b){var c,d,e,f,g,h=this.owner,i=h.config,j=0;return b&&h.currentMaxTickWidths[a]?h.currentMaxTickWidths[a]:(h.svg&&(c=h.filterTargetsToShow(h.data.targets),"y"===a?(d=h.y.copy().domain(h.getYDomain(c,"y")),e=this.getYAxis(d,h.yOrient,i.axis_y_tick_format,h.yAxisTickValues,!1,!0,!0)):"y2"===a?(d=h.y2.copy().domain(h.getYDomain(c,"y2")),
2312 },i.pointExpandedR=function(a){var b=this,c=b.config;return c.point_focus_expand_enabled?c.point_focus_expand_r?c.point_focus_expand_r:1.75*b.pointR(a):b.pointR(a)},i.pointSelectR=function(a){var b=this,c=b.config;return n(c.point_select_r)?c.point_select_r(a):c.point_select_r?c.point_select_r:4*b.pointR(a)},i.isWithinCircle=function(a,b){var c=this.d3,d=c.mouse(a),e=c.select(a),f=+e.attr("cx"),g=+e.attr("cy");return Math.sqrt(Math.pow(f-d[0],2)+Math.pow(g-d[1],2))<b},i.isWithinStep=function(a,b){return Math.abs(b-this.d3.mouse(a)[1])<30},i.initBar=function(){var a=this;a.main.select("."+l.chart).append("g").attr("class",l.chartBars)},i.updateTargetsForBar=function(a){var b,c,d=this,e=d.config,f=d.classChartBar.bind(d),g=d.classBars.bind(d),h=d.classFocus.bind(d);b=d.main.select("."+l.chartBars).selectAll("."+l.chartBar).data(a).attr("class",function(a){return f(a)+h(a)}),c=b.enter().append("g").attr("class",f).style("opacity",0).style("pointer-events","none"),c.append("g").attr("class",g).style("cursor",function(a){return e.data_selection_isselectable(a)?"pointer":null})},i.updateBar=function(a){var b=this,c=b.barData.bind(b),d=b.classBar.bind(b),e=b.initialOpacity.bind(b),f=function(a){return b.color(a.id)};b.mainBar=b.main.selectAll("."+l.bars).selectAll("."+l.bar).data(c),b.mainBar.enter().append("path").attr("class",d).style("stroke",f).style("fill",f),b.mainBar.style("opacity",e),b.mainBar.exit().transition().duration(a).style("opacity",0).remove()},i.redrawBar=function(a,b){return[(b?this.mainBar.transition(Math.random().toString()):this.mainBar).attr("d",a).style("fill",this.color).style("opacity",1)]},i.getBarW=function(a,b){var c=this,d=c.config,e="number"==typeof d.bar_width?d.bar_width:b?a.tickInterval()*d.bar_width_ratio/b:0;return d.bar_width_max&&e>d.bar_width_max?d.bar_width_max:e},i.getBars=function(a,b){var c=this;return(b?c.main.selectAll("."+l.bars+c.getTargetSelectorSuffix(b)):c.main).selectAll("."+l.bar+(m(a)?"-"+a:""))},i.expandBars=function(a,b,c){var d=this;c&&d.unexpandBars(),d.getBars(a,b).classed(l.EXPANDED,!0)},i.unexpandBars=function(a){var b=this;b.getBars(a).classed(l.EXPANDED,!1)},i.generateDrawBar=function(a,b){var c=this,d=c.config,e=c.generateGetBarPoints(a,b);return function(a,b){var c=e(a,b),f=d.axis_rotated?1:0,g=d.axis_rotated?0:1,h="M "+c[0][f]+","+c[0][g]+" L"+c[1][f]+","+c[1][g]+" L"+c[2][f]+","+c[2][g]+" L"+c[3][f]+","+c[3][g]+" z";return h}},i.generateGetBarPoints=function(a,b){var c=this,d=b?c.subXAxis:c.xAxis,e=a.__max__+1,f=c.getBarW(d,e),g=c.getShapeX(f,e,a,!!b),h=c.getShapeY(!!b),i=c.getShapeOffset(c.isBarType,a,!!b),j=b?c.getSubYScale:c.getYScale;return function(a,b){var d=j.call(c,a.id)(0),e=i(a,b)||d,k=g(a),l=h(a);return c.config.axis_rotated&&(0<a.value&&d>l||a.value<0&&l>d)&&(l=d),[[k,e],[k,l-(d-e)],[k+f,l-(d-e)],[k+f,e]]}},i.isWithinBar=function(a){var b=this.d3.mouse(a),c=a.getBoundingClientRect(),d=a.pathSegList.getItem(0),e=a.pathSegList.getItem(1),f=Math.min(d.x,e.x),g=Math.min(d.y,e.y),h=c.width,i=c.height,j=2,k=f-j,l=f+h+j,m=g+i+j,n=g-j;return k<b[0]&&b[0]<l&&n<b[1]&&b[1]<m},i.initText=function(){var a=this;a.main.select("."+l.chart).append("g").attr("class",l.chartTexts),a.mainText=a.d3.selectAll([])},i.updateTargetsForText=function(a){var b,c,d=this,e=d.classChartText.bind(d),f=d.classTexts.bind(d),g=d.classFocus.bind(d);b=d.main.select("."+l.chartTexts).selectAll("."+l.chartText).data(a).attr("class",function(a){return e(a)+g(a)}),c=b.enter().append("g").attr("class",e).style("opacity",0).style("pointer-events","none"),c.append("g").attr("class",f)},i.updateText=function(a){var b=this,c=b.config,d=b.barOrLineData.bind(b),e=b.classText.bind(b);b.mainText=b.main.selectAll("."+l.texts).selectAll("."+l.text).data(d),b.mainText.enter().append("text").attr("class",e).attr("text-anchor",function(a){return c.axis_rotated?a.value<0?"end":"start":"middle"}).style("stroke","none").style("fill",function(a){return b.color(a)}).style("fill-opacity",0),b.mainText.text(function(a,c,d){return b.dataLabelFormat(a.id)(a.value,a.id,c,d)}),b.mainText.exit().transition().duration(a).style("fill-opacity",0).remove()},i.redrawText=function(a,b,c,d){return[(d?this.mainText.transition():this.mainText).attr("x",a).attr("y",b).style("fill",this.color).style("fill-opacity",c?0:this.opacityForText.bind(this))]},i.getTextRect=function(a,b,c){var d,e=this.d3.select("body").append("div").classed("c3",!0),f=e.append("svg").style("visibility","hidden").style("position","fixed").style("top",0).style("left",0),g=this.d3.select(c).style("font");return f.selectAll(".dummy").data([a]).enter().append("text").classed(b?b:"",!0).style("font",g).text(a).each(function(){d=this.getBoundingClientRect()}),e.remove(),d},i.generateXYForText=function(a,b,c,d){var e=this,f=e.generateGetAreaPoints(a,!1),g=e.generateGetBarPoints(b,!1),h=e.generateGetLinePoints(c,!1),i=d?e.getXForText:e.getYForText;return function(a,b){var c=e.isAreaType(a)?f:e.isBarType(a)?g:h;return i.call(e,c(a,b),a,this)}},i.getXForText=function(a,b,c){var d,e,f=this,g=c.getBoundingClientRect();return f.config.axis_rotated?(e=f.isBarType(b)?4:6,d=a[2][1]+e*(b.value<0?-1:1)):d=f.hasType("bar")?(a[2][0]+a[0][0])/2:a[0][0],null===b.value&&(d>f.width?d=f.width-g.width:0>d&&(d=4)),d},i.getYForText=function(a,b,c){var d,e=this,f=c.getBoundingClientRect();return e.config.axis_rotated?d=(a[0][0]+a[2][0]+.6*f.height)/2:(d=a[2][1],b.value<0||0===b.value&&!e.hasPositiveValue?(d+=f.height,e.isBarType(b)&&e.isSafari()?d-=3:!e.isBarType(b)&&e.isChrome()&&(d+=3)):d+=e.isBarType(b)?-3:-6),null!==b.value||e.config.axis_rotated||(d<f.height?d=f.height:d>this.height&&(d=this.height-4)),d},i.setTargetType=function(a,b){var c=this,d=c.config;c.mapToTargetIds(a).forEach(function(a){c.withoutFadeIn[a]=b===d.data_types[a],d.data_types[a]=b}),a||(d.data_type=b)},i.hasType=function(a,b){var c=this,d=c.config.data_types,e=!1;return b=b||c.data.targets,b&&b.length?b.forEach(function(b){var c=d[b.id];(c&&c.indexOf(a)>=0||!c&&"line"===a)&&(e=!0)}):Object.keys(d).length?Object.keys(d).forEach(function(b){d[b]===a&&(e=!0)}):e=c.config.data_type===a,e},i.hasArcType=function(a){return this.hasType("pie",a)||this.hasType("donut",a)||this.hasType("gauge",a)},i.isLineType=function(a){var b=this.config,c=o(a)?a:a.id;return!b.data_types[c]||["line","spline","area","area-spline","step","area-step"].indexOf(b.data_types[c])>=0},i.isStepType=function(a){var b=o(a)?a:a.id;return["step","area-step"].indexOf(this.config.data_types[b])>=0},i.isSplineType=function(a){var b=o(a)?a:a.id;return["spline","area-spline"].indexOf(this.config.data_types[b])>=0},i.isAreaType=function(a){var b=o(a)?a:a.id;return["area","area-spline","area-step"].indexOf(this.config.data_types[b])>=0},i.isBarType=function(a){var b=o(a)?a:a.id;return"bar"===this.config.data_types[b]},i.isScatterType=function(a){var b=o(a)?a:a.id;return"scatter"===this.config.data_types[b]},i.isPieType=function(a){var b=o(a)?a:a.id;return"pie"===this.config.data_types[b]},i.isGaugeType=function(a){var b=o(a)?a:a.id;return"gauge"===this.config.data_types[b]},i.isDonutType=function(a){var b=o(a)?a:a.id;return"donut"===this.config.data_types[b]},i.isArcType=function(a){return this.isPieType(a)||this.isDonutType(a)||this.isGaugeType(a)},i.lineData=function(a){return this.isLineType(a)?[a]:[]},i.arcData=function(a){return this.isArcType(a.data)?[a]:[]},i.barData=function(a){return this.isBarType(a)?a.values:[]},i.lineOrScatterData=function(a){return this.isLineType(a)||this.isScatterType(a)?a.values:[]},i.barOrLineData=function(a){return this.isBarType(a)||this.isLineType(a)?a.values:[]},i.isInterpolationType=function(a){return["linear","linear-closed","basis","basis-open","basis-closed","bundle","cardinal","cardinal-open","cardinal-closed","monotone"].indexOf(a)>=0},i.initGrid=function(){var a=this,b=a.config,c=a.d3;a.grid=a.main.append("g").attr("clip-path",a.clipPathForGrid).attr("class",l.grid),b.grid_x_show&&a.grid.append("g").attr("class",l.xgrids),b.grid_y_show&&a.grid.append("g").attr("class",l.ygrids),b.grid_focus_show&&a.grid.append("g").attr("class",l.xgridFocus).append("line").attr("class",l.xgridFocus),a.xgrid=c.selectAll([]),b.grid_lines_front||a.initGridLines()},i.initGridLines=function(){var a=this,b=a.d3;a.gridLines=a.main.append("g").attr("clip-path",a.clipPathForGrid).attr("class",l.grid+" "+l.gridLines),a.gridLines.append("g").attr("class",l.xgridLines),a.gridLines.append("g").attr("class",l.ygridLines),a.xgridLines=b.selectAll([])},i.updateXGrid=function(a){var b=this,c=b.config,d=b.d3,e=b.generateGridData(c.grid_x_type,b.x),f=b.isCategorized()?b.xAxis.tickOffset():0;b.xgridAttr=c.axis_rotated?{x1:0,x2:b.width,y1:function(a){return b.x(a)-f},y2:function(a){return b.x(a)-f}}:{x1:function(a){return b.x(a)+f},x2:function(a){return b.x(a)+f},y1:0,y2:b.height},b.xgrid=b.main.select("."+l.xgrids).selectAll("."+l.xgrid).data(e),b.xgrid.enter().append("line").attr("class",l.xgrid),a||b.xgrid.attr(b.xgridAttr).style("opacity",function(){return+d.select(this).attr(c.axis_rotated?"y1":"x1")===(c.axis_rotated?b.height:0)?0:1}),b.xgrid.exit().remove()},i.updateYGrid=function(){var a=this,b=a.config,c=a.yAxis.tickValues()||a.y.ticks(b.grid_y_ticks);a.ygrid=a.main.select("."+l.ygrids).selectAll("."+l.ygrid).data(c),a.ygrid.enter().append("line").attr("class",l.ygrid),a.ygrid.attr("x1",b.axis_rotated?a.y:0).attr("x2",b.axis_rotated?a.y:a.width).attr("y1",b.axis_rotated?0:a.y).attr("y2",b.axis_rotated?a.height:a.y),a.ygrid.exit().remove(),a.smoothLines(a.ygrid,"grid")},i.gridTextAnchor=function(a){return a.position?a.position:"end"},i.gridTextDx=function(a){return"start"===a.position?4:"middle"===a.position?0:-4},i.xGridTextX=function(a){return"start"===a.position?-this.height:"middle"===a.position?-this.height/2:0},i.yGridTextX=function(a){return"start"===a.position?0:"middle"===a.position?this.width/2:this.width},i.updateGrid=function(a){var b,c,d,e=this,f=e.main,g=e.config;e.grid.style("visibility",e.hasArcType()?"hidden":"visible"),f.select("line."+l.xgridFocus).style("visibility","hidden"),g.grid_x_show&&e.updateXGrid(),e.xgridLines=f.select("."+l.xgridLines).selectAll("."+l.xgridLine).data(g.grid_x_lines),b=e.xgridLines.enter().append("g").attr("class",function(a){return l.xgridLine+(a["class"]?" "+a["class"]:"")}),b.append("line").style("opacity",0),b.append("text").attr("text-anchor",e.gridTextAnchor).attr("transform",g.axis_rotated?"":"rotate(-90)").attr("dx",e.gridTextDx).attr("dy",-5).style("opacity",0),e.xgridLines.exit().transition().duration(a).style("opacity",0).remove(),g.grid_y_show&&e.updateYGrid(),e.ygridLines=f.select("."+l.ygridLines).selectAll("."+l.ygridLine).data(g.grid_y_lines),c=e.ygridLines.enter().append("g").attr("class",function(a){return l.ygridLine+(a["class"]?" "+a["class"]:"")}),c.append("line").style("opacity",0),c.append("text").attr("text-anchor",e.gridTextAnchor).attr("transform",g.axis_rotated?"rotate(-90)":"").attr("dx",e.gridTextDx).attr("dy",-5).style("opacity",0),d=e.yv.bind(e),e.ygridLines.select("line").transition().duration(a).attr("x1",g.axis_rotated?d:0).attr("x2",g.axis_rotated?d:e.width).attr("y1",g.axis_rotated?0:d).attr("y2",g.axis_rotated?e.height:d).style("opacity",1),e.ygridLines.select("text").transition().duration(a).attr("x",g.axis_rotated?e.xGridTextX.bind(e):e.yGridTextX.bind(e)).attr("y",d).text(function(a){return a.text}).style("opacity",1),e.ygridLines.exit().transition().duration(a).style("opacity",0).remove()},i.redrawGrid=function(a){var b=this,c=b.config,d=b.xv.bind(b),e=b.xgridLines.select("line"),f=b.xgridLines.select("text");return[(a?e.transition():e).attr("x1",c.axis_rotated?0:d).attr("x2",c.axis_rotated?b.width:d).attr("y1",c.axis_rotated?d:0).attr("y2",c.axis_rotated?d:b.height).style("opacity",1),(a?f.transition():f).attr("x",c.axis_rotated?b.yGridTextX.bind(b):b.xGridTextX.bind(b)).attr("y",d).text(function(a){return a.text}).style("opacity",1)]},i.showXGridFocus=function(a){var b=this,c=b.config,d=a.filter(function(a){return a&&m(a.value)}),e=b.main.selectAll("line."+l.xgridFocus),f=b.xx.bind(b);c.tooltip_show&&(b.hasType("scatter")||b.hasArcType()||(e.style("visibility","visible").data([d[0]]).attr(c.axis_rotated?"y1":"x1",f).attr(c.axis_rotated?"y2":"x2",f),b.smoothLines(e,"grid")))},i.hideXGridFocus=function(){this.main.select("line."+l.xgridFocus).style("visibility","hidden")},i.updateXgridFocus=function(){var a=this,b=a.config;a.main.select("line."+l.xgridFocus).attr("x1",b.axis_rotated?0:-10).attr("x2",b.axis_rotated?a.width:-10).attr("y1",b.axis_rotated?-10:0).attr("y2",b.axis_rotated?-10:a.height)},i.generateGridData=function(a,b){var c,d,e,f,g=this,h=[],i=g.main.select("."+l.axisX).selectAll(".tick").size();if("year"===a)for(c=g.getXDomain(),d=c[0].getFullYear(),e=c[1].getFullYear(),f=d;e>=f;f++)h.push(new Date(f+"-01-01 00:00:00"));else h=b.ticks(10),h.length>i&&(h=h.filter(function(a){return(""+a).indexOf(".")<0}));return h},i.getGridFilterToRemove=function(a){return a?function(b){var c=!1;return[].concat(a).forEach(function(a){("value"in a&&b.value===a.value||"class"in a&&b["class"]===a["class"])&&(c=!0)}),c}:function(){return!0}},i.removeGridLines=function(a,b){var c=this,d=c.config,e=c.getGridFilterToRemove(a),f=function(a){return!e(a)},g=b?l.xgridLines:l.ygridLines,h=b?l.xgridLine:l.ygridLine;c.main.select("."+g).selectAll("."+h).filter(e).transition().duration(d.transition_duration).style("opacity",0).remove(),b?d.grid_x_lines=d.grid_x_lines.filter(f):d.grid_y_lines=d.grid_y_lines.filter(f)},i.initTooltip=function(){var a,b=this,c=b.config;if(b.tooltip=b.selectChart.style("position","relative").append("div").attr("class",l.tooltipContainer).style("position","absolute").style("pointer-events","none").style("display","none"),c.tooltip_init_show){if(b.isTimeSeries()&&o(c.tooltip_init_x)){for(c.tooltip_init_x=b.parseDate(c.tooltip_init_x),a=0;a<b.data.targets[0].values.length&&b.data.targets[0].values[a].x-c.tooltip_init_x!==0;a++);c.tooltip_init_x=a}b.tooltip.html(c.tooltip_contents.call(b,b.data.targets.map(function(a){return b.addName(a.values[c.tooltip_init_x])}),b.axis.getXAxisTickFormat(),b.getYFormat(b.hasArcType()),b.color)),b.tooltip.style("top",c.tooltip_init_position.top).style("left",c.tooltip_init_position.left).style("display","block")}},i.getTooltipContent=function(a,b,c,d){var e,f,g,h,i,j,k=this,l=k.config,m=l.tooltip_format_title||b,n=l.tooltip_format_name||function(a){return a},o=l.tooltip_format_value||c,p=k.isOrderAsc();if(0===l.data_groups.length)a.sort(function(a,b){var c=a?a.value:null,d=b?b.value:null;return p?c-d:d-c});else{var q=k.orderTargets(k.data.targets).map(function(a){return a.id});a.sort(function(a,b){var c=a?a.value:null,d=b?b.value:null;return c>0&&d>0&&(c=a?q.indexOf(a.id):null,d=b?q.indexOf(b.id):null),p?c-d:d-c})}for(f=0;f<a.length;f++)if(a[f]&&(a[f].value||0===a[f].value)&&(e||(g=y(m?m(a[f].x):a[f].x),e="<table class='"+k.CLASS.tooltip+"'>"+(g||0===g?"<tr><th colspan='2'>"+g+"</th></tr>":"")),h=y(o(a[f].value,a[f].ratio,a[f].id,a[f].index,a)),void 0!==h)){if(null===a[f].name)continue;i=y(n(a[f].name,a[f].ratio,a[f].id,a[f].index)),j=k.levelColor?k.levelColor(a[f].value):d(a[f].id),e+="<tr class='"+k.CLASS.tooltipName+"-"+k.getTargetSelectorSuffix(a[f].id)+"'>",e+="<td class='name'><span style='background-color:"+j+"'></span>"+i+"</td>",e+="<td class='value'>"+h+"</td>",e+="</tr>"}return e+"</table>"},i.tooltipPosition=function(a,b,c,d){var e,f,g,h,i,j=this,k=j.config,l=j.d3,m=j.hasArcType(),n=l.mouse(d);return m?(f=(j.width-(j.isLegendRight?j.getLegendWidth():0))/2+n[0],h=j.height/2+n[1]+20):(e=j.getSvgLeft(!0),k.axis_rotated?(f=e+n[0]+100,g=f+b,i=j.currentWidth-j.getCurrentPaddingRight(),h=j.x(a[0].x)+20):(f=e+j.getCurrentPaddingLeft(!0)+j.x(a[0].x)+20,g=f+b,i=e+j.currentWidth-j.getCurrentPaddingRight(),h=n[1]+15),g>i&&(f-=g-i+20),h+c>j.currentHeight&&(h-=c+30)),0>h&&(h=0),{top:h,left:f}},i.showTooltip=function(a,b){var c,d,e,f=this,g=f.config,h=f.hasArcType(),j=a.filter(function(a){return a&&m(a.value)}),k=g.tooltip_position||i.tooltipPosition;0!==j.length&&g.tooltip_show&&(f.tooltip.html(g.tooltip_contents.call(f,a,f.axis.getXAxisTickFormat(),f.getYFormat(h),f.color)).style("display","block"),c=f.tooltip.property("offsetWidth"),d=f.tooltip.property("offsetHeight"),e=k.call(this,j,c,d,b),f.tooltip.style("top",e.top+"px").style("left",e.left+"px"))},i.hideTooltip=function(){this.tooltip.style("display","none")},i.initLegend=function(){var a=this;return a.legendItemTextBox={},a.legendHasRendered=!1,a.legend=a.svg.append("g").attr("transform",a.getTranslate("legend")),a.config.legend_show?void a.updateLegendWithDefaults():(a.legend.style("visibility","hidden"),void(a.hiddenLegendIds=a.mapToIds(a.data.targets)))},i.updateLegendWithDefaults=function(){var a=this;a.updateLegend(a.mapToIds(a.data.targets),{withTransform:!1,withTransitionForTransform:!1,withTransition:!1})},i.updateSizeForLegend=function(a,b){var c=this,d=c.config,e={top:c.isLegendTop?c.getCurrentPaddingTop()+d.legend_inset_y+5.5:c.currentHeight-a-c.getCurrentPaddingBottom()-d.legend_inset_y,left:c.isLegendLeft?c.getCurrentPaddingLeft()+d.legend_inset_x+.5:c.currentWidth-b-c.getCurrentPaddingRight()-d.legend_inset_x+.5};c.margin3={top:c.isLegendRight?0:c.isLegendInset?e.top:c.currentHeight-a,right:NaN,bottom:0,left:c.isLegendRight?c.currentWidth-b:c.isLegendInset?e.left:0}},i.transformLegend=function(a){var b=this;(a?b.legend.transition():b.legend).attr("transform",b.getTranslate("legend"))},i.updateLegendStep=function(a){this.legendStep=a},i.updateLegendItemWidth=function(a){this.legendItemWidth=a},i.updateLegendItemHeight=function(a){this.legendItemHeight=a},i.getLegendWidth=function(){var a=this;return a.config.legend_show?a.isLegendRight||a.isLegendInset?a.legendItemWidth*(a.legendStep+1):a.currentWidth:0},i.getLegendHeight=function(){var a=this,b=0;return a.config.legend_show&&(b=a.isLegendRight?a.currentHeight:Math.max(20,a.legendItemHeight)*(a.legendStep+1)),b},i.opacityForLegend=function(a){return a.classed(l.legendItemHidden)?null:1},i.opacityForUnfocusedLegend=function(a){return a.classed(l.legendItemHidden)?null:.3},i.toggleFocusLegend=function(a,b){var c=this;a=c.mapToTargetIds(a),c.legend.selectAll("."+l.legendItem).filter(function(b){return a.indexOf(b)>=0}).classed(l.legendItemFocused,b).transition().duration(100).style("opacity",function(){var a=b?c.opacityForLegend:c.opacityForUnfocusedLegend;return a.call(c,c.d3.select(this))})},i.revertLegend=function(){var a=this,b=a.d3;a.legend.selectAll("."+l.legendItem).classed(l.legendItemFocused,!1).transition().duration(100).style("opacity",function(){return a.opacityForLegend(b.select(this))})},i.showLegend=function(a){var b=this,c=b.config;c.legend_show||(c.legend_show=!0,b.legend.style("visibility","visible"),b.legendHasRendered||b.updateLegendWithDefaults()),b.removeHiddenLegendIds(a),b.legend.selectAll(b.selectorLegends(a)).style("visibility","visible").transition().style("opacity",function(){return b.opacityForLegend(b.d3.select(this))})},i.hideLegend=function(a){var b=this,c=b.config;c.legend_show&&u(a)&&(c.legend_show=!1,b.legend.style("visibility","hidden")),b.addHiddenLegendIds(a),b.legend.selectAll(b.selectorLegends(a)).style("opacity",0).style("visibility","hidden")},i.clearLegendItemTextBoxCache=function(){this.legendItemTextBox={}},i.updateLegend=function(a,b,c){function d(a,b){return y.legendItemTextBox[b]||(y.legendItemTextBox[b]=y.getTextRect(a.textContent,l.legendItem,a)),y.legendItemTextBox[b]}function e(b,c,e){function f(a,b){b||(g=(o-G-n)/2,E>g&&(g=(o-n)/2,G=0,M++)),L[a]=M,K[M]=y.isLegendInset?10:g,H[a]=G,G+=n}var g,h,i=0===e,j=e===a.length-1,k=d(b,c),l=k.width+F+(!j||y.isLegendRight||y.isLegendInset?B:0)+z.legend_padding,m=k.height+A,n=y.isLegendRight||y.isLegendInset?m:l,o=y.isLegendRight||y.isLegendInset?y.getLegendHeight():y.getLegendWidth();return i&&(G=0,M=0,C=0,D=0),z.legend_show&&!y.isLegendToShow(c)?void(I[c]=J[c]=L[c]=H[c]=0):(I[c]=l,J[c]=m,(!C||l>=C)&&(C=l),(!D||m>=D)&&(D=m),h=y.isLegendRight||y.isLegendInset?D:C,void(z.legend_equally?(Object.keys(I).forEach(function(a){I[a]=C}),Object.keys(J).forEach(function(a){J[a]=D}),g=(o-h*a.length)/2,E>g?(G=0,M=0,a.forEach(function(a){f(a)})):f(c,!0)):f(c)))}var f,g,h,i,j,k,m,n,o,p,r,s,t,u,v,x,y=this,z=y.config,A=4,B=10,C=0,D=0,E=10,F=z.legend_item_tile_width+5,G=0,H={},I={},J={},K=[0],L={},M=0;a=a.filter(function(a){return!q(z.data_names[a])||null!==z.data_names[a]}),b=b||{},r=w(b,"withTransition",!0),s=w(b,"withTransitionForTransform",!0),y.isLegendInset&&(M=z.legend_inset_step?z.legend_inset_step:a.length,y.updateLegendStep(M)),y.isLegendRight?(f=function(a){return C*L[a]},i=function(a){return K[L[a]]+H[a]}):y.isLegendInset?(f=function(a){return C*L[a]+10},i=function(a){return K[L[a]]+H[a]}):(f=function(a){return K[L[a]]+H[a]},i=function(a){return D*L[a]}),g=function(a,b){return f(a,b)+4+z.legend_item_tile_width},j=function(a,b){return i(a,b)+9},h=function(a,b){return f(a,b)},k=function(a,b){return i(a,b)-5},m=function(a,b){return f(a,b)-2},n=function(a,b){return f(a,b)-2+z.legend_item_tile_width},o=function(a,b){return i(a,b)+4},p=y.legend.selectAll("."+l.legendItem).data(a).enter().append("g").attr("class",function(a){return y.generateClass(l.legendItem,a)}).style("visibility",function(a){return y.isLegendToShow(a)?"visible":"hidden"}).style("cursor","pointer").on("click",function(a){z.legend_item_onclick?z.legend_item_onclick.call(y,a):y.d3.event.altKey?(y.api.hide(),y.api.show(a)):(y.api.toggle(a),y.isTargetToShow(a)?y.api.focus(a):y.api.revert())}).on("mouseover",function(a){z.legend_item_onmouseover?z.legend_item_onmouseover.call(y,a):(y.d3.select(this).classed(l.legendItemFocused,!0),!y.transiting&&y.isTargetToShow(a)&&y.api.focus(a))}).on("mouseout",function(a){z.legend_item_onmouseout?z.legend_item_onmouseout.call(y,a):(y.d3.select(this).classed(l.legendItemFocused,!1),y.api.revert())}),p.append("text").text(function(a){return q(z.data_names[a])?z.data_names[a]:a}).each(function(a,b){e(this,a,b)}).style("pointer-events","none").attr("x",y.isLegendRight||y.isLegendInset?g:-200).attr("y",y.isLegendRight||y.isLegendInset?-200:j),p.append("rect").attr("class",l.legendItemEvent).style("fill-opacity",0).attr("x",y.isLegendRight||y.isLegendInset?h:-200).attr("y",y.isLegendRight||y.isLegendInset?-200:k),p.append("line").attr("class",l.legendItemTile).style("stroke",y.color).style("pointer-events","none").attr("x1",y.isLegendRight||y.isLegendInset?m:-200).attr("y1",y.isLegendRight||y.isLegendInset?-200:o).attr("x2",y.isLegendRight||y.isLegendInset?n:-200).attr("y2",y.isLegendRight||y.isLegendInset?-200:o).attr("stroke-width",z.legend_item_tile_height),x=y.legend.select("."+l.legendBackground+" rect"),y.isLegendInset&&C>0&&0===x.size()&&(x=y.legend.insert("g","."+l.legendItem).attr("class",l.legendBackground).append("rect")),t=y.legend.selectAll("text").data(a).text(function(a){return q(z.data_names[a])?z.data_names[a]:a}).each(function(a,b){e(this,a,b)}),(r?t.transition():t).attr("x",g).attr("y",j),u=y.legend.selectAll("rect."+l.legendItemEvent).data(a),(r?u.transition():u).attr("width",function(a){return I[a]}).attr("height",function(a){return J[a]}).attr("x",h).attr("y",k),v=y.legend.selectAll("line."+l.legendItemTile).data(a),(r?v.transition():v).style("stroke",y.color).attr("x1",m).attr("y1",o).attr("x2",n).attr("y2",o),x&&(r?x.transition():x).attr("height",y.getLegendHeight()-12).attr("width",C*(M+1)+10),y.legend.selectAll("."+l.legendItem).classed(l.legendItemHidden,function(a){return!y.isTargetToShow(a)}),y.updateLegendItemWidth(C),y.updateLegendItemHeight(D),y.updateLegendStep(M),y.updateSizes(),y.updateScales(),y.updateSvgSize(),y.transformAll(s,c),y.legendHasRendered=!0},i.initTitle=function(){var a=this;a.title=a.svg.append("text").text(a.config.title_text).attr("class",a.CLASS.title)},i.redrawTitle=function(){var a=this;a.title.attr("x",a.xForTitle.bind(a)).attr("y",a.yForTitle.bind(a))},i.xForTitle=function(){var a,b=this,c=b.config,d=c.title_position||"left";return a=d.indexOf("right")>=0?b.currentWidth-b.getTextRect(b.title.node().textContent,b.CLASS.title,b.title.node()).width-c.title_padding.right:d.indexOf("center")>=0?(b.currentWidth-b.getTextRect(b.title.node().textContent,b.CLASS.title,b.title.node()).width)/2:c.title_padding.left},i.yForTitle=function(){var a=this;return a.config.title_padding.top+a.getTextRect(a.title.node().textContent,a.CLASS.title,a.title.node()).height},i.getTitlePadding=function(){var a=this;return a.yForTitle()+a.config.title_padding.bottom},c(b,f),f.prototype.init=function(){var a=this.owner,b=a.config,c=a.main;a.axes.x=c.append("g").attr("class",l.axis+" "+l.axisX).attr("clip-path",a.clipPathForXAxis).attr("transform",a.getTranslate("x")).style("visibility",b.axis_x_show?"visible":"hidden"),a.axes.x.append("text").attr("class",l.axisXLabel).attr("transform",b.axis_rotated?"rotate(-90)":"").style("text-anchor",this.textAnchorForXAxisLabel.bind(this)),a.axes.y=c.append("g").attr("class",l.axis+" "+l.axisY).attr("clip-path",b.axis_y_inner?"":a.clipPathForYAxis).attr("transform",a.getTranslate("y")).style("visibility",b.axis_y_show?"visible":"hidden"),a.axes.y.append("text").attr("class",l.axisYLabel).attr("transform",b.axis_rotated?"":"rotate(-90)").style("text-anchor",this.textAnchorForYAxisLabel.bind(this)),a.axes.y2=c.append("g").attr("class",l.axis+" "+l.axisY2).attr("transform",a.getTranslate("y2")).style("visibility",b.axis_y2_show?"visible":"hidden"),a.axes.y2.append("text").attr("class",l.axisY2Label).attr("transform",b.axis_rotated?"":"rotate(-90)").style("text-anchor",this.textAnchorForY2AxisLabel.bind(this))},f.prototype.getXAxis=function(a,b,c,d,e,f,h){var i=this.owner,j=i.config,k={isCategory:i.isCategorized(),withOuterTick:e,tickMultiline:j.axis_x_tick_multiline,tickWidth:j.axis_x_tick_width,tickTextRotate:h?0:j.axis_x_tick_rotate,withoutTransition:f},l=g(i.d3,k).scale(a).orient(b);return i.isTimeSeries()&&d&&"function"!=typeof d&&(d=d.map(function(a){return i.parseDate(a)})),l.tickFormat(c).tickValues(d),i.isCategorized()&&(l.tickCentered(j.axis_x_tick_centered),u(j.axis_x_tick_culling)&&(j.axis_x_tick_culling=!1)),l},f.prototype.updateXAxisTickValues=function(a,b){var c,d=this.owner,e=d.config;return(e.axis_x_tick_fit||e.axis_x_tick_count)&&(c=this.generateTickValues(d.mapTargetsToUniqueXs(a),e.axis_x_tick_count,d.isTimeSeries())),b?b.tickValues(c):(d.xAxis.tickValues(c),d.subXAxis.tickValues(c)),c},f.prototype.getYAxis=function(a,b,c,d,e,f,h){var i=this.owner,j=i.config,k={withOuterTick:e,withoutTransition:f,tickTextRotate:h?0:j.axis_y_tick_rotate},l=g(i.d3,k).scale(a).orient(b).tickFormat(c);return i.isTimeSeriesY()?l.ticks(i.d3.time[j.axis_y_tick_time_value],j.axis_y_tick_time_interval):l.tickValues(d),l},f.prototype.getId=function(a){var b=this.owner.config;return a in b.data_axes?b.data_axes[a]:"y"},f.prototype.getXAxisTickFormat=function(){var a=this.owner,b=a.config,c=a.isTimeSeries()?a.defaultAxisTimeFormat:a.isCategorized()?a.categoryName:function(a){return 0>a?a.toFixed(0):a};return b.axis_x_tick_format&&(n(b.axis_x_tick_format)?c=b.axis_x_tick_format:a.isTimeSeries()&&(c=function(c){return c?a.axisTimeFormat(b.axis_x_tick_format)(c):""})),n(c)?function(b){return c.call(a,b)}:c},f.prototype.getTickValues=function(a,b){return a?a:b?b.tickValues():void 0},f.prototype.getXAxisTickValues=function(){return this.getTickValues(this.owner.config.axis_x_tick_values,this.owner.xAxis)},f.prototype.getYAxisTickValues=function(){return this.getTickValues(this.owner.config.axis_y_tick_values,this.owner.yAxis)},f.prototype.getY2AxisTickValues=function(){return this.getTickValues(this.owner.config.axis_y2_tick_values,this.owner.y2Axis)},f.prototype.getLabelOptionByAxisId=function(a){var b,c=this.owner,d=c.config;return"y"===a?b=d.axis_y_label:"y2"===a?b=d.axis_y2_label:"x"===a&&(b=d.axis_x_label),b},f.prototype.getLabelText=function(a){var b=this.getLabelOptionByAxisId(a);return o(b)?b:b?b.text:null},f.prototype.setLabelText=function(a,b){var c=this.owner,d=c.config,e=this.getLabelOptionByAxisId(a);o(e)?"y"===a?d.axis_y_label=b:"y2"===a?d.axis_y2_label=b:"x"===a&&(d.axis_x_label=b):e&&(e.text=b)},f.prototype.getLabelPosition=function(a,b){var c=this.getLabelOptionByAxisId(a),d=c&&"object"==typeof c&&c.position?c.position:b;return{isInner:d.indexOf("inner")>=0,isOuter:d.indexOf("outer")>=0,isLeft:d.indexOf("left")>=0,isCenter:d.indexOf("center")>=0,isRight:d.indexOf("right")>=0,isTop:d.indexOf("top")>=0,isMiddle:d.indexOf("middle")>=0,isBottom:d.indexOf("bottom")>=0}},f.prototype.getXAxisLabelPosition=function(){return this.getLabelPosition("x",this.owner.config.axis_rotated?"inner-top":"inner-right")},f.prototype.getYAxisLabelPosition=function(){return this.getLabelPosition("y",this.owner.config.axis_rotated?"inner-right":"inner-top")},f.prototype.getY2AxisLabelPosition=function(){return this.getLabelPosition("y2",this.owner.config.axis_rotated?"inner-right":"inner-top")},f.prototype.getLabelPositionById=function(a){return"y2"===a?this.getY2AxisLabelPosition():"y"===a?this.getYAxisLabelPosition():this.getXAxisLabelPosition()},f.prototype.textForXAxisLabel=function(){return this.getLabelText("x")},f.prototype.textForYAxisLabel=function(){return this.getLabelText("y")},f.prototype.textForY2AxisLabel=function(){return this.getLabelText("y2")},f.prototype.xForAxisLabel=function(a,b){var c=this.owner;return a?b.isLeft?0:b.isCenter?c.width/2:c.width:b.isBottom?-c.height:b.isMiddle?-c.height/2:0},f.prototype.dxForAxisLabel=function(a,b){return a?b.isLeft?"0.5em":b.isRight?"-0.5em":"0":b.isTop?"-0.5em":b.isBottom?"0.5em":"0"},f.prototype.textAnchorForAxisLabel=function(a,b){return a?b.isLeft?"start":b.isCenter?"middle":"end":b.isBottom?"start":b.isMiddle?"middle":"end"},f.prototype.xForXAxisLabel=function(){return this.xForAxisLabel(!this.owner.config.axis_rotated,this.getXAxisLabelPosition())},f.prototype.xForYAxisLabel=function(){return this.xForAxisLabel(this.owner.config.axis_rotated,this.getYAxisLabelPosition())},f.prototype.xForY2AxisLabel=function(){return this.xForAxisLabel(this.owner.config.axis_rotated,this.getY2AxisLabelPosition())},f.prototype.dxForXAxisLabel=function(){return this.dxForAxisLabel(!this.owner.config.axis_rotated,this.getXAxisLabelPosition())},f.prototype.dxForYAxisLabel=function(){return this.dxForAxisLabel(this.owner.config.axis_rotated,this.getYAxisLabelPosition())},f.prototype.dxForY2AxisLabel=function(){return this.dxForAxisLabel(this.owner.config.axis_rotated,this.getY2AxisLabelPosition())},f.prototype.dyForXAxisLabel=function(){var a=this.owner,b=a.config,c=this.getXAxisLabelPosition();return b.axis_rotated?c.isInner?"1.2em":-25-this.getMaxTickWidth("x"):c.isInner?"-0.5em":b.axis_x_height?b.axis_x_height-10:"3em"},f.prototype.dyForYAxisLabel=function(){var a=this.owner,b=this.getYAxisLabelPosition();return a.config.axis_rotated?b.isInner?"-0.5em":"3em":b.isInner?"1.2em":-10-(a.config.axis_y_inner?0:this.getMaxTickWidth("y")+10)},f.prototype.dyForY2AxisLabel=function(){var a=this.owner,b=this.getY2AxisLabelPosition();return a.config.axis_rotated?b.isInner?"1.2em":"-2.2em":b.isInner?"-0.5em":15+(a.config.axis_y2_inner?0:this.getMaxTickWidth("y2")+15)},f.prototype.textAnchorForXAxisLabel=function(){var a=this.owner;return this.textAnchorForAxisLabel(!a.config.axis_rotated,this.getXAxisLabelPosition())},f.prototype.textAnchorForYAxisLabel=function(){var a=this.owner;return this.textAnchorForAxisLabel(a.config.axis_rotated,this.getYAxisLabelPosition())},f.prototype.textAnchorForY2AxisLabel=function(){var a=this.owner;return this.textAnchorForAxisLabel(a.config.axis_rotated,this.getY2AxisLabelPosition())},f.prototype.getMaxTickWidth=function(a,b){var c,d,e,f,g,h=this.owner,i=h.config,j=0;return b&&h.currentMaxTickWidths[a]?h.currentMaxTickWidths[a]:(h.svg&&(c=h.filterTargetsToShow(h.data.targets),"y"===a?(d=h.y.copy().domain(h.getYDomain(c,"y")),e=this.getYAxis(d,h.yOrient,i.axis_y_tick_format,h.yAxisTickValues,!1,!0,!0)):"y2"===a?(d=h.y2.copy().domain(h.getYDomain(c,"y2")),
2313 e=this.getYAxis(d,h.y2Orient,i.axis_y2_tick_format,h.y2AxisTickValues,!1,!0,!0)):(d=h.x.copy().domain(h.getXDomain(c)),e=this.getXAxis(d,h.xOrient,h.xAxisTickFormat,h.xAxisTickValues,!1,!0,!0),this.updateXAxisTickValues(c,e)),f=h.d3.select("body").append("div").classed("c3",!0),g=f.append("svg").style("visibility","hidden").style("position","fixed").style("top",0).style("left",0),g.append("g").call(e).each(function(){h.d3.select(this).selectAll("text").each(function(){var a=this.getBoundingClientRect();j<a.width&&(j=a.width)}),f.remove()})),h.currentMaxTickWidths[a]=0>=j?h.currentMaxTickWidths[a]:j,h.currentMaxTickWidths[a])},f.prototype.updateLabels=function(a){var b=this.owner,c=b.main.select("."+l.axisX+" ."+l.axisXLabel),d=b.main.select("."+l.axisY+" ."+l.axisYLabel),e=b.main.select("."+l.axisY2+" ."+l.axisY2Label);(a?c.transition():c).attr("x",this.xForXAxisLabel.bind(this)).attr("dx",this.dxForXAxisLabel.bind(this)).attr("dy",this.dyForXAxisLabel.bind(this)).text(this.textForXAxisLabel.bind(this)),(a?d.transition():d).attr("x",this.xForYAxisLabel.bind(this)).attr("dx",this.dxForYAxisLabel.bind(this)).attr("dy",this.dyForYAxisLabel.bind(this)).text(this.textForYAxisLabel.bind(this)),(a?e.transition():e).attr("x",this.xForY2AxisLabel.bind(this)).attr("dx",this.dxForY2AxisLabel.bind(this)).attr("dy",this.dyForY2AxisLabel.bind(this)).text(this.textForY2AxisLabel.bind(this))},f.prototype.getPadding=function(a,b,c,d){var e="number"==typeof a?a:a[b];return m(e)?"ratio"===a.unit?a[b]*d:this.convertPixelsToAxisPadding(e,d):c},f.prototype.convertPixelsToAxisPadding=function(a,b){var c=this.owner,d=c.config.axis_rotated?c.width:c.height;return b*(a/d)},f.prototype.generateTickValues=function(a,b,c){var d,e,f,g,h,i,j,k=a;if(b)if(d=n(b)?b():b,1===d)k=[a[0]];else if(2===d)k=[a[0],a[a.length-1]];else if(d>2){for(g=d-2,e=a[0],f=a[a.length-1],h=(f-e)/(g+1),k=[e],i=0;g>i;i++)j=+e+h*(i+1),k.push(c?new Date(j):j);k.push(f)}return c||(k=k.sort(function(a,b){return a-b})),k},f.prototype.generateTransitions=function(a){var b=this.owner,c=b.axes;return{axisX:a?c.x.transition().duration(a):c.x,axisY:a?c.y.transition().duration(a):c.y,axisY2:a?c.y2.transition().duration(a):c.y2,axisSubX:a?c.subx.transition().duration(a):c.subx}},f.prototype.redraw=function(a,b){var c=this.owner;c.axes.x.style("opacity",b?0:1),c.axes.y.style("opacity",b?0:1),c.axes.y2.style("opacity",b?0:1),c.axes.subx.style("opacity",b?0:1),a.axisX.call(c.xAxis),a.axisY.call(c.yAxis),a.axisY2.call(c.y2Axis),a.axisSubX.call(c.subXAxis)},i.getClipPath=function(b){var c=a.navigator.appVersion.toLowerCase().indexOf("msie 9.")>=0;return"url("+(c?"":document.URL.split("#")[0])+"#"+b+")"},i.appendClip=function(a,b){return a.append("clipPath").attr("id",b).append("rect")},i.getAxisClipX=function(a){var b=Math.max(30,this.margin.left);return a?-(1+b):-(b-1)},i.getAxisClipY=function(a){return a?-20:-this.margin.top},i.getXAxisClipX=function(){var a=this;return a.getAxisClipX(!a.config.axis_rotated)},i.getXAxisClipY=function(){var a=this;return a.getAxisClipY(!a.config.axis_rotated)},i.getYAxisClipX=function(){var a=this;return a.config.axis_y_inner?-1:a.getAxisClipX(a.config.axis_rotated)},i.getYAxisClipY=function(){var a=this;return a.getAxisClipY(a.config.axis_rotated)},i.getAxisClipWidth=function(a){var b=this,c=Math.max(30,b.margin.left),d=Math.max(30,b.margin.right);return a?b.width+2+c+d:b.margin.left+20},i.getAxisClipHeight=function(a){return(a?this.margin.bottom:this.margin.top+this.height)+20},i.getXAxisClipWidth=function(){var a=this;return a.getAxisClipWidth(!a.config.axis_rotated)},i.getXAxisClipHeight=function(){var a=this;return a.getAxisClipHeight(!a.config.axis_rotated)},i.getYAxisClipWidth=function(){var a=this;return a.getAxisClipWidth(a.config.axis_rotated)+(a.config.axis_y_inner?20:0)},i.getYAxisClipHeight=function(){var a=this;return a.getAxisClipHeight(a.config.axis_rotated)},i.initPie=function(){var a=this,b=a.d3,c=a.config;a.pie=b.layout.pie().value(function(a){return a.values.reduce(function(a,b){return a+b.value},0)}),c.data_order||a.pie.sort(null)},i.updateRadius=function(){var a=this,b=a.config,c=b.gauge_width||b.donut_width;a.radiusExpanded=Math.min(a.arcWidth,a.arcHeight)/2,a.radius=.95*a.radiusExpanded,a.innerRadiusRatio=c?(a.radius-c)/a.radius:.6,a.innerRadius=a.hasType("donut")||a.hasType("gauge")?a.radius*a.innerRadiusRatio:0},i.updateArc=function(){var a=this;a.svgArc=a.getSvgArc(),a.svgArcExpanded=a.getSvgArcExpanded(),a.svgArcExpandedSub=a.getSvgArcExpanded(.98)},i.updateAngle=function(a){var b,c,d,e,f=this,g=f.config,h=!1,i=0;return g?(f.pie(f.filterTargetsToShow(f.data.targets)).forEach(function(b){h||b.data.id!==a.data.id||(h=!0,a=b,a.index=i),i++}),isNaN(a.startAngle)&&(a.startAngle=0),isNaN(a.endAngle)&&(a.endAngle=a.startAngle),f.isGaugeType(a.data)&&(b=g.gauge_min,c=g.gauge_max,d=Math.PI*(g.gauge_fullCircle?2:1)/(c-b),e=a.value<b?0:a.value<c?a.value-b:c-b,a.startAngle=g.gauge_startingAngle,a.endAngle=a.startAngle+d*e),h?a:null):null},i.getSvgArc=function(){var a=this,b=a.d3.svg.arc().outerRadius(a.radius).innerRadius(a.innerRadius),c=function(c,d){var e;return d?b(c):(e=a.updateAngle(c),e?b(e):"M 0 0")};return c.centroid=b.centroid,c},i.getSvgArcExpanded=function(a){var b=this,c=b.d3.svg.arc().outerRadius(b.radiusExpanded*(a?a:1)).innerRadius(b.innerRadius);return function(a){var d=b.updateAngle(a);return d?c(d):"M 0 0"}},i.getArc=function(a,b,c){return c||this.isArcType(a.data)?this.svgArc(a,b):"M 0 0"},i.transformForArcLabel=function(a){var b,c,d,e,f,g=this,h=g.config,i=g.updateAngle(a),j="";return i&&!g.hasType("gauge")&&(b=this.svgArc.centroid(i),c=isNaN(b[0])?0:b[0],d=isNaN(b[1])?0:b[1],e=Math.sqrt(c*c+d*d),f=g.hasType("donut")&&h.donut_label_ratio?n(h.donut_label_ratio)?h.donut_label_ratio(a,g.radius,e):h.donut_label_ratio:g.hasType("pie")&&h.pie_label_ratio?n(h.pie_label_ratio)?h.pie_label_ratio(a,g.radius,e):h.pie_label_ratio:g.radius&&e?(36/g.radius>.375?1.175-36/g.radius:.8)*g.radius/e:0,j="translate("+c*f+","+d*f+")"),j},i.getArcRatio=function(a){var b=this,c=b.config,d=Math.PI*(b.hasType("gauge")&&!c.gauge_fullCircle?1:2);return a?(a.endAngle-a.startAngle)/d:null},i.convertToArcData=function(a){return this.addName({id:a.data.id,value:a.value,ratio:this.getArcRatio(a),index:a.index})},i.textForArcLabel=function(a){var b,c,d,e,f,g=this;return g.shouldShowArcLabel()?(b=g.updateAngle(a),c=b?b.value:null,d=g.getArcRatio(b),e=a.data.id,g.hasType("gauge")||g.meetsArcLabelThreshold(d)?(f=g.getArcLabelFormat(),f?f(c,d,e):g.defaultArcValueFormat(c,d)):""):""},i.expandArc=function(b){var c,d=this;return d.transiting?void(c=a.setInterval(function(){d.transiting||(a.clearInterval(c),d.legend.selectAll(".c3-legend-item-focused").size()>0&&d.expandArc(b))},10)):(b=d.mapToTargetIds(b),void d.svg.selectAll(d.selectorTargets(b,"."+l.chartArc)).each(function(a){d.shouldExpand(a.data.id)&&d.d3.select(this).selectAll("path").transition().duration(d.expandDuration(a.data.id)).attr("d",d.svgArcExpanded).transition().duration(2*d.expandDuration(a.data.id)).attr("d",d.svgArcExpandedSub).each(function(a){d.isDonutType(a.data)})}))},i.unexpandArc=function(a){var b=this;b.transiting||(a=b.mapToTargetIds(a),b.svg.selectAll(b.selectorTargets(a,"."+l.chartArc)).selectAll("path").transition().duration(function(a){return b.expandDuration(a.data.id)}).attr("d",b.svgArc),b.svg.selectAll("."+l.arc).style("opacity",1))},i.expandDuration=function(a){var b=this,c=b.config;return b.isDonutType(a)?c.donut_expand_duration:b.isGaugeType(a)?c.gauge_expand_duration:b.isPieType(a)?c.pie_expand_duration:50},i.shouldExpand=function(a){var b=this,c=b.config;return b.isDonutType(a)&&c.donut_expand||b.isGaugeType(a)&&c.gauge_expand||b.isPieType(a)&&c.pie_expand},i.shouldShowArcLabel=function(){var a=this,b=a.config,c=!0;return a.hasType("donut")?c=b.donut_label_show:a.hasType("pie")&&(c=b.pie_label_show),c},i.meetsArcLabelThreshold=function(a){var b=this,c=b.config,d=b.hasType("donut")?c.donut_label_threshold:c.pie_label_threshold;return a>=d},i.getArcLabelFormat=function(){var a=this,b=a.config,c=b.pie_label_format;return a.hasType("gauge")?c=b.gauge_label_format:a.hasType("donut")&&(c=b.donut_label_format),c},i.getArcTitle=function(){var a=this;return a.hasType("donut")?a.config.donut_title:""},i.updateTargetsForArc=function(a){var b,c,d=this,e=d.main,f=d.classChartArc.bind(d),g=d.classArcs.bind(d),h=d.classFocus.bind(d);b=e.select("."+l.chartArcs).selectAll("."+l.chartArc).data(d.pie(a)).attr("class",function(a){return f(a)+h(a.data)}),c=b.enter().append("g").attr("class",f),c.append("g").attr("class",g),c.append("text").attr("dy",d.hasType("gauge")?"-.1em":".35em").style("opacity",0).style("text-anchor","middle").style("pointer-events","none")},i.initArc=function(){var a=this;a.arcs=a.main.select("."+l.chart).append("g").attr("class",l.chartArcs).attr("transform",a.getTranslate("arc")),a.arcs.append("text").attr("class",l.chartArcsTitle).style("text-anchor","middle").text(a.getArcTitle())},i.redrawArc=function(a,b,c){var d,e=this,f=e.d3,g=e.config,h=e.main;d=h.selectAll("."+l.arcs).selectAll("."+l.arc).data(e.arcData.bind(e)),d.enter().append("path").attr("class",e.classArc.bind(e)).style("fill",function(a){return e.color(a.data)}).style("cursor",function(a){return g.interaction_enabled&&g.data_selection_isselectable(a)?"pointer":null}).style("opacity",0).each(function(a){e.isGaugeType(a.data)&&(a.startAngle=a.endAngle=g.gauge_startingAngle),this._current=a}),d.attr("transform",function(a){return!e.isGaugeType(a.data)&&c?"scale(0)":""}).style("opacity",function(a){return a===this._current?0:1}).on("mouseover",g.interaction_enabled?function(a){var b,c;e.transiting||(b=e.updateAngle(a),b&&(c=e.convertToArcData(b),e.expandArc(b.data.id),e.api.focus(b.data.id),e.toggleFocusLegend(b.data.id,!0),e.config.data_onmouseover(c,this)))}:null).on("mousemove",g.interaction_enabled?function(a){var b,c,d=e.updateAngle(a);d&&(b=e.convertToArcData(d),c=[b],e.showTooltip(c,this))}:null).on("mouseout",g.interaction_enabled?function(a){var b,c;e.transiting||(b=e.updateAngle(a),b&&(c=e.convertToArcData(b),e.unexpandArc(b.data.id),e.api.revert(),e.revertLegend(),e.hideTooltip(),e.config.data_onmouseout(c,this)))}:null).on("click",g.interaction_enabled?function(a,b){var c,d=e.updateAngle(a);d&&(c=e.convertToArcData(d),e.toggleShape&&e.toggleShape(this,c,b),e.config.data_onclick.call(e.api,c,this))}:null).each(function(){e.transiting=!0}).transition().duration(a).attrTween("d",function(a){var b,c=e.updateAngle(a);return c?(isNaN(this._current.startAngle)&&(this._current.startAngle=0),isNaN(this._current.endAngle)&&(this._current.endAngle=this._current.startAngle),b=f.interpolate(this._current,c),this._current=b(0),function(c){var d=b(c);return d.data=a.data,e.getArc(d,!0)}):function(){return"M 0 0"}}).attr("transform",c?"scale(1)":"").style("fill",function(a){return e.levelColor?e.levelColor(a.data.values[0].value):e.color(a.data.id)}).style("opacity",1).call(e.endall,function(){e.transiting=!1}),d.exit().transition().duration(b).style("opacity",0).remove(),h.selectAll("."+l.chartArc).select("text").style("opacity",0).attr("class",function(a){return e.isGaugeType(a.data)?l.gaugeValue:""}).text(e.textForArcLabel.bind(e)).attr("transform",e.transformForArcLabel.bind(e)).style("font-size",function(a){return e.isGaugeType(a.data)?Math.round(e.radius/5)+"px":""}).transition().duration(a).style("opacity",function(a){return e.isTargetToShow(a.data.id)&&e.isArcType(a.data)?1:0}),h.select("."+l.chartArcsTitle).style("opacity",e.hasType("donut")||e.hasType("gauge")?1:0),e.hasType("gauge")&&(e.arcs.select("."+l.chartArcsBackground).attr("d",function(){var a={data:[{value:g.gauge_max}],startAngle:g.gauge_startingAngle,endAngle:-1*g.gauge_startingAngle};return e.getArc(a,!0,!0)}),e.arcs.select("."+l.chartArcsGaugeUnit).attr("dy",".75em").text(g.gauge_label_show?g.gauge_units:""),e.arcs.select("."+l.chartArcsGaugeMin).attr("dx",-1*(e.innerRadius+(e.radius-e.innerRadius)/(g.gauge_fullCircle?1:2))+"px").attr("dy","1.2em").text(g.gauge_label_show?g.gauge_min:""),e.arcs.select("."+l.chartArcsGaugeMax).attr("dx",e.innerRadius+(e.radius-e.innerRadius)/(g.gauge_fullCircle?1:2)+"px").attr("dy","1.2em").text(g.gauge_label_show?g.gauge_max:""))},i.initGauge=function(){var a=this.arcs;this.hasType("gauge")&&(a.append("path").attr("class",l.chartArcsBackground),a.append("text").attr("class",l.chartArcsGaugeUnit).style("text-anchor","middle").style("pointer-events","none"),a.append("text").attr("class",l.chartArcsGaugeMin).style("text-anchor","middle").style("pointer-events","none"),a.append("text").attr("class",l.chartArcsGaugeMax).style("text-anchor","middle").style("pointer-events","none"))},i.getGaugeLabelHeight=function(){return this.config.gauge_label_show?20:0},i.initRegion=function(){var a=this;a.region=a.main.append("g").attr("clip-path",a.clipPath).attr("class",l.regions)},i.updateRegion=function(a){var b=this,c=b.config;b.region.style("visibility",b.hasArcType()?"hidden":"visible"),b.mainRegion=b.main.select("."+l.regions).selectAll("."+l.region).data(c.regions),b.mainRegion.enter().append("g").append("rect").style("fill-opacity",0),b.mainRegion.attr("class",b.classRegion.bind(b)),b.mainRegion.exit().transition().duration(a).style("opacity",0).remove()},i.redrawRegion=function(a){var b=this,c=b.mainRegion.selectAll("rect").each(function(){var a=b.d3.select(this.parentNode).datum();b.d3.select(this).datum(a)}),d=b.regionX.bind(b),e=b.regionY.bind(b),f=b.regionWidth.bind(b),g=b.regionHeight.bind(b);return[(a?c.transition():c).attr("x",d).attr("y",e).attr("width",f).attr("height",g).style("fill-opacity",function(a){return m(a.opacity)?a.opacity:.1})]},i.regionX=function(a){var b,c=this,d=c.config,e="y"===a.axis?c.y:c.y2;return b="y"===a.axis||"y2"===a.axis?d.axis_rotated&&"start"in a?e(a.start):0:d.axis_rotated?0:"start"in a?c.x(c.isTimeSeries()?c.parseDate(a.start):a.start):0},i.regionY=function(a){var b,c=this,d=c.config,e="y"===a.axis?c.y:c.y2;return b="y"===a.axis||"y2"===a.axis?d.axis_rotated?0:"end"in a?e(a.end):0:d.axis_rotated&&"start"in a?c.x(c.isTimeSeries()?c.parseDate(a.start):a.start):0},i.regionWidth=function(a){var b,c=this,d=c.config,e=c.regionX(a),f="y"===a.axis?c.y:c.y2;return b="y"===a.axis||"y2"===a.axis?d.axis_rotated&&"end"in a?f(a.end):c.width:d.axis_rotated?c.width:"end"in a?c.x(c.isTimeSeries()?c.parseDate(a.end):a.end):c.width,e>b?0:b-e},i.regionHeight=function(a){var b,c=this,d=c.config,e=this.regionY(a),f="y"===a.axis?c.y:c.y2;return b="y"===a.axis||"y2"===a.axis?d.axis_rotated?c.height:"start"in a?f(a.start):c.height:d.axis_rotated&&"end"in a?c.x(c.isTimeSeries()?c.parseDate(a.end):a.end):c.height,e>b?0:b-e},i.isRegionOnX=function(a){return!a.axis||"x"===a.axis},i.drag=function(a){var b,c,d,e,f,g,h,i,j=this,k=j.config,m=j.main,n=j.d3;j.hasArcType()||k.data_selection_enabled&&(k.zoom_enabled&&!j.zoom.altDomain||k.data_selection_multiple&&(b=j.dragStart[0],c=j.dragStart[1],d=a[0],e=a[1],f=Math.min(b,d),g=Math.max(b,d),h=k.data_selection_grouped?j.margin.top:Math.min(c,e),i=k.data_selection_grouped?j.height:Math.max(c,e),m.select("."+l.dragarea).attr("x",f).attr("y",h).attr("width",g-f).attr("height",i-h),m.selectAll("."+l.shapes).selectAll("."+l.shape).filter(function(a){return k.data_selection_isselectable(a)}).each(function(a,b){var c,d,e,k,m,o,p=n.select(this),q=p.classed(l.SELECTED),r=p.classed(l.INCLUDED),s=!1;if(p.classed(l.circle))c=1*p.attr("cx"),d=1*p.attr("cy"),m=j.togglePoint,s=c>f&&g>c&&d>h&&i>d;else{if(!p.classed(l.bar))return;o=z(this),c=o.x,d=o.y,e=o.width,k=o.height,m=j.togglePath,s=!(c>g||f>c+e||d>i||h>d+k)}s^r&&(p.classed(l.INCLUDED,!r),p.classed(l.SELECTED,!q),m.call(j,!q,p,a,b))})))},i.dragstart=function(a){var b=this,c=b.config;b.hasArcType()||c.data_selection_enabled&&(b.dragStart=a,b.main.select("."+l.chart).append("rect").attr("class",l.dragarea).style("opacity",.1),b.dragging=!0)},i.dragend=function(){var a=this,b=a.config;a.hasArcType()||b.data_selection_enabled&&(a.main.select("."+l.dragarea).transition().duration(100).style("opacity",0).remove(),a.main.selectAll("."+l.shape).classed(l.INCLUDED,!1),a.dragging=!1)},i.selectPoint=function(a,b,c){var d=this,e=d.config,f=(e.axis_rotated?d.circleY:d.circleX).bind(d),g=(e.axis_rotated?d.circleX:d.circleY).bind(d),h=d.pointSelectR.bind(d);e.data_onselected.call(d.api,b,a.node()),d.main.select("."+l.selectedCircles+d.getTargetSelectorSuffix(b.id)).selectAll("."+l.selectedCircle+"-"+c).data([b]).enter().append("circle").attr("class",function(){return d.generateClass(l.selectedCircle,c)}).attr("cx",f).attr("cy",g).attr("stroke",function(){return d.color(b)}).attr("r",function(a){return 1.4*d.pointSelectR(a)}).transition().duration(100).attr("r",h)},i.unselectPoint=function(a,b,c){var d=this;d.config.data_onunselected.call(d.api,b,a.node()),d.main.select("."+l.selectedCircles+d.getTargetSelectorSuffix(b.id)).selectAll("."+l.selectedCircle+"-"+c).transition().duration(100).attr("r",0).remove()},i.togglePoint=function(a,b,c,d){a?this.selectPoint(b,c,d):this.unselectPoint(b,c,d)},i.selectPath=function(a,b){var c=this;c.config.data_onselected.call(c,b,a.node()),c.config.interaction_brighten&&a.transition().duration(100).style("fill",function(){return c.d3.rgb(c.color(b)).brighter(.75)})},i.unselectPath=function(a,b){var c=this;c.config.data_onunselected.call(c,b,a.node()),c.config.interaction_brighten&&a.transition().duration(100).style("fill",function(){return c.color(b)})},i.togglePath=function(a,b,c,d){a?this.selectPath(b,c,d):this.unselectPath(b,c,d)},i.getToggle=function(a,b){var c,d=this;return"circle"===a.nodeName?c=d.isStepType(b)?function(){}:d.togglePoint:"path"===a.nodeName&&(c=d.togglePath),c},i.toggleShape=function(a,b,c){var d=this,e=d.d3,f=d.config,g=e.select(a),h=g.classed(l.SELECTED),i=d.getToggle(a,b).bind(d);f.data_selection_enabled&&f.data_selection_isselectable(b)&&(f.data_selection_multiple||d.main.selectAll("."+l.shapes+(f.data_selection_grouped?d.getTargetSelectorSuffix(b.id):"")).selectAll("."+l.shape).each(function(a,b){var c=e.select(this);c.classed(l.SELECTED)&&i(!1,c.classed(l.SELECTED,!1),a,b)}),g.classed(l.SELECTED,!h),i(!h,g,b,c))},i.initBrush=function(){var a=this,b=a.d3;a.brush=b.svg.brush().on("brush",function(){a.redrawForBrush()}),a.brush.update=function(){return a.context&&a.context.select("."+l.brush).call(this),this},a.brush.scale=function(b){return a.config.axis_rotated?this.y(b):this.x(b)}},i.initSubchart=function(){var a=this,b=a.config,c=a.context=a.svg.append("g").attr("transform",a.getTranslate("context")),d=b.subchart_show?"visible":"hidden";c.style("visibility",d),c.append("g").attr("clip-path",a.clipPathForSubchart).attr("class",l.chart),c.select("."+l.chart).append("g").attr("class",l.chartBars),c.select("."+l.chart).append("g").attr("class",l.chartLines),c.append("g").attr("clip-path",a.clipPath).attr("class",l.brush).call(a.brush),a.axes.subx=c.append("g").attr("class",l.axisX).attr("transform",a.getTranslate("subx")).attr("clip-path",b.axis_rotated?"":a.clipPathForXAxis).style("visibility",b.subchart_axis_x_show?d:"hidden")},i.updateTargetsForSubchart=function(a){var b,c,d,e,f=this,g=f.context,h=f.config,i=f.classChartBar.bind(f),j=f.classBars.bind(f),k=f.classChartLine.bind(f),m=f.classLines.bind(f),n=f.classAreas.bind(f);h.subchart_show&&(e=g.select("."+l.chartBars).selectAll("."+l.chartBar).data(a).attr("class",i),d=e.enter().append("g").style("opacity",0).attr("class",i),d.append("g").attr("class",j),c=g.select("."+l.chartLines).selectAll("."+l.chartLine).data(a).attr("class",k),b=c.enter().append("g").style("opacity",0).attr("class",k),b.append("g").attr("class",m),b.append("g").attr("class",n),g.selectAll("."+l.brush+" rect").attr(h.axis_rotated?"width":"height",h.axis_rotated?f.width2:f.height2))},i.updateBarForSubchart=function(a){var b=this;b.contextBar=b.context.selectAll("."+l.bars).selectAll("."+l.bar).data(b.barData.bind(b)),b.contextBar.enter().append("path").attr("class",b.classBar.bind(b)).style("stroke","none").style("fill",b.color),b.contextBar.style("opacity",b.initialOpacity.bind(b)),b.contextBar.exit().transition().duration(a).style("opacity",0).remove()},i.redrawBarForSubchart=function(a,b,c){(b?this.contextBar.transition(Math.random().toString()).duration(c):this.contextBar).attr("d",a).style("opacity",1)},i.updateLineForSubchart=function(a){var b=this;b.contextLine=b.context.selectAll("."+l.lines).selectAll("."+l.line).data(b.lineData.bind(b)),b.contextLine.enter().append("path").attr("class",b.classLine.bind(b)).style("stroke",b.color),b.contextLine.style("opacity",b.initialOpacity.bind(b)),b.contextLine.exit().transition().duration(a).style("opacity",0).remove()},i.redrawLineForSubchart=function(a,b,c){(b?this.contextLine.transition(Math.random().toString()).duration(c):this.contextLine).attr("d",a).style("opacity",1)},i.updateAreaForSubchart=function(a){var b=this,c=b.d3;b.contextArea=b.context.selectAll("."+l.areas).selectAll("."+l.area).data(b.lineData.bind(b)),b.contextArea.enter().append("path").attr("class",b.classArea.bind(b)).style("fill",b.color).style("opacity",function(){return b.orgAreaOpacity=+c.select(this).style("opacity"),0}),b.contextArea.style("opacity",0),b.contextArea.exit().transition().duration(a).style("opacity",0).remove()},i.redrawAreaForSubchart=function(a,b,c){(b?this.contextArea.transition(Math.random().toString()).duration(c):this.contextArea).attr("d",a).style("fill",this.color).style("opacity",this.orgAreaOpacity)},i.redrawSubchart=function(a,b,c,d,e,f,g){var h,i,j,k=this,l=k.d3,m=k.config;k.context.style("visibility",m.subchart_show?"visible":"hidden"),m.subchart_show&&(l.event&&"zoom"===l.event.type&&k.brush.extent(k.x.orgDomain()).update(),a&&(k.brush.empty()||k.brush.extent(k.x.orgDomain()).update(),h=k.generateDrawArea(e,!0),i=k.generateDrawBar(f,!0),j=k.generateDrawLine(g,!0),k.updateBarForSubchart(c),k.updateLineForSubchart(c),k.updateAreaForSubchart(c),k.redrawBarForSubchart(i,c,c),k.redrawLineForSubchart(j,c,c),k.redrawAreaForSubchart(h,c,c)))},i.redrawForBrush=function(){var a=this,b=a.x;a.redraw({withTransition:!1,withY:a.config.zoom_rescale,withSubchart:!1,withUpdateXDomain:!0,withDimension:!1}),a.config.subchart_onbrush.call(a.api,b.orgDomain())},i.transformContext=function(a,b){var c,d=this;b&&b.axisSubX?c=b.axisSubX:(c=d.context.select("."+l.axisX),a&&(c=c.transition())),d.context.attr("transform",d.getTranslate("context")),c.attr("transform",d.getTranslate("subx"))},i.getDefaultExtent=function(){var a=this,b=a.config,c=n(b.axis_x_extent)?b.axis_x_extent(a.getXDomain(a.data.targets)):b.axis_x_extent;return a.isTimeSeries()&&(c=[a.parseDate(c[0]),a.parseDate(c[1])]),c},i.initZoom=function(){var a,b=this,c=b.d3,d=b.config;b.zoom=c.behavior.zoom().on("zoomstart",function(){a=c.event.sourceEvent,b.zoom.altDomain=c.event.sourceEvent.altKey?b.x.orgDomain():null,d.zoom_onzoomstart.call(b.api,c.event.sourceEvent)}).on("zoom",function(){b.redrawForZoom.call(b)}).on("zoomend",function(){var e=c.event.sourceEvent;e&&a.clientX===e.clientX&&a.clientY===e.clientY||(b.redrawEventRect(),b.updateZoom(),d.zoom_onzoomend.call(b.api,b.x.orgDomain()))}),b.zoom.scale=function(a){return d.axis_rotated?this.y(a):this.x(a)},b.zoom.orgScaleExtent=function(){var a=d.zoom_extent?d.zoom_extent:[1,10];return[a[0],Math.max(b.getMaxDataCount()/a[1],a[1])]},b.zoom.updateScaleExtent=function(){var a=t(b.x.orgDomain())/t(b.getZoomDomain()),c=this.orgScaleExtent();return this.scaleExtent([c[0]*a,c[1]*a]),this}},i.getZoomDomain=function(){var a=this,b=a.config,c=a.d3,d=c.min([a.orgXDomain[0],b.zoom_x_min]),e=c.max([a.orgXDomain[1],b.zoom_x_max]);return[d,e]},i.updateZoom=function(){var a=this,b=a.config.zoom_enabled?a.zoom:function(){};a.main.select("."+l.zoomRect).call(b).on("dblclick.zoom",null),a.main.selectAll("."+l.eventRect).call(b).on("dblclick.zoom",null)},i.redrawForZoom=function(){var a=this,b=a.d3,c=a.config,d=a.zoom,e=a.x;if(c.zoom_enabled&&0!==a.filterTargetsToShow(a.data.targets).length){if("mousemove"===b.event.sourceEvent.type&&d.altDomain)return e.domain(d.altDomain),void d.scale(e).updateScaleExtent();a.isCategorized()&&e.orgDomain()[0]===a.orgXDomain[0]&&e.domain([a.orgXDomain[0]-1e-10,e.orgDomain()[1]]),a.redraw({withTransition:!1,withY:c.zoom_rescale,withSubchart:!1,withEventRect:!1,withDimension:!1}),"mousemove"===b.event.sourceEvent.type&&(a.cancelClick=!0),c.zoom_onzoom.call(a.api,e.orgDomain())}},i.generateColor=function(){var a=this,b=a.config,c=a.d3,d=b.data_colors,e=v(b.color_pattern)?b.color_pattern:c.scale.category10().range(),f=b.data_color,g=[];return function(a){var b,c=a.id||a.data&&a.data.id||a;return d[c]instanceof Function?b=d[c](a):d[c]?b=d[c]:(g.indexOf(c)<0&&g.push(c),b=e[g.indexOf(c)%e.length],d[c]=b),f instanceof Function?f(b,a):b}},i.generateLevelColor=function(){var a=this,b=a.config,c=b.color_pattern,d=b.color_threshold,e="value"===d.unit,f=d.values&&d.values.length?d.values:[],g=d.max||100;return v(b.color_threshold)?function(a){var b,d,h=c[c.length-1];for(b=0;b<f.length;b++)if(d=e?a:100*a/g,d<f[b]){h=c[b];break}return h}:null},i.getYFormat=function(a){var b=this,c=a&&!b.hasType("gauge")?b.defaultArcValueFormat:b.yFormat,d=a&&!b.hasType("gauge")?b.defaultArcValueFormat:b.y2Format;return function(a,e,f){var g="y2"===b.axis.getId(f)?d:c;return g.call(b,a,e)}},i.yFormat=function(a){var b=this,c=b.config,d=c.axis_y_tick_format?c.axis_y_tick_format:b.defaultValueFormat;return d(a)},i.y2Format=function(a){var b=this,c=b.config,d=c.axis_y2_tick_format?c.axis_y2_tick_format:b.defaultValueFormat;return d(a)},i.defaultValueFormat=function(a){return m(a)?+a:""},i.defaultArcValueFormat=function(a,b){return(100*b).toFixed(1)+"%"},i.dataLabelFormat=function(a){var b,c=this,d=c.config.data_labels,e=function(a){return m(a)?+a:""};return b="function"==typeof d.format?d.format:"object"==typeof d.format?d.format[a]?d.format[a]===!0?e:d.format[a]:function(){return""}:e},i.hasCaches=function(a){for(var b=0;b<a.length;b++)if(!(a[b]in this.cache))return!1;return!0},i.addCache=function(a,b){this.cache[a]=this.cloneTarget(b)},i.getCaches=function(a){var b,c=[];for(b=0;b<a.length;b++)a[b]in this.cache&&c.push(this.cloneTarget(this.cache[a[b]]));return c};var l=i.CLASS={target:"c3-target",chart:"c3-chart",chartLine:"c3-chart-line",chartLines:"c3-chart-lines",chartBar:"c3-chart-bar",chartBars:"c3-chart-bars",chartText:"c3-chart-text",chartTexts:"c3-chart-texts",chartArc:"c3-chart-arc",chartArcs:"c3-chart-arcs",chartArcsTitle:"c3-chart-arcs-title",chartArcsBackground:"c3-chart-arcs-background",chartArcsGaugeUnit:"c3-chart-arcs-gauge-unit",chartArcsGaugeMax:"c3-chart-arcs-gauge-max",chartArcsGaugeMin:"c3-chart-arcs-gauge-min",selectedCircle:"c3-selected-circle",selectedCircles:"c3-selected-circles",eventRect:"c3-event-rect",eventRects:"c3-event-rects",eventRectsSingle:"c3-event-rects-single",eventRectsMultiple:"c3-event-rects-multiple",zoomRect:"c3-zoom-rect",brush:"c3-brush",focused:"c3-focused",defocused:"c3-defocused",region:"c3-region",regions:"c3-regions",title:"c3-title",tooltipContainer:"c3-tooltip-container",tooltip:"c3-tooltip",tooltipName:"c3-tooltip-name",shape:"c3-shape",shapes:"c3-shapes",line:"c3-line",lines:"c3-lines",bar:"c3-bar",bars:"c3-bars",circle:"c3-circle",circles:"c3-circles",arc:"c3-arc",arcs:"c3-arcs",area:"c3-area",areas:"c3-areas",empty:"c3-empty",text:"c3-text",texts:"c3-texts",gaugeValue:"c3-gauge-value",grid:"c3-grid",gridLines:"c3-grid-lines",xgrid:"c3-xgrid",xgrids:"c3-xgrids",xgridLine:"c3-xgrid-line",xgridLines:"c3-xgrid-lines",xgridFocus:"c3-xgrid-focus",ygrid:"c3-ygrid",ygrids:"c3-ygrids",ygridLine:"c3-ygrid-line",ygridLines:"c3-ygrid-lines",axis:"c3-axis",axisX:"c3-axis-x",axisXLabel:"c3-axis-x-label",axisY:"c3-axis-y",axisYLabel:"c3-axis-y-label",axisY2:"c3-axis-y2",axisY2Label:"c3-axis-y2-label",legendBackground:"c3-legend-background",legendItem:"c3-legend-item",legendItemEvent:"c3-legend-item-event",legendItemTile:"c3-legend-item-tile",legendItemHidden:"c3-legend-item-hidden",legendItemFocused:"c3-legend-item-focused",dragarea:"c3-dragarea",EXPANDED:"_expanded_",SELECTED:"_selected_",INCLUDED:"_included_"};i.generateClass=function(a,b){return" "+a+" "+a+this.getTargetSelectorSuffix(b)},i.classText=function(a){return this.generateClass(l.text,a.index)},i.classTexts=function(a){return this.generateClass(l.texts,a.id)},i.classShape=function(a){return this.generateClass(l.shape,a.index)},i.classShapes=function(a){return this.generateClass(l.shapes,a.id)},i.classLine=function(a){return this.classShape(a)+this.generateClass(l.line,a.id)},i.classLines=function(a){return this.classShapes(a)+this.generateClass(l.lines,a.id)},i.classCircle=function(a){return this.classShape(a)+this.generateClass(l.circle,a.index)},i.classCircles=function(a){return this.classShapes(a)+this.generateClass(l.circles,a.id)},i.classBar=function(a){return this.classShape(a)+this.generateClass(l.bar,a.index)},i.classBars=function(a){return this.classShapes(a)+this.generateClass(l.bars,a.id)},i.classArc=function(a){return this.classShape(a.data)+this.generateClass(l.arc,a.data.id)},i.classArcs=function(a){return this.classShapes(a.data)+this.generateClass(l.arcs,a.data.id)},i.classArea=function(a){return this.classShape(a)+this.generateClass(l.area,a.id)},i.classAreas=function(a){return this.classShapes(a)+this.generateClass(l.areas,a.id)},i.classRegion=function(a,b){return this.generateClass(l.region,b)+" "+("class"in a?a["class"]:"")},i.classEvent=function(a){return this.generateClass(l.eventRect,a.index)},i.classTarget=function(a){var b=this,c=b.config.data_classes[a],d="";return c&&(d=" "+l.target+"-"+c),b.generateClass(l.target,a)+d},i.classFocus=function(a){return this.classFocused(a)+this.classDefocused(a)},i.classFocused=function(a){return" "+(this.focusedTargetIds.indexOf(a.id)>=0?l.focused:"")},i.classDefocused=function(a){return" "+(this.defocusedTargetIds.indexOf(a.id)>=0?l.defocused:"")},i.classChartText=function(a){return l.chartText+this.classTarget(a.id)},i.classChartLine=function(a){return l.chartLine+this.classTarget(a.id)},i.classChartBar=function(a){return l.chartBar+this.classTarget(a.id)},i.classChartArc=function(a){return l.chartArc+this.classTarget(a.data.id)},i.getTargetSelectorSuffix=function(a){return a||0===a?("-"+a).replace(/[\s?!@#$%^&*()_=+,.<>'":;\[\]\/|~`{}\\]/g,"-"):""},i.selectorTarget=function(a,b){return(b||"")+"."+l.target+this.getTargetSelectorSuffix(a)},i.selectorTargets=function(a,b){var c=this;return a=a||[],a.length?a.map(function(a){return c.selectorTarget(a,b)}):null},i.selectorLegend=function(a){return"."+l.legendItem+this.getTargetSelectorSuffix(a)},i.selectorLegends=function(a){var b=this;return a&&a.length?a.map(function(a){return b.selectorLegend(a)}):null};var m=i.isValue=function(a){return a||0===a},n=i.isFunction=function(a){return"function"==typeof a},o=i.isString=function(a){return"string"==typeof a},p=i.isUndefined=function(a){return"undefined"==typeof a},q=i.isDefined=function(a){return"undefined"!=typeof a},r=i.ceil10=function(a){return 10*Math.ceil(a/10)},s=i.asHalfPixel=function(a){return Math.ceil(a)+.5},t=i.diffDomain=function(a){return a[1]-a[0]},u=i.isEmpty=function(a){return"undefined"==typeof a||null===a||o(a)&&0===a.length||"object"==typeof a&&0===Object.keys(a).length},v=i.notEmpty=function(a){return!i.isEmpty(a)},w=i.getOption=function(a,b,c){return q(a[b])?a[b]:c},x=i.hasValue=function(a,b){var c=!1;return Object.keys(a).forEach(function(d){a[d]===b&&(c=!0)}),c},y=i.sanitise=function(a){return"string"==typeof a?a.replace(/</g,"&lt;").replace(/>/g,"&gt;"):a},z=i.getPathBox=function(a){var b=a.getBoundingClientRect(),c=[a.pathSegList.getItem(0),a.pathSegList.getItem(1)],d=c[0].x,e=Math.min(c[0].y,c[1].y);return{x:d,y:e,width:b.width,height:b.height}};h.focus=function(a){var b,c=this.internal;a=c.mapToTargetIds(a),b=c.svg.selectAll(c.selectorTargets(a.filter(c.isTargetToShow,c))),this.revert(),this.defocus(),b.classed(l.focused,!0).classed(l.defocused,!1),
2313 e=this.getYAxis(d,h.y2Orient,i.axis_y2_tick_format,h.y2AxisTickValues,!1,!0,!0)):(d=h.x.copy().domain(h.getXDomain(c)),e=this.getXAxis(d,h.xOrient,h.xAxisTickFormat,h.xAxisTickValues,!1,!0,!0),this.updateXAxisTickValues(c,e)),f=h.d3.select("body").append("div").classed("c3",!0),g=f.append("svg").style("visibility","hidden").style("position","fixed").style("top",0).style("left",0),g.append("g").call(e).each(function(){h.d3.select(this).selectAll("text").each(function(){var a=this.getBoundingClientRect();j<a.width&&(j=a.width)}),f.remove()})),h.currentMaxTickWidths[a]=0>=j?h.currentMaxTickWidths[a]:j,h.currentMaxTickWidths[a])},f.prototype.updateLabels=function(a){var b=this.owner,c=b.main.select("."+l.axisX+" ."+l.axisXLabel),d=b.main.select("."+l.axisY+" ."+l.axisYLabel),e=b.main.select("."+l.axisY2+" ."+l.axisY2Label);(a?c.transition():c).attr("x",this.xForXAxisLabel.bind(this)).attr("dx",this.dxForXAxisLabel.bind(this)).attr("dy",this.dyForXAxisLabel.bind(this)).text(this.textForXAxisLabel.bind(this)),(a?d.transition():d).attr("x",this.xForYAxisLabel.bind(this)).attr("dx",this.dxForYAxisLabel.bind(this)).attr("dy",this.dyForYAxisLabel.bind(this)).text(this.textForYAxisLabel.bind(this)),(a?e.transition():e).attr("x",this.xForY2AxisLabel.bind(this)).attr("dx",this.dxForY2AxisLabel.bind(this)).attr("dy",this.dyForY2AxisLabel.bind(this)).text(this.textForY2AxisLabel.bind(this))},f.prototype.getPadding=function(a,b,c,d){var e="number"==typeof a?a:a[b];return m(e)?"ratio"===a.unit?a[b]*d:this.convertPixelsToAxisPadding(e,d):c},f.prototype.convertPixelsToAxisPadding=function(a,b){var c=this.owner,d=c.config.axis_rotated?c.width:c.height;return b*(a/d)},f.prototype.generateTickValues=function(a,b,c){var d,e,f,g,h,i,j,k=a;if(b)if(d=n(b)?b():b,1===d)k=[a[0]];else if(2===d)k=[a[0],a[a.length-1]];else if(d>2){for(g=d-2,e=a[0],f=a[a.length-1],h=(f-e)/(g+1),k=[e],i=0;g>i;i++)j=+e+h*(i+1),k.push(c?new Date(j):j);k.push(f)}return c||(k=k.sort(function(a,b){return a-b})),k},f.prototype.generateTransitions=function(a){var b=this.owner,c=b.axes;return{axisX:a?c.x.transition().duration(a):c.x,axisY:a?c.y.transition().duration(a):c.y,axisY2:a?c.y2.transition().duration(a):c.y2,axisSubX:a?c.subx.transition().duration(a):c.subx}},f.prototype.redraw=function(a,b){var c=this.owner;c.axes.x.style("opacity",b?0:1),c.axes.y.style("opacity",b?0:1),c.axes.y2.style("opacity",b?0:1),c.axes.subx.style("opacity",b?0:1),a.axisX.call(c.xAxis),a.axisY.call(c.yAxis),a.axisY2.call(c.y2Axis),a.axisSubX.call(c.subXAxis)},i.getClipPath=function(b){var c=a.navigator.appVersion.toLowerCase().indexOf("msie 9.")>=0;return"url("+(c?"":document.URL.split("#")[0])+"#"+b+")"},i.appendClip=function(a,b){return a.append("clipPath").attr("id",b).append("rect")},i.getAxisClipX=function(a){var b=Math.max(30,this.margin.left);return a?-(1+b):-(b-1)},i.getAxisClipY=function(a){return a?-20:-this.margin.top},i.getXAxisClipX=function(){var a=this;return a.getAxisClipX(!a.config.axis_rotated)},i.getXAxisClipY=function(){var a=this;return a.getAxisClipY(!a.config.axis_rotated)},i.getYAxisClipX=function(){var a=this;return a.config.axis_y_inner?-1:a.getAxisClipX(a.config.axis_rotated)},i.getYAxisClipY=function(){var a=this;return a.getAxisClipY(a.config.axis_rotated)},i.getAxisClipWidth=function(a){var b=this,c=Math.max(30,b.margin.left),d=Math.max(30,b.margin.right);return a?b.width+2+c+d:b.margin.left+20},i.getAxisClipHeight=function(a){return(a?this.margin.bottom:this.margin.top+this.height)+20},i.getXAxisClipWidth=function(){var a=this;return a.getAxisClipWidth(!a.config.axis_rotated)},i.getXAxisClipHeight=function(){var a=this;return a.getAxisClipHeight(!a.config.axis_rotated)},i.getYAxisClipWidth=function(){var a=this;return a.getAxisClipWidth(a.config.axis_rotated)+(a.config.axis_y_inner?20:0)},i.getYAxisClipHeight=function(){var a=this;return a.getAxisClipHeight(a.config.axis_rotated)},i.initPie=function(){var a=this,b=a.d3,c=a.config;a.pie=b.layout.pie().value(function(a){return a.values.reduce(function(a,b){return a+b.value},0)}),c.data_order||a.pie.sort(null)},i.updateRadius=function(){var a=this,b=a.config,c=b.gauge_width||b.donut_width;a.radiusExpanded=Math.min(a.arcWidth,a.arcHeight)/2,a.radius=.95*a.radiusExpanded,a.innerRadiusRatio=c?(a.radius-c)/a.radius:.6,a.innerRadius=a.hasType("donut")||a.hasType("gauge")?a.radius*a.innerRadiusRatio:0},i.updateArc=function(){var a=this;a.svgArc=a.getSvgArc(),a.svgArcExpanded=a.getSvgArcExpanded(),a.svgArcExpandedSub=a.getSvgArcExpanded(.98)},i.updateAngle=function(a){var b,c,d,e,f=this,g=f.config,h=!1,i=0;return g?(f.pie(f.filterTargetsToShow(f.data.targets)).forEach(function(b){h||b.data.id!==a.data.id||(h=!0,a=b,a.index=i),i++}),isNaN(a.startAngle)&&(a.startAngle=0),isNaN(a.endAngle)&&(a.endAngle=a.startAngle),f.isGaugeType(a.data)&&(b=g.gauge_min,c=g.gauge_max,d=Math.PI*(g.gauge_fullCircle?2:1)/(c-b),e=a.value<b?0:a.value<c?a.value-b:c-b,a.startAngle=g.gauge_startingAngle,a.endAngle=a.startAngle+d*e),h?a:null):null},i.getSvgArc=function(){var a=this,b=a.d3.svg.arc().outerRadius(a.radius).innerRadius(a.innerRadius),c=function(c,d){var e;return d?b(c):(e=a.updateAngle(c),e?b(e):"M 0 0")};return c.centroid=b.centroid,c},i.getSvgArcExpanded=function(a){var b=this,c=b.d3.svg.arc().outerRadius(b.radiusExpanded*(a?a:1)).innerRadius(b.innerRadius);return function(a){var d=b.updateAngle(a);return d?c(d):"M 0 0"}},i.getArc=function(a,b,c){return c||this.isArcType(a.data)?this.svgArc(a,b):"M 0 0"},i.transformForArcLabel=function(a){var b,c,d,e,f,g=this,h=g.config,i=g.updateAngle(a),j="";return i&&!g.hasType("gauge")&&(b=this.svgArc.centroid(i),c=isNaN(b[0])?0:b[0],d=isNaN(b[1])?0:b[1],e=Math.sqrt(c*c+d*d),f=g.hasType("donut")&&h.donut_label_ratio?n(h.donut_label_ratio)?h.donut_label_ratio(a,g.radius,e):h.donut_label_ratio:g.hasType("pie")&&h.pie_label_ratio?n(h.pie_label_ratio)?h.pie_label_ratio(a,g.radius,e):h.pie_label_ratio:g.radius&&e?(36/g.radius>.375?1.175-36/g.radius:.8)*g.radius/e:0,j="translate("+c*f+","+d*f+")"),j},i.getArcRatio=function(a){var b=this,c=b.config,d=Math.PI*(b.hasType("gauge")&&!c.gauge_fullCircle?1:2);return a?(a.endAngle-a.startAngle)/d:null},i.convertToArcData=function(a){return this.addName({id:a.data.id,value:a.value,ratio:this.getArcRatio(a),index:a.index})},i.textForArcLabel=function(a){var b,c,d,e,f,g=this;return g.shouldShowArcLabel()?(b=g.updateAngle(a),c=b?b.value:null,d=g.getArcRatio(b),e=a.data.id,g.hasType("gauge")||g.meetsArcLabelThreshold(d)?(f=g.getArcLabelFormat(),f?f(c,d,e):g.defaultArcValueFormat(c,d)):""):""},i.expandArc=function(b){var c,d=this;return d.transiting?void(c=a.setInterval(function(){d.transiting||(a.clearInterval(c),d.legend.selectAll(".c3-legend-item-focused").size()>0&&d.expandArc(b))},10)):(b=d.mapToTargetIds(b),void d.svg.selectAll(d.selectorTargets(b,"."+l.chartArc)).each(function(a){d.shouldExpand(a.data.id)&&d.d3.select(this).selectAll("path").transition().duration(d.expandDuration(a.data.id)).attr("d",d.svgArcExpanded).transition().duration(2*d.expandDuration(a.data.id)).attr("d",d.svgArcExpandedSub).each(function(a){d.isDonutType(a.data)})}))},i.unexpandArc=function(a){var b=this;b.transiting||(a=b.mapToTargetIds(a),b.svg.selectAll(b.selectorTargets(a,"."+l.chartArc)).selectAll("path").transition().duration(function(a){return b.expandDuration(a.data.id)}).attr("d",b.svgArc),b.svg.selectAll("."+l.arc).style("opacity",1))},i.expandDuration=function(a){var b=this,c=b.config;return b.isDonutType(a)?c.donut_expand_duration:b.isGaugeType(a)?c.gauge_expand_duration:b.isPieType(a)?c.pie_expand_duration:50},i.shouldExpand=function(a){var b=this,c=b.config;return b.isDonutType(a)&&c.donut_expand||b.isGaugeType(a)&&c.gauge_expand||b.isPieType(a)&&c.pie_expand},i.shouldShowArcLabel=function(){var a=this,b=a.config,c=!0;return a.hasType("donut")?c=b.donut_label_show:a.hasType("pie")&&(c=b.pie_label_show),c},i.meetsArcLabelThreshold=function(a){var b=this,c=b.config,d=b.hasType("donut")?c.donut_label_threshold:c.pie_label_threshold;return a>=d},i.getArcLabelFormat=function(){var a=this,b=a.config,c=b.pie_label_format;return a.hasType("gauge")?c=b.gauge_label_format:a.hasType("donut")&&(c=b.donut_label_format),c},i.getArcTitle=function(){var a=this;return a.hasType("donut")?a.config.donut_title:""},i.updateTargetsForArc=function(a){var b,c,d=this,e=d.main,f=d.classChartArc.bind(d),g=d.classArcs.bind(d),h=d.classFocus.bind(d);b=e.select("."+l.chartArcs).selectAll("."+l.chartArc).data(d.pie(a)).attr("class",function(a){return f(a)+h(a.data)}),c=b.enter().append("g").attr("class",f),c.append("g").attr("class",g),c.append("text").attr("dy",d.hasType("gauge")?"-.1em":".35em").style("opacity",0).style("text-anchor","middle").style("pointer-events","none")},i.initArc=function(){var a=this;a.arcs=a.main.select("."+l.chart).append("g").attr("class",l.chartArcs).attr("transform",a.getTranslate("arc")),a.arcs.append("text").attr("class",l.chartArcsTitle).style("text-anchor","middle").text(a.getArcTitle())},i.redrawArc=function(a,b,c){var d,e=this,f=e.d3,g=e.config,h=e.main;d=h.selectAll("."+l.arcs).selectAll("."+l.arc).data(e.arcData.bind(e)),d.enter().append("path").attr("class",e.classArc.bind(e)).style("fill",function(a){return e.color(a.data)}).style("cursor",function(a){return g.interaction_enabled&&g.data_selection_isselectable(a)?"pointer":null}).style("opacity",0).each(function(a){e.isGaugeType(a.data)&&(a.startAngle=a.endAngle=g.gauge_startingAngle),this._current=a}),d.attr("transform",function(a){return!e.isGaugeType(a.data)&&c?"scale(0)":""}).style("opacity",function(a){return a===this._current?0:1}).on("mouseover",g.interaction_enabled?function(a){var b,c;e.transiting||(b=e.updateAngle(a),b&&(c=e.convertToArcData(b),e.expandArc(b.data.id),e.api.focus(b.data.id),e.toggleFocusLegend(b.data.id,!0),e.config.data_onmouseover(c,this)))}:null).on("mousemove",g.interaction_enabled?function(a){var b,c,d=e.updateAngle(a);d&&(b=e.convertToArcData(d),c=[b],e.showTooltip(c,this))}:null).on("mouseout",g.interaction_enabled?function(a){var b,c;e.transiting||(b=e.updateAngle(a),b&&(c=e.convertToArcData(b),e.unexpandArc(b.data.id),e.api.revert(),e.revertLegend(),e.hideTooltip(),e.config.data_onmouseout(c,this)))}:null).on("click",g.interaction_enabled?function(a,b){var c,d=e.updateAngle(a);d&&(c=e.convertToArcData(d),e.toggleShape&&e.toggleShape(this,c,b),e.config.data_onclick.call(e.api,c,this))}:null).each(function(){e.transiting=!0}).transition().duration(a).attrTween("d",function(a){var b,c=e.updateAngle(a);return c?(isNaN(this._current.startAngle)&&(this._current.startAngle=0),isNaN(this._current.endAngle)&&(this._current.endAngle=this._current.startAngle),b=f.interpolate(this._current,c),this._current=b(0),function(c){var d=b(c);return d.data=a.data,e.getArc(d,!0)}):function(){return"M 0 0"}}).attr("transform",c?"scale(1)":"").style("fill",function(a){return e.levelColor?e.levelColor(a.data.values[0].value):e.color(a.data.id)}).style("opacity",1).call(e.endall,function(){e.transiting=!1}),d.exit().transition().duration(b).style("opacity",0).remove(),h.selectAll("."+l.chartArc).select("text").style("opacity",0).attr("class",function(a){return e.isGaugeType(a.data)?l.gaugeValue:""}).text(e.textForArcLabel.bind(e)).attr("transform",e.transformForArcLabel.bind(e)).style("font-size",function(a){return e.isGaugeType(a.data)?Math.round(e.radius/5)+"px":""}).transition().duration(a).style("opacity",function(a){return e.isTargetToShow(a.data.id)&&e.isArcType(a.data)?1:0}),h.select("."+l.chartArcsTitle).style("opacity",e.hasType("donut")||e.hasType("gauge")?1:0),e.hasType("gauge")&&(e.arcs.select("."+l.chartArcsBackground).attr("d",function(){var a={data:[{value:g.gauge_max}],startAngle:g.gauge_startingAngle,endAngle:-1*g.gauge_startingAngle};return e.getArc(a,!0,!0)}),e.arcs.select("."+l.chartArcsGaugeUnit).attr("dy",".75em").text(g.gauge_label_show?g.gauge_units:""),e.arcs.select("."+l.chartArcsGaugeMin).attr("dx",-1*(e.innerRadius+(e.radius-e.innerRadius)/(g.gauge_fullCircle?1:2))+"px").attr("dy","1.2em").text(g.gauge_label_show?g.gauge_min:""),e.arcs.select("."+l.chartArcsGaugeMax).attr("dx",e.innerRadius+(e.radius-e.innerRadius)/(g.gauge_fullCircle?1:2)+"px").attr("dy","1.2em").text(g.gauge_label_show?g.gauge_max:""))},i.initGauge=function(){var a=this.arcs;this.hasType("gauge")&&(a.append("path").attr("class",l.chartArcsBackground),a.append("text").attr("class",l.chartArcsGaugeUnit).style("text-anchor","middle").style("pointer-events","none"),a.append("text").attr("class",l.chartArcsGaugeMin).style("text-anchor","middle").style("pointer-events","none"),a.append("text").attr("class",l.chartArcsGaugeMax).style("text-anchor","middle").style("pointer-events","none"))},i.getGaugeLabelHeight=function(){return this.config.gauge_label_show?20:0},i.initRegion=function(){var a=this;a.region=a.main.append("g").attr("clip-path",a.clipPath).attr("class",l.regions)},i.updateRegion=function(a){var b=this,c=b.config;b.region.style("visibility",b.hasArcType()?"hidden":"visible"),b.mainRegion=b.main.select("."+l.regions).selectAll("."+l.region).data(c.regions),b.mainRegion.enter().append("g").append("rect").style("fill-opacity",0),b.mainRegion.attr("class",b.classRegion.bind(b)),b.mainRegion.exit().transition().duration(a).style("opacity",0).remove()},i.redrawRegion=function(a){var b=this,c=b.mainRegion.selectAll("rect").each(function(){var a=b.d3.select(this.parentNode).datum();b.d3.select(this).datum(a)}),d=b.regionX.bind(b),e=b.regionY.bind(b),f=b.regionWidth.bind(b),g=b.regionHeight.bind(b);return[(a?c.transition():c).attr("x",d).attr("y",e).attr("width",f).attr("height",g).style("fill-opacity",function(a){return m(a.opacity)?a.opacity:.1})]},i.regionX=function(a){var b,c=this,d=c.config,e="y"===a.axis?c.y:c.y2;return b="y"===a.axis||"y2"===a.axis?d.axis_rotated&&"start"in a?e(a.start):0:d.axis_rotated?0:"start"in a?c.x(c.isTimeSeries()?c.parseDate(a.start):a.start):0},i.regionY=function(a){var b,c=this,d=c.config,e="y"===a.axis?c.y:c.y2;return b="y"===a.axis||"y2"===a.axis?d.axis_rotated?0:"end"in a?e(a.end):0:d.axis_rotated&&"start"in a?c.x(c.isTimeSeries()?c.parseDate(a.start):a.start):0},i.regionWidth=function(a){var b,c=this,d=c.config,e=c.regionX(a),f="y"===a.axis?c.y:c.y2;return b="y"===a.axis||"y2"===a.axis?d.axis_rotated&&"end"in a?f(a.end):c.width:d.axis_rotated?c.width:"end"in a?c.x(c.isTimeSeries()?c.parseDate(a.end):a.end):c.width,e>b?0:b-e},i.regionHeight=function(a){var b,c=this,d=c.config,e=this.regionY(a),f="y"===a.axis?c.y:c.y2;return b="y"===a.axis||"y2"===a.axis?d.axis_rotated?c.height:"start"in a?f(a.start):c.height:d.axis_rotated&&"end"in a?c.x(c.isTimeSeries()?c.parseDate(a.end):a.end):c.height,e>b?0:b-e},i.isRegionOnX=function(a){return!a.axis||"x"===a.axis},i.drag=function(a){var b,c,d,e,f,g,h,i,j=this,k=j.config,m=j.main,n=j.d3;j.hasArcType()||k.data_selection_enabled&&(k.zoom_enabled&&!j.zoom.altDomain||k.data_selection_multiple&&(b=j.dragStart[0],c=j.dragStart[1],d=a[0],e=a[1],f=Math.min(b,d),g=Math.max(b,d),h=k.data_selection_grouped?j.margin.top:Math.min(c,e),i=k.data_selection_grouped?j.height:Math.max(c,e),m.select("."+l.dragarea).attr("x",f).attr("y",h).attr("width",g-f).attr("height",i-h),m.selectAll("."+l.shapes).selectAll("."+l.shape).filter(function(a){return k.data_selection_isselectable(a)}).each(function(a,b){var c,d,e,k,m,o,p=n.select(this),q=p.classed(l.SELECTED),r=p.classed(l.INCLUDED),s=!1;if(p.classed(l.circle))c=1*p.attr("cx"),d=1*p.attr("cy"),m=j.togglePoint,s=c>f&&g>c&&d>h&&i>d;else{if(!p.classed(l.bar))return;o=z(this),c=o.x,d=o.y,e=o.width,k=o.height,m=j.togglePath,s=!(c>g||f>c+e||d>i||h>d+k)}s^r&&(p.classed(l.INCLUDED,!r),p.classed(l.SELECTED,!q),m.call(j,!q,p,a,b))})))},i.dragstart=function(a){var b=this,c=b.config;b.hasArcType()||c.data_selection_enabled&&(b.dragStart=a,b.main.select("."+l.chart).append("rect").attr("class",l.dragarea).style("opacity",.1),b.dragging=!0)},i.dragend=function(){var a=this,b=a.config;a.hasArcType()||b.data_selection_enabled&&(a.main.select("."+l.dragarea).transition().duration(100).style("opacity",0).remove(),a.main.selectAll("."+l.shape).classed(l.INCLUDED,!1),a.dragging=!1)},i.selectPoint=function(a,b,c){var d=this,e=d.config,f=(e.axis_rotated?d.circleY:d.circleX).bind(d),g=(e.axis_rotated?d.circleX:d.circleY).bind(d),h=d.pointSelectR.bind(d);e.data_onselected.call(d.api,b,a.node()),d.main.select("."+l.selectedCircles+d.getTargetSelectorSuffix(b.id)).selectAll("."+l.selectedCircle+"-"+c).data([b]).enter().append("circle").attr("class",function(){return d.generateClass(l.selectedCircle,c)}).attr("cx",f).attr("cy",g).attr("stroke",function(){return d.color(b)}).attr("r",function(a){return 1.4*d.pointSelectR(a)}).transition().duration(100).attr("r",h)},i.unselectPoint=function(a,b,c){var d=this;d.config.data_onunselected.call(d.api,b,a.node()),d.main.select("."+l.selectedCircles+d.getTargetSelectorSuffix(b.id)).selectAll("."+l.selectedCircle+"-"+c).transition().duration(100).attr("r",0).remove()},i.togglePoint=function(a,b,c,d){a?this.selectPoint(b,c,d):this.unselectPoint(b,c,d)},i.selectPath=function(a,b){var c=this;c.config.data_onselected.call(c,b,a.node()),c.config.interaction_brighten&&a.transition().duration(100).style("fill",function(){return c.d3.rgb(c.color(b)).brighter(.75)})},i.unselectPath=function(a,b){var c=this;c.config.data_onunselected.call(c,b,a.node()),c.config.interaction_brighten&&a.transition().duration(100).style("fill",function(){return c.color(b)})},i.togglePath=function(a,b,c,d){a?this.selectPath(b,c,d):this.unselectPath(b,c,d)},i.getToggle=function(a,b){var c,d=this;return"circle"===a.nodeName?c=d.isStepType(b)?function(){}:d.togglePoint:"path"===a.nodeName&&(c=d.togglePath),c},i.toggleShape=function(a,b,c){var d=this,e=d.d3,f=d.config,g=e.select(a),h=g.classed(l.SELECTED),i=d.getToggle(a,b).bind(d);f.data_selection_enabled&&f.data_selection_isselectable(b)&&(f.data_selection_multiple||d.main.selectAll("."+l.shapes+(f.data_selection_grouped?d.getTargetSelectorSuffix(b.id):"")).selectAll("."+l.shape).each(function(a,b){var c=e.select(this);c.classed(l.SELECTED)&&i(!1,c.classed(l.SELECTED,!1),a,b)}),g.classed(l.SELECTED,!h),i(!h,g,b,c))},i.initBrush=function(){var a=this,b=a.d3;a.brush=b.svg.brush().on("brush",function(){a.redrawForBrush()}),a.brush.update=function(){return a.context&&a.context.select("."+l.brush).call(this),this},a.brush.scale=function(b){return a.config.axis_rotated?this.y(b):this.x(b)}},i.initSubchart=function(){var a=this,b=a.config,c=a.context=a.svg.append("g").attr("transform",a.getTranslate("context")),d=b.subchart_show?"visible":"hidden";c.style("visibility",d),c.append("g").attr("clip-path",a.clipPathForSubchart).attr("class",l.chart),c.select("."+l.chart).append("g").attr("class",l.chartBars),c.select("."+l.chart).append("g").attr("class",l.chartLines),c.append("g").attr("clip-path",a.clipPath).attr("class",l.brush).call(a.brush),a.axes.subx=c.append("g").attr("class",l.axisX).attr("transform",a.getTranslate("subx")).attr("clip-path",b.axis_rotated?"":a.clipPathForXAxis).style("visibility",b.subchart_axis_x_show?d:"hidden")},i.updateTargetsForSubchart=function(a){var b,c,d,e,f=this,g=f.context,h=f.config,i=f.classChartBar.bind(f),j=f.classBars.bind(f),k=f.classChartLine.bind(f),m=f.classLines.bind(f),n=f.classAreas.bind(f);h.subchart_show&&(e=g.select("."+l.chartBars).selectAll("."+l.chartBar).data(a).attr("class",i),d=e.enter().append("g").style("opacity",0).attr("class",i),d.append("g").attr("class",j),c=g.select("."+l.chartLines).selectAll("."+l.chartLine).data(a).attr("class",k),b=c.enter().append("g").style("opacity",0).attr("class",k),b.append("g").attr("class",m),b.append("g").attr("class",n),g.selectAll("."+l.brush+" rect").attr(h.axis_rotated?"width":"height",h.axis_rotated?f.width2:f.height2))},i.updateBarForSubchart=function(a){var b=this;b.contextBar=b.context.selectAll("."+l.bars).selectAll("."+l.bar).data(b.barData.bind(b)),b.contextBar.enter().append("path").attr("class",b.classBar.bind(b)).style("stroke","none").style("fill",b.color),b.contextBar.style("opacity",b.initialOpacity.bind(b)),b.contextBar.exit().transition().duration(a).style("opacity",0).remove()},i.redrawBarForSubchart=function(a,b,c){(b?this.contextBar.transition(Math.random().toString()).duration(c):this.contextBar).attr("d",a).style("opacity",1)},i.updateLineForSubchart=function(a){var b=this;b.contextLine=b.context.selectAll("."+l.lines).selectAll("."+l.line).data(b.lineData.bind(b)),b.contextLine.enter().append("path").attr("class",b.classLine.bind(b)).style("stroke",b.color),b.contextLine.style("opacity",b.initialOpacity.bind(b)),b.contextLine.exit().transition().duration(a).style("opacity",0).remove()},i.redrawLineForSubchart=function(a,b,c){(b?this.contextLine.transition(Math.random().toString()).duration(c):this.contextLine).attr("d",a).style("opacity",1)},i.updateAreaForSubchart=function(a){var b=this,c=b.d3;b.contextArea=b.context.selectAll("."+l.areas).selectAll("."+l.area).data(b.lineData.bind(b)),b.contextArea.enter().append("path").attr("class",b.classArea.bind(b)).style("fill",b.color).style("opacity",function(){return b.orgAreaOpacity=+c.select(this).style("opacity"),0}),b.contextArea.style("opacity",0),b.contextArea.exit().transition().duration(a).style("opacity",0).remove()},i.redrawAreaForSubchart=function(a,b,c){(b?this.contextArea.transition(Math.random().toString()).duration(c):this.contextArea).attr("d",a).style("fill",this.color).style("opacity",this.orgAreaOpacity)},i.redrawSubchart=function(a,b,c,d,e,f,g){var h,i,j,k=this,l=k.d3,m=k.config;k.context.style("visibility",m.subchart_show?"visible":"hidden"),m.subchart_show&&(l.event&&"zoom"===l.event.type&&k.brush.extent(k.x.orgDomain()).update(),a&&(k.brush.empty()||k.brush.extent(k.x.orgDomain()).update(),h=k.generateDrawArea(e,!0),i=k.generateDrawBar(f,!0),j=k.generateDrawLine(g,!0),k.updateBarForSubchart(c),k.updateLineForSubchart(c),k.updateAreaForSubchart(c),k.redrawBarForSubchart(i,c,c),k.redrawLineForSubchart(j,c,c),k.redrawAreaForSubchart(h,c,c)))},i.redrawForBrush=function(){var a=this,b=a.x;a.redraw({withTransition:!1,withY:a.config.zoom_rescale,withSubchart:!1,withUpdateXDomain:!0,withDimension:!1}),a.config.subchart_onbrush.call(a.api,b.orgDomain())},i.transformContext=function(a,b){var c,d=this;b&&b.axisSubX?c=b.axisSubX:(c=d.context.select("."+l.axisX),a&&(c=c.transition())),d.context.attr("transform",d.getTranslate("context")),c.attr("transform",d.getTranslate("subx"))},i.getDefaultExtent=function(){var a=this,b=a.config,c=n(b.axis_x_extent)?b.axis_x_extent(a.getXDomain(a.data.targets)):b.axis_x_extent;return a.isTimeSeries()&&(c=[a.parseDate(c[0]),a.parseDate(c[1])]),c},i.initZoom=function(){var a,b=this,c=b.d3,d=b.config;b.zoom=c.behavior.zoom().on("zoomstart",function(){a=c.event.sourceEvent,b.zoom.altDomain=c.event.sourceEvent.altKey?b.x.orgDomain():null,d.zoom_onzoomstart.call(b.api,c.event.sourceEvent)}).on("zoom",function(){b.redrawForZoom.call(b)}).on("zoomend",function(){var e=c.event.sourceEvent;e&&a.clientX===e.clientX&&a.clientY===e.clientY||(b.redrawEventRect(),b.updateZoom(),d.zoom_onzoomend.call(b.api,b.x.orgDomain()))}),b.zoom.scale=function(a){return d.axis_rotated?this.y(a):this.x(a)},b.zoom.orgScaleExtent=function(){var a=d.zoom_extent?d.zoom_extent:[1,10];return[a[0],Math.max(b.getMaxDataCount()/a[1],a[1])]},b.zoom.updateScaleExtent=function(){var a=t(b.x.orgDomain())/t(b.getZoomDomain()),c=this.orgScaleExtent();return this.scaleExtent([c[0]*a,c[1]*a]),this}},i.getZoomDomain=function(){var a=this,b=a.config,c=a.d3,d=c.min([a.orgXDomain[0],b.zoom_x_min]),e=c.max([a.orgXDomain[1],b.zoom_x_max]);return[d,e]},i.updateZoom=function(){var a=this,b=a.config.zoom_enabled?a.zoom:function(){};a.main.select("."+l.zoomRect).call(b).on("dblclick.zoom",null),a.main.selectAll("."+l.eventRect).call(b).on("dblclick.zoom",null)},i.redrawForZoom=function(){var a=this,b=a.d3,c=a.config,d=a.zoom,e=a.x;if(c.zoom_enabled&&0!==a.filterTargetsToShow(a.data.targets).length){if("mousemove"===b.event.sourceEvent.type&&d.altDomain)return e.domain(d.altDomain),void d.scale(e).updateScaleExtent();a.isCategorized()&&e.orgDomain()[0]===a.orgXDomain[0]&&e.domain([a.orgXDomain[0]-1e-10,e.orgDomain()[1]]),a.redraw({withTransition:!1,withY:c.zoom_rescale,withSubchart:!1,withEventRect:!1,withDimension:!1}),"mousemove"===b.event.sourceEvent.type&&(a.cancelClick=!0),c.zoom_onzoom.call(a.api,e.orgDomain())}},i.generateColor=function(){var a=this,b=a.config,c=a.d3,d=b.data_colors,e=v(b.color_pattern)?b.color_pattern:c.scale.category10().range(),f=b.data_color,g=[];return function(a){var b,c=a.id||a.data&&a.data.id||a;return d[c]instanceof Function?b=d[c](a):d[c]?b=d[c]:(g.indexOf(c)<0&&g.push(c),b=e[g.indexOf(c)%e.length],d[c]=b),f instanceof Function?f(b,a):b}},i.generateLevelColor=function(){var a=this,b=a.config,c=b.color_pattern,d=b.color_threshold,e="value"===d.unit,f=d.values&&d.values.length?d.values:[],g=d.max||100;return v(b.color_threshold)?function(a){var b,d,h=c[c.length-1];for(b=0;b<f.length;b++)if(d=e?a:100*a/g,d<f[b]){h=c[b];break}return h}:null},i.getYFormat=function(a){var b=this,c=a&&!b.hasType("gauge")?b.defaultArcValueFormat:b.yFormat,d=a&&!b.hasType("gauge")?b.defaultArcValueFormat:b.y2Format;return function(a,e,f){var g="y2"===b.axis.getId(f)?d:c;return g.call(b,a,e)}},i.yFormat=function(a){var b=this,c=b.config,d=c.axis_y_tick_format?c.axis_y_tick_format:b.defaultValueFormat;return d(a)},i.y2Format=function(a){var b=this,c=b.config,d=c.axis_y2_tick_format?c.axis_y2_tick_format:b.defaultValueFormat;return d(a)},i.defaultValueFormat=function(a){return m(a)?+a:""},i.defaultArcValueFormat=function(a,b){return(100*b).toFixed(1)+"%"},i.dataLabelFormat=function(a){var b,c=this,d=c.config.data_labels,e=function(a){return m(a)?+a:""};return b="function"==typeof d.format?d.format:"object"==typeof d.format?d.format[a]?d.format[a]===!0?e:d.format[a]:function(){return""}:e},i.hasCaches=function(a){for(var b=0;b<a.length;b++)if(!(a[b]in this.cache))return!1;return!0},i.addCache=function(a,b){this.cache[a]=this.cloneTarget(b)},i.getCaches=function(a){var b,c=[];for(b=0;b<a.length;b++)a[b]in this.cache&&c.push(this.cloneTarget(this.cache[a[b]]));return c};var l=i.CLASS={target:"c3-target",chart:"c3-chart",chartLine:"c3-chart-line",chartLines:"c3-chart-lines",chartBar:"c3-chart-bar",chartBars:"c3-chart-bars",chartText:"c3-chart-text",chartTexts:"c3-chart-texts",chartArc:"c3-chart-arc",chartArcs:"c3-chart-arcs",chartArcsTitle:"c3-chart-arcs-title",chartArcsBackground:"c3-chart-arcs-background",chartArcsGaugeUnit:"c3-chart-arcs-gauge-unit",chartArcsGaugeMax:"c3-chart-arcs-gauge-max",chartArcsGaugeMin:"c3-chart-arcs-gauge-min",selectedCircle:"c3-selected-circle",selectedCircles:"c3-selected-circles",eventRect:"c3-event-rect",eventRects:"c3-event-rects",eventRectsSingle:"c3-event-rects-single",eventRectsMultiple:"c3-event-rects-multiple",zoomRect:"c3-zoom-rect",brush:"c3-brush",focused:"c3-focused",defocused:"c3-defocused",region:"c3-region",regions:"c3-regions",title:"c3-title",tooltipContainer:"c3-tooltip-container",tooltip:"c3-tooltip",tooltipName:"c3-tooltip-name",shape:"c3-shape",shapes:"c3-shapes",line:"c3-line",lines:"c3-lines",bar:"c3-bar",bars:"c3-bars",circle:"c3-circle",circles:"c3-circles",arc:"c3-arc",arcs:"c3-arcs",area:"c3-area",areas:"c3-areas",empty:"c3-empty",text:"c3-text",texts:"c3-texts",gaugeValue:"c3-gauge-value",grid:"c3-grid",gridLines:"c3-grid-lines",xgrid:"c3-xgrid",xgrids:"c3-xgrids",xgridLine:"c3-xgrid-line",xgridLines:"c3-xgrid-lines",xgridFocus:"c3-xgrid-focus",ygrid:"c3-ygrid",ygrids:"c3-ygrids",ygridLine:"c3-ygrid-line",ygridLines:"c3-ygrid-lines",axis:"c3-axis",axisX:"c3-axis-x",axisXLabel:"c3-axis-x-label",axisY:"c3-axis-y",axisYLabel:"c3-axis-y-label",axisY2:"c3-axis-y2",axisY2Label:"c3-axis-y2-label",legendBackground:"c3-legend-background",legendItem:"c3-legend-item",legendItemEvent:"c3-legend-item-event",legendItemTile:"c3-legend-item-tile",legendItemHidden:"c3-legend-item-hidden",legendItemFocused:"c3-legend-item-focused",dragarea:"c3-dragarea",EXPANDED:"_expanded_",SELECTED:"_selected_",INCLUDED:"_included_"};i.generateClass=function(a,b){return" "+a+" "+a+this.getTargetSelectorSuffix(b)},i.classText=function(a){return this.generateClass(l.text,a.index)},i.classTexts=function(a){return this.generateClass(l.texts,a.id)},i.classShape=function(a){return this.generateClass(l.shape,a.index)},i.classShapes=function(a){return this.generateClass(l.shapes,a.id)},i.classLine=function(a){return this.classShape(a)+this.generateClass(l.line,a.id)},i.classLines=function(a){return this.classShapes(a)+this.generateClass(l.lines,a.id)},i.classCircle=function(a){return this.classShape(a)+this.generateClass(l.circle,a.index)},i.classCircles=function(a){return this.classShapes(a)+this.generateClass(l.circles,a.id)},i.classBar=function(a){return this.classShape(a)+this.generateClass(l.bar,a.index)},i.classBars=function(a){return this.classShapes(a)+this.generateClass(l.bars,a.id)},i.classArc=function(a){return this.classShape(a.data)+this.generateClass(l.arc,a.data.id)},i.classArcs=function(a){return this.classShapes(a.data)+this.generateClass(l.arcs,a.data.id)},i.classArea=function(a){return this.classShape(a)+this.generateClass(l.area,a.id)},i.classAreas=function(a){return this.classShapes(a)+this.generateClass(l.areas,a.id)},i.classRegion=function(a,b){return this.generateClass(l.region,b)+" "+("class"in a?a["class"]:"")},i.classEvent=function(a){return this.generateClass(l.eventRect,a.index)},i.classTarget=function(a){var b=this,c=b.config.data_classes[a],d="";return c&&(d=" "+l.target+"-"+c),b.generateClass(l.target,a)+d},i.classFocus=function(a){return this.classFocused(a)+this.classDefocused(a)},i.classFocused=function(a){return" "+(this.focusedTargetIds.indexOf(a.id)>=0?l.focused:"")},i.classDefocused=function(a){return" "+(this.defocusedTargetIds.indexOf(a.id)>=0?l.defocused:"")},i.classChartText=function(a){return l.chartText+this.classTarget(a.id)},i.classChartLine=function(a){return l.chartLine+this.classTarget(a.id)},i.classChartBar=function(a){return l.chartBar+this.classTarget(a.id)},i.classChartArc=function(a){return l.chartArc+this.classTarget(a.data.id)},i.getTargetSelectorSuffix=function(a){return a||0===a?("-"+a).replace(/[\s?!@#$%^&*()_=+,.<>'":;\[\]\/|~`{}\\]/g,"-"):""},i.selectorTarget=function(a,b){return(b||"")+"."+l.target+this.getTargetSelectorSuffix(a)},i.selectorTargets=function(a,b){var c=this;return a=a||[],a.length?a.map(function(a){return c.selectorTarget(a,b)}):null},i.selectorLegend=function(a){return"."+l.legendItem+this.getTargetSelectorSuffix(a)},i.selectorLegends=function(a){var b=this;return a&&a.length?a.map(function(a){return b.selectorLegend(a)}):null};var m=i.isValue=function(a){return a||0===a},n=i.isFunction=function(a){return"function"==typeof a},o=i.isString=function(a){return"string"==typeof a},p=i.isUndefined=function(a){return"undefined"==typeof a},q=i.isDefined=function(a){return"undefined"!=typeof a},r=i.ceil10=function(a){return 10*Math.ceil(a/10)},s=i.asHalfPixel=function(a){return Math.ceil(a)+.5},t=i.diffDomain=function(a){return a[1]-a[0]},u=i.isEmpty=function(a){return"undefined"==typeof a||null===a||o(a)&&0===a.length||"object"==typeof a&&0===Object.keys(a).length},v=i.notEmpty=function(a){return!i.isEmpty(a)},w=i.getOption=function(a,b,c){return q(a[b])?a[b]:c},x=i.hasValue=function(a,b){var c=!1;return Object.keys(a).forEach(function(d){a[d]===b&&(c=!0)}),c},y=i.sanitise=function(a){return"string"==typeof a?a.replace(/</g,"&lt;").replace(/>/g,"&gt;"):a},z=i.getPathBox=function(a){var b=a.getBoundingClientRect(),c=[a.pathSegList.getItem(0),a.pathSegList.getItem(1)],d=c[0].x,e=Math.min(c[0].y,c[1].y);return{x:d,y:e,width:b.width,height:b.height}};h.focus=function(a){var b,c=this.internal;a=c.mapToTargetIds(a),b=c.svg.selectAll(c.selectorTargets(a.filter(c.isTargetToShow,c))),this.revert(),this.defocus(),b.classed(l.focused,!0).classed(l.defocused,!1),
2314 c.hasArcType()&&c.expandArc(a),c.toggleFocusLegend(a,!0),c.focusedTargetIds=a,c.defocusedTargetIds=c.defocusedTargetIds.filter(function(b){return a.indexOf(b)<0})},h.defocus=function(a){var b,c=this.internal;a=c.mapToTargetIds(a),b=c.svg.selectAll(c.selectorTargets(a.filter(c.isTargetToShow,c))),b.classed(l.focused,!1).classed(l.defocused,!0),c.hasArcType()&&c.unexpandArc(a),c.toggleFocusLegend(a,!1),c.focusedTargetIds=c.focusedTargetIds.filter(function(b){return a.indexOf(b)<0}),c.defocusedTargetIds=a},h.revert=function(a){var b,c=this.internal;a=c.mapToTargetIds(a),b=c.svg.selectAll(c.selectorTargets(a)),b.classed(l.focused,!1).classed(l.defocused,!1),c.hasArcType()&&c.unexpandArc(a),c.config.legend_show&&(c.showLegend(a.filter(c.isLegendToShow.bind(c))),c.legend.selectAll(c.selectorLegends(a)).filter(function(){return c.d3.select(this).classed(l.legendItemFocused)}).classed(l.legendItemFocused,!1)),c.focusedTargetIds=[],c.defocusedTargetIds=[]},h.show=function(a,b){var c,d=this.internal;a=d.mapToTargetIds(a),b=b||{},d.removeHiddenTargetIds(a),c=d.svg.selectAll(d.selectorTargets(a)),c.transition().style("opacity",1,"important").call(d.endall,function(){c.style("opacity",null).style("opacity",1)}),b.withLegend&&d.showLegend(a),d.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0,withLegend:!0})},h.hide=function(a,b){var c,d=this.internal;a=d.mapToTargetIds(a),b=b||{},d.addHiddenTargetIds(a),c=d.svg.selectAll(d.selectorTargets(a)),c.transition().style("opacity",0,"important").call(d.endall,function(){c.style("opacity",null).style("opacity",0)}),b.withLegend&&d.hideLegend(a),d.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0,withLegend:!0})},h.toggle=function(a,b){var c=this,d=this.internal;d.mapToTargetIds(a).forEach(function(a){d.isTargetToShow(a)?c.hide(a,b):c.show(a,b)})},h.zoom=function(a){var b=this.internal;return a&&(b.isTimeSeries()&&(a=a.map(function(a){return b.parseDate(a)})),b.brush.extent(a),b.redraw({withUpdateXDomain:!0,withY:b.config.zoom_rescale}),b.config.zoom_onzoom.call(this,b.x.orgDomain())),b.brush.extent()},h.zoom.enable=function(a){var b=this.internal;b.config.zoom_enabled=a,b.updateAndRedraw()},h.unzoom=function(){var a=this.internal;a.brush.clear().update(),a.redraw({withUpdateXDomain:!0})},h.zoom.max=function(a){var b=this.internal,c=b.config,d=b.d3;return 0===a||a?void(c.zoom_x_max=d.max([b.orgXDomain[1],a])):c.zoom_x_max},h.zoom.min=function(a){var b=this.internal,c=b.config,d=b.d3;return 0===a||a?void(c.zoom_x_min=d.min([b.orgXDomain[0],a])):c.zoom_x_min},h.zoom.range=function(a){return arguments.length?(q(a.max)&&this.domain.max(a.max),void(q(a.min)&&this.domain.min(a.min))):{max:this.domain.max(),min:this.domain.min()}},h.load=function(a){var b=this.internal,c=b.config;return a.xs&&b.addXs(a.xs),"names"in a&&h.data.names.bind(this)(a.names),"classes"in a&&Object.keys(a.classes).forEach(function(b){c.data_classes[b]=a.classes[b]}),"categories"in a&&b.isCategorized()&&(c.axis_x_categories=a.categories),"axes"in a&&Object.keys(a.axes).forEach(function(b){c.data_axes[b]=a.axes[b]}),"colors"in a&&Object.keys(a.colors).forEach(function(b){c.data_colors[b]=a.colors[b]}),"cacheIds"in a&&b.hasCaches(a.cacheIds)?void b.load(b.getCaches(a.cacheIds),a.done):void("unload"in a?b.unload(b.mapToTargetIds("boolean"==typeof a.unload&&a.unload?null:a.unload),function(){b.loadFromArgs(a)}):b.loadFromArgs(a))},h.unload=function(a){var b=this.internal;a=a||{},a instanceof Array?a={ids:a}:"string"==typeof a&&(a={ids:[a]}),b.unload(b.mapToTargetIds(a.ids),function(){b.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0,withLegend:!0}),a.done&&a.done()})},h.flow=function(a){var b,c,d,e,f,g,h,i,j=this.internal,k=[],l=j.getMaxDataCount(),n=0,o=0;if(a.json)c=j.convertJsonToData(a.json,a.keys);else if(a.rows)c=j.convertRowsToData(a.rows);else{if(!a.columns)return;c=j.convertColumnsToData(a.columns)}b=j.convertDataToTargets(c,!0),j.data.targets.forEach(function(a){var c,d,e=!1;for(c=0;c<b.length;c++)if(a.id===b[c].id){for(e=!0,a.values[a.values.length-1]&&(o=a.values[a.values.length-1].index+1),n=b[c].values.length,d=0;n>d;d++)b[c].values[d].index=o+d,j.isTimeSeries()||(b[c].values[d].x=o+d);a.values=a.values.concat(b[c].values),b.splice(c,1);break}e||k.push(a.id)}),j.data.targets.forEach(function(a){var b,c;for(b=0;b<k.length;b++)if(a.id===k[b])for(o=a.values[a.values.length-1].index+1,c=0;n>c;c++)a.values.push({id:a.id,index:o+c,x:j.isTimeSeries()?j.getOtherTargetX(o+c):o+c,value:null})}),j.data.targets.length&&b.forEach(function(a){var b,c=[];for(b=j.data.targets[0].values[0].index;o>b;b++)c.push({id:a.id,index:b,x:j.isTimeSeries()?j.getOtherTargetX(b):b,value:null});a.values.forEach(function(a){a.index+=o,j.isTimeSeries()||(a.x+=o)}),a.values=c.concat(a.values)}),j.data.targets=j.data.targets.concat(b),d=j.getMaxDataCount(),f=j.data.targets[0],g=f.values[0],q(a.to)?(n=0,i=j.isTimeSeries()?j.parseDate(a.to):a.to,f.values.forEach(function(a){a.x<i&&n++})):q(a.length)&&(n=a.length),l?1===l&&j.isTimeSeries()&&(h=(f.values[f.values.length-1].x-g.x)/2,e=[new Date(+g.x-h),new Date(+g.x+h)],j.updateXDomain(null,!0,!0,!1,e)):(h=j.isTimeSeries()?f.values.length>1?f.values[f.values.length-1].x-g.x:g.x-j.getXDomain(j.data.targets)[0]:1,e=[g.x-h,g.x],j.updateXDomain(null,!0,!0,!1,e)),j.updateTargets(j.data.targets),j.redraw({flow:{index:g.index,length:n,duration:m(a.duration)?a.duration:j.config.transition_duration,done:a.done,orgDataCount:l},withLegend:!0,withTransition:l>1,withTrimXDomain:!1,withUpdateXAxis:!0})},i.generateFlow=function(a){var b=this,c=b.config,d=b.d3;return function(){var e,f,g,h=a.targets,i=a.flow,j=a.drawBar,k=a.drawLine,m=a.drawArea,n=a.cx,o=a.cy,p=a.xv,q=a.xForText,r=a.yForText,s=a.duration,u=1,v=i.index,w=i.length,x=b.getValueOnIndex(b.data.targets[0].values,v),y=b.getValueOnIndex(b.data.targets[0].values,v+w),z=b.x.domain(),A=i.duration||s,B=i.done||function(){},C=b.generateWait(),D=b.xgrid||d.selectAll([]),E=b.xgridLines||d.selectAll([]),F=b.mainRegion||d.selectAll([]),G=b.mainText||d.selectAll([]),H=b.mainBar||d.selectAll([]),I=b.mainLine||d.selectAll([]),J=b.mainArea||d.selectAll([]),K=b.mainCircle||d.selectAll([]);b.flowing=!0,b.data.targets.forEach(function(a){a.values.splice(0,w)}),g=b.updateXDomain(h,!0,!0),b.updateXGrid&&b.updateXGrid(!0),i.orgDataCount?e=1===i.orgDataCount||(x&&x.x)===(y&&y.x)?b.x(z[0])-b.x(g[0]):b.isTimeSeries()?b.x(z[0])-b.x(g[0]):b.x(x.x)-b.x(y.x):1!==b.data.targets[0].values.length?e=b.x(z[0])-b.x(g[0]):b.isTimeSeries()?(x=b.getValueOnIndex(b.data.targets[0].values,0),y=b.getValueOnIndex(b.data.targets[0].values,b.data.targets[0].values.length-1),e=b.x(x.x)-b.x(y.x)):e=t(g)/2,u=t(z)/t(g),f="translate("+e+",0) scale("+u+",1)",b.hideXGridFocus(),d.transition().ease("linear").duration(A).each(function(){C.add(b.axes.x.transition().call(b.xAxis)),C.add(H.transition().attr("transform",f)),C.add(I.transition().attr("transform",f)),C.add(J.transition().attr("transform",f)),C.add(K.transition().attr("transform",f)),C.add(G.transition().attr("transform",f)),C.add(F.filter(b.isRegionOnX).transition().attr("transform",f)),C.add(D.transition().attr("transform",f)),C.add(E.transition().attr("transform",f))}).call(C,function(){var a,d=[],e=[],f=[];if(w){for(a=0;w>a;a++)d.push("."+l.shape+"-"+(v+a)),e.push("."+l.text+"-"+(v+a)),f.push("."+l.eventRect+"-"+(v+a));b.svg.selectAll("."+l.shapes).selectAll(d).remove(),b.svg.selectAll("."+l.texts).selectAll(e).remove(),b.svg.selectAll("."+l.eventRects).selectAll(f).remove(),b.svg.select("."+l.xgrid).remove()}D.attr("transform",null).attr(b.xgridAttr),E.attr("transform",null),E.select("line").attr("x1",c.axis_rotated?0:p).attr("x2",c.axis_rotated?b.width:p),E.select("text").attr("x",c.axis_rotated?b.width:0).attr("y",p),H.attr("transform",null).attr("d",j),I.attr("transform",null).attr("d",k),J.attr("transform",null).attr("d",m),K.attr("transform",null).attr("cx",n).attr("cy",o),G.attr("transform",null).attr("x",q).attr("y",r).style("fill-opacity",b.opacityForText.bind(b)),F.attr("transform",null),F.select("rect").filter(b.isRegionOnX).attr("x",b.regionX.bind(b)).attr("width",b.regionWidth.bind(b)),c.interaction_enabled&&b.redrawEventRect(),B(),b.flowing=!1})}},h.selected=function(a){var b=this.internal,c=b.d3;return c.merge(b.main.selectAll("."+l.shapes+b.getTargetSelectorSuffix(a)).selectAll("."+l.shape).filter(function(){return c.select(this).classed(l.SELECTED)}).map(function(a){return a.map(function(a){var b=a.__data__;return b.data?b.data:b})}))},h.select=function(a,b,c){var d=this.internal,e=d.d3,f=d.config;f.data_selection_enabled&&d.main.selectAll("."+l.shapes).selectAll("."+l.shape).each(function(g,h){var i=e.select(this),j=g.data?g.data.id:g.id,k=d.getToggle(this,g).bind(d),m=f.data_selection_grouped||!a||a.indexOf(j)>=0,n=!b||b.indexOf(h)>=0,o=i.classed(l.SELECTED);i.classed(l.line)||i.classed(l.area)||(m&&n?f.data_selection_isselectable(g)&&!o&&k(!0,i.classed(l.SELECTED,!0),g,h):q(c)&&c&&o&&k(!1,i.classed(l.SELECTED,!1),g,h))})},h.unselect=function(a,b){var c=this.internal,d=c.d3,e=c.config;e.data_selection_enabled&&c.main.selectAll("."+l.shapes).selectAll("."+l.shape).each(function(f,g){var h=d.select(this),i=f.data?f.data.id:f.id,j=c.getToggle(this,f).bind(c),k=e.data_selection_grouped||!a||a.indexOf(i)>=0,m=!b||b.indexOf(g)>=0,n=h.classed(l.SELECTED);h.classed(l.line)||h.classed(l.area)||k&&m&&e.data_selection_isselectable(f)&&n&&j(!1,h.classed(l.SELECTED,!1),f,g)})},h.transform=function(a,b){var c=this.internal,d=["pie","donut"].indexOf(a)>=0?{withTransform:!0}:null;c.transformTo(b,a,d)},i.transformTo=function(a,b,c){var d=this,e=!d.hasArcType(),f=c||{withTransitionForAxis:e};f.withTransitionForTransform=!1,d.transiting=!1,d.setTargetType(a,b),d.updateTargets(d.data.targets),d.updateAndRedraw(f)},h.groups=function(a){var b=this.internal,c=b.config;return p(a)?c.data_groups:(c.data_groups=a,b.redraw(),c.data_groups)},h.xgrids=function(a){var b=this.internal,c=b.config;return a?(c.grid_x_lines=a,b.redrawWithoutRescale(),c.grid_x_lines):c.grid_x_lines},h.xgrids.add=function(a){var b=this.internal;return this.xgrids(b.config.grid_x_lines.concat(a?a:[]))},h.xgrids.remove=function(a){var b=this.internal;b.removeGridLines(a,!0)},h.ygrids=function(a){var b=this.internal,c=b.config;return a?(c.grid_y_lines=a,b.redrawWithoutRescale(),c.grid_y_lines):c.grid_y_lines},h.ygrids.add=function(a){var b=this.internal;return this.ygrids(b.config.grid_y_lines.concat(a?a:[]))},h.ygrids.remove=function(a){var b=this.internal;b.removeGridLines(a,!1)},h.regions=function(a){var b=this.internal,c=b.config;return a?(c.regions=a,b.redrawWithoutRescale(),c.regions):c.regions},h.regions.add=function(a){var b=this.internal,c=b.config;return a?(c.regions=c.regions.concat(a),b.redrawWithoutRescale(),c.regions):c.regions},h.regions.remove=function(a){var b,c,d,e=this.internal,f=e.config;return a=a||{},b=e.getOption(a,"duration",f.transition_duration),c=e.getOption(a,"classes",[l.region]),d=e.main.select("."+l.regions).selectAll(c.map(function(a){return"."+a})),(b?d.transition().duration(b):d).style("opacity",0).remove(),f.regions=f.regions.filter(function(a){var b=!1;return a["class"]?(a["class"].split(" ").forEach(function(a){c.indexOf(a)>=0&&(b=!0)}),!b):!0}),f.regions},h.data=function(a){var b=this.internal.data.targets;return"undefined"==typeof a?b:b.filter(function(b){return[].concat(a).indexOf(b.id)>=0})},h.data.shown=function(a){return this.internal.filterTargetsToShow(this.data(a))},h.data.values=function(a){var b,c=null;return a&&(b=this.data(a),c=b[0]?b[0].values.map(function(a){return a.value}):null),c},h.data.names=function(a){return this.internal.clearLegendItemTextBoxCache(),this.internal.updateDataAttributes("names",a)},h.data.colors=function(a){return this.internal.updateDataAttributes("colors",a)},h.data.axes=function(a){return this.internal.updateDataAttributes("axes",a)},h.category=function(a,b){var c=this.internal,d=c.config;return arguments.length>1&&(d.axis_x_categories[a]=b,c.redraw()),d.axis_x_categories[a]},h.categories=function(a){var b=this.internal,c=b.config;return arguments.length?(c.axis_x_categories=a,b.redraw(),c.axis_x_categories):c.axis_x_categories},h.color=function(a){var b=this.internal;return b.color(a)},h.x=function(a){var b=this.internal;return arguments.length&&(b.updateTargetX(b.data.targets,a),b.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0})),b.data.xs},h.xs=function(a){var b=this.internal;return arguments.length&&(b.updateTargetXs(b.data.targets,a),b.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0})),b.data.xs},h.axis=function(){},h.axis.labels=function(a){var b=this.internal;arguments.length&&(Object.keys(a).forEach(function(c){b.axis.setLabelText(c,a[c])}),b.axis.updateLabels())},h.axis.max=function(a){var b=this.internal,c=b.config;return arguments.length?("object"==typeof a?(m(a.x)&&(c.axis_x_max=a.x),m(a.y)&&(c.axis_y_max=a.y),m(a.y2)&&(c.axis_y2_max=a.y2)):c.axis_y_max=c.axis_y2_max=a,void b.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0})):{x:c.axis_x_max,y:c.axis_y_max,y2:c.axis_y2_max}},h.axis.min=function(a){var b=this.internal,c=b.config;return arguments.length?("object"==typeof a?(m(a.x)&&(c.axis_x_min=a.x),m(a.y)&&(c.axis_y_min=a.y),m(a.y2)&&(c.axis_y2_min=a.y2)):c.axis_y_min=c.axis_y2_min=a,void b.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0})):{x:c.axis_x_min,y:c.axis_y_min,y2:c.axis_y2_min}},h.axis.range=function(a){return arguments.length?(q(a.max)&&this.axis.max(a.max),void(q(a.min)&&this.axis.min(a.min))):{max:this.axis.max(),min:this.axis.min()}},h.legend=function(){},h.legend.show=function(a){var b=this.internal;b.showLegend(b.mapToTargetIds(a)),b.updateAndRedraw({withLegend:!0})},h.legend.hide=function(a){var b=this.internal;b.hideLegend(b.mapToTargetIds(a)),b.updateAndRedraw({withLegend:!0})},h.resize=function(a){var b=this.internal,c=b.config;c.size_width=a?a.width:null,c.size_height=a?a.height:null,this.flush()},h.flush=function(){var a=this.internal;a.updateAndRedraw({withLegend:!0,withTransition:!1,withTransitionForTransform:!1})},h.destroy=function(){var b=this.internal;if(a.clearInterval(b.intervalForObserveInserted),void 0!==b.resizeTimeout&&a.clearTimeout(b.resizeTimeout),a.detachEvent)a.detachEvent("onresize",b.resizeFunction);else if(a.removeEventListener)a.removeEventListener("resize",b.resizeFunction);else{var c=a.onresize;c&&c.add&&c.remove&&c.remove(b.resizeFunction)}return b.selectChart.classed("c3",!1).html(""),Object.keys(b).forEach(function(a){b[a]=null}),null},h.tooltip=function(){},h.tooltip.show=function(a){var b,c,d=this.internal;a.mouse&&(c=a.mouse),a.data?d.isMultipleX()?(c=[d.x(a.data.x),d.getYScale(a.data.id)(a.data.value)],b=null):b=m(a.data.index)?a.data.index:d.getIndexByX(a.data.x):"undefined"!=typeof a.x?b=d.getIndexByX(a.x):"undefined"!=typeof a.index&&(b=a.index),d.dispatchEvent("mouseover",b,c),d.dispatchEvent("mousemove",b,c),d.config.tooltip_onshow.call(d,a.data)},h.tooltip.hide=function(){this.internal.dispatchEvent("mouseout",0),this.internal.config.tooltip_onhide.call(this)};var A;i.isSafari=function(){var b=a.navigator.userAgent;return b.indexOf("Safari")>=0&&b.indexOf("Chrome")<0},i.isChrome=function(){var b=a.navigator.userAgent;return b.indexOf("Chrome")>=0},Function.prototype.bind||(Function.prototype.bind=function(a){if("function"!=typeof this)throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable");var b=Array.prototype.slice.call(arguments,1),c=this,d=function(){},e=function(){return c.apply(this instanceof d?this:a,b.concat(Array.prototype.slice.call(arguments)))};return d.prototype=this.prototype,e.prototype=new d,e}),function(){"SVGPathSeg"in a||(a.SVGPathSeg=function(a,b,c){this.pathSegType=a,this.pathSegTypeAsLetter=b,this._owningPathSegList=c},SVGPathSeg.PATHSEG_UNKNOWN=0,SVGPathSeg.PATHSEG_CLOSEPATH=1,SVGPathSeg.PATHSEG_MOVETO_ABS=2,SVGPathSeg.PATHSEG_MOVETO_REL=3,SVGPathSeg.PATHSEG_LINETO_ABS=4,SVGPathSeg.PATHSEG_LINETO_REL=5,SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS=6,SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL=7,SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS=8,SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL=9,SVGPathSeg.PATHSEG_ARC_ABS=10,SVGPathSeg.PATHSEG_ARC_REL=11,SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS=12,SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL=13,SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS=14,SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL=15,SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS=16,SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL=17,SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS=18,SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL=19,SVGPathSeg.prototype._segmentChanged=function(){this._owningPathSegList&&this._owningPathSegList.segmentChanged(this)},a.SVGPathSegClosePath=function(a){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_CLOSEPATH,"z",a)},SVGPathSegClosePath.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegClosePath.prototype.toString=function(){return"[object SVGPathSegClosePath]"},SVGPathSegClosePath.prototype._asPathString=function(){return this.pathSegTypeAsLetter},SVGPathSegClosePath.prototype.clone=function(){return new SVGPathSegClosePath(void 0)},a.SVGPathSegMovetoAbs=function(a,b,c){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_MOVETO_ABS,"M",a),this._x=b,this._y=c},SVGPathSegMovetoAbs.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegMovetoAbs.prototype.toString=function(){return"[object SVGPathSegMovetoAbs]"},SVGPathSegMovetoAbs.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x+" "+this._y},SVGPathSegMovetoAbs.prototype.clone=function(){return new SVGPathSegMovetoAbs(void 0,this._x,this._y)},Object.defineProperty(SVGPathSegMovetoAbs.prototype,"x",{get:function(){return this._x},set:function(a){this._x=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegMovetoAbs.prototype,"y",{get:function(){return this._y},set:function(a){this._y=a,this._segmentChanged()},enumerable:!0}),a.SVGPathSegMovetoRel=function(a,b,c){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_MOVETO_REL,"m",a),this._x=b,this._y=c},SVGPathSegMovetoRel.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegMovetoRel.prototype.toString=function(){return"[object SVGPathSegMovetoRel]"},SVGPathSegMovetoRel.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x+" "+this._y},SVGPathSegMovetoRel.prototype.clone=function(){return new SVGPathSegMovetoRel(void 0,this._x,this._y)},Object.defineProperty(SVGPathSegMovetoRel.prototype,"x",{get:function(){return this._x},set:function(a){this._x=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegMovetoRel.prototype,"y",{get:function(){return this._y},set:function(a){this._y=a,this._segmentChanged()},enumerable:!0}),a.SVGPathSegLinetoAbs=function(a,b,c){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_LINETO_ABS,"L",a),this._x=b,this._y=c},SVGPathSegLinetoAbs.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegLinetoAbs.prototype.toString=function(){return"[object SVGPathSegLinetoAbs]"},SVGPathSegLinetoAbs.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x+" "+this._y},SVGPathSegLinetoAbs.prototype.clone=function(){return new SVGPathSegLinetoAbs(void 0,this._x,this._y)},Object.defineProperty(SVGPathSegLinetoAbs.prototype,"x",{get:function(){return this._x},set:function(a){this._x=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegLinetoAbs.prototype,"y",{get:function(){return this._y},set:function(a){this._y=a,this._segmentChanged()},enumerable:!0}),a.SVGPathSegLinetoRel=function(a,b,c){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_LINETO_REL,"l",a),this._x=b,this._y=c},SVGPathSegLinetoRel.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegLinetoRel.prototype.toString=function(){return"[object SVGPathSegLinetoRel]"},SVGPathSegLinetoRel.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x+" "+this._y},SVGPathSegLinetoRel.prototype.clone=function(){return new SVGPathSegLinetoRel(void 0,this._x,this._y)},Object.defineProperty(SVGPathSegLinetoRel.prototype,"x",{get:function(){return this._x},set:function(a){this._x=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegLinetoRel.prototype,"y",{get:function(){return this._y},set:function(a){this._y=a,this._segmentChanged()},enumerable:!0}),a.SVGPathSegCurvetoCubicAbs=function(a,b,c,d,e,f,g){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS,"C",a),this._x=b,this._y=c,this._x1=d,this._y1=e,this._x2=f,this._y2=g},SVGPathSegCurvetoCubicAbs.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegCurvetoCubicAbs.prototype.toString=function(){return"[object SVGPathSegCurvetoCubicAbs]"},SVGPathSegCurvetoCubicAbs.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x1+" "+this._y1+" "+this._x2+" "+this._y2+" "+this._x+" "+this._y},SVGPathSegCurvetoCubicAbs.prototype.clone=function(){return new SVGPathSegCurvetoCubicAbs(void 0,this._x,this._y,this._x1,this._y1,this._x2,this._y2)},Object.defineProperty(SVGPathSegCurvetoCubicAbs.prototype,"x",{get:function(){return this._x},set:function(a){this._x=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicAbs.prototype,"y",{get:function(){return this._y},set:function(a){this._y=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicAbs.prototype,"x1",{get:function(){return this._x1},set:function(a){this._x1=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicAbs.prototype,"y1",{get:function(){return this._y1},set:function(a){this._y1=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicAbs.prototype,"x2",{get:function(){return this._x2},set:function(a){this._x2=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicAbs.prototype,"y2",{get:function(){return this._y2},set:function(a){this._y2=a,this._segmentChanged()},enumerable:!0}),a.SVGPathSegCurvetoCubicRel=function(a,b,c,d,e,f,g){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL,"c",a),this._x=b,this._y=c,this._x1=d,this._y1=e,this._x2=f,this._y2=g},SVGPathSegCurvetoCubicRel.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegCurvetoCubicRel.prototype.toString=function(){return"[object SVGPathSegCurvetoCubicRel]"},SVGPathSegCurvetoCubicRel.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x1+" "+this._y1+" "+this._x2+" "+this._y2+" "+this._x+" "+this._y},SVGPathSegCurvetoCubicRel.prototype.clone=function(){return new SVGPathSegCurvetoCubicRel(void 0,this._x,this._y,this._x1,this._y1,this._x2,this._y2)},Object.defineProperty(SVGPathSegCurvetoCubicRel.prototype,"x",{get:function(){return this._x},set:function(a){this._x=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicRel.prototype,"y",{get:function(){return this._y},set:function(a){this._y=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicRel.prototype,"x1",{get:function(){return this._x1},set:function(a){this._x1=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicRel.prototype,"y1",{get:function(){return this._y1},set:function(a){this._y1=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicRel.prototype,"x2",{get:function(){return this._x2},set:function(a){this._x2=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicRel.prototype,"y2",{get:function(){return this._y2},set:function(a){this._y2=a,this._segmentChanged()},enumerable:!0}),a.SVGPathSegCurvetoQuadraticAbs=function(a,b,c,d,e){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS,"Q",a),this._x=b,this._y=c,this._x1=d,this._y1=e},SVGPathSegCurvetoQuadraticAbs.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegCurvetoQuadraticAbs.prototype.toString=function(){return"[object SVGPathSegCurvetoQuadraticAbs]"},SVGPathSegCurvetoQuadraticAbs.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x1+" "+this._y1+" "+this._x+" "+this._y},SVGPathSegCurvetoQuadraticAbs.prototype.clone=function(){return new SVGPathSegCurvetoQuadraticAbs(void 0,this._x,this._y,this._x1,this._y1)},Object.defineProperty(SVGPathSegCurvetoQuadraticAbs.prototype,"x",{get:function(){return this._x},set:function(a){this._x=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoQuadraticAbs.prototype,"y",{get:function(){return this._y},set:function(a){this._y=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoQuadraticAbs.prototype,"x1",{get:function(){return this._x1},set:function(a){this._x1=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoQuadraticAbs.prototype,"y1",{get:function(){return this._y1},set:function(a){this._y1=a,this._segmentChanged()},enumerable:!0}),a.SVGPathSegCurvetoQuadraticRel=function(a,b,c,d,e){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL,"q",a),this._x=b,this._y=c,this._x1=d,this._y1=e},SVGPathSegCurvetoQuadraticRel.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegCurvetoQuadraticRel.prototype.toString=function(){return"[object SVGPathSegCurvetoQuadraticRel]"},SVGPathSegCurvetoQuadraticRel.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x1+" "+this._y1+" "+this._x+" "+this._y},SVGPathSegCurvetoQuadraticRel.prototype.clone=function(){return new SVGPathSegCurvetoQuadraticRel(void 0,this._x,this._y,this._x1,this._y1)},Object.defineProperty(SVGPathSegCurvetoQuadraticRel.prototype,"x",{get:function(){return this._x},set:function(a){this._x=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoQuadraticRel.prototype,"y",{get:function(){return this._y},set:function(a){this._y=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoQuadraticRel.prototype,"x1",{get:function(){return this._x1},set:function(a){this._x1=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoQuadraticRel.prototype,"y1",{get:function(){return this._y1},set:function(a){this._y1=a,this._segmentChanged()},enumerable:!0}),a.SVGPathSegArcAbs=function(a,b,c,d,e,f,g,h){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_ARC_ABS,"A",a),this._x=b,this._y=c,this._r1=d,this._r2=e,this._angle=f,this._largeArcFlag=g,this._sweepFlag=h},SVGPathSegArcAbs.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegArcAbs.prototype.toString=function(){return"[object SVGPathSegArcAbs]"},SVGPathSegArcAbs.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._r1+" "+this._r2+" "+this._angle+" "+(this._largeArcFlag?"1":"0")+" "+(this._sweepFlag?"1":"0")+" "+this._x+" "+this._y},SVGPathSegArcAbs.prototype.clone=function(){return new SVGPathSegArcAbs(void 0,this._x,this._y,this._r1,this._r2,this._angle,this._largeArcFlag,this._sweepFlag)},Object.defineProperty(SVGPathSegArcAbs.prototype,"x",{get:function(){return this._x},set:function(a){this._x=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegArcAbs.prototype,"y",{get:function(){return this._y},set:function(a){this._y=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegArcAbs.prototype,"r1",{get:function(){return this._r1},set:function(a){this._r1=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegArcAbs.prototype,"r2",{get:function(){return this._r2},set:function(a){this._r2=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegArcAbs.prototype,"angle",{get:function(){return this._angle},set:function(a){this._angle=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegArcAbs.prototype,"largeArcFlag",{get:function(){return this._largeArcFlag},set:function(a){this._largeArcFlag=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegArcAbs.prototype,"sweepFlag",{get:function(){return this._sweepFlag},set:function(a){this._sweepFlag=a,this._segmentChanged()},enumerable:!0}),a.SVGPathSegArcRel=function(a,b,c,d,e,f,g,h){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_ARC_REL,"a",a),this._x=b,this._y=c,this._r1=d,this._r2=e,this._angle=f,this._largeArcFlag=g,this._sweepFlag=h},SVGPathSegArcRel.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegArcRel.prototype.toString=function(){return"[object SVGPathSegArcRel]"},SVGPathSegArcRel.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._r1+" "+this._r2+" "+this._angle+" "+(this._largeArcFlag?"1":"0")+" "+(this._sweepFlag?"1":"0")+" "+this._x+" "+this._y},SVGPathSegArcRel.prototype.clone=function(){return new SVGPathSegArcRel(void 0,this._x,this._y,this._r1,this._r2,this._angle,this._largeArcFlag,this._sweepFlag)},Object.defineProperty(SVGPathSegArcRel.prototype,"x",{get:function(){return this._x},set:function(a){this._x=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegArcRel.prototype,"y",{get:function(){return this._y},set:function(a){this._y=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegArcRel.prototype,"r1",{get:function(){return this._r1},set:function(a){this._r1=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegArcRel.prototype,"r2",{get:function(){return this._r2},set:function(a){this._r2=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegArcRel.prototype,"angle",{get:function(){return this._angle},set:function(a){this._angle=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegArcRel.prototype,"largeArcFlag",{get:function(){return this._largeArcFlag},set:function(a){this._largeArcFlag=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegArcRel.prototype,"sweepFlag",{get:function(){return this._sweepFlag},set:function(a){this._sweepFlag=a,this._segmentChanged()},enumerable:!0}),a.SVGPathSegLinetoHorizontalAbs=function(a,b){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS,"H",a),this._x=b},SVGPathSegLinetoHorizontalAbs.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegLinetoHorizontalAbs.prototype.toString=function(){return"[object SVGPathSegLinetoHorizontalAbs]"},SVGPathSegLinetoHorizontalAbs.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x},SVGPathSegLinetoHorizontalAbs.prototype.clone=function(){return new SVGPathSegLinetoHorizontalAbs(void 0,this._x)},Object.defineProperty(SVGPathSegLinetoHorizontalAbs.prototype,"x",{get:function(){return this._x},set:function(a){this._x=a,this._segmentChanged()},enumerable:!0}),a.SVGPathSegLinetoHorizontalRel=function(a,b){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL,"h",a),this._x=b},SVGPathSegLinetoHorizontalRel.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegLinetoHorizontalRel.prototype.toString=function(){return"[object SVGPathSegLinetoHorizontalRel]"},SVGPathSegLinetoHorizontalRel.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x},SVGPathSegLinetoHorizontalRel.prototype.clone=function(){return new SVGPathSegLinetoHorizontalRel(void 0,this._x)},Object.defineProperty(SVGPathSegLinetoHorizontalRel.prototype,"x",{get:function(){return this._x},set:function(a){this._x=a,this._segmentChanged()},enumerable:!0}),a.SVGPathSegLinetoVerticalAbs=function(a,b){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS,"V",a),this._y=b},SVGPathSegLinetoVerticalAbs.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegLinetoVerticalAbs.prototype.toString=function(){return"[object SVGPathSegLinetoVerticalAbs]"},SVGPathSegLinetoVerticalAbs.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._y},SVGPathSegLinetoVerticalAbs.prototype.clone=function(){return new SVGPathSegLinetoVerticalAbs(void 0,this._y)},Object.defineProperty(SVGPathSegLinetoVerticalAbs.prototype,"y",{get:function(){return this._y},set:function(a){this._y=a,this._segmentChanged()},enumerable:!0}),a.SVGPathSegLinetoVerticalRel=function(a,b){
2314 c.hasArcType()&&c.expandArc(a),c.toggleFocusLegend(a,!0),c.focusedTargetIds=a,c.defocusedTargetIds=c.defocusedTargetIds.filter(function(b){return a.indexOf(b)<0})},h.defocus=function(a){var b,c=this.internal;a=c.mapToTargetIds(a),b=c.svg.selectAll(c.selectorTargets(a.filter(c.isTargetToShow,c))),b.classed(l.focused,!1).classed(l.defocused,!0),c.hasArcType()&&c.unexpandArc(a),c.toggleFocusLegend(a,!1),c.focusedTargetIds=c.focusedTargetIds.filter(function(b){return a.indexOf(b)<0}),c.defocusedTargetIds=a},h.revert=function(a){var b,c=this.internal;a=c.mapToTargetIds(a),b=c.svg.selectAll(c.selectorTargets(a)),b.classed(l.focused,!1).classed(l.defocused,!1),c.hasArcType()&&c.unexpandArc(a),c.config.legend_show&&(c.showLegend(a.filter(c.isLegendToShow.bind(c))),c.legend.selectAll(c.selectorLegends(a)).filter(function(){return c.d3.select(this).classed(l.legendItemFocused)}).classed(l.legendItemFocused,!1)),c.focusedTargetIds=[],c.defocusedTargetIds=[]},h.show=function(a,b){var c,d=this.internal;a=d.mapToTargetIds(a),b=b||{},d.removeHiddenTargetIds(a),c=d.svg.selectAll(d.selectorTargets(a)),c.transition().style("opacity",1,"important").call(d.endall,function(){c.style("opacity",null).style("opacity",1)}),b.withLegend&&d.showLegend(a),d.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0,withLegend:!0})},h.hide=function(a,b){var c,d=this.internal;a=d.mapToTargetIds(a),b=b||{},d.addHiddenTargetIds(a),c=d.svg.selectAll(d.selectorTargets(a)),c.transition().style("opacity",0,"important").call(d.endall,function(){c.style("opacity",null).style("opacity",0)}),b.withLegend&&d.hideLegend(a),d.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0,withLegend:!0})},h.toggle=function(a,b){var c=this,d=this.internal;d.mapToTargetIds(a).forEach(function(a){d.isTargetToShow(a)?c.hide(a,b):c.show(a,b)})},h.zoom=function(a){var b=this.internal;return a&&(b.isTimeSeries()&&(a=a.map(function(a){return b.parseDate(a)})),b.brush.extent(a),b.redraw({withUpdateXDomain:!0,withY:b.config.zoom_rescale}),b.config.zoom_onzoom.call(this,b.x.orgDomain())),b.brush.extent()},h.zoom.enable=function(a){var b=this.internal;b.config.zoom_enabled=a,b.updateAndRedraw()},h.unzoom=function(){var a=this.internal;a.brush.clear().update(),a.redraw({withUpdateXDomain:!0})},h.zoom.max=function(a){var b=this.internal,c=b.config,d=b.d3;return 0===a||a?void(c.zoom_x_max=d.max([b.orgXDomain[1],a])):c.zoom_x_max},h.zoom.min=function(a){var b=this.internal,c=b.config,d=b.d3;return 0===a||a?void(c.zoom_x_min=d.min([b.orgXDomain[0],a])):c.zoom_x_min},h.zoom.range=function(a){return arguments.length?(q(a.max)&&this.domain.max(a.max),void(q(a.min)&&this.domain.min(a.min))):{max:this.domain.max(),min:this.domain.min()}},h.load=function(a){var b=this.internal,c=b.config;return a.xs&&b.addXs(a.xs),"names"in a&&h.data.names.bind(this)(a.names),"classes"in a&&Object.keys(a.classes).forEach(function(b){c.data_classes[b]=a.classes[b]}),"categories"in a&&b.isCategorized()&&(c.axis_x_categories=a.categories),"axes"in a&&Object.keys(a.axes).forEach(function(b){c.data_axes[b]=a.axes[b]}),"colors"in a&&Object.keys(a.colors).forEach(function(b){c.data_colors[b]=a.colors[b]}),"cacheIds"in a&&b.hasCaches(a.cacheIds)?void b.load(b.getCaches(a.cacheIds),a.done):void("unload"in a?b.unload(b.mapToTargetIds("boolean"==typeof a.unload&&a.unload?null:a.unload),function(){b.loadFromArgs(a)}):b.loadFromArgs(a))},h.unload=function(a){var b=this.internal;a=a||{},a instanceof Array?a={ids:a}:"string"==typeof a&&(a={ids:[a]}),b.unload(b.mapToTargetIds(a.ids),function(){b.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0,withLegend:!0}),a.done&&a.done()})},h.flow=function(a){var b,c,d,e,f,g,h,i,j=this.internal,k=[],l=j.getMaxDataCount(),n=0,o=0;if(a.json)c=j.convertJsonToData(a.json,a.keys);else if(a.rows)c=j.convertRowsToData(a.rows);else{if(!a.columns)return;c=j.convertColumnsToData(a.columns)}b=j.convertDataToTargets(c,!0),j.data.targets.forEach(function(a){var c,d,e=!1;for(c=0;c<b.length;c++)if(a.id===b[c].id){for(e=!0,a.values[a.values.length-1]&&(o=a.values[a.values.length-1].index+1),n=b[c].values.length,d=0;n>d;d++)b[c].values[d].index=o+d,j.isTimeSeries()||(b[c].values[d].x=o+d);a.values=a.values.concat(b[c].values),b.splice(c,1);break}e||k.push(a.id)}),j.data.targets.forEach(function(a){var b,c;for(b=0;b<k.length;b++)if(a.id===k[b])for(o=a.values[a.values.length-1].index+1,c=0;n>c;c++)a.values.push({id:a.id,index:o+c,x:j.isTimeSeries()?j.getOtherTargetX(o+c):o+c,value:null})}),j.data.targets.length&&b.forEach(function(a){var b,c=[];for(b=j.data.targets[0].values[0].index;o>b;b++)c.push({id:a.id,index:b,x:j.isTimeSeries()?j.getOtherTargetX(b):b,value:null});a.values.forEach(function(a){a.index+=o,j.isTimeSeries()||(a.x+=o)}),a.values=c.concat(a.values)}),j.data.targets=j.data.targets.concat(b),d=j.getMaxDataCount(),f=j.data.targets[0],g=f.values[0],q(a.to)?(n=0,i=j.isTimeSeries()?j.parseDate(a.to):a.to,f.values.forEach(function(a){a.x<i&&n++})):q(a.length)&&(n=a.length),l?1===l&&j.isTimeSeries()&&(h=(f.values[f.values.length-1].x-g.x)/2,e=[new Date(+g.x-h),new Date(+g.x+h)],j.updateXDomain(null,!0,!0,!1,e)):(h=j.isTimeSeries()?f.values.length>1?f.values[f.values.length-1].x-g.x:g.x-j.getXDomain(j.data.targets)[0]:1,e=[g.x-h,g.x],j.updateXDomain(null,!0,!0,!1,e)),j.updateTargets(j.data.targets),j.redraw({flow:{index:g.index,length:n,duration:m(a.duration)?a.duration:j.config.transition_duration,done:a.done,orgDataCount:l},withLegend:!0,withTransition:l>1,withTrimXDomain:!1,withUpdateXAxis:!0})},i.generateFlow=function(a){var b=this,c=b.config,d=b.d3;return function(){var e,f,g,h=a.targets,i=a.flow,j=a.drawBar,k=a.drawLine,m=a.drawArea,n=a.cx,o=a.cy,p=a.xv,q=a.xForText,r=a.yForText,s=a.duration,u=1,v=i.index,w=i.length,x=b.getValueOnIndex(b.data.targets[0].values,v),y=b.getValueOnIndex(b.data.targets[0].values,v+w),z=b.x.domain(),A=i.duration||s,B=i.done||function(){},C=b.generateWait(),D=b.xgrid||d.selectAll([]),E=b.xgridLines||d.selectAll([]),F=b.mainRegion||d.selectAll([]),G=b.mainText||d.selectAll([]),H=b.mainBar||d.selectAll([]),I=b.mainLine||d.selectAll([]),J=b.mainArea||d.selectAll([]),K=b.mainCircle||d.selectAll([]);b.flowing=!0,b.data.targets.forEach(function(a){a.values.splice(0,w)}),g=b.updateXDomain(h,!0,!0),b.updateXGrid&&b.updateXGrid(!0),i.orgDataCount?e=1===i.orgDataCount||(x&&x.x)===(y&&y.x)?b.x(z[0])-b.x(g[0]):b.isTimeSeries()?b.x(z[0])-b.x(g[0]):b.x(x.x)-b.x(y.x):1!==b.data.targets[0].values.length?e=b.x(z[0])-b.x(g[0]):b.isTimeSeries()?(x=b.getValueOnIndex(b.data.targets[0].values,0),y=b.getValueOnIndex(b.data.targets[0].values,b.data.targets[0].values.length-1),e=b.x(x.x)-b.x(y.x)):e=t(g)/2,u=t(z)/t(g),f="translate("+e+",0) scale("+u+",1)",b.hideXGridFocus(),d.transition().ease("linear").duration(A).each(function(){C.add(b.axes.x.transition().call(b.xAxis)),C.add(H.transition().attr("transform",f)),C.add(I.transition().attr("transform",f)),C.add(J.transition().attr("transform",f)),C.add(K.transition().attr("transform",f)),C.add(G.transition().attr("transform",f)),C.add(F.filter(b.isRegionOnX).transition().attr("transform",f)),C.add(D.transition().attr("transform",f)),C.add(E.transition().attr("transform",f))}).call(C,function(){var a,d=[],e=[],f=[];if(w){for(a=0;w>a;a++)d.push("."+l.shape+"-"+(v+a)),e.push("."+l.text+"-"+(v+a)),f.push("."+l.eventRect+"-"+(v+a));b.svg.selectAll("."+l.shapes).selectAll(d).remove(),b.svg.selectAll("."+l.texts).selectAll(e).remove(),b.svg.selectAll("."+l.eventRects).selectAll(f).remove(),b.svg.select("."+l.xgrid).remove()}D.attr("transform",null).attr(b.xgridAttr),E.attr("transform",null),E.select("line").attr("x1",c.axis_rotated?0:p).attr("x2",c.axis_rotated?b.width:p),E.select("text").attr("x",c.axis_rotated?b.width:0).attr("y",p),H.attr("transform",null).attr("d",j),I.attr("transform",null).attr("d",k),J.attr("transform",null).attr("d",m),K.attr("transform",null).attr("cx",n).attr("cy",o),G.attr("transform",null).attr("x",q).attr("y",r).style("fill-opacity",b.opacityForText.bind(b)),F.attr("transform",null),F.select("rect").filter(b.isRegionOnX).attr("x",b.regionX.bind(b)).attr("width",b.regionWidth.bind(b)),c.interaction_enabled&&b.redrawEventRect(),B(),b.flowing=!1})}},h.selected=function(a){var b=this.internal,c=b.d3;return c.merge(b.main.selectAll("."+l.shapes+b.getTargetSelectorSuffix(a)).selectAll("."+l.shape).filter(function(){return c.select(this).classed(l.SELECTED)}).map(function(a){return a.map(function(a){var b=a.__data__;return b.data?b.data:b})}))},h.select=function(a,b,c){var d=this.internal,e=d.d3,f=d.config;f.data_selection_enabled&&d.main.selectAll("."+l.shapes).selectAll("."+l.shape).each(function(g,h){var i=e.select(this),j=g.data?g.data.id:g.id,k=d.getToggle(this,g).bind(d),m=f.data_selection_grouped||!a||a.indexOf(j)>=0,n=!b||b.indexOf(h)>=0,o=i.classed(l.SELECTED);i.classed(l.line)||i.classed(l.area)||(m&&n?f.data_selection_isselectable(g)&&!o&&k(!0,i.classed(l.SELECTED,!0),g,h):q(c)&&c&&o&&k(!1,i.classed(l.SELECTED,!1),g,h))})},h.unselect=function(a,b){var c=this.internal,d=c.d3,e=c.config;e.data_selection_enabled&&c.main.selectAll("."+l.shapes).selectAll("."+l.shape).each(function(f,g){var h=d.select(this),i=f.data?f.data.id:f.id,j=c.getToggle(this,f).bind(c),k=e.data_selection_grouped||!a||a.indexOf(i)>=0,m=!b||b.indexOf(g)>=0,n=h.classed(l.SELECTED);h.classed(l.line)||h.classed(l.area)||k&&m&&e.data_selection_isselectable(f)&&n&&j(!1,h.classed(l.SELECTED,!1),f,g)})},h.transform=function(a,b){var c=this.internal,d=["pie","donut"].indexOf(a)>=0?{withTransform:!0}:null;c.transformTo(b,a,d)},i.transformTo=function(a,b,c){var d=this,e=!d.hasArcType(),f=c||{withTransitionForAxis:e};f.withTransitionForTransform=!1,d.transiting=!1,d.setTargetType(a,b),d.updateTargets(d.data.targets),d.updateAndRedraw(f)},h.groups=function(a){var b=this.internal,c=b.config;return p(a)?c.data_groups:(c.data_groups=a,b.redraw(),c.data_groups)},h.xgrids=function(a){var b=this.internal,c=b.config;return a?(c.grid_x_lines=a,b.redrawWithoutRescale(),c.grid_x_lines):c.grid_x_lines},h.xgrids.add=function(a){var b=this.internal;return this.xgrids(b.config.grid_x_lines.concat(a?a:[]))},h.xgrids.remove=function(a){var b=this.internal;b.removeGridLines(a,!0)},h.ygrids=function(a){var b=this.internal,c=b.config;return a?(c.grid_y_lines=a,b.redrawWithoutRescale(),c.grid_y_lines):c.grid_y_lines},h.ygrids.add=function(a){var b=this.internal;return this.ygrids(b.config.grid_y_lines.concat(a?a:[]))},h.ygrids.remove=function(a){var b=this.internal;b.removeGridLines(a,!1)},h.regions=function(a){var b=this.internal,c=b.config;return a?(c.regions=a,b.redrawWithoutRescale(),c.regions):c.regions},h.regions.add=function(a){var b=this.internal,c=b.config;return a?(c.regions=c.regions.concat(a),b.redrawWithoutRescale(),c.regions):c.regions},h.regions.remove=function(a){var b,c,d,e=this.internal,f=e.config;return a=a||{},b=e.getOption(a,"duration",f.transition_duration),c=e.getOption(a,"classes",[l.region]),d=e.main.select("."+l.regions).selectAll(c.map(function(a){return"."+a})),(b?d.transition().duration(b):d).style("opacity",0).remove(),f.regions=f.regions.filter(function(a){var b=!1;return a["class"]?(a["class"].split(" ").forEach(function(a){c.indexOf(a)>=0&&(b=!0)}),!b):!0}),f.regions},h.data=function(a){var b=this.internal.data.targets;return"undefined"==typeof a?b:b.filter(function(b){return[].concat(a).indexOf(b.id)>=0})},h.data.shown=function(a){return this.internal.filterTargetsToShow(this.data(a))},h.data.values=function(a){var b,c=null;return a&&(b=this.data(a),c=b[0]?b[0].values.map(function(a){return a.value}):null),c},h.data.names=function(a){return this.internal.clearLegendItemTextBoxCache(),this.internal.updateDataAttributes("names",a)},h.data.colors=function(a){return this.internal.updateDataAttributes("colors",a)},h.data.axes=function(a){return this.internal.updateDataAttributes("axes",a)},h.category=function(a,b){var c=this.internal,d=c.config;return arguments.length>1&&(d.axis_x_categories[a]=b,c.redraw()),d.axis_x_categories[a]},h.categories=function(a){var b=this.internal,c=b.config;return arguments.length?(c.axis_x_categories=a,b.redraw(),c.axis_x_categories):c.axis_x_categories},h.color=function(a){var b=this.internal;return b.color(a)},h.x=function(a){var b=this.internal;return arguments.length&&(b.updateTargetX(b.data.targets,a),b.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0})),b.data.xs},h.xs=function(a){var b=this.internal;return arguments.length&&(b.updateTargetXs(b.data.targets,a),b.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0})),b.data.xs},h.axis=function(){},h.axis.labels=function(a){var b=this.internal;arguments.length&&(Object.keys(a).forEach(function(c){b.axis.setLabelText(c,a[c])}),b.axis.updateLabels())},h.axis.max=function(a){var b=this.internal,c=b.config;return arguments.length?("object"==typeof a?(m(a.x)&&(c.axis_x_max=a.x),m(a.y)&&(c.axis_y_max=a.y),m(a.y2)&&(c.axis_y2_max=a.y2)):c.axis_y_max=c.axis_y2_max=a,void b.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0})):{x:c.axis_x_max,y:c.axis_y_max,y2:c.axis_y2_max}},h.axis.min=function(a){var b=this.internal,c=b.config;return arguments.length?("object"==typeof a?(m(a.x)&&(c.axis_x_min=a.x),m(a.y)&&(c.axis_y_min=a.y),m(a.y2)&&(c.axis_y2_min=a.y2)):c.axis_y_min=c.axis_y2_min=a,void b.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0})):{x:c.axis_x_min,y:c.axis_y_min,y2:c.axis_y2_min}},h.axis.range=function(a){return arguments.length?(q(a.max)&&this.axis.max(a.max),void(q(a.min)&&this.axis.min(a.min))):{max:this.axis.max(),min:this.axis.min()}},h.legend=function(){},h.legend.show=function(a){var b=this.internal;b.showLegend(b.mapToTargetIds(a)),b.updateAndRedraw({withLegend:!0})},h.legend.hide=function(a){var b=this.internal;b.hideLegend(b.mapToTargetIds(a)),b.updateAndRedraw({withLegend:!0})},h.resize=function(a){var b=this.internal,c=b.config;c.size_width=a?a.width:null,c.size_height=a?a.height:null,this.flush()},h.flush=function(){var a=this.internal;a.updateAndRedraw({withLegend:!0,withTransition:!1,withTransitionForTransform:!1})},h.destroy=function(){var b=this.internal;if(a.clearInterval(b.intervalForObserveInserted),void 0!==b.resizeTimeout&&a.clearTimeout(b.resizeTimeout),a.detachEvent)a.detachEvent("onresize",b.resizeFunction);else if(a.removeEventListener)a.removeEventListener("resize",b.resizeFunction);else{var c=a.onresize;c&&c.add&&c.remove&&c.remove(b.resizeFunction)}return b.selectChart.classed("c3",!1).html(""),Object.keys(b).forEach(function(a){b[a]=null}),null},h.tooltip=function(){},h.tooltip.show=function(a){var b,c,d=this.internal;a.mouse&&(c=a.mouse),a.data?d.isMultipleX()?(c=[d.x(a.data.x),d.getYScale(a.data.id)(a.data.value)],b=null):b=m(a.data.index)?a.data.index:d.getIndexByX(a.data.x):"undefined"!=typeof a.x?b=d.getIndexByX(a.x):"undefined"!=typeof a.index&&(b=a.index),d.dispatchEvent("mouseover",b,c),d.dispatchEvent("mousemove",b,c),d.config.tooltip_onshow.call(d,a.data)},h.tooltip.hide=function(){this.internal.dispatchEvent("mouseout",0),this.internal.config.tooltip_onhide.call(this)};var A;i.isSafari=function(){var b=a.navigator.userAgent;return b.indexOf("Safari")>=0&&b.indexOf("Chrome")<0},i.isChrome=function(){var b=a.navigator.userAgent;return b.indexOf("Chrome")>=0},Function.prototype.bind||(Function.prototype.bind=function(a){if("function"!=typeof this)throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable");var b=Array.prototype.slice.call(arguments,1),c=this,d=function(){},e=function(){return c.apply(this instanceof d?this:a,b.concat(Array.prototype.slice.call(arguments)))};return d.prototype=this.prototype,e.prototype=new d,e}),function(){"SVGPathSeg"in a||(a.SVGPathSeg=function(a,b,c){this.pathSegType=a,this.pathSegTypeAsLetter=b,this._owningPathSegList=c},SVGPathSeg.PATHSEG_UNKNOWN=0,SVGPathSeg.PATHSEG_CLOSEPATH=1,SVGPathSeg.PATHSEG_MOVETO_ABS=2,SVGPathSeg.PATHSEG_MOVETO_REL=3,SVGPathSeg.PATHSEG_LINETO_ABS=4,SVGPathSeg.PATHSEG_LINETO_REL=5,SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS=6,SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL=7,SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS=8,SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL=9,SVGPathSeg.PATHSEG_ARC_ABS=10,SVGPathSeg.PATHSEG_ARC_REL=11,SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS=12,SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL=13,SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS=14,SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL=15,SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS=16,SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL=17,SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS=18,SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL=19,SVGPathSeg.prototype._segmentChanged=function(){this._owningPathSegList&&this._owningPathSegList.segmentChanged(this)},a.SVGPathSegClosePath=function(a){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_CLOSEPATH,"z",a)},SVGPathSegClosePath.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegClosePath.prototype.toString=function(){return"[object SVGPathSegClosePath]"},SVGPathSegClosePath.prototype._asPathString=function(){return this.pathSegTypeAsLetter},SVGPathSegClosePath.prototype.clone=function(){return new SVGPathSegClosePath(void 0)},a.SVGPathSegMovetoAbs=function(a,b,c){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_MOVETO_ABS,"M",a),this._x=b,this._y=c},SVGPathSegMovetoAbs.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegMovetoAbs.prototype.toString=function(){return"[object SVGPathSegMovetoAbs]"},SVGPathSegMovetoAbs.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x+" "+this._y},SVGPathSegMovetoAbs.prototype.clone=function(){return new SVGPathSegMovetoAbs(void 0,this._x,this._y)},Object.defineProperty(SVGPathSegMovetoAbs.prototype,"x",{get:function(){return this._x},set:function(a){this._x=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegMovetoAbs.prototype,"y",{get:function(){return this._y},set:function(a){this._y=a,this._segmentChanged()},enumerable:!0}),a.SVGPathSegMovetoRel=function(a,b,c){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_MOVETO_REL,"m",a),this._x=b,this._y=c},SVGPathSegMovetoRel.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegMovetoRel.prototype.toString=function(){return"[object SVGPathSegMovetoRel]"},SVGPathSegMovetoRel.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x+" "+this._y},SVGPathSegMovetoRel.prototype.clone=function(){return new SVGPathSegMovetoRel(void 0,this._x,this._y)},Object.defineProperty(SVGPathSegMovetoRel.prototype,"x",{get:function(){return this._x},set:function(a){this._x=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegMovetoRel.prototype,"y",{get:function(){return this._y},set:function(a){this._y=a,this._segmentChanged()},enumerable:!0}),a.SVGPathSegLinetoAbs=function(a,b,c){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_LINETO_ABS,"L",a),this._x=b,this._y=c},SVGPathSegLinetoAbs.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegLinetoAbs.prototype.toString=function(){return"[object SVGPathSegLinetoAbs]"},SVGPathSegLinetoAbs.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x+" "+this._y},SVGPathSegLinetoAbs.prototype.clone=function(){return new SVGPathSegLinetoAbs(void 0,this._x,this._y)},Object.defineProperty(SVGPathSegLinetoAbs.prototype,"x",{get:function(){return this._x},set:function(a){this._x=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegLinetoAbs.prototype,"y",{get:function(){return this._y},set:function(a){this._y=a,this._segmentChanged()},enumerable:!0}),a.SVGPathSegLinetoRel=function(a,b,c){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_LINETO_REL,"l",a),this._x=b,this._y=c},SVGPathSegLinetoRel.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegLinetoRel.prototype.toString=function(){return"[object SVGPathSegLinetoRel]"},SVGPathSegLinetoRel.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x+" "+this._y},SVGPathSegLinetoRel.prototype.clone=function(){return new SVGPathSegLinetoRel(void 0,this._x,this._y)},Object.defineProperty(SVGPathSegLinetoRel.prototype,"x",{get:function(){return this._x},set:function(a){this._x=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegLinetoRel.prototype,"y",{get:function(){return this._y},set:function(a){this._y=a,this._segmentChanged()},enumerable:!0}),a.SVGPathSegCurvetoCubicAbs=function(a,b,c,d,e,f,g){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS,"C",a),this._x=b,this._y=c,this._x1=d,this._y1=e,this._x2=f,this._y2=g},SVGPathSegCurvetoCubicAbs.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegCurvetoCubicAbs.prototype.toString=function(){return"[object SVGPathSegCurvetoCubicAbs]"},SVGPathSegCurvetoCubicAbs.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x1+" "+this._y1+" "+this._x2+" "+this._y2+" "+this._x+" "+this._y},SVGPathSegCurvetoCubicAbs.prototype.clone=function(){return new SVGPathSegCurvetoCubicAbs(void 0,this._x,this._y,this._x1,this._y1,this._x2,this._y2)},Object.defineProperty(SVGPathSegCurvetoCubicAbs.prototype,"x",{get:function(){return this._x},set:function(a){this._x=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicAbs.prototype,"y",{get:function(){return this._y},set:function(a){this._y=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicAbs.prototype,"x1",{get:function(){return this._x1},set:function(a){this._x1=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicAbs.prototype,"y1",{get:function(){return this._y1},set:function(a){this._y1=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicAbs.prototype,"x2",{get:function(){return this._x2},set:function(a){this._x2=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicAbs.prototype,"y2",{get:function(){return this._y2},set:function(a){this._y2=a,this._segmentChanged()},enumerable:!0}),a.SVGPathSegCurvetoCubicRel=function(a,b,c,d,e,f,g){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL,"c",a),this._x=b,this._y=c,this._x1=d,this._y1=e,this._x2=f,this._y2=g},SVGPathSegCurvetoCubicRel.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegCurvetoCubicRel.prototype.toString=function(){return"[object SVGPathSegCurvetoCubicRel]"},SVGPathSegCurvetoCubicRel.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x1+" "+this._y1+" "+this._x2+" "+this._y2+" "+this._x+" "+this._y},SVGPathSegCurvetoCubicRel.prototype.clone=function(){return new SVGPathSegCurvetoCubicRel(void 0,this._x,this._y,this._x1,this._y1,this._x2,this._y2)},Object.defineProperty(SVGPathSegCurvetoCubicRel.prototype,"x",{get:function(){return this._x},set:function(a){this._x=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicRel.prototype,"y",{get:function(){return this._y},set:function(a){this._y=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicRel.prototype,"x1",{get:function(){return this._x1},set:function(a){this._x1=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicRel.prototype,"y1",{get:function(){return this._y1},set:function(a){this._y1=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicRel.prototype,"x2",{get:function(){return this._x2},set:function(a){this._x2=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicRel.prototype,"y2",{get:function(){return this._y2},set:function(a){this._y2=a,this._segmentChanged()},enumerable:!0}),a.SVGPathSegCurvetoQuadraticAbs=function(a,b,c,d,e){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS,"Q",a),this._x=b,this._y=c,this._x1=d,this._y1=e},SVGPathSegCurvetoQuadraticAbs.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegCurvetoQuadraticAbs.prototype.toString=function(){return"[object SVGPathSegCurvetoQuadraticAbs]"},SVGPathSegCurvetoQuadraticAbs.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x1+" "+this._y1+" "+this._x+" "+this._y},SVGPathSegCurvetoQuadraticAbs.prototype.clone=function(){return new SVGPathSegCurvetoQuadraticAbs(void 0,this._x,this._y,this._x1,this._y1)},Object.defineProperty(SVGPathSegCurvetoQuadraticAbs.prototype,"x",{get:function(){return this._x},set:function(a){this._x=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoQuadraticAbs.prototype,"y",{get:function(){return this._y},set:function(a){this._y=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoQuadraticAbs.prototype,"x1",{get:function(){return this._x1},set:function(a){this._x1=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoQuadraticAbs.prototype,"y1",{get:function(){return this._y1},set:function(a){this._y1=a,this._segmentChanged()},enumerable:!0}),a.SVGPathSegCurvetoQuadraticRel=function(a,b,c,d,e){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL,"q",a),this._x=b,this._y=c,this._x1=d,this._y1=e},SVGPathSegCurvetoQuadraticRel.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegCurvetoQuadraticRel.prototype.toString=function(){return"[object SVGPathSegCurvetoQuadraticRel]"},SVGPathSegCurvetoQuadraticRel.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x1+" "+this._y1+" "+this._x+" "+this._y},SVGPathSegCurvetoQuadraticRel.prototype.clone=function(){return new SVGPathSegCurvetoQuadraticRel(void 0,this._x,this._y,this._x1,this._y1)},Object.defineProperty(SVGPathSegCurvetoQuadraticRel.prototype,"x",{get:function(){return this._x},set:function(a){this._x=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoQuadraticRel.prototype,"y",{get:function(){return this._y},set:function(a){this._y=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoQuadraticRel.prototype,"x1",{get:function(){return this._x1},set:function(a){this._x1=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoQuadraticRel.prototype,"y1",{get:function(){return this._y1},set:function(a){this._y1=a,this._segmentChanged()},enumerable:!0}),a.SVGPathSegArcAbs=function(a,b,c,d,e,f,g,h){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_ARC_ABS,"A",a),this._x=b,this._y=c,this._r1=d,this._r2=e,this._angle=f,this._largeArcFlag=g,this._sweepFlag=h},SVGPathSegArcAbs.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegArcAbs.prototype.toString=function(){return"[object SVGPathSegArcAbs]"},SVGPathSegArcAbs.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._r1+" "+this._r2+" "+this._angle+" "+(this._largeArcFlag?"1":"0")+" "+(this._sweepFlag?"1":"0")+" "+this._x+" "+this._y},SVGPathSegArcAbs.prototype.clone=function(){return new SVGPathSegArcAbs(void 0,this._x,this._y,this._r1,this._r2,this._angle,this._largeArcFlag,this._sweepFlag)},Object.defineProperty(SVGPathSegArcAbs.prototype,"x",{get:function(){return this._x},set:function(a){this._x=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegArcAbs.prototype,"y",{get:function(){return this._y},set:function(a){this._y=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegArcAbs.prototype,"r1",{get:function(){return this._r1},set:function(a){this._r1=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegArcAbs.prototype,"r2",{get:function(){return this._r2},set:function(a){this._r2=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegArcAbs.prototype,"angle",{get:function(){return this._angle},set:function(a){this._angle=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegArcAbs.prototype,"largeArcFlag",{get:function(){return this._largeArcFlag},set:function(a){this._largeArcFlag=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegArcAbs.prototype,"sweepFlag",{get:function(){return this._sweepFlag},set:function(a){this._sweepFlag=a,this._segmentChanged()},enumerable:!0}),a.SVGPathSegArcRel=function(a,b,c,d,e,f,g,h){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_ARC_REL,"a",a),this._x=b,this._y=c,this._r1=d,this._r2=e,this._angle=f,this._largeArcFlag=g,this._sweepFlag=h},SVGPathSegArcRel.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegArcRel.prototype.toString=function(){return"[object SVGPathSegArcRel]"},SVGPathSegArcRel.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._r1+" "+this._r2+" "+this._angle+" "+(this._largeArcFlag?"1":"0")+" "+(this._sweepFlag?"1":"0")+" "+this._x+" "+this._y},SVGPathSegArcRel.prototype.clone=function(){return new SVGPathSegArcRel(void 0,this._x,this._y,this._r1,this._r2,this._angle,this._largeArcFlag,this._sweepFlag)},Object.defineProperty(SVGPathSegArcRel.prototype,"x",{get:function(){return this._x},set:function(a){this._x=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegArcRel.prototype,"y",{get:function(){return this._y},set:function(a){this._y=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegArcRel.prototype,"r1",{get:function(){return this._r1},set:function(a){this._r1=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegArcRel.prototype,"r2",{get:function(){return this._r2},set:function(a){this._r2=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegArcRel.prototype,"angle",{get:function(){return this._angle},set:function(a){this._angle=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegArcRel.prototype,"largeArcFlag",{get:function(){return this._largeArcFlag},set:function(a){this._largeArcFlag=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegArcRel.prototype,"sweepFlag",{get:function(){return this._sweepFlag},set:function(a){this._sweepFlag=a,this._segmentChanged()},enumerable:!0}),a.SVGPathSegLinetoHorizontalAbs=function(a,b){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS,"H",a),this._x=b},SVGPathSegLinetoHorizontalAbs.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegLinetoHorizontalAbs.prototype.toString=function(){return"[object SVGPathSegLinetoHorizontalAbs]"},SVGPathSegLinetoHorizontalAbs.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x},SVGPathSegLinetoHorizontalAbs.prototype.clone=function(){return new SVGPathSegLinetoHorizontalAbs(void 0,this._x)},Object.defineProperty(SVGPathSegLinetoHorizontalAbs.prototype,"x",{get:function(){return this._x},set:function(a){this._x=a,this._segmentChanged()},enumerable:!0}),a.SVGPathSegLinetoHorizontalRel=function(a,b){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL,"h",a),this._x=b},SVGPathSegLinetoHorizontalRel.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegLinetoHorizontalRel.prototype.toString=function(){return"[object SVGPathSegLinetoHorizontalRel]"},SVGPathSegLinetoHorizontalRel.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x},SVGPathSegLinetoHorizontalRel.prototype.clone=function(){return new SVGPathSegLinetoHorizontalRel(void 0,this._x)},Object.defineProperty(SVGPathSegLinetoHorizontalRel.prototype,"x",{get:function(){return this._x},set:function(a){this._x=a,this._segmentChanged()},enumerable:!0}),a.SVGPathSegLinetoVerticalAbs=function(a,b){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS,"V",a),this._y=b},SVGPathSegLinetoVerticalAbs.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegLinetoVerticalAbs.prototype.toString=function(){return"[object SVGPathSegLinetoVerticalAbs]"},SVGPathSegLinetoVerticalAbs.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._y},SVGPathSegLinetoVerticalAbs.prototype.clone=function(){return new SVGPathSegLinetoVerticalAbs(void 0,this._y)},Object.defineProperty(SVGPathSegLinetoVerticalAbs.prototype,"y",{get:function(){return this._y},set:function(a){this._y=a,this._segmentChanged()},enumerable:!0}),a.SVGPathSegLinetoVerticalRel=function(a,b){
2315 SVGPathSeg.call(this,SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL,"v",a),this._y=b},SVGPathSegLinetoVerticalRel.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegLinetoVerticalRel.prototype.toString=function(){return"[object SVGPathSegLinetoVerticalRel]"},SVGPathSegLinetoVerticalRel.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._y},SVGPathSegLinetoVerticalRel.prototype.clone=function(){return new SVGPathSegLinetoVerticalRel(void 0,this._y)},Object.defineProperty(SVGPathSegLinetoVerticalRel.prototype,"y",{get:function(){return this._y},set:function(a){this._y=a,this._segmentChanged()},enumerable:!0}),a.SVGPathSegCurvetoCubicSmoothAbs=function(a,b,c,d,e){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS,"S",a),this._x=b,this._y=c,this._x2=d,this._y2=e},SVGPathSegCurvetoCubicSmoothAbs.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegCurvetoCubicSmoothAbs.prototype.toString=function(){return"[object SVGPathSegCurvetoCubicSmoothAbs]"},SVGPathSegCurvetoCubicSmoothAbs.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x2+" "+this._y2+" "+this._x+" "+this._y},SVGPathSegCurvetoCubicSmoothAbs.prototype.clone=function(){return new SVGPathSegCurvetoCubicSmoothAbs(void 0,this._x,this._y,this._x2,this._y2)},Object.defineProperty(SVGPathSegCurvetoCubicSmoothAbs.prototype,"x",{get:function(){return this._x},set:function(a){this._x=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicSmoothAbs.prototype,"y",{get:function(){return this._y},set:function(a){this._y=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicSmoothAbs.prototype,"x2",{get:function(){return this._x2},set:function(a){this._x2=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicSmoothAbs.prototype,"y2",{get:function(){return this._y2},set:function(a){this._y2=a,this._segmentChanged()},enumerable:!0}),a.SVGPathSegCurvetoCubicSmoothRel=function(a,b,c,d,e){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL,"s",a),this._x=b,this._y=c,this._x2=d,this._y2=e},SVGPathSegCurvetoCubicSmoothRel.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegCurvetoCubicSmoothRel.prototype.toString=function(){return"[object SVGPathSegCurvetoCubicSmoothRel]"},SVGPathSegCurvetoCubicSmoothRel.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x2+" "+this._y2+" "+this._x+" "+this._y},SVGPathSegCurvetoCubicSmoothRel.prototype.clone=function(){return new SVGPathSegCurvetoCubicSmoothRel(void 0,this._x,this._y,this._x2,this._y2)},Object.defineProperty(SVGPathSegCurvetoCubicSmoothRel.prototype,"x",{get:function(){return this._x},set:function(a){this._x=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicSmoothRel.prototype,"y",{get:function(){return this._y},set:function(a){this._y=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicSmoothRel.prototype,"x2",{get:function(){return this._x2},set:function(a){this._x2=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicSmoothRel.prototype,"y2",{get:function(){return this._y2},set:function(a){this._y2=a,this._segmentChanged()},enumerable:!0}),a.SVGPathSegCurvetoQuadraticSmoothAbs=function(a,b,c){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS,"T",a),this._x=b,this._y=c},SVGPathSegCurvetoQuadraticSmoothAbs.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegCurvetoQuadraticSmoothAbs.prototype.toString=function(){return"[object SVGPathSegCurvetoQuadraticSmoothAbs]"},SVGPathSegCurvetoQuadraticSmoothAbs.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x+" "+this._y},SVGPathSegCurvetoQuadraticSmoothAbs.prototype.clone=function(){return new SVGPathSegCurvetoQuadraticSmoothAbs(void 0,this._x,this._y)},Object.defineProperty(SVGPathSegCurvetoQuadraticSmoothAbs.prototype,"x",{get:function(){return this._x},set:function(a){this._x=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoQuadraticSmoothAbs.prototype,"y",{get:function(){return this._y},set:function(a){this._y=a,this._segmentChanged()},enumerable:!0}),a.SVGPathSegCurvetoQuadraticSmoothRel=function(a,b,c){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL,"t",a),this._x=b,this._y=c},SVGPathSegCurvetoQuadraticSmoothRel.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegCurvetoQuadraticSmoothRel.prototype.toString=function(){return"[object SVGPathSegCurvetoQuadraticSmoothRel]"},SVGPathSegCurvetoQuadraticSmoothRel.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x+" "+this._y},SVGPathSegCurvetoQuadraticSmoothRel.prototype.clone=function(){return new SVGPathSegCurvetoQuadraticSmoothRel(void 0,this._x,this._y)},Object.defineProperty(SVGPathSegCurvetoQuadraticSmoothRel.prototype,"x",{get:function(){return this._x},set:function(a){this._x=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoQuadraticSmoothRel.prototype,"y",{get:function(){return this._y},set:function(a){this._y=a,this._segmentChanged()},enumerable:!0}),SVGPathElement.prototype.createSVGPathSegClosePath=function(){return new SVGPathSegClosePath(void 0)},SVGPathElement.prototype.createSVGPathSegMovetoAbs=function(a,b){return new SVGPathSegMovetoAbs(void 0,a,b)},SVGPathElement.prototype.createSVGPathSegMovetoRel=function(a,b){return new SVGPathSegMovetoRel(void 0,a,b)},SVGPathElement.prototype.createSVGPathSegLinetoAbs=function(a,b){return new SVGPathSegLinetoAbs(void 0,a,b)},SVGPathElement.prototype.createSVGPathSegLinetoRel=function(a,b){return new SVGPathSegLinetoRel(void 0,a,b)},SVGPathElement.prototype.createSVGPathSegCurvetoCubicAbs=function(a,b,c,d,e,f){return new SVGPathSegCurvetoCubicAbs(void 0,a,b,c,d,e,f)},SVGPathElement.prototype.createSVGPathSegCurvetoCubicRel=function(a,b,c,d,e,f){return new SVGPathSegCurvetoCubicRel(void 0,a,b,c,d,e,f)},SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticAbs=function(a,b,c,d){return new SVGPathSegCurvetoQuadraticAbs(void 0,a,b,c,d)},SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticRel=function(a,b,c,d){return new SVGPathSegCurvetoQuadraticRel(void 0,a,b,c,d)},SVGPathElement.prototype.createSVGPathSegArcAbs=function(a,b,c,d,e,f,g){return new SVGPathSegArcAbs(void 0,a,b,c,d,e,f,g)},SVGPathElement.prototype.createSVGPathSegArcRel=function(a,b,c,d,e,f,g){return new SVGPathSegArcRel(void 0,a,b,c,d,e,f,g)},SVGPathElement.prototype.createSVGPathSegLinetoHorizontalAbs=function(a){return new SVGPathSegLinetoHorizontalAbs(void 0,a)},SVGPathElement.prototype.createSVGPathSegLinetoHorizontalRel=function(a){return new SVGPathSegLinetoHorizontalRel(void 0,a)},SVGPathElement.prototype.createSVGPathSegLinetoVerticalAbs=function(a){return new SVGPathSegLinetoVerticalAbs(void 0,a)},SVGPathElement.prototype.createSVGPathSegLinetoVerticalRel=function(a){return new SVGPathSegLinetoVerticalRel(void 0,a)},SVGPathElement.prototype.createSVGPathSegCurvetoCubicSmoothAbs=function(a,b,c,d){return new SVGPathSegCurvetoCubicSmoothAbs(void 0,a,b,c,d)},SVGPathElement.prototype.createSVGPathSegCurvetoCubicSmoothRel=function(a,b,c,d){return new SVGPathSegCurvetoCubicSmoothRel(void 0,a,b,c,d)},SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticSmoothAbs=function(a,b){return new SVGPathSegCurvetoQuadraticSmoothAbs(void 0,a,b)},SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticSmoothRel=function(a,b){return new SVGPathSegCurvetoQuadraticSmoothRel(void 0,a,b)}),"SVGPathSegList"in a||(a.SVGPathSegList=function(a){this._pathElement=a,this._list=this._parsePath(this._pathElement.getAttribute("d")),this._mutationObserverConfig={attributes:!0,attributeFilter:["d"]},this._pathElementMutationObserver=new MutationObserver(this._updateListFromPathMutations.bind(this)),this._pathElementMutationObserver.observe(this._pathElement,this._mutationObserverConfig)},Object.defineProperty(SVGPathSegList.prototype,"numberOfItems",{get:function(){return this._checkPathSynchronizedToList(),this._list.length},enumerable:!0}),Object.defineProperty(SVGPathElement.prototype,"pathSegList",{get:function(){return this._pathSegList||(this._pathSegList=new SVGPathSegList(this)),this._pathSegList},enumerable:!0}),Object.defineProperty(SVGPathElement.prototype,"normalizedPathSegList",{get:function(){return this.pathSegList},enumerable:!0}),Object.defineProperty(SVGPathElement.prototype,"animatedPathSegList",{get:function(){return this.pathSegList},enumerable:!0}),Object.defineProperty(SVGPathElement.prototype,"animatedNormalizedPathSegList",{get:function(){return this.pathSegList},enumerable:!0}),SVGPathSegList.prototype._checkPathSynchronizedToList=function(){this._updateListFromPathMutations(this._pathElementMutationObserver.takeRecords())},SVGPathSegList.prototype._updateListFromPathMutations=function(a){if(this._pathElement){var b=!1;a.forEach(function(a){"d"==a.attributeName&&(b=!0)}),b&&(this._list=this._parsePath(this._pathElement.getAttribute("d")))}},SVGPathSegList.prototype._writeListToPath=function(){this._pathElementMutationObserver.disconnect(),this._pathElement.setAttribute("d",SVGPathSegList._pathSegArrayAsString(this._list)),this._pathElementMutationObserver.observe(this._pathElement,this._mutationObserverConfig)},SVGPathSegList.prototype.segmentChanged=function(a){this._writeListToPath()},SVGPathSegList.prototype.clear=function(){this._checkPathSynchronizedToList(),this._list.forEach(function(a){a._owningPathSegList=null}),this._list=[],this._writeListToPath()},SVGPathSegList.prototype.initialize=function(a){return this._checkPathSynchronizedToList(),this._list=[a],a._owningPathSegList=this,this._writeListToPath(),a},SVGPathSegList.prototype._checkValidIndex=function(a){if(isNaN(a)||0>a||a>=this.numberOfItems)throw"INDEX_SIZE_ERR"},SVGPathSegList.prototype.getItem=function(a){return this._checkPathSynchronizedToList(),this._checkValidIndex(a),this._list[a]},SVGPathSegList.prototype.insertItemBefore=function(a,b){return this._checkPathSynchronizedToList(),b>this.numberOfItems&&(b=this.numberOfItems),a._owningPathSegList&&(a=a.clone()),this._list.splice(b,0,a),a._owningPathSegList=this,this._writeListToPath(),a},SVGPathSegList.prototype.replaceItem=function(a,b){return this._checkPathSynchronizedToList(),a._owningPathSegList&&(a=a.clone()),this._checkValidIndex(b),this._list[b]=a,a._owningPathSegList=this,this._writeListToPath(),a},SVGPathSegList.prototype.removeItem=function(a){this._checkPathSynchronizedToList(),this._checkValidIndex(a);var b=this._list[a];return this._list.splice(a,1),this._writeListToPath(),b},SVGPathSegList.prototype.appendItem=function(a){return this._checkPathSynchronizedToList(),a._owningPathSegList&&(a=a.clone()),this._list.push(a),a._owningPathSegList=this,this._writeListToPath(),a},SVGPathSegList._pathSegArrayAsString=function(a){var b="",c=!0;return a.forEach(function(a){c?(c=!1,b+=a._asPathString()):b+=" "+a._asPathString()}),b},SVGPathSegList.prototype._parsePath=function(a){if(!a||0==a.length)return[];var b=this,c=function(){this.pathSegList=[]};c.prototype.appendSegment=function(a){this.pathSegList.push(a)};var d=function(a){this._string=a,this._currentIndex=0,this._endIndex=this._string.length,this._previousCommand=SVGPathSeg.PATHSEG_UNKNOWN,this._skipOptionalSpaces()};d.prototype._isCurrentSpace=function(){var a=this._string[this._currentIndex];return" ">=a&&(" "==a||"\n"==a||" "==a||"\r"==a||"\f"==a)},d.prototype._skipOptionalSpaces=function(){for(;this._currentIndex<this._endIndex&&this._isCurrentSpace();)this._currentIndex++;return this._currentIndex<this._endIndex},d.prototype._skipOptionalSpacesOrDelimiter=function(){return this._currentIndex<this._endIndex&&!this._isCurrentSpace()&&","!=this._string.charAt(this._currentIndex)?!1:(this._skipOptionalSpaces()&&this._currentIndex<this._endIndex&&","==this._string.charAt(this._currentIndex)&&(this._currentIndex++,this._skipOptionalSpaces()),this._currentIndex<this._endIndex)},d.prototype.hasMoreData=function(){return this._currentIndex<this._endIndex},d.prototype.peekSegmentType=function(){var a=this._string[this._currentIndex];return this._pathSegTypeFromChar(a)},d.prototype._pathSegTypeFromChar=function(a){switch(a){case"Z":case"z":return SVGPathSeg.PATHSEG_CLOSEPATH;case"M":return SVGPathSeg.PATHSEG_MOVETO_ABS;case"m":return SVGPathSeg.PATHSEG_MOVETO_REL;case"L":return SVGPathSeg.PATHSEG_LINETO_ABS;case"l":return SVGPathSeg.PATHSEG_LINETO_REL;case"C":return SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS;case"c":return SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL;case"Q":return SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS;case"q":return SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL;case"A":return SVGPathSeg.PATHSEG_ARC_ABS;case"a":return SVGPathSeg.PATHSEG_ARC_REL;case"H":return SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS;case"h":return SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL;case"V":return SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS;case"v":return SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL;case"S":return SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS;case"s":return SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL;case"T":return SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS;case"t":return SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL;default:return SVGPathSeg.PATHSEG_UNKNOWN}},d.prototype._nextCommandHelper=function(a,b){return("+"==a||"-"==a||"."==a||a>="0"&&"9">=a)&&b!=SVGPathSeg.PATHSEG_CLOSEPATH?b==SVGPathSeg.PATHSEG_MOVETO_ABS?SVGPathSeg.PATHSEG_LINETO_ABS:b==SVGPathSeg.PATHSEG_MOVETO_REL?SVGPathSeg.PATHSEG_LINETO_REL:b:SVGPathSeg.PATHSEG_UNKNOWN},d.prototype.initialCommandIsMoveTo=function(){if(!this.hasMoreData())return!0;var a=this.peekSegmentType();return a==SVGPathSeg.PATHSEG_MOVETO_ABS||a==SVGPathSeg.PATHSEG_MOVETO_REL},d.prototype._parseNumber=function(){var a=0,b=0,c=1,d=0,e=1,f=1,g=this._currentIndex;if(this._skipOptionalSpaces(),this._currentIndex<this._endIndex&&"+"==this._string.charAt(this._currentIndex)?this._currentIndex++:this._currentIndex<this._endIndex&&"-"==this._string.charAt(this._currentIndex)&&(this._currentIndex++,e=-1),!(this._currentIndex==this._endIndex||(this._string.charAt(this._currentIndex)<"0"||this._string.charAt(this._currentIndex)>"9")&&"."!=this._string.charAt(this._currentIndex))){for(var h=this._currentIndex;this._currentIndex<this._endIndex&&this._string.charAt(this._currentIndex)>="0"&&this._string.charAt(this._currentIndex)<="9";)this._currentIndex++;if(this._currentIndex!=h)for(var i=this._currentIndex-1,j=1;i>=h;)b+=j*(this._string.charAt(i--)-"0"),j*=10;if(this._currentIndex<this._endIndex&&"."==this._string.charAt(this._currentIndex)){if(this._currentIndex++,this._currentIndex>=this._endIndex||this._string.charAt(this._currentIndex)<"0"||this._string.charAt(this._currentIndex)>"9")return;for(;this._currentIndex<this._endIndex&&this._string.charAt(this._currentIndex)>="0"&&this._string.charAt(this._currentIndex)<="9";)d+=(this._string.charAt(this._currentIndex++)-"0")*(c*=.1)}if(this._currentIndex!=g&&this._currentIndex+1<this._endIndex&&("e"==this._string.charAt(this._currentIndex)||"E"==this._string.charAt(this._currentIndex))&&"x"!=this._string.charAt(this._currentIndex+1)&&"m"!=this._string.charAt(this._currentIndex+1)){if(this._currentIndex++,"+"==this._string.charAt(this._currentIndex)?this._currentIndex++:"-"==this._string.charAt(this._currentIndex)&&(this._currentIndex++,f=-1),this._currentIndex>=this._endIndex||this._string.charAt(this._currentIndex)<"0"||this._string.charAt(this._currentIndex)>"9")return;for(;this._currentIndex<this._endIndex&&this._string.charAt(this._currentIndex)>="0"&&this._string.charAt(this._currentIndex)<="9";)a*=10,a+=this._string.charAt(this._currentIndex)-"0",this._currentIndex++}var k=b+d;if(k*=e,a&&(k*=Math.pow(10,f*a)),g!=this._currentIndex)return this._skipOptionalSpacesOrDelimiter(),k}},d.prototype._parseArcFlag=function(){if(!(this._currentIndex>=this._endIndex)){var a=!1,b=this._string.charAt(this._currentIndex++);if("0"==b)a=!1;else{if("1"!=b)return;a=!0}return this._skipOptionalSpacesOrDelimiter(),a}},d.prototype.parseSegment=function(){var a=this._string[this._currentIndex],c=this._pathSegTypeFromChar(a);if(c==SVGPathSeg.PATHSEG_UNKNOWN){if(this._previousCommand==SVGPathSeg.PATHSEG_UNKNOWN)return null;if(c=this._nextCommandHelper(a,this._previousCommand),c==SVGPathSeg.PATHSEG_UNKNOWN)return null}else this._currentIndex++;switch(this._previousCommand=c,c){case SVGPathSeg.PATHSEG_MOVETO_REL:return new SVGPathSegMovetoRel(b,this._parseNumber(),this._parseNumber());case SVGPathSeg.PATHSEG_MOVETO_ABS:return new SVGPathSegMovetoAbs(b,this._parseNumber(),this._parseNumber());case SVGPathSeg.PATHSEG_LINETO_REL:return new SVGPathSegLinetoRel(b,this._parseNumber(),this._parseNumber());case SVGPathSeg.PATHSEG_LINETO_ABS:return new SVGPathSegLinetoAbs(b,this._parseNumber(),this._parseNumber());case SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL:return new SVGPathSegLinetoHorizontalRel(b,this._parseNumber());case SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS:return new SVGPathSegLinetoHorizontalAbs(b,this._parseNumber());case SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL:return new SVGPathSegLinetoVerticalRel(b,this._parseNumber());case SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS:return new SVGPathSegLinetoVerticalAbs(b,this._parseNumber());case SVGPathSeg.PATHSEG_CLOSEPATH:return this._skipOptionalSpaces(),new SVGPathSegClosePath(b);case SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL:var d={x1:this._parseNumber(),y1:this._parseNumber(),x2:this._parseNumber(),y2:this._parseNumber(),x:this._parseNumber(),y:this._parseNumber()};return new SVGPathSegCurvetoCubicRel(b,d.x,d.y,d.x1,d.y1,d.x2,d.y2);case SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS:var d={x1:this._parseNumber(),y1:this._parseNumber(),x2:this._parseNumber(),y2:this._parseNumber(),x:this._parseNumber(),y:this._parseNumber()};return new SVGPathSegCurvetoCubicAbs(b,d.x,d.y,d.x1,d.y1,d.x2,d.y2);case SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL:var d={x2:this._parseNumber(),y2:this._parseNumber(),x:this._parseNumber(),y:this._parseNumber()};return new SVGPathSegCurvetoCubicSmoothRel(b,d.x,d.y,d.x2,d.y2);case SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS:var d={x2:this._parseNumber(),y2:this._parseNumber(),x:this._parseNumber(),y:this._parseNumber()};return new SVGPathSegCurvetoCubicSmoothAbs(b,d.x,d.y,d.x2,d.y2);case SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL:var d={x1:this._parseNumber(),y1:this._parseNumber(),x:this._parseNumber(),y:this._parseNumber()};return new SVGPathSegCurvetoQuadraticRel(b,d.x,d.y,d.x1,d.y1);case SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS:var d={x1:this._parseNumber(),y1:this._parseNumber(),x:this._parseNumber(),y:this._parseNumber()};return new SVGPathSegCurvetoQuadraticAbs(b,d.x,d.y,d.x1,d.y1);case SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL:return new SVGPathSegCurvetoQuadraticSmoothRel(b,this._parseNumber(),this._parseNumber());case SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS:return new SVGPathSegCurvetoQuadraticSmoothAbs(b,this._parseNumber(),this._parseNumber());case SVGPathSeg.PATHSEG_ARC_REL:var d={x1:this._parseNumber(),y1:this._parseNumber(),arcAngle:this._parseNumber(),arcLarge:this._parseArcFlag(),arcSweep:this._parseArcFlag(),x:this._parseNumber(),y:this._parseNumber()};return new SVGPathSegArcRel(b,d.x,d.y,d.x1,d.y1,d.arcAngle,d.arcLarge,d.arcSweep);case SVGPathSeg.PATHSEG_ARC_ABS:var d={x1:this._parseNumber(),y1:this._parseNumber(),arcAngle:this._parseNumber(),arcLarge:this._parseArcFlag(),arcSweep:this._parseArcFlag(),x:this._parseNumber(),y:this._parseNumber()};return new SVGPathSegArcAbs(b,d.x,d.y,d.x1,d.y1,d.arcAngle,d.arcLarge,d.arcSweep);default:throw"Unknown path seg type."}};var e=new c,f=new d(a);if(!f.initialCommandIsMoveTo())return[];for(;f.hasMoreData();){var g=f.parseSegment();if(!g)return[];e.appendSegment(g)}return e.pathSegList})}(),"function"==typeof define&&define.amd?define("c3",["d3"],function(){return k}):"undefined"!=typeof exports&&"undefined"!=typeof module?module.exports=k:a.c3=k}(window);
2315 SVGPathSeg.call(this,SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL,"v",a),this._y=b},SVGPathSegLinetoVerticalRel.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegLinetoVerticalRel.prototype.toString=function(){return"[object SVGPathSegLinetoVerticalRel]"},SVGPathSegLinetoVerticalRel.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._y},SVGPathSegLinetoVerticalRel.prototype.clone=function(){return new SVGPathSegLinetoVerticalRel(void 0,this._y)},Object.defineProperty(SVGPathSegLinetoVerticalRel.prototype,"y",{get:function(){return this._y},set:function(a){this._y=a,this._segmentChanged()},enumerable:!0}),a.SVGPathSegCurvetoCubicSmoothAbs=function(a,b,c,d,e){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS,"S",a),this._x=b,this._y=c,this._x2=d,this._y2=e},SVGPathSegCurvetoCubicSmoothAbs.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegCurvetoCubicSmoothAbs.prototype.toString=function(){return"[object SVGPathSegCurvetoCubicSmoothAbs]"},SVGPathSegCurvetoCubicSmoothAbs.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x2+" "+this._y2+" "+this._x+" "+this._y},SVGPathSegCurvetoCubicSmoothAbs.prototype.clone=function(){return new SVGPathSegCurvetoCubicSmoothAbs(void 0,this._x,this._y,this._x2,this._y2)},Object.defineProperty(SVGPathSegCurvetoCubicSmoothAbs.prototype,"x",{get:function(){return this._x},set:function(a){this._x=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicSmoothAbs.prototype,"y",{get:function(){return this._y},set:function(a){this._y=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicSmoothAbs.prototype,"x2",{get:function(){return this._x2},set:function(a){this._x2=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicSmoothAbs.prototype,"y2",{get:function(){return this._y2},set:function(a){this._y2=a,this._segmentChanged()},enumerable:!0}),a.SVGPathSegCurvetoCubicSmoothRel=function(a,b,c,d,e){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL,"s",a),this._x=b,this._y=c,this._x2=d,this._y2=e},SVGPathSegCurvetoCubicSmoothRel.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegCurvetoCubicSmoothRel.prototype.toString=function(){return"[object SVGPathSegCurvetoCubicSmoothRel]"},SVGPathSegCurvetoCubicSmoothRel.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x2+" "+this._y2+" "+this._x+" "+this._y},SVGPathSegCurvetoCubicSmoothRel.prototype.clone=function(){return new SVGPathSegCurvetoCubicSmoothRel(void 0,this._x,this._y,this._x2,this._y2)},Object.defineProperty(SVGPathSegCurvetoCubicSmoothRel.prototype,"x",{get:function(){return this._x},set:function(a){this._x=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicSmoothRel.prototype,"y",{get:function(){return this._y},set:function(a){this._y=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicSmoothRel.prototype,"x2",{get:function(){return this._x2},set:function(a){this._x2=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoCubicSmoothRel.prototype,"y2",{get:function(){return this._y2},set:function(a){this._y2=a,this._segmentChanged()},enumerable:!0}),a.SVGPathSegCurvetoQuadraticSmoothAbs=function(a,b,c){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS,"T",a),this._x=b,this._y=c},SVGPathSegCurvetoQuadraticSmoothAbs.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegCurvetoQuadraticSmoothAbs.prototype.toString=function(){return"[object SVGPathSegCurvetoQuadraticSmoothAbs]"},SVGPathSegCurvetoQuadraticSmoothAbs.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x+" "+this._y},SVGPathSegCurvetoQuadraticSmoothAbs.prototype.clone=function(){return new SVGPathSegCurvetoQuadraticSmoothAbs(void 0,this._x,this._y)},Object.defineProperty(SVGPathSegCurvetoQuadraticSmoothAbs.prototype,"x",{get:function(){return this._x},set:function(a){this._x=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoQuadraticSmoothAbs.prototype,"y",{get:function(){return this._y},set:function(a){this._y=a,this._segmentChanged()},enumerable:!0}),a.SVGPathSegCurvetoQuadraticSmoothRel=function(a,b,c){SVGPathSeg.call(this,SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL,"t",a),this._x=b,this._y=c},SVGPathSegCurvetoQuadraticSmoothRel.prototype=Object.create(SVGPathSeg.prototype),SVGPathSegCurvetoQuadraticSmoothRel.prototype.toString=function(){return"[object SVGPathSegCurvetoQuadraticSmoothRel]"},SVGPathSegCurvetoQuadraticSmoothRel.prototype._asPathString=function(){return this.pathSegTypeAsLetter+" "+this._x+" "+this._y},SVGPathSegCurvetoQuadraticSmoothRel.prototype.clone=function(){return new SVGPathSegCurvetoQuadraticSmoothRel(void 0,this._x,this._y)},Object.defineProperty(SVGPathSegCurvetoQuadraticSmoothRel.prototype,"x",{get:function(){return this._x},set:function(a){this._x=a,this._segmentChanged()},enumerable:!0}),Object.defineProperty(SVGPathSegCurvetoQuadraticSmoothRel.prototype,"y",{get:function(){return this._y},set:function(a){this._y=a,this._segmentChanged()},enumerable:!0}),SVGPathElement.prototype.createSVGPathSegClosePath=function(){return new SVGPathSegClosePath(void 0)},SVGPathElement.prototype.createSVGPathSegMovetoAbs=function(a,b){return new SVGPathSegMovetoAbs(void 0,a,b)},SVGPathElement.prototype.createSVGPathSegMovetoRel=function(a,b){return new SVGPathSegMovetoRel(void 0,a,b)},SVGPathElement.prototype.createSVGPathSegLinetoAbs=function(a,b){return new SVGPathSegLinetoAbs(void 0,a,b)},SVGPathElement.prototype.createSVGPathSegLinetoRel=function(a,b){return new SVGPathSegLinetoRel(void 0,a,b)},SVGPathElement.prototype.createSVGPathSegCurvetoCubicAbs=function(a,b,c,d,e,f){return new SVGPathSegCurvetoCubicAbs(void 0,a,b,c,d,e,f)},SVGPathElement.prototype.createSVGPathSegCurvetoCubicRel=function(a,b,c,d,e,f){return new SVGPathSegCurvetoCubicRel(void 0,a,b,c,d,e,f)},SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticAbs=function(a,b,c,d){return new SVGPathSegCurvetoQuadraticAbs(void 0,a,b,c,d)},SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticRel=function(a,b,c,d){return new SVGPathSegCurvetoQuadraticRel(void 0,a,b,c,d)},SVGPathElement.prototype.createSVGPathSegArcAbs=function(a,b,c,d,e,f,g){return new SVGPathSegArcAbs(void 0,a,b,c,d,e,f,g)},SVGPathElement.prototype.createSVGPathSegArcRel=function(a,b,c,d,e,f,g){return new SVGPathSegArcRel(void 0,a,b,c,d,e,f,g)},SVGPathElement.prototype.createSVGPathSegLinetoHorizontalAbs=function(a){return new SVGPathSegLinetoHorizontalAbs(void 0,a)},SVGPathElement.prototype.createSVGPathSegLinetoHorizontalRel=function(a){return new SVGPathSegLinetoHorizontalRel(void 0,a)},SVGPathElement.prototype.createSVGPathSegLinetoVerticalAbs=function(a){return new SVGPathSegLinetoVerticalAbs(void 0,a)},SVGPathElement.prototype.createSVGPathSegLinetoVerticalRel=function(a){return new SVGPathSegLinetoVerticalRel(void 0,a)},SVGPathElement.prototype.createSVGPathSegCurvetoCubicSmoothAbs=function(a,b,c,d){return new SVGPathSegCurvetoCubicSmoothAbs(void 0,a,b,c,d)},SVGPathElement.prototype.createSVGPathSegCurvetoCubicSmoothRel=function(a,b,c,d){return new SVGPathSegCurvetoCubicSmoothRel(void 0,a,b,c,d)},SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticSmoothAbs=function(a,b){return new SVGPathSegCurvetoQuadraticSmoothAbs(void 0,a,b)},SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticSmoothRel=function(a,b){return new SVGPathSegCurvetoQuadraticSmoothRel(void 0,a,b)}),"SVGPathSegList"in a||(a.SVGPathSegList=function(a){this._pathElement=a,this._list=this._parsePath(this._pathElement.getAttribute("d")),this._mutationObserverConfig={attributes:!0,attributeFilter:["d"]},this._pathElementMutationObserver=new MutationObserver(this._updateListFromPathMutations.bind(this)),this._pathElementMutationObserver.observe(this._pathElement,this._mutationObserverConfig)},Object.defineProperty(SVGPathSegList.prototype,"numberOfItems",{get:function(){return this._checkPathSynchronizedToList(),this._list.length},enumerable:!0}),Object.defineProperty(SVGPathElement.prototype,"pathSegList",{get:function(){return this._pathSegList||(this._pathSegList=new SVGPathSegList(this)),this._pathSegList},enumerable:!0}),Object.defineProperty(SVGPathElement.prototype,"normalizedPathSegList",{get:function(){return this.pathSegList},enumerable:!0}),Object.defineProperty(SVGPathElement.prototype,"animatedPathSegList",{get:function(){return this.pathSegList},enumerable:!0}),Object.defineProperty(SVGPathElement.prototype,"animatedNormalizedPathSegList",{get:function(){return this.pathSegList},enumerable:!0}),SVGPathSegList.prototype._checkPathSynchronizedToList=function(){this._updateListFromPathMutations(this._pathElementMutationObserver.takeRecords())},SVGPathSegList.prototype._updateListFromPathMutations=function(a){if(this._pathElement){var b=!1;a.forEach(function(a){"d"==a.attributeName&&(b=!0)}),b&&(this._list=this._parsePath(this._pathElement.getAttribute("d")))}},SVGPathSegList.prototype._writeListToPath=function(){this._pathElementMutationObserver.disconnect(),this._pathElement.setAttribute("d",SVGPathSegList._pathSegArrayAsString(this._list)),this._pathElementMutationObserver.observe(this._pathElement,this._mutationObserverConfig)},SVGPathSegList.prototype.segmentChanged=function(a){this._writeListToPath()},SVGPathSegList.prototype.clear=function(){this._checkPathSynchronizedToList(),this._list.forEach(function(a){a._owningPathSegList=null}),this._list=[],this._writeListToPath()},SVGPathSegList.prototype.initialize=function(a){return this._checkPathSynchronizedToList(),this._list=[a],a._owningPathSegList=this,this._writeListToPath(),a},SVGPathSegList.prototype._checkValidIndex=function(a){if(isNaN(a)||0>a||a>=this.numberOfItems)throw"INDEX_SIZE_ERR"},SVGPathSegList.prototype.getItem=function(a){return this._checkPathSynchronizedToList(),this._checkValidIndex(a),this._list[a]},SVGPathSegList.prototype.insertItemBefore=function(a,b){return this._checkPathSynchronizedToList(),b>this.numberOfItems&&(b=this.numberOfItems),a._owningPathSegList&&(a=a.clone()),this._list.splice(b,0,a),a._owningPathSegList=this,this._writeListToPath(),a},SVGPathSegList.prototype.replaceItem=function(a,b){return this._checkPathSynchronizedToList(),a._owningPathSegList&&(a=a.clone()),this._checkValidIndex(b),this._list[b]=a,a._owningPathSegList=this,this._writeListToPath(),a},SVGPathSegList.prototype.removeItem=function(a){this._checkPathSynchronizedToList(),this._checkValidIndex(a);var b=this._list[a];return this._list.splice(a,1),this._writeListToPath(),b},SVGPathSegList.prototype.appendItem=function(a){return this._checkPathSynchronizedToList(),a._owningPathSegList&&(a=a.clone()),this._list.push(a),a._owningPathSegList=this,this._writeListToPath(),a},SVGPathSegList._pathSegArrayAsString=function(a){var b="",c=!0;return a.forEach(function(a){c?(c=!1,b+=a._asPathString()):b+=" "+a._asPathString()}),b},SVGPathSegList.prototype._parsePath=function(a){if(!a||0==a.length)return[];var b=this,c=function(){this.pathSegList=[]};c.prototype.appendSegment=function(a){this.pathSegList.push(a)};var d=function(a){this._string=a,this._currentIndex=0,this._endIndex=this._string.length,this._previousCommand=SVGPathSeg.PATHSEG_UNKNOWN,this._skipOptionalSpaces()};d.prototype._isCurrentSpace=function(){var a=this._string[this._currentIndex];return" ">=a&&(" "==a||"\n"==a||" "==a||"\r"==a||"\f"==a)},d.prototype._skipOptionalSpaces=function(){for(;this._currentIndex<this._endIndex&&this._isCurrentSpace();)this._currentIndex++;return this._currentIndex<this._endIndex},d.prototype._skipOptionalSpacesOrDelimiter=function(){return this._currentIndex<this._endIndex&&!this._isCurrentSpace()&&","!=this._string.charAt(this._currentIndex)?!1:(this._skipOptionalSpaces()&&this._currentIndex<this._endIndex&&","==this._string.charAt(this._currentIndex)&&(this._currentIndex++,this._skipOptionalSpaces()),this._currentIndex<this._endIndex)},d.prototype.hasMoreData=function(){return this._currentIndex<this._endIndex},d.prototype.peekSegmentType=function(){var a=this._string[this._currentIndex];return this._pathSegTypeFromChar(a)},d.prototype._pathSegTypeFromChar=function(a){switch(a){case"Z":case"z":return SVGPathSeg.PATHSEG_CLOSEPATH;case"M":return SVGPathSeg.PATHSEG_MOVETO_ABS;case"m":return SVGPathSeg.PATHSEG_MOVETO_REL;case"L":return SVGPathSeg.PATHSEG_LINETO_ABS;case"l":return SVGPathSeg.PATHSEG_LINETO_REL;case"C":return SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS;case"c":return SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL;case"Q":return SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS;case"q":return SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL;case"A":return SVGPathSeg.PATHSEG_ARC_ABS;case"a":return SVGPathSeg.PATHSEG_ARC_REL;case"H":return SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS;case"h":return SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL;case"V":return SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS;case"v":return SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL;case"S":return SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS;case"s":return SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL;case"T":return SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS;case"t":return SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL;default:return SVGPathSeg.PATHSEG_UNKNOWN}},d.prototype._nextCommandHelper=function(a,b){return("+"==a||"-"==a||"."==a||a>="0"&&"9">=a)&&b!=SVGPathSeg.PATHSEG_CLOSEPATH?b==SVGPathSeg.PATHSEG_MOVETO_ABS?SVGPathSeg.PATHSEG_LINETO_ABS:b==SVGPathSeg.PATHSEG_MOVETO_REL?SVGPathSeg.PATHSEG_LINETO_REL:b:SVGPathSeg.PATHSEG_UNKNOWN},d.prototype.initialCommandIsMoveTo=function(){if(!this.hasMoreData())return!0;var a=this.peekSegmentType();return a==SVGPathSeg.PATHSEG_MOVETO_ABS||a==SVGPathSeg.PATHSEG_MOVETO_REL},d.prototype._parseNumber=function(){var a=0,b=0,c=1,d=0,e=1,f=1,g=this._currentIndex;if(this._skipOptionalSpaces(),this._currentIndex<this._endIndex&&"+"==this._string.charAt(this._currentIndex)?this._currentIndex++:this._currentIndex<this._endIndex&&"-"==this._string.charAt(this._currentIndex)&&(this._currentIndex++,e=-1),!(this._currentIndex==this._endIndex||(this._string.charAt(this._currentIndex)<"0"||this._string.charAt(this._currentIndex)>"9")&&"."!=this._string.charAt(this._currentIndex))){for(var h=this._currentIndex;this._currentIndex<this._endIndex&&this._string.charAt(this._currentIndex)>="0"&&this._string.charAt(this._currentIndex)<="9";)this._currentIndex++;if(this._currentIndex!=h)for(var i=this._currentIndex-1,j=1;i>=h;)b+=j*(this._string.charAt(i--)-"0"),j*=10;if(this._currentIndex<this._endIndex&&"."==this._string.charAt(this._currentIndex)){if(this._currentIndex++,this._currentIndex>=this._endIndex||this._string.charAt(this._currentIndex)<"0"||this._string.charAt(this._currentIndex)>"9")return;for(;this._currentIndex<this._endIndex&&this._string.charAt(this._currentIndex)>="0"&&this._string.charAt(this._currentIndex)<="9";)d+=(this._string.charAt(this._currentIndex++)-"0")*(c*=.1)}if(this._currentIndex!=g&&this._currentIndex+1<this._endIndex&&("e"==this._string.charAt(this._currentIndex)||"E"==this._string.charAt(this._currentIndex))&&"x"!=this._string.charAt(this._currentIndex+1)&&"m"!=this._string.charAt(this._currentIndex+1)){if(this._currentIndex++,"+"==this._string.charAt(this._currentIndex)?this._currentIndex++:"-"==this._string.charAt(this._currentIndex)&&(this._currentIndex++,f=-1),this._currentIndex>=this._endIndex||this._string.charAt(this._currentIndex)<"0"||this._string.charAt(this._currentIndex)>"9")return;for(;this._currentIndex<this._endIndex&&this._string.charAt(this._currentIndex)>="0"&&this._string.charAt(this._currentIndex)<="9";)a*=10,a+=this._string.charAt(this._currentIndex)-"0",this._currentIndex++}var k=b+d;if(k*=e,a&&(k*=Math.pow(10,f*a)),g!=this._currentIndex)return this._skipOptionalSpacesOrDelimiter(),k}},d.prototype._parseArcFlag=function(){if(!(this._currentIndex>=this._endIndex)){var a=!1,b=this._string.charAt(this._currentIndex++);if("0"==b)a=!1;else{if("1"!=b)return;a=!0}return this._skipOptionalSpacesOrDelimiter(),a}},d.prototype.parseSegment=function(){var a=this._string[this._currentIndex],c=this._pathSegTypeFromChar(a);if(c==SVGPathSeg.PATHSEG_UNKNOWN){if(this._previousCommand==SVGPathSeg.PATHSEG_UNKNOWN)return null;if(c=this._nextCommandHelper(a,this._previousCommand),c==SVGPathSeg.PATHSEG_UNKNOWN)return null}else this._currentIndex++;switch(this._previousCommand=c,c){case SVGPathSeg.PATHSEG_MOVETO_REL:return new SVGPathSegMovetoRel(b,this._parseNumber(),this._parseNumber());case SVGPathSeg.PATHSEG_MOVETO_ABS:return new SVGPathSegMovetoAbs(b,this._parseNumber(),this._parseNumber());case SVGPathSeg.PATHSEG_LINETO_REL:return new SVGPathSegLinetoRel(b,this._parseNumber(),this._parseNumber());case SVGPathSeg.PATHSEG_LINETO_ABS:return new SVGPathSegLinetoAbs(b,this._parseNumber(),this._parseNumber());case SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL:return new SVGPathSegLinetoHorizontalRel(b,this._parseNumber());case SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS:return new SVGPathSegLinetoHorizontalAbs(b,this._parseNumber());case SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL:return new SVGPathSegLinetoVerticalRel(b,this._parseNumber());case SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS:return new SVGPathSegLinetoVerticalAbs(b,this._parseNumber());case SVGPathSeg.PATHSEG_CLOSEPATH:return this._skipOptionalSpaces(),new SVGPathSegClosePath(b);case SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL:var d={x1:this._parseNumber(),y1:this._parseNumber(),x2:this._parseNumber(),y2:this._parseNumber(),x:this._parseNumber(),y:this._parseNumber()};return new SVGPathSegCurvetoCubicRel(b,d.x,d.y,d.x1,d.y1,d.x2,d.y2);case SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS:var d={x1:this._parseNumber(),y1:this._parseNumber(),x2:this._parseNumber(),y2:this._parseNumber(),x:this._parseNumber(),y:this._parseNumber()};return new SVGPathSegCurvetoCubicAbs(b,d.x,d.y,d.x1,d.y1,d.x2,d.y2);case SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL:var d={x2:this._parseNumber(),y2:this._parseNumber(),x:this._parseNumber(),y:this._parseNumber()};return new SVGPathSegCurvetoCubicSmoothRel(b,d.x,d.y,d.x2,d.y2);case SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS:var d={x2:this._parseNumber(),y2:this._parseNumber(),x:this._parseNumber(),y:this._parseNumber()};return new SVGPathSegCurvetoCubicSmoothAbs(b,d.x,d.y,d.x2,d.y2);case SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL:var d={x1:this._parseNumber(),y1:this._parseNumber(),x:this._parseNumber(),y:this._parseNumber()};return new SVGPathSegCurvetoQuadraticRel(b,d.x,d.y,d.x1,d.y1);case SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS:var d={x1:this._parseNumber(),y1:this._parseNumber(),x:this._parseNumber(),y:this._parseNumber()};return new SVGPathSegCurvetoQuadraticAbs(b,d.x,d.y,d.x1,d.y1);case SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL:return new SVGPathSegCurvetoQuadraticSmoothRel(b,this._parseNumber(),this._parseNumber());case SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS:return new SVGPathSegCurvetoQuadraticSmoothAbs(b,this._parseNumber(),this._parseNumber());case SVGPathSeg.PATHSEG_ARC_REL:var d={x1:this._parseNumber(),y1:this._parseNumber(),arcAngle:this._parseNumber(),arcLarge:this._parseArcFlag(),arcSweep:this._parseArcFlag(),x:this._parseNumber(),y:this._parseNumber()};return new SVGPathSegArcRel(b,d.x,d.y,d.x1,d.y1,d.arcAngle,d.arcLarge,d.arcSweep);case SVGPathSeg.PATHSEG_ARC_ABS:var d={x1:this._parseNumber(),y1:this._parseNumber(),arcAngle:this._parseNumber(),arcLarge:this._parseArcFlag(),arcSweep:this._parseArcFlag(),x:this._parseNumber(),y:this._parseNumber()};return new SVGPathSegArcAbs(b,d.x,d.y,d.x1,d.y1,d.arcAngle,d.arcLarge,d.arcSweep);default:throw"Unknown path seg type."}};var e=new c,f=new d(a);if(!f.initialCommandIsMoveTo())return[];for(;f.hasMoreData();){var g=f.parseSegment();if(!g)return[];e.appendSegment(g)}return e.pathSegList})}(),"function"==typeof define&&define.amd?define("c3",["d3"],function(){return k}):"undefined"!=typeof exports&&"undefined"!=typeof module?module.exports=k:a.c3=k}(window);
2316 ;/**
2316 ;/**
2317 * @version 2.1.8
2317 * @version 2.1.8
2318 * @license MIT
2318 * @license MIT
2319 */
2319 */
2320 !function(t,e){"use strict";t.module("smart-table",[]).run(["$templateCache",function(t){t.put("template/smart-table/pagination.html",'<nav ng-if="numPages && pages.length >= 2"><ul class="pagination"><li ng-repeat="page in pages" ng-class="{active: page==currentPage}"><a href="javascript: void(0);" ng-click="selectPage(page)">{{page}}</a></li></ul></nav>')}]),t.module("smart-table").constant("stConfig",{pagination:{template:"template/smart-table/pagination.html",itemsByPage:10,displayedPages:5},search:{delay:400,inputEvent:"input"},select:{mode:"single",selectedClass:"st-selected"},sort:{ascentClass:"st-sort-ascent",descentClass:"st-sort-descent",descendingFirst:!1,skipNatural:!1,delay:300},pipe:{delay:100}}),t.module("smart-table").controller("stTableController",["$scope","$parse","$filter","$attrs",function(a,n,s,i){function r(t){return t?[].concat(t):[]}function l(){b=r(o(a)),v===!0&&S.pipe()}function c(t,e){if(-1!=e.indexOf(".")){var a=e.split("."),s=a.pop(),i=a.join("."),r=n(i)(t);delete r[s],0==Object.keys(r).length&&c(t,i)}else delete t[e]}var o,u,p,g=i.stTable,d=n(g),f=d.assign,m=s("orderBy"),h=s("filter"),b=r(d(a)),P={sort:{},search:{},pagination:{start:0,totalItemCount:0}},v=!0,S=this;i.stSafeSrc&&(o=n(i.stSafeSrc),a.$watch(function(){var t=o(a);return t&&t.length?t[0]:e},function(t,e){t!==e&&l()}),a.$watch(function(){var t=o(a);return t?t.length:0},function(t){t!==b.length&&l()}),a.$watch(function(){return o(a)},function(t,e){t!==e&&(P.pagination.start=0,l())})),this.sortBy=function(e,a){return P.sort.predicate=e,P.sort.reverse=a===!0,t.isFunction(e)?P.sort.functionName=e.name:delete P.sort.functionName,P.pagination.start=0,this.pipe()},this.search=function(e,a){var s=P.search.predicateObject||{},i=a?a:"$";return e=t.isString(e)?e.trim():e,n(i).assign(s,e),e||c(s,i),P.search.predicateObject=s,P.pagination.start=0,this.pipe()},this.pipe=function(){var t,n=P.pagination;u=P.search.predicateObject?h(b,P.search.predicateObject):b,P.sort.predicate&&(u=m(u,P.sort.predicate,P.sort.reverse)),n.totalItemCount=u.length,n.number!==e&&(n.numberOfPages=u.length>0?Math.ceil(u.length/n.number):1,n.start=n.start>=u.length?(n.numberOfPages-1)*n.number:n.start,t=u.slice(n.start,n.start+parseInt(n.number))),f(a,t||u)},this.select=function(t,n){var s=r(d(a)),i=s.indexOf(t);-1!==i&&("single"===n?(t.isSelected=t.isSelected!==!0,p&&(p.isSelected=!1),p=t.isSelected===!0?t:e):s[i].isSelected=!s[i].isSelected)},this.slice=function(t,e){return P.pagination.start=t,P.pagination.number=e,this.pipe()},this.tableState=function(){return P},this.getFilteredCollection=function(){return u||b},this.setFilterFunction=function(t){h=s(t)},this.setSortFunction=function(t){m=s(t)},this.preventPipeOnWatch=function(){v=!1}}]).directive("stTable",function(){return{restrict:"A",controller:"stTableController",link:function(t,e,a,n){a.stSetFilter&&n.setFilterFunction(a.stSetFilter),a.stSetSort&&n.setSortFunction(a.stSetSort)}}}),t.module("smart-table").directive("stSearch",["stConfig","$timeout","$parse",function(t,e,a){return{require:"^stTable",link:function(n,s,i,r){var l=r,c=null,o=i.stDelay||t.search.delay,u=i.stInputEvent||t.search.inputEvent;i.$observe("stSearch",function(t,e){var a=s[0].value;t!==e&&a&&(r.tableState().search={},l.search(a,t))}),n.$watch(function(){return r.tableState().search},function(t){var e=i.stSearch||"$";t.predicateObject&&a(e)(t.predicateObject)!==s[0].value&&(s[0].value=a(e)(t.predicateObject)||"")},!0),s.bind(u,function(t){t=t.originalEvent||t,null!==c&&e.cancel(c),c=e(function(){l.search(t.target.value,i.stSearch||""),c=null},o)})}}}]),t.module("smart-table").directive("stSelectRow",["stConfig",function(t){return{restrict:"A",require:"^stTable",scope:{row:"=stSelectRow"},link:function(e,a,n,s){var i=n.stSelectMode||t.select.mode;a.bind("click",function(){e.$apply(function(){s.select(e.row,i)})}),e.$watch("row.isSelected",function(e){e===!0?a.addClass(t.select.selectedClass):a.removeClass(t.select.selectedClass)})}}}]),t.module("smart-table").directive("stSort",["stConfig","$parse","$timeout",function(a,n,s){return{restrict:"A",require:"^stTable",link:function(i,r,l,c){function o(){P?d=0===d?2:d-1:d++;var e;p=t.isFunction(g(i))||t.isArray(g(i))?g(i):l.stSort,d%3===0&&!!b!=!0?(d=0,c.tableState().sort={},c.tableState().pagination.start=0,e=c.pipe.bind(c)):e=c.sortBy.bind(c,p,d%2===0),null!==v&&s.cancel(v),0>S?e():v=s(e,S)}var u,p=l.stSort,g=n(p),d=0,f=l.stClassAscent||a.sort.ascentClass,m=l.stClassDescent||a.sort.descentClass,h=[f,m],b=l.stSkipNatural!==e?l.stSkipNatural:a.sort.skipNatural,P=l.stDescendingFirst!==e?l.stDescendingFirst:a.sort.descendingFirst,v=null,S=l.stDelay||a.sort.delay;l.stSortDefault&&(u=i.$eval(l.stSortDefault)!==e?i.$eval(l.stSortDefault):l.stSortDefault),r.bind("click",function(){p&&i.$apply(o)}),u&&(d="reverse"===u?1:0,o()),i.$watch(function(){return c.tableState().sort},function(t){t.predicate!==p?(d=0,r.removeClass(f).removeClass(m)):(d=t.reverse===!0?2:1,r.removeClass(h[d%2]).addClass(h[d-1]))},!0)}}}]),t.module("smart-table").directive("stPagination",["stConfig",function(t){return{restrict:"EA",require:"^stTable",scope:{stItemsByPage:"=?",stDisplayedPages:"=?",stPageChange:"&"},templateUrl:function(e,a){return a.stTemplate?a.stTemplate:t.pagination.template},link:function(e,a,n,s){function i(){var t,a,n=s.tableState().pagination,i=1,r=e.currentPage;for(e.totalItemCount=n.totalItemCount,e.currentPage=Math.floor(n.start/n.number)+1,i=Math.max(i,e.currentPage-Math.abs(Math.floor(e.stDisplayedPages/2))),t=i+e.stDisplayedPages,t>n.numberOfPages&&(t=n.numberOfPages+1,i=Math.max(1,t-e.stDisplayedPages)),e.pages=[],e.numPages=n.numberOfPages,a=i;t>a;a++)e.pages.push(a);r!==e.currentPage&&e.stPageChange({newPage:e.currentPage})}e.stItemsByPage=e.stItemsByPage?+e.stItemsByPage:t.pagination.itemsByPage,e.stDisplayedPages=e.stDisplayedPages?+e.stDisplayedPages:t.pagination.displayedPages,e.currentPage=1,e.pages=[],e.$watch(function(){return s.tableState().pagination},i,!0),e.$watch("stItemsByPage",function(t,a){t!==a&&e.selectPage(1)}),e.$watch("stDisplayedPages",i),e.selectPage=function(t){t>0&&t<=e.numPages&&s.slice((t-1)*e.stItemsByPage,e.stItemsByPage)},s.tableState().pagination.number||s.slice(0,e.stItemsByPage)}}}]),t.module("smart-table").directive("stPipe",["stConfig","$timeout",function(e,a){return{require:"stTable",scope:{stPipe:"="},link:{pre:function(n,s,i,r){var l=null;t.isFunction(n.stPipe)&&(r.preventPipeOnWatch(),r.pipe=function(){return null!==l&&a.cancel(l),l=a(function(){n.stPipe(r.tableState(),r)},e.pipe.delay)})},post:function(t,e,a,n){n.pipe()}}}}])}(angular);
2320 !function(t,e){"use strict";t.module("smart-table",[]).run(["$templateCache",function(t){t.put("template/smart-table/pagination.html",'<nav ng-if="numPages && pages.length >= 2"><ul class="pagination"><li ng-repeat="page in pages" ng-class="{active: page==currentPage}"><a href="javascript: void(0);" ng-click="selectPage(page)">{{page}}</a></li></ul></nav>')}]),t.module("smart-table").constant("stConfig",{pagination:{template:"template/smart-table/pagination.html",itemsByPage:10,displayedPages:5},search:{delay:400,inputEvent:"input"},select:{mode:"single",selectedClass:"st-selected"},sort:{ascentClass:"st-sort-ascent",descentClass:"st-sort-descent",descendingFirst:!1,skipNatural:!1,delay:300},pipe:{delay:100}}),t.module("smart-table").controller("stTableController",["$scope","$parse","$filter","$attrs",function(a,n,s,i){function r(t){return t?[].concat(t):[]}function l(){b=r(o(a)),v===!0&&S.pipe()}function c(t,e){if(-1!=e.indexOf(".")){var a=e.split("."),s=a.pop(),i=a.join("."),r=n(i)(t);delete r[s],0==Object.keys(r).length&&c(t,i)}else delete t[e]}var o,u,p,g=i.stTable,d=n(g),f=d.assign,m=s("orderBy"),h=s("filter"),b=r(d(a)),P={sort:{},search:{},pagination:{start:0,totalItemCount:0}},v=!0,S=this;i.stSafeSrc&&(o=n(i.stSafeSrc),a.$watch(function(){var t=o(a);return t&&t.length?t[0]:e},function(t,e){t!==e&&l()}),a.$watch(function(){var t=o(a);return t?t.length:0},function(t){t!==b.length&&l()}),a.$watch(function(){return o(a)},function(t,e){t!==e&&(P.pagination.start=0,l())})),this.sortBy=function(e,a){return P.sort.predicate=e,P.sort.reverse=a===!0,t.isFunction(e)?P.sort.functionName=e.name:delete P.sort.functionName,P.pagination.start=0,this.pipe()},this.search=function(e,a){var s=P.search.predicateObject||{},i=a?a:"$";return e=t.isString(e)?e.trim():e,n(i).assign(s,e),e||c(s,i),P.search.predicateObject=s,P.pagination.start=0,this.pipe()},this.pipe=function(){var t,n=P.pagination;u=P.search.predicateObject?h(b,P.search.predicateObject):b,P.sort.predicate&&(u=m(u,P.sort.predicate,P.sort.reverse)),n.totalItemCount=u.length,n.number!==e&&(n.numberOfPages=u.length>0?Math.ceil(u.length/n.number):1,n.start=n.start>=u.length?(n.numberOfPages-1)*n.number:n.start,t=u.slice(n.start,n.start+parseInt(n.number))),f(a,t||u)},this.select=function(t,n){var s=r(d(a)),i=s.indexOf(t);-1!==i&&("single"===n?(t.isSelected=t.isSelected!==!0,p&&(p.isSelected=!1),p=t.isSelected===!0?t:e):s[i].isSelected=!s[i].isSelected)},this.slice=function(t,e){return P.pagination.start=t,P.pagination.number=e,this.pipe()},this.tableState=function(){return P},this.getFilteredCollection=function(){return u||b},this.setFilterFunction=function(t){h=s(t)},this.setSortFunction=function(t){m=s(t)},this.preventPipeOnWatch=function(){v=!1}}]).directive("stTable",function(){return{restrict:"A",controller:"stTableController",link:function(t,e,a,n){a.stSetFilter&&n.setFilterFunction(a.stSetFilter),a.stSetSort&&n.setSortFunction(a.stSetSort)}}}),t.module("smart-table").directive("stSearch",["stConfig","$timeout","$parse",function(t,e,a){return{require:"^stTable",link:function(n,s,i,r){var l=r,c=null,o=i.stDelay||t.search.delay,u=i.stInputEvent||t.search.inputEvent;i.$observe("stSearch",function(t,e){var a=s[0].value;t!==e&&a&&(r.tableState().search={},l.search(a,t))}),n.$watch(function(){return r.tableState().search},function(t){var e=i.stSearch||"$";t.predicateObject&&a(e)(t.predicateObject)!==s[0].value&&(s[0].value=a(e)(t.predicateObject)||"")},!0),s.bind(u,function(t){t=t.originalEvent||t,null!==c&&e.cancel(c),c=e(function(){l.search(t.target.value,i.stSearch||""),c=null},o)})}}}]),t.module("smart-table").directive("stSelectRow",["stConfig",function(t){return{restrict:"A",require:"^stTable",scope:{row:"=stSelectRow"},link:function(e,a,n,s){var i=n.stSelectMode||t.select.mode;a.bind("click",function(){e.$apply(function(){s.select(e.row,i)})}),e.$watch("row.isSelected",function(e){e===!0?a.addClass(t.select.selectedClass):a.removeClass(t.select.selectedClass)})}}}]),t.module("smart-table").directive("stSort",["stConfig","$parse","$timeout",function(a,n,s){return{restrict:"A",require:"^stTable",link:function(i,r,l,c){function o(){P?d=0===d?2:d-1:d++;var e;p=t.isFunction(g(i))||t.isArray(g(i))?g(i):l.stSort,d%3===0&&!!b!=!0?(d=0,c.tableState().sort={},c.tableState().pagination.start=0,e=c.pipe.bind(c)):e=c.sortBy.bind(c,p,d%2===0),null!==v&&s.cancel(v),0>S?e():v=s(e,S)}var u,p=l.stSort,g=n(p),d=0,f=l.stClassAscent||a.sort.ascentClass,m=l.stClassDescent||a.sort.descentClass,h=[f,m],b=l.stSkipNatural!==e?l.stSkipNatural:a.sort.skipNatural,P=l.stDescendingFirst!==e?l.stDescendingFirst:a.sort.descendingFirst,v=null,S=l.stDelay||a.sort.delay;l.stSortDefault&&(u=i.$eval(l.stSortDefault)!==e?i.$eval(l.stSortDefault):l.stSortDefault),r.bind("click",function(){p&&i.$apply(o)}),u&&(d="reverse"===u?1:0,o()),i.$watch(function(){return c.tableState().sort},function(t){t.predicate!==p?(d=0,r.removeClass(f).removeClass(m)):(d=t.reverse===!0?2:1,r.removeClass(h[d%2]).addClass(h[d-1]))},!0)}}}]),t.module("smart-table").directive("stPagination",["stConfig",function(t){return{restrict:"EA",require:"^stTable",scope:{stItemsByPage:"=?",stDisplayedPages:"=?",stPageChange:"&"},templateUrl:function(e,a){return a.stTemplate?a.stTemplate:t.pagination.template},link:function(e,a,n,s){function i(){var t,a,n=s.tableState().pagination,i=1,r=e.currentPage;for(e.totalItemCount=n.totalItemCount,e.currentPage=Math.floor(n.start/n.number)+1,i=Math.max(i,e.currentPage-Math.abs(Math.floor(e.stDisplayedPages/2))),t=i+e.stDisplayedPages,t>n.numberOfPages&&(t=n.numberOfPages+1,i=Math.max(1,t-e.stDisplayedPages)),e.pages=[],e.numPages=n.numberOfPages,a=i;t>a;a++)e.pages.push(a);r!==e.currentPage&&e.stPageChange({newPage:e.currentPage})}e.stItemsByPage=e.stItemsByPage?+e.stItemsByPage:t.pagination.itemsByPage,e.stDisplayedPages=e.stDisplayedPages?+e.stDisplayedPages:t.pagination.displayedPages,e.currentPage=1,e.pages=[],e.$watch(function(){return s.tableState().pagination},i,!0),e.$watch("stItemsByPage",function(t,a){t!==a&&e.selectPage(1)}),e.$watch("stDisplayedPages",i),e.selectPage=function(t){t>0&&t<=e.numPages&&s.slice((t-1)*e.stItemsByPage,e.stItemsByPage)},s.tableState().pagination.number||s.slice(0,e.stItemsByPage)}}}]),t.module("smart-table").directive("stPipe",["stConfig","$timeout",function(e,a){return{require:"stTable",scope:{stPipe:"="},link:{pre:function(n,s,i,r){var l=null;t.isFunction(n.stPipe)&&(r.preventPipeOnWatch(),r.pipe=function(){return null!==l&&a.cancel(l),l=a(function(){n.stPipe(r.tableState(),r)},e.pipe.delay)})},post:function(t,e,a,n){n.pipe()}}}}])}(angular);
2321 //# sourceMappingURL=smart-table.min.js.map
2321 //# sourceMappingURL=smart-table.min.js.map
2322
2322
2323 ;"use strict";angular.module("mentio",[]).directive("mentio",["mentioUtil","$document","$compile","$log","$timeout",function(e,t,n,r,i){return{restrict:"A",scope:{macros:"=mentioMacros",search:"&mentioSearch",select:"&mentioSelect",items:"=mentioItems",typedTerm:"=mentioTypedTerm",altId:"=mentioId",iframeElement:"=mentioIframeElement",requireLeadingSpace:"=mentioRequireLeadingSpace",selectNotFound:"=mentioSelectNotFound",trimTerm:"=mentioTrimTerm",ngModel:"="},controller:["$scope","$timeout","$attrs",function(n,r,i){n.query=function(e,t){var r=n.triggerCharMap[e];(void 0===n.trimTerm||n.trimTerm)&&(t=t.trim()),r.showMenu(),r.search({term:t}),r.typedTerm=t},n.defaultSearch=function(e){var t=[];angular.forEach(n.items,function(n){n.label.toUpperCase().indexOf(e.term.toUpperCase())>=0&&t.push(n)}),n.localItems=t},n.bridgeSearch=function(e){var t=i.mentioSearch?n.search:n.defaultSearch;t({term:e})},n.defaultSelect=function(e){return n.defaultTriggerChar+e.item.label},n.bridgeSelect=function(e){var t=i.mentioSelect?n.select:n.defaultSelect;return t({item:e})},n.setTriggerText=function(e){n.syncTriggerText&&(n.typedTerm=void 0===n.trimTerm||n.trimTerm?e.trim():e)},n.context=function(){return n.iframeElement?{iframe:n.iframeElement}:void 0},n.replaceText=function(t,i){if(n.hideAll(),e.replaceTriggerText(n.context(),n.targetElement,n.targetElementPath,n.targetElementSelectedOffset,n.triggerCharSet,t,n.requireLeadingSpace,i),!i&&(n.setTriggerText(""),angular.element(n.targetElement).triggerHandler("change"),n.isContentEditable())){n.contentEditableMenuPasted=!0;var o=r(function(){n.contentEditableMenuPasted=!1},200);n.$on("$destroy",function(){r.cancel(o)})}},n.hideAll=function(){for(var e in n.triggerCharMap)n.triggerCharMap.hasOwnProperty(e)&&n.triggerCharMap[e].hideMenu()},n.getActiveMenuScope=function(){for(var e in n.triggerCharMap)if(n.triggerCharMap.hasOwnProperty(e)&&n.triggerCharMap[e].visible)return n.triggerCharMap[e];return null},n.selectActive=function(){for(var e in n.triggerCharMap)n.triggerCharMap.hasOwnProperty(e)&&n.triggerCharMap[e].visible&&n.triggerCharMap[e].selectActive()},n.isActive=function(){for(var e in n.triggerCharMap)if(n.triggerCharMap.hasOwnProperty(e)&&n.triggerCharMap[e].visible)return!0;return!1},n.isContentEditable=function(){return"INPUT"!==n.targetElement.nodeName&&"TEXTAREA"!==n.targetElement.nodeName},n.replaceMacro=function(t,i){i?e.replaceMacroText(n.context(),n.targetElement,n.targetElementPath,n.targetElementSelectedOffset,n.macros,n.macros[t]):(n.replacingMacro=!0,n.timer=r(function(){e.replaceMacroText(n.context(),n.targetElement,n.targetElementPath,n.targetElementSelectedOffset,n.macros,n.macros[t]),angular.element(n.targetElement).triggerHandler("change"),n.replacingMacro=!1},300),n.$on("$destroy",function(){r.cancel(n.timer)}))},n.addMenu=function(e){e.parentScope&&n.triggerCharMap.hasOwnProperty(e.triggerChar)||(n.triggerCharMap[e.triggerChar]=e,void 0===n.triggerCharSet&&(n.triggerCharSet=[]),n.triggerCharSet.push(e.triggerChar),e.setParent(n))},n.$on("menuCreated",function(e,t){(void 0!==i.id||void 0!==i.mentioId)&&(i.id===t.targetElement||void 0!==i.mentioId&&n.altId===t.targetElement)&&n.addMenu(t.scope)}),t.on("click",function(){n.isActive()&&n.$apply(function(){n.hideAll()})}),t.on("keydown keypress paste",function(e){var t=n.getActiveMenuScope();t&&((9===e.which||13===e.which)&&(e.preventDefault(),t.selectActive()),27===e.which&&(e.preventDefault(),t.$apply(function(){t.hideMenu()})),40===e.which&&(e.preventDefault(),t.$apply(function(){t.activateNextItem()}),t.adjustScroll(1)),38===e.which&&(e.preventDefault(),t.$apply(function(){t.activatePreviousItem()}),t.adjustScroll(-1)),(37===e.which||39===e.which)&&e.preventDefault())})}],link:function(t,o,a){function c(e){function n(e){e.preventDefault(),e.stopPropagation(),e.stopImmediatePropagation()}var r=t.getActiveMenuScope();if(r){if(9===e.which||13===e.which)return n(e),r.selectActive(),!1;if(27===e.which)return n(e),r.$apply(function(){r.hideMenu()}),!1;if(40===e.which)return n(e),r.$apply(function(){r.activateNextItem()}),r.adjustScroll(1),!1;if(38===e.which)return n(e),r.$apply(function(){r.activatePreviousItem()}),r.adjustScroll(-1),!1;if(37===e.which||39===e.which)return n(e),!1}}if(t.triggerCharMap={},t.targetElement=o,a.$set("autocomplete","off"),a.mentioItems){t.localItems=[],t.parentScope=t;var l=a.mentioSearch?' mentio-items="items"':' mentio-items="localItems"';t.defaultTriggerChar=a.mentioTriggerChar?t.$eval(a.mentioTriggerChar):"@";var s='<mentio-menu mentio-search="bridgeSearch(term)" mentio-select="bridgeSelect(item)"'+l;a.mentioTemplateUrl&&(s=s+' mentio-template-url="'+a.mentioTemplateUrl+'"'),s=s+" mentio-trigger-char=\"'"+t.defaultTriggerChar+'\'" mentio-parent-scope="parentScope"/>';var m=n(s),u=m(t);o.parent().append(u),t.$on("$destroy",function(){u.remove()})}a.mentioTypedTerm&&(t.syncTriggerText=!0),t.$watch("iframeElement",function(e){if(e){var n=e.contentWindow.document;n.addEventListener("click",function(){t.isActive()&&t.$apply(function(){t.hideAll()})}),n.addEventListener("keydown",c,!0),t.$on("$destroy",function(){n.removeEventListener("keydown",c)})}}),t.$watch("ngModel",function(n){if(n&&""!==n||t.isActive()){if(void 0===t.triggerCharSet)return void r.error("Error, no mentio-items attribute was provided, and no separate mentio-menus were specified. Nothing to do.");if(t.contentEditableMenuPasted)return void(t.contentEditableMenuPasted=!1);t.replacingMacro&&(i.cancel(t.timer),t.replacingMacro=!1);var o=t.isActive(),a=t.isContentEditable(),c=e.getTriggerInfo(t.context(),t.triggerCharSet,t.requireLeadingSpace,o);if(void 0!==c&&(!o||o&&(a&&c.mentionTriggerChar===t.currentMentionTriggerChar||!a&&c.mentionPosition===t.currentMentionPosition)))c.mentionSelectedElement&&(t.targetElement=c.mentionSelectedElement,t.targetElementPath=c.mentionSelectedPath,t.targetElementSelectedOffset=c.mentionSelectedOffset),t.setTriggerText(c.mentionText),t.currentMentionPosition=c.mentionPosition,t.currentMentionTriggerChar=c.mentionTriggerChar,t.query(c.mentionTriggerChar,c.mentionText);else{var l=t.typedTerm;t.setTriggerText(""),t.hideAll();var s=e.getMacroMatch(t.context(),t.macros);if(void 0!==s)t.targetElement=s.macroSelectedElement,t.targetElementPath=s.macroSelectedPath,t.targetElementSelectedOffset=s.macroSelectedOffset,t.replaceMacro(s.macroText,s.macroHasTrailingSpace);else if(t.selectNotFound&&l&&""!==l){var m=t.triggerCharMap[t.currentMentionTriggerChar];if(m){var u=m.select({item:{label:l}});"function"==typeof u.then?u.then(t.replaceText):t.replaceText(u,!0)}}}}})}}}]).directive("mentioMenu",["mentioUtil","$rootScope","$log","$window","$document",function(e,t,n,r,i){return{restrict:"E",scope:{search:"&mentioSearch",select:"&mentioSelect",items:"=mentioItems",triggerChar:"=mentioTriggerChar",forElem:"=mentioFor",parentScope:"=mentioParentScope"},templateUrl:function(e,t){return void 0!==t.mentioTemplateUrl?t.mentioTemplateUrl:"mentio-menu.tpl.html"},controller:["$scope",function(e){e.visible=!1,this.activate=e.activate=function(t){e.activeItem=t},this.isActive=e.isActive=function(t){return e.activeItem===t},this.selectItem=e.selectItem=function(t){var n=e.select({item:t});"function"==typeof n.then?n.then(e.parentMentio.replaceText):e.parentMentio.replaceText(n)},e.activateNextItem=function(){var t=e.items.indexOf(e.activeItem);this.activate(e.items[(t+1)%e.items.length])},e.activatePreviousItem=function(){var t=e.items.indexOf(e.activeItem);this.activate(e.items[0===t?e.items.length-1:t-1])},e.isFirstItemActive=function(){var t=e.items.indexOf(e.activeItem);return 0===t},e.isLastItemActive=function(){var t=e.items.indexOf(e.activeItem);return t===e.items.length-1},e.selectActive=function(){e.selectItem(e.activeItem)},e.isVisible=function(){return e.visible},e.showMenu=function(){e.visible||(e.requestVisiblePendingSearch=!0)},e.setParent=function(t){e.parentMentio=t,e.targetElement=t.targetElement}}],link:function(o,a){if(a[0].parentNode.removeChild(a[0]),i[0].body.appendChild(a[0]),o.menuElement=a,o.parentScope)o.parentScope.addMenu(o);else{if(!o.forElem)return void n.error("mentio-menu requires a target element in tbe mentio-for attribute");if(!o.triggerChar)return void n.error("mentio-menu requires a trigger char");t.$broadcast("menuCreated",{targetElement:o.forElem,scope:o})}angular.element(r).bind("resize",function(){if(o.isVisible()){var t=[];t.push(o.triggerChar),e.popUnderMention(o.parentMentio.context(),t,a,o.requireLeadingSpace)}}),o.$watch("items",function(e){e&&e.length>0?(o.activate(e[0]),!o.visible&&o.requestVisiblePendingSearch&&(o.visible=!0,o.requestVisiblePendingSearch=!1)):o.hideMenu()}),o.$watch("isVisible()",function(t){if(t){var n=[];n.push(o.triggerChar),e.popUnderMention(o.parentMentio.context(),n,a,o.requireLeadingSpace)}}),o.parentMentio.$on("$destroy",function(){a.remove()}),o.hideMenu=function(){o.visible=!1,a.css("display","none")},o.adjustScroll=function(e){var t=a[0],n=t.querySelector("ul"),r=t.querySelector("[mentio-menu-item].active")||t.querySelector("[data-mentio-menu-item].active");return o.isFirstItemActive()?n.scrollTop=0:o.isLastItemActive()?n.scrollTop=n.scrollHeight:void(1===e?n.scrollTop+=r.offsetHeight:n.scrollTop-=r.offsetHeight)}}}}]).directive("mentioMenuItem",function(){return{restrict:"A",scope:{item:"=mentioMenuItem"},require:"^mentioMenu",link:function(e,t,n,r){e.$watch(function(){return r.isActive(e.item)},function(e){e?t.addClass("active"):t.removeClass("active")}),t.bind("mouseenter",function(){e.$apply(function(){r.activate(e.item)})}),t.bind("click",function(){return r.selectItem(e.item),!1})}}}).filter("unsafe",["$sce",function(e){return function(t){return e.trustAsHtml(t)}}]).filter("mentioHighlight",function(){function e(e){return e.replace(/([.?*+^$[\]\\(){}|-])/g,"\\$1")}return function(t,n,r){if(n){var i=r?'<span class="'+r+'">$&</span>':"<strong>$&</strong>";return(""+t).replace(new RegExp(e(n),"gi"),i)}return t}}),angular.module("mentio").factory("mentioUtil",["$window","$location","$anchorScroll","$timeout",function(e,t,n,r){function i(e,t,n,i){var c,l=h(e,t,i,!1);void 0!==l?(c=a(e)?b(e,v(e).activeElement,l.mentionPosition):S(e,l.mentionPosition),n.css({top:c.top+"px",left:c.left+"px",position:"absolute",zIndex:1e4,display:"block"}),r(function(){o(e,n)},0)):n.css({display:"none"})}function o(t,n){for(var r,i=20,o=100,a=n[0];void 0===r||0===r.height;)if(r=a.getBoundingClientRect(),0===r.height&&(a=a.childNodes[0],void 0===a||!a.getBoundingClientRect))return;var c=r.top,l=c+r.height;if(0>c)e.scrollTo(0,e.pageYOffset+r.top-i);else if(l>e.innerHeight){var s=e.pageYOffset+r.top-i;s-e.pageYOffset>o&&(s=e.pageYOffset+o);var m=e.pageYOffset-(e.innerHeight-l);m>s&&(m=s),e.scrollTo(0,m)}}function a(e){var t=v(e).activeElement;if(null!==t){var n=t.nodeName,r=t.getAttribute("type");return"INPUT"===n&&"text"===r||"TEXTAREA"===n}return!1}function c(e,t,n,r){var i,o=t;if(n)for(var a=0;a<n.length;a++){if(o=o.childNodes[n[a]],void 0===o)return;for(;o.length<r;)r-=o.length,o=o.nextSibling;0!==o.childNodes.length||o.length||(o=o.previousSibling)}var c=p(e);i=v(e).createRange(),i.setStart(o,r),i.setEnd(o,r),i.collapse(!0);try{c.removeAllRanges()}catch(l){}c.addRange(i),t.focus()}function l(e,t,n,r){var i,o;o=p(e),i=v(e).createRange(),i.setStart(o.anchorNode,n),i.setEnd(o.anchorNode,r),i.deleteContents();var a=v(e).createElement("div");a.innerHTML=t;for(var c,l,s=v(e).createDocumentFragment();c=a.firstChild;)l=s.appendChild(c);i.insertNode(s),l&&(i=i.cloneRange(),i.setStartAfter(l),i.collapse(!0),o.removeAllRanges(),o.addRange(i))}function s(e,t,n,r){var i=t.nodeName;"INPUT"===i||"TEXTAREA"===i?t!==v(e).activeElement&&t.focus():c(e,t,n,r)}function m(e,t,n,r,i,o){s(e,t,n,r);var c=d(e,i);if(c.macroHasTrailingSpace&&(c.macroText=c.macroText+"Β ",o+="Β "),void 0!==c){var m=v(e).activeElement;if(a(e)){var u=c.macroPosition,g=c.macroPosition+c.macroText.length;m.value=m.value.substring(0,u)+o+m.value.substring(g,m.value.length),m.selectionStart=u+o.length,m.selectionEnd=u+o.length}else l(e,o,c.macroPosition,c.macroPosition+c.macroText.length)}}function u(e,t,n,r,i,o,c,m){s(e,t,n,r);var u=h(e,i,c,!0,m);if(void 0!==u)if(a()){var g=v(e).activeElement;o+=" ";var d=u.mentionPosition,f=u.mentionPosition+u.mentionText.length+1;g.value=g.value.substring(0,d)+o+g.value.substring(f,g.value.length),g.selectionStart=d+o.length,g.selectionEnd=d+o.length}else o+="Β ",l(e,o,u.mentionPosition,u.mentionPosition+u.mentionText.length+1)}function g(e,t){if(null===t.parentNode)return 0;for(var n=0;n<t.parentNode.childNodes.length;n++){var r=t.parentNode.childNodes[n];if(r===t)return n}}function d(e,t){var n,r,i=[];if(a(e))n=v(e).activeElement;else{var o=f(e);o&&(n=o.selected,i=o.path,r=o.offset)}var c=T(e);if(void 0!==c&&null!==c){var l,s=!1;if(c.length>0&&("Β "===c.charAt(c.length-1)||" "===c.charAt(c.length-1))&&(s=!0,c=c.substring(0,c.length-1)),angular.forEach(t,function(e,t){var o=c.toUpperCase().lastIndexOf(t.toUpperCase());if(o>=0&&t.length+o===c.length){var a=o-1;(0===o||"Β "===c.charAt(a)||" "===c.charAt(a))&&(l={macroPosition:o,macroText:t,macroSelectedElement:n,macroSelectedPath:i,macroSelectedOffset:r,macroHasTrailingSpace:s})}}),l)return l}}function f(e){var t,n=p(e),r=n.anchorNode,i=[];if(null!=r){for(var o,a=r.contentEditable;null!==r&&"true"!==a;)o=g(e,r),i.push(o),r=r.parentNode,null!==r&&(a=r.contentEditable);return i.reverse(),t=n.getRangeAt(0).startOffset,{selected:r,path:i,offset:t}}}function h(e,t,n,r,i){var o,c,l;if(a(e))o=v(e).activeElement;else{var s=f(e);s&&(o=s.selected,c=s.path,l=s.offset)}var m=T(e);if(void 0!==m&&null!==m){var u,g=-1;if(t.forEach(function(e){var t=m.lastIndexOf(e);t>g&&(g=t,u=e)}),g>=0&&(0===g||!n||/[\xA0\s]/g.test(m.substring(g-1,g)))){var d=m.substring(g+1,m.length);u=m.substring(g,g+1);var h=d.substring(0,1),p=d.length>0&&(" "===h||"Β "===h);if(i&&(d=d.trim()),!p&&(r||!/[\xA0\s]/g.test(d)))return{mentionPosition:g,mentionText:d,mentionSelectedElement:o,mentionSelectedPath:c,mentionSelectedOffset:l,mentionTriggerChar:u}}}}function p(e){return e?e.iframe.contentWindow.getSelection():window.getSelection()}function v(e){return e?e.iframe.contentWindow.document:document}function T(e){var t;if(a(e)){var n=v(e).activeElement,r=n.selectionStart;t=n.value.substring(0,r)}else{var i=p(e).anchorNode;if(null!=i){var o=i.textContent,c=p(e).getRangeAt(0).startOffset;c>=0&&(t=o.substring(0,c))}}return t}function S(e,t){var n,r,i="ο»Ώ",o="sel_"+(new Date).getTime()+"_"+Math.random().toString().substr(2),a=p(e),c=a.getRangeAt(0);r=v(e).createRange(),r.setStart(a.anchorNode,t),r.setEnd(a.anchorNode,t),r.collapse(!1),n=v(e).createElement("span"),n.id=o,n.appendChild(v(e).createTextNode(i)),r.insertNode(n),a.removeAllRanges(),a.addRange(c);var l={left:0,top:n.offsetHeight};return E(e,n,l),n.parentNode.removeChild(n),l}function E(e,t,n){for(var r=t,i=e?e.iframe:null;r;)n.left+=r.offsetLeft+r.clientLeft,n.top+=r.offsetTop+r.clientTop,r=r.offsetParent,!r&&i&&(r=i,i=null);for(r=t,i=e?e.iframe:null;r!==v().body;)r.scrollTop&&r.scrollTop>0&&(n.top-=r.scrollTop),r.scrollLeft&&r.scrollLeft>0&&(n.left-=r.scrollLeft),r=r.parentNode,!r&&i&&(r=i,i=null)}function b(e,t,n){var r=["direction","boxSizing","width","height","overflowX","overflowY","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","paddingTop","paddingRight","paddingBottom","paddingLeft","fontStyle","fontVariant","fontWeight","fontStretch","fontSize","fontSizeAdjust","lineHeight","fontFamily","textAlign","textTransform","textIndent","textDecoration","letterSpacing","wordSpacing"],i=null!==window.mozInnerScreenX,o=v(e).createElement("div");o.id="input-textarea-caret-position-mirror-div",v(e).body.appendChild(o);var a=o.style,c=window.getComputedStyle?getComputedStyle(t):t.currentStyle;a.whiteSpace="pre-wrap","INPUT"!==t.nodeName&&(a.wordWrap="break-word"),a.position="absolute",a.visibility="hidden",r.forEach(function(e){a[e]=c[e]}),i?(a.width=parseInt(c.width)-2+"px",t.scrollHeight>parseInt(c.height)&&(a.overflowY="scroll")):a.overflow="hidden",o.textContent=t.value.substring(0,n),"INPUT"===t.nodeName&&(o.textContent=o.textContent.replace(/\s/g,"Β "));var l=v(e).createElement("span");l.textContent=t.value.substring(n)||".",o.appendChild(l);var s={top:l.offsetTop+parseInt(c.borderTopWidth)+parseInt(c.fontSize),left:l.offsetLeft+parseInt(c.borderLeftWidth)};return E(e,t,s),v(e).body.removeChild(o),s}return{popUnderMention:i,replaceMacroText:m,replaceTriggerText:u,getMacroMatch:d,getTriggerInfo:h,selectElement:c,getTextAreaOrInputUnderlinePosition:b,getTextPrecedingCurrentSelection:T,getContentEditableSelectedPath:f,getNodePositionInParent:g,getContentEditableCaretPosition:S,pasteHtml:l,resetSelection:s,scrollIntoView:o}}]),angular.module("mentio").run(["$templateCache",function(e){e.put("mentio-menu.tpl.html",'<style>\n.scrollable-menu {\n height: auto;\n max-height: 300px;\n overflow: auto;\n}\n\n.menu-highlighted {\n font-weight: bold;\n}\n</style>\n<ul class="dropdown-menu scrollable-menu" style="display:block">\n <li mentio-menu-item="item" ng-repeat="item in items track by $index">\n <a class="text-primary" ng-bind-html="item.label | mentioHighlight:typedTerm:\'menu-highlighted\' | unsafe"></a>\n </li>\n</ul>')}]);
2323 ;"use strict";angular.module("mentio",[]).directive("mentio",["mentioUtil","$document","$compile","$log","$timeout",function(e,t,n,r,i){return{restrict:"A",scope:{macros:"=mentioMacros",search:"&mentioSearch",select:"&mentioSelect",items:"=mentioItems",typedTerm:"=mentioTypedTerm",altId:"=mentioId",iframeElement:"=mentioIframeElement",requireLeadingSpace:"=mentioRequireLeadingSpace",selectNotFound:"=mentioSelectNotFound",trimTerm:"=mentioTrimTerm",ngModel:"="},controller:["$scope","$timeout","$attrs",function(n,r,i){n.query=function(e,t){var r=n.triggerCharMap[e];(void 0===n.trimTerm||n.trimTerm)&&(t=t.trim()),r.showMenu(),r.search({term:t}),r.typedTerm=t},n.defaultSearch=function(e){var t=[];angular.forEach(n.items,function(n){n.label.toUpperCase().indexOf(e.term.toUpperCase())>=0&&t.push(n)}),n.localItems=t},n.bridgeSearch=function(e){var t=i.mentioSearch?n.search:n.defaultSearch;t({term:e})},n.defaultSelect=function(e){return n.defaultTriggerChar+e.item.label},n.bridgeSelect=function(e){var t=i.mentioSelect?n.select:n.defaultSelect;return t({item:e})},n.setTriggerText=function(e){n.syncTriggerText&&(n.typedTerm=void 0===n.trimTerm||n.trimTerm?e.trim():e)},n.context=function(){return n.iframeElement?{iframe:n.iframeElement}:void 0},n.replaceText=function(t,i){if(n.hideAll(),e.replaceTriggerText(n.context(),n.targetElement,n.targetElementPath,n.targetElementSelectedOffset,n.triggerCharSet,t,n.requireLeadingSpace,i),!i&&(n.setTriggerText(""),angular.element(n.targetElement).triggerHandler("change"),n.isContentEditable())){n.contentEditableMenuPasted=!0;var o=r(function(){n.contentEditableMenuPasted=!1},200);n.$on("$destroy",function(){r.cancel(o)})}},n.hideAll=function(){for(var e in n.triggerCharMap)n.triggerCharMap.hasOwnProperty(e)&&n.triggerCharMap[e].hideMenu()},n.getActiveMenuScope=function(){for(var e in n.triggerCharMap)if(n.triggerCharMap.hasOwnProperty(e)&&n.triggerCharMap[e].visible)return n.triggerCharMap[e];return null},n.selectActive=function(){for(var e in n.triggerCharMap)n.triggerCharMap.hasOwnProperty(e)&&n.triggerCharMap[e].visible&&n.triggerCharMap[e].selectActive()},n.isActive=function(){for(var e in n.triggerCharMap)if(n.triggerCharMap.hasOwnProperty(e)&&n.triggerCharMap[e].visible)return!0;return!1},n.isContentEditable=function(){return"INPUT"!==n.targetElement.nodeName&&"TEXTAREA"!==n.targetElement.nodeName},n.replaceMacro=function(t,i){i?e.replaceMacroText(n.context(),n.targetElement,n.targetElementPath,n.targetElementSelectedOffset,n.macros,n.macros[t]):(n.replacingMacro=!0,n.timer=r(function(){e.replaceMacroText(n.context(),n.targetElement,n.targetElementPath,n.targetElementSelectedOffset,n.macros,n.macros[t]),angular.element(n.targetElement).triggerHandler("change"),n.replacingMacro=!1},300),n.$on("$destroy",function(){r.cancel(n.timer)}))},n.addMenu=function(e){e.parentScope&&n.triggerCharMap.hasOwnProperty(e.triggerChar)||(n.triggerCharMap[e.triggerChar]=e,void 0===n.triggerCharSet&&(n.triggerCharSet=[]),n.triggerCharSet.push(e.triggerChar),e.setParent(n))},n.$on("menuCreated",function(e,t){(void 0!==i.id||void 0!==i.mentioId)&&(i.id===t.targetElement||void 0!==i.mentioId&&n.altId===t.targetElement)&&n.addMenu(t.scope)}),t.on("click",function(){n.isActive()&&n.$apply(function(){n.hideAll()})}),t.on("keydown keypress paste",function(e){var t=n.getActiveMenuScope();t&&((9===e.which||13===e.which)&&(e.preventDefault(),t.selectActive()),27===e.which&&(e.preventDefault(),t.$apply(function(){t.hideMenu()})),40===e.which&&(e.preventDefault(),t.$apply(function(){t.activateNextItem()}),t.adjustScroll(1)),38===e.which&&(e.preventDefault(),t.$apply(function(){t.activatePreviousItem()}),t.adjustScroll(-1)),(37===e.which||39===e.which)&&e.preventDefault())})}],link:function(t,o,a){function c(e){function n(e){e.preventDefault(),e.stopPropagation(),e.stopImmediatePropagation()}var r=t.getActiveMenuScope();if(r){if(9===e.which||13===e.which)return n(e),r.selectActive(),!1;if(27===e.which)return n(e),r.$apply(function(){r.hideMenu()}),!1;if(40===e.which)return n(e),r.$apply(function(){r.activateNextItem()}),r.adjustScroll(1),!1;if(38===e.which)return n(e),r.$apply(function(){r.activatePreviousItem()}),r.adjustScroll(-1),!1;if(37===e.which||39===e.which)return n(e),!1}}if(t.triggerCharMap={},t.targetElement=o,a.$set("autocomplete","off"),a.mentioItems){t.localItems=[],t.parentScope=t;var l=a.mentioSearch?' mentio-items="items"':' mentio-items="localItems"';t.defaultTriggerChar=a.mentioTriggerChar?t.$eval(a.mentioTriggerChar):"@";var s='<mentio-menu mentio-search="bridgeSearch(term)" mentio-select="bridgeSelect(item)"'+l;a.mentioTemplateUrl&&(s=s+' mentio-template-url="'+a.mentioTemplateUrl+'"'),s=s+" mentio-trigger-char=\"'"+t.defaultTriggerChar+'\'" mentio-parent-scope="parentScope"/>';var m=n(s),u=m(t);o.parent().append(u),t.$on("$destroy",function(){u.remove()})}a.mentioTypedTerm&&(t.syncTriggerText=!0),t.$watch("iframeElement",function(e){if(e){var n=e.contentWindow.document;n.addEventListener("click",function(){t.isActive()&&t.$apply(function(){t.hideAll()})}),n.addEventListener("keydown",c,!0),t.$on("$destroy",function(){n.removeEventListener("keydown",c)})}}),t.$watch("ngModel",function(n){if(n&&""!==n||t.isActive()){if(void 0===t.triggerCharSet)return void r.error("Error, no mentio-items attribute was provided, and no separate mentio-menus were specified. Nothing to do.");if(t.contentEditableMenuPasted)return void(t.contentEditableMenuPasted=!1);t.replacingMacro&&(i.cancel(t.timer),t.replacingMacro=!1);var o=t.isActive(),a=t.isContentEditable(),c=e.getTriggerInfo(t.context(),t.triggerCharSet,t.requireLeadingSpace,o);if(void 0!==c&&(!o||o&&(a&&c.mentionTriggerChar===t.currentMentionTriggerChar||!a&&c.mentionPosition===t.currentMentionPosition)))c.mentionSelectedElement&&(t.targetElement=c.mentionSelectedElement,t.targetElementPath=c.mentionSelectedPath,t.targetElementSelectedOffset=c.mentionSelectedOffset),t.setTriggerText(c.mentionText),t.currentMentionPosition=c.mentionPosition,t.currentMentionTriggerChar=c.mentionTriggerChar,t.query(c.mentionTriggerChar,c.mentionText);else{var l=t.typedTerm;t.setTriggerText(""),t.hideAll();var s=e.getMacroMatch(t.context(),t.macros);if(void 0!==s)t.targetElement=s.macroSelectedElement,t.targetElementPath=s.macroSelectedPath,t.targetElementSelectedOffset=s.macroSelectedOffset,t.replaceMacro(s.macroText,s.macroHasTrailingSpace);else if(t.selectNotFound&&l&&""!==l){var m=t.triggerCharMap[t.currentMentionTriggerChar];if(m){var u=m.select({item:{label:l}});"function"==typeof u.then?u.then(t.replaceText):t.replaceText(u,!0)}}}}})}}}]).directive("mentioMenu",["mentioUtil","$rootScope","$log","$window","$document",function(e,t,n,r,i){return{restrict:"E",scope:{search:"&mentioSearch",select:"&mentioSelect",items:"=mentioItems",triggerChar:"=mentioTriggerChar",forElem:"=mentioFor",parentScope:"=mentioParentScope"},templateUrl:function(e,t){return void 0!==t.mentioTemplateUrl?t.mentioTemplateUrl:"mentio-menu.tpl.html"},controller:["$scope",function(e){e.visible=!1,this.activate=e.activate=function(t){e.activeItem=t},this.isActive=e.isActive=function(t){return e.activeItem===t},this.selectItem=e.selectItem=function(t){var n=e.select({item:t});"function"==typeof n.then?n.then(e.parentMentio.replaceText):e.parentMentio.replaceText(n)},e.activateNextItem=function(){var t=e.items.indexOf(e.activeItem);this.activate(e.items[(t+1)%e.items.length])},e.activatePreviousItem=function(){var t=e.items.indexOf(e.activeItem);this.activate(e.items[0===t?e.items.length-1:t-1])},e.isFirstItemActive=function(){var t=e.items.indexOf(e.activeItem);return 0===t},e.isLastItemActive=function(){var t=e.items.indexOf(e.activeItem);return t===e.items.length-1},e.selectActive=function(){e.selectItem(e.activeItem)},e.isVisible=function(){return e.visible},e.showMenu=function(){e.visible||(e.requestVisiblePendingSearch=!0)},e.setParent=function(t){e.parentMentio=t,e.targetElement=t.targetElement}}],link:function(o,a){if(a[0].parentNode.removeChild(a[0]),i[0].body.appendChild(a[0]),o.menuElement=a,o.parentScope)o.parentScope.addMenu(o);else{if(!o.forElem)return void n.error("mentio-menu requires a target element in tbe mentio-for attribute");if(!o.triggerChar)return void n.error("mentio-menu requires a trigger char");t.$broadcast("menuCreated",{targetElement:o.forElem,scope:o})}angular.element(r).bind("resize",function(){if(o.isVisible()){var t=[];t.push(o.triggerChar),e.popUnderMention(o.parentMentio.context(),t,a,o.requireLeadingSpace)}}),o.$watch("items",function(e){e&&e.length>0?(o.activate(e[0]),!o.visible&&o.requestVisiblePendingSearch&&(o.visible=!0,o.requestVisiblePendingSearch=!1)):o.hideMenu()}),o.$watch("isVisible()",function(t){if(t){var n=[];n.push(o.triggerChar),e.popUnderMention(o.parentMentio.context(),n,a,o.requireLeadingSpace)}}),o.parentMentio.$on("$destroy",function(){a.remove()}),o.hideMenu=function(){o.visible=!1,a.css("display","none")},o.adjustScroll=function(e){var t=a[0],n=t.querySelector("ul"),r=t.querySelector("[mentio-menu-item].active")||t.querySelector("[data-mentio-menu-item].active");return o.isFirstItemActive()?n.scrollTop=0:o.isLastItemActive()?n.scrollTop=n.scrollHeight:void(1===e?n.scrollTop+=r.offsetHeight:n.scrollTop-=r.offsetHeight)}}}}]).directive("mentioMenuItem",function(){return{restrict:"A",scope:{item:"=mentioMenuItem"},require:"^mentioMenu",link:function(e,t,n,r){e.$watch(function(){return r.isActive(e.item)},function(e){e?t.addClass("active"):t.removeClass("active")}),t.bind("mouseenter",function(){e.$apply(function(){r.activate(e.item)})}),t.bind("click",function(){return r.selectItem(e.item),!1})}}}).filter("unsafe",["$sce",function(e){return function(t){return e.trustAsHtml(t)}}]).filter("mentioHighlight",function(){function e(e){return e.replace(/([.?*+^$[\]\\(){}|-])/g,"\\$1")}return function(t,n,r){if(n){var i=r?'<span class="'+r+'">$&</span>':"<strong>$&</strong>";return(""+t).replace(new RegExp(e(n),"gi"),i)}return t}}),angular.module("mentio").factory("mentioUtil",["$window","$location","$anchorScroll","$timeout",function(e,t,n,r){function i(e,t,n,i){var c,l=h(e,t,i,!1);void 0!==l?(c=a(e)?b(e,v(e).activeElement,l.mentionPosition):S(e,l.mentionPosition),n.css({top:c.top+"px",left:c.left+"px",position:"absolute",zIndex:1e4,display:"block"}),r(function(){o(e,n)},0)):n.css({display:"none"})}function o(t,n){for(var r,i=20,o=100,a=n[0];void 0===r||0===r.height;)if(r=a.getBoundingClientRect(),0===r.height&&(a=a.childNodes[0],void 0===a||!a.getBoundingClientRect))return;var c=r.top,l=c+r.height;if(0>c)e.scrollTo(0,e.pageYOffset+r.top-i);else if(l>e.innerHeight){var s=e.pageYOffset+r.top-i;s-e.pageYOffset>o&&(s=e.pageYOffset+o);var m=e.pageYOffset-(e.innerHeight-l);m>s&&(m=s),e.scrollTo(0,m)}}function a(e){var t=v(e).activeElement;if(null!==t){var n=t.nodeName,r=t.getAttribute("type");return"INPUT"===n&&"text"===r||"TEXTAREA"===n}return!1}function c(e,t,n,r){var i,o=t;if(n)for(var a=0;a<n.length;a++){if(o=o.childNodes[n[a]],void 0===o)return;for(;o.length<r;)r-=o.length,o=o.nextSibling;0!==o.childNodes.length||o.length||(o=o.previousSibling)}var c=p(e);i=v(e).createRange(),i.setStart(o,r),i.setEnd(o,r),i.collapse(!0);try{c.removeAllRanges()}catch(l){}c.addRange(i),t.focus()}function l(e,t,n,r){var i,o;o=p(e),i=v(e).createRange(),i.setStart(o.anchorNode,n),i.setEnd(o.anchorNode,r),i.deleteContents();var a=v(e).createElement("div");a.innerHTML=t;for(var c,l,s=v(e).createDocumentFragment();c=a.firstChild;)l=s.appendChild(c);i.insertNode(s),l&&(i=i.cloneRange(),i.setStartAfter(l),i.collapse(!0),o.removeAllRanges(),o.addRange(i))}function s(e,t,n,r){var i=t.nodeName;"INPUT"===i||"TEXTAREA"===i?t!==v(e).activeElement&&t.focus():c(e,t,n,r)}function m(e,t,n,r,i,o){s(e,t,n,r);var c=d(e,i);if(c.macroHasTrailingSpace&&(c.macroText=c.macroText+"Β ",o+="Β "),void 0!==c){var m=v(e).activeElement;if(a(e)){var u=c.macroPosition,g=c.macroPosition+c.macroText.length;m.value=m.value.substring(0,u)+o+m.value.substring(g,m.value.length),m.selectionStart=u+o.length,m.selectionEnd=u+o.length}else l(e,o,c.macroPosition,c.macroPosition+c.macroText.length)}}function u(e,t,n,r,i,o,c,m){s(e,t,n,r);var u=h(e,i,c,!0,m);if(void 0!==u)if(a()){var g=v(e).activeElement;o+=" ";var d=u.mentionPosition,f=u.mentionPosition+u.mentionText.length+1;g.value=g.value.substring(0,d)+o+g.value.substring(f,g.value.length),g.selectionStart=d+o.length,g.selectionEnd=d+o.length}else o+="Β ",l(e,o,u.mentionPosition,u.mentionPosition+u.mentionText.length+1)}function g(e,t){if(null===t.parentNode)return 0;for(var n=0;n<t.parentNode.childNodes.length;n++){var r=t.parentNode.childNodes[n];if(r===t)return n}}function d(e,t){var n,r,i=[];if(a(e))n=v(e).activeElement;else{var o=f(e);o&&(n=o.selected,i=o.path,r=o.offset)}var c=T(e);if(void 0!==c&&null!==c){var l,s=!1;if(c.length>0&&("Β "===c.charAt(c.length-1)||" "===c.charAt(c.length-1))&&(s=!0,c=c.substring(0,c.length-1)),angular.forEach(t,function(e,t){var o=c.toUpperCase().lastIndexOf(t.toUpperCase());if(o>=0&&t.length+o===c.length){var a=o-1;(0===o||"Β "===c.charAt(a)||" "===c.charAt(a))&&(l={macroPosition:o,macroText:t,macroSelectedElement:n,macroSelectedPath:i,macroSelectedOffset:r,macroHasTrailingSpace:s})}}),l)return l}}function f(e){var t,n=p(e),r=n.anchorNode,i=[];if(null!=r){for(var o,a=r.contentEditable;null!==r&&"true"!==a;)o=g(e,r),i.push(o),r=r.parentNode,null!==r&&(a=r.contentEditable);return i.reverse(),t=n.getRangeAt(0).startOffset,{selected:r,path:i,offset:t}}}function h(e,t,n,r,i){var o,c,l;if(a(e))o=v(e).activeElement;else{var s=f(e);s&&(o=s.selected,c=s.path,l=s.offset)}var m=T(e);if(void 0!==m&&null!==m){var u,g=-1;if(t.forEach(function(e){var t=m.lastIndexOf(e);t>g&&(g=t,u=e)}),g>=0&&(0===g||!n||/[\xA0\s]/g.test(m.substring(g-1,g)))){var d=m.substring(g+1,m.length);u=m.substring(g,g+1);var h=d.substring(0,1),p=d.length>0&&(" "===h||"Β "===h);if(i&&(d=d.trim()),!p&&(r||!/[\xA0\s]/g.test(d)))return{mentionPosition:g,mentionText:d,mentionSelectedElement:o,mentionSelectedPath:c,mentionSelectedOffset:l,mentionTriggerChar:u}}}}function p(e){return e?e.iframe.contentWindow.getSelection():window.getSelection()}function v(e){return e?e.iframe.contentWindow.document:document}function T(e){var t;if(a(e)){var n=v(e).activeElement,r=n.selectionStart;t=n.value.substring(0,r)}else{var i=p(e).anchorNode;if(null!=i){var o=i.textContent,c=p(e).getRangeAt(0).startOffset;c>=0&&(t=o.substring(0,c))}}return t}function S(e,t){var n,r,i="ο»Ώ",o="sel_"+(new Date).getTime()+"_"+Math.random().toString().substr(2),a=p(e),c=a.getRangeAt(0);r=v(e).createRange(),r.setStart(a.anchorNode,t),r.setEnd(a.anchorNode,t),r.collapse(!1),n=v(e).createElement("span"),n.id=o,n.appendChild(v(e).createTextNode(i)),r.insertNode(n),a.removeAllRanges(),a.addRange(c);var l={left:0,top:n.offsetHeight};return E(e,n,l),n.parentNode.removeChild(n),l}function E(e,t,n){for(var r=t,i=e?e.iframe:null;r;)n.left+=r.offsetLeft+r.clientLeft,n.top+=r.offsetTop+r.clientTop,r=r.offsetParent,!r&&i&&(r=i,i=null);for(r=t,i=e?e.iframe:null;r!==v().body;)r.scrollTop&&r.scrollTop>0&&(n.top-=r.scrollTop),r.scrollLeft&&r.scrollLeft>0&&(n.left-=r.scrollLeft),r=r.parentNode,!r&&i&&(r=i,i=null)}function b(e,t,n){var r=["direction","boxSizing","width","height","overflowX","overflowY","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","paddingTop","paddingRight","paddingBottom","paddingLeft","fontStyle","fontVariant","fontWeight","fontStretch","fontSize","fontSizeAdjust","lineHeight","fontFamily","textAlign","textTransform","textIndent","textDecoration","letterSpacing","wordSpacing"],i=null!==window.mozInnerScreenX,o=v(e).createElement("div");o.id="input-textarea-caret-position-mirror-div",v(e).body.appendChild(o);var a=o.style,c=window.getComputedStyle?getComputedStyle(t):t.currentStyle;a.whiteSpace="pre-wrap","INPUT"!==t.nodeName&&(a.wordWrap="break-word"),a.position="absolute",a.visibility="hidden",r.forEach(function(e){a[e]=c[e]}),i?(a.width=parseInt(c.width)-2+"px",t.scrollHeight>parseInt(c.height)&&(a.overflowY="scroll")):a.overflow="hidden",o.textContent=t.value.substring(0,n),"INPUT"===t.nodeName&&(o.textContent=o.textContent.replace(/\s/g,"Β "));var l=v(e).createElement("span");l.textContent=t.value.substring(n)||".",o.appendChild(l);var s={top:l.offsetTop+parseInt(c.borderTopWidth)+parseInt(c.fontSize),left:l.offsetLeft+parseInt(c.borderLeftWidth)};return E(e,t,s),v(e).body.removeChild(o),s}return{popUnderMention:i,replaceMacroText:m,replaceTriggerText:u,getMacroMatch:d,getTriggerInfo:h,selectElement:c,getTextAreaOrInputUnderlinePosition:b,getTextPrecedingCurrentSelection:T,getContentEditableSelectedPath:f,getNodePositionInParent:g,getContentEditableCaretPosition:S,pasteHtml:l,resetSelection:s,scrollIntoView:o}}]),angular.module("mentio").run(["$templateCache",function(e){e.put("mentio-menu.tpl.html",'<style>\n.scrollable-menu {\n height: auto;\n max-height: 300px;\n overflow: auto;\n}\n\n.menu-highlighted {\n font-weight: bold;\n}\n</style>\n<ul class="dropdown-menu scrollable-menu" style="display:block">\n <li mentio-menu-item="item" ng-repeat="item in items track by $index">\n <a class="text-primary" ng-bind-html="item.label | mentioHighlight:typedTerm:\'menu-highlighted\' | unsafe"></a>\n </li>\n</ul>')}]);
2324 ;moment.defaultFormat = 'YYYY-MM-DDTHH:mm';
2324 ;moment.defaultFormat = 'YYYY-MM-DDTHH:mm';
2325
2325
2326 ;// MIT License:
2326 ;// MIT License:
2327 //
2327 //
2328 // Copyright (c) 2010-2012, Joe Walnes
2328 // Copyright (c) 2010-2012, Joe Walnes
2329 //
2329 //
2330 // Permission is hereby granted, free of charge, to any person obtaining a copy
2330 // Permission is hereby granted, free of charge, to any person obtaining a copy
2331 // of this software and associated documentation files (the "Software"), to deal
2331 // of this software and associated documentation files (the "Software"), to deal
2332 // in the Software without restriction, including without limitation the rights
2332 // in the Software without restriction, including without limitation the rights
2333 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
2333 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
2334 // copies of the Software, and to permit persons to whom the Software is
2334 // copies of the Software, and to permit persons to whom the Software is
2335 // furnished to do so, subject to the following conditions:
2335 // furnished to do so, subject to the following conditions:
2336 //
2336 //
2337 // The above copyright notice and this permission notice shall be included in
2337 // The above copyright notice and this permission notice shall be included in
2338 // all copies or substantial portions of the Software.
2338 // all copies or substantial portions of the Software.
2339 //
2339 //
2340 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
2340 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
2341 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
2341 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
2342 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
2342 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
2343 // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
2343 // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
2344 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
2344 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
2345 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
2345 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
2346 // THE SOFTWARE.
2346 // THE SOFTWARE.
2347
2347
2348 /**
2348 /**
2349 * This behaves like a WebSocket in every way, except if it fails to connect,
2349 * This behaves like a WebSocket in every way, except if it fails to connect,
2350 * or it gets disconnected, it will repeatedly poll until it succesfully connects
2350 * or it gets disconnected, it will repeatedly poll until it succesfully connects
2351 * again.
2351 * again.
2352 *
2352 *
2353 * It is API compatible, so when you have:
2353 * It is API compatible, so when you have:
2354 * ws = new WebSocket('ws://....');
2354 * ws = new WebSocket('ws://....');
2355 * you can replace with:
2355 * you can replace with:
2356 * ws = new ReconnectingWebSocket('ws://....');
2356 * ws = new ReconnectingWebSocket('ws://....');
2357 *
2357 *
2358 * The event stream will typically look like:
2358 * The event stream will typically look like:
2359 * onconnecting
2359 * onconnecting
2360 * onopen
2360 * onopen
2361 * onmessage
2361 * onmessage
2362 * onmessage
2362 * onmessage
2363 * onclose // lost connection
2363 * onclose // lost connection
2364 * onconnecting
2364 * onconnecting
2365 * onopen // sometime later...
2365 * onopen // sometime later...
2366 * onmessage
2366 * onmessage
2367 * onmessage
2367 * onmessage
2368 * etc...
2368 * etc...
2369 *
2369 *
2370 * It is API compatible with the standard WebSocket API.
2370 * It is API compatible with the standard WebSocket API.
2371 *
2371 *
2372 * Latest version: https://github.com/joewalnes/reconnecting-websocket/
2372 * Latest version: https://github.com/joewalnes/reconnecting-websocket/
2373 * - Joe Walnes
2373 * - Joe Walnes
2374 */
2374 */
2375 function ReconnectingWebSocket(url, protocols) {
2375 function ReconnectingWebSocket(url, protocols) {
2376 protocols = protocols || [];
2376 protocols = protocols || [];
2377
2377
2378 // These can be altered by calling code.
2378 // These can be altered by calling code.
2379 this.debug = false;
2379 this.debug = false;
2380 this.reconnectInterval = 1000;
2380 this.reconnectInterval = 1000;
2381 this.timeoutInterval = 2000;
2381 this.timeoutInterval = 2000;
2382
2382
2383 var self = this;
2383 var self = this;
2384 var ws;
2384 var ws;
2385 var forcedClose = false;
2385 var forcedClose = false;
2386 var timedOut = false;
2386 var timedOut = false;
2387
2387
2388 this.url = url;
2388 this.url = url;
2389 this.protocols = protocols;
2389 this.protocols = protocols;
2390 this.readyState = WebSocket.CONNECTING;
2390 this.readyState = WebSocket.CONNECTING;
2391 this.URL = url; // Public API
2391 this.URL = url; // Public API
2392
2392
2393 this.onopen = function(event) {
2393 this.onopen = function(event) {
2394 };
2394 };
2395
2395
2396 this.onclose = function(event) {
2396 this.onclose = function(event) {
2397 };
2397 };
2398
2398
2399 this.onconnecting = function(event) {
2399 this.onconnecting = function(event) {
2400 };
2400 };
2401
2401
2402 this.onmessage = function(event) {
2402 this.onmessage = function(event) {
2403 };
2403 };
2404
2404
2405 this.onerror = function(event) {
2405 this.onerror = function(event) {
2406 };
2406 };
2407
2407
2408 function connect(reconnectAttempt) {
2408 function connect(reconnectAttempt) {
2409 ws = new WebSocket(url, protocols);
2409 ws = new WebSocket(url, protocols);
2410
2410
2411 self.onconnecting();
2411 self.onconnecting();
2412 if (self.debug || ReconnectingWebSocket.debugAll) {
2412 if (self.debug || ReconnectingWebSocket.debugAll) {
2413 console.debug('ReconnectingWebSocket', 'attempt-connect', url);
2413 console.debug('ReconnectingWebSocket', 'attempt-connect', url);
2414 }
2414 }
2415
2415
2416 var localWs = ws;
2416 var localWs = ws;
2417 var timeout = setTimeout(function() {
2417 var timeout = setTimeout(function() {
2418 if (self.debug || ReconnectingWebSocket.debugAll) {
2418 if (self.debug || ReconnectingWebSocket.debugAll) {
2419 console.debug('ReconnectingWebSocket', 'connection-timeout', url);
2419 console.debug('ReconnectingWebSocket', 'connection-timeout', url);
2420 }
2420 }
2421 timedOut = true;
2421 timedOut = true;
2422 localWs.close();
2422 localWs.close();
2423 timedOut = false;
2423 timedOut = false;
2424 }, self.timeoutInterval);
2424 }, self.timeoutInterval);
2425
2425
2426 ws.onopen = function(event) {
2426 ws.onopen = function(event) {
2427 clearTimeout(timeout);
2427 clearTimeout(timeout);
2428 if (self.debug || ReconnectingWebSocket.debugAll) {
2428 if (self.debug || ReconnectingWebSocket.debugAll) {
2429 console.debug('ReconnectingWebSocket', 'onopen', url);
2429 console.debug('ReconnectingWebSocket', 'onopen', url);
2430 }
2430 }
2431 self.readyState = WebSocket.OPEN;
2431 self.readyState = WebSocket.OPEN;
2432 reconnectAttempt = false;
2432 reconnectAttempt = false;
2433 self.onopen(event);
2433 self.onopen(event);
2434 };
2434 };
2435
2435
2436 ws.onclose = function(event) {
2436 ws.onclose = function(event) {
2437 clearTimeout(timeout);
2437 clearTimeout(timeout);
2438 ws = null;
2438 ws = null;
2439 if (forcedClose) {
2439 if (forcedClose) {
2440 self.readyState = WebSocket.CLOSED;
2440 self.readyState = WebSocket.CLOSED;
2441 self.onclose(event);
2441 self.onclose(event);
2442 } else {
2442 } else {
2443 self.readyState = WebSocket.CONNECTING;
2443 self.readyState = WebSocket.CONNECTING;
2444 self.onconnecting();
2444 self.onconnecting();
2445 if (!reconnectAttempt && !timedOut) {
2445 if (!reconnectAttempt && !timedOut) {
2446 if (self.debug || ReconnectingWebSocket.debugAll) {
2446 if (self.debug || ReconnectingWebSocket.debugAll) {
2447 console.debug('ReconnectingWebSocket', 'onclose', url);
2447 console.debug('ReconnectingWebSocket', 'onclose', url);
2448 }
2448 }
2449 self.onclose(event);
2449 self.onclose(event);
2450 }
2450 }
2451 setTimeout(function() {
2451 setTimeout(function() {
2452 connect(true);
2452 connect(true);
2453 }, self.reconnectInterval);
2453 }, self.reconnectInterval);
2454 }
2454 }
2455 };
2455 };
2456 ws.onmessage = function(event) {
2456 ws.onmessage = function(event) {
2457 if (self.debug || ReconnectingWebSocket.debugAll) {
2457 if (self.debug || ReconnectingWebSocket.debugAll) {
2458 console.debug('ReconnectingWebSocket', 'onmessage', url, event.data);
2458 console.debug('ReconnectingWebSocket', 'onmessage', url, event.data);
2459 }
2459 }
2460 self.onmessage(event);
2460 self.onmessage(event);
2461 };
2461 };
2462 ws.onerror = function(event) {
2462 ws.onerror = function(event) {
2463 if (self.debug || ReconnectingWebSocket.debugAll) {
2463 if (self.debug || ReconnectingWebSocket.debugAll) {
2464 console.debug('ReconnectingWebSocket', 'onerror', url, event);
2464 console.debug('ReconnectingWebSocket', 'onerror', url, event);
2465 }
2465 }
2466 self.onerror(event);
2466 self.onerror(event);
2467 };
2467 };
2468 }
2468 }
2469 connect(url);
2469 connect(url);
2470
2470
2471 this.send = function(data) {
2471 this.send = function(data) {
2472 if (ws) {
2472 if (ws) {
2473 if (self.debug || ReconnectingWebSocket.debugAll) {
2473 if (self.debug || ReconnectingWebSocket.debugAll) {
2474 console.debug('ReconnectingWebSocket', 'send', url, data);
2474 console.debug('ReconnectingWebSocket', 'send', url, data);
2475 }
2475 }
2476 return ws.send(data);
2476 return ws.send(data);
2477 } else {
2477 } else {
2478 throw 'INVALID_STATE_ERR : Pausing to reconnect websocket';
2478 throw 'INVALID_STATE_ERR : Pausing to reconnect websocket';
2479 }
2479 }
2480 };
2480 };
2481
2481
2482 this.close = function() {
2482 this.close = function() {
2483 if (ws) {
2483 if (ws) {
2484 forcedClose = true;
2484 forcedClose = true;
2485 ws.close();
2485 ws.close();
2486 }
2486 }
2487 };
2487 };
2488
2488
2489 /**
2489 /**
2490 * Additional public API method to refresh the connection if still open (close, re-open).
2490 * Additional public API method to refresh the connection if still open (close, re-open).
2491 * For example, if the app suspects bad data / missed heart beats, it can try to refresh.
2491 * For example, if the app suspects bad data / missed heart beats, it can try to refresh.
2492 */
2492 */
2493 this.refresh = function() {
2493 this.refresh = function() {
2494 if (ws) {
2494 if (ws) {
2495 ws.close();
2495 ws.close();
2496 }
2496 }
2497 };
2497 };
2498 }
2498 }
2499
2499
2500 /**
2500 /**
2501 * Setting this to true is the equivalent of setting all instances of ReconnectingWebSocket.debug to true.
2501 * Setting this to true is the equivalent of setting all instances of ReconnectingWebSocket.debug to true.
2502 */
2502 */
2503 ReconnectingWebSocket.debugAll = false;
2503 ReconnectingWebSocket.debugAll = false;
2504
2504
2505
2505
2506 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
2506 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
2507 // #
2507 // #
2508 // # This program is free software: you can redistribute it and/or modify
2508 // # This program is free software: you can redistribute it and/or modify
2509 // # it under the terms of the GNU Affero General Public License, version 3
2509 // # it under the terms of the GNU Affero General Public License, version 3
2510 // # (only), as published by the Free Software Foundation.
2510 // # (only), as published by the Free Software Foundation.
2511 // #
2511 // #
2512 // # This program is distributed in the hope that it will be useful,
2512 // # This program is distributed in the hope that it will be useful,
2513 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
2513 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
2514 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2514 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2515 // # GNU General Public License for more details.
2515 // # GNU General Public License for more details.
2516 // #
2516 // #
2517 // # You should have received a copy of the GNU Affero General Public License
2517 // # You should have received a copy of the GNU Affero General Public License
2518 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
2518 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
2519 // #
2519 // #
2520 // # This program is dual-licensed. If you wish to learn more about the
2520 // # This program is dual-licensed. If you wish to learn more about the
2521 // # AppEnlight Enterprise Edition, including its added features, Support
2521 // # AppEnlight Enterprise Edition, including its added features, Support
2522 // # services, and proprietary license terms, please see
2522 // # services, and proprietary license terms, please see
2523 // # https://rhodecode.com/licenses/
2523 // # https://rhodecode.com/licenses/
2524
2524
2525 if (!String.prototype.trim) {
2525 if (!String.prototype.trim) {
2526 String.prototype.trim = function () {
2526 String.prototype.trim = function () {
2527 return this.replace(/^\s+|\s+$/g, '');
2527 return this.replace(/^\s+|\s+$/g, '');
2528 };
2528 };
2529
2529
2530 String.prototype.ltrim = function () {
2530 String.prototype.ltrim = function () {
2531 return this.replace(/^\s+/, '');
2531 return this.replace(/^\s+/, '');
2532 };
2532 };
2533
2533
2534 String.prototype.rtrim = function () {
2534 String.prototype.rtrim = function () {
2535 return this.replace(/\s+$/, '');
2535 return this.replace(/\s+$/, '');
2536 };
2536 };
2537
2537
2538 String.prototype.fulltrim = function () {
2538 String.prototype.fulltrim = function () {
2539 return this.replace(/(?:(?:^|\n)\s+|\s+(?:$|\n))/g, '').replace(/\s+/g, ' ');
2539 return this.replace(/(?:(?:^|\n)\s+|\s+(?:$|\n))/g, '').replace(/\s+/g, ' ');
2540 };
2540 };
2541 }
2541 }
2542
2542
2543 function decodeEncodedJSON (input){
2543 function decodeEncodedJSON (input){
2544 try{
2544 try{
2545 var val = JSON.parse(input);
2545 var val = JSON.parse(input);
2546 delete doc;
2546 delete doc;
2547 return val;
2547 return val;
2548 }catch(exc){
2548 }catch(exc){
2549
2549
2550 delete doc;
2550 delete doc;
2551 }
2551 }
2552 }
2552 }
2553
2553
2554 function parseTagsToSearch(searchParams) {
2554 function parseTagsToSearch(searchParams) {
2555 var params = {};
2555 var params = {};
2556 _.each(searchParams.tags, function (t) {
2556 _.each(searchParams.tags, function (t) {
2557 if (!_.has(params, t.type)) {
2557 if (!_.has(params, t.type)) {
2558 params[t.type] = [];
2558 params[t.type] = [];
2559 }
2559 }
2560 params[t.type].push(t.value);
2560 params[t.type].push(t.value);
2561 });
2561 });
2562 if (searchParams.page > 1){
2562 if (searchParams.page > 1){
2563 params.page = searchParams.page;
2563 params.page = searchParams.page;
2564 }
2564 }
2565 return params;
2565 return params;
2566 }
2566 }
2567
2567
2568 function parseSearchToTags(search) {
2568 function parseSearchToTags(search) {
2569 var config = {page: 1, tags: [], type:''};
2569 var config = {page: 1, tags: [], type:''};
2570 _.each(_.pairs(search), function (obj) {
2570 _.each(_.pairs(search), function (obj) {
2571 if (_.isArray(obj[1])) {
2571 if (_.isArray(obj[1])) {
2572 _.each(obj[1], function (obj2) {
2572 _.each(obj[1], function (obj2) {
2573 config.tags.push({type: obj[0], value: obj2});
2573 config.tags.push({type: obj[0], value: obj2});
2574 })
2574 })
2575 } else {
2575 } else {
2576 if (obj[0] == 'page') {
2576 if (obj[0] == 'page') {
2577 config.page = obj[1];
2577 config.page = obj[1];
2578 }
2578 }
2579 else if (obj[0] == 'type') {
2579 else if (obj[0] == 'type') {
2580 config.type = obj[1];
2580 config.type = obj[1];
2581 }
2581 }
2582 else {
2582 else {
2583 config.tags.push({type: obj[0], value: obj[1]});
2583 config.tags.push({type: obj[0], value: obj[1]});
2584 }
2584 }
2585
2585
2586 }
2586 }
2587 });
2587 });
2588 return config;
2588 return config;
2589 }
2589 }
2590
2590
2591
2591
2592 /* returns ISO date string from UTC now - timespan */
2592 /* returns ISO date string from UTC now - timespan */
2593 function timeSpanToStartDate(timeSpan){
2593 function timeSpanToStartDate(timeSpan){
2594 var amount = Number(timeSpan.slice(0,-1));
2594 var amount = Number(timeSpan.slice(0,-1));
2595 var unit = timeSpan.slice(-1);
2595 var unit = timeSpan.slice(-1);
2596 return moment.utc().subtract(amount, unit).format();
2596 return moment.utc().subtract(amount, unit).format();
2597 }
2597 }
2598
2598
2599 /* Sets server validation messages on form using angular machinery +
2599 /* Sets server validation messages on form using angular machinery +
2600 * custom key holding actual error messages */
2600 * custom key holding actual error messages */
2601 function setServerValidation(form, errors){
2601 function setServerValidation(form, errors){
2602
2602
2603 if (typeof form.ae_validation === 'undefined'){
2603 if (typeof form.ae_validation === 'undefined'){
2604 form.ae_validation = {};
2604 form.ae_validation = {};
2605
2605
2606 }
2606 }
2607 for (var key in form.ae_validation){
2607 for (var key in form.ae_validation){
2608 form.ae_validation[key] = [];
2608 form.ae_validation[key] = [];
2609
2609
2610 }
2610 }
2611
2611
2612
2612
2613 for (var key in form){
2613 for (var key in form){
2614 if (key[0] !== '$' && key !== 'ae_validation'){
2614 if (key[0] !== '$' && key !== 'ae_validation'){
2615 form[key].$setValidity('ae_validation', true);
2615 form[key].$setValidity('ae_validation', true);
2616 }
2616 }
2617 }
2617 }
2618 if (typeof errors !== undefined){
2618 if (typeof errors !== undefined){
2619 for (var key in errors){
2619 for (var key in errors){
2620 if (typeof form[key] !== 'undefined'){
2620 if (typeof form[key] !== 'undefined'){
2621 form[key].$setValidity('ae_validation', false);
2621 form[key].$setValidity('ae_validation', false);
2622 }
2622 }
2623 // handle wtforms and colander errors based on
2623 // handle wtforms and colander errors based on
2624 // whether we have list of erors or a single error in a key
2624 // whether we have list of erors or a single error in a key
2625 if (angular.isArray(errors[key])){
2625 if (angular.isArray(errors[key])){
2626 form.ae_validation[key] = errors[key];
2626 form.ae_validation[key] = errors[key];
2627 }
2627 }
2628 else{
2628 else{
2629 form.ae_validation[key] = [errors[key]];
2629 form.ae_validation[key] = [errors[key]];
2630 }
2630 }
2631 }
2631 }
2632 }
2632 }
2633 return form;
2633 return form;
2634 }
2634 }
2635
2635
2636 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
2636 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
2637 // #
2637 // #
2638 // # This program is free software: you can redistribute it and/or modify
2638 // # This program is free software: you can redistribute it and/or modify
2639 // # it under the terms of the GNU Affero General Public License, version 3
2639 // # it under the terms of the GNU Affero General Public License, version 3
2640 // # (only), as published by the Free Software Foundation.
2640 // # (only), as published by the Free Software Foundation.
2641 // #
2641 // #
2642 // # This program is distributed in the hope that it will be useful,
2642 // # This program is distributed in the hope that it will be useful,
2643 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
2643 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
2644 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2644 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2645 // # GNU General Public License for more details.
2645 // # GNU General Public License for more details.
2646 // #
2646 // #
2647 // # You should have received a copy of the GNU Affero General Public License
2647 // # You should have received a copy of the GNU Affero General Public License
2648 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
2648 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
2649 // #
2649 // #
2650 // # This program is dual-licensed. If you wish to learn more about the
2650 // # This program is dual-licensed. If you wish to learn more about the
2651 // # AppEnlight Enterprise Edition, including its added features, Support
2651 // # AppEnlight Enterprise Edition, including its added features, Support
2652 // # services, and proprietary license terms, please see
2652 // # services, and proprietary license terms, please see
2653 // # https://rhodecode.com/licenses/
2653 // # https://rhodecode.com/licenses/
2654
2654
2655 'use strict';
2655 'use strict';
2656
2656
2657 // Declare app level module which depends on filters, and services
2657 // Declare app level module which depends on filters, and services
2658 angular.module('appenlight.base', [
2658 angular.module('appenlight.base', [
2659 'ngRoute',
2659 'ngRoute',
2660 'ui.router',
2660 'ui.router',
2661 'ui.router.router',
2661 'ui.router.router',
2662 'underscore',
2662 'underscore',
2663 'ui.bootstrap',
2663 'ui.bootstrap',
2664 'ngResource',
2664 'ngResource',
2665 'ngAnimate',
2665 'ngAnimate',
2666 'ngCookies',
2666 'ngCookies',
2667 'smart-table',
2667 'smart-table',
2668 'angular-toArrayFilter',
2668 'angular-toArrayFilter',
2669 'mentio'
2669 'mentio'
2670 ]);
2670 ]);
2671
2671
2672 angular.module('appenlight.filters', []);
2672 angular.module('appenlight.filters', []);
2673 angular.module('appenlight.templates', []);
2673 angular.module('appenlight.templates', []);
2674 angular.module('appenlight.controllers', [
2674 angular.module('appenlight.controllers', [
2675 'appenlight.base'
2675 'appenlight.base'
2676 ]);
2676 ]);
2677 angular.module('appenlight.components', [
2677 angular.module('appenlight.components', [
2678 'appenlight.components.channelstream',
2678 'appenlight.components.channelstream',
2679 'appenlight.components.appenlightApp',
2679 'appenlight.components.appenlightApp',
2680 'appenlight.components.appenlightHeader'
2680 'appenlight.components.appenlightHeader'
2681 ]);
2681 ]);
2682 angular.module('appenlight.directives', [
2682 angular.module('appenlight.directives', [
2683 'appenlight.directives.appVersion',
2684 'appenlight.directives.c3chart',
2683 'appenlight.directives.c3chart',
2685 'appenlight.directives.confirmValidate',
2684 'appenlight.directives.confirmValidate',
2686 'appenlight.directives.focus',
2685 'appenlight.directives.focus',
2687 'appenlight.directives.formErrors',
2686 'appenlight.directives.formErrors',
2688 'appenlight.directives.humanFormat',
2687 'appenlight.directives.humanFormat',
2689 'appenlight.directives.isoToRelativeTime',
2688 'appenlight.directives.isoToRelativeTime',
2690 'appenlight.directives.permissionsForm',
2689 'appenlight.directives.permissionsForm',
2691 'appenlight.directives.smallReportGroupList',
2690 'appenlight.directives.smallReportGroupList',
2692 'appenlight.directives.smallReportList',
2691 'appenlight.directives.smallReportList',
2693 'appenlight.directives.pluginConfig',
2692 'appenlight.directives.pluginConfig',
2694 'appenlight.directives.recursive',
2693 'appenlight.directives.recursive',
2695 'appenlight.directives.reportAlertAction',
2694 'appenlight.directives.reportAlertAction',
2696 'appenlight.directives.postProcessAction',
2695 'appenlight.directives.postProcessAction',
2697 'appenlight.directives.rule',
2696 'appenlight.directives.rule',
2698 'appenlight.directives.ruleReadOnly'
2697 'appenlight.directives.ruleReadOnly'
2699 ]);
2698 ]);
2700 angular.module('appenlight.services', [
2699 angular.module('appenlight.services', [
2701 'appenlight.services.chartResultParser',
2700 'appenlight.services.chartResultParser',
2702 'appenlight.services.resources',
2701 'appenlight.services.resources',
2703 'appenlight.services.stateHolder',
2702 'appenlight.services.stateHolder',
2704 'appenlight.services.typeAheadTagHelper',
2703 'appenlight.services.typeAheadTagHelper',
2705 'appenlight.services.UUIDProvider'
2704 'appenlight.services.UUIDProvider'
2706 ]).value('version', '0.1');
2705 ]).value('version', '0.1');
2707
2706
2708
2707
2709 var pluginsToLoad = _.map(decodeEncodedJSON(window.AE.plugins),
2708 var pluginsToLoad = _.map(decodeEncodedJSON(window.AE.plugins),
2710 function(item){
2709 function(item){
2711 return item.config.angular_module
2710 return item.config.angular_module
2712 });
2711 });
2713
2712
2714 angular.module('appenlight.plugins', pluginsToLoad);
2713 angular.module('appenlight.plugins', pluginsToLoad);
2715
2714
2716 var app = angular.module('appenlight', [
2715 var app = angular.module('appenlight', [
2717 'appenlight.base',
2716 'appenlight.base',
2718 'appenlight.config',
2717 'appenlight.config',
2719 'appenlight.templates',
2718 'appenlight.templates',
2720 'appenlight.filters',
2719 'appenlight.filters',
2721 'appenlight.services',
2720 'appenlight.services',
2722 'appenlight.directives',
2721 'appenlight.directives',
2723 'appenlight.controllers',
2722 'appenlight.controllers',
2724 'appenlight.components',
2723 'appenlight.components',
2725 'appenlight.plugins'
2724 'appenlight.plugins'
2726 ]);
2725 ]);
2727
2726
2728 // needs manual execution because of plugin files
2727 // needs manual execution because of plugin files
2729 function kickstartAE(initialUserData) {
2728 function kickstartAE(initialUserData) {
2730 app.config(['$httpProvider', '$uibTooltipProvider', '$locationProvider', function ($httpProvider, $uibTooltipProvider, $locationProvider) {
2729 app.config(['$httpProvider', '$uibTooltipProvider', '$locationProvider', function ($httpProvider, $uibTooltipProvider, $locationProvider) {
2731 $locationProvider.html5Mode(true);
2730 $locationProvider.html5Mode(true);
2732 $httpProvider.interceptors.push(['$q', '$rootScope', '$timeout', 'stateHolder', function ($q, $rootScope, $timeout, stateHolder) {
2731 $httpProvider.interceptors.push(['$q', '$rootScope', '$timeout', 'stateHolder', function ($q, $rootScope, $timeout, stateHolder) {
2733 return {
2732 return {
2734 'response': function (response) {
2733 'response': function (response) {
2735 var flashMessages = angular.fromJson(response.headers('x-flash-messages'));
2734 var flashMessages = angular.fromJson(response.headers('x-flash-messages'));
2736 if (flashMessages && flashMessages.length > 0) {
2735 if (flashMessages && flashMessages.length > 0) {
2737 stateHolder.flashMessages.extend(flashMessages);
2736 stateHolder.flashMessages.extend(flashMessages);
2738 }
2737 }
2739 return response;
2738 return response;
2740 },
2739 },
2741 'responseError': function (rejection) {
2740 'responseError': function (rejection) {
2742 if (rejection.status > 299 && rejection.status !== 422) {
2741 if (rejection.status > 299 && rejection.status !== 422) {
2743 stateHolder.flashMessages.extend([{
2742 stateHolder.flashMessages.extend([{
2744 msg: 'Response status code: ' + rejection.status + ', "' + rejection.statusText + '", url: ' + rejection.config.url,
2743 msg: 'Response status code: ' + rejection.status + ', "' + rejection.statusText + '", url: ' + rejection.config.url,
2745 type: 'error'
2744 type: 'error'
2746 }]);
2745 }]);
2747 }
2746 }
2748 if (rejection.status == 0) {
2747 if (rejection.status == 0) {
2749 stateHolder.flashMessages.extend([{
2748 stateHolder.flashMessages.extend([{
2750 msg: 'Response timeout',
2749 msg: 'Response timeout',
2751 type: 'error'
2750 type: 'error'
2752 }]);
2751 }]);
2753 }
2752 }
2754 var flashMessages = angular.fromJson(rejection.headers('x-flash-messages'));
2753 var flashMessages = angular.fromJson(rejection.headers('x-flash-messages'));
2755 if (flashMessages && flashMessages.length > 0) {
2754 if (flashMessages && flashMessages.length > 0) {
2756 stateHolder.flashMessages.extend(flashMessages);
2755 stateHolder.flashMessages.extend(flashMessages);
2757 }
2756 }
2758
2757
2759 return $q.reject(rejection);
2758 return $q.reject(rejection);
2760 }
2759 }
2761 }
2760 }
2762 }]);
2761 }]);
2763
2762
2764 $uibTooltipProvider.options({appendToBody: true});
2763 $uibTooltipProvider.options({appendToBody: true});
2765
2764
2766 }]);
2765 }]);
2767
2766
2768
2767
2769 app.config(function ($provide) {
2768 app.config(function ($provide) {
2770 $provide.decorator("$exceptionHandler", function ($delegate) {
2769 $provide.decorator("$exceptionHandler", function ($delegate) {
2771 return function (exception, cause) {
2770 return function (exception, cause) {
2772 $delegate(exception, cause);
2771 $delegate(exception, cause);
2773 if (typeof AppEnlight !== 'undefined') {
2772 if (typeof AppEnlight !== 'undefined') {
2774 AppEnlight.grabError(exception);
2773 AppEnlight.grabError(exception);
2775 }
2774 }
2776 };
2775 };
2777 });
2776 });
2778 });
2777 });
2779
2778
2780 app.run(['$rootScope', '$timeout', 'stateHolder', '$state', '$location', '$transitions', '$window', 'AeConfig',
2779 app.run(['$rootScope', '$timeout', 'stateHolder', '$state', '$location', '$transitions', '$window', 'AeConfig',
2781 function ($rootScope, $timeout, stateHolder, $state, $location, $transitions, $window, AeConfig) {
2780 function ($rootScope, $timeout, stateHolder, $state, $location, $transitions, $window, AeConfig) {
2782 if (initialUserData){
2781 if (initialUserData){
2783 stateHolder.AeUser.update(initialUserData);
2782 stateHolder.AeUser.update(initialUserData);
2784 }
2783 }
2785 $rootScope.$state = $state;
2784 $rootScope.$state = $state;
2786 $rootScope.stateHolder = stateHolder;
2785 $rootScope.stateHolder = stateHolder;
2787 $rootScope.flash = stateHolder.flashMessages.list;
2786 $rootScope.flash = stateHolder.flashMessages.list;
2788 $rootScope.closeAlert = stateHolder.flashMessages.closeAlert;
2787 $rootScope.closeAlert = stateHolder.flashMessages.closeAlert;
2789 $rootScope.AeConfig = AeConfig;
2788 $rootScope.AeConfig = AeConfig;
2790
2789
2791 var transitionApp = function($transition$, $state) {
2790 var transitionApp = function($transition$, $state) {
2792 // redirect user to /register unless its one of open views
2791 // redirect user to /register unless its one of open views
2793 var isGuestState = [
2792 var isGuestState = [
2794 'report.view_detail',
2793 'report.view_detail',
2795 'report.view_group',
2794 'report.view_group',
2796 'dashboard.view'
2795 'dashboard.view'
2797 ].indexOf($transition$.to().name) !== -1;
2796 ].indexOf($transition$.to().name) !== -1;
2798
2797
2799 var path = $window.location.pathname;
2798 var path = $window.location.pathname;
2800 // strip trailing slash
2799 // strip trailing slash
2801 if (path.substr(path.length - 1) === '/') {
2800 if (path.substr(path.length - 1) === '/') {
2802 path = path.substr(0, path.length - 1);
2801 path = path.substr(0, path.length - 1);
2803 }
2802 }
2804 var isOpenView = false;
2803 var isOpenView = false;
2805 var openViews = [
2804 var openViews = [
2806 AeConfig.urls.otherRoutes.lostPassword,
2805 AeConfig.urls.otherRoutes.lostPassword,
2807 AeConfig.urls.otherRoutes.lostPasswordGenerate
2806 AeConfig.urls.otherRoutes.lostPasswordGenerate
2808 ];
2807 ];
2809
2808
2810 _.each(openViews, function (url) {
2809 _.each(openViews, function (url) {
2811 var url = '/' + url.split('/').slice(3).join('/');
2810 var url = '/' + url.split('/').slice(3).join('/');
2812 if (url === path) {
2811 if (url === path) {
2813 isOpenView = true;
2812 isOpenView = true;
2814 }
2813 }
2815 });
2814 });
2816 if (stateHolder.AeUser.id === null && !isGuestState && !isOpenView) {
2815 if (stateHolder.AeUser.id === null && !isGuestState && !isOpenView) {
2817 if (window.location.toString().indexOf(AeConfig.urls.otherRoutes.register) === -1) {
2816 if (window.location.toString().indexOf(AeConfig.urls.otherRoutes.register) === -1) {
2818
2817
2819 var newLocation = AeConfig.urls.otherRoutes.register + '?came_from=' + encodeURIComponent(window.location);
2818 var newLocation = AeConfig.urls.otherRoutes.register + '?came_from=' + encodeURIComponent(window.location);
2820 // fix infinite digest here
2819 // fix infinite digest here
2821 $rootScope.$on('$locationChangeStart',
2820 $rootScope.$on('$locationChangeStart',
2822 function(event, toState, toParams, fromState, fromParams, options){
2821 function(event, toState, toParams, fromState, fromParams, options){
2823 event.preventDefault();
2822 event.preventDefault();
2824 $window.location = newLocation;
2823 $window.location = newLocation;
2825 });
2824 });
2826 $window.location = newLocation;
2825 $window.location = newLocation;
2827 return false;
2826 return false;
2828 }
2827 }
2829 return false;
2828 return false;
2830 }
2829 }
2831 return true;
2830 return true;
2832 };
2831 };
2833 $transitions.onBefore({}, transitionApp);
2832 $transitions.onBefore({}, transitionApp);
2834
2833
2835 }]);
2834 }]);
2836 }
2835 }
2837
2836
2838 ;angular.module('appenlight.templates').run(['$templateCache', function($templateCache) {
2837 ;angular.module('appenlight.templates').run(['$templateCache', function($templateCache) {
2839 'use strict';
2838 'use strict';
2840
2839
2840 $templateCache.put('components/appenlight-app/appenlight-app.html',
2841 "<channelstream config=\"AeConfig\"></channelstream>\n" +
2842 "<appenlight-header></appenlight-header>\n" +
2843 "<div id=\"outer-content\">\n" +
2844 " <div ui-view class=\"container\"></div>\n" +
2845 "</div>\n"
2846 );
2847
2848
2849 $templateCache.put('components/appenlight-header/appenlight-header.html',
2850 "<!-- Fixed navbar -->\n" +
2851 "<div id=\"top-navbar\" class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n" +
2852 " <div class=\"pattern\">\n" +
2853 " <div class=\"container\">\n" +
2854 " <div class=\"navbar-header pull-left\">\n" +
2855 " <a data-ui-sref=\"front_dashboard\" class=\"navbar-brand\">\n" +
2856 " <div id=\"logo-normal\" class=\"hidden-sm hidden-xs\"></div>\n" +
2857 " <div id=\"logo-icon\" class=\"visible-sm visible-xs\"></div>\n" +
2858 " </a>\n" +
2859 " </div>\n" +
2860 "\n" +
2861 " <div class=\"container-fluid\">\n" +
2862 " <div>\n" +
2863 " <ul class=\"nav navbar-nav navbar-right\" ng-if=\"$ctrl.stateHolder.AeUser.id !== null\">\n" +
2864 " <li id=\"user-notifications\" class=\"dropdown ng-cloak\" data-uib-dropdown>\n" +
2865 "\n" +
2866 " <a class=\"dropdown-toggle\" data-uib-dropdown-toggle>\n" +
2867 " <span class=\"badge\">{{$ctrl.assignedReports.length}}</span>\n" +
2868 " <span class=\"fa fa-envelope-o\"></span>\n" +
2869 " </a>\n" +
2870 " <ul class=\"dropdown-menu\">\n" +
2871 " <li role=\"presentation\" class=\"dropdown-header\">Assigned reports</li>\n" +
2872 " <li data-ng-repeat=\"report in $ctrl.assignedReports\" role=\"presentation\">\n" +
2873 " <a href=\"{{report.front_url}}\" role=\"menuitem\" tabindex=\"-1\">\n" +
2874 " <small>{{ report.error || 'Slow Report: ' + report.view_name |truncate:65}}</small>\n" +
2875 " </a>\n" +
2876 "\n" +
2877 " </li>\n" +
2878 " <li data-ng-if=\"$ctrl.assignedReports.length == 0\"><a><small>No reports</small></a></li>\n" +
2879 " </ul>\n" +
2880 " </li>\n" +
2881 " <li id=\"alert-notifications\" class=\"dropdown ng-cloak\" data-uib-dropdown auto-close=\"outsideClick\">\n" +
2882 " <a class=\"dropdown-toggle\" data-uib-dropdown-toggle>\n" +
2883 " <span class=\"badge {{ activeEvents ? 'danger' : '' }}\">{{$ctrl.activeEvents}}</span>\n" +
2884 " <span class=\"fa fa-bell-o\"></span></a>\n" +
2885 " <ul class=\"dropdown-menu\">\n" +
2886 " <li role=\"presentation\" class=\"dropdown-header\">\n" +
2887 " <a data-ui-sref=\"events\" class=\"btn btn-xs btn-default\">Show me more</a></li>\n" +
2888 " <li role=\"presentation\" class=\"dropdown-header\">Latest events</li>\n" +
2889 " <li data-ng-repeat=\"event in $ctrl.latestEvents\" role=\"presentation\">\n" +
2890 " <a data-ng-click=\"$ctrl.clickedEvent(event)\"><small class=\"resource-name\">For {{ event.resource_name }}</small><br/>\n" +
2891 " <small>{{ event.text |truncate:65}}</small><br/>\n" +
2892 " <small class=\"date\" data-uib-tooltip=\"{{event.start_date}}\">created: <iso-to-relative-time time=\"{{event.start_date}}\"/></small>\n" +
2893 " <small class=\"date\" data-ng-show=\"event.end_date\" data-uib-tooltip=\"{{event.end_date}}\">closed: <iso-to-relative-time time=\"{{event.end_date}}\"/></small>\n" +
2894 " </a>\n" +
2895 " </li>\n" +
2896 " <li data-ng-if=\"$ctrl.latestEvents.length == 0\"><a><small>No events</small></a></li>\n" +
2897 " </ul>\n" +
2898 " </li>\n" +
2899 "\n" +
2900 " <li id=\"dashboards\" class=\"dropdown\" data-uib-dropdown>\n" +
2901 " <a class=\"dropdown-toggle\" data-uib-dropdown-toggle tooltip-placement=\"bottom\" data-uib-tooltip=\"Dashboards\">\n" +
2902 " <span class=\"fa fa-bar-chart-o \"></span></a>\n" +
2903 " <ul class=\"dropdown-menu\">\n" +
2904 " <li role=\"presentation\"><a data-ui-sref=\"front_dashboard\">Main dashboard</a></li>\n" +
2905 " <li role=\"presentation\" ng-repeat=\"item in $ctrl.AeConfig.topNav.menu_dashboards_items\">\n" +
2906 " <a data-ui-sref=\"{{ item.sref }}\">{{ item.label }}</a>\n" +
2907 " </li>\n" +
2908 " </ul>\n" +
2909 " </li>\n" +
2910 "\n" +
2911 " <li class=\"dropdown\" data-uib-dropdown>\n" +
2912 " <a class=\"dropdown-toggle\" data-uib-dropdown-toggle tooltip-placement=\"bottom\" data-uib-tooltip=\"Reports\">\n" +
2913 " <span class=\"fa fa-exclamation-triangle\"></span></a>\n" +
2914 " <ul class=\"dropdown-menu\">\n" +
2915 " <li role=\"presentation\">\n" +
2916 " <a data-ui-sref=\"report.list({resource:$ctrl.stateHolder.resource})\">Error Reports</a>\n" +
2917 " </li>\n" +
2918 " <li role=\"presentation\">\n" +
2919 " <a data-ui-sref=\"report.list_slow({resource:$ctrl.stateHolder.resource})\">Slowness Reports</a>\n" +
2920 " </li>\n" +
2921 "\n" +
2922 " </ul>\n" +
2923 " </li>\n" +
2924 "\n" +
2925 " <li>\n" +
2926 " <a data-ui-sref=\"logs({resource:$ctrl.stateHolder.resource})\" data-uib-tooltip=\"Logs\" tooltip-placement=\"bottom\"><span class=\"fa fa-list-alt \"></span></a></li>\n" +
2927 " <li>\n" +
2928 " <a data-ui-sref=\"user\" data-uib-tooltip=\"Settings\" tooltip-placement=\"bottom\"><span class=\"fa fa-cog \"></span></a>\n" +
2929 " </li>\n" +
2930 " <li class=\"dropdown\" data-uib-dropdown data-ng-if=\"$ctrl.AeConfig.topNav.menu_admin_items.length\">\n" +
2931 " <a class=\"dropdown-toggle\" data-uib-dropdown-toggle tooltip-placement=\"bottom\" data-uib-tooltip=\"Admin Settings\">\n" +
2932 " <span class=\"fa fa-wrench\"></span></a>\n" +
2933 " <ul class=\"dropdown-menu\">\n" +
2934 " <li role=\"presentation\" ng-repeat=\"item in $ctrl.AeConfig.topNav.menu_admin_items\">\n" +
2935 " <a data-ui-sref=\"{{ item.sref }}\">{{ item.label }}</a>\n" +
2936 " </li>\n" +
2937 " </ul>\n" +
2938 " </li>\n" +
2939 " <li><a href=\"{{ $ctrl.AeConfig.urls.otherRoutes.signOut }}\" target=\"_self\"\n" +
2940 " data-uib-tooltip=\"Sign out\" tooltip-placement=\"bottom\">\n" +
2941 " <span class=\"fa fa-power-off \"></span></a></li>\n" +
2942 " </ul>\n" +
2943 " <ul class=\"nav navbar-nav pull-right\" ng-if=\"$ctrl.stateHolder.AeUser.id === null\">\n" +
2944 " <li><a href=\"{{ $ctrl.AeConfig.urls.otherRoutes.register }}\" target=\"_self\" class=\"btn btn-orange\">Sign In</a></li>\n" +
2945 " </ul>\n" +
2946 " </div><!-- /.navbar-collapse -->\n" +
2947 " </div><!-- /.container-fluid -->\n" +
2948 " </div>\n" +
2949 " </div>\n" +
2950 "</div>\n"
2951 );
2952
2953
2954 $templateCache.put('directives/permissions/permissions.html',
2955 "<div class=\"panel panel-default\">\n" +
2956 " <div class=\"panel-heading\">\n" +
2957 " <h3 class=\"panel-title\">Permissions</h3>\n" +
2958 " </div>\n" +
2959 " <div class=\"panel-body\">\n" +
2960 " <p>Here you can <strong>set permissions</strong> for others to access your app data.</p>\n" +
2961 "\n" +
2962 " <p>For example you can let other staff member view or alter error reports.</p>\n" +
2963 "\n" +
2964 " <div ng-if=\"permissions.possibleGroups.length > 0\">\n" +
2965 " <h3>Group permissions</h3>\n" +
2966 "\n" +
2967 " <ul class=\"list-group\">\n" +
2968 " <li ng-repeat=\"perm in permissions.currentPermissions.group\" class=\"animate-repeat list-group-item\">\n" +
2969 " <strong>{{ perm.self.group_name }}</strong>\n" +
2970 " <div ng-repeat=\"perm_name in perm.permissions\" class=\"pull-right animate-repeat m-l-1\">\n" +
2971 " <span ng-if=\"perm_name == '__all_permissions__'\">Resource owner</span>\n" +
2972 " <span class=\"dropdown\" data-uib-dropdown on-toggle=\"toggled(open)\" ng-if=\"perm_name != '__all_permissions__'\">\n" +
2973 " <a class=\"btn btn-danger btn-xs\" data-uib-dropdown-toggle><span class=\"fa fa-trash-o\"></span> {{ perm_name }}</a>\n" +
2974 " <ul class=\"dropdown-menu\">\n" +
2975 " <li><a>No</a></li>\n" +
2976 " <li><a ng-click=\"permissions.removeGroupPermission(perm_name, perm)\">Yes</a></li>\n" +
2977 " </ul>\n" +
2978 " </span>\n" +
2979 " </div>\n" +
2980 " </li>\n" +
2981 " </ul>\n" +
2982 "\n" +
2983 " <form name=\"add_permission\" class=\"form-inline\" ng-submit=\"permissions.setGroupPermission()\">\n" +
2984 " <div class=\"form-group\">\n" +
2985 " <select class=\"form-control\" ng-model=\"permissions.form.selectedGroup\" ng-options=\"g.id as g.group_name for g in permissions.possibleGroups\"></select>\n" +
2986 " </div>\n" +
2987 " <div class=\"form-group\">\n" +
2988 " <span ng-repeat=\"permission in permissions.possiblePermissions\">\n" +
2989 " <input type=\"checkbox\" ng-model=\"permissions.form.selectedGroupPermissions[permission]\"> {{ permission }}\n" +
2990 " </span>\n" +
2991 " </div>\n" +
2992 " <div class=\"form-group\">\n" +
2993 " <button class=\"btn btn-info\"><span class=\"fa fa-user\"></span> Give permission</button>\n" +
2994 " </div>\n" +
2995 " </form>\n" +
2996 "\n" +
2997 " </div>\n" +
2998 "\n" +
2999 " <h3>User permissions</h3>\n" +
3000 " <div>\n" +
3001 " <ul class=\"list-group\">\n" +
3002 " <li ng-repeat=\"perm in permissions.currentPermissions.user\" class=\"animate-repeat list-group-item\">\n" +
3003 " <strong>{{ perm.self.user_name }}</strong>\n" +
3004 " <div ng-repeat=\"perm_name in perm.permissions\" class=\"pull-right animate-repeat m-l-1\">\n" +
3005 " <span ng-if=\"perm_name == '__all_permissions__'\">Resource owner</span>\n" +
3006 " <span class=\"dropdown\" data-uib-dropdown on-toggle=\"toggled(open)\" ng-if=\"perm_name != '__all_permissions__'\">\n" +
3007 " <a class=\"btn btn-danger btn-xs\" data-uib-dropdown-toggle><span class=\"fa fa-trash-o\"></span> {{ perm_name }}</a>\n" +
3008 " <ul class=\"dropdown-menu\">\n" +
3009 " <li><a>No</a></li>\n" +
3010 " <li><a ng-click=\"permissions.removeUserPermission(perm_name,perm)\">Yes</a></li>\n" +
3011 " </ul>\n" +
3012 " </span>\n" +
3013 " </div>\n" +
3014 " </li>\n" +
3015 " </ul>\n" +
3016 " </div>\n" +
3017 " <div>\n" +
3018 " <p>First enter username or full email of person you want to give access to (the person needs to be <strong>already registered in AppEnlight</strong>)</p>\n" +
3019 "\n" +
3020 " <form name=\"add_permission\" class=\"form-inline\" ng-submit=\"permissions.setUserPermission()\">\n" +
3021 " <div class=\"form-group\">\n" +
3022 " <input type=\"text\" class=\"autocomplete form-control\" placeholder=\"Search for user/email\" ng-model=\"permissions.form.autocompleteUser\"\n" +
3023 " uib-typeahead=\"u.user for u in permissions.searchUsers($viewValue) | limitTo:8\" typeahead-loading=\"permissions.searchingUsers\" typeahead-wait-ms=\"250\"\n" +
3024 " typeahead-template-url=\"templates/directives/user_search_type_ahead.html\"\n" +
3025 " />\n" +
3026 " </div>\n" +
3027 " <div class=\"form-group\">\n" +
3028 " <span ng-repeat=\"permission in permissions.possiblePermissions\">\n" +
3029 " <input type=\"checkbox\" ng-model=\"permissions.form.selectedUserPermissions[permission]\"> {{ permission }}\n" +
3030 " </span>\n" +
3031 " </div>\n" +
3032 " <div class=\"form-group\">\n" +
3033 " <button class=\"btn btn-info\" ng-disabled=\"!permissions.form.autocompleteUser\"><span class=\"fa fa-user\"></span> Give permission</button>\n" +
3034 " </div>\n" +
3035 " </form>\n" +
3036 " </div>\n" +
3037 " </div>\n" +
3038 "</div>\n"
3039 );
3040
3041
3042 $templateCache.put('directives/plugin_config/plugin_config.html',
3043 "<div ng-repeat=\"tmpl in plugin_ctrlr.inclusions track by $index\">\n" +
3044 " <div><strong>Plugin: {{tmpl.name}}</strong></div>\n" +
3045 " <ng-include src=\"tmpl.template\"></ng-include>\n" +
3046 " <hr/>\n" +
3047 "</div>\n"
3048 );
3049
3050
3051 $templateCache.put('directives/postprocess_action/postprocess_action.html',
3052 "<div class=\"panel panel-default action\">\n" +
3053 " <div class=\"panel-body form-inline\">\n" +
3054 " <div class=\"pull-right\">\n" +
3055 " <span class=\"dropdown\" data-uib-dropdown>\n" +
3056 " <a class=\"btn btn-danger\" data-uib-dropdown-toggle><span class=\"fa fa-trash-o\"></span></a>\n" +
3057 " <ul class=\"dropdown-menu\">\n" +
3058 " <li><a>No</a></li>\n" +
3059 " <li><a ng-click=\"ctrl.deleteAction(ctrl.action)\">Yes</a></li>\n" +
3060 " </ul>\n" +
3061 " </span>\n" +
3062 " </div>\n" +
3063 "\n" +
3064 " <div class=\"form-group\">\n" +
3065 " <label>Action</label>\n" +
3066 "\n" +
3067 " <div class=\"form-group\">\n" +
3068 " <select class=\"form-control\" ng-model=\"ctrl.action.new_value\" ng-options=\"f[0] as f[1] for f in ctrl.possibleActions\" ng-change=\"ctrl.setDirty()\"></select>\n" +
3069 " </div>\n" +
3070 "\n" +
3071 " <a class=\"btn btn-success\" ng-if=\"ctrl.action.dirty\" ng-click=\"ctrl.saveAction()\"><span class=\"fa fa-save\"></span> &nbsp;Save changes</a>\n" +
3072 "\n" +
3073 " </div>\n" +
3074 " <hr/>\n" +
3075 " <p>Meeting following criteria:</p>\n" +
3076 " <form-errors errors=\"ctrl.errors\"></form-errors>\n" +
3077 " {{ctrl.rule}}\n" +
3078 " <rule rule=\"ctrl.action.rule\" rule-definitions=\"ctrl.ruleDefinitions\" parent-rule=\"null\" parent-obj=\"ctrl.action\"></rule>\n" +
3079 " </div>\n" +
3080 "</div>\n"
3081 );
3082
3083
3084 $templateCache.put('directives/report_alert_action/report_alert_action.html',
3085 "<div class=\"panel panel-default action\">\n" +
3086 " <div class=\"panel-body form-inline\">\n" +
3087 " <div class=\"pull-right\">\n" +
3088 " <span class=\"dropdown\" data-uib-dropdown>\n" +
3089 " <a class=\"btn btn-danger\" data-uib-dropdown-toggle><span class=\"fa fa-trash-o\"></span></a>\n" +
3090 " <ul class=\"dropdown-menu\">\n" +
3091 " <li><a>No</a></li>\n" +
3092 " <li><a ng-click=\"ctrl.deleteAction(ctrl.actions, ctrl.action)\">Yes</a></li>\n" +
3093 " </ul>\n" +
3094 " </span>\n" +
3095 " </div>\n" +
3096 "\n" +
3097 " <div class=\"form-group\">\n" +
3098 " <label>Applies to</label>\n" +
3099 " <select class=\"form-control\" ng-model=\"ctrl.action.resource_id\" ng-options=\"f.resource_id as f.resource_name for f in ctrl.applications\" ng-change=\"ctrl.setDirty()\">\n" +
3100 " <option value=\"\">All Resources</option>\n" +
3101 " </select>\n" +
3102 " </div>\n" +
3103 " <div class=\"form-group\">\n" +
3104 " <label>Notify</label>\n" +
3105 " <select class=\"form-control\" ng-model=\"ctrl.action.action\" ng-change=\"ctrl.setDirty()\" ng-options=\"f[0] as f[1] for f in ctrl.possibleNotifications\"></select>\n" +
3106 "\n" +
3107 " <a class=\"btn btn-success\" ng-if=\"ctrl.action.dirty\" ng-click=\"ctrl.saveAction()\"><span class=\"fa fa-save\"></span> &nbsp;Save changes</a>\n" +
3108 "\n" +
3109 " </div>\n" +
3110 " <div>\n" +
3111 " <p><strong>Channels:</strong></p>\n" +
3112 " <ul class=\"list-group\">\n" +
3113 " <li class=\"list-group-item\" ng-repeat=\"channel in ctrl.action.channels\">\n" +
3114 " <strong>{{channel.channel_visible_value}}</strong>\n" +
3115 " <div class=\"pull-right\">\n" +
3116 " <span class=\"dropdown\" data-uib-dropdown>\n" +
3117 " <a class=\"btn btn-danger btn-xs\" data-uib-dropdown-toggle><span class=\"fa fa-trash-o\"></span></a>\n" +
3118 " <ul class=\"dropdown-menu\">\n" +
3119 " <li><a>No</a></li>\n" +
3120 " <li><a ng-click=\"ctrl.unBindChannel(channel)\">Yes</a></li>\n" +
3121 " </ul>\n" +
3122 " </span>\n" +
3123 " </div>\n" +
3124 " </li>\n" +
3125 " </ul>\n" +
3126 " <div class=\"form-group\" ng-if=\"ctrl.possibleChannels.length\">\n" +
3127 " <select class=\"form-control\" ng-model=\"ctrl.channelToBind\" ng-options=\"c as c.channel_visible_value for c in ctrl.possibleChannels |filter: c.supports_report_alerting\"></select>\n" +
3128 " <a class=\"btn btn-info\" ng-click=\"ctrl.bindChannel(channel, ctrl.action)\"><span class=\"fa fa-plus-circle\"></span> Add Channel</a>\n" +
3129 " </div>\n" +
3130 " <div class=\"alert alert-danger\" ng-if=\"!ctrl.possibleChannels.length\">\n" +
3131 " <span class=\"fa fa-exclamation-triangle \"></span>You need to create an alert channel before you can assign it to your rule.\n" +
3132 " </div>\n" +
3133 "\n" +
3134 " </div>\n" +
3135 " <hr/>\n" +
3136 " <p>Meeting following criteria:</p>\n" +
3137 " <form-errors errors=\"ctrl.errors\"></form-errors>\n" +
3138 " <rule rule=\"ctrl.action.rule\" rule-definitions=\"ctrl.ruleDefinitions\" parent-rule=\"null\" parent-obj=\"ctrl.action\"></rule>\n" +
3139 " </div>\n" +
3140 "</div>\n"
3141 );
3142
3143
3144 $templateCache.put('directives/rule_read_only/rule_read_only.html',
3145 "<div class=\"rule-read-only\">\n" +
3146 "\n" +
3147 " <span class=\"form-group\">\n" +
3148 " {{rule_ctrlr.readOnlyPossibleFields[rule_ctrlr.rule.field]}}\n" +
3149 " </span>\n" +
3150 "\n" +
3151 " <span ng-if=\"rule_ctrlr.rule.field != '__AND__' && rule_ctrlr.rule.field !='__OR__' && rule_ctrlr.rule.field !='__NOT__'\">\n" +
3152 " is {{rule_ctrlr.ruleDefinitions.allOps[rule_ctrlr.rule.op]}} {{rule_ctrlr.rule.value}}\n" +
3153 " </span>\n" +
3154 "\n" +
3155 " <span ng-if=\"rule_ctrlr.rule.field == '__AND__' || rule_ctrlr.rule.field =='__OR__' || rule_ctrlr.rule.field =='__NOT__'\">\n" +
3156 " <p ng-if=\"parent\"><strong>Subrules</strong></p>\n" +
3157 " <div ng-repeat=\"subrule in rule_ctrlr.rule.rules\" class=\"m-l-2\">\n" +
3158 "\n" +
3159 " <div class=\"panel panel-default\">\n" +
3160 " <div class=\"panel-body form-inline\">\n" +
3161 " <recursive>\n" +
3162 " <rule-read-only rule=\"subrule\" rule-definitions=\"rule_ctrlr.ruleDefinitions\" parent-rule=\"null\" parent-obj=\"rule_ctrlr.parentObj\"></rule-read-only>\n" +
3163 " </recursive>\n" +
3164 " </div>\n" +
3165 " </div>\n" +
3166 " </div>\n" +
3167 "\n" +
3168 " </span>\n" +
3169 "</div>\n"
3170 );
3171
3172
3173 $templateCache.put('directives/rule/rule.html',
3174 "<div class=\"rule form-inline\">\n" +
3175 "\n" +
3176 " <div class=\"form-group\">\n" +
3177 " <select class=\"form-control\"\n" +
3178 " ng-model=\"rule_ctrlr.rule.field\"\n" +
3179 " ng-change=\"rule_ctrlr.fieldChange()\"\n" +
3180 " ng-options=\"key as label for (key, label) in rule_ctrlr.ruleDefinitions.possibleFields\"></select>\n" +
3181 " </div>\n" +
3182 "\n" +
3183 " <div ng-if=\"rule_ctrlr.rule.field != '__AND__' && rule_ctrlr.rule.field !='__OR__' && rule_ctrlr.rule.field !='__NOT__'\" class=\"form-group\">\n" +
3184 "\n" +
3185 " <select ng-model=\"rule_ctrlr.rule.op\" class=\"form-control\"\n" +
3186 " ng-change=\"rule_ctrlr.setDirty()\"\n" +
3187 " ng-options=\"op as rule_ctrlr.ruleDefinitions.allOps[op] for op in rule_ctrlr.ruleDefinitions.fieldOps[rule_ctrlr.rule.field]\">\n" +
3188 " </select>\n" +
3189 "\n" +
3190 " <input type=\"text\" placeholder=\"Value\" ng-model=\"rule_ctrlr.rule.value\" ng-change=\"rule_ctrlr.setDirty()\" class=\"form-control\">\n" +
3191 "\n" +
3192 " </div>\n" +
3193 "\n" +
3194 " <span ng-if=\"rule_ctrlr.rule.field == '__AND__' || rule_ctrlr.rule.field =='__OR__' || rule_ctrlr.rule.field =='__NOT__'\">\n" +
3195 " <p ng-if=\"parent\"><strong>Subrules</strong></p>\n" +
3196 " <div ng-repeat=\"subrule in rule_ctrlr.rule.rules\" class=\"m-l-2\">\n" +
3197 " <div class=\"panel panel-default\">\n" +
3198 " <div class=\"panel-body form-inline\">\n" +
3199 " <recursive>\n" +
3200 " <rule rule=\"subrule\" rule-definitions=\"rule_ctrlr.ruleDefinitions\" parent-rule=\"rule_ctrlr.rule\" parent-obj=\"rule_ctrlr.parentObj\"></rule>\n" +
3201 " </recursive>\n" +
3202 " </div>\n" +
3203 " </div>\n" +
3204 " </div>\n" +
3205 "\n" +
3206 " <span ng-if=\"(rule_ctrlr.config.disable_subrules == false) == false\" class=\"btn btn-info\" ng-click=\"rule_ctrlr.add()\"><span class=\"fa fa-plus-circle\"></span> Add rule</span>\n" +
3207 "\n" +
3208 " </span>\n" +
3209 " <div class=\"pull-right\" ng-if=\"rule_ctrlr.parentRule\">\n" +
3210 " <span class=\"dropdown\" data-uib-dropdown>\n" +
3211 " <a class=\"btn btn-danger\" data-uib-dropdown-toggle><span class=\"fa fa-trash-o\"></span></a>\n" +
3212 " <ul class=\"dropdown-menu\">\n" +
3213 " <li><a>No</a></li>\n" +
3214 " <li><a ng-click=\"rule_ctrlr.deleteRule(rule_ctrlr.parentRule, rule_ctrlr.rule)\">Yes</a></li>\n" +
3215 " </ul>\n" +
3216 " </span>\n" +
3217 " </div>\n" +
3218 "</div>\n"
3219 );
3220
3221
2841 $templateCache.put('templates/admin/applications/applications_list.html',
3222 $templateCache.put('templates/admin/applications/applications_list.html',
2842 "<ng-include src=\"'templates/loader.html'\" ng-if=\"applications.loading.applications\"></ng-include>\n" +
3223 "<ng-include src=\"'templates/loader.html'\" ng-if=\"applications.loading.applications\"></ng-include>\n" +
2843 "\n" +
3224 "\n" +
2844 "<div class=\"panel panel-default\" ng-if=\"!applications.loading.applications\">\n" +
3225 "<div class=\"panel panel-default\" ng-if=\"!applications.loading.applications\">\n" +
2845 " <div class=\"panel-heading\">\n" +
3226 " <div class=\"panel-heading\">\n" +
2846 "\n" +
3227 "\n" +
2847 " Currently active applications: {{applications.applications.length}}\n" +
3228 " Currently active applications: {{applications.applications.length}}\n" +
2848 "\n" +
3229 "\n" +
2849 " </div>\n" +
3230 " </div>\n" +
2850 "\n" +
3231 "\n" +
2851 " <table st-table=\"displayedCollection\" st-safe-src=\"applications.applications\" class=\"table table-striped\">\n" +
3232 " <table st-table=\"displayedCollection\" st-safe-src=\"applications.applications\" class=\"table table-striped\">\n" +
2852 " <thead>\n" +
3233 " <thead>\n" +
2853 " <tr>\n" +
3234 " <tr>\n" +
2854 " <th st-sort=\"resource_name\"><a>Application name</a></th>\n" +
3235 " <th st-sort=\"resource_name\"><a>Application name</a></th>\n" +
2855 " <th st-sort=\"owner_user_name\"><a>Owner User</a></th>\n" +
3236 " <th st-sort=\"owner_user_name\"><a>Owner User</a></th>\n" +
2856 " <th st-sort=\"owner_group_name\"><a>Owner Group</a></th>\n" +
3237 " <th st-sort=\"owner_group_name\"><a>Owner Group</a></th>\n" +
2857 " <th class=\"options\"></th>\n" +
3238 " <th class=\"options\"></th>\n" +
2858 " </tr>\n" +
3239 " </tr>\n" +
2859 " <tr>\n" +
3240 " <tr>\n" +
2860 " <th><input st-search=\"resource_name\" placeholder=\"search for application\" class=\"form-control\" type=\"search\" st-delay=\"1\"/></th>\n" +
3241 " <th><input st-search=\"resource_name\" placeholder=\"search for application\" class=\"form-control\" type=\"search\" st-delay=\"1\"/></th>\n" +
2861 " <th><input st-search=\"owner_user_name\" placeholder=\"search for user\" class=\"form-control\" type=\"search\" st-delay=\"1\"/></th>\n" +
3242 " <th><input st-search=\"owner_user_name\" placeholder=\"search for user\" class=\"form-control\" type=\"search\" st-delay=\"1\"/></th>\n" +
2862 " <th><input st-search=\"owner_group_name\" placeholder=\"search for group\" class=\"form-control\" type=\"search\" st-delay=\"1\"/></th>\n" +
3243 " <th><input st-search=\"owner_group_name\" placeholder=\"search for group\" class=\"form-control\" type=\"search\" st-delay=\"1\"/></th>\n" +
2863 " <th></th>\n" +
3244 " <th></th>\n" +
2864 " </tr>\n" +
3245 " </tr>\n" +
2865 " </thead>\n" +
3246 " </thead>\n" +
2866 " <tbody>\n" +
3247 " <tbody>\n" +
2867 "\n" +
3248 "\n" +
2868 " <tr ng-repeat=\"resource in displayedCollection track by resource.resource_id\">\n" +
3249 " <tr ng-repeat=\"resource in displayedCollection track by resource.resource_id\">\n" +
2869 " <td> {{resource.resource_name}}</td>\n" +
3250 " <td> {{resource.resource_name}}</td>\n" +
2870 " <td>{{resource.owner_user_name}}</td>\n" +
3251 " <td>{{resource.owner_user_name}}</td>\n" +
2871 " <td>{{resource.owner_group_name}}</td>\n" +
3252 " <td>{{resource.owner_group_name}}</td>\n" +
2872 " <td>\n" +
3253 " <td>\n" +
2873 " <a class=\"btn btn-default btn-sm\" data-ui-sref=\"applications.update({resourceId:resource.resource_id})\" data-toggle=\"tooltip\" title=\"Update application\"><span class=\"fa fa-cog\"></span></a>\n" +
3254 " <a class=\"btn btn-default btn-sm\" data-ui-sref=\"applications.update({resourceId:resource.resource_id})\" data-toggle=\"tooltip\" title=\"Update application\"><span class=\"fa fa-cog\"></span></a>\n" +
2874 " </td>\n" +
3255 " </td>\n" +
2875 " </tr>\n" +
3256 " </tr>\n" +
2876 " <tfoot>\n" +
3257 " <tfoot>\n" +
2877 " <tr>\n" +
3258 " <tr>\n" +
2878 " <td colspan=\"4\" class=\"text-center\">\n" +
3259 " <td colspan=\"4\" class=\"text-center\">\n" +
2879 " <div st-pagination=\"\" st-items-by-page=\"100\" st-displayed-pages=\"7\"></div>\n" +
3260 " <div st-pagination=\"\" st-items-by-page=\"100\" st-displayed-pages=\"7\"></div>\n" +
2880 " </td>\n" +
3261 " </td>\n" +
2881 " </tr>\n" +
3262 " </tr>\n" +
2882 " </tfoot>\n" +
3263 " </tfoot>\n" +
2883 " </tbody>\n" +
3264 " </tbody>\n" +
2884 " </table>\n" +
3265 " </table>\n" +
2885 "\n" +
3266 "\n" +
2886 "</div>\n"
3267 "</div>\n"
2887 );
3268 );
2888
3269
2889
3270
2890 $templateCache.put('templates/admin/configs/edit.html',
3271 $templateCache.put('templates/admin/configs/edit.html',
2891 "<ng-include src=\"'templates/loader.html'\" ng-if=\"configs.loading.config\"></ng-include>\n" +
3272 "<ng-include src=\"'templates/loader.html'\" ng-if=\"configs.loading.config\"></ng-include>\n" +
2892 "\n" +
3273 "\n" +
2893 "<div class=\"panel panel-default\" ng-show=\"!configs.loading.config\">\n" +
3274 "<div class=\"panel panel-default\" ng-show=\"!configs.loading.config\">\n" +
2894 " <div class=\"panel-heading\">\n" +
3275 " <div class=\"panel-heading\">\n" +
2895 " <h3 class=\"panel-title\">Basic Configuration</h3>\n" +
3276 " <h3 class=\"panel-title\">Basic Configuration</h3>\n" +
2896 " </div>\n" +
3277 " </div>\n" +
2897 " <div class=\"panel-body\">\n" +
3278 " <div class=\"panel-body\">\n" +
2898 " <h2>Visual</h2>\n" +
3279 " <h2>Visual</h2>\n" +
2899 " <form class=\"form-horizontal\">\n" +
3280 " <form class=\"form-horizontal\">\n" +
2900 " <div class=\"form-group\">\n" +
3281 " <div class=\"form-group\">\n" +
2901 " <label class=\"control-label col-sm-4 col-lg-3\">\n" +
3282 " <label class=\"control-label col-sm-4 col-lg-3\">\n" +
2902 " Footer HTML\n" +
3283 " Footer HTML\n" +
2903 " </label>\n" +
3284 " </label>\n" +
2904 " <div class=\"col-sm-8 col-lg-9\">\n" +
3285 " <div class=\"col-sm-8 col-lg-9\">\n" +
2905 " <textarea class=\"form-control\" type=\"text\" ng-model=\"configs.configs.global.template_footer_html.value\" style=\"min-height: 150px\"></textarea>\n" +
3286 " <textarea class=\"form-control\" type=\"text\" ng-model=\"configs.configs.global.template_footer_html.value\" style=\"min-height: 150px\"></textarea>\n" +
2906 " </div>\n" +
3287 " </div>\n" +
2907 " </div>\n" +
3288 " </div>\n" +
2908 " </form>\n" +
3289 " </form>\n" +
2909 "\n" +
3290 "\n" +
2910 " <h2>Functional</h2>\n" +
3291 " <h2>Functional</h2>\n" +
2911 "\n" +
3292 "\n" +
2912 " <form class=\"form-horizontal\">\n" +
3293 " <form class=\"form-horizontal\">\n" +
2913 " <div class=\"form-group\">\n" +
3294 " <div class=\"form-group\">\n" +
2914 " <label class=\"control-label col-sm-4 col-lg-3\">\n" +
3295 " <label class=\"control-label col-sm-4 col-lg-3\">\n" +
2915 " Show user groups to non-admin users\n" +
3296 " Show user groups to non-admin users\n" +
2916 " </label>\n" +
3297 " </label>\n" +
2917 " <div class=\"col-sm-8 col-lg-9\">\n" +
3298 " <div class=\"col-sm-8 col-lg-9\">\n" +
2918 " <button type=\"button\" class=\"btn btn-default\" ng-model=\"configs.configs.global.list_groups_to_non_admins.value\" uib-btn-checkbox>\n" +
3299 " <button type=\"button\" class=\"btn btn-default\" ng-model=\"configs.configs.global.list_groups_to_non_admins.value\" uib-btn-checkbox>\n" +
2919 " Enable\n" +
3300 " Enable\n" +
2920 " </button>\n" +
3301 " </button>\n" +
2921 " </div>\n" +
3302 " </div>\n" +
2922 " </div>\n" +
3303 " </div>\n" +
2923 " </form>\n" +
3304 " </form>\n" +
2924 "\n" +
3305 "\n" +
2925 " <h2>Global Rate Limiting</h2>\n" +
3306 " <h2>Global Rate Limiting</h2>\n" +
2926 "\n" +
3307 "\n" +
2927 " <form class=\"form-horizontal\">\n" +
3308 " <form class=\"form-horizontal\">\n" +
2928 " <div class=\"form-group\">\n" +
3309 " <div class=\"form-group\">\n" +
2929 " <label class=\"control-label col-sm-4 col-lg-3\">\n" +
3310 " <label class=\"control-label col-sm-4 col-lg-3\">\n" +
2930 " Ignore reports per minute/per application\n" +
3311 " Ignore reports per minute/per application\n" +
2931 " </label>\n" +
3312 " </label>\n" +
2932 " <div class=\"col-sm-8 col-lg-9\">\n" +
3313 " <div class=\"col-sm-8 col-lg-9\">\n" +
2933 " <input class=\"form-control\" type=\"number\" ng-model=\"configs.configs.global.per_application_reports_rate_limit.value\" />\n" +
3314 " <input class=\"form-control\" type=\"number\" ng-model=\"configs.configs.global.per_application_reports_rate_limit.value\" />\n" +
2934 " </div>\n" +
3315 " </div>\n" +
2935 " </div>\n" +
3316 " </div>\n" +
2936 "\n" +
3317 "\n" +
2937 " <div class=\"form-group\">\n" +
3318 " <div class=\"form-group\">\n" +
2938 " <label class=\"control-label col-sm-4 col-lg-3\">\n" +
3319 " <label class=\"control-label col-sm-4 col-lg-3\">\n" +
2939 " Ignore logs per minute/per application\n" +
3320 " Ignore logs per minute/per application\n" +
2940 " </label>\n" +
3321 " </label>\n" +
2941 " <div class=\"col-sm-8 col-lg-9\">\n" +
3322 " <div class=\"col-sm-8 col-lg-9\">\n" +
2942 " <input class=\"form-control\" type=\"number\" ng-model=\"configs.configs.global.per_application_logs_rate_limit.value\" />\n" +
3323 " <input class=\"form-control\" type=\"number\" ng-model=\"configs.configs.global.per_application_logs_rate_limit.value\" />\n" +
2943 " </div>\n" +
3324 " </div>\n" +
2944 " </div>\n" +
3325 " </div>\n" +
2945 "\n" +
3326 "\n" +
2946 " <div class=\"form-group\">\n" +
3327 " <div class=\"form-group\">\n" +
2947 " <label class=\"control-label col-sm-4 col-lg-3\">\n" +
3328 " <label class=\"control-label col-sm-4 col-lg-3\">\n" +
2948 " Ignore metrics per minute/per application\n" +
3329 " Ignore metrics per minute/per application\n" +
2949 " </label>\n" +
3330 " </label>\n" +
2950 " <div class=\"col-sm-8 col-lg-9\">\n" +
3331 " <div class=\"col-sm-8 col-lg-9\">\n" +
2951 " <input class=\"form-control\" type=\"number\" ng-model=\"configs.configs.global.per_application_metrics_rate_limit.value\" />\n" +
3332 " <input class=\"form-control\" type=\"number\" ng-model=\"configs.configs.global.per_application_metrics_rate_limit.value\" />\n" +
2952 " </div>\n" +
3333 " </div>\n" +
2953 " </div>\n" +
3334 " </div>\n" +
2954 "\n" +
3335 "\n" +
2955 " </form>\n" +
3336 " </form>\n" +
2956 "\n" +
3337 "\n" +
2957 " <hr/>\n" +
3338 " <hr/>\n" +
2958 "\n" +
3339 "\n" +
2959 " <a class=\"btn btn-primary\" ng-click=\"configs.save()\">Save configuration</a>\n" +
3340 " <a class=\"btn btn-primary\" ng-click=\"configs.save()\">Save configuration</a>\n" +
2960 " </div>\n" +
3341 " </div>\n" +
2961 "\n" +
3342 "\n" +
2962 "</div>\n" +
3343 "</div>\n" +
2963 "\n" +
3344 "\n" +
2964 "\n" +
3345 "\n" +
2965 "<div class=\"panel panel-default\">\n" +
3346 "<div class=\"panel panel-default\">\n" +
2966 " <div class=\"panel-heading\">\n" +
3347 " <div class=\"panel-heading\">\n" +
2967 " <h3 class=\"panel-title\">Plugin Configuration</h3>\n" +
3348 " <h3 class=\"panel-title\">Plugin Configuration</h3>\n" +
2968 " </div>\n" +
3349 " </div>\n" +
2969 " <div class=\"panel-body\">\n" +
3350 " <div class=\"panel-body\">\n" +
2970 " <plugin-config section=\"'admin.config'\">\n" +
3351 " <plugin-config section=\"'admin.config'\">\n" +
2971 " </plugin-config>\n" +
3352 " </plugin-config>\n" +
2972 " </div>\n" +
3353 " </div>\n" +
2973 "</div>\n"
3354 "</div>\n"
2974 );
3355 );
2975
3356
2976
3357
2977 $templateCache.put('templates/admin/configs/parent_view.html',
3358 $templateCache.put('templates/admin/configs/parent_view.html',
2978 "<div ui-view></div>"
3359 "<div ui-view></div>"
2979 );
3360 );
2980
3361
2981
3362
2982 $templateCache.put('templates/admin/groups/groups_create.html',
3363 $templateCache.put('templates/admin/groups/groups_create.html',
2983 "<ng-include src=\"'templates/loader.html'\" ng-if=\"group.loading.group\"></ng-include>\n" +
3364 "<ng-include src=\"'templates/loader.html'\" ng-if=\"group.loading.group\"></ng-include>\n" +
2984 "\n" +
3365 "\n" +
2985 "<div ng-show=\"!group.loading.group\">\n" +
3366 "<div ng-show=\"!group.loading.group\">\n" +
2986 "\n" +
3367 "\n" +
2987 " <div class=\"panel panel-default\">\n" +
3368 " <div class=\"panel panel-default\">\n" +
2988 " <div class=\"panel-body\">\n" +
3369 " <div class=\"panel-body\">\n" +
2989 " <form name=\"group.groupForm\" class=\"form-horizontal\" ng-submit=\"group.createGroup()\">\n" +
3370 " <form name=\"group.groupForm\" class=\"form-horizontal\" ng-submit=\"group.createGroup()\">\n" +
2990 " <div class=\"form-group\" id=\"row-group_name\">\n" +
3371 " <div class=\"form-group\" id=\"row-group_name\">\n" +
2991 " <data-form-errors errors=\"group.groupForm.ae_validation.group_name\"></data-form-errors>\n" +
3372 " <data-form-errors errors=\"group.groupForm.ae_validation.group_name\"></data-form-errors>\n" +
2992 " <label for=\"group_name\" id=\"label-group_name\" class=\"control-label col-sm-4 col-lg-3\">\n" +
3373 " <label for=\"group_name\" id=\"label-group_name\" class=\"control-label col-sm-4 col-lg-3\">\n" +
2993 " Group name\n" +
3374 " Group name\n" +
2994 " <span class=\"required\">*</span>\n" +
3375 " <span class=\"required\">*</span>\n" +
2995 " </label>\n" +
3376 " </label>\n" +
2996 " <div class=\"col-sm-8 col-lg-9\">\n" +
3377 " <div class=\"col-sm-8 col-lg-9\">\n" +
2997 " <input class=\"form-control\" id=\"group_name\" name=\"group_name\" type=\"text\" ng-model=\"group.group.group_name\">\n" +
3378 " <input class=\"form-control\" id=\"group_name\" name=\"group_name\" type=\"text\" ng-model=\"group.group.group_name\">\n" +
2998 " </div>\n" +
3379 " </div>\n" +
2999 " </div>\n" +
3380 " </div>\n" +
3000 "\n" +
3381 "\n" +
3001 " <div class=\"form-group\" id=\"row-description\">\n" +
3382 " <div class=\"form-group\" id=\"row-description\">\n" +
3002 " <data-form-errors errors=\"group.groupForm.ae_validation.description\"></data-form-errors>\n" +
3383 " <data-form-errors errors=\"group.groupForm.ae_validation.description\"></data-form-errors>\n" +
3003 " <label for=\"description\" id=\"label-description\" class=\"control-label col-sm-4 col-lg-3\">\n" +
3384 " <label for=\"description\" id=\"label-description\" class=\"control-label col-sm-4 col-lg-3\">\n" +
3004 " Description\n" +
3385 " Description\n" +
3005 " <span class=\"required\">*</span>\n" +
3386 " <span class=\"required\">*</span>\n" +
3006 " </label>\n" +
3387 " </label>\n" +
3007 " <div class=\"col-sm-8 col-lg-9\">\n" +
3388 " <div class=\"col-sm-8 col-lg-9\">\n" +
3008 " <input class=\"form-control\" id=\"description\" name=\"description\" type=\"text\" ng-model=\"group.group.description\">\n" +
3389 " <input class=\"form-control\" id=\"description\" name=\"description\" type=\"text\" ng-model=\"group.group.description\">\n" +
3009 " </div>\n" +
3390 " </div>\n" +
3010 " </div>\n" +
3391 " </div>\n" +
3011 "\n" +
3392 "\n" +
3012 "\n" +
3393 "\n" +
3013 " <div class=\"form-group\" id=\"row-submit\">\n" +
3394 " <div class=\"form-group\" id=\"row-submit\">\n" +
3014 " <label for=\"submit\" id=\"label-submit\" class=\"control-label col-sm-4 col-lg-3\">\n" +
3395 " <label for=\"submit\" id=\"label-submit\" class=\"control-label col-sm-4 col-lg-3\">\n" +
3015 " </label>\n" +
3396 " </label>\n" +
3016 " <div class=\"col-sm-8 col-lg-9\">\n" +
3397 " <div class=\"col-sm-8 col-lg-9\">\n" +
3017 " <input class=\"form-control btn btn-primary\" id=\"submit\" name=\"submit\" type=\"submit\" value=\"{{$state.params.groupId ? 'Update' : 'Add'}} Group\">\n" +
3398 " <input class=\"form-control btn btn-primary\" id=\"submit\" name=\"submit\" type=\"submit\" value=\"{{$state.params.groupId ? 'Update' : 'Add'}} Group\">\n" +
3018 " </div>\n" +
3399 " </div>\n" +
3019 " </div>\n" +
3400 " </div>\n" +
3020 " </form>\n" +
3401 " </form>\n" +
3021 " </div>\n" +
3402 " </div>\n" +
3022 " </div>\n" +
3403 " </div>\n" +
3023 "\n" +
3404 "\n" +
3024 "\n" +
3405 "\n" +
3025 " <div class=\"panel panel-default\" ng-if=\"group.group.id\">\n" +
3406 " <div class=\"panel panel-default\" ng-if=\"group.group.id\">\n" +
3026 " <div class=\"panel-heading\">\n" +
3407 " <div class=\"panel-heading\">\n" +
3027 " <h3 class=\"panel-title\">Permissions summary</h3>\n" +
3408 " <h3 class=\"panel-title\">Permissions summary</h3>\n" +
3028 " </div>\n" +
3409 " </div>\n" +
3029 " <div class=\"panel-body\">\n" +
3410 " <div class=\"panel-body\">\n" +
3030 " <h3>Direct application permissions</h3>\n" +
3411 " <h3>Direct application permissions</h3>\n" +
3031 "\n" +
3412 "\n" +
3032 " <ul class=\"list-group\">\n" +
3413 " <ul class=\"list-group\">\n" +
3033 " <li ng-repeat=\"perm in group.resourcePermissions.group.application\" class=\"animate-repeat list-group-item\">\n" +
3414 " <li ng-repeat=\"perm in group.resourcePermissions.group.application\" class=\"animate-repeat list-group-item\">\n" +
3034 " <strong>{{ perm.self.resource_name }}</strong>\n" +
3415 " <strong>{{ perm.self.resource_name }}</strong>\n" +
3035 "\n" +
3416 "\n" +
3036 " <div class=\"pull-right\">\n" +
3417 " <div class=\"pull-right\">\n" +
3037 "\n" +
3418 "\n" +
3038 " <span class=\"btn btn-primary btn-xs m-r-1\" disabled ng-repeat=\"perm_name in perm.permissions\">{{ perm.self.owner ? 'Resource owner' : perm_name }}</span>\n" +
3419 " <span class=\"btn btn-primary btn-xs m-r-1\" disabled ng-repeat=\"perm_name in perm.permissions\">{{ perm.self.owner ? 'Resource owner' : perm_name }}</span>\n" +
3039 "\n" +
3420 "\n" +
3040 " <a class=\"btn btn-default btn-xs\" data-uib-tooltip=\"Visit Application\" data-ui-sref=\"applications.update({resourceId:perm.self.resource_id})\">\n" +
3421 " <a class=\"btn btn-default btn-xs\" data-uib-tooltip=\"Visit Application\" data-ui-sref=\"applications.update({resourceId:perm.self.resource_id})\">\n" +
3041 " <span class=\"fa fa-cog\"></span>\n" +
3422 " <span class=\"fa fa-cog\"></span>\n" +
3042 " </a>\n" +
3423 " </a>\n" +
3043 " </div>\n" +
3424 " </div>\n" +
3044 " </li>\n" +
3425 " </li>\n" +
3045 " </ul>\n" +
3426 " </ul>\n" +
3046 "\n" +
3427 "\n" +
3047 " <h3>Direct dashboard permissions</h3>\n" +
3428 " <h3>Direct dashboard permissions</h3>\n" +
3048 "\n" +
3429 "\n" +
3049 " <ul class=\"list-group\">\n" +
3430 " <ul class=\"list-group\">\n" +
3050 " <li ng-repeat=\"perm in group.resourcePermissions.group.dashboard\" class=\"animate-repeat list-group-item\">\n" +
3431 " <li ng-repeat=\"perm in group.resourcePermissions.group.dashboard\" class=\"animate-repeat list-group-item\">\n" +
3051 " <strong>{{ perm.self.resource_name }}</strong>\n" +
3432 " <strong>{{ perm.self.resource_name }}</strong>\n" +
3052 "\n" +
3433 "\n" +
3053 " <div class=\"pull-right\">\n" +
3434 " <div class=\"pull-right\">\n" +
3054 " <span class=\"btn btn-primary btn-xs m-r-1\" disabled ng-repeat=\"perm_name in perm.permissions\">{{ perm.self.owner ? 'Resource owner' : perm_name }}</span>\n" +
3435 " <span class=\"btn btn-primary btn-xs m-r-1\" disabled ng-repeat=\"perm_name in perm.permissions\">{{ perm.self.owner ? 'Resource owner' : perm_name }}</span>\n" +
3055 "\n" +
3436 "\n" +
3056 " <a class=\"btn btn-default btn-xs\" data-uib-tooltip=\"Visit Dashboard\" data-ui-sref=\"dashboard.update({resourceId:perm.self.resource_id})\">\n" +
3437 " <a class=\"btn btn-default btn-xs\" data-uib-tooltip=\"Visit Dashboard\" data-ui-sref=\"dashboard.update({resourceId:perm.self.resource_id})\">\n" +
3057 " <span class=\"fa fa-cog\"></span>\n" +
3438 " <span class=\"fa fa-cog\"></span>\n" +
3058 " </a>\n" +
3439 " </a>\n" +
3059 " </div>\n" +
3440 " </div>\n" +
3060 " </li>\n" +
3441 " </li>\n" +
3061 " </ul>\n" +
3442 " </ul>\n" +
3062 "\n" +
3443 "\n" +
3063 " </div>\n" +
3444 " </div>\n" +
3064 "\n" +
3445 "\n" +
3065 " </div>\n" +
3446 " </div>\n" +
3066 "\n" +
3447 "\n" +
3067 "\n" +
3448 "\n" +
3068 " <div class=\"panel panel-default\" ng-if=\"group.group.id\">\n" +
3449 " <div class=\"panel panel-default\" ng-if=\"group.group.id\">\n" +
3069 " <div class=\"panel-heading\">\n" +
3450 " <div class=\"panel-heading\">\n" +
3070 " <h3 class=\"panel-title\">User list</h3>\n" +
3451 " <h3 class=\"panel-title\">User list</h3>\n" +
3071 " </div>\n" +
3452 " </div>\n" +
3072 " <div class=\"panel-body\">\n" +
3453 " <div class=\"panel-body\">\n" +
3073 "\n" +
3454 "\n" +
3074 " <form name=\"add_permission\" class=\"form-inline\" ng-submit=\"group.addUser()\">\n" +
3455 " <form name=\"add_permission\" class=\"form-inline\" ng-submit=\"group.addUser()\">\n" +
3075 " <div class=\"form-group\">\n" +
3456 " <div class=\"form-group\">\n" +
3076 " <input placeholder=\"Username or email\" type=\"text\" class=\"autocomplete form-control\" ng-model=\"group.form.autocompleteUser\" uib-typeahead=\"u for u in group.searchUsers($viewValue) | limitTo:8\" typeahead-loading=\"searchingUsers\" typeahead-wait-ms=\"250\"/>\n" +
3457 " <input placeholder=\"Username or email\" type=\"text\" class=\"autocomplete form-control\" ng-model=\"group.form.autocompleteUser\" uib-typeahead=\"u for u in group.searchUsers($viewValue) | limitTo:8\" typeahead-loading=\"searchingUsers\" typeahead-wait-ms=\"250\"/>\n" +
3077 " </div>\n" +
3458 " </div>\n" +
3078 " <div class=\"form-group\">\n" +
3459 " <div class=\"form-group\">\n" +
3079 " <button class=\"btn btn-info\" ng-disabled=\"!group.form.autocompleteUser\"><span class=\"fa fa-user\"></span> Add user</button>\n" +
3460 " <button class=\"btn btn-info\" ng-disabled=\"!group.form.autocompleteUser\"><span class=\"fa fa-user\"></span> Add user</button>\n" +
3080 " </div>\n" +
3461 " </div>\n" +
3081 " </form>\n" +
3462 " </form>\n" +
3082 "\n" +
3463 "\n" +
3083 " </div>\n" +
3464 " </div>\n" +
3084 "\n" +
3465 "\n" +
3085 " <table st-table=\"displayedCollection\" st-safe-src=\"group.users\" class=\"table table-striped\">\n" +
3466 " <table st-table=\"displayedCollection\" st-safe-src=\"group.users\" class=\"table table-striped\">\n" +
3086 " <thead>\n" +
3467 " <thead>\n" +
3087 " <tr>\n" +
3468 " <tr>\n" +
3088 " <th st-sort=\"user_name\"><a>Username</a></th>\n" +
3469 " <th st-sort=\"user_name\"><a>Username</a></th>\n" +
3089 " <th st-sort=\"email\"><a>Email</a></th>\n" +
3470 " <th st-sort=\"email\"><a>Email</a></th>\n" +
3090 " <th st-sort=\"status\"><a>Status</a></th>\n" +
3471 " <th st-sort=\"status\"><a>Status</a></th>\n" +
3091 " <th st-sort=\"first_name\"><a>First Name</a></th>\n" +
3472 " <th st-sort=\"first_name\"><a>First Name</a></th>\n" +
3092 " <th st-sort=\"last_name\"><a>Last Name</a></th>\n" +
3473 " <th st-sort=\"last_name\"><a>Last Name</a></th>\n" +
3093 " <th st-sort=\"last_login_date\"><a>Last login</a></th>\n" +
3474 " <th st-sort=\"last_login_date\"><a>Last login</a></th>\n" +
3094 " <th class=\"options\" style=\"width: 130px\"></th>\n" +
3475 " <th class=\"options\" style=\"width: 130px\"></th>\n" +
3095 " </tr>\n" +
3476 " </tr>\n" +
3096 " <tr>\n" +
3477 " <tr>\n" +
3097 " <th><input st-search=\"user_name\" placeholder=\"search for user name\" class=\"form-control\" type=\"search\" st-delay=\"1\"/></th>\n" +
3478 " <th><input st-search=\"user_name\" placeholder=\"search for user name\" class=\"form-control\" type=\"search\" st-delay=\"1\"/></th>\n" +
3098 " <th><input st-search=\"email\" placeholder=\"search for email\" class=\"form-control\" type=\"search\" st-delay=\"1\"/></th>\n" +
3479 " <th><input st-search=\"email\" placeholder=\"search for email\" class=\"form-control\" type=\"search\" st-delay=\"1\"/></th>\n" +
3099 " <th></th>\n" +
3480 " <th></th>\n" +
3100 " <th><input st-search=\"first_name\" placeholder=\"search for first name\" class=\"form-control\" type=\"search\" st-delay=\"1\"/></th>\n" +
3481 " <th><input st-search=\"first_name\" placeholder=\"search for first name\" class=\"form-control\" type=\"search\" st-delay=\"1\"/></th>\n" +
3101 " <th><input st-search=\"last_name\" placeholder=\"search for last name\" class=\"form-control\" type=\"search\" st-delay=\"1\"/></th>\n" +
3482 " <th><input st-search=\"last_name\" placeholder=\"search for last name\" class=\"form-control\" type=\"search\" st-delay=\"1\"/></th>\n" +
3102 " <th><input st-search=\"last_login_date\" placeholder=\"search for last name\" class=\"form-control\" type=\"search\" st-delay=\"1\"/></th>\n" +
3483 " <th><input st-search=\"last_login_date\" placeholder=\"search for last name\" class=\"form-control\" type=\"search\" st-delay=\"1\"/></th>\n" +
3103 " <th></th>\n" +
3484 " <th></th>\n" +
3104 " </tr>\n" +
3485 " </tr>\n" +
3105 " </thead>\n" +
3486 " </thead>\n" +
3106 " <tbody>\n" +
3487 " <tbody>\n" +
3107 "\n" +
3488 "\n" +
3108 " <tr ng-repeat=\"user in displayedCollection\">\n" +
3489 " <tr ng-repeat=\"user in displayedCollection\">\n" +
3109 " <td><img src=\"{{user.gravatar_url}}\" class=\"avatar\"> {{user.user_name}}</td>\n" +
3490 " <td><img src=\"{{user.gravatar_url}}\" class=\"avatar\"> {{user.user_name}}</td>\n" +
3110 " <td>{{user.email}}</td>\n" +
3491 " <td>{{user.email}}</td>\n" +
3111 " <td class=\"text-center\"><span class=\"fa\" ng-class=\"{'fa-check-circle':user.status, 'fa-times':!user.status}\"></span></td>\n" +
3492 " <td class=\"text-center\"><span class=\"fa\" ng-class=\"{'fa-check-circle':user.status, 'fa-times':!user.status}\"></span></td>\n" +
3112 " <td>{{user.first_name}}</td>\n" +
3493 " <td>{{user.first_name}}</td>\n" +
3113 " <td>{{user.last_name}}</td>\n" +
3494 " <td>{{user.last_name}}</td>\n" +
3114 " <td><span data-uib-tooltip=\"{{user.last_login_date}}\">{{user.last_login_date | isoToRelativeTime}}</span></td>\n" +
3495 " <td><span data-uib-tooltip=\"{{user.last_login_date}}\">{{user.last_login_date | isoToRelativeTime}}</span></td>\n" +
3115 " <td>\n" +
3496 " <td>\n" +
3116 " <a class=\"btn btn-default btn-sm\" data-ui-sref=\"admin.user.update({userId:user.id})\"><span class=\"fa fa-cog\"></span></a>\n" +
3497 " <a class=\"btn btn-default btn-sm\" data-ui-sref=\"admin.user.update({userId:user.id})\"><span class=\"fa fa-cog\"></span></a>\n" +
3117 " <span class=\"dropdown\" data-uib-dropdown on-toggle=\"toggled(open)\">\n" +
3498 " <span class=\"dropdown\" data-uib-dropdown on-toggle=\"toggled(open)\">\n" +
3118 " <a class=\"btn btn-danger btn-sm\" data-uib-dropdown-toggle><span class=\"fa fa-trash-o\"></span></a>\n" +
3499 " <a class=\"btn btn-danger btn-sm\" data-uib-dropdown-toggle><span class=\"fa fa-trash-o\"></span></a>\n" +
3119 " <ul class=\"dropdown-menu\">\n" +
3500 " <ul class=\"dropdown-menu\">\n" +
3120 " <li><a>No</a></li>\n" +
3501 " <li><a>No</a></li>\n" +
3121 " <li><a ng-click=\"group.removeUser(user)\">Yes</a></li>\n" +
3502 " <li><a ng-click=\"group.removeUser(user)\">Yes</a></li>\n" +
3122 " </ul>\n" +
3503 " </ul>\n" +
3123 " </span>\n" +
3504 " </span>\n" +
3124 " </tr>\n" +
3505 " </tr>\n" +
3125 " <tfoot>\n" +
3506 " <tfoot>\n" +
3126 " <tr>\n" +
3507 " <tr>\n" +
3127 " <td colspan=\"7\" class=\"text-center\">\n" +
3508 " <td colspan=\"7\" class=\"text-center\">\n" +
3128 " <div st-pagination=\"\" st-items-by-page=\"50\" st-displayed-pages=\"7\"></div>\n" +
3509 " <div st-pagination=\"\" st-items-by-page=\"50\" st-displayed-pages=\"7\"></div>\n" +
3129 " </td>\n" +
3510 " </td>\n" +
3130 " </tr>\n" +
3511 " </tr>\n" +
3131 " </tfoot>\n" +
3512 " </tfoot>\n" +
3132 " </tbody>\n" +
3513 " </tbody>\n" +
3133 " </table>\n" +
3514 " </table>\n" +
3134 "\n" +
3515 "\n" +
3135 " </div>\n" +
3516 " </div>\n" +
3136 "\n" +
3517 "\n" +
3137 "\n" +
3518 "\n" +
3138 "</div>\n"
3519 "</div>\n"
3139 );
3520 );
3140
3521
3141
3522
3142 $templateCache.put('templates/admin/groups/groups_list.html',
3523 $templateCache.put('templates/admin/groups/groups_list.html',
3143 "<ng-include src=\"'templates/loader.html'\" ng-if=\"groups.loading.groups\"></ng-include>\n" +
3524 "<ng-include src=\"'templates/loader.html'\" ng-if=\"groups.loading.groups\"></ng-include>\n" +
3144 "\n" +
3525 "\n" +
3145 "<div class=\"panel panel-default\" ng-show=\"!groups.loading.groups\">\n" +
3526 "<div class=\"panel panel-default\" ng-show=\"!groups.loading.groups\">\n" +
3146 "\n" +
3527 "\n" +
3147 " <table st-table=\"displayedCollection\" st-safe-src=\"groups.groups\" class=\"table table-striped\">\n" +
3528 " <table st-table=\"displayedCollection\" st-safe-src=\"groups.groups\" class=\"table table-striped\">\n" +
3148 " <thead>\n" +
3529 " <thead>\n" +
3149 " <tr>\n" +
3530 " <tr>\n" +
3150 " <th st-sort=\"group_name\"><a>Group name</a></th>\n" +
3531 " <th st-sort=\"group_name\"><a>Group name</a></th>\n" +
3151 " <th st-sort=\"description\"><a>Description</a></th>\n" +
3532 " <th st-sort=\"description\"><a>Description</a></th>\n" +
3152 " <th st-sort=\"members\"><a>Member count</a></th>\n" +
3533 " <th st-sort=\"members\"><a>Member count</a></th>\n" +
3153 " <th class=\"options\"></th>\n" +
3534 " <th class=\"options\"></th>\n" +
3154 " </tr>\n" +
3535 " </tr>\n" +
3155 " <tr>\n" +
3536 " <tr>\n" +
3156 " <th><input st-search=\"group_name\" placeholder=\"search for group name\" class=\"form-control\" type=\"search\" st-delay=\"1\"/></th>\n" +
3537 " <th><input st-search=\"group_name\" placeholder=\"search for group name\" class=\"form-control\" type=\"search\" st-delay=\"1\"/></th>\n" +
3157 " <th><input st-search=\"description\" placeholder=\"search for description\" class=\"form-control\" type=\"search\" st-delay=\"1\"/></th>\n" +
3538 " <th><input st-search=\"description\" placeholder=\"search for description\" class=\"form-control\" type=\"search\" st-delay=\"1\"/></th>\n" +
3158 " <th></th>\n" +
3539 " <th></th>\n" +
3159 " <th></th>\n" +
3540 " <th></th>\n" +
3160 " </tr>\n" +
3541 " </tr>\n" +
3161 " </thead>\n" +
3542 " </thead>\n" +
3162 " <tbody>\n" +
3543 " <tbody>\n" +
3163 "\n" +
3544 "\n" +
3164 " <tr ng-repeat=\"group in displayedCollection track by group.id\">\n" +
3545 " <tr ng-repeat=\"group in displayedCollection track by group.id\">\n" +
3165 " <td>{{group.group_name}}</td>\n" +
3546 " <td>{{group.group_name}}</td>\n" +
3166 " <td>{{group.description}}</td>\n" +
3547 " <td>{{group.description}}</td>\n" +
3167 " <td>{{group.member_count}}</td>\n" +
3548 " <td>{{group.member_count}}</td>\n" +
3168 " <td>\n" +
3549 " <td>\n" +
3169 " <a class=\"btn btn-default btn-sm\" data-ui-sref=\"admin.group.update({groupId:group.id})\"><span class=\"fa fa-cog\"></span></a>\n" +
3550 " <a class=\"btn btn-default btn-sm\" data-ui-sref=\"admin.group.update({groupId:group.id})\"><span class=\"fa fa-cog\"></span></a>\n" +
3170 " <span class=\"dropdown\" data-uib-dropdown on-toggle=\"toggled(open)\">\n" +
3551 " <span class=\"dropdown\" data-uib-dropdown on-toggle=\"toggled(open)\">\n" +
3171 " <a class=\"btn btn-danger btn-sm\" data-uib-dropdown-toggle><span class=\"fa fa-trash-o\"></span></a>\n" +
3552 " <a class=\"btn btn-danger btn-sm\" data-uib-dropdown-toggle><span class=\"fa fa-trash-o\"></span></a>\n" +
3172 " <ul class=\"dropdown-menu\">\n" +
3553 " <ul class=\"dropdown-menu\">\n" +
3173 " <li><a>No</a></li>\n" +
3554 " <li><a>No</a></li>\n" +
3174 " <li><a ng-click=\"groups.removeGroup(group)\">Yes</a></li>\n" +
3555 " <li><a ng-click=\"groups.removeGroup(group)\">Yes</a></li>\n" +
3175 " </ul>\n" +
3556 " </ul>\n" +
3176 " </span>\n" +
3557 " </span>\n" +
3177 " </tr>\n" +
3558 " </tr>\n" +
3178 " <tfoot>\n" +
3559 " <tfoot>\n" +
3179 " <tr>\n" +
3560 " <tr>\n" +
3180 " <td colspan=\"4\" class=\"text-center\">\n" +
3561 " <td colspan=\"4\" class=\"text-center\">\n" +
3181 " <div st-pagination=\"\" st-items-by-page=\"100\" st-displayed-pages=\"7\"></div>\n" +
3562 " <div st-pagination=\"\" st-items-by-page=\"100\" st-displayed-pages=\"7\"></div>\n" +
3182 " </td>\n" +
3563 " </td>\n" +
3183 " </tr>\n" +
3564 " </tr>\n" +
3184 " </tfoot>\n" +
3565 " </tfoot>\n" +
3185 " </tbody>\n" +
3566 " </tbody>\n" +
3186 " </table>\n" +
3567 " </table>\n" +
3187 "\n" +
3568 "\n" +
3188 "</div>\n" +
3569 "</div>\n" +
3189 "\n"
3570 "\n"
3190 );
3571 );
3191
3572
3192
3573
3193 $templateCache.put('templates/admin/groups/parent_view.html',
3574 $templateCache.put('templates/admin/groups/parent_view.html',
3194 "<div ui-view></div>"
3575 "<div ui-view></div>"
3195 );
3576 );
3196
3577
3197
3578
3198 $templateCache.put('templates/admin/parent_view.html',
3579 $templateCache.put('templates/admin/parent_view.html',
3199 "<div class=\"col-sm-3\" id=\"menu\">\n" +
3580 "<div class=\"col-sm-3\" id=\"menu\">\n" +
3200 " <div class=\"panel panel-default\">\n" +
3581 " <div class=\"panel panel-default\">\n" +
3201 " <div class=\"panel-heading\">Users and groups</div>\n" +
3582 " <div class=\"panel-heading\">Users and groups</div>\n" +
3202 " <ul class=\"list-group\">\n" +
3583 " <ul class=\"list-group\">\n" +
3203 " <li class=\"list-group-item\" ui-sref-active=\"active\"><a data-ui-sref=\"admin.user.list\"> Users</a></li>\n" +
3584 " <li class=\"list-group-item\" ui-sref-active=\"active\"><a data-ui-sref=\"admin.user.list\"> Users</a></li>\n" +
3204 " <li class=\"list-group-item\" ui-sref-active=\"active\"><a data-ui-sref=\"admin.user.create\"> Create user</a></li>\n" +
3585 " <li class=\"list-group-item\" ui-sref-active=\"active\"><a data-ui-sref=\"admin.user.create\"> Create user</a></li>\n" +
3205 " <li class=\"list-group-item\" ui-sref-active=\"active\"><a data-ui-sref=\"admin.group.list\"> Groups</a></li>\n" +
3586 " <li class=\"list-group-item\" ui-sref-active=\"active\"><a data-ui-sref=\"admin.group.list\"> Groups</a></li>\n" +
3206 " <li class=\"list-group-item\" ui-sref-active=\"active\"><a data-ui-sref=\"admin.group.create\"> Create group</a></li>\n" +
3587 " <li class=\"list-group-item\" ui-sref-active=\"active\"><a data-ui-sref=\"admin.group.create\"> Create group</a></li>\n" +
3207 " </ul>\n" +
3588 " </ul>\n" +
3208 " </div>\n" +
3589 " </div>\n" +
3209 " <div class=\"panel panel-default\">\n" +
3590 " <div class=\"panel panel-default\">\n" +
3210 " <div class=\"panel-heading\">Resources</div>\n" +
3591 " <div class=\"panel-heading\">Resources</div>\n" +
3211 " <ul class=\"list-group\">\n" +
3592 " <ul class=\"list-group\">\n" +
3212 " <li class=\"list-group-item\" ui-sref-active=\"active\"><a data-ui-sref=\"admin.application.list\"> List applications</a></li>\n" +
3593 " <li class=\"list-group-item\" ui-sref-active=\"active\"><a data-ui-sref=\"admin.application.list\"> List applications</a></li>\n" +
3213 " </ul>\n" +
3594 " </ul>\n" +
3214 " </div>\n" +
3595 " </div>\n" +
3215 "\n" +
3596 "\n" +
3216 " <div class=\"panel panel-default\">\n" +
3597 " <div class=\"panel panel-default\">\n" +
3217 " <div class=\"panel-heading\">System</div>\n" +
3598 " <div class=\"panel-heading\">System</div>\n" +
3218 " <ul class=\"list-group\">\n" +
3599 " <ul class=\"list-group\">\n" +
3219 " <li class=\"list-group-item\" ui-sref-active=\"active\"><a data-ui-sref=\"admin.configs.list\"> Config variables</a></li>\n" +
3600 " <li class=\"list-group-item\" ui-sref-active=\"active\"><a data-ui-sref=\"admin.configs.list\"> Config variables</a></li>\n" +
3220 " <li class=\"list-group-item\" ui-sref-active=\"active\"><a data-ui-sref=\"admin.system\"> System</a></li>\n" +
3601 " <li class=\"list-group-item\" ui-sref-active=\"active\"><a data-ui-sref=\"admin.system\"> System</a></li>\n" +
3221 " <li class=\"list-group-item\" ui-sref-active=\"active\"><a data-ui-sref=\"admin.partitions\"> Partition Management</a></li>\n" +
3602 " <li class=\"list-group-item\" ui-sref-active=\"active\"><a data-ui-sref=\"admin.partitions\"> Partition Management</a></li>\n" +
3222 " </ul>\n" +
3603 " </ul>\n" +
3223 " </div>\n" +
3604 " </div>\n" +
3224 "</div>\n" +
3605 "</div>\n" +
3225 "\n" +
3606 "\n" +
3226 "\n" +
3607 "\n" +
3227 "<div class=\"col-sm-9\" ui-view></div>\n"
3608 "<div class=\"col-sm-9\" ui-view></div>\n"
3228 );
3609 );
3229
3610
3230
3611
3231 $templateCache.put('templates/admin/partitions.html',
3612 $templateCache.put('templates/admin/partitions.html',
3232 "<ng-include src=\"'templates/loader.html'\" ng-if=\"partitions.loading.partitions\"></ng-include>\n" +
3613 "<ng-include src=\"'templates/loader.html'\" ng-if=\"partitions.loading.partitions\"></ng-include>\n" +
3233 "\n" +
3614 "\n" +
3234 "<div ng-show=\"!partitions.loading.partitions\">\n" +
3615 "<div ng-show=\"!partitions.loading.partitions\">\n" +
3235 "\n" +
3616 "\n" +
3236 " <div class=\"panel panel-default\">\n" +
3617 " <div class=\"panel panel-default\">\n" +
3237 " <div class=\"panel-heading\">\n" +
3618 " <div class=\"panel-heading\">\n" +
3238 " DELETE Daily Partitions\n" +
3619 " DELETE Daily Partitions\n" +
3239 " </div>\n" +
3620 " </div>\n" +
3240 "\n" +
3621 "\n" +
3241 " <form name=\"partitions.dailyPartitionsForm\"\n" +
3622 " <form name=\"partitions.dailyPartitionsForm\"\n" +
3242 " novalidate ng-submit=\"partitions.partitionsDelete('dailyPartitions')\"\n" +
3623 " novalidate ng-submit=\"partitions.partitionsDelete('dailyPartitions')\"\n" +
3243 " class=\"form-inline\"\n" +
3624 " class=\"form-inline\"\n" +
3244 " ng-class=\"{'has-error':partitions.dailyPartitionsForm.$invalid}\">\n" +
3625 " ng-class=\"{'has-error':partitions.dailyPartitionsForm.$invalid}\">\n" +
3245 "\n" +
3626 "\n" +
3246 " <div class=\"panel-body\">\n" +
3627 " <div class=\"panel-body\">\n" +
3247 "\n" +
3628 "\n" +
3248 " <input type=\"text\" name=\"confirm\"\n" +
3629 " <input type=\"text\" name=\"confirm\"\n" +
3249 " placeholder=\"Enter CONFIRM to proceed\" class=\"form-control input-autosize\" confirm-validate required ng-model=\"partitions.dailyConfirm\">\n" +
3630 " placeholder=\"Enter CONFIRM to proceed\" class=\"form-control input-autosize\" confirm-validate required ng-model=\"partitions.dailyConfirm\">\n" +
3250 " <input type=\"submit\" class=\"btn btn-danger\" ng-disabled=\"partitions.dailyPartitionsForm.$invalid\">\n" +
3631 " <input type=\"submit\" class=\"btn btn-danger\" ng-disabled=\"partitions.dailyPartitionsForm.$invalid\">\n" +
3251 " <input type=\"checkbox\" ng-model=\"partitions.dailyChecked\" ng-change=\"partitions.setCheckedList('dailyPartitions')\"> Check All\n" +
3632 " <input type=\"checkbox\" ng-model=\"partitions.dailyChecked\" ng-change=\"partitions.setCheckedList('dailyPartitions')\"> Check All\n" +
3252 "\n" +
3633 "\n" +
3253 " </div>\n" +
3634 " </div>\n" +
3254 "\n" +
3635 "\n" +
3255 " <table class=\"table table-striped\">\n" +
3636 " <table class=\"table table-striped\">\n" +
3256 " <tr>\n" +
3637 " <tr>\n" +
3257 " <th class=\"c1 date\">Date</th>\n" +
3638 " <th class=\"c1 date\">Date</th>\n" +
3258 " <th class=\"c2 indices\">Indices</th>\n" +
3639 " <th class=\"c2 indices\">Indices</th>\n" +
3259 " </tr>\n" +
3640 " </tr>\n" +
3260 " <tr class=\"r{{$index}}\" ng-repeat=\"row in partitions.dailyPartitions\">\n" +
3641 " <tr class=\"r{{$index}}\" ng-repeat=\"row in partitions.dailyPartitions\">\n" +
3261 " <td class=\"c1\">{{row[0]}}</td>\n" +
3642 " <td class=\"c1\">{{row[0]}}</td>\n" +
3262 " <td class=\"c2\">\n" +
3643 " <td class=\"c2\">\n" +
3263 " <ul class=\"list-group\">\n" +
3644 " <ul class=\"list-group\">\n" +
3264 " <li class=\"list-group-item\" ng-repeat=\"partition in row[1].elasticsearch\">\n" +
3645 " <li class=\"list-group-item\" ng-repeat=\"partition in row[1].elasticsearch\">\n" +
3265 " <input name=\"es_index\" type=\"checkbox\" ng-model=\"partition.checked\"> ES: {{partition.name}}\n" +
3646 " <input name=\"es_index\" type=\"checkbox\" ng-model=\"partition.checked\"> ES: {{partition.name}}\n" +
3266 " </li>\n" +
3647 " </li>\n" +
3267 " <li class=\"list-group-item\" ng-repeat=\"partition in row[1].pg\">\n" +
3648 " <li class=\"list-group-item\" ng-repeat=\"partition in row[1].pg\">\n" +
3268 " <input name=\"pg_index\" type=\"checkbox\" ng-model=\"partition.checked\"> PG: {{partition.name}}\n" +
3649 " <input name=\"pg_index\" type=\"checkbox\" ng-model=\"partition.checked\"> PG: {{partition.name}}\n" +
3269 " </li>\n" +
3650 " </li>\n" +
3270 " </ul>\n" +
3651 " </ul>\n" +
3271 " </td>\n" +
3652 " </td>\n" +
3272 " </tr>\n" +
3653 " </tr>\n" +
3273 " </table>\n" +
3654 " </table>\n" +
3274 " </form>\n" +
3655 " </form>\n" +
3275 "\n" +
3656 "\n" +
3276 " </div>\n" +
3657 " </div>\n" +
3277 "\n" +
3658 "\n" +
3278 " <div class=\"panel panel-default\">\n" +
3659 " <div class=\"panel panel-default\">\n" +
3279 " <div class=\"panel-heading\">\n" +
3660 " <div class=\"panel-heading\">\n" +
3280 " DELETE Permanent Partitions\n" +
3661 " DELETE Permanent Partitions\n" +
3281 " </div>\n" +
3662 " </div>\n" +
3282 "\n" +
3663 "\n" +
3283 " <form name=\"partitions.permanentPartitionsForm\" novalidate\n" +
3664 " <form name=\"partitions.permanentPartitionsForm\" novalidate\n" +
3284 " ng-submit=\"partitions.partitionsDelete('permanentPartitions')\"\n" +
3665 " ng-submit=\"partitions.partitionsDelete('permanentPartitions')\"\n" +
3285 " class=\"form-inline\"\n" +
3666 " class=\"form-inline\"\n" +
3286 " ng-class=\"{'has-error':partitions.permanentPartitionsForm.$invalid}\">\n" +
3667 " ng-class=\"{'has-error':partitions.permanentPartitionsForm.$invalid}\">\n" +
3287 "\n" +
3668 "\n" +
3288 "\n" +
3669 "\n" +
3289 " <div class=\"panel-body\">\n" +
3670 " <div class=\"panel-body\">\n" +
3290 "\n" +
3671 "\n" +
3291 " <div class=\"form-group\">\n" +
3672 " <div class=\"form-group\">\n" +
3292 " <input type=\"text\" name=\"confirm\"\n" +
3673 " <input type=\"text\" name=\"confirm\"\n" +
3293 " placeholder=\"Enter CONFIRM to proceed\" class=\"form-control\" confirm-validate required ng-model=\"partitions.permConfirm\">\n" +
3674 " placeholder=\"Enter CONFIRM to proceed\" class=\"form-control\" confirm-validate required ng-model=\"partitions.permConfirm\">\n" +
3294 " <input type=\"submit\" class=\"btn btn-danger\" ng-disabled=\"partitions.permanentPartitionsForm.$invalid\">\n" +
3675 " <input type=\"submit\" class=\"btn btn-danger\" ng-disabled=\"partitions.permanentPartitionsForm.$invalid\">\n" +
3295 " <input type=\"checkbox\" ng-model=\"partitions.permChecked\" ng-change=\"partitions.setCheckedList('permanentPartitions')\"> Check All\n" +
3676 " <input type=\"checkbox\" ng-model=\"partitions.permChecked\" ng-change=\"partitions.setCheckedList('permanentPartitions')\"> Check All\n" +
3296 " </div>\n" +
3677 " </div>\n" +
3297 "\n" +
3678 "\n" +
3298 " </div>\n" +
3679 " </div>\n" +
3299 "\n" +
3680 "\n" +
3300 " <table class=\"table table-striped\">\n" +
3681 " <table class=\"table table-striped\">\n" +
3301 " <tr>\n" +
3682 " <tr>\n" +
3302 " <th class=\"c1 date\">Date</th>\n" +
3683 " <th class=\"c1 date\">Date</th>\n" +
3303 " <th class=\"c2 indices\">Indices</th>\n" +
3684 " <th class=\"c2 indices\">Indices</th>\n" +
3304 " </tr>\n" +
3685 " </tr>\n" +
3305 " <tr class=\"r{{$index}}\" ng-repeat=\"row in partitions.permanentPartitions\">\n" +
3686 " <tr class=\"r{{$index}}\" ng-repeat=\"row in partitions.permanentPartitions\">\n" +
3306 " <td class=\"c1\">{{row[0]}}</td>\n" +
3687 " <td class=\"c1\">{{row[0]}}</td>\n" +
3307 " <td class=\"c2\">\n" +
3688 " <td class=\"c2\">\n" +
3308 " <ul class=\"list-group\">\n" +
3689 " <ul class=\"list-group\">\n" +
3309 " <li class=\"list-group-item\" ng-repeat=\"partition in row[1].elasticsearch\">\n" +
3690 " <li class=\"list-group-item\" ng-repeat=\"partition in row[1].elasticsearch\">\n" +
3310 " <input name=\"es_index\" type=\"checkbox\" ng-model=\"partition.checked\"> ES: {{partition.name}}\n" +
3691 " <input name=\"es_index\" type=\"checkbox\" ng-model=\"partition.checked\"> ES: {{partition.name}}\n" +
3311 " </li>\n" +
3692 " </li>\n" +
3312 " <li class=\"list-group-item\" ng-repeat=\"partition in row[1].pg\">\n" +
3693 " <li class=\"list-group-item\" ng-repeat=\"partition in row[1].pg\">\n" +
3313 " <input name=\"pg_index\" type=\"checkbox\" ng-model=\"partition.checked\"> PG: {{partition.name}}\n" +
3694 " <input name=\"pg_index\" type=\"checkbox\" ng-model=\"partition.checked\"> PG: {{partition.name}}\n" +
3314 " </li>\n" +
3695 " </li>\n" +
3315 " </ul>\n" +
3696 " </ul>\n" +
3316 " </td>\n" +
3697 " </td>\n" +
3317 " </tr>\n" +
3698 " </tr>\n" +
3318 " </table>\n" +
3699 " </table>\n" +
3319 " </form>\n" +
3700 " </form>\n" +
3320 "\n" +
3701 "\n" +
3321 " </div>\n" +
3702 " </div>\n" +
3322 "\n" +
3703 "\n" +
3323 "</div>\n"
3704 "</div>\n"
3324 );
3705 );
3325
3706
3326
3707
3327 $templateCache.put('templates/admin/system.html',
3708 $templateCache.put('templates/admin/system.html',
3328 "<ng-include src=\"'templates/loader.html'\" ng-if=\"system.loading.system\"></ng-include>\n" +
3709 "<ng-include src=\"'templates/loader.html'\" ng-if=\"system.loading.system\"></ng-include>\n" +
3329 "\n" +
3710 "\n" +
3330 "<div ng-if=\"system.loading.system == false\">\n" +
3711 "<div ng-if=\"system.loading.system == false\">\n" +
3331 " <div class=\"row\">\n" +
3712 " <div class=\"row\">\n" +
3332 " <div class=\"col-sm-12\">\n" +
3713 " <div class=\"col-sm-12\">\n" +
3333 " <div class=\"panel panel-default\">\n" +
3714 " <div class=\"panel panel-default\">\n" +
3334 " <div class=\"panel-heading\">\n" +
3715 " <div class=\"panel-heading\">\n" +
3335 " <h3 class=\"panel-title\">\n" +
3716 " <h3 class=\"panel-title\">\n" +
3336 " System Info\n" +
3717 " System Info\n" +
3337 " </h3>\n" +
3718 " </h3>\n" +
3338 " </div>\n" +
3719 " </div>\n" +
3339 " <div class=\"panel-body\">\n" +
3720 " <div class=\"panel-body\">\n" +
3340 "\n" +
3721 "\n" +
3341 " <p><strong>System Load:</strong>\n" +
3722 " <p><strong>System Load:</strong>\n" +
3342 " 1min: {{system.systemLoad[0]}}, 5min: {{system.systemLoad[1]}}, 15min: {{system.systemLoad[2]}}\n" +
3723 " 1min: {{system.systemLoad[0]}}, 5min: {{system.systemLoad[1]}}, 15min: {{system.systemLoad[2]}}\n" +
3343 " </p>\n" +
3724 " </p>\n" +
3344 " <p><strong>Awaiting tasks:</strong>\n" +
3725 " <p><strong>Awaiting tasks:</strong>\n" +
3345 " <ul>\n" +
3726 " <ul>\n" +
3346 " <li>reports: {{system.queueStats.waiting_reports}}</li>\n" +
3727 " <li>reports: {{system.queueStats.waiting_reports}}</li>\n" +
3347 " <li>logs: {{system.queueStats.waiting_logs}}</li>\n" +
3728 " <li>logs: {{system.queueStats.waiting_logs}}</li>\n" +
3348 " <li>metrics: {{system.queueStats.waiting_metrics}}</li>\n" +
3729 " <li>metrics: {{system.queueStats.waiting_metrics}}</li>\n" +
3349 " <li>other: {{system.queueStats.waiting_other}}</li>\n" +
3730 " <li>other: {{system.queueStats.waiting_other}}</li>\n" +
3350 " </ul>\n" +
3731 " </ul>\n" +
3351 " </p>\n" +
3732 " </p>\n" +
3352 " <p><strong>Queue stats from last minute:</strong>\n" +
3733 " <p><strong>Queue stats from last minute:</strong>\n" +
3353 " <ul>\n" +
3734 " <ul>\n" +
3354 " <li>Processed reports: {{system.queueStats.processed_reports}}</li>\n" +
3735 " <li>Processed reports: {{system.queueStats.processed_reports}}</li>\n" +
3355 " <li>Processed logs: {{system.queueStats.processed_logs}}</li>\n" +
3736 " <li>Processed logs: {{system.queueStats.processed_logs}}</li>\n" +
3356 " <li>Processed metrics: {{system.queueStats.processed_metrics}}</li>\n" +
3737 " <li>Processed metrics: {{system.queueStats.processed_metrics}}</li>\n" +
3357 " </ul>\n" +
3738 " </ul>\n" +
3358 " </p>\n" +
3739 " </p>\n" +
3359 "\n" +
3740 "\n" +
3360 " <p><strong>Disks:</strong>\n" +
3741 " <p><strong>Disks:</strong>\n" +
3361 " <ul>\n" +
3742 " <ul>\n" +
3362 " <li ng-repeat=\"disk in system.disks\">\n" +
3743 " <li ng-repeat=\"disk in system.disks\">\n" +
3363 " <strong>{{disk.device}}</strong> {{disk.free}}/{{disk.total}}, {{disk.percentage}}% used\n" +
3744 " <strong>{{disk.device}}</strong> {{disk.free}}/{{disk.total}}, {{disk.percentage}}% used\n" +
3364 " </li>\n" +
3745 " </li>\n" +
3365 " </ul>\n" +
3746 " </ul>\n" +
3366 " </p>\n" +
3747 " </p>\n" +
3367 "\n" +
3748 "\n" +
3368 " <p><strong>Process stats:</strong>\n" +
3749 " <p><strong>Process stats:</strong>\n" +
3369 " <ul>\n" +
3750 " <ul>\n" +
3370 " <li>FD soft limits: {{system.selfInfo.fds.soft}}</li>\n" +
3751 " <li>FD soft limits: {{system.selfInfo.fds.soft}}</li>\n" +
3371 " <li>FD hard limits: {{system.selfInfo.fds.hard}}</li>\n" +
3752 " <li>FD hard limits: {{system.selfInfo.fds.hard}}</li>\n" +
3372 " <li>Memlock soft limits: {{system.selfInfo.memlock.soft}}</li>\n" +
3753 " <li>Memlock soft limits: {{system.selfInfo.memlock.soft}}</li>\n" +
3373 " <li>Memlock hard limits: {{system.selfInfo.memlock.hard}}</li>\n" +
3754 " <li>Memlock hard limits: {{system.selfInfo.memlock.hard}}</li>\n" +
3374 " </ul>\n" +
3755 " </ul>\n" +
3375 " </p>\n" +
3756 " </p>\n" +
3376 "\n" +
3757 "\n" +
3377 " </div>\n" +
3758 " </div>\n" +
3378 " </div>\n" +
3759 " </div>\n" +
3379 " </div>\n" +
3760 " </div>\n" +
3380 " </div>\n" +
3761 " </div>\n" +
3381 " <div class=\"row\">\n" +
3762 " <div class=\"row\">\n" +
3382 " <div class=\"col-sm-12\">\n" +
3763 " <div class=\"col-sm-12\">\n" +
3383 "\n" +
3764 "\n" +
3384 " <div class=\"panel panel-default\">\n" +
3765 " <div class=\"panel panel-default\">\n" +
3385 " <div class=\"panel-body\">\n" +
3766 " <div class=\"panel-body\">\n" +
3386 "\n" +
3767 "\n" +
3387 " <uib-tabset>\n" +
3768 " <uib-tabset>\n" +
3388 " <uib-tab>\n" +
3769 " <uib-tab>\n" +
3389 " <uib-tab-heading>\n" +
3770 " <uib-tab-heading>\n" +
3390 " Postgresql Tables\n" +
3771 " Postgresql Tables\n" +
3391 " </uib-tab-heading>\n" +
3772 " </uib-tab-heading>\n" +
3392 "\n" +
3773 "\n" +
3393 " <table class=\"table table-striped\">\n" +
3774 " <table class=\"table table-striped\">\n" +
3394 " <thead>\n" +
3775 " <thead>\n" +
3395 " <tr>\n" +
3776 " <tr>\n" +
3396 " <th class=\"c1 tablename\">Table name</th>\n" +
3777 " <th class=\"c1 tablename\">Table name</th>\n" +
3397 " <th class=\"c2 size_human\">Size</th>\n" +
3778 " <th class=\"c2 size_human\">Size</th>\n" +
3398 " </tr>\n" +
3779 " </tr>\n" +
3399 " </thead>\n" +
3780 " </thead>\n" +
3400 " <tbody>\n" +
3781 " <tbody>\n" +
3401 " <tr class=\"r{{$index}}\" ng-repeat=\"row in system.DBtables\">\n" +
3782 " <tr class=\"r{{$index}}\" ng-repeat=\"row in system.DBtables\">\n" +
3402 " <td class=\"c1\">{{row.table_name}}</td>\n" +
3783 " <td class=\"c1\">{{row.table_name}}</td>\n" +
3403 " <td class=\"c2\">{{row.size_human}}</td>\n" +
3784 " <td class=\"c2\">{{row.size_human}}</td>\n" +
3404 " </tr>\n" +
3785 " </tr>\n" +
3405 " </tbody>\n" +
3786 " </tbody>\n" +
3406 " </table>\n" +
3787 " </table>\n" +
3407 "\n" +
3788 "\n" +
3408 " </uib-tab>\n" +
3789 " </uib-tab>\n" +
3409 "\n" +
3790 "\n" +
3410 " <uib-tab>\n" +
3791 " <uib-tab>\n" +
3411 " <uib-tab-heading>\n" +
3792 " <uib-tab-heading>\n" +
3412 " Elasticsearch Indices\n" +
3793 " Elasticsearch Indices\n" +
3413 " </uib-tab-heading>\n" +
3794 " </uib-tab-heading>\n" +
3414 "\n" +
3795 "\n" +
3415 " <table class=\"table table-striped\">\n" +
3796 " <table class=\"table table-striped\">\n" +
3416 " <thead>\n" +
3797 " <thead>\n" +
3417 " <tr>\n" +
3798 " <tr>\n" +
3418 " <th class=\"c1 tablename\">Index name</th>\n" +
3799 " <th class=\"c1 tablename\">Index name</th>\n" +
3419 " <th class=\"c2 size_human\">Size</th>\n" +
3800 " <th class=\"c2 size_human\">Size</th>\n" +
3420 " </tr>\n" +
3801 " </tr>\n" +
3421 " </thead>\n" +
3802 " </thead>\n" +
3422 " <tbody>\n" +
3803 " <tbody>\n" +
3423 " <tr class=\"r{{$index}}\" ng-repeat=\"row in system.ESIndices\">\n" +
3804 " <tr class=\"r{{$index}}\" ng-repeat=\"row in system.ESIndices\">\n" +
3424 " <td class=\"c1\">{{row.name}}</td>\n" +
3805 " <td class=\"c1\">{{row.name}}</td>\n" +
3425 " <td class=\"c2\">{{row.size_human}}</td>\n" +
3806 " <td class=\"c2\">{{row.size_human}}</td>\n" +
3426 " </tr>\n" +
3807 " </tr>\n" +
3427 " </tbody>\n" +
3808 " </tbody>\n" +
3428 " </table>\n" +
3809 " </table>\n" +
3429 "\n" +
3810 "\n" +
3430 " </uib-tab>\n" +
3811 " </uib-tab>\n" +
3431 "\n" +
3812 "\n" +
3432 " <uib-tab>\n" +
3813 " <uib-tab>\n" +
3433 " <uib-tab-heading>\n" +
3814 " <uib-tab-heading>\n" +
3434 " Processes\n" +
3815 " Processes\n" +
3435 " </uib-tab-heading>\n" +
3816 " </uib-tab-heading>\n" +
3436 "\n" +
3817 "\n" +
3437 " <table class=\"table table-striped\">\n" +
3818 " <table class=\"table table-striped\">\n" +
3438 " <thead>\n" +
3819 " <thead>\n" +
3439 " <tr>\n" +
3820 " <tr>\n" +
3440 " <th class=\"c1 tablename\">Owner</th>\n" +
3821 " <th class=\"c1 tablename\">Owner</th>\n" +
3441 " <th class=\"c2 tablename\">PID</th>\n" +
3822 " <th class=\"c2 tablename\">PID</th>\n" +
3442 " <th class=\"c3 tablename\">CPU</th>\n" +
3823 " <th class=\"c3 tablename\">CPU</th>\n" +
3443 " <th class=\"c4 tablename\">MEM</th>\n" +
3824 " <th class=\"c4 tablename\">MEM</th>\n" +
3444 " <th class=\"c4 tablename\">Name</th>\n" +
3825 " <th class=\"c4 tablename\">Name</th>\n" +
3445 " </tr>\n" +
3826 " </tr>\n" +
3446 " </thead>\n" +
3827 " </thead>\n" +
3447 " <tbody>\n" +
3828 " <tbody>\n" +
3448 " <tr class=\"r{{$index}}\" ng-repeat-start=\"row in system.processInfo\">\n" +
3829 " <tr class=\"r{{$index}}\" ng-repeat-start=\"row in system.processInfo\">\n" +
3449 " <td class=\"c1\">{{row.owner}}</td>\n" +
3830 " <td class=\"c1\">{{row.owner}}</td>\n" +
3450 " <td class=\"c2\">{{row.pid}}</td>\n" +
3831 " <td class=\"c2\">{{row.pid}}</td>\n" +
3451 " <td class=\"c3\">{{row.cpu}}</td>\n" +
3832 " <td class=\"c3\">{{row.cpu}}</td>\n" +
3452 " <td class=\"c4\">{{row.mem_usage}} ({{row.mem_percentage}}%)</td>\n" +
3833 " <td class=\"c4\">{{row.mem_usage}} ({{row.mem_percentage}}%)</td>\n" +
3453 " <td class=\"c5\"><strong>{{row.name}}</strong></td>\n" +
3834 " <td class=\"c5\"><strong>{{row.name}}</strong></td>\n" +
3454 " </tr>\n" +
3835 " </tr>\n" +
3455 " <tr ng-repeat-end>\n" +
3836 " <tr ng-repeat-end>\n" +
3456 " <td colspan=\"5\" class=\"word-wrap\">{{row.command}}</td>\n" +
3837 " <td colspan=\"5\" class=\"word-wrap\">{{row.command}}</td>\n" +
3457 " </tr>\n" +
3838 " </tr>\n" +
3458 " </tbody>\n" +
3839 " </tbody>\n" +
3459 " </table>\n" +
3840 " </table>\n" +
3460 "\n" +
3841 "\n" +
3461 " </uib-tab>\n" +
3842 " </uib-tab>\n" +
3462 "\n" +
3843 "\n" +
3463 " <uib-tab>\n" +
3844 " <uib-tab>\n" +
3464 " <uib-tab-heading>\n" +
3845 " <uib-tab-heading>\n" +
3465 " Python packages\n" +
3846 " Python packages\n" +
3466 " </uib-tab-heading>\n" +
3847 " </uib-tab-heading>\n" +
3467 "\n" +
3848 "\n" +
3468 " <table class=\"table\">\n" +
3849 " <table class=\"table\">\n" +
3469 " <tr ng-repeat=\"package in system.packages\">\n" +
3850 " <tr ng-repeat=\"package in system.packages\">\n" +
3470 " <td>{{package.name}}</td>\n" +
3851 " <td>{{package.name}}</td>\n" +
3471 " <td>{{package.version}}</td>\n" +
3852 " <td>{{package.version}}</td>\n" +
3472 " </tr>\n" +
3853 " </tr>\n" +
3473 " </table>\n" +
3854 " </table>\n" +
3474 " </p>\n" +
3855 " </p>\n" +
3475 "\n" +
3856 "\n" +
3476 " </uib-tab>\n" +
3857 " </uib-tab>\n" +
3477 "\n" +
3858 "\n" +
3478 " </uib-tabset>\n" +
3859 " </uib-tabset>\n" +
3479 " </div>\n" +
3860 " </div>\n" +
3480 " </div>\n" +
3861 " </div>\n" +
3481 " </div>\n" +
3862 " </div>\n" +
3482 " </div>\n" +
3863 " </div>\n" +
3483 "</div>\n"
3864 "</div>\n"
3484 );
3865 );
3485
3866
3486
3867
3487 $templateCache.put('templates/admin/users/parent_view.html',
3868 $templateCache.put('templates/admin/users/parent_view.html',
3488 "<div ui-view></div>"
3869 "<div ui-view></div>"
3489 );
3870 );
3490
3871
3491
3872
3492 $templateCache.put('templates/admin/users/users_create.html',
3873 $templateCache.put('templates/admin/users/users_create.html',
3493 "<ng-include src=\"'templates/loader.html'\" ng-if=\"user.loading.user\"></ng-include>\n" +
3874 "<ng-include src=\"'templates/loader.html'\" ng-if=\"user.loading.user\"></ng-include>\n" +
3494 "\n" +
3875 "\n" +
3495 "<div ng-show=\"!user.loading.user\">\n" +
3876 "<div ng-show=\"!user.loading.user\">\n" +
3496 "\n" +
3877 "\n" +
3497 " <div class=\"panel panel-default\">\n" +
3878 " <div class=\"panel panel-default\">\n" +
3498 " <div class=\"panel-body\">\n" +
3879 " <div class=\"panel-body\">\n" +
3499 "\n" +
3880 "\n" +
3500 " <span class=\"dropdown\" data-uib-dropdown on-toggle=\"toggled(open)\" ng-if=\"user.user.id\">\n" +
3881 " <span class=\"dropdown\" data-uib-dropdown on-toggle=\"toggled(open)\" ng-if=\"user.user.id\">\n" +
3501 " <a class=\"btn btn-default\" data-uib-dropdown-toggle><span class=\"fa fa-user-secret\"></span> Re-login to user</a>\n" +
3882 " <a class=\"btn btn-default\" data-uib-dropdown-toggle><span class=\"fa fa-user-secret\"></span> Re-login to user</a>\n" +
3502 " <ul class=\"dropdown-menu\">\n" +
3883 " <ul class=\"dropdown-menu\">\n" +
3503 " <li><a>No</a></li>\n" +
3884 " <li><a>No</a></li>\n" +
3504 " <li><a ng-click=\"user.reloginUser(user)\">Yes</a></li>\n" +
3885 " <li><a ng-click=\"user.reloginUser(user)\">Yes</a></li>\n" +
3505 " </ul>\n" +
3886 " </ul>\n" +
3506 " </span>\n" +
3887 " </span>\n" +
3507 "\n" +
3888 "\n" +
3508 " <form name=\"user.profileForm\" class=\"form-horizontal\" ng-submit=\"user.createUser()\">\n" +
3889 " <form name=\"user.profileForm\" class=\"form-horizontal\" ng-submit=\"user.createUser()\">\n" +
3509 " <div class=\"form-group\" id=\"row-user_name\">\n" +
3890 " <div class=\"form-group\" id=\"row-user_name\">\n" +
3510 " <data-form-errors errors=\"user.profileForm.ae_validation.user_name\"></data-form-errors>\n" +
3891 " <data-form-errors errors=\"user.profileForm.ae_validation.user_name\"></data-form-errors>\n" +
3511 " <label for=\"user_name\" id=\"label-user_name\" class=\"control-label col-sm-4 col-lg-3\">\n" +
3892 " <label for=\"user_name\" id=\"label-user_name\" class=\"control-label col-sm-4 col-lg-3\">\n" +
3512 " User name\n" +
3893 " User name\n" +
3513 " <span class=\"required\">*</span>\n" +
3894 " <span class=\"required\">*</span>\n" +
3514 " </label>\n" +
3895 " </label>\n" +
3515 " <div class=\"col-sm-8 col-lg-9\">\n" +
3896 " <div class=\"col-sm-8 col-lg-9\">\n" +
3516 " <input class=\"form-control\" id=\"user_name\" name=\"user_name\" type=\"text\" ng-model=\"user.user.user_name\">\n" +
3897 " <input class=\"form-control\" id=\"user_name\" name=\"user_name\" type=\"text\" ng-model=\"user.user.user_name\">\n" +
3517 " </div>\n" +
3898 " </div>\n" +
3518 " </div>\n" +
3899 " </div>\n" +
3519 "\n" +
3900 "\n" +
3520 " <div class=\"form-group\" id=\"row-user_password\">\n" +
3901 " <div class=\"form-group\" id=\"row-user_password\">\n" +
3521 " <data-form-errors errors=\"user.profileForm.ae_validation.user_password\"></data-form-errors>\n" +
3902 " <data-form-errors errors=\"user.profileForm.ae_validation.user_password\"></data-form-errors>\n" +
3522 " <label for=\"user_password\" id=\"label-user_password\" class=\"control-label col-sm-4 col-lg-3\">\n" +
3903 " <label for=\"user_password\" id=\"label-user_password\" class=\"control-label col-sm-4 col-lg-3\">\n" +
3523 " Password\n" +
3904 " Password\n" +
3524 " <span class=\"required\">*</span>\n" +
3905 " <span class=\"required\">*</span>\n" +
3525 " </label>\n" +
3906 " </label>\n" +
3526 " <div class=\"col-sm-8 col-lg-9\">\n" +
3907 " <div class=\"col-sm-8 col-lg-9\">\n" +
3527 " <input class=\"form-control\" id=\"user_password\" name=\"user_password\" type=\"password\" ng-model=\"user.user.user_password\">\n" +
3908 " <input class=\"form-control\" id=\"user_password\" name=\"user_password\" type=\"password\" ng-model=\"user.user.user_password\">\n" +
3528 "\n" +
3909 "\n" +
3529 " <p class=\"m-t-1\"><a class=\"btn btn-info btn-sm\" ng-click=\"user.generatePassword()\"><span class=\"fa fa-lock\"></span> Generate password</a>\n" +
3910 " <p class=\"m-t-1\"><a class=\"btn btn-info btn-sm\" ng-click=\"user.generatePassword()\"><span class=\"fa fa-lock\"></span> Generate password</a>\n" +
3530 " <span ng-show=\"user.gen_pass.length > 0\">(generated password: {{user.gen_pass}})</span>\n" +
3911 " <span ng-show=\"user.gen_pass.length > 0\">(generated password: {{user.gen_pass}})</span>\n" +
3531 " </p>\n" +
3912 " </p>\n" +
3532 "\n" +
3913 "\n" +
3533 " </div>\n" +
3914 " </div>\n" +
3534 " </div>\n" +
3915 " </div>\n" +
3535 "\n" +
3916 "\n" +
3536 "\n" +
3917 "\n" +
3537 " <div class=\"form-group\" id=\"row-email\">\n" +
3918 " <div class=\"form-group\" id=\"row-email\">\n" +
3538 " <data-form-errors errors=\"user.profileForm.ae_validation.email\"></data-form-errors>\n" +
3919 " <data-form-errors errors=\"user.profileForm.ae_validation.email\"></data-form-errors>\n" +
3539 " <label for=\"email\" id=\"label-email\" class=\"control-label col-sm-4 col-lg-3\">\n" +
3920 " <label for=\"email\" id=\"label-email\" class=\"control-label col-sm-4 col-lg-3\">\n" +
3540 " Email Address\n" +
3921 " Email Address\n" +
3541 " <span class=\"required\">*</span>\n" +
3922 " <span class=\"required\">*</span>\n" +
3542 " </label>\n" +
3923 " </label>\n" +
3543 " <div class=\"col-sm-8 col-lg-9\">\n" +
3924 " <div class=\"col-sm-8 col-lg-9\">\n" +
3544 " <input class=\"form-control\" id=\"email\" name=\"email\" type=\"text\" ng-model=\"user.user.email\">\n" +
3925 " <input class=\"form-control\" id=\"email\" name=\"email\" type=\"text\" ng-model=\"user.user.email\">\n" +
3545 " </div>\n" +
3926 " </div>\n" +
3546 " </div>\n" +
3927 " </div>\n" +
3547 "\n" +
3928 "\n" +
3548 " <div class=\"form-group\" id=\"row-first_name\">\n" +
3929 " <div class=\"form-group\" id=\"row-first_name\">\n" +
3549 " <data-form-errors errors=\"user.profileForm.ae_validation.first_name\"></data-form-errors>\n" +
3930 " <data-form-errors errors=\"user.profileForm.ae_validation.first_name\"></data-form-errors>\n" +
3550 " <label for=\"first_name\" id=\"label-first_name\" class=\"control-label col-sm-4 col-lg-3\">\n" +
3931 " <label for=\"first_name\" id=\"label-first_name\" class=\"control-label col-sm-4 col-lg-3\">\n" +
3551 " First Name\n" +
3932 " First Name\n" +
3552 " </label>\n" +
3933 " </label>\n" +
3553 " <div class=\"col-sm-8 col-lg-9\">\n" +
3934 " <div class=\"col-sm-8 col-lg-9\">\n" +
3554 " <input class=\"form-control\" id=\"first_name\" name=\"first_name\" type=\"text\" ng-model=\"user.user.first_name\">\n" +
3935 " <input class=\"form-control\" id=\"first_name\" name=\"first_name\" type=\"text\" ng-model=\"user.user.first_name\">\n" +
3555 " </div>\n" +
3936 " </div>\n" +
3556 " </div>\n" +
3937 " </div>\n" +
3557 " <div class=\"form-group\" id=\"row-last_name\">\n" +
3938 " <div class=\"form-group\" id=\"row-last_name\">\n" +
3558 " <data-form-errors errors=\"user.profileForm.ae_validation.last_name\"></data-form-errors>\n" +
3939 " <data-form-errors errors=\"user.profileForm.ae_validation.last_name\"></data-form-errors>\n" +
3559 " <label for=\"last_name\" id=\"label-last_name\" class=\"control-label col-sm-4 col-lg-3\">\n" +
3940 " <label for=\"last_name\" id=\"label-last_name\" class=\"control-label col-sm-4 col-lg-3\">\n" +
3560 " Last Name\n" +
3941 " Last Name\n" +
3561 " </label>\n" +
3942 " </label>\n" +
3562 " <div class=\"col-sm-8 col-lg-9\">\n" +
3943 " <div class=\"col-sm-8 col-lg-9\">\n" +
3563 " <input class=\"form-control\" id=\"last_name\" name=\"last_name\" type=\"text\" ng-model=\"user.user.last_name\">\n" +
3944 " <input class=\"form-control\" id=\"last_name\" name=\"last_name\" type=\"text\" ng-model=\"user.user.last_name\">\n" +
3564 " </div>\n" +
3945 " </div>\n" +
3565 " </div>\n" +
3946 " </div>\n" +
3566 "\n" +
3947 "\n" +
3567 " <div class=\"form-group\" id=\"row-status\">\n" +
3948 " <div class=\"form-group\" id=\"row-status\">\n" +
3568 " <data-form-errors errors=\"user.profileForm.ae_validation.status\"></data-form-errors>\n" +
3949 " <data-form-errors errors=\"user.profileForm.ae_validation.status\"></data-form-errors>\n" +
3569 " <label for=\"status\" id=\"label-status\" class=\"control-label col-sm-4 col-lg-3\">\n" +
3950 " <label for=\"status\" id=\"label-status\" class=\"control-label col-sm-4 col-lg-3\">\n" +
3570 " Active\n" +
3951 " Active\n" +
3571 " </label>\n" +
3952 " </label>\n" +
3572 " <div class=\"col-sm-8 col-lg-9\">\n" +
3953 " <div class=\"col-sm-8 col-lg-9\">\n" +
3573 " <input checked class=\"form-control\" id=\"status\" name=\"status\" type=\"checkbox\" ng-model=\"user.user.status\">\n" +
3954 " <input checked class=\"form-control\" id=\"status\" name=\"status\" type=\"checkbox\" ng-model=\"user.user.status\">\n" +
3574 " </div>\n" +
3955 " </div>\n" +
3575 " </div>\n" +
3956 " </div>\n" +
3576 "\n" +
3957 "\n" +
3577 " <div class=\"form-group\" id=\"row-submit\">\n" +
3958 " <div class=\"form-group\" id=\"row-submit\">\n" +
3578 " <label for=\"submit\" id=\"label-submit\" class=\"control-label col-sm-4 col-lg-3\">\n" +
3959 " <label for=\"submit\" id=\"label-submit\" class=\"control-label col-sm-4 col-lg-3\">\n" +
3579 " </label>\n" +
3960 " </label>\n" +
3580 " <div class=\"col-sm-8 col-lg-9\">\n" +
3961 " <div class=\"col-sm-8 col-lg-9\">\n" +
3581 " <input class=\"form-control btn btn-primary\" id=\"submit\" name=\"submit\" type=\"submit\" value=\"{{$state.params.userId ? 'Update' : 'Add'}} User\">\n" +
3962 " <input class=\"form-control btn btn-primary\" id=\"submit\" name=\"submit\" type=\"submit\" value=\"{{$state.params.userId ? 'Update' : 'Add'}} User\">\n" +
3582 " </div>\n" +
3963 " </div>\n" +
3583 " </div>\n" +
3964 " </div>\n" +
3584 " </form>\n" +
3965 " </form>\n" +
3585 " </div>\n" +
3966 " </div>\n" +
3586 " </div>\n" +
3967 " </div>\n" +
3587 "\n" +
3968 "\n" +
3588 "\n" +
3969 "\n" +
3589 " <div class=\"panel panel-default\" ng-if=\"user.user.id\">\n" +
3970 " <div class=\"panel panel-default\" ng-if=\"user.user.id\">\n" +
3590 " <div class=\"panel-heading\">\n" +
3971 " <div class=\"panel-heading\">\n" +
3591 " <h3 class=\"panel-title\">Permission Summary</h3>\n" +
3972 " <h3 class=\"panel-title\">Permission Summary</h3>\n" +
3592 " </div>\n" +
3973 " </div>\n" +
3593 " <div class=\"panel-body\">\n" +
3974 " <div class=\"panel-body\">\n" +
3594 " <h3>Direct application permissions</h3>\n" +
3975 " <h3>Direct application permissions</h3>\n" +
3595 "\n" +
3976 "\n" +
3596 " <ul class=\"list-group\">\n" +
3977 " <ul class=\"list-group\">\n" +
3597 " <li ng-repeat=\"perm in user.resourcePermissions.user.application\" class=\"animate-repeat list-group-item\">\n" +
3978 " <li ng-repeat=\"perm in user.resourcePermissions.user.application\" class=\"animate-repeat list-group-item\">\n" +
3598 " <strong>{{ perm.self.resource_name }}</strong>\n" +
3979 " <strong>{{ perm.self.resource_name }}</strong>\n" +
3599 " <div class=\"pull-right\">\n" +
3980 " <div class=\"pull-right\">\n" +
3600 "\n" +
3981 "\n" +
3601 " <span class=\"btn btn-primary btn-xs m-r-1\" disabled ng-repeat=\"perm_name in perm.permissions\">{{ perm.self.owner ? 'Resource owner' : perm_name }}</span>\n" +
3982 " <span class=\"btn btn-primary btn-xs m-r-1\" disabled ng-repeat=\"perm_name in perm.permissions\">{{ perm.self.owner ? 'Resource owner' : perm_name }}</span>\n" +
3602 "\n" +
3983 "\n" +
3603 " <a class=\"btn btn-default btn-xs\" data-uib-tooltip=\"Visit Application\" data-ui-sref=\"applications.update({resourceId:perm.self.resource_id})\">\n" +
3984 " <a class=\"btn btn-default btn-xs\" data-uib-tooltip=\"Visit Application\" data-ui-sref=\"applications.update({resourceId:perm.self.resource_id})\">\n" +
3604 " <span class=\"fa fa-cog\"></span>\n" +
3985 " <span class=\"fa fa-cog\"></span>\n" +
3605 " </a>\n" +
3986 " </a>\n" +
3606 " </div>\n" +
3987 " </div>\n" +
3607 " </li>\n" +
3988 " </li>\n" +
3608 " </ul>\n" +
3989 " </ul>\n" +
3609 "\n" +
3990 "\n" +
3610 " <h3>Direct dashboard permissions</h3>\n" +
3991 " <h3>Direct dashboard permissions</h3>\n" +
3611 "\n" +
3992 "\n" +
3612 " <ul class=\"list-group\">\n" +
3993 " <ul class=\"list-group\">\n" +
3613 " <li ng-repeat=\"perm in user.resourcePermissions.user.dashboard\" class=\"animate-repeat list-group-item\">\n" +
3994 " <li ng-repeat=\"perm in user.resourcePermissions.user.dashboard\" class=\"animate-repeat list-group-item\">\n" +
3614 " <strong>{{ perm.self.resource_name }}</strong>\n" +
3995 " <strong>{{ perm.self.resource_name }}</strong>\n" +
3615 " <div class=\"pull-right\">\n" +
3996 " <div class=\"pull-right\">\n" +
3616 "\n" +
3997 "\n" +
3617 " <span class=\"btn btn-primary btn-xs m-r-1\" disabled ng-repeat=\"perm_name in perm.permissions\">{{ perm.self.owner ? 'Resource owner' : perm_name }}</span>\n" +
3998 " <span class=\"btn btn-primary btn-xs m-r-1\" disabled ng-repeat=\"perm_name in perm.permissions\">{{ perm.self.owner ? 'Resource owner' : perm_name }}</span>\n" +
3618 "\n" +
3999 "\n" +
3619 " <a class=\"btn btn-default btn-xs\" data-uib-tooltip=\"Visit Dashboard\" data-ui-sref=\"dashboard.update({resourceId:perm.self.resource_id})\">\n" +
4000 " <a class=\"btn btn-default btn-xs\" data-uib-tooltip=\"Visit Dashboard\" data-ui-sref=\"dashboard.update({resourceId:perm.self.resource_id})\">\n" +
3620 " <span class=\"fa fa-cog\"></span>\n" +
4001 " <span class=\"fa fa-cog\"></span>\n" +
3621 " </a>\n" +
4002 " </a>\n" +
3622 " </div>\n" +
4003 " </div>\n" +
3623 " </li>\n" +
4004 " </li>\n" +
3624 " </ul>\n" +
4005 " </ul>\n" +
3625 "\n" +
4006 "\n" +
3626 " </div>\n" +
4007 " </div>\n" +
3627 "\n" +
4008 "\n" +
3628 " </div>\n" +
4009 " </div>\n" +
3629 "\n" +
4010 "\n" +
3630 "\n" +
4011 "\n" +
3631 "</div>\n"
4012 "</div>\n"
3632 );
4013 );
3633
4014
3634
4015
3635 $templateCache.put('templates/admin/users/users_list.html',
4016 $templateCache.put('templates/admin/users/users_list.html',
3636 "<ng-include src=\"'templates/loader.html'\" ng-if=\"users.loading.users\"></ng-include>\n" +
4017 "<ng-include src=\"'templates/loader.html'\" ng-if=\"users.loading.users\"></ng-include>\n" +
3637 "\n" +
4018 "\n" +
3638 "<div ng-show=\"!users.loading.users\">\n" +
4019 "<div ng-show=\"!users.loading.users\">\n" +
3639 "\n" +
4020 "\n" +
3640 " <div class=\"panel panel-default\">\n" +
4021 " <div class=\"panel panel-default\">\n" +
3641 "\n" +
4022 "\n" +
3642 " <div class=\"panel-heading\">\n" +
4023 " <div class=\"panel-heading\">\n" +
3643 " {{users.activeUsers}} active out of {{users.users.length}} users\n" +
4024 " {{users.activeUsers}} active out of {{users.users.length}} users\n" +
3644 " </div>\n" +
4025 " </div>\n" +
3645 "\n" +
4026 "\n" +
3646 "\n" +
4027 "\n" +
3647 " <table st-table=\"displayedCollection\" st-safe-src=\"users.users\" class=\"table table-striped\">\n" +
4028 " <table st-table=\"displayedCollection\" st-safe-src=\"users.users\" class=\"table table-striped\">\n" +
3648 " <thead>\n" +
4029 " <thead>\n" +
3649 " <tr>\n" +
4030 " <tr>\n" +
3650 " <th class=\"user_name\" st-sort=\"user_name\"><a>Username</a></th>\n" +
4031 " <th class=\"user_name\" st-sort=\"user_name\"><a>Username</a></th>\n" +
3651 " <th class=\"email\" st-sort=\"email\"><a>Email</a></th>\n" +
4032 " <th class=\"email\" st-sort=\"email\"><a>Email</a></th>\n" +
3652 " <th class=\"status\" st-sort=\"status\"><a>Status</a></th>\n" +
4033 " <th class=\"status\" st-sort=\"status\"><a>Status</a></th>\n" +
3653 " <th st-sort=\"first_name\"><a>First Name</a></th>\n" +
4034 " <th st-sort=\"first_name\"><a>First Name</a></th>\n" +
3654 " <th st-sort=\"last_name\"><a>Last Name</a></th>\n" +
4035 " <th st-sort=\"last_name\"><a>Last Name</a></th>\n" +
3655 " <th st-sort=\"last_login_date\"><a>Last login</a></th>\n" +
4036 " <th st-sort=\"last_login_date\"><a>Last login</a></th>\n" +
3656 " <th class=\"options\"></th>\n" +
4037 " <th class=\"options\"></th>\n" +
3657 " </tr>\n" +
4038 " </tr>\n" +
3658 " <tr>\n" +
4039 " <tr>\n" +
3659 " <th><input st-search=\"user_name\" placeholder=\"search for user name\" class=\"form-control\" type=\"search\" st-delay=\"1\"/></th>\n" +
4040 " <th><input st-search=\"user_name\" placeholder=\"search for user name\" class=\"form-control\" type=\"search\" st-delay=\"1\"/></th>\n" +
3660 " <th><input st-search=\"email\" placeholder=\"search for email\" class=\"form-control\" type=\"search\" st-delay=\"1\"/></th>\n" +
4041 " <th><input st-search=\"email\" placeholder=\"search for email\" class=\"form-control\" type=\"search\" st-delay=\"1\"/></th>\n" +
3661 " <th></th>\n" +
4042 " <th></th>\n" +
3662 " <th><input st-search=\"first_name\" placeholder=\"search for first name\" class=\"form-control\" type=\"search\" st-delay=\"1\"/></th>\n" +
4043 " <th><input st-search=\"first_name\" placeholder=\"search for first name\" class=\"form-control\" type=\"search\" st-delay=\"1\"/></th>\n" +
3663 " <th><input st-search=\"last_name\" placeholder=\"search for last name\" class=\"form-control\" type=\"search\" st-delay=\"1\"/></th>\n" +
4044 " <th><input st-search=\"last_name\" placeholder=\"search for last name\" class=\"form-control\" type=\"search\" st-delay=\"1\"/></th>\n" +
3664 " <th><input st-search=\"last_login_date\" placeholder=\"search for last name\" class=\"form-control\" type=\"search\" st-delay=\"1\"/></th>\n" +
4045 " <th><input st-search=\"last_login_date\" placeholder=\"search for last name\" class=\"form-control\" type=\"search\" st-delay=\"1\"/></th>\n" +
3665 " <th></th>\n" +
4046 " <th></th>\n" +
3666 " </tr>\n" +
4047 " </tr>\n" +
3667 " </thead>\n" +
4048 " </thead>\n" +
3668 " <tbody>\n" +
4049 " <tbody>\n" +
3669 "\n" +
4050 "\n" +
3670 " <tr ng-repeat=\"user in displayedCollection track by user.id\">\n" +
4051 " <tr ng-repeat=\"user in displayedCollection track by user.id\">\n" +
3671 " <td><img src=\"{{user.gravatar_url}}\" class=\"avatar\"> {{user.user_name}}</td>\n" +
4052 " <td><img src=\"{{user.gravatar_url}}\" class=\"avatar\"> {{user.user_name}}</td>\n" +
3672 " <td class=\"word-wrap small\">{{user.email}}</td>\n" +
4053 " <td class=\"word-wrap small\">{{user.email}}</td>\n" +
3673 " <td class=\"text-center\"><span class=\"fa\" ng-class=\"{'fa-check-circle':user.status, 'fa-times':!user.status}\"></span></td>\n" +
4054 " <td class=\"text-center\"><span class=\"fa\" ng-class=\"{'fa-check-circle':user.status, 'fa-times':!user.status}\"></span></td>\n" +
3674 " <td class=\"word-wrap small\">{{user.first_name}}</td>\n" +
4055 " <td class=\"word-wrap small\">{{user.first_name}}</td>\n" +
3675 " <td class=\"word-wrap small\">{{user.last_name}}</td>\n" +
4056 " <td class=\"word-wrap small\">{{user.last_name}}</td>\n" +
3676 " <td><span data-uib-tooltip=\"{{user.last_login_date}}\" class=\"small\">{{user.last_login_date | isoToRelativeTime}}</span></td>\n" +
4057 " <td><span data-uib-tooltip=\"{{user.last_login_date}}\" class=\"small\">{{user.last_login_date | isoToRelativeTime}}</span></td>\n" +
3677 " <td>\n" +
4058 " <td>\n" +
3678 " <a class=\"btn btn-default btn-sm\" data-ui-sref=\"admin.user.update({userId:user.id})\"><span class=\"fa fa-cog\"></span></a>\n" +
4059 " <a class=\"btn btn-default btn-sm\" data-ui-sref=\"admin.user.update({userId:user.id})\"><span class=\"fa fa-cog\"></span></a>\n" +
3679 " <span class=\"dropdown\" data-uib-dropdown on-toggle=\"toggled(open)\">\n" +
4060 " <span class=\"dropdown\" data-uib-dropdown on-toggle=\"toggled(open)\">\n" +
3680 " <a class=\"btn btn-danger btn-sm\" data-uib-dropdown-toggle><span class=\"fa fa-trash-o\"></span></a>\n" +
4061 " <a class=\"btn btn-danger btn-sm\" data-uib-dropdown-toggle><span class=\"fa fa-trash-o\"></span></a>\n" +
3681 " <ul class=\"dropdown-menu\">\n" +
4062 " <ul class=\"dropdown-menu\">\n" +
3682 " <li><a>No</a></li>\n" +
4063 " <li><a>No</a></li>\n" +
3683 " <li><a ng-click=\"users.removeUser(user)\">Yes</a></li>\n" +
4064 " <li><a ng-click=\"users.removeUser(user)\">Yes</a></li>\n" +
3684 " </ul>\n" +
4065 " </ul>\n" +
3685 " </span>\n" +
4066 " </span>\n" +
3686 " </tr>\n" +
4067 " </tr>\n" +
3687 " <tfoot>\n" +
4068 " <tfoot>\n" +
3688 " <tr>\n" +
4069 " <tr>\n" +
3689 " <td colspan=\"6\" class=\"text-center\">\n" +
4070 " <td colspan=\"6\" class=\"text-center\">\n" +
3690 " <div st-pagination=\"\" st-items-by-page=\"100\" st-displayed-pages=\"7\"></div>\n" +
4071 " <div st-pagination=\"\" st-items-by-page=\"100\" st-displayed-pages=\"7\"></div>\n" +
3691 " </td>\n" +
4072 " </td>\n" +
3692 " </tr>\n" +
4073 " </tr>\n" +
3693 " </tfoot>\n" +
4074 " </tfoot>\n" +
3694 " </tbody>\n" +
4075 " </tbody>\n" +
3695 " </table>\n" +
4076 " </table>\n" +
3696 "\n" +
4077 "\n" +
3697 "\n" +
4078 "\n" +
3698 " </div>\n" +
4079 " </div>\n" +
3699 "</div>\n"
4080 "</div>\n"
3700 );
4081 );
3701
4082
3702
4083
3703 $templateCache.put('templates/applications/applications_purge_logs.html',
4084 $templateCache.put('templates/applications/applications_purge_logs.html',
3704 "<ng-include src=\"'templates/loader.html'\" ng-if=\"applications_purge.loading.applications\"></ng-include>\n" +
4085 "<ng-include src=\"'templates/loader.html'\" ng-if=\"applications_purge.loading.applications\"></ng-include>\n" +
3705 "\n" +
4086 "\n" +
3706 "<div ng-show=\"!applications_purge.loading.applications\">\n" +
4087 "<div ng-show=\"!applications_purge.loading.applications\">\n" +
3707 " <div class=\"panel panel-default\">\n" +
4088 " <div class=\"panel panel-default\">\n" +
3708 " <div class=\"panel-heading\" ng-include=\"'templates/applications/breadcrumbs.html'\"></div>\n" +
4089 " <div class=\"panel-heading\" ng-include=\"'templates/applications/breadcrumbs.html'\"></div>\n" +
3709 " <div class=\"panel-body\">\n" +
4090 " <div class=\"panel-body\">\n" +
3710 "\n" +
4091 "\n" +
3711 " <form method=\"post\" class=\"form-horizontal\" name=\"applications_purge.form\" ng-submit=\"applications_purge.purgeLogs()\">\n" +
4092 " <form method=\"post\" class=\"form-horizontal\" name=\"applications_purge.form\" ng-submit=\"applications_purge.purgeLogs()\">\n" +
3712 " <div class=\"form-group\">\n" +
4093 " <div class=\"form-group\">\n" +
3713 " <label class=\"control-label col-sm-3 col-lg-2\">Application:</label>\n" +
4094 " <label class=\"control-label col-sm-3 col-lg-2\">Application:</label>\n" +
3714 "\n" +
4095 "\n" +
3715 " <div class=\"col-sm-9 col-lg-10 form-inline\">\n" +
4096 " <div class=\"col-sm-9 col-lg-10 form-inline\">\n" +
3716 " <select ng-model=\"applications_purge.selectedResource\" ng-change=\"applications_purge.getCommonKeys()\"\n" +
4097 " <select ng-model=\"applications_purge.selectedResource\" ng-change=\"applications_purge.getCommonKeys()\"\n" +
3717 " ng-options=\"r.resource_id as r.resource_name for r in applications_purge.applications\" class=\"form-control\"></select>\n" +
4098 " ng-options=\"r.resource_id as r.resource_name for r in applications_purge.applications\" class=\"form-control\"></select>\n" +
3718 " </div>\n" +
4099 " </div>\n" +
3719 " </div>\n" +
4100 " </div>\n" +
3720 "\n" +
4101 "\n" +
3721 " <div class=\"form-group\">\n" +
4102 " <div class=\"form-group\">\n" +
3722 " <label class=\"control-label col-sm-3 col-lg-2\">Namespace:</label>\n" +
4103 " <label class=\"control-label col-sm-3 col-lg-2\">Namespace:</label>\n" +
3723 "\n" +
4104 "\n" +
3724 " <div class=\"col-sm-9 col-lg-10\">\n" +
4105 " <div class=\"col-sm-9 col-lg-10\">\n" +
3725 " <input type=\"text\" name=\"namespace\" ng-model=\"applications_purge.namespace\"\n" +
4106 " <input type=\"text\" name=\"namespace\" ng-model=\"applications_purge.namespace\"\n" +
3726 " placeholder=\"Namespace to filter on\" uib-typeahead=\"ns for ns in applications_purge.commonNamespaces\"\n" +
4107 " placeholder=\"Namespace to filter on\" uib-typeahead=\"ns for ns in applications_purge.commonNamespaces\"\n" +
3727 " class=\"form-control\">\n" +
4108 " class=\"form-control\">\n" +
3728 " </div>\n" +
4109 " </div>\n" +
3729 " </div>\n" +
4110 " </div>\n" +
3730 "\n" +
4111 "\n" +
3731 " <div class=\"form-group\">\n" +
4112 " <div class=\"form-group\">\n" +
3732 " <label class=\"control-label col-sm-3 col-lg-2\"></label>\n" +
4113 " <label class=\"control-label col-sm-3 col-lg-2\"></label>\n" +
3733 "\n" +
4114 "\n" +
3734 " <div class=\"col-sm-8 col-lg-9 \">\n" +
4115 " <div class=\"col-sm-8 col-lg-9 \">\n" +
3735 " <input class=\"form-control btn btn-primary\" name=\"submit\" type=\"submit\" value=\"Purge logs meeting the criteria\">\n" +
4116 " <input class=\"form-control btn btn-primary\" name=\"submit\" type=\"submit\" value=\"Purge logs meeting the criteria\">\n" +
3736 " </div>\n" +
4117 " </div>\n" +
3737 " </div>\n" +
4118 " </div>\n" +
3738 "\n" +
4119 "\n" +
3739 " </form>\n" +
4120 " </form>\n" +
3740 " </div>\n" +
4121 " </div>\n" +
3741 " </div>\n" +
4122 " </div>\n" +
3742 "</div>\n"
4123 "</div>\n"
3743 );
4124 );
3744
4125
3745
4126
3746 $templateCache.put('templates/applications/applications_update.html',
4127 $templateCache.put('templates/applications/applications_update.html',
3747 "<ng-include src=\"'templates/loader.html'\" ng-if=\"application.loading.application\"></ng-include>\n" +
4128 "<ng-include src=\"'templates/loader.html'\" ng-if=\"application.loading.application\"></ng-include>\n" +
3748 "\n" +
4129 "\n" +
3749 "<div ng-show=\"!application.loading.application\">\n" +
4130 "<div ng-show=\"!application.loading.application\">\n" +
3750 "\n" +
4131 "\n" +
3751 " <div class=\"panel panel-default\">\n" +
4132 " <div class=\"panel panel-default\">\n" +
3752 " <div class=\"panel-heading\" ng-include=\"'templates/applications/breadcrumbs.html'\"></div>\n" +
4133 " <div class=\"panel-heading\" ng-include=\"'templates/applications/breadcrumbs.html'\"></div>\n" +
3753 " <div class=\"panel-body\">\n" +
4134 " <div class=\"panel-body\">\n" +
3754 "\n" +
4135 "\n" +
3755 " <div class=\"row\" ng-show=\"application.resource.resource_id\">\n" +
4136 " <div class=\"row\" ng-show=\"application.resource.resource_id\">\n" +
3756 " <div class=\"col-sm-6\">\n" +
4137 " <div class=\"col-sm-6\">\n" +
3757 "\n" +
4138 "\n" +
3758 " <uib-tabset>\n" +
4139 " <uib-tabset>\n" +
3759 " <uib-tab>\n" +
4140 " <uib-tab>\n" +
3760 " <uib-tab-heading>\n" +
4141 " <uib-tab-heading>\n" +
3761 " API keys\n" +
4142 " API keys\n" +
3762 " </uib-tab-heading>\n" +
4143 " </uib-tab-heading>\n" +
3763 "\n" +
4144 "\n" +
3764 " <p><strong>PRIVATE API KEY:</strong></p>\n" +
4145 " <p><strong>PRIVATE API KEY:</strong></p>\n" +
3765 " <p>\n" +
4146 " <p>\n" +
3766 " <div class=\"well well-sm\">{{ application.resource.api_key }}</div>\n" +
4147 " <div class=\"well well-sm\">{{ application.resource.api_key }}</div>\n" +
3767 " </p>\n" +
4148 " </p>\n" +
3768 " <p><strong>PUBLIC API KEY</strong> (for javascript clients):</p>\n" +
4149 " <p><strong>PUBLIC API KEY</strong> (for javascript clients):</p>\n" +
3769 " <p>\n" +
4150 " <p>\n" +
3770 " <div class=\"well well-sm\">{{ application.resource.public_key }}</div>\n" +
4151 " <div class=\"well well-sm\">{{ application.resource.public_key }}</div>\n" +
3771 " </p>\n" +
4152 " </p>\n" +
3772 " <p><small>Your key will be used to identify to which application your data\n" +
4153 " <p><small>Your key will be used to identify to which application your data\n" +
3773 " belongs to please keep them private at all times.</small></p>\n" +
4154 " belongs to please keep them private at all times.</small></p>\n" +
3774 "\n" +
4155 "\n" +
3775 " </uib-tab>\n" +
4156 " </uib-tab>\n" +
3776 "\n" +
4157 "\n" +
3777 " <uib-tab>\n" +
4158 " <uib-tab>\n" +
3778 " <uib-tab-heading>\n" +
4159 " <uib-tab-heading>\n" +
3779 " <span class=\"btn btn-danger btn-xs\"><span class=\"fa fa-exclamation-triangle\"></span></span> Regenerate API keys\n" +
4160 " <span class=\"btn btn-danger btn-xs\"><span class=\"fa fa-exclamation-triangle\"></span></span> Regenerate API keys\n" +
3780 " </uib-tab-heading>\n" +
4161 " </uib-tab-heading>\n" +
3781 " <p>Are you sure you want to regenerate API KEY for this application?</p>\n" +
4162 " <p>Are you sure you want to regenerate API KEY for this application?</p>\n" +
3782 " <p>All client application keys will need to be updated.</p>\n" +
4163 " <p>All client application keys will need to be updated.</p>\n" +
3783 " <form ng-submit=\"application.regenerateAPIKeys()\" name=\"application.regenerateAPIKeysForm\" class=\"form-inline\">\n" +
4164 " <form ng-submit=\"application.regenerateAPIKeys()\" name=\"application.regenerateAPIKeysForm\" class=\"form-inline\">\n" +
3784 " <data-form-errors errors=\"application.regenerateAPIKeysForm.ae_validation.password\"></data-form-errors>\n" +
4165 " <data-form-errors errors=\"application.regenerateAPIKeysForm.ae_validation.password\"></data-form-errors>\n" +
3785 " <div class=\"form-group\">\n" +
4166 " <div class=\"form-group\">\n" +
3786 " <input type=\"password\" name=\"confirm\"\n" +
4167 " <input type=\"password\" name=\"confirm\"\n" +
3787 " placeholder=\"Enter your password to proceed\" class=\"form-control\" ng-model=\"application.regenerateAPIKeysPassword\">\n" +
4168 " placeholder=\"Enter your password to proceed\" class=\"form-control\" ng-model=\"application.regenerateAPIKeysPassword\">\n" +
3788 " <input type=\"submit\" class=\"btn btn-danger\" value=\"Confirm\">\n" +
4169 " <input type=\"submit\" class=\"btn btn-danger\" value=\"Confirm\">\n" +
3789 " </div>\n" +
4170 " </div>\n" +
3790 " </form>\n" +
4171 " </form>\n" +
3791 " </uib-tab>\n" +
4172 " </uib-tab>\n" +
3792 " </uib-tabset>\n" +
4173 " </uib-tabset>\n" +
3793 " </div>\n" +
4174 " </div>\n" +
3794 " <div class=\"col-sm-6 text-center\">\n" +
4175 " <div class=\"col-sm-6 text-center\">\n" +
3795 " <h2 class=\"m-t-0\">How to connect your application?</h2>\n" +
4176 " <h2 class=\"m-t-0\">How to connect your application?</h2>\n" +
3796 " <p>Visit our <a href=\"{{AeConfig.urls.docs}}\"><strong>developer documentation</strong></a> for step-by-step integration instructions.</p>\n" +
4177 " <p>Visit our <a href=\"{{AeConfig.urls.docs}}\"><strong>developer documentation</strong></a> for step-by-step integration instructions.</p>\n" +
3797 " <div class=\"clearfix\"></div>\n" +
4178 " <div class=\"clearfix\"></div>\n" +
3798 " <p class=\"text-center\">\n" +
4179 " <p class=\"text-center\">\n" +
3799 " <a href=\"{{AeConfig.urls.docs}}\"><img src=\"/static/appenlight/images/logos/django_small.png\" alt=\"Django Logo\">\n" +
4180 " <a href=\"{{AeConfig.urls.docs}}\"><img src=\"/static/appenlight/images/logos/django_small.png\" alt=\"Django Logo\">\n" +
3800 " <img src=\"/static/appenlight/images/logos/pyramid_small.png\" alt=\"Pyramid Logo\">\n" +
4181 " <img src=\"/static/appenlight/images/logos/pyramid_small.png\" alt=\"Pyramid Logo\">\n" +
3801 " <img src=\"/static/appenlight/images/logos/flask_small.png\" alt=\"Flask Logo\"></a>\n" +
4182 " <img src=\"/static/appenlight/images/logos/flask_small.png\" alt=\"Flask Logo\"></a>\n" +
3802 "\n" +
4183 "\n" +
3803 " <a href=\"{{AeConfig.urls.docs}}\"><img src=\"/static/appenlight/images/logos/js_small.png\" alt=\"Javascript Logo\">\n" +
4184 " <a href=\"{{AeConfig.urls.docs}}\"><img src=\"/static/appenlight/images/logos/js_small.png\" alt=\"Javascript Logo\">\n" +
3804 " <img src=\"/static/appenlight/images/logos/nodejs.png\" alt=\"Node.js\"></a>\n" +
4185 " <img src=\"/static/appenlight/images/logos/nodejs.png\" alt=\"Node.js\"></a>\n" +
3805 " <img src=\"/static/appenlight/images/logos/ruby_small.png\" alt=\"Ruby Logo\">\n" +
4186 " <img src=\"/static/appenlight/images/logos/ruby_small.png\" alt=\"Ruby Logo\">\n" +
3806 " <img src=\"/static/appenlight/images/logos/php_small.png\" alt=\"PHP Logo\">\n" +
4187 " <img src=\"/static/appenlight/images/logos/php_small.png\" alt=\"PHP Logo\">\n" +
3807 " </a>\n" +
4188 " </a>\n" +
3808 "\n" +
4189 "\n" +
3809 " </p>\n" +
4190 " </p>\n" +
3810 " </div>\n" +
4191 " </div>\n" +
3811 " </div>\n" +
4192 " </div>\n" +
3812 "\n" +
4193 "\n" +
3813 " <hr ng-show=\"application.resource.resource_id\">\n" +
4194 " <hr ng-show=\"application.resource.resource_id\">\n" +
3814 "\n" +
4195 "\n" +
3815 " <form method=\"post\" class=\"form-horizontal\" name=\"application.BasicForm\" ng-submit=\"application.updateBasicForm()\" novalidate>\n" +
4196 " <form method=\"post\" class=\"form-horizontal\" name=\"application.BasicForm\" ng-submit=\"application.updateBasicForm()\" novalidate>\n" +
3816 " <div class=\"form-group\">\n" +
4197 " <div class=\"form-group\">\n" +
3817 " <data-form-errors errors=\"application.BasicForm.ae_validation.resource_name\"></data-form-errors>\n" +
4198 " <data-form-errors errors=\"application.BasicForm.ae_validation.resource_name\"></data-form-errors>\n" +
3818 " <label class=\"control-label col-sm-4 col-lg-3\">\n" +
4199 " <label class=\"control-label col-sm-4 col-lg-3\">\n" +
3819 " Application name\n" +
4200 " Application name\n" +
3820 " <span class=\"required\">*</span>\n" +
4201 " <span class=\"required\">*</span>\n" +
3821 " </label>\n" +
4202 " </label>\n" +
3822 "\n" +
4203 "\n" +
3823 " <div class=\" col-sm-8 col-lg-9 \">\n" +
4204 " <div class=\" col-sm-8 col-lg-9 \">\n" +
3824 " <input class=\"form-control\" name=\"resource_name\" placeholder=\"Application Name\" type=\"text\" ng-model=\"application.resource.resource_name\">\n" +
4205 " <input class=\"form-control\" name=\"resource_name\" placeholder=\"Application Name\" type=\"text\" ng-model=\"application.resource.resource_name\">\n" +
3825 " </div>\n" +
4206 " </div>\n" +
3826 "\n" +
4207 "\n" +
3827 "\n" +
4208 "\n" +
3828 " </div>\n" +
4209 " </div>\n" +
3829 "\n" +
4210 "\n" +
3830 " <div class=\"form-group\">\n" +
4211 " <div class=\"form-group\">\n" +
3831 " <data-form-errors errors=\"application.BasicForm.ae_validation.domains\"></data-form-errors>\n" +
4212 " <data-form-errors errors=\"application.BasicForm.ae_validation.domains\"></data-form-errors>\n" +
3832 " <label class=\"control-label col-sm-4 col-lg-3\">\n" +
4213 " <label class=\"control-label col-sm-4 col-lg-3\">\n" +
3833 " Domain names for CORS headers\n" +
4214 " Domain names for CORS headers\n" +
3834 " </label>\n" +
4215 " </label>\n" +
3835 " <div class=\" col-sm-8 col-lg-9 \">\n" +
4216 " <div class=\" col-sm-8 col-lg-9 \">\n" +
3836 " <textarea class=\"form-control\" name=\"domains\" ng-model=\"application.resource.domains\"></textarea>\n" +
4217 " <textarea class=\"form-control\" name=\"domains\" ng-model=\"application.resource.domains\"></textarea>\n" +
3837 " <p class=\"description\">Required for Javascript error tracking (one line one domain, skip http:// part)</p>\n" +
4218 " <p class=\"description\">Required for Javascript error tracking (one line one domain, skip http:// part)</p>\n" +
3838 " </div>\n" +
4219 " </div>\n" +
3839 "\n" +
4220 "\n" +
3840 "\n" +
4221 "\n" +
3841 " </div>\n" +
4222 " </div>\n" +
3842 " <div class=\"form-group\" ng-show=\"application.resource.resource_id\">\n" +
4223 " <div class=\"form-group\" ng-show=\"application.resource.resource_id\">\n" +
3843 " <data-form-errors errors=\"application.BasicForm.ae_validation.default_grouping\"></data-form-errors>\n" +
4224 " <data-form-errors errors=\"application.BasicForm.ae_validation.default_grouping\"></data-form-errors>\n" +
3844 " <label class=\"control-label col-sm-4 col-lg-3\">\n" +
4225 " <label class=\"control-label col-sm-4 col-lg-3\">\n" +
3845 " Default grouping for errors\n" +
4226 " Default grouping for errors\n" +
3846 " </label>\n" +
4227 " </label>\n" +
3847 " <div class=\" col-sm-8 col-lg-9 \">\n" +
4228 " <div class=\" col-sm-8 col-lg-9 \">\n" +
3848 " <select class=\"form-control\" name=\"default_grouping\" ng-model=\"application.resource.default_grouping\" ng-options=\"i[0] as i[1] for i in application.groupingOptions\"></select>\n" +
4229 " <select class=\"form-control\" name=\"default_grouping\" ng-model=\"application.resource.default_grouping\" ng-options=\"i[0] as i[1] for i in application.groupingOptions\"></select>\n" +
3849 " </div>\n" +
4230 " </div>\n" +
3850 "\n" +
4231 "\n" +
3851 " </div>\n" +
4232 " </div>\n" +
3852 " <div class=\"form-group\" ng-show=\"application.resource.resource_id\">\n" +
4233 " <div class=\"form-group\" ng-show=\"application.resource.resource_id\">\n" +
3853 " <data-form-errors errors=\"application.BasicForm.ae_validation.error_report_threshold\"></data-form-errors>\n" +
4234 " <data-form-errors errors=\"application.BasicForm.ae_validation.error_report_threshold\"></data-form-errors>\n" +
3854 " <label class=\"control-label col-sm-4 col-lg-3\">\n" +
4235 " <label class=\"control-label col-sm-4 col-lg-3\">\n" +
3855 " Alert on error reports\n" +
4236 " Alert on error reports\n" +
3856 " <span class=\"required\">*</span>\n" +
4237 " <span class=\"required\">*</span>\n" +
3857 " </label>\n" +
4238 " </label>\n" +
3858 " <div class=\" col-sm-8 col-lg-9 \">\n" +
4239 " <div class=\" col-sm-8 col-lg-9 \">\n" +
3859 " <input class=\"form-control\" name=\"error_report_threshold\" type=\"text\" ng-model=\"application.resource.error_report_threshold\">\n" +
4240 " <input class=\"form-control\" name=\"error_report_threshold\" type=\"text\" ng-model=\"application.resource.error_report_threshold\">\n" +
3860 " <p class=\"description\">Application requires to send at least this amount of error reports per minute to open alert</p>\n" +
4241 " <p class=\"description\">Application requires to send at least this amount of error reports per minute to open alert</p>\n" +
3861 " </div>\n" +
4242 " </div>\n" +
3862 " </div>\n" +
4243 " </div>\n" +
3863 " <div class=\"form-group\" ng-show=\"application.resource.resource_id\">\n" +
4244 " <div class=\"form-group\" ng-show=\"application.resource.resource_id\">\n" +
3864 " <data-form-errors errors=\"application.BasicForm.ae_validation.slow_report_threshold\"></data-form-errors>\n" +
4245 " <data-form-errors errors=\"application.BasicForm.ae_validation.slow_report_threshold\"></data-form-errors>\n" +
3865 " <label class=\"control-label col-sm-4 col-lg-3\">\n" +
4246 " <label class=\"control-label col-sm-4 col-lg-3\">\n" +
3866 " Alert on slow reports\n" +
4247 " Alert on slow reports\n" +
3867 " <span class=\"required\">*</span>\n" +
4248 " <span class=\"required\">*</span>\n" +
3868 " </label>\n" +
4249 " </label>\n" +
3869 "\n" +
4250 "\n" +
3870 " <div class=\" col-sm-8 col-lg-9 \">\n" +
4251 " <div class=\" col-sm-8 col-lg-9 \">\n" +
3871 " <input class=\"form-control\" name=\"slow_report_threshold\" type=\"text\" ng-model=\"application.resource.slow_report_threshold\">\n" +
4252 " <input class=\"form-control\" name=\"slow_report_threshold\" type=\"text\" ng-model=\"application.resource.slow_report_threshold\">\n" +
3872 " <p class=\"description\">Application requires to send at least this amount of slow reports per minute to open alert</p>\n" +
4253 " <p class=\"description\">Application requires to send at least this amount of slow reports per minute to open alert</p>\n" +
3873 " </div>\n" +
4254 " </div>\n" +
3874 " </div>\n" +
4255 " </div>\n" +
3875 " <div class=\"form-group\" ng-show=\"application.resource.resource_id\">\n" +
4256 " <div class=\"form-group\" ng-show=\"application.resource.resource_id\">\n" +
3876 " <data-form-errors errors=\"application.BasicForm.ae_validation.allow_permanent_storage\"></data-form-errors>\n" +
4257 " <data-form-errors errors=\"application.BasicForm.ae_validation.allow_permanent_storage\"></data-form-errors>\n" +
3877 " <label class=\"control-label col-sm-4 col-lg-3\">\n" +
4258 " <label class=\"control-label col-sm-4 col-lg-3\">\n" +
3878 " Permanent logs\n" +
4259 " Permanent logs\n" +
3879 " </label>\n" +
4260 " </label>\n" +
3880 " <div class=\" col-sm-8 col-lg-9\">\n" +
4261 " <div class=\" col-sm-8 col-lg-9\">\n" +
3881 " <input class=\"form-control\" name=\"allow_permanent_storage\" type=\"checkbox\" ng-model=\"application.resource.allow_permanent_storage\">\n" +
4262 " <input class=\"form-control\" name=\"allow_permanent_storage\" type=\"checkbox\" ng-model=\"application.resource.allow_permanent_storage\">\n" +
3882 " <p class=\"description\">Allow permanent storage of logs in separate DB partitions (only administrator can enable this feature)</p>\n" +
4263 " <p class=\"description\">Allow permanent storage of logs in separate DB partitions (only administrator can enable this feature)</p>\n" +
3883 " </div>\n" +
4264 " </div>\n" +
3884 " </div>\n" +
4265 " </div>\n" +
3885 " <div class=\"form-group\">\n" +
4266 " <div class=\"form-group\">\n" +
3886 " <label class=\"control-label col-sm-4 col-lg-3\">\n" +
4267 " <label class=\"control-label col-sm-4 col-lg-3\">\n" +
3887 "\n" +
4268 "\n" +
3888 " </label>\n" +
4269 " </label>\n" +
3889 "\n" +
4270 "\n" +
3890 " <div class=\" col-sm-8 col-lg-9 \">\n" +
4271 " <div class=\" col-sm-8 col-lg-9 \">\n" +
3891 " <input class=\"form-control btn btn-primary\" name=\"submit\" type=\"submit\" value=\"{{application.resource.resource_id? 'Update' : 'Create'}} Application\">\n" +
4272 " <input class=\"form-control btn btn-primary\" name=\"submit\" type=\"submit\" value=\"{{application.resource.resource_id? 'Update' : 'Create'}} Application\">\n" +
3892 " </div>\n" +
4273 " </div>\n" +
3893 " </div>\n" +
4274 " </div>\n" +
3894 " </form>\n" +
4275 " </form>\n" +
3895 " </div>\n" +
4276 " </div>\n" +
3896 " </div>\n" +
4277 " </div>\n" +
3897 "\n" +
4278 "\n" +
3898 " <div class=\"panel panel-default\" ng-show=\"application.resource.resource_id\">\n" +
4279 " <div class=\"panel panel-default\" ng-show=\"application.resource.resource_id\">\n" +
3899 " <div class=\"panel-heading\">\n" +
4280 " <div class=\"panel-heading\">\n" +
3900 " <h3 class=\"panel-title\">Plugins</h3>\n" +
4281 " <h3 class=\"panel-title\">Plugins</h3>\n" +
3901 " </div>\n" +
4282 " </div>\n" +
3902 " <div class=\"panel-body\">\n" +
4283 " <div class=\"panel-body\">\n" +
3903 "\n" +
4284 "\n" +
3904 " <plugin-config resource=\"application.resource\"\n" +
4285 " <plugin-config resource=\"application.resource\"\n" +
3905 " section=\"'application.update'\"\n" +
4286 " section=\"'application.update'\"\n" +
3906 " ng-if=\"application.resource.resource_id\">\n" +
4287 " ng-if=\"application.resource.resource_id\">\n" +
3907 " </plugin-config>\n" +
4288 " </plugin-config>\n" +
3908 "\n" +
4289 "\n" +
3909 " </div>\n" +
4290 " </div>\n" +
3910 " </div>\n" +
4291 " </div>\n" +
3911 "\n" +
4292 "\n" +
3912 " <div class=\"panel panel-default m-t-1\" ng-show=\"application.resource.resource_id\">\n" +
4293 " <div class=\"panel panel-default m-t-1\" ng-show=\"application.resource.resource_id\">\n" +
3913 " <div class=\"panel-heading\">\n" +
4294 " <div class=\"panel-heading\">\n" +
3914 " <h3 class=\"panel-title\">API Testing</h3>\n" +
4295 " <h3 class=\"panel-title\">API Testing</h3>\n" +
3915 " </div>\n" +
4296 " </div>\n" +
3916 " <div class=\"panel-body\">\n" +
4297 " <div class=\"panel-body\">\n" +
3917 " <p>Please be sure to add at least one <a data-ui-sref=\"user.alert_channels.email\"><strong>email alert channel</strong></a> for your account.</p>\n" +
4298 " <p>Please be sure to add at least one <a data-ui-sref=\"user.alert_channels.email\"><strong>email alert channel</strong></a> for your account.</p>\n" +
3918 " <p>This will enable AppEnlight to send you notification emails about errors inside your application.</p>\n" +
4299 " <p>This will enable AppEnlight to send you notification emails about errors inside your application.</p>\n" +
3919 " <p><strong>After this is done you can use this CURL commands to test APIs:</strong></p>\n" +
4300 " <p><strong>After this is done you can use this CURL commands to test APIs:</strong></p>\n" +
3920 " <p>(Please note that the data like execution times is semi randomly generated)</p>\n" +
4301 " <p>(Please note that the data like execution times is semi randomly generated)</p>\n" +
3921 " <uib-tabset>\n" +
4302 " <uib-tabset>\n" +
3922 " <uib-tab>\n" +
4303 " <uib-tab>\n" +
3923 " <uib-tab-heading>\n" +
4304 " <uib-tab-heading>\n" +
3924 " Log API\n" +
4305 " Log API\n" +
3925 " </uib-tab-heading>\n" +
4306 " </uib-tab-heading>\n" +
3926 "\n" +
4307 "\n" +
3927 " <div class=\"codehilite\">\n" +
4308 " <div class=\"codehilite\">\n" +
3928 " <pre class=\"m-a-0\">\n" +
4309 " <pre class=\"m-a-0\">\n" +
3929 "curl -H \"Content-Type: application/json\" -k {{AeConfig.urls.baseUrl}}api/logs?protocol_version=0.5\\&ampapi_key={{application.resource.api_key}} -d '\n" +
4310 "curl -H \"Content-Type: application/json\" -k {{AeConfig.urls.baseUrl}}api/logs?protocol_version=0.5\\&ampapi_key={{application.resource.api_key}} -d '\n" +
3930 " [\n" +
4311 " [\n" +
3931 " {\n" +
4312 " {\n" +
3932 " \"log_level\": \"WARNING\",\n" +
4313 " \"log_level\": \"WARNING\",\n" +
3933 " \"message\": \"OMG ValueError happened\",\n" +
4314 " \"message\": \"OMG ValueError happened\",\n" +
3934 " \"namespace\": \"some.namespace.indicator\",\n" +
4315 " \"namespace\": \"some.namespace.indicator\",\n" +
3935 " \"request_id\": \"SOME_UUID\",\n" +
4316 " \"request_id\": \"SOME_UUID\",\n" +
3936 " \"permanent\": false,\n" +
4317 " \"permanent\": false,\n" +
3937 " \"primary_key\": \"random_key\",\n" +
4318 " \"primary_key\": \"random_key\",\n" +
3938 " \"server\": \"some.server.hostname\",\n" +
4319 " \"server\": \"some.server.hostname\",\n" +
3939 " \"date\": \"{{application.momentJs.utc().milliseconds(0).toISOString()}}\",\n" +
4320 " \"date\": \"{{application.momentJs.utc().milliseconds(0).toISOString()}}\",\n" +
3940 " \"tags\": [[\"tag1\",\"value\"], [\"tag2\", 5]]\n" +
4321 " \"tags\": [[\"tag1\",\"value\"], [\"tag2\", 5]]\n" +
3941 " },\n" +
4322 " },\n" +
3942 " {\n" +
4323 " {\n" +
3943 " \"log_level\": \"ERROR\",\n" +
4324 " \"log_level\": \"ERROR\",\n" +
3944 " \"message\": \"OMG ValueError happened2\",\n" +
4325 " \"message\": \"OMG ValueError happened2\",\n" +
3945 " \"namespace\": \"some.namespace.indicator\",\n" +
4326 " \"namespace\": \"some.namespace.indicator\",\n" +
3946 " \"request_id\": \"SOME_UUID\",\n" +
4327 " \"request_id\": \"SOME_UUID\",\n" +
3947 " \"permanent\": false,\n" +
4328 " \"permanent\": false,\n" +
3948 " \"server\": \"some.server.hostname\",\n" +
4329 " \"server\": \"some.server.hostname\",\n" +
3949 " \"date\": \"{{application.momentJs.utc().milliseconds(0).toISOString()}}\"\n" +
4330 " \"date\": \"{{application.momentJs.utc().milliseconds(0).toISOString()}}\"\n" +
3950 " }\n" +
4331 " }\n" +
3951 " ]'\n" +
4332 " ]'\n" +
3952 " </pre>\n" +
4333 " </pre>\n" +
3953 " </div>\n" +
4334 " </div>\n" +
3954 "\n" +
4335 "\n" +
3955 " </uib-tab>\n" +
4336 " </uib-tab>\n" +
3956 "\n" +
4337 "\n" +
3957 " <uib-tab>\n" +
4338 " <uib-tab>\n" +
3958 " <uib-tab-heading>\n" +
4339 " <uib-tab-heading>\n" +
3959 " Report API\n" +
4340 " Report API\n" +
3960 " </uib-tab-heading>\n" +
4341 " </uib-tab-heading>\n" +
3961 "\n" +
4342 "\n" +
3962 " <div class=\"codehilite\">\n" +
4343 " <div class=\"codehilite\">\n" +
3963 " <pre class=\"m-a-0\">\n" +
4344 " <pre class=\"m-a-0\">\n" +
3964 "curl -H \"Content-Type: application/json\" -k {{AeConfig.urls.baseUrl}}api/reports?protocol_version=0.5\\&ampapi_key={{application.resource.api_key}} -d '\n" +
4345 "curl -H \"Content-Type: application/json\" -k {{AeConfig.urls.baseUrl}}api/reports?protocol_version=0.5\\&ampapi_key={{application.resource.api_key}} -d '\n" +
3965 " [{\n" +
4346 " [{\n" +
3966 " \"client\": \"your-client-name-python\",\n" +
4347 " \"client\": \"your-client-name-python\",\n" +
3967 " \"language\": \"python\",\n" +
4348 " \"language\": \"python\",\n" +
3968 " \"view_name\": \"views/foo:bar\",\n" +
4349 " \"view_name\": \"views/foo:bar\",\n" +
3969 " \"server\": \"SERVERNAME/INSTANCENAME\",\n" +
4350 " \"server\": \"SERVERNAME/INSTANCENAME\",\n" +
3970 " \"priority\": 5,\n" +
4351 " \"priority\": 5,\n" +
3971 " \"error\": \"OMG ValueError happened\",\n" +
4352 " \"error\": \"OMG ValueError happened\",\n" +
3972 " \"occurences\":1,\n" +
4353 " \"occurences\":1,\n" +
3973 " \"http_status\": 500,\n" +
4354 " \"http_status\": 500,\n" +
3974 " \"tags\": [[\"tag1\",\"value\"], [\"tag2\", 5]],\n" +
4355 " \"tags\": [[\"tag1\",\"value\"], [\"tag2\", 5]],\n" +
3975 " \"username\": \"USER\",\n" +
4356 " \"username\": \"USER\",\n" +
3976 " \"url\": \"HTTP://SOMEURL\",\n" +
4357 " \"url\": \"HTTP://SOMEURL\",\n" +
3977 " \"ip\": \"127.0.0.1\",\n" +
4358 " \"ip\": \"127.0.0.1\",\n" +
3978 " \"start_time\": \"{{application.momentJs.utc().milliseconds(0).toISOString()}}\",\n" +
4359 " \"start_time\": \"{{application.momentJs.utc().milliseconds(0).toISOString()}}\",\n" +
3979 " \"end_time\": \"{{application.momentJs.utc().milliseconds(0).add(2, 'seconds').toISOString()}}\",\n" +
4360 " \"end_time\": \"{{application.momentJs.utc().milliseconds(0).add(2, 'seconds').toISOString()}}\",\n" +
3980 " \"user_agent\": \"BROWSER_AGENT\",\n" +
4361 " \"user_agent\": \"BROWSER_AGENT\",\n" +
3981 " \"extra\": [[\"message\",\"CUSTOM MESSAGE\"], [\"custom_value\", \"some payload\"]],\n" +
4362 " \"extra\": [[\"message\",\"CUSTOM MESSAGE\"], [\"custom_value\", \"some payload\"]],\n" +
3982 " \"request_id\": \"SOME_UUID\",\n" +
4363 " \"request_id\": \"SOME_UUID\",\n" +
3983 " \"request\": {\"REQUEST_METHOD\": \"GET\",\n" +
4364 " \"request\": {\"REQUEST_METHOD\": \"GET\",\n" +
3984 " \"PATH_INFO\": \"/FOO/BAR\",\n" +
4365 " \"PATH_INFO\": \"/FOO/BAR\",\n" +
3985 " \"POST\": {\"FOO\":\"BAZ\",\"XXX\":\"YYY\"}\n" +
4366 " \"POST\": {\"FOO\":\"BAZ\",\"XXX\":\"YYY\"}\n" +
3986 " },\n" +
4367 " },\n" +
3987 " \"slow_calls\":[{\n" +
4368 " \"slow_calls\":[{\n" +
3988 " \"start\": \"{{application.momentJs.utc().milliseconds(0).toISOString()}}\",\n" +
4369 " \"start\": \"{{application.momentJs.utc().milliseconds(0).toISOString()}}\",\n" +
3989 " \"end\": \"{{application.momentJs.utc().milliseconds(0).add(1, 'seconds').toISOString()}}\",\n" +
4370 " \"end\": \"{{application.momentJs.utc().milliseconds(0).add(1, 'seconds').toISOString()}}\",\n" +
3990 " \"type\": \"sql\",\n" +
4371 " \"type\": \"sql\",\n" +
3991 " \"subtype\": \"postgresql\",\n" +
4372 " \"subtype\": \"postgresql\",\n" +
3992 " \"parameters\": [\"QPARAM1\",\"QPARAM2\",\"QPARAMX\"],\n" +
4373 " \"parameters\": [\"QPARAM1\",\"QPARAM2\",\"QPARAMX\"],\n" +
3993 " \"statement\": \"QUERY\"\n" +
4374 " \"statement\": \"QUERY\"\n" +
3994 " }],\n" +
4375 " }],\n" +
3995 " \"request_stats\": {\n" +
4376 " \"request_stats\": {\n" +
3996 " \"main\": 2.50779,\n" +
4377 " \"main\": 2.50779,\n" +
3997 " \"nosql\": 0.01008,\n" +
4378 " \"nosql\": 0.01008,\n" +
3998 " \"nosql_calls\": 17.0,\n" +
4379 " \"nosql_calls\": 17.0,\n" +
3999 " \"remote\": 0.0,\n" +
4380 " \"remote\": 0.0,\n" +
4000 " \"remote_calls\": 0.0,\n" +
4381 " \"remote_calls\": 0.0,\n" +
4001 " \"sql\": 1,\n" +
4382 " \"sql\": 1,\n" +
4002 " \"sql_calls\": 1.0,\n" +
4383 " \"sql_calls\": 1.0,\n" +
4003 " \"tmpl\": 0.0,\n" +
4384 " \"tmpl\": 0.0,\n" +
4004 " \"tmpl_calls\": 0.0,\n" +
4385 " \"tmpl_calls\": 0.0,\n" +
4005 " \"custom\": 0.0,\n" +
4386 " \"custom\": 0.0,\n" +
4006 " \"custom_calls\": 0.0\n" +
4387 " \"custom_calls\": 0.0\n" +
4007 " },\n" +
4388 " },\n" +
4008 " \"traceback\": [\n" +
4389 " \"traceback\": [\n" +
4009 " {\"cline\": \"return foo_bar_baz(1,2,3)\",\n" +
4390 " {\"cline\": \"return foo_bar_baz(1,2,3)\",\n" +
4010 " \"file\": \"somedir/somefile.py\",\n" +
4391 " \"file\": \"somedir/somefile.py\",\n" +
4011 " \"fn\": \"somefunction\",\n" +
4392 " \"fn\": \"somefunction\",\n" +
4012 " \"line\": 454,\n" +
4393 " \"line\": 454,\n" +
4013 " \"vars\": [[\"a_list\",\n" +
4394 " \"vars\": [[\"a_list\",\n" +
4014 " [\"1\",2,\"4\",\"5\",6]],\n" +
4395 " [\"1\",2,\"4\",\"5\",6]],\n" +
4015 " [\"b\", {\"1\": \"2\", \"ccc\": \"ddd\", \"1\": \"a\"}],\n" +
4396 " [\"b\", {\"1\": \"2\", \"ccc\": \"ddd\", \"1\": \"a\"}],\n" +
4016 " [\"obj\", \"object object at 0x7f0030853dc0\"]]\n" +
4397 " [\"obj\", \"object object at 0x7f0030853dc0\"]]\n" +
4017 " },\n" +
4398 " },\n" +
4018 " {\"cline\": \"OMG ValueError happened\",\n" +
4399 " {\"cline\": \"OMG ValueError happened\",\n" +
4019 " \"file\": \"\",\n" +
4400 " \"file\": \"\",\n" +
4020 " \"fn\": \"\",\n" +
4401 " \"fn\": \"\",\n" +
4021 " \"line\": \"\",\n" +
4402 " \"line\": \"\",\n" +
4022 " \"vars\": []}\n" +
4403 " \"vars\": []}\n" +
4023 " ]\n" +
4404 " ]\n" +
4024 " }]'\n" +
4405 " }]'\n" +
4025 " </pre>\n" +
4406 " </pre>\n" +
4026 " </div>\n" +
4407 " </div>\n" +
4027 "\n" +
4408 "\n" +
4028 " </uib-tab>\n" +
4409 " </uib-tab>\n" +
4029 "\n" +
4410 "\n" +
4030 " <uib-tab>\n" +
4411 " <uib-tab>\n" +
4031 "\n" +
4412 "\n" +
4032 " <uib-tab-heading>\n" +
4413 " <uib-tab-heading>\n" +
4033 " Metrics API\n" +
4414 " Metrics API\n" +
4034 " </uib-tab-heading>\n" +
4415 " </uib-tab-heading>\n" +
4035 "\n" +
4416 "\n" +
4036 " <div class=\"codehilite\">\n" +
4417 " <div class=\"codehilite\">\n" +
4037 " <pre class=\"m-a-0\">\n" +
4418 " <pre class=\"m-a-0\">\n" +
4038 "curl -H \"Content-Type: application/json\" -k {{AeConfig.urls.baseUrl}}api/general_metrics?protocol_version=0.5\\&ampapi_key={{application.resource.api_key}} -d '\n" +
4419 "curl -H \"Content-Type: application/json\" -k {{AeConfig.urls.baseUrl}}api/general_metrics?protocol_version=0.5\\&ampapi_key={{application.resource.api_key}} -d '\n" +
4039 " [{\n" +
4420 " [{\n" +
4040 " \"namespace\": \"some.monitor\",\n" +
4421 " \"namespace\": \"some.monitor\",\n" +
4041 " \"timestamp\": \"{{application.momentJs.utc().milliseconds(0).toISOString()}}\",\n" +
4422 " \"timestamp\": \"{{application.momentJs.utc().milliseconds(0).toISOString()}}\",\n" +
4042 " \"server_name\": \"server.name\",\n" +
4423 " \"server_name\": \"server.name\",\n" +
4043 " \"tags\": [[\"value1\", 15.7], [\"value2\", 26]]}]'\n" +
4424 " \"tags\": [[\"value1\", 15.7], [\"value2\", 26]]}]'\n" +
4044 " </pre>\n" +
4425 " </pre>\n" +
4045 " </div>\n" +
4426 " </div>\n" +
4046 "\n" +
4427 "\n" +
4047 " </uib-tab>\n" +
4428 " </uib-tab>\n" +
4048 "\n" +
4429 "\n" +
4049 " <uib-tab>\n" +
4430 " <uib-tab>\n" +
4050 "\n" +
4431 "\n" +
4051 " <uib-tab-heading>\n" +
4432 " <uib-tab-heading>\n" +
4052 " Request Stats API\n" +
4433 " Request Stats API\n" +
4053 " </uib-tab-heading>\n" +
4434 " </uib-tab-heading>\n" +
4054 "\n" +
4435 "\n" +
4055 " <div class=\"codehilite\">\n" +
4436 " <div class=\"codehilite\">\n" +
4056 " <pre class=\"m-a-0\">\n" +
4437 " <pre class=\"m-a-0\">\n" +
4057 "curl -H \"Content-Type: application/json\" -k {{AeConfig.urls.baseUrl}}api/request_stats?protocol_version=0.5\\&ampapi_key={{application.resource.api_key}} -d '\n" +
4438 "curl -H \"Content-Type: application/json\" -k {{AeConfig.urls.baseUrl}}api/request_stats?protocol_version=0.5\\&ampapi_key={{application.resource.api_key}} -d '\n" +
4058 " [{\"server\": \"some.server.hostname\",\n" +
4439 " [{\"server\": \"some.server.hostname\",\n" +
4059 " \"timestamp\": \"{{application.momentJs.utc().milliseconds(0).toISOString()}}\",\n" +
4440 " \"timestamp\": \"{{application.momentJs.utc().milliseconds(0).toISOString()}}\",\n" +
4060 " \"metrics\": [[\"dir/module:func\",\n" +
4441 " \"metrics\": [[\"dir/module:func\",\n" +
4061 " {\"custom\": 0.0,\n" +
4442 " {\"custom\": 0.0,\n" +
4062 " \"custom_calls\": 0,\n" +
4443 " \"custom_calls\": 0,\n" +
4063 " \"main\": 0.01664,\n" +
4444 " \"main\": 0.01664,\n" +
4064 " \"nosql\": 0.00061,\n" +
4445 " \"nosql\": 0.00061,\n" +
4065 " \"nosql_calls\": 23,\n" +
4446 " \"nosql_calls\": 23,\n" +
4066 " \"remote\": 0.0,\n" +
4447 " \"remote\": 0.0,\n" +
4067 " \"remote_calls\": 0,\n" +
4448 " \"remote_calls\": 0,\n" +
4068 " \"requests\": 1,\n" +
4449 " \"requests\": 1,\n" +
4069 " \"sql\": 0.00105,\n" +
4450 " \"sql\": 0.00105,\n" +
4070 " \"sql_calls\": 2,\n" +
4451 " \"sql_calls\": 2,\n" +
4071 " \"tmpl\": 0.0,\n" +
4452 " \"tmpl\": 0.0,\n" +
4072 " \"tmpl_calls\": 0}],\n" +
4453 " \"tmpl_calls\": 0}],\n" +
4073 " [\"SomeView.function\",\n" +
4454 " [\"SomeView.function\",\n" +
4074 " {\"custom\": 0.0,\n" +
4455 " {\"custom\": 0.0,\n" +
4075 " \"custom_calls\": 0,\n" +
4456 " \"custom_calls\": 0,\n" +
4076 " \"main\": 0.647261,\n" +
4457 " \"main\": 0.647261,\n" +
4077 " \"nosql\": 0.306554,\n" +
4458 " \"nosql\": 0.306554,\n" +
4078 " \"nosql_calls\": 140,\n" +
4459 " \"nosql_calls\": 140,\n" +
4079 " \"remote\": 0.0,\n" +
4460 " \"remote\": 0.0,\n" +
4080 " \"remote_calls\": 0,\n" +
4461 " \"remote_calls\": 0,\n" +
4081 " \"requests\": 28,\n" +
4462 " \"requests\": 28,\n" +
4082 " \"sql\": 0.0,\n" +
4463 " \"sql\": 0.0,\n" +
4083 " \"sql_calls\": 0,\n" +
4464 " \"sql_calls\": 0,\n" +
4084 " \"tmpl\": 0.0,\n" +
4465 " \"tmpl\": 0.0,\n" +
4085 " \"tmpl_calls\": 0}]]\n" +
4466 " \"tmpl_calls\": 0}]]\n" +
4086 " }]'\n" +
4467 " }]'\n" +
4087 " </pre>\n" +
4468 " </pre>\n" +
4088 " </div>\n" +
4469 " </div>\n" +
4089 "\n" +
4470 "\n" +
4090 " </uib-tab>\n" +
4471 " </uib-tab>\n" +
4091 "\n" +
4472 "\n" +
4092 " </uib-tabset>\n" +
4473 " </uib-tabset>\n" +
4093 "\n" +
4474 "\n" +
4094 " </div>\n" +
4475 " </div>\n" +
4095 " </div>\n" +
4476 " </div>\n" +
4096 "\n" +
4477 "\n" +
4097 " <permissions-form resource=\"application.resource\" current-permissions=\"application.resource.current_permissions\"\n" +
4478 " <permissions-form resource=\"application.resource\" current-permissions=\"application.resource.current_permissions\"\n" +
4098 " possible-permissions=\"application.resource.possible_permissions\" ng-if=\"application.resource.resource_id\"></permissions-form>\n" +
4479 " possible-permissions=\"application.resource.possible_permissions\" ng-if=\"application.resource.resource_id\"></permissions-form>\n" +
4099 "\n" +
4480 "\n" +
4100 " <div class=\"panel panel-info\" ng-show=\"application.resource.resource_id\">\n" +
4481 " <div class=\"panel panel-info\" ng-show=\"application.resource.resource_id\">\n" +
4101 " <div class=\"panel-heading\">\n" +
4482 " <div class=\"panel-heading\">\n" +
4102 " <h3 class=\"panel-title\">Postprocessing</h3>\n" +
4483 " <h3 class=\"panel-title\">Postprocessing</h3>\n" +
4103 " </div>\n" +
4484 " </div>\n" +
4104 " <div class=\"panel-body\">\n" +
4485 " <div class=\"panel-body\">\n" +
4105 " <p>This section allows you influence the rating of report groups - if rule is matched once its not executed anymore</p>\n" +
4486 " <p>This section allows you influence the rating of report groups - if rule is matched once its not executed anymore</p>\n" +
4106 "\n" +
4487 "\n" +
4107 " <p>\n" +
4488 " <p>\n" +
4108 " <a class=\"btn btn-info\" ng-click=\"application.addRule()\"><span class=\"fa fa-plus-circle\"></span> Add rule</a>\n" +
4489 " <a class=\"btn btn-info\" ng-click=\"application.addRule()\"><span class=\"fa fa-plus-circle\"></span> Add rule</a>\n" +
4109 " </p>\n" +
4490 " </p>\n" +
4110 "\n" +
4491 "\n" +
4111 " <post-process-action action=\"action\" resource=\"application.resource\" ng-repeat=\"action in application.resource.postprocessing_rules\"></post-process-action>\n" +
4492 " <post-process-action action=\"action\" resource=\"application.resource\" ng-repeat=\"action in application.resource.postprocessing_rules\"></post-process-action>\n" +
4112 " </div>\n" +
4493 " </div>\n" +
4113 " </div>\n" +
4494 " </div>\n" +
4114 "\n" +
4495 "\n" +
4115 " <div class=\"panel panel-danger\" ng-show=\"application.resource.resource_id\">\n" +
4496 " <div class=\"panel panel-danger\" ng-show=\"application.resource.resource_id\">\n" +
4116 " <div class=\"panel-heading\">\n" +
4497 " <div class=\"panel-heading\">\n" +
4117 " <h3 class=\"panel-title\">Administration</h3>\n" +
4498 " <h3 class=\"panel-title\">Administration</h3>\n" +
4118 " </div>\n" +
4499 " </div>\n" +
4119 " <div class=\"panel-body\">\n" +
4500 " <div class=\"panel-body\">\n" +
4120 " <h2>Transfer ownership</h2>\n" +
4501 " <h2>Transfer ownership</h2>\n" +
4121 " <p>Please note that by transfering ownership you WILL lose access to the application data and new owner needs to give you access permission</p>\n" +
4502 " <p>Please note that by transfering ownership you WILL lose access to the application data and new owner needs to give you access permission</p>\n" +
4122 " <div class=\"confirmation_form\" ng-submit=\"application.transferApplication()\">\n" +
4503 " <div class=\"confirmation_form\" ng-submit=\"application.transferApplication()\">\n" +
4123 " <form class=\"form-horizontal\" name=\"application.formTransfer\">\n" +
4504 " <form class=\"form-horizontal\" name=\"application.formTransfer\">\n" +
4124 " <div class=\"form-group\">\n" +
4505 " <div class=\"form-group\">\n" +
4125 " <data-form-errors errors=\"application.formTransfer.ae_validation.password\"></data-form-errors>\n" +
4506 " <data-form-errors errors=\"application.formTransfer.ae_validation.password\"></data-form-errors>\n" +
4126 " <label class=\"control-label col-sm-4 col-lg-3\">\n" +
4507 " <label class=\"control-label col-sm-4 col-lg-3\">\n" +
4127 " Password\n" +
4508 " Password\n" +
4128 " </label>\n" +
4509 " </label>\n" +
4129 " <div class=\"col-sm-8 col-lg-9\">\n" +
4510 " <div class=\"col-sm-8 col-lg-9\">\n" +
4130 " <input class=\"form-control\" name=\"password\" type=\"password\" ng-model=\"application.formTransferModel.password\">\n" +
4511 " <input class=\"form-control\" name=\"password\" type=\"password\" ng-model=\"application.formTransferModel.password\">\n" +
4131 " </div>\n" +
4512 " </div>\n" +
4132 " </div>\n" +
4513 " </div>\n" +
4133 " <div class=\"form-group\">\n" +
4514 " <div class=\"form-group\">\n" +
4134 " <data-form-errors errors=\"application.formTransfer.ae_validation.user_name\"></data-form-errors>\n" +
4515 " <data-form-errors errors=\"application.formTransfer.ae_validation.user_name\"></data-form-errors>\n" +
4135 " <label class=\"control-label col-sm-4 col-lg-3\">\n" +
4516 " <label class=\"control-label col-sm-4 col-lg-3\">\n" +
4136 " New owners username\n" +
4517 " New owners username\n" +
4137 " </label>\n" +
4518 " </label>\n" +
4138 " <div class=\"col-sm-8 col-lg-9\">\n" +
4519 " <div class=\"col-sm-8 col-lg-9\">\n" +
4139 " <input class=\"form-control\" name=\"user_name\" type=\"text\" ng-model=\"application.formTransferModel.user_name\">\n" +
4520 " <input class=\"form-control\" name=\"user_name\" type=\"text\" ng-model=\"application.formTransferModel.user_name\">\n" +
4140 " </div>\n" +
4521 " </div>\n" +
4141 " </div>\n" +
4522 " </div>\n" +
4142 " <div class=\"form-group\">\n" +
4523 " <div class=\"form-group\">\n" +
4143 " <label class=\"control-label col-sm-4 col-lg-3\">\n" +
4524 " <label class=\"control-label col-sm-4 col-lg-3\">\n" +
4144 " </label>\n" +
4525 " </label>\n" +
4145 " <div class=\"col-sm-8 col-lg-9\">\n" +
4526 " <div class=\"col-sm-8 col-lg-9\">\n" +
4146 " <button class=\"btn btn-danger\">\n" +
4527 " <button class=\"btn btn-danger\">\n" +
4147 " <span class=\"fa fa-user-plus\"></span>\n" +
4528 " <span class=\"fa fa-user-plus\"></span>\n" +
4148 " Transfer ownership of application\n" +
4529 " Transfer ownership of application\n" +
4149 " </button>\n" +
4530 " </button>\n" +
4150 " </div>\n" +
4531 " </div>\n" +
4151 " </div>\n" +
4532 " </div>\n" +
4152 " </form>\n" +
4533 " </form>\n" +
4153 " </div>\n" +
4534 " </div>\n" +
4154 "\n" +
4535 "\n" +
4155 " <hr/>\n" +
4536 " <hr/>\n" +
4156 "\n" +
4537 "\n" +
4157 " <h2>Remove application</h2>\n" +
4538 " <h2>Remove application</h2>\n" +
4158 " <p><strong>This operation will wipe out all data from database - there is no undo.</strong></p>\n" +
4539 " <p><strong>This operation will wipe out all data from database - there is no undo.</strong></p>\n" +
4159 "\n" +
4540 "\n" +
4160 " <div class=\"confirmation_form\">\n" +
4541 " <div class=\"confirmation_form\">\n" +
4161 " <form class=\"form-horizontal\" name=\"application.formDelete\" ng-submit=\"application.deleteApplication()\">\n" +
4542 " <form class=\"form-horizontal\" name=\"application.formDelete\" ng-submit=\"application.deleteApplication()\">\n" +
4162 " <div class=\"form-group\">\n" +
4543 " <div class=\"form-group\">\n" +
4163 " <data-form-errors errors=\"application.formDelete.ae_validation.password\"></data-form-errors>\n" +
4544 " <data-form-errors errors=\"application.formDelete.ae_validation.password\"></data-form-errors>\n" +
4164 " <label class=\"control-label col-sm-4 col-lg-3\">\n" +
4545 " <label class=\"control-label col-sm-4 col-lg-3\">\n" +
4165 " Password\n" +
4546 " Password\n" +
4166 " </label>\n" +
4547 " </label>\n" +
4167 " <div class=\"col-sm-8 col-lg-9\">\n" +
4548 " <div class=\"col-sm-8 col-lg-9\">\n" +
4168 " <input class=\"form-control\" name=\"password\" type=\"password\" ng-model=\"application.formDeleteModel.password\">\n" +
4549 " <input class=\"form-control\" name=\"password\" type=\"password\" ng-model=\"application.formDeleteModel.password\">\n" +
4169 " </div>\n" +
4550 " </div>\n" +
4170 " </div>\n" +
4551 " </div>\n" +
4171 " <div class=\"form-group\">\n" +
4552 " <div class=\"form-group\">\n" +
4172 " <label class=\"control-label col-sm-4 col-lg-3\">\n" +
4553 " <label class=\"control-label col-sm-4 col-lg-3\">\n" +
4173 "\n" +
4554 "\n" +
4174 " </label>\n" +
4555 " </label>\n" +
4175 " <div class=\"col-sm-8 col-lg-9\">\n" +
4556 " <div class=\"col-sm-8 col-lg-9\">\n" +
4176 " <button class=\"btn btn-danger\">\n" +
4557 " <button class=\"btn btn-danger\">\n" +
4177 " <span class=\"fa fa-trash-o\"></span>\n" +
4558 " <span class=\"fa fa-trash-o\"></span>\n" +
4178 " Delete my application\n" +
4559 " Delete my application\n" +
4179 " </button>\n" +
4560 " </button>\n" +
4180 " </div>\n" +
4561 " </div>\n" +
4181 " </div>\n" +
4562 " </div>\n" +
4182 " </form>\n" +
4563 " </form>\n" +
4183 " </div>\n" +
4564 " </div>\n" +
4184 " </div>\n" +
4565 " </div>\n" +
4185 " </div>\n" +
4566 " </div>\n" +
4186 "</div>\n"
4567 "</div>\n"
4187 );
4568 );
4188
4569
4189
4570
4190 $templateCache.put('templates/applications/breadcrumbs.html',
4571 $templateCache.put('templates/applications/breadcrumbs.html',
4191 "<ol class=\"breadcrumb\" ng-show=\"$state.includes('applications')\">\n" +
4572 "<ol class=\"breadcrumb\" ng-show=\"$state.includes('applications')\">\n" +
4192 " <li>Applications</li>\n" +
4573 " <li>Applications</li>\n" +
4193 " <li ng-show=\"$state.includes('applications.list')\" ng-class=\"{bold:$state.is('applications.list')}\">Owned applications</li>\n" +
4574 " <li ng-show=\"$state.includes('applications.list')\" ng-class=\"{bold:$state.is('applications.list')}\">Owned applications</li>\n" +
4194 " <li ng-show=\"$state.includes('applications.update')\" ng-class=\"{bold:$state.is('applications.update')}\">Modify application</li>\n" +
4575 " <li ng-show=\"$state.includes('applications.update')\" ng-class=\"{bold:$state.is('applications.update')}\">Modify application</li>\n" +
4195 " <li ng-show=\"$state.includes('applications.integrations')\" ng-class=\"{bold:$state.includes('applications.integrations')}\">Integrations</li>\n" +
4576 " <li ng-show=\"$state.includes('applications.integrations')\" ng-class=\"{bold:$state.includes('applications.integrations')}\">Integrations</li>\n" +
4196 " <li ng-show=\"$state.includes('applications.purge_logs')\" ng-class=\"{bold:$state.includes('applications.purge_logs')}\">Log Purging</li>\n" +
4577 " <li ng-show=\"$state.includes('applications.purge_logs')\" ng-class=\"{bold:$state.includes('applications.purge_logs')}\">Log Purging</li>\n" +
4197 "</ol>\n"
4578 "</ol>\n"
4198 );
4579 );
4199
4580
4200
4581
4201 $templateCache.put('templates/applications/integrations.html',
4582 $templateCache.put('templates/applications/integrations.html',
4202 "<ng-include src=\"'templates/loader.html'\" ng-if=\"integrations.loading.application && $state.is('applications.integrations')\"></ng-include>\n" +
4583 "<ng-include src=\"'templates/loader.html'\" ng-if=\"integrations.loading.application && $state.is('applications.integrations')\"></ng-include>\n" +
4203 "\n" +
4584 "\n" +
4204 "<ui-view>\n" +
4585 "<ui-view>\n" +
4205 " <div class=\"panel panel-default\" ng-show=\"!integrations.loading.application\">\n" +
4586 " <div class=\"panel panel-default\" ng-show=\"!integrations.loading.application\">\n" +
4206 " <div class=\"panel-heading\" ng-include=\"'templates/applications/breadcrumbs.html'\"></div>\n" +
4587 " <div class=\"panel-heading\" ng-include=\"'templates/applications/breadcrumbs.html'\"></div>\n" +
4207 " <div class=\"panel-body\">\n" +
4588 " <div class=\"panel-body\">\n" +
4208 "\n" +
4589 "\n" +
4209 " <a class=\"btn btn-default integration\"\n" +
4590 " <a class=\"btn btn-default integration\"\n" +
4210 " data-ui-sref=\"applications.integrations.edit({resourceId:integrations.resource.resource_id, integration:'bitbucket'})\">\n" +
4591 " data-ui-sref=\"applications.integrations.edit({resourceId:integrations.resource.resource_id, integration:'bitbucket'})\">\n" +
4211 " <span class=\"fa fa-fw fa-bitbucket fa-3x pull-left\"></span>\n" +
4592 " <span class=\"fa fa-fw fa-bitbucket fa-3x pull-left\"></span>\n" +
4212 " <strong>Bitbucket</strong>\n" +
4593 " <strong>Bitbucket</strong>\n" +
4213 "\n" +
4594 "\n" +
4214 " <p>Send issues and reports to Bitbucket</p>\n" +
4595 " <p>Send issues and reports to Bitbucket</p>\n" +
4215 " </a>\n" +
4596 " </a>\n" +
4216 "\n" +
4597 "\n" +
4217 " <a class=\"btn btn-default integration\"\n" +
4598 " <a class=\"btn btn-default integration\"\n" +
4218 " data-ui-sref=\"applications.integrations.edit({resourceId:integrations.resource.resource_id, integration:'campfire'})\">\n" +
4599 " data-ui-sref=\"applications.integrations.edit({resourceId:integrations.resource.resource_id, integration:'campfire'})\">\n" +
4219 " <span class=\"fa fa-fw fa-comment fa-3x pull-left\"></span>\n" +
4600 " <span class=\"fa fa-fw fa-comment fa-3x pull-left\"></span>\n" +
4220 " <strong>Campfire</strong>\n" +
4601 " <strong>Campfire</strong>\n" +
4221 "\n" +
4602 "\n" +
4222 " <p>Receive reports and alerts in your Campfire rooms</p>\n" +
4603 " <p>Receive reports and alerts in your Campfire rooms</p>\n" +
4223 " </a>\n" +
4604 " </a>\n" +
4224 "\n" +
4605 "\n" +
4225 " <a class=\"btn btn-default integration\"\n" +
4606 " <a class=\"btn btn-default integration\"\n" +
4226 " data-ui-sref=\"applications.integrations.edit({resourceId:integrations.resource.resource_id, integration:'flowdock'})\">\n" +
4607 " data-ui-sref=\"applications.integrations.edit({resourceId:integrations.resource.resource_id, integration:'flowdock'})\">\n" +
4227 " <span class=\"fa fa-fw fa-envelope fa-3x pull-left\"></span>\n" +
4608 " <span class=\"fa fa-fw fa-envelope fa-3x pull-left\"></span>\n" +
4228 " <strong>Flowdock</strong>\n" +
4609 " <strong>Flowdock</strong>\n" +
4229 "\n" +
4610 "\n" +
4230 " <p>Receive reports and alerts on your Flowdock team\n" +
4611 " <p>Receive reports and alerts on your Flowdock team\n" +
4231 " inbox</p>\n" +
4612 " inbox</p>\n" +
4232 " </a>\n" +
4613 " </a>\n" +
4233 "\n" +
4614 "\n" +
4234 " <a class=\"btn btn-default integration\"\n" +
4615 " <a class=\"btn btn-default integration\"\n" +
4235 " data-ui-sref=\"applications.integrations.edit({resourceId:integrations.resource.resource_id, integration:'github'})\">\n" +
4616 " data-ui-sref=\"applications.integrations.edit({resourceId:integrations.resource.resource_id, integration:'github'})\">\n" +
4236 " <span class=\"fa fa-fw fa-github fa-3x pull-left\"></span>\n" +
4617 " <span class=\"fa fa-fw fa-github fa-3x pull-left\"></span>\n" +
4237 " <strong>Github</strong>\n" +
4618 " <strong>Github</strong>\n" +
4238 "\n" +
4619 "\n" +
4239 " <p>Send issues and reports to Github</p>\n" +
4620 " <p>Send issues and reports to Github</p>\n" +
4240 " </a>\n" +
4621 " </a>\n" +
4241 "\n" +
4622 "\n" +
4242 " <a class=\"btn btn-default integration\"\n" +
4623 " <a class=\"btn btn-default integration\"\n" +
4243 " data-ui-sref=\"applications.integrations.edit({resourceId:integrations.resource.resource_id, integration:'hipchat'})\">\n" +
4624 " data-ui-sref=\"applications.integrations.edit({resourceId:integrations.resource.resource_id, integration:'hipchat'})\">\n" +
4244 " <span class=\"fa fa-fw fa-comment fa-3x pull-left\"></span>\n" +
4625 " <span class=\"fa fa-fw fa-comment fa-3x pull-left\"></span>\n" +
4245 " <strong>HipChat</strong>\n" +
4626 " <strong>HipChat</strong>\n" +
4246 "\n" +
4627 "\n" +
4247 " <p>Receive reports and alerts in your Hipchat chanels</p>\n" +
4628 " <p>Receive reports and alerts in your Hipchat chanels</p>\n" +
4248 " </a>\n" +
4629 " </a>\n" +
4249 "\n" +
4630 "\n" +
4250 " <a class=\"btn btn-default integration\"\n" +
4631 " <a class=\"btn btn-default integration\"\n" +
4251 " data-ui-sref=\"applications.integrations.edit({resourceId:integrations.resource.resource_id, integration:'jira'})\">\n" +
4632 " data-ui-sref=\"applications.integrations.edit({resourceId:integrations.resource.resource_id, integration:'jira'})\">\n" +
4252 " <span class=\"fa fa-fw fa-ticket fa-3x pull-left\"></span>\n" +
4633 " <span class=\"fa fa-fw fa-ticket fa-3x pull-left\"></span>\n" +
4253 " <strong>Jira</strong>\n" +
4634 " <strong>Jira</strong>\n" +
4254 "\n" +
4635 "\n" +
4255 " <p>Send issues and reports to Jira</p>\n" +
4636 " <p>Send issues and reports to Jira</p>\n" +
4256 " </a>\n" +
4637 " </a>\n" +
4257 "\n" +
4638 "\n" +
4258 " <a class=\"btn btn-default integration\"\n" +
4639 " <a class=\"btn btn-default integration\"\n" +
4259 " data-ui-sref=\"applications.integrations.edit({resourceId:integrations.resource.resource_id, integration:'slack'})\">\n" +
4640 " data-ui-sref=\"applications.integrations.edit({resourceId:integrations.resource.resource_id, integration:'slack'})\">\n" +
4260 " <span class=\"fa fa-fw fa-comment fa-3x pull-left\"></span>\n" +
4641 " <span class=\"fa fa-fw fa-comment fa-3x pull-left\"></span>\n" +
4261 " <strong>Slack</strong>\n" +
4642 " <strong>Slack</strong>\n" +
4262 "\n" +
4643 "\n" +
4263 " <p>Receive reports and alerts in your Slack chanels</p>\n" +
4644 " <p>Receive reports and alerts in your Slack chanels</p>\n" +
4264 " </a>\n" +
4645 " </a>\n" +
4265 "\n" +
4646 "\n" +
4266 " <a class=\"btn btn-default integration\"\n" +
4647 " <a class=\"btn btn-default integration\"\n" +
4267 " data-ui-sref=\"applications.integrations.edit({resourceId:integrations.resource.resource_id, integration:'webhooks'})\">\n" +
4648 " data-ui-sref=\"applications.integrations.edit({resourceId:integrations.resource.resource_id, integration:'webhooks'})\">\n" +
4268 " <span class=\"fa fa-fw fa-cloud-upload fa-3x pull-left\"></span>\n" +
4649 " <span class=\"fa fa-fw fa-cloud-upload fa-3x pull-left\"></span>\n" +
4269 " <strong>Webhooks</strong>\n" +
4650 " <strong>Webhooks</strong>\n" +
4270 "\n" +
4651 "\n" +
4271 " <p>Notify third party API's of your reports and alerts</p>\n" +
4652 " <p>Notify third party API's of your reports and alerts</p>\n" +
4272 " </a>\n" +
4653 " </a>\n" +
4273 " </div>\n" +
4654 " </div>\n" +
4274 " </div>\n" +
4655 " </div>\n" +
4275 "</ui-view>\n"
4656 "</ui-view>\n"
4276 );
4657 );
4277
4658
4278
4659
4279 $templateCache.put('templates/applications/integrations/bitbucket.html',
4660 $templateCache.put('templates/applications/integrations/bitbucket.html',
4280 "<ng-include src=\"'templates/loader.html'\" ng-if=\"integrations.loading.application || integration.loading.integration\"></ng-include>\n" +
4661 "<ng-include src=\"'templates/loader.html'\" ng-if=\"integrations.loading.application || integration.loading.integration\"></ng-include>\n" +
4281 "\n" +
4662 "\n" +
4282 "<div class=\"panel panel-default\" ng-show=\"!integrations.loading.application && !integration.loading.integration\">\n" +
4663 "<div class=\"panel panel-default\" ng-show=\"!integrations.loading.application && !integration.loading.integration\">\n" +
4283 " <div class=\"panel-heading\" ng-include=\"'templates/applications/breadcrumbs.html'\"></div>\n" +
4664 " <div class=\"panel-heading\" ng-include=\"'templates/applications/breadcrumbs.html'\"></div>\n" +
4284 " <div class=\"panel-body\">\n" +
4665 " <div class=\"panel-body\">\n" +
4285 "\n" +
4666 "\n" +
4286 " <h1>Bitbucket Integration</h1>\n" +
4667 " <h1>Bitbucket Integration</h1>\n" +
4287 "\n" +
4668 "\n" +
4288 " <form name=\"integration.integrationForm\" ng-submit=\"integration.configureIntegration()\" class=\"form-horizontal\">\n" +
4669 " <form name=\"integration.integrationForm\" ng-submit=\"integration.configureIntegration()\" class=\"form-horizontal\">\n" +
4289 " <div class=\"form-group\">\n" +
4670 " <div class=\"form-group\">\n" +
4290 "\n" +
4671 "\n" +
4291 " <label class=\"control-label col-sm-3 col-lg-2\">Repository</label>\n" +
4672 " <label class=\"control-label col-sm-3 col-lg-2\">Repository</label>\n" +
4292 "\n" +
4673 "\n" +
4293 " <div class=\"col-sm-8 col-lg-9\">\n" +
4674 " <div class=\"col-sm-8 col-lg-9\">\n" +
4294 "\n" +
4675 "\n" +
4295 " <data-form-errors errors=\"integration.integrationForm.ae_validation.user_name\"></data-form-errors>\n" +
4676 " <data-form-errors errors=\"integration.integrationForm.ae_validation.user_name\"></data-form-errors>\n" +
4296 " <data-form-errors errors=\"integration.integrationForm.ae_validation.repo_name\"></data-form-errors>\n" +
4677 " <data-form-errors errors=\"integration.integrationForm.ae_validation.repo_name\"></data-form-errors>\n" +
4297 "\n" +
4678 "\n" +
4298 " <div class=\"input-group\">\n" +
4679 " <div class=\"input-group\">\n" +
4299 " <div class=\"input-group-addon\">https://bitbucket.org/</div>\n" +
4680 " <div class=\"input-group-addon\">https://bitbucket.org/</div>\n" +
4300 " <input class=\"form-control\" ng-model=\"integration.config.user_name\" placeholder=\"user\" type=\"text\">\n" +
4681 " <input class=\"form-control\" ng-model=\"integration.config.user_name\" placeholder=\"user\" type=\"text\">\n" +
4301 " <div class=\"input-group-addon\">/</div>\n" +
4682 " <div class=\"input-group-addon\">/</div>\n" +
4302 " <input class=\"form-control\" ng-model=\"integration.config.repo_name\" placeholder=\"repo_name\" type=\"text\">\n" +
4683 " <input class=\"form-control\" ng-model=\"integration.config.repo_name\" placeholder=\"repo_name\" type=\"text\">\n" +
4303 " </div>\n" +
4684 " </div>\n" +
4304 "\n" +
4685 "\n" +
4305 " </div>\n" +
4686 " </div>\n" +
4306 " </div>\n" +
4687 " </div>\n" +
4307 " <div class=\"form-group\">\n" +
4688 " <div class=\"form-group\">\n" +
4308 "\n" +
4689 "\n" +
4309 " <label class=\"control-label col-sm-3 col-lg-2\"></label>\n" +
4690 " <label class=\"control-label col-sm-3 col-lg-2\"></label>\n" +
4310 "\n" +
4691 "\n" +
4311 " <div class=\"col-sm-8 col-lg-9\">\n" +
4692 " <div class=\"col-sm-8 col-lg-9\">\n" +
4312 " <input type=\"submit\" class=\"btn btn-primary\" value=\"Use this repo\">\n" +
4693 " <input type=\"submit\" class=\"btn btn-primary\" value=\"Use this repo\">\n" +
4313 " <span class=\"dropdown\" data-uib-dropdown on-toggle=\"toggled(open)\">\n" +
4694 " <span class=\"dropdown\" data-uib-dropdown on-toggle=\"toggled(open)\">\n" +
4314 " <a class=\"btn btn-danger\" data-uib-dropdown-toggle><span class=\"fa fa-trash-o\"></span> Remove Integration</a>\n" +
4695 " <a class=\"btn btn-danger\" data-uib-dropdown-toggle><span class=\"fa fa-trash-o\"></span> Remove Integration</a>\n" +
4315 " <ul class=\"dropdown-menu\">\n" +
4696 " <ul class=\"dropdown-menu\">\n" +
4316 " <li><a>No</a></li>\n" +
4697 " <li><a>No</a></li>\n" +
4317 " <li><a ng-click=\"integration.removeIntegration()\">Yes</a></li>\n" +
4698 " <li><a ng-click=\"integration.removeIntegration()\">Yes</a></li>\n" +
4318 " </ul>\n" +
4699 " </ul>\n" +
4319 " </span>\n" +
4700 " </span>\n" +
4320 " </div>\n" +
4701 " </div>\n" +
4321 " </div>\n" +
4702 " </div>\n" +
4322 " </form>\n" +
4703 " </form>\n" +
4323 "\n" +
4704 "\n" +
4324 " <p class=\"m-t-1\">Remember you first need to\n" +
4705 " <p class=\"m-t-1\">Remember you first need to\n" +
4325 " <strong>\n" +
4706 " <strong>\n" +
4326 " <a data-ui-sref=\"user.profile.identities\">authorize your user account</a></strong>\n" +
4707 " <a data-ui-sref=\"user.profile.identities\">authorize your user account</a></strong>\n" +
4327 " with Bitbucket before we can send issues on your behalf.</p>\n" +
4708 " with Bitbucket before we can send issues on your behalf.</p>\n" +
4328 "\n" +
4709 "\n" +
4329 " <p>Every user will have to authorize AppEnlight to access Bitbucket to be able to post issues.</p>\n" +
4710 " <p>Every user will have to authorize AppEnlight to access Bitbucket to be able to post issues.</p>\n" +
4330 "\n" +
4711 "\n" +
4331 " </div>\n" +
4712 " </div>\n" +
4332 "</div>\n"
4713 "</div>\n"
4333 );
4714 );
4334
4715
4335
4716
4336 $templateCache.put('templates/applications/integrations/campfire.html',
4717 $templateCache.put('templates/applications/integrations/campfire.html',
4337 "<ng-include src=\"'templates/loader.html'\" ng-if=\"integrations.loading.application || integration.loading.integration\"></ng-include>\n" +
4718 "<ng-include src=\"'templates/loader.html'\" ng-if=\"integrations.loading.application || integration.loading.integration\"></ng-include>\n" +
4338 "\n" +
4719 "\n" +
4339 "<div class=\"panel panel-default\" ng-show=\"!integrations.loading.application && !integration.loading.integration\">\n" +
4720 "<div class=\"panel panel-default\" ng-show=\"!integrations.loading.application && !integration.loading.integration\">\n" +
4340 " <div class=\"panel-heading\" ng-include=\"'templates/applications/breadcrumbs.html'\"></div>\n" +
4721 " <div class=\"panel-heading\" ng-include=\"'templates/applications/breadcrumbs.html'\"></div>\n" +
4341 " <div class=\"panel-body\">\n" +
4722 " <div class=\"panel-body\">\n" +
4342 " <h1>Campfire Integration</h1>\n" +
4723 " <h1>Campfire Integration</h1>\n" +
4343 "\n" +
4724 "\n" +
4344 " <form name=\"integration.integrationForm\" ng-submit=\"integration.configureIntegration()\" class=\"form-horizontal\">\n" +
4725 " <form name=\"integration.integrationForm\" ng-submit=\"integration.configureIntegration()\" class=\"form-horizontal\">\n" +
4345 "\n" +
4726 "\n" +
4346 " <div class=\"form-group\">\n" +
4727 " <div class=\"form-group\">\n" +
4347 "\n" +
4728 "\n" +
4348 " <label class=\"control-label col-sm-3 col-lg-2\">Account name</label>\n" +
4729 " <label class=\"control-label col-sm-3 col-lg-2\">Account name</label>\n" +
4349 " <div class=\"col-sm-8 col-lg-9\">\n" +
4730 " <div class=\"col-sm-8 col-lg-9\">\n" +
4350 " <data-form-errors errors=\"integration.integrationForm.ae_validation.user_name\"></data-form-errors>\n" +
4731 " <data-form-errors errors=\"integration.integrationForm.ae_validation.user_name\"></data-form-errors>\n" +
4351 "\n" +
4732 "\n" +
4352 " <div class=\"input-group\">\n" +
4733 " <div class=\"input-group\">\n" +
4353 " <div class=\"input-group-addon\">http://</div>\n" +
4734 " <div class=\"input-group-addon\">http://</div>\n" +
4354 " <input class=\"form-control\" ng-model=\"integration.config.account\" placeholder=\"account\">\n" +
4735 " <input class=\"form-control\" ng-model=\"integration.config.account\" placeholder=\"account\">\n" +
4355 " <div class=\"input-group-addon\">.campfirenow.com</div>\n" +
4736 " <div class=\"input-group-addon\">.campfirenow.com</div>\n" +
4356 " </div>\n" +
4737 " </div>\n" +
4357 " </div>\n" +
4738 " </div>\n" +
4358 " </div>\n" +
4739 " </div>\n" +
4359 "\n" +
4740 "\n" +
4360 " <div class=\"form-group\">\n" +
4741 " <div class=\"form-group\">\n" +
4361 " <label class=\"control-label col-sm-3 col-lg-2\">API Token</label>\n" +
4742 " <label class=\"control-label col-sm-3 col-lg-2\">API Token</label>\n" +
4362 " <div class=\"col-sm-8 col-lg-9\">\n" +
4743 " <div class=\"col-sm-8 col-lg-9\">\n" +
4363 " <data-form-errors errors=\"integration.integrationForm.ae_validation.api_token\"></data-form-errors>\n" +
4744 " <data-form-errors errors=\"integration.integrationForm.ae_validation.api_token\"></data-form-errors>\n" +
4364 " <input class=\"form-control\" ng-model=\"integration.config.api_token\" placeholder=\"Your API token\">\n" +
4745 " <input class=\"form-control\" ng-model=\"integration.config.api_token\" placeholder=\"Your API token\">\n" +
4365 " </div>\n" +
4746 " </div>\n" +
4366 " </div>\n" +
4747 " </div>\n" +
4367 "\n" +
4748 "\n" +
4368 " <div class=\"form-group\">\n" +
4749 " <div class=\"form-group\">\n" +
4369 " <label class=\"control-label col-sm-3 col-lg-2\">Room ID list</label>\n" +
4750 " <label class=\"control-label col-sm-3 col-lg-2\">Room ID list</label>\n" +
4370 " <div class=\"col-sm-8 col-lg-9\">\n" +
4751 " <div class=\"col-sm-8 col-lg-9\">\n" +
4371 " <data-form-errors errors=\"integration.integrationForm.ae_validation.rooms\"></data-form-errors>\n" +
4752 " <data-form-errors errors=\"integration.integrationForm.ae_validation.rooms\"></data-form-errors>\n" +
4372 " <input class=\"form-control\" ng-model=\"integration.config.rooms\" placeholder=\"Room ID list\">\n" +
4753 " <input class=\"form-control\" ng-model=\"integration.config.rooms\" placeholder=\"Room ID list\">\n" +
4373 " <p>\n" +
4754 " <p>\n" +
4374 " <small>Room ID list separated by comma</small>\n" +
4755 " <small>Room ID list separated by comma</small>\n" +
4375 " </p>\n" +
4756 " </p>\n" +
4376 " </div>\n" +
4757 " </div>\n" +
4377 " </div>\n" +
4758 " </div>\n" +
4378 " <div class=\"form-group\">\n" +
4759 " <div class=\"form-group\">\n" +
4379 " <input type=\"submit\" class=\"btn btn-primary\" value=\"Connect to Campfire\">\n" +
4760 " <input type=\"submit\" class=\"btn btn-primary\" value=\"Connect to Campfire\">\n" +
4380 "\n" +
4761 "\n" +
4381 " <span class=\"dropdown\" data-uib-dropdown on-toggle=\"toggled(open)\">\n" +
4762 " <span class=\"dropdown\" data-uib-dropdown on-toggle=\"toggled(open)\">\n" +
4382 " <a class=\"btn btn-danger\" data-uib-dropdown-toggle><span class=\"fa fa-trash-o\"></span> Remove Integration</a>\n" +
4763 " <a class=\"btn btn-danger\" data-uib-dropdown-toggle><span class=\"fa fa-trash-o\"></span> Remove Integration</a>\n" +
4383 " <ul class=\"dropdown-menu\">\n" +
4764 " <ul class=\"dropdown-menu\">\n" +
4384 " <li><a>No</a></li>\n" +
4765 " <li><a>No</a></li>\n" +
4385 " <li><a ng-click=\"integration.removeIntegration()\">Yes</a></li>\n" +
4766 " <li><a ng-click=\"integration.removeIntegration()\">Yes</a></li>\n" +
4386 " </ul>\n" +
4767 " </ul>\n" +
4387 " </span>\n" +
4768 " </span>\n" +
4388 "\n" +
4769 "\n" +
4389 " <div class=\"btn-group\" uib-dropdown>\n" +
4770 " <div class=\"btn-group\" uib-dropdown>\n" +
4390 " <button id=\"single-button\" type=\"button\" class=\"btn btn-info\" uib-dropdown-toggle>\n" +
4771 " <button id=\"single-button\" type=\"button\" class=\"btn btn-info\" uib-dropdown-toggle>\n" +
4391 " Test integration <span class=\"caret\"></span>\n" +
4772 " Test integration <span class=\"caret\"></span>\n" +
4392 " </button>\n" +
4773 " </button>\n" +
4393 " <ul class=\"dropdown-menu\" role=\"menu\" aria-labelledby=\"single-button\">\n" +
4774 " <ul class=\"dropdown-menu\" role=\"menu\" aria-labelledby=\"single-button\">\n" +
4394 " <li role=\"menuitem\"><a ng-click=\"integration.testIntegration('report_notification')\">Test report notification</a></li>\n" +
4775 " <li role=\"menuitem\"><a ng-click=\"integration.testIntegration('report_notification')\">Test report notification</a></li>\n" +
4395 " <li role=\"menuitem\"><a ng-click=\"integration.testIntegration('error_alert')\">Test error alert</a></li>\n" +
4776 " <li role=\"menuitem\"><a ng-click=\"integration.testIntegration('error_alert')\">Test error alert</a></li>\n" +
4396 " <li role=\"menuitem\"><a ng-click=\"integration.testIntegration('uptime_alert')\">Test uptime alert</a></li>\n" +
4777 " <li role=\"menuitem\"><a ng-click=\"integration.testIntegration('uptime_alert')\">Test uptime alert</a></li>\n" +
4397 " <li role=\"menuitem\"><a ng-click=\"integration.testIntegration('chart_alert')\">Test chart alert</a></li>\n" +
4778 " <li role=\"menuitem\"><a ng-click=\"integration.testIntegration('chart_alert')\">Test chart alert</a></li>\n" +
4398 " <li role=\"menuitem\"><a ng-click=\"integration.testIntegration('daily_digest')\">Test daily digest</a></li>\n" +
4779 " <li role=\"menuitem\"><a ng-click=\"integration.testIntegration('daily_digest')\">Test daily digest</a></li>\n" +
4399 " </ul>\n" +
4780 " </ul>\n" +
4400 " </div>\n" +
4781 " </div>\n" +
4401 "\n" +
4782 "\n" +
4402 " </div>\n" +
4783 " </div>\n" +
4403 "\n" +
4784 "\n" +
4404 " </form>\n" +
4785 " </form>\n" +
4405 "\n" +
4786 "\n" +
4406 " </div>\n" +
4787 " </div>\n" +
4407 "</div>\n"
4788 "</div>\n"
4408 );
4789 );
4409
4790
4410
4791
4411 $templateCache.put('templates/applications/integrations/flowdock.html',
4792 $templateCache.put('templates/applications/integrations/flowdock.html',
4412 "<ng-include src=\"'templates/loader.html'\" ng-if=\"integrations.loading.application || integration.loading.integration\"></ng-include>\n" +
4793 "<ng-include src=\"'templates/loader.html'\" ng-if=\"integrations.loading.application || integration.loading.integration\"></ng-include>\n" +
4413 "\n" +
4794 "\n" +
4414 "<div class=\"panel panel-default\" ng-show=\"!integrations.loading.application && !integration.loading.integration\">\n" +
4795 "<div class=\"panel panel-default\" ng-show=\"!integrations.loading.application && !integration.loading.integration\">\n" +
4415 " <div class=\"panel-heading\" ng-include=\"'templates/applications/breadcrumbs.html'\"></div>\n" +
4796 " <div class=\"panel-heading\" ng-include=\"'templates/applications/breadcrumbs.html'\"></div>\n" +
4416 " <div class=\"panel-body\">\n" +
4797 " <div class=\"panel-body\">\n" +
4417 "\n" +
4798 "\n" +
4418 " <h1>Flowdock Integration</h1>\n" +
4799 " <h1>Flowdock Integration</h1>\n" +
4419 "\n" +
4800 "\n" +
4420 " <form name=\"integration.integrationForm\" ng-submit=\"integration.configureIntegration()\" class=\"form-horizontal\">\n" +
4801 " <form name=\"integration.integrationForm\" ng-submit=\"integration.configureIntegration()\" class=\"form-horizontal\">\n" +
4421 "\n" +
4802 "\n" +
4422 " <div class=\"form-group\">\n" +
4803 " <div class=\"form-group\">\n" +
4423 "\n" +
4804 "\n" +
4424 " <label class=\"control-label col-sm-3 col-lg-2\">API Token</label>\n" +
4805 " <label class=\"control-label col-sm-3 col-lg-2\">API Token</label>\n" +
4425 "\n" +
4806 "\n" +
4426 " <div class=\"col-sm-8 col-lg-9\">\n" +
4807 " <div class=\"col-sm-8 col-lg-9\">\n" +
4427 " <data-form-errors errors=\"integration.integrationForm.ae_validation.api_token\"></data-form-errors>\n" +
4808 " <data-form-errors errors=\"integration.integrationForm.ae_validation.api_token\"></data-form-errors>\n" +
4428 " <input class=\"form-control\" ng-model=\"integration.config.api_token\" placeholder=\"Your API token\" type=\"text\">\n" +
4809 " <input class=\"form-control\" ng-model=\"integration.config.api_token\" placeholder=\"Your API token\" type=\"text\">\n" +
4429 " </div>\n" +
4810 " </div>\n" +
4430 "\n" +
4811 "\n" +
4431 "\n" +
4812 "\n" +
4432 " </div>\n" +
4813 " </div>\n" +
4433 "\n" +
4814 "\n" +
4434 " <div class=\"form-group\">\n" +
4815 " <div class=\"form-group\">\n" +
4435 "\n" +
4816 "\n" +
4436 " <label class=\"control-label col-sm-3 col-lg-2\"></label>\n" +
4817 " <label class=\"control-label col-sm-3 col-lg-2\"></label>\n" +
4437 "\n" +
4818 "\n" +
4438 " <div class=\"col-sm-8 col-lg-9\">\n" +
4819 " <div class=\"col-sm-8 col-lg-9\">\n" +
4439 "\n" +
4820 "\n" +
4440 " <input type=\"submit\" class=\"btn btn-primary\" value=\"Connect to Flowdock\">\n" +
4821 " <input type=\"submit\" class=\"btn btn-primary\" value=\"Connect to Flowdock\">\n" +
4441 "\n" +
4822 "\n" +
4442 " <span class=\"dropdown\" data-uib-dropdown on-toggle=\"toggled(open)\">\n" +
4823 " <span class=\"dropdown\" data-uib-dropdown on-toggle=\"toggled(open)\">\n" +
4443 " <a class=\"btn btn-danger\" data-uib-dropdown-toggle><span class=\"fa fa-trash-o\"></span> Remove Integration</a>\n" +
4824 " <a class=\"btn btn-danger\" data-uib-dropdown-toggle><span class=\"fa fa-trash-o\"></span> Remove Integration</a>\n" +
4444 " <ul class=\"dropdown-menu\">\n" +
4825 " <ul class=\"dropdown-menu\">\n" +
4445 " <li><a>No</a></li>\n" +
4826 " <li><a>No</a></li>\n" +
4446 " <li><a ng-click=\"integration.removeIntegration()\">Yes</a></li>\n" +
4827 " <li><a ng-click=\"integration.removeIntegration()\">Yes</a></li>\n" +
4447 " </ul>\n" +
4828 " </ul>\n" +
4448 " </span>\n" +
4829 " </span>\n" +
4449 " <div class=\"btn-group\" uib-dropdown>\n" +
4830 " <div class=\"btn-group\" uib-dropdown>\n" +
4450 " <button id=\"single-button\" type=\"button\" class=\"btn btn-info\" uib-dropdown-toggle>\n" +
4831 " <button id=\"single-button\" type=\"button\" class=\"btn btn-info\" uib-dropdown-toggle>\n" +
4451 " Test integration <span class=\"caret\"></span>\n" +
4832 " Test integration <span class=\"caret\"></span>\n" +
4452 " </button>\n" +
4833 " </button>\n" +
4453 " <ul class=\"dropdown-menu\" role=\"menu\" aria-labelledby=\"single-button\">\n" +
4834 " <ul class=\"dropdown-menu\" role=\"menu\" aria-labelledby=\"single-button\">\n" +
4454 " <li role=\"menuitem\"><a ng-click=\"integration.testIntegration('report_notification')\">Test report notification</a></li>\n" +
4835 " <li role=\"menuitem\"><a ng-click=\"integration.testIntegration('report_notification')\">Test report notification</a></li>\n" +
4455 " <li role=\"menuitem\"><a ng-click=\"integration.testIntegration('error_alert')\">Test error alert</a></li>\n" +
4836 " <li role=\"menuitem\"><a ng-click=\"integration.testIntegration('error_alert')\">Test error alert</a></li>\n" +
4456 " <li role=\"menuitem\"><a ng-click=\"integration.testIntegration('uptime_alert')\">Test uptime alert</a></li>\n" +
4837 " <li role=\"menuitem\"><a ng-click=\"integration.testIntegration('uptime_alert')\">Test uptime alert</a></li>\n" +
4457 " <li role=\"menuitem\"><a ng-click=\"integration.testIntegration('chart_alert')\">Test chart alert</a></li>\n" +
4838 " <li role=\"menuitem\"><a ng-click=\"integration.testIntegration('chart_alert')\">Test chart alert</a></li>\n" +
4458 " <li role=\"menuitem\"><a ng-click=\"integration.testIntegration('daily_digest')\">Test daily digest</a></li>\n" +
4839 " <li role=\"menuitem\"><a ng-click=\"integration.testIntegration('daily_digest')\">Test daily digest</a></li>\n" +
4459 " </ul>\n" +
4840 " </ul>\n" +
4460 " </div>\n" +
4841 " </div>\n" +
4461 " </div>\n" +
4842 " </div>\n" +
4462 " </div>\n" +
4843 " </div>\n" +
4463 "\n" +
4844 "\n" +
4464 "\n" +
4845 "\n" +
4465 " </form>\n" +
4846 " </form>\n" +
4466 "\n" +
4847 "\n" +
4467 " </div>\n" +
4848 " </div>\n" +
4468 "</div>\n"
4849 "</div>\n"
4469 );
4850 );
4470
4851
4471
4852
4472 $templateCache.put('templates/applications/integrations/github.html',
4853 $templateCache.put('templates/applications/integrations/github.html',
4473 "<ng-include src=\"'templates/loader.html'\" ng-if=\"integrations.loading.application || integration.loading.integration\"></ng-include>\n" +
4854 "<ng-include src=\"'templates/loader.html'\" ng-if=\"integrations.loading.application || integration.loading.integration\"></ng-include>\n" +
4474 "\n" +
4855 "\n" +
4475 "<div class=\"panel panel-default\" ng-show=\"!integrations.loading.application && !integration.loading.integration\">\n" +
4856 "<div class=\"panel panel-default\" ng-show=\"!integrations.loading.application && !integration.loading.integration\">\n" +
4476 " <div class=\"panel-heading\" ng-include=\"'templates/applications/breadcrumbs.html'\"></div>\n" +
4857 " <div class=\"panel-heading\" ng-include=\"'templates/applications/breadcrumbs.html'\"></div>\n" +
4477 " <div class=\"panel-body\">\n" +
4858 " <div class=\"panel-body\">\n" +
4478 "\n" +
4859 "\n" +
4479 " <h1>Github Integration</h1>\n" +
4860 " <h1>Github Integration</h1>\n" +
4480 "\n" +
4861 "\n" +
4481 " <form name=\"integration.integrationForm\" ng-submit=\"integration.configureIntegration()\" class=\"form-horizontal\">\n" +
4862 " <form name=\"integration.integrationForm\" ng-submit=\"integration.configureIntegration()\" class=\"form-horizontal\">\n" +
4482 "\n" +
4863 "\n" +
4483 "\n" +
4864 "\n" +
4484 " <div class=\"form-group\">\n" +
4865 " <div class=\"form-group\">\n" +
4485 "\n" +
4866 "\n" +
4486 " <label class=\"control-label col-sm-3 col-lg-2\">Repository</label>\n" +
4867 " <label class=\"control-label col-sm-3 col-lg-2\">Repository</label>\n" +
4487 "\n" +
4868 "\n" +
4488 " <div class=\"col-sm-8 col-lg-9\">\n" +
4869 " <div class=\"col-sm-8 col-lg-9\">\n" +
4489 "\n" +
4870 "\n" +
4490 " <data-form-errors errors=\"integration.integrationForm.ae_validation.user_name\"></data-form-errors>\n" +
4871 " <data-form-errors errors=\"integration.integrationForm.ae_validation.user_name\"></data-form-errors>\n" +
4491 " <data-form-errors errors=\"integration.integrationForm.ae_validation.repo_name\"></data-form-errors>\n" +
4872 " <data-form-errors errors=\"integration.integrationForm.ae_validation.repo_name\"></data-form-errors>\n" +
4492 "\n" +
4873 "\n" +
4493 " <div class=\"input-group\">\n" +
4874 " <div class=\"input-group\">\n" +
4494 " <div class=\"input-group-addon\">https://api.github.com/</div>\n" +
4875 " <div class=\"input-group-addon\">https://api.github.com/</div>\n" +
4495 " <input class=\"form-control\" ng-model=\"integration.config.user_name\" placeholder=\"user\" type=\"text\">\n" +
4876 " <input class=\"form-control\" ng-model=\"integration.config.user_name\" placeholder=\"user\" type=\"text\">\n" +
4496 " <div class=\"input-group-addon\">/</div>\n" +
4877 " <div class=\"input-group-addon\">/</div>\n" +
4497 " <input class=\"form-control\" ng-model=\"integration.config.repo_name\" placeholder=\"repo_name\" type=\"text\">\n" +
4878 " <input class=\"form-control\" ng-model=\"integration.config.repo_name\" placeholder=\"repo_name\" type=\"text\">\n" +
4498 " </div>\n" +
4879 " </div>\n" +
4499 "\n" +
4880 "\n" +
4500 " </div>\n" +
4881 " </div>\n" +
4501 " </div>\n" +
4882 " </div>\n" +
4502 "\n" +
4883 "\n" +
4503 " <div class=\"form-group\">\n" +
4884 " <div class=\"form-group\">\n" +
4504 "\n" +
4885 "\n" +
4505 " <label class=\"control-label col-sm-3 col-lg-2\"></label>\n" +
4886 " <label class=\"control-label col-sm-3 col-lg-2\"></label>\n" +
4506 "\n" +
4887 "\n" +
4507 " <input type=\"submit\" class=\"btn btn-primary\" value=\"Use this repo\">\n" +
4888 " <input type=\"submit\" class=\"btn btn-primary\" value=\"Use this repo\">\n" +
4508 "\n" +
4889 "\n" +
4509 " <span class=\"dropdown\" data-uib-dropdown on-toggle=\"toggled(open)\">\n" +
4890 " <span class=\"dropdown\" data-uib-dropdown on-toggle=\"toggled(open)\">\n" +
4510 " <a class=\"btn btn-danger\" data-uib-dropdown-toggle><span class=\"fa fa-trash-o\"></span> Remove Integration</a>\n" +
4891 " <a class=\"btn btn-danger\" data-uib-dropdown-toggle><span class=\"fa fa-trash-o\"></span> Remove Integration</a>\n" +
4511 " <ul class=\"dropdown-menu\">\n" +
4892 " <ul class=\"dropdown-menu\">\n" +
4512 " <li><a>No</a></li>\n" +
4893 " <li><a>No</a></li>\n" +
4513 " <li><a ng-click=\"integration.removeIntegration()\">Yes</a></li>\n" +
4894 " <li><a ng-click=\"integration.removeIntegration()\">Yes</a></li>\n" +
4514 " </ul>\n" +
4895 " </ul>\n" +
4515 " </span>\n" +
4896 " </span>\n" +
4516 "\n" +
4897 "\n" +
4517 " </div>\n" +
4898 " </div>\n" +
4518 " </form>\n" +
4899 " </form>\n" +
4519 "\n" +
4900 "\n" +
4520 " <p class=\"m-t-1\">Remember you first need to\n" +
4901 " <p class=\"m-t-1\">Remember you first need to\n" +
4521 " <strong>\n" +
4902 " <strong>\n" +
4522 " <a data-ui-sref=\"user.profile.identities\">authorize your user account</a></strong>\n" +
4903 " <a data-ui-sref=\"user.profile.identities\">authorize your user account</a></strong>\n" +
4523 " with Github before we can send issues on your behalf.</p>\n" +
4904 " with Github before we can send issues on your behalf.</p>\n" +
4524 "\n" +
4905 "\n" +
4525 " <p>Every user will have to authorize AppEnlight to access Github to be able to post issues.</p>\n" +
4906 " <p>Every user will have to authorize AppEnlight to access Github to be able to post issues.</p>\n" +
4526 "\n" +
4907 "\n" +
4527 " <div class=\"panel panel-warning\">\n" +
4908 " <div class=\"panel panel-warning\">\n" +
4528 " <div class=\"panel-heading\">Private repository access</div>\n" +
4909 " <div class=\"panel-heading\">Private repository access</div>\n" +
4529 " <div class=\"panel-body\">\n" +
4910 " <div class=\"panel-body\">\n" +
4530 " <p>If you need access to private repositories <a data-ui-sref=\"user.profile.identities\">profile page</a> allows you to require token including private repository permissions.</p>\n" +
4911 " <p>If you need access to private repositories <a data-ui-sref=\"user.profile.identities\">profile page</a> allows you to require token including private repository permissions.</p>\n" +
4531 "\n" +
4912 "\n" +
4532 " <p>Registration page OAuth does NOT give you token with private repository access permissions.</p>\n" +
4913 " <p>Registration page OAuth does NOT give you token with private repository access permissions.</p>\n" +
4533 " </div>\n" +
4914 " </div>\n" +
4534 " </div>\n" +
4915 " </div>\n" +
4535 "\n" +
4916 "\n" +
4536 " </div>\n" +
4917 " </div>\n" +
4537 "</div>\n"
4918 "</div>\n"
4538 );
4919 );
4539
4920
4540
4921
4541 $templateCache.put('templates/applications/integrations/hipchat.html',
4922 $templateCache.put('templates/applications/integrations/hipchat.html',
4542 "<ng-include src=\"'templates/loader.html'\" ng-if=\"integrations.loading.application || integration.loading.integration\"></ng-include>\n" +
4923 "<ng-include src=\"'templates/loader.html'\" ng-if=\"integrations.loading.application || integration.loading.integration\"></ng-include>\n" +
4543 "\n" +
4924 "\n" +
4544 "<div class=\"panel panel-default\" ng-show=\"!integrations.loading.application && !integration.loading.integration\">\n" +
4925 "<div class=\"panel panel-default\" ng-show=\"!integrations.loading.application && !integration.loading.integration\">\n" +
4545 " <div class=\"panel-heading\" ng-include=\"'templates/applications/breadcrumbs.html'\"></div>\n" +
4926 " <div class=\"panel-heading\" ng-include=\"'templates/applications/breadcrumbs.html'\"></div>\n" +
4546 " <div class=\"panel-body\">\n" +
4927 " <div class=\"panel-body\">\n" +
4547 "\n" +
4928 "\n" +
4548 " <h1>Hipchat Integration</h1>\n" +
4929 " <h1>Hipchat Integration</h1>\n" +
4549 "\n" +
4930 "\n" +
4550 " <form name=\"integration.integrationForm\" ng-submit=\"integration.configureIntegration()\" class=\"form-horizontal\">\n" +
4931 " <form name=\"integration.integrationForm\" ng-submit=\"integration.configureIntegration()\" class=\"form-horizontal\">\n" +
4551 "\n" +
4932 "\n" +
4552 " <div class=\"form-group\">\n" +
4933 " <div class=\"form-group\">\n" +
4553 " <label class=\"control-label col-sm-3 col-lg-2\">API Token</label>\n" +
4934 " <label class=\"control-label col-sm-3 col-lg-2\">API Token</label>\n" +
4554 "\n" +
4935 "\n" +
4555 " <div class=\"col-sm-8 col-lg-9\">\n" +
4936 " <div class=\"col-sm-8 col-lg-9\">\n" +
4556 " <data-form-errors errors=\"integration.integrationForm.ae_validation.api_token\"></data-form-errors>\n" +
4937 " <data-form-errors errors=\"integration.integrationForm.ae_validation.api_token\"></data-form-errors>\n" +
4557 " <input class=\"form-control\" ng-model=\"integration.config.api_token\" placeholder=\"Your API token\" type=\"text\">\n" +
4938 " <input class=\"form-control\" ng-model=\"integration.config.api_token\" placeholder=\"Your API token\" type=\"text\">\n" +
4558 " </div>\n" +
4939 " </div>\n" +
4559 " </div>\n" +
4940 " </div>\n" +
4560 "\n" +
4941 "\n" +
4561 " <div class=\"form-group\">\n" +
4942 " <div class=\"form-group\">\n" +
4562 "\n" +
4943 "\n" +
4563 " <label class=\"control-label col-sm-3 col-lg-2\">Room ID list</label>\n" +
4944 " <label class=\"control-label col-sm-3 col-lg-2\">Room ID list</label>\n" +
4564 "\n" +
4945 "\n" +
4565 " <div class=\"col-sm-8 col-lg-9\">\n" +
4946 " <div class=\"col-sm-8 col-lg-9\">\n" +
4566 " <data-form-errors errors=\"integration.integrationForm.ae_validation.rooms\"></data-form-errors>\n" +
4947 " <data-form-errors errors=\"integration.integrationForm.ae_validation.rooms\"></data-form-errors>\n" +
4567 " <input class=\"form-control\" ng-model=\"integration.config.rooms\" placeholder=\"Room ID list\" type=\"text\">\n" +
4948 " <input class=\"form-control\" ng-model=\"integration.config.rooms\" placeholder=\"Room ID list\" type=\"text\">\n" +
4568 "\n" +
4949 "\n" +
4569 " <p>\n" +
4950 " <p>\n" +
4570 " <small>Room ID list separated by comma</small>\n" +
4951 " <small>Room ID list separated by comma</small>\n" +
4571 " </p>\n" +
4952 " </p>\n" +
4572 " </div>\n" +
4953 " </div>\n" +
4573 "\n" +
4954 "\n" +
4574 " </div>\n" +
4955 " </div>\n" +
4575 "\n" +
4956 "\n" +
4576 " <div class=\"form-group\">\n" +
4957 " <div class=\"form-group\">\n" +
4577 " <label class=\"control-label col-sm-3 col-lg-2\"></label>\n" +
4958 " <label class=\"control-label col-sm-3 col-lg-2\"></label>\n" +
4578 " <div class=\"col-sm-8 col-lg-9\">\n" +
4959 " <div class=\"col-sm-8 col-lg-9\">\n" +
4579 " <input type=\"submit\" class=\"btn btn-primary\" value=\"Connect to Hipchat\">\n" +
4960 " <input type=\"submit\" class=\"btn btn-primary\" value=\"Connect to Hipchat\">\n" +
4580 " <span class=\"dropdown\" data-uib-dropdown on-toggle=\"toggled(open)\">\n" +
4961 " <span class=\"dropdown\" data-uib-dropdown on-toggle=\"toggled(open)\">\n" +
4581 " <a class=\"btn btn-danger\" data-uib-dropdown-toggle><span class=\"fa fa-trash-o\"></span> Remove Integration</a>\n" +
4962 " <a class=\"btn btn-danger\" data-uib-dropdown-toggle><span class=\"fa fa-trash-o\"></span> Remove Integration</a>\n" +
4582 " <ul class=\"dropdown-menu\">\n" +
4963 " <ul class=\"dropdown-menu\">\n" +
4583 " <li><a>No</a></li>\n" +
4964 " <li><a>No</a></li>\n" +
4584 " <li><a ng-click=\"integration.removeIntegration()\">Yes</a></li>\n" +
4965 " <li><a ng-click=\"integration.removeIntegration()\">Yes</a></li>\n" +
4585 " </ul>\n" +
4966 " </ul>\n" +
4586 " </span>\n" +
4967 " </span>\n" +
4587 "\n" +
4968 "\n" +
4588 " <div class=\"btn-group\" uib-dropdown>\n" +
4969 " <div class=\"btn-group\" uib-dropdown>\n" +
4589 " <button id=\"single-button\" type=\"button\" class=\"btn btn-info\" uib-dropdown-toggle>\n" +
4970 " <button id=\"single-button\" type=\"button\" class=\"btn btn-info\" uib-dropdown-toggle>\n" +
4590 " Test integration <span class=\"caret\"></span>\n" +
4971 " Test integration <span class=\"caret\"></span>\n" +
4591 " </button>\n" +
4972 " </button>\n" +
4592 " <ul class=\"dropdown-menu\" role=\"menu\" aria-labelledby=\"single-button\">\n" +
4973 " <ul class=\"dropdown-menu\" role=\"menu\" aria-labelledby=\"single-button\">\n" +
4593 " <li role=\"menuitem\"><a ng-click=\"integration.testIntegration('report_notification')\">Test report notification</a></li>\n" +
4974 " <li role=\"menuitem\"><a ng-click=\"integration.testIntegration('report_notification')\">Test report notification</a></li>\n" +
4594 " <li role=\"menuitem\"><a ng-click=\"integration.testIntegration('error_alert')\">Test error alert</a></li>\n" +
4975 " <li role=\"menuitem\"><a ng-click=\"integration.testIntegration('error_alert')\">Test error alert</a></li>\n" +
4595 " <li role=\"menuitem\"><a ng-click=\"integration.testIntegration('uptime_alert')\">Test uptime alert</a></li>\n" +
4976 " <li role=\"menuitem\"><a ng-click=\"integration.testIntegration('uptime_alert')\">Test uptime alert</a></li>\n" +
4596 " <li role=\"menuitem\"><a ng-click=\"integration.testIntegration('chart_alert')\">Test chart alert</a></li>\n" +
4977 " <li role=\"menuitem\"><a ng-click=\"integration.testIntegration('chart_alert')\">Test chart alert</a></li>\n" +
4597 " <li role=\"menuitem\"><a ng-click=\"integration.testIntegration('daily_digest')\">Test daily digest</a></li>\n" +
4978 " <li role=\"menuitem\"><a ng-click=\"integration.testIntegration('daily_digest')\">Test daily digest</a></li>\n" +
4598 " </ul>\n" +
4979 " </ul>\n" +
4599 " </div>\n" +
4980 " </div>\n" +
4600 "\n" +
4981 "\n" +
4601 " </div>\n" +
4982 " </div>\n" +
4602 " </div>\n" +
4983 " </div>\n" +
4603 "\n" +
4984 "\n" +
4604 " </form>\n" +
4985 " </form>\n" +
4605 "\n" +
4986 "\n" +
4606 " </div>\n" +
4987 " </div>\n" +
4607 "</div>\n"
4988 "</div>\n"
4608 );
4989 );
4609
4990
4610
4991
4611 $templateCache.put('templates/applications/integrations/jira.html',
4992 $templateCache.put('templates/applications/integrations/jira.html',
4612 "<ng-include src=\"'templates/loader.html'\" ng-if=\"integrations.loading.application || integration.loading.integration\"></ng-include>\n" +
4993 "<ng-include src=\"'templates/loader.html'\" ng-if=\"integrations.loading.application || integration.loading.integration\"></ng-include>\n" +
4613 "\n" +
4994 "\n" +
4614 "<div class=\"panel panel-default\" ng-show=\"!integrations.loading.application && !integration.loading.integration\">\n" +
4995 "<div class=\"panel panel-default\" ng-show=\"!integrations.loading.application && !integration.loading.integration\">\n" +
4615 " <div class=\"panel-heading\" ng-include=\"'templates/applications/breadcrumbs.html'\"></div>\n" +
4996 " <div class=\"panel-heading\" ng-include=\"'templates/applications/breadcrumbs.html'\"></div>\n" +
4616 " <div class=\"panel-body\">\n" +
4997 " <div class=\"panel-body\">\n" +
4617 "\n" +
4998 "\n" +
4618 " <h1>Jira Integration</h1>\n" +
4999 " <h1>Jira Integration</h1>\n" +
4619 "\n" +
5000 "\n" +
4620 " <form name=\"integration.integrationForm\" ng-submit=\"integration.configureIntegration()\" class=\"form-horizontal\">\n" +
5001 " <form name=\"integration.integrationForm\" ng-submit=\"integration.configureIntegration()\" class=\"form-horizontal\">\n" +
4621 "\n" +
5002 "\n" +
4622 " <div class=\"form-group\" id=\"row-host_name\">\n" +
5003 " <div class=\"form-group\" id=\"row-host_name\">\n" +
4623 "\n" +
5004 "\n" +
4624 " <label class=\"control-label col-sm-3 col-lg-2\">\n" +
5005 " <label class=\"control-label col-sm-3 col-lg-2\">\n" +
4625 " Server URL <span class=\"required\">*</span>\n" +
5006 " Server URL <span class=\"required\">*</span>\n" +
4626 " </label>\n" +
5007 " </label>\n" +
4627 " <div class=\"col-sm-8 col-lg-9\">\n" +
5008 " <div class=\"col-sm-8 col-lg-9\">\n" +
4628 " <data-form-errors errors=\"integration.integrationForm.ae_validation.host_name\"></data-form-errors>\n" +
5009 " <data-form-errors errors=\"integration.integrationForm.ae_validation.host_name\"></data-form-errors>\n" +
4629 " <input class=\"form-control\" id=\"host_name\" name=\"host_name\" type=\"text\" ng-model=\"integration.config.host_name\">\n" +
5010 " <input class=\"form-control\" id=\"host_name\" name=\"host_name\" type=\"text\" ng-model=\"integration.config.host_name\">\n" +
4630 "\n" +
5011 "\n" +
4631 " <p>\n" +
5012 " <p>\n" +
4632 " <small>https://servername.atlassian.net</small>\n" +
5013 " <small>https://servername.atlassian.net</small>\n" +
4633 " </p>\n" +
5014 " </p>\n" +
4634 "\n" +
5015 "\n" +
4635 " </div>\n" +
5016 " </div>\n" +
4636 " </div>\n" +
5017 " </div>\n" +
4637 " <div class=\"form-group\" id=\"row-user_name\">\n" +
5018 " <div class=\"form-group\" id=\"row-user_name\">\n" +
4638 "\n" +
5019 "\n" +
4639 " <label class=\"control-label col-sm-3 col-lg-2\">\n" +
5020 " <label class=\"control-label col-sm-3 col-lg-2\">\n" +
4640 " Username <span class=\"required\">*</span>\n" +
5021 " Username <span class=\"required\">*</span>\n" +
4641 " </label>\n" +
5022 " </label>\n" +
4642 " <div class=\"col-sm-8 col-lg-9\">\n" +
5023 " <div class=\"col-sm-8 col-lg-9\">\n" +
4643 "\n" +
5024 "\n" +
4644 " <data-form-errors errors=\"integration.integrationForm.ae_validation.user_name\"></data-form-errors>\n" +
5025 " <data-form-errors errors=\"integration.integrationForm.ae_validation.user_name\"></data-form-errors>\n" +
4645 " <input class=\"form-control\" id=\"user_name\" name=\"user_name\" type=\"text\" ng-model=\"integration.config.user_name\">\n" +
5026 " <input class=\"form-control\" id=\"user_name\" name=\"user_name\" type=\"text\" ng-model=\"integration.config.user_name\">\n" +
4646 "\n" +
5027 "\n" +
4647 " <p>\n" +
5028 " <p>\n" +
4648 " <small>user@email.com</small>\n" +
5029 " <small>user@email.com</small>\n" +
4649 " </p>\n" +
5030 " </p>\n" +
4650 "\n" +
5031 "\n" +
4651 " </div>\n" +
5032 " </div>\n" +
4652 " </div>\n" +
5033 " </div>\n" +
4653 " <div class=\"form-group\" id=\"row-password\">\n" +
5034 " <div class=\"form-group\" id=\"row-password\">\n" +
4654 "\n" +
5035 "\n" +
4655 " <label class=\"control-label col-sm-3 col-lg-2\">\n" +
5036 " <label class=\"control-label col-sm-3 col-lg-2\">\n" +
4656 " Password <span class=\"required\">*</span>\n" +
5037 " Password <span class=\"required\">*</span>\n" +
4657 " </label>\n" +
5038 " </label>\n" +
4658 " <div class=\"col-sm-8 col-lg-9\">\n" +
5039 " <div class=\"col-sm-8 col-lg-9\">\n" +
4659 " <data-form-errors errors=\"integration.integrationForm.ae_validation.password\"></data-form-errors>\n" +
5040 " <data-form-errors errors=\"integration.integrationForm.ae_validation.password\"></data-form-errors>\n" +
4660 " <input class=\"form-control\" id=\"password\" name=\"password\" type=\"password\" ng-model=\"integration.config.password\">\n" +
5041 " <input class=\"form-control\" id=\"password\" name=\"password\" type=\"password\" ng-model=\"integration.config.password\">\n" +
4661 " </div>\n" +
5042 " </div>\n" +
4662 " </div>\n" +
5043 " </div>\n" +
4663 " <div class=\"form-group\" id=\"row-project\">\n" +
5044 " <div class=\"form-group\" id=\"row-project\">\n" +
4664 "\n" +
5045 "\n" +
4665 " <label class=\"control-label col-sm-3 col-lg-2\">\n" +
5046 " <label class=\"control-label col-sm-3 col-lg-2\">\n" +
4666 " Project key <span class=\"required\">*</span>\n" +
5047 " Project key <span class=\"required\">*</span>\n" +
4667 " </label>\n" +
5048 " </label>\n" +
4668 " <div class=\"col-sm-8 col-lg-9\">\n" +
5049 " <div class=\"col-sm-8 col-lg-9\">\n" +
4669 " <data-form-errors errors=\"integration.integrationForm.ae_validation.project\"></data-form-errors>\n" +
5050 " <data-form-errors errors=\"integration.integrationForm.ae_validation.project\"></data-form-errors>\n" +
4670 " <input class=\"form-control\" id=\"project\" name=\"project\" type=\"text\" ng-model=\"integration.config.project\">\n" +
5051 " <input class=\"form-control\" id=\"project\" name=\"project\" type=\"text\" ng-model=\"integration.config.project\">\n" +
4671 " </div>\n" +
5052 " </div>\n" +
4672 " </div>\n" +
5053 " </div>\n" +
4673 " <div class=\"form-group\" id=\"row-submit\">\n" +
5054 " <div class=\"form-group\" id=\"row-submit\">\n" +
4674 " <label class=\"control-label col-sm-3 col-lg-2\"></label>\n" +
5055 " <label class=\"control-label col-sm-3 col-lg-2\"></label>\n" +
4675 " <div class=\"col-sm-8 col-lg-9\">\n" +
5056 " <div class=\"col-sm-8 col-lg-9\">\n" +
4676 " <input class=\"form-control btn btn-primary\" id=\"submit\" name=\"submit\" type=\"submit\" value=\"Setup Jira\">\n" +
5057 " <input class=\"form-control btn btn-primary\" id=\"submit\" name=\"submit\" type=\"submit\" value=\"Setup Jira\">\n" +
4677 "\n" +
5058 "\n" +
4678 " <span class=\"dropdown\" data-uib-dropdown on-toggle=\"toggled(open)\">\n" +
5059 " <span class=\"dropdown\" data-uib-dropdown on-toggle=\"toggled(open)\">\n" +
4679 " <a class=\"btn btn-danger\" data-uib-dropdown-toggle><span class=\"fa fa-trash-o\"></span> Remove Integration</a>\n" +
5060 " <a class=\"btn btn-danger\" data-uib-dropdown-toggle><span class=\"fa fa-trash-o\"></span> Remove Integration</a>\n" +
4680 " <ul class=\"dropdown-menu\">\n" +
5061 " <ul class=\"dropdown-menu\">\n" +
4681 " <li><a>No</a></li>\n" +
5062 " <li><a>No</a></li>\n" +
4682 " <li><a ng-click=\"integration.removeIntegration()\">Yes</a></li>\n" +
5063 " <li><a ng-click=\"integration.removeIntegration()\">Yes</a></li>\n" +
4683 " </ul>\n" +
5064 " </ul>\n" +
4684 " </span>\n" +
5065 " </span>\n" +
4685 " </div>\n" +
5066 " </div>\n" +
4686 " </div>\n" +
5067 " </div>\n" +
4687 "\n" +
5068 "\n" +
4688 " </form>\n" +
5069 " </form>\n" +
4689 "\n" +
5070 "\n" +
4690 "\n" +
5071 "\n" +
4691 " </div>\n" +
5072 " </div>\n" +
4692 "</div>\n"
5073 "</div>\n"
4693 );
5074 );
4694
5075
4695
5076
4696 $templateCache.put('templates/applications/integrations/slack.html',
5077 $templateCache.put('templates/applications/integrations/slack.html',
4697 "<ng-include src=\"'templates/loader.html'\" ng-if=\"integrations.loading.application || integration.loading.integration\"></ng-include>\n" +
5078 "<ng-include src=\"'templates/loader.html'\" ng-if=\"integrations.loading.application || integration.loading.integration\"></ng-include>\n" +
4698 "\n" +
5079 "\n" +
4699 "<div class=\"panel panel-default\" ng-show=\"!integrations.loading.application && !integration.loading.integration\">\n" +
5080 "<div class=\"panel panel-default\" ng-show=\"!integrations.loading.application && !integration.loading.integration\">\n" +
4700 " <div class=\"panel-heading\" ng-include=\"'templates/applications/breadcrumbs.html'\"></div>\n" +
5081 " <div class=\"panel-heading\" ng-include=\"'templates/applications/breadcrumbs.html'\"></div>\n" +
4701 " <div class=\"panel-body\">\n" +
5082 " <div class=\"panel-body\">\n" +
4702 "\n" +
5083 "\n" +
4703 " <h1>Slack Integration</h1>\n" +
5084 " <h1>Slack Integration</h1>\n" +
4704 "\n" +
5085 "\n" +
4705 " <form name=\"integration.integrationForm\" ng-submit=\"integration.configureIntegration()\" class=\"form-horizontal\">\n" +
5086 " <form name=\"integration.integrationForm\" ng-submit=\"integration.configureIntegration()\" class=\"form-horizontal\">\n" +
4706 "\n" +
5087 "\n" +
4707 " <div class=\"form-group\">\n" +
5088 " <div class=\"form-group\">\n" +
4708 "\n" +
5089 "\n" +
4709 " <label class=\"control-label col-sm-3 col-lg-2\">\n" +
5090 " <label class=\"control-label col-sm-3 col-lg-2\">\n" +
4710 " API Token <span class=\"required\">*</span>\n" +
5091 " API Token <span class=\"required\">*</span>\n" +
4711 " </label>\n" +
5092 " </label>\n" +
4712 " <div class=\"col-sm-8 col-lg-9\">\n" +
5093 " <div class=\"col-sm-8 col-lg-9\">\n" +
4713 " <data-form-errors errors=\"integration.integrationForm.ae_validation.webhook_url\"></data-form-errors>\n" +
5094 " <data-form-errors errors=\"integration.integrationForm.ae_validation.webhook_url\"></data-form-errors>\n" +
4714 " <input class=\"form-control\" ng-model=\"integration.config.webhook_url\" placeholder=\"Webhook URL\" type=\"webhook_url\">\n" +
5095 " <input class=\"form-control\" ng-model=\"integration.config.webhook_url\" placeholder=\"Webhook URL\" type=\"webhook_url\">\n" +
4715 " </div>\n" +
5096 " </div>\n" +
4716 " </div>\n" +
5097 " </div>\n" +
4717 "\n" +
5098 "\n" +
4718 " <div class=\"form-group\">\n" +
5099 " <div class=\"form-group\">\n" +
4719 "\n" +
5100 "\n" +
4720 " <label class=\"control-label col-sm-3 col-lg-2\"></label>\n" +
5101 " <label class=\"control-label col-sm-3 col-lg-2\"></label>\n" +
4721 " <div class=\"col-sm-8 col-lg-9\">\n" +
5102 " <div class=\"col-sm-8 col-lg-9\">\n" +
4722 " <input type=\"submit\" class=\"btn btn-primary\"\n" +
5103 " <input type=\"submit\" class=\"btn btn-primary\"\n" +
4723 " value=\"Connect to Slack\">\n" +
5104 " value=\"Connect to Slack\">\n" +
4724 "\n" +
5105 "\n" +
4725 " <span class=\"dropdown\" data-uib-dropdown on-toggle=\"toggled(open)\">\n" +
5106 " <span class=\"dropdown\" data-uib-dropdown on-toggle=\"toggled(open)\">\n" +
4726 " <a class=\"btn btn-danger\" data-uib-dropdown-toggle><span class=\"fa fa-trash-o\"></span> Remove Integration</a>\n" +
5107 " <a class=\"btn btn-danger\" data-uib-dropdown-toggle><span class=\"fa fa-trash-o\"></span> Remove Integration</a>\n" +
4727 " <ul class=\"dropdown-menu\">\n" +
5108 " <ul class=\"dropdown-menu\">\n" +
4728 " <li><a>No</a></li>\n" +
5109 " <li><a>No</a></li>\n" +
4729 " <li><a ng-click=\"integration.removeIntegration()\">Yes</a></li>\n" +
5110 " <li><a ng-click=\"integration.removeIntegration()\">Yes</a></li>\n" +
4730 " </ul>\n" +
5111 " </ul>\n" +
4731 " </span>\n" +
5112 " </span>\n" +
4732 "\n" +
5113 "\n" +
4733 " <div class=\"btn-group\" uib-dropdown>\n" +
5114 " <div class=\"btn-group\" uib-dropdown>\n" +
4734 " <button type=\"button\" class=\"btn btn-info\" uib-dropdown-toggle>\n" +
5115 " <button type=\"button\" class=\"btn btn-info\" uib-dropdown-toggle>\n" +
4735 " Test integration <span class=\"caret\"></span>\n" +
5116 " Test integration <span class=\"caret\"></span>\n" +
4736 " </button>\n" +
5117 " </button>\n" +
4737 " <ul class=\"dropdown-menu\" role=\"menu\" aria-labelledby=\"single-button\">\n" +
5118 " <ul class=\"dropdown-menu\" role=\"menu\" aria-labelledby=\"single-button\">\n" +
4738 " <li role=\"menuitem\"><a ng-click=\"integration.testIntegration('report_notification')\">Test report notification</a></li>\n" +
5119 " <li role=\"menuitem\"><a ng-click=\"integration.testIntegration('report_notification')\">Test report notification</a></li>\n" +
4739 " <li role=\"menuitem\"><a ng-click=\"integration.testIntegration('error_alert')\">Test error alert</a></li>\n" +
5120 " <li role=\"menuitem\"><a ng-click=\"integration.testIntegration('error_alert')\">Test error alert</a></li>\n" +
4740 " <li role=\"menuitem\"><a ng-click=\"integration.testIntegration('uptime_alert')\">Test uptime alert</a></li>\n" +
5121 " <li role=\"menuitem\"><a ng-click=\"integration.testIntegration('uptime_alert')\">Test uptime alert</a></li>\n" +
4741 " <li role=\"menuitem\"><a ng-click=\"integration.testIntegration('chart_alert')\">Test chart alert</a></li>\n" +
5122 " <li role=\"menuitem\"><a ng-click=\"integration.testIntegration('chart_alert')\">Test chart alert</a></li>\n" +
4742 " <li role=\"menuitem\"><a ng-click=\"integration.testIntegration('daily_digest')\">Test daily digest</a></li>\n" +
5123 " <li role=\"menuitem\"><a ng-click=\"integration.testIntegration('daily_digest')\">Test daily digest</a></li>\n" +
4743 " </ul>\n" +
5124 " </ul>\n" +
4744 " </div>\n" +
5125 " </div>\n" +
4745 " </div>\n" +
5126 " </div>\n" +
4746 " </div>\n" +
5127 " </div>\n" +
4747 " </form>\n" +
5128 " </form>\n" +
4748 "\n" +
5129 "\n" +
4749 " </div>\n" +
5130 " </div>\n" +
4750 "</div>\n"
5131 "</div>\n"
4751 );
5132 );
4752
5133
4753
5134
4754 $templateCache.put('templates/applications/integrations/webhooks.html',
5135 $templateCache.put('templates/applications/integrations/webhooks.html',
4755 "<ng-include src=\"'templates/loader.html'\" ng-if=\"integrations.loading.application || integration.loading.integration\"></ng-include>\n" +
5136 "<ng-include src=\"'templates/loader.html'\" ng-if=\"integrations.loading.application || integration.loading.integration\"></ng-include>\n" +
4756 "\n" +
5137 "\n" +
4757 "<div class=\"panel panel-default\" ng-show=\"!integrations.loading.application && !integration.loading.integration\">\n" +
5138 "<div class=\"panel panel-default\" ng-show=\"!integrations.loading.application && !integration.loading.integration\">\n" +
4758 " <div class=\"panel-heading\" ng-include=\"'templates/applications/breadcrumbs.html'\"></div>\n" +
5139 " <div class=\"panel-heading\" ng-include=\"'templates/applications/breadcrumbs.html'\"></div>\n" +
4759 " <div class=\"panel-body\">\n" +
5140 " <div class=\"panel-body\">\n" +
4760 "\n" +
5141 "\n" +
4761 " <h1>Webhooks Integration</h1>\n" +
5142 " <h1>Webhooks Integration</h1>\n" +
4762 "\n" +
5143 "\n" +
4763 " <form name=\"integration.integrationForm\" ng-submit=\"integration.configureIntegration()\" class=\"form-horizontal\">\n" +
5144 " <form name=\"integration.integrationForm\" ng-submit=\"integration.configureIntegration()\" class=\"form-horizontal\">\n" +
4764 " <div class=\"form-group\" id=\"row-reports_webhook\">\n" +
5145 " <div class=\"form-group\" id=\"row-reports_webhook\">\n" +
4765 "\n" +
5146 "\n" +
4766 " <label class=\"control-label col-sm-3 col-lg-2\">\n" +
5147 " <label class=\"control-label col-sm-3 col-lg-2\">\n" +
4767 " Reports webhook <span class=\"required\">*</span>\n" +
5148 " Reports webhook <span class=\"required\">*</span>\n" +
4768 " </label>\n" +
5149 " </label>\n" +
4769 " <div class=\"col-sm-8 col-lg-9\">\n" +
5150 " <div class=\"col-sm-8 col-lg-9\">\n" +
4770 " <data-form-errors errors=\"integration.integrationForm.ae_validation.reports_webhook\"></data-form-errors>\n" +
5151 " <data-form-errors errors=\"integration.integrationForm.ae_validation.reports_webhook\"></data-form-errors>\n" +
4771 " <input class=\"form-control\" id=\"reports_webhook\" name=\"reports_webhook\" type=\"text\" ng-model=\"integration.config.reports_webhook\">\n" +
5152 " <input class=\"form-control\" id=\"reports_webhook\" name=\"reports_webhook\" type=\"text\" ng-model=\"integration.config.reports_webhook\">\n" +
4772 " </div>\n" +
5153 " </div>\n" +
4773 " </div>\n" +
5154 " </div>\n" +
4774 " <div class=\"form-group\" id=\"row-alerts_webhook\">\n" +
5155 " <div class=\"form-group\" id=\"row-alerts_webhook\">\n" +
4775 "\n" +
5156 "\n" +
4776 " <label class=\"control-label col-sm-3 col-lg-2\">\n" +
5157 " <label class=\"control-label col-sm-3 col-lg-2\">\n" +
4777 " Alerts webhook <span class=\"required\">*</span>\n" +
5158 " Alerts webhook <span class=\"required\">*</span>\n" +
4778 " </label>\n" +
5159 " </label>\n" +
4779 " <div class=\"col-sm-8 col-lg-9\">\n" +
5160 " <div class=\"col-sm-8 col-lg-9\">\n" +
4780 " <data-form-errors errors=\"integration.integrationForm.ae_validation.alerts_webhook\"></data-form-errors>\n" +
5161 " <data-form-errors errors=\"integration.integrationForm.ae_validation.alerts_webhook\"></data-form-errors>\n" +
4781 " <input class=\"form-control StringField None\" id=\"alerts_webhook\" name=\"alerts_webhook\" type=\"text\" ng-model=\"integration.config.alerts_webhook\">\n" +
5162 " <input class=\"form-control StringField None\" id=\"alerts_webhook\" name=\"alerts_webhook\" type=\"text\" ng-model=\"integration.config.alerts_webhook\">\n" +
4782 " </div>\n" +
5163 " </div>\n" +
4783 "\n" +
5164 "\n" +
4784 "\n" +
5165 "\n" +
4785 " </div>\n" +
5166 " </div>\n" +
4786 " <div class=\"form-group\" id=\"row-submit\">\n" +
5167 " <div class=\"form-group\" id=\"row-submit\">\n" +
4787 "\n" +
5168 "\n" +
4788 " <label class=\"control-label col-sm-3 col-lg-2\"></label>\n" +
5169 " <label class=\"control-label col-sm-3 col-lg-2\"></label>\n" +
4789 " <div class=\"col-sm-8 col-lg-9\">\n" +
5170 " <div class=\"col-sm-8 col-lg-9\">\n" +
4790 " <input class=\"form-control btn btn-primary\" id=\"submit\" name=\"submit\" type=\"submit\" value=\"Setup webhooks\">\n" +
5171 " <input class=\"form-control btn btn-primary\" id=\"submit\" name=\"submit\" type=\"submit\" value=\"Setup webhooks\">\n" +
4791 " <span class=\"dropdown\" data-uib-dropdown on-toggle=\"toggled(open)\">\n" +
5172 " <span class=\"dropdown\" data-uib-dropdown on-toggle=\"toggled(open)\">\n" +
4792 " <a class=\"btn btn-danger\" data-uib-dropdown-toggle><span class=\"fa fa-trash-o\"></span> Remove Integration</a>\n" +
5173 " <a class=\"btn btn-danger\" data-uib-dropdown-toggle><span class=\"fa fa-trash-o\"></span> Remove Integration</a>\n" +
4793 " <ul class=\"dropdown-menu\">\n" +
5174 " <ul class=\"dropdown-menu\">\n" +
4794 " <li><a>No</a></li>\n" +
5175 " <li><a>No</a></li>\n" +
4795 " <li><a ng-click=\"integration.removeIntegration()\">Yes</a></li>\n" +
5176 " <li><a ng-click=\"integration.removeIntegration()\">Yes</a></li>\n" +
4796 " </ul>\n" +
5177 " </ul>\n" +
4797 " </span>\n" +
5178 " </span>\n" +
4798 " </div>\n" +
5179 " </div>\n" +
4799 " </div>\n" +
5180 " </div>\n" +
4800 " </form>\n" +
5181 " </form>\n" +
4801 " </div>\n" +
5182 " </div>\n" +
4802 "</div>\n"
5183 "</div>\n"
4803 );
5184 );
4804
5185
4805
5186
4806 $templateCache.put('templates/applications/list.html',
5187 $templateCache.put('templates/applications/list.html',
4807 "<ng-include src=\"'templates/loader.html'\" ng-if=\"applications.loading.applications\"></ng-include>\n" +
5188 "<ng-include src=\"'templates/loader.html'\" ng-if=\"applications.loading.applications\"></ng-include>\n" +
4808 "\n" +
5189 "\n" +
4809 "<div class=\"panel panel-default\" ng-show=\"!applications.loading.applications\">\n" +
5190 "<div class=\"panel panel-default\" ng-show=\"!applications.loading.applications\">\n" +
4810 " <div class=\"panel-heading\" ng-include=\"'templates/applications/breadcrumbs.html'\"></div>\n" +
5191 " <div class=\"panel-heading\" ng-include=\"'templates/applications/breadcrumbs.html'\"></div>\n" +
4811 " <div class=\"panel-body\" ng-if=\"applications.applications.length === 0 \">\n" +
5192 " <div class=\"panel-body\" ng-if=\"applications.applications.length === 0 \">\n" +
4812 "\n" +
5193 "\n" +
4813 " <p>You have to create a new application first.</p>\n" +
5194 " <p>You have to create a new application first.</p>\n" +
4814 "\n" +
5195 "\n" +
4815 " </div>\n" +
4816 "\n" +
4817 " <table class=\"table table-striped\" ng-if=\"applications.applications.length > 0\">\n" +
4818 " <thead>\n" +
4819 " <tr>\n" +
4820 " <th class=\"resource_name\">Resource Name</th>\n" +
4821 " <th class=\"domains\">Domains</th>\n" +
4822 " <th class=\"options\">Options</th>\n" +
4823 " </tr>\n" +
4824 " </thead>\n" +
4825 " <tbody>\n" +
4826 " <tr class=\"r{{$index+1}}\" ng-repeat=\"application in applications.applications\">\n" +
4827 " <td>{{application.resource_name}}</td>\n" +
4828 " <td>{{application.domains}}</td>\n" +
4829 " <td class=\"options\">\n" +
4830 " <a class=\"btn btn-default\" data-ui-sref=\"applications.update({resourceId:application.resource_id})\" data-toggle=\"tooltip\" title=\"Update application\"><span class=\"fa fa-cog\"></span> Update</a>\n" +
4831 " <a class=\"btn btn-default\" data-ui-sref=\"applications.integrations({resourceId:application.resource_id})\" data-toggle=\"tooltip\" title=\"Manage Integrations\"><span class=\"fa fa-wrench\"></span> Integrations</a>\n" +
4832 " </td>\n" +
4833 " </tr>\n" +
4834 " </tbody>\n" +
4835 " </table>\n" +
4836 "\n" +
4837 "</div>\n"
4838 );
4839
4840
4841 $templateCache.put('templates/applications/parent_view.html',
4842 "<div class=\"row application-management\">\n" +
4843 " <div class=\"col-sm-3\" id=\"menu\">\n" +
4844 " <div ng-include=\"'templates/user/menu.html'\"></div>\n" +
4845 " </div>\n" +
4846 "\n" +
4847 " <div class=\"col-sm-9\" ui-view></div>\n" +
4848 "\n" +
4849 "</div>\n"
4850 );
4851
4852
4853 $templateCache.put('templates/components/appenlight-app.html',
4854 "<channelstream config=\"AeConfig\"></channelstream>\n" +
4855 "<appenlight-header></appenlight-header>\n" +
4856 "<div id=\"outer-content\">\n" +
4857 " <div ui-view class=\"container\"></div>\n" +
4858 "</div>\n"
4859 );
4860
4861
4862 $templateCache.put('templates/components/appenlight-header.html',
4863 "<!-- Fixed navbar -->\n" +
4864 "<div id=\"top-navbar\" class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n" +
4865 " <div class=\"pattern\">\n" +
4866 " <div class=\"container\">\n" +
4867 " <div class=\"navbar-header pull-left\">\n" +
4868 " <a data-ui-sref=\"front_dashboard\" class=\"navbar-brand\">\n" +
4869 " <div id=\"logo-normal\" class=\"hidden-sm hidden-xs\"></div>\n" +
4870 " <div id=\"logo-icon\" class=\"visible-sm visible-xs\"></div>\n" +
4871 " </a>\n" +
4872 " </div>\n" +
4873 "\n" +
4874 " <div class=\"container-fluid\">\n" +
4875 " <div>\n" +
4876 " <ul class=\"nav navbar-nav navbar-right\" ng-if=\"$ctrl.stateHolder.AeUser.id !== null\">\n" +
4877 " <li id=\"user-notifications\" class=\"dropdown ng-cloak\" data-uib-dropdown>\n" +
4878 "\n" +
4879 " <a class=\"dropdown-toggle\" data-uib-dropdown-toggle>\n" +
4880 " <span class=\"badge\">{{$ctrl.assignedReports.length}}</span>\n" +
4881 " <span class=\"fa fa-envelope-o\"></span>\n" +
4882 " </a>\n" +
4883 " <ul class=\"dropdown-menu\">\n" +
4884 " <li role=\"presentation\" class=\"dropdown-header\">Assigned reports</li>\n" +
4885 " <li data-ng-repeat=\"report in $ctrl.assignedReports\" role=\"presentation\">\n" +
4886 " <a href=\"{{report.front_url}}\" role=\"menuitem\" tabindex=\"-1\">\n" +
4887 " <small>{{ report.error || 'Slow Report: ' + report.view_name |truncate:65}}</small>\n" +
4888 " </a>\n" +
4889 "\n" +
4890 " </li>\n" +
4891 " <li data-ng-if=\"$ctrl.assignedReports.length == 0\"><a><small>No reports</small></a></li>\n" +
4892 " </ul>\n" +
4893 " </li>\n" +
4894 " <li id=\"alert-notifications\" class=\"dropdown ng-cloak\" data-uib-dropdown auto-close=\"outsideClick\">\n" +
4895 " <a class=\"dropdown-toggle\" data-uib-dropdown-toggle>\n" +
4896 " <span class=\"badge {{ activeEvents ? 'danger' : '' }}\">{{$ctrl.activeEvents}}</span>\n" +
4897 " <span class=\"fa fa-bell-o\"></span></a>\n" +
4898 " <ul class=\"dropdown-menu\">\n" +
4899 " <li role=\"presentation\" class=\"dropdown-header\">\n" +
4900 " <a data-ui-sref=\"events\" class=\"btn btn-xs btn-default\">Show me more</a></li>\n" +
4901 " <li role=\"presentation\" class=\"dropdown-header\">Latest events</li>\n" +
4902 " <li data-ng-repeat=\"event in $ctrl.latestEvents\" role=\"presentation\">\n" +
4903 " <a data-ng-click=\"$ctrl.clickedEvent(event)\"><small class=\"resource-name\">For {{ event.resource_name }}</small><br/>\n" +
4904 " <small>{{ event.text |truncate:65}}</small><br/>\n" +
4905 " <small class=\"date\" data-uib-tooltip=\"{{event.start_date}}\">created: <iso-to-relative-time time=\"{{event.start_date}}\"/></small>\n" +
4906 " <small class=\"date\" data-ng-show=\"event.end_date\" data-uib-tooltip=\"{{event.end_date}}\">closed: <iso-to-relative-time time=\"{{event.end_date}}\"/></small>\n" +
4907 " </a>\n" +
4908 " </li>\n" +
4909 " <li data-ng-if=\"$ctrl.latestEvents.length == 0\"><a><small>No events</small></a></li>\n" +
4910 " </ul>\n" +
4911 " </li>\n" +
4912 "\n" +
4913 " <li id=\"dashboards\" class=\"dropdown\" data-uib-dropdown>\n" +
4914 " <a class=\"dropdown-toggle\" data-uib-dropdown-toggle tooltip-placement=\"bottom\" data-uib-tooltip=\"Dashboards\">\n" +
4915 " <span class=\"fa fa-bar-chart-o \"></span></a>\n" +
4916 " <ul class=\"dropdown-menu\">\n" +
4917 " <li role=\"presentation\"><a data-ui-sref=\"front_dashboard\">Main dashboard</a></li>\n" +
4918 " <li role=\"presentation\" ng-repeat=\"item in $ctrl.AeConfig.topNav.menu_dashboards_items\">\n" +
4919 " <a data-ui-sref=\"{{ item.sref }}\">{{ item.label }}</a>\n" +
4920 " </li>\n" +
4921 " </ul>\n" +
4922 " </li>\n" +
4923 "\n" +
4924 " <li class=\"dropdown\" data-uib-dropdown>\n" +
4925 " <a class=\"dropdown-toggle\" data-uib-dropdown-toggle tooltip-placement=\"bottom\" data-uib-tooltip=\"Reports\">\n" +
4926 " <span class=\"fa fa-exclamation-triangle\"></span></a>\n" +
4927 " <ul class=\"dropdown-menu\">\n" +
4928 " <li role=\"presentation\">\n" +
4929 " <a data-ui-sref=\"report.list({resource:$ctrl.stateHolder.resource})\">Error Reports</a>\n" +
4930 " </li>\n" +
4931 " <li role=\"presentation\">\n" +
4932 " <a data-ui-sref=\"report.list_slow({resource:$ctrl.stateHolder.resource})\">Slowness Reports</a>\n" +
4933 " </li>\n" +
4934 "\n" +
4935 " </ul>\n" +
4936 " </li>\n" +
4937 "\n" +
4938 " <li>\n" +
4939 " <a data-ui-sref=\"logs({resource:$ctrl.stateHolder.resource})\" data-uib-tooltip=\"Logs\" tooltip-placement=\"bottom\"><span class=\"fa fa-list-alt \"></span></a></li>\n" +
4940 " <li>\n" +
4941 " <a data-ui-sref=\"user\" data-uib-tooltip=\"Settings\" tooltip-placement=\"bottom\"><span class=\"fa fa-cog \"></span></a>\n" +
4942 " </li>\n" +
4943 " <li class=\"dropdown\" data-uib-dropdown data-ng-if=\"$ctrl.AeConfig.topNav.menu_admin_items.length\">\n" +
4944 " <a class=\"dropdown-toggle\" data-uib-dropdown-toggle tooltip-placement=\"bottom\" data-uib-tooltip=\"Admin Settings\">\n" +
4945 " <span class=\"fa fa-wrench\"></span></a>\n" +
4946 " <ul class=\"dropdown-menu\">\n" +
4947 " <li role=\"presentation\" ng-repeat=\"item in $ctrl.AeConfig.topNav.menu_admin_items\">\n" +
4948 " <a data-ui-sref=\"{{ item.sref }}\">{{ item.label }}</a>\n" +
4949 " </li>\n" +
4950 " </ul>\n" +
4951 " </li>\n" +
4952 " <li><a href=\"{{ $ctrl.AeConfig.urls.otherRoutes.signOut }}\" target=\"_self\"\n" +
4953 " data-uib-tooltip=\"Sign out\" tooltip-placement=\"bottom\">\n" +
4954 " <span class=\"fa fa-power-off \"></span></a></li>\n" +
4955 " </ul>\n" +
4956 " <ul class=\"nav navbar-nav pull-right\" ng-if=\"$ctrl.stateHolder.AeUser.id === null\">\n" +
4957 " <li><a href=\"{{ $ctrl.AeConfig.urls.otherRoutes.register }}\" target=\"_self\" class=\"btn btn-orange\">Sign In</a></li>\n" +
4958 " </ul>\n" +
4959 " </div><!-- /.navbar-collapse -->\n" +
4960 " </div><!-- /.container-fluid -->\n" +
4961 " </div>\n" +
5196 " </div>\n" +
5197 "\n" +
5198 " <table class=\"table table-striped\" ng-if=\"applications.applications.length > 0\">\n" +
5199 " <thead>\n" +
5200 " <tr>\n" +
5201 " <th class=\"resource_name\">Resource Name</th>\n" +
5202 " <th class=\"domains\">Domains</th>\n" +
5203 " <th class=\"options\">Options</th>\n" +
5204 " </tr>\n" +
5205 " </thead>\n" +
5206 " <tbody>\n" +
5207 " <tr class=\"r{{$index+1}}\" ng-repeat=\"application in applications.applications\">\n" +
5208 " <td>{{application.resource_name}}</td>\n" +
5209 " <td>{{application.domains}}</td>\n" +
5210 " <td class=\"options\">\n" +
5211 " <a class=\"btn btn-default\" data-ui-sref=\"applications.update({resourceId:application.resource_id})\" data-toggle=\"tooltip\" title=\"Update application\"><span class=\"fa fa-cog\"></span> Update</a>\n" +
5212 " <a class=\"btn btn-default\" data-ui-sref=\"applications.integrations({resourceId:application.resource_id})\" data-toggle=\"tooltip\" title=\"Manage Integrations\"><span class=\"fa fa-wrench\"></span> Integrations</a>\n" +
5213 " </td>\n" +
5214 " </tr>\n" +
5215 " </tbody>\n" +
5216 " </table>\n" +
5217 "\n" +
5218 "</div>\n"
5219 );
5220
5221
5222 $templateCache.put('templates/applications/parent_view.html',
5223 "<div class=\"row application-management\">\n" +
5224 " <div class=\"col-sm-3\" id=\"menu\">\n" +
5225 " <div ng-include=\"'templates/user/menu.html'\"></div>\n" +
4962 " </div>\n" +
5226 " </div>\n" +
5227 "\n" +
5228 " <div class=\"col-sm-9\" ui-view></div>\n" +
5229 "\n" +
4963 "</div>\n"
5230 "</div>\n"
4964 );
5231 );
4965
5232
4966
5233
4967 $templateCache.put('templates/dashboard.html',
5234 $templateCache.put('templates/dashboard.html',
4968 "<style type=\"text/css\">\n" +
5235 "<style type=\"text/css\">\n" +
4969 " #metrics_chart .c3-line {\n" +
5236 " #metrics_chart .c3-line {\n" +
4970 " stroke-width: 0px;\n" +
5237 " stroke-width: 0px;\n" +
4971 " }\n" +
5238 " }\n" +
4972 "\n" +
5239 "\n" +
4973 " #metrics_chart .c3-area {\n" +
5240 " #metrics_chart .c3-area {\n" +
4974 " stroke-width: 0;\n" +
5241 " stroke-width: 0;\n" +
4975 " opacity: 0.75;\n" +
5242 " opacity: 0.75;\n" +
4976 " }\n" +
5243 " }\n" +
4977 "\n" +
5244 "\n" +
4978 "\n" +
5245 "\n" +
4979 "</style>\n" +
5246 "</style>\n" +
4980 "\n" +
5247 "\n" +
4981 "<div class=\"row\">\n" +
5248 "<div class=\"row\">\n" +
4982 " <div class=\"col-sm-12 dashboard\" id=\"content\">\n" +
5249 " <div class=\"col-sm-12 dashboard\" id=\"content\">\n" +
4983 " <div ng-if=\"!index.stateHolder.AeUser.applications.length\">\n" +
5250 " <div ng-if=\"!index.stateHolder.AeUser.applications.length\">\n" +
4984 "\n" +
5251 "\n" +
4985 " <div ng-include=\"'templates/quickstart.html'\"></div>\n" +
5252 " <div ng-include=\"'templates/quickstart.html'\"></div>\n" +
4986 "\n" +
5253 "\n" +
4987 " </div>\n" +
5254 " </div>\n" +
4988 "\n" +
5255 "\n" +
4989 " <div ng-if=\"index.stateHolder.AeUser.applications.length\">\n" +
5256 " <div ng-if=\"index.stateHolder.AeUser.applications.length\">\n" +
4990 "\n" +
5257 "\n" +
4991 " <div class=\"row\">\n" +
5258 " <div class=\"row\">\n" +
4992 " <div class=\"col-sm-6\">\n" +
5259 " <div class=\"col-sm-6\">\n" +
4993 " <div class=\"panel panel-default\">\n" +
5260 " <div class=\"panel panel-default\">\n" +
4994 " <div class=\"panel-body\">\n" +
5261 " <div class=\"panel-body\">\n" +
4995 " <form class=\"graph-type form-inline\">\n" +
5262 " <form class=\"graph-type form-inline\">\n" +
4996 " <select ng-model=\"index.resource\" ng-options=\"r.resource_id as r.resource_name for r in index.stateHolder.AeUser.applications\" ng-change=\"index.updateSearchParams()\"\n" +
5263 " <select ng-model=\"index.resource\" ng-options=\"r.resource_id as r.resource_name for r in index.stateHolder.AeUser.applications\" ng-change=\"index.updateSearchParams()\"\n" +
4997 " class=\"SelectField form-control input-sm slim-input\"></select>\n" +
5264 " class=\"SelectField form-control input-sm slim-input\"></select>\n" +
4998 "\n" +
5265 "\n" +
4999 " <select class=\"SelectField form-control input-sm slim-input\" ng-model=\"index.timeSpan\"\n" +
5266 " <select class=\"SelectField form-control input-sm slim-input\" ng-model=\"index.timeSpan\"\n" +
5000 " ng-options=\"i as i.label for i in index.timeOptions | objectToOrderedArray:'minutes'\" ng-change=\"index.updateSearchParams()\"\n" +
5267 " ng-options=\"i as i.label for i in index.timeOptions | objectToOrderedArray:'minutes'\" ng-change=\"index.updateSearchParams()\"\n" +
5001 " class=\"SelectField\"></select>\n" +
5268 " class=\"SelectField\"></select>\n" +
5002 "\n" +
5269 "\n" +
5003 "\n" +
5270 "\n" +
5004 " <div class=\"btn-group\">\n" +
5271 " <div class=\"btn-group\">\n" +
5005 " <button type=\"button\" class=\"btn btn-primary btn-sm\" ng-model=\"index.graphType.selected\" ng-change=\"index.updateSearchParams()\"\n" +
5272 " <button type=\"button\" class=\"btn btn-primary btn-sm\" ng-model=\"index.graphType.selected\" ng-change=\"index.updateSearchParams()\"\n" +
5006 " uib-btn-radio=\"'requests_graphs'\" data-uib-tooltip=\"Requests per second\">\n" +
5273 " uib-btn-radio=\"'requests_graphs'\" data-uib-tooltip=\"Requests per second\">\n" +
5007 " <span class=\"fa fa-line-chart\"></span>\n" +
5274 " <span class=\"fa fa-line-chart\"></span>\n" +
5008 " </button>\n" +
5275 " </button>\n" +
5009 " <button type=\"button\" class=\"btn btn-primary btn-sm\" ng-model=\"index.graphType.selected\" ng-change=\"index.updateSearchParams()\"\n" +
5276 " <button type=\"button\" class=\"btn btn-primary btn-sm\" ng-model=\"index.graphType.selected\" ng-change=\"index.updateSearchParams()\"\n" +
5010 " uib-btn-radio=\"'response_graphs'\" data-uib-tooltip=\"Average response time\">\n" +
5277 " uib-btn-radio=\"'response_graphs'\" data-uib-tooltip=\"Average response time\">\n" +
5011 " <span class=\"fa fa-random\"></span>\n" +
5278 " <span class=\"fa fa-random\"></span>\n" +
5012 " </button>\n" +
5279 " </button>\n" +
5013 " <button type=\"button\" class=\"btn btn-primary btn-sm\" ng-model=\"index.graphType.selected\" ng-change=\"index.updateSearchParams()\"\n" +
5280 " <button type=\"button\" class=\"btn btn-primary btn-sm\" ng-model=\"index.graphType.selected\" ng-change=\"index.updateSearchParams()\"\n" +
5014 " uib-btn-radio=\"'metrics_graphs'\" data-uib-tooltip=\"Time spent per request\">\n" +
5281 " uib-btn-radio=\"'metrics_graphs'\" data-uib-tooltip=\"Time spent per request\">\n" +
5015 " <span class=\"fa fa-bar-chart-o\"></span>\n" +
5282 " <span class=\"fa fa-bar-chart-o\"></span>\n" +
5016 " </button>\n" +
5283 " </button>\n" +
5017 " <button type=\"button\" class=\"btn btn-primary btn-sm\" ng-model=\"index.graphType.selected\" ng-change=\"index.updateSearchParams()\"\n" +
5284 " <button type=\"button\" class=\"btn btn-primary btn-sm\" ng-model=\"index.graphType.selected\" ng-change=\"index.updateSearchParams()\"\n" +
5018 " uib-btn-radio=\"'report_graphs'\" data-uib-tooltip=\"Errors\">\n" +
5285 " uib-btn-radio=\"'report_graphs'\" data-uib-tooltip=\"Errors\">\n" +
5019 " <span class=\"fa fa-exclamation-triangle\"></span>\n" +
5286 " <span class=\"fa fa-exclamation-triangle\"></span>\n" +
5020 " </button>\n" +
5287 " </button>\n" +
5021 " <button type=\"button\" class=\"btn btn-primary btn-sm\" ng-model=\"index.graphType.selected\" ng-change=\"index.updateSearchParams()\"\n" +
5288 " <button type=\"button\" class=\"btn btn-primary btn-sm\" ng-model=\"index.graphType.selected\" ng-change=\"index.updateSearchParams()\"\n" +
5022 " uib-btn-radio=\"'slow_report_graphs'\" data-uib-tooltip=\"Slow reports\">\n" +
5289 " uib-btn-radio=\"'slow_report_graphs'\" data-uib-tooltip=\"Slow reports\">\n" +
5023 " <span class=\"fa fa-clock-o\"></span>\n" +
5290 " <span class=\"fa fa-clock-o\"></span>\n" +
5024 " </button>\n" +
5291 " </button>\n" +
5025 " </div>\n" +
5292 " </div>\n" +
5026 " </form>\n" +
5293 " </form>\n" +
5027 " <div class=\"clearfix\"></div>\n" +
5294 " <div class=\"clearfix\"></div>\n" +
5028 "\n" +
5295 "\n" +
5029 " <p ng-if=\"index.loading.series != false\" class=\"text-center\">\n" +
5296 " <p ng-if=\"index.loading.series != false\" class=\"text-center\">\n" +
5030 " <span class=\"fa fa-cog fa-spin fa-5x loader\"></span>\n" +
5297 " <span class=\"fa fa-cog fa-spin fa-5x loader\"></span>\n" +
5031 " </p>\n" +
5298 " </p>\n" +
5032 "\n" +
5299 "\n" +
5033 " <div ng-if=\"index.loading.series == false\">\n" +
5300 " <div ng-if=\"index.loading.series == false\">\n" +
5034 " <div ng-if=\"index.graphType.selected == 'requests_graphs'\">\n" +
5301 " <div ng-if=\"index.graphType.selected == 'requests_graphs'\">\n" +
5035 " <c3chart data-domid=\"reponse_chart\" data-data=\"index.requestsChartData\" data-config=\"index.requestsChartConfig\" update=\"true\">\n" +
5302 " <c3chart data-domid=\"reponse_chart\" data-data=\"index.requestsChartData\" data-config=\"index.requestsChartConfig\" update=\"true\">\n" +
5036 " </c3chart>\n" +
5303 " </c3chart>\n" +
5037 " </div>\n" +
5304 " </div>\n" +
5038 "\n" +
5305 "\n" +
5039 " <div ng-if=\"index.graphType.selected == 'response_graphs'\">\n" +
5306 " <div ng-if=\"index.graphType.selected == 'response_graphs'\">\n" +
5040 " <c3chart data-domid=\"reponse_chart\" data-data=\"index.responseChartData\" data-config=\"index.responseChartConfig\" update=\"true\">\n" +
5307 " <c3chart data-domid=\"reponse_chart\" data-data=\"index.responseChartData\" data-config=\"index.responseChartConfig\" update=\"true\">\n" +
5041 " </c3chart>\n" +
5308 " </c3chart>\n" +
5042 " </div>\n" +
5309 " </div>\n" +
5043 "\n" +
5310 "\n" +
5044 " <div ng-if=\"index.graphType.selected == 'metrics_graphs'\">\n" +
5311 " <div ng-if=\"index.graphType.selected == 'metrics_graphs'\">\n" +
5045 " <c3chart data-domid=\"metrics_chart\" data-data=\"index.metricsChartData\" data-config=\"index.metricsChartConfig\" update=\"true\">\n" +
5312 " <c3chart data-domid=\"metrics_chart\" data-data=\"index.metricsChartData\" data-config=\"index.metricsChartConfig\" update=\"true\">\n" +
5046 " </c3chart>\n" +
5313 " </c3chart>\n" +
5047 " </div>\n" +
5314 " </div>\n" +
5048 " <div ng-if=\"index.graphType.selected == 'report_graphs'\">\n" +
5315 " <div ng-if=\"index.graphType.selected == 'report_graphs'\">\n" +
5049 " <c3chart data-domid=\"reports_chart\" data-data=\"index.reportChartData\" data-config=\"index.reportChartConfig\" update=\"true\">\n" +
5316 " <c3chart data-domid=\"reports_chart\" data-data=\"index.reportChartData\" data-config=\"index.reportChartConfig\" update=\"true\">\n" +
5050 " </c3chart>\n" +
5317 " </c3chart>\n" +
5051 " </div>\n" +
5318 " </div>\n" +
5052 "\n" +
5319 "\n" +
5053 " <div ng-if=\"index.graphType.selected == 'slow_report_graphs'\">\n" +
5320 " <div ng-if=\"index.graphType.selected == 'slow_report_graphs'\">\n" +
5054 " <c3chart data-domid=\"slow_reports_chart\" data-data=\"index.reportSlowChartData\" data-config=\"index.reportSlowChartConfig\" update=\"true\">\n" +
5321 " <c3chart data-domid=\"slow_reports_chart\" data-data=\"index.reportSlowChartData\" data-config=\"index.reportSlowChartConfig\" update=\"true\">\n" +
5055 " </c3chart>\n" +
5322 " </c3chart>\n" +
5056 " </div>\n" +
5323 " </div>\n" +
5057 "\n" +
5324 "\n" +
5058 " <p ng-if=\"index.graphType.selected == 'requests_graphs'\" class=\"text-center\">\n" +
5325 " <p ng-if=\"index.graphType.selected == 'requests_graphs'\" class=\"text-center\">\n" +
5059 " <small>Average requests per second from all servers</small>\n" +
5326 " <small>Average requests per second from all servers</small>\n" +
5060 " </p>\n" +
5327 " </p>\n" +
5061 "\n" +
5328 "\n" +
5062 " <p ng-if=\"index.graphType.selected == 'response_graphs'\" class=\"text-center\">\n" +
5329 " <p ng-if=\"index.graphType.selected == 'response_graphs'\" class=\"text-center\">\n" +
5063 " <small>Average response time from all servers</small>\n" +
5330 " <small>Average response time from all servers</small>\n" +
5064 " </p>\n" +
5331 " </p>\n" +
5065 "\n" +
5332 "\n" +
5066 " <p ng-if=\"index.graphType.selected == 'metrics_graphs'\" class=\"text-center\">\n" +
5333 " <p ng-if=\"index.graphType.selected == 'metrics_graphs'\" class=\"text-center\">\n" +
5067 " <small>Aggregated average time spent per request - broken to layers</small>\n" +
5334 " <small>Aggregated average time spent per request - broken to layers</small>\n" +
5068 " </p>\n" +
5335 " </p>\n" +
5069 "\n" +
5336 "\n" +
5070 " <p ng-if=\"index.graphType.selected == 'report_graphs'\" class=\"text-center\">\n" +
5337 " <p ng-if=\"index.graphType.selected == 'report_graphs'\" class=\"text-center\">\n" +
5071 " <small>Aggregated reports sent by your application</small>\n" +
5338 " <small>Aggregated reports sent by your application</small>\n" +
5072 " </p>\n" +
5339 " </p>\n" +
5073 "\n" +
5340 "\n" +
5074 " <p ng-if=\"index.graphType.selected == 'slow_report_graphs'\" class=\"text-center\">\n" +
5341 " <p ng-if=\"index.graphType.selected == 'slow_report_graphs'\" class=\"text-center\">\n" +
5075 " <small>Aggregated slow reports sent by your application</small>\n" +
5342 " <small>Aggregated slow reports sent by your application</small>\n" +
5076 " </p>\n" +
5343 " </p>\n" +
5077 " </div>\n" +
5344 " </div>\n" +
5078 " </div>\n" +
5345 " </div>\n" +
5079 " </div>\n" +
5346 " </div>\n" +
5080 " </div>\n" +
5347 " </div>\n" +
5081 "\n" +
5348 "\n" +
5082 "\n" +
5349 "\n" +
5083 " <div class=\"col-sm-6\">\n" +
5350 " <div class=\"col-sm-6\">\n" +
5084 "\n" +
5351 "\n" +
5085 " <div id=\"server-container\">\n" +
5352 " <div id=\"server-container\">\n" +
5086 "\n" +
5353 "\n" +
5087 " <div ng-if=\"index.loading.apdex==false\" class=\"text-center m-b-1\">\n" +
5354 " <div ng-if=\"index.loading.apdex==false\" class=\"text-center m-b-1\">\n" +
5088 "\n" +
5355 "\n" +
5089 " <a data-ui-sref=\"report.list({resource:index.resource, start_date:index.startDateFilter})\" class=\"combined-stat text-center\" id=\"error-rate\">\n" +
5356 " <a data-ui-sref=\"report.list({resource:index.resource, start_date:index.startDateFilter})\" class=\"combined-stat text-center\" id=\"error-rate\">\n" +
5090 " <small>Exceptions</small>\n" +
5357 " <small>Exceptions</small>\n" +
5091 " <br/>\n" +
5358 " <br/>\n" +
5092 " <strong>{{ index.exceptions|numberToThousands}}</strong>\n" +
5359 " <strong>{{ index.exceptions|numberToThousands}}</strong>\n" +
5093 " <span class=\"fa fa-chevron-right\"></span>\n" +
5360 " <span class=\"fa fa-chevron-right\"></span>\n" +
5094 " </a><!--\n" +
5361 " </a><!--\n" +
5095 "\n" +
5362 "\n" +
5096 " --><a data-ui-sref=\"report.list_slow({resource:index.resource, min_duration:4, start_date:index.startDateFilter})\" class=\"combined-stat text-center\" id=\"frustrating-requests\" data-uib-tooltip=\"Requests over 4s\">\n" +
5363 " --><a data-ui-sref=\"report.list_slow({resource:index.resource, min_duration:4, start_date:index.startDateFilter})\" class=\"combined-stat text-center\" id=\"frustrating-requests\" data-uib-tooltip=\"Requests over 4s\">\n" +
5097 " <small>Frustrating req.</small>\n" +
5364 " <small>Frustrating req.</small>\n" +
5098 " <br/>\n" +
5365 " <br/>\n" +
5099 " <strong>{{index.frustratingRequests|numberToThousands}}</strong>\n" +
5366 " <strong>{{index.frustratingRequests|numberToThousands}}</strong>\n" +
5100 " <span class=\"fa fa-chevron-right\"></span>\n" +
5367 " <span class=\"fa fa-chevron-right\"></span>\n" +
5101 " </a><!--\n" +
5368 " </a><!--\n" +
5102 "\n" +
5369 "\n" +
5103 " --><a data-ui-sref=\"report.list_slow({resource:index.resource, min_duration:1, max_duration:4, start_date:index.startDateFilter})\" class=\"combined-stat text-center\" id=\"tolerated-requests\"\n" +
5370 " --><a data-ui-sref=\"report.list_slow({resource:index.resource, min_duration:1, max_duration:4, start_date:index.startDateFilter})\" class=\"combined-stat text-center\" id=\"tolerated-requests\"\n" +
5104 " data-uib-tooltip=\"Requests under 4s\">\n" +
5371 " data-uib-tooltip=\"Requests under 4s\">\n" +
5105 " <small>Tolerated req.</small>\n" +
5372 " <small>Tolerated req.</small>\n" +
5106 " <br/>\n" +
5373 " <br/>\n" +
5107 " <strong>{{index.toleratedRequests|numberToThousands}}</strong>\n" +
5374 " <strong>{{index.toleratedRequests|numberToThousands}}</strong>\n" +
5108 " <span class=\"fa fa-chevron-right\"></span>\n" +
5375 " <span class=\"fa fa-chevron-right\"></span>\n" +
5109 " </a><!--\n" +
5376 " </a><!--\n" +
5110 " \n" +
5377 " \n" +
5111 " --><a class=\"combined-stat text-center\" id=\"satisfying-requests\" data-uib-tooltip=\"Requests under 1s\">\n" +
5378 " --><a class=\"combined-stat text-center\" id=\"satisfying-requests\" data-uib-tooltip=\"Requests under 1s\">\n" +
5112 " <small>Satisfying req.</small>\n" +
5379 " <small>Satisfying req.</small>\n" +
5113 " <br/>\n" +
5380 " <br/>\n" +
5114 " <strong>{{index.satisfyingRequests|numberToThousands}}</strong>\n" +
5381 " <strong>{{index.satisfyingRequests|numberToThousands}}</strong>\n" +
5115 " </a><!--\n" +
5382 " </a><!--\n" +
5116 "\n" +
5383 "\n" +
5117 " --><a data-ui-sref=\"uptime({resource:index.resource})\" class=\"combined-stat text-center\" id=\"uptime-stats\" data-uib-tooltip=\"Uptime\">\n" +
5384 " --><a data-ui-sref=\"uptime({resource:index.resource})\" class=\"combined-stat text-center\" id=\"uptime-stats\" data-uib-tooltip=\"Uptime\">\n" +
5118 " <small>Uptime</small>\n" +
5385 " <small>Uptime</small>\n" +
5119 " <br/>\n" +
5386 " <br/>\n" +
5120 " <strong>{{index.uptimeStats}}%</strong>\n" +
5387 " <strong>{{index.uptimeStats}}%</strong>\n" +
5121 " <span class=\"fa fa-chevron-right\"></span>\n" +
5388 " <span class=\"fa fa-chevron-right\"></span>\n" +
5122 " </a>\n" +
5389 " </a>\n" +
5123 "\n" +
5390 "\n" +
5124 " <div class=\"clearfix\"></div>\n" +
5391 " <div class=\"clearfix\"></div>\n" +
5125 " </div>\n" +
5392 " </div>\n" +
5126 "\n" +
5393 "\n" +
5127 " <div id=\"apdex-rate\" class=\"m-b-1 panel panel-default\">\n" +
5394 " <div id=\"apdex-rate\" class=\"m-b-1 panel panel-default\">\n" +
5128 " <table class=\"servers table table-striped\">\n" +
5395 " <table class=\"servers table table-striped\">\n" +
5129 " <thead>\n" +
5396 " <thead>\n" +
5130 " <tr>\n" +
5397 " <tr>\n" +
5131 " <th></th>\n" +
5398 " <th></th>\n" +
5132 " <th>Server</th>\n" +
5399 " <th>Server</th>\n" +
5133 " <th>Apdex\n" +
5400 " <th>Apdex\n" +
5134 " <span class=\"fa fa-question-circle\"\n" +
5401 " <span class=\"fa fa-question-circle\"\n" +
5135 " data-uib-tooltip=\"Application Performance Index - measures viewer satisfaction based on response times and error rates\"></span>\n" +
5402 " data-uib-tooltip=\"Application Performance Index - measures viewer satisfaction based on response times and error rates\"></span>\n" +
5136 " </th>\n" +
5403 " </th>\n" +
5137 " <th>rpm</th>\n" +
5404 " <th>rpm</th>\n" +
5138 " <th>avg. response</th>\n" +
5405 " <th>avg. response</th>\n" +
5139 " </tr>\n" +
5406 " </tr>\n" +
5140 " </thead>\n" +
5407 " </thead>\n" +
5141 " <tbody>\n" +
5408 " <tbody>\n" +
5142 " <tr ng-if=\"index.loading.apdex!=false\" class=\"text-center\">\n" +
5409 " <tr ng-if=\"index.loading.apdex!=false\" class=\"text-center\">\n" +
5143 " <td colspan=\"5\"><span class=\"fa fa-cog fa-spin fa-5x loader\"></span></td>\n" +
5410 " <td colspan=\"5\"><span class=\"fa fa-cog fa-spin fa-5x loader\"></span></td>\n" +
5144 " </tr>\n" +
5411 " </tr>\n" +
5145 " <tr ng-repeat=\"server in index.apdexStats\" class=\"{{ server | apdexValue }}\"\n" +
5412 " <tr ng-repeat=\"server in index.apdexStats\" class=\"{{ server | apdexValue }}\"\n" +
5146 " ng-if=\"index.loading.apdex==false\">\n" +
5413 " ng-if=\"index.loading.apdex==false\">\n" +
5147 " <td><span class=\"fa fa-hdd-o\"></span></td>\n" +
5414 " <td><span class=\"fa fa-hdd-o\"></span></td>\n" +
5148 " <td>\n" +
5415 " <td>\n" +
5149 " <small><strong>{{ server.name }}</strong></small>\n" +
5416 " <small><strong>{{ server.name }}</strong></small>\n" +
5150 " </td>\n" +
5417 " </td>\n" +
5151 " <td class=\"apdex\">\n" +
5418 " <td class=\"apdex\">\n" +
5152 " <small><strong>{{ server.apdex }} %</strong></small>\n" +
5419 " <small><strong>{{ server.apdex }} %</strong></small>\n" +
5153 " </td>\n" +
5420 " </td>\n" +
5154 " <td>\n" +
5421 " <td>\n" +
5155 " <small><strong>{{ server.rpm }}rpm</strong></small>\n" +
5422 " <small><strong>{{ server.rpm }}rpm</strong></small>\n" +
5156 " </td>\n" +
5423 " </td>\n" +
5157 " <td>\n" +
5424 " <td>\n" +
5158 " <small><strong>{{ server.avg_response_time }}s</strong></small>\n" +
5425 " <small><strong>{{ server.avg_response_time }}s</strong></small>\n" +
5159 " </td>\n" +
5426 " </td>\n" +
5160 " </tr>\n" +
5427 " </tr>\n" +
5161 " </tbody>\n" +
5428 " </tbody>\n" +
5162 " </table>\n" +
5429 " </table>\n" +
5163 "\n" +
5430 "\n" +
5164 " </div>\n" +
5431 " </div>\n" +
5165 " </div>\n" +
5432 " </div>\n" +
5166 "\n" +
5433 "\n" +
5167 " </div>\n" +
5434 " </div>\n" +
5168 "\n" +
5435 "\n" +
5169 "\n" +
5436 "\n" +
5170 " </div>\n" +
5437 " </div>\n" +
5171 "\n" +
5438 "\n" +
5172 " <div class=\"row\">\n" +
5439 " <div class=\"row\">\n" +
5173 " <div class=\"col-sm-6\">\n" +
5440 " <div class=\"col-sm-6\">\n" +
5174 "\n" +
5441 "\n" +
5175 " <div class=\"panel panel-default\">\n" +
5442 " <div class=\"panel panel-default\">\n" +
5176 " <div class=\"panel-heading position-relative\">\n" +
5443 " <div class=\"panel-heading position-relative\">\n" +
5177 " <h3 class=\"panel-title\"><span class=\"fa fa-exclamation-triangle\"></span> Newest errors (real-time)\n" +
5444 " <h3 class=\"panel-title\"><span class=\"fa fa-exclamation-triangle\"></span> Newest errors (real-time)\n" +
5178 " </h3>\n" +
5445 " </h3>\n" +
5179 " <a tooltip-append-to-body=\"true\" data-uib-tooltip=\"Play/Pause stream\" class=\"btn btn-primary btn-sm pause_stream\" ng-model=\"index.stream.paused\" uib-btn-checkbox>\n" +
5446 " <a tooltip-append-to-body=\"true\" data-uib-tooltip=\"Play/Pause stream\" class=\"btn btn-primary btn-sm pause_stream\" ng-model=\"index.stream.paused\" uib-btn-checkbox>\n" +
5180 " <span class=\"fa {{stream.paused ? 'fa-play' : 'fa-pause'}}\"></span>\n" +
5447 " <span class=\"fa {{stream.paused ? 'fa-play' : 'fa-pause'}}\"></span>\n" +
5181 " </a>\n" +
5448 " </a>\n" +
5182 " <a tooltip-append-to-body=\"true\" data-uib-tooltip=\"Limit reports to current application\" class=\"btn btn-primary btn-sm limit_stream\" ng-model=\"index.stream.filtered\" uib-btn-checkbox>\n" +
5449 " <a tooltip-append-to-body=\"true\" data-uib-tooltip=\"Limit reports to current application\" class=\"btn btn-primary btn-sm limit_stream\" ng-model=\"index.stream.filtered\" uib-btn-checkbox>\n" +
5183 " <span class=\"fa fa-lock\"></span>\n" +
5450 " <span class=\"fa fa-lock\"></span>\n" +
5184 " </a>\n" +
5451 " </a>\n" +
5185 "\n" +
5452 "\n" +
5186 "\n" +
5453 "\n" +
5187 " </div>\n" +
5188 " <div class=\"panel-body\">\n" +
5189 "\n" +
5190 " <p ng-if=\"index.stream.reports.length === 0\">No new reports</p>\n" +
5191 "\n" +
5192 " <div small-report-list reports=\"index.stream.reports\" applications=\"index.applications\"></div>\n" +
5193 " </div>\n" +
5194 " </div>\n" +
5195 " </div>\n" +
5196 "\n" +
5197 " <div class=\"col-sm-6\">\n" +
5198 "\n" +
5199 " <div class=\"panel panel-default\">\n" +
5200 " <div class=\"panel-heading\">\n" +
5201 " <h3 class=\"panel-title\"><span class=\"fa fa-sort-amount-desc\"></span> Request breakdown over {{ index.timeSpan.label }}</h3>\n" +
5202 " </div>\n" +
5203 " <div class=\"panel-body\" id=\"view-breakdown-container\">\n" +
5204 " <p ng-if=\"index.loading.requestsBreakdown!=false\" class=\"text-center\">\n" +
5205 " <span class=\"fa fa-cog fa-spin fa-5x loader\"></span>\n" +
5206 " </p>\n" +
5207 "\n" +
5208 " <div class=\"report-list\">\n" +
5209 " <div ng-if=\"index.loading.requestsBreakdown==false\" ng-repeat=\"view in index.requestsBreakdown\">\n" +
5210 " <div class=\"view-info\">\n" +
5211 " <div class=\"view-name\">\n" +
5212 " <div class=\"bar\" style=\"width: {{view.percentage}}%\">\n" +
5213 " </div>\n" +
5214 " </div>\n" +
5215 " <strong ng-if=\"view.latest_details.length\">\n" +
5216 " <a data-ui-sref=\"report.list_slow({view_name:view.view_name})\">{{view.view_name}}</a></strong>\n" +
5217 " <strong ng-if=\"!view.latest_details.length\">{{view.view_name}}</strong>\n" +
5218 "\n" +
5219 " <div class=\"stats\">\n" +
5220 " <small>\n" +
5221 " avg. response <strong>{{view.avg_response}}s</strong> in\n" +
5222 " <span class=\"requests\"\n" +
5223 " data-uib-tooltip=\"Requests\"><strong>{{view.requests|numberToThousands}}</strong> requests</span>\n" +
5224 "\n" +
5225 " <span ng-if=\"view.latest_details\">\n" +
5226 " &nbsp;&nbsp; Latest reports:\n" +
5227 " <a ng-repeat=\"d in view.latest_details\" target=\"_blank\" ui-sref=\"report.view_detail({groupId:d.group_id, reportId:d.report_id})\"> <strong>{{$index+1}}</strong></a>\n" +
5228 " </span>\n" +
5229 " </small>\n" +
5230 " </div>\n" +
5231 "\n" +
5232 " </div>\n" +
5233 "\n" +
5234 " </div>\n" +
5235 " </div>\n" +
5236 "\n" +
5237 "\n" +
5238 " </div>\n" +
5239 " </div>\n" +
5240 "\n" +
5241 " </div>\n" +
5242 "\n" +
5243 " </div>\n" +
5244 "\n" +
5245 " <div class=\"row\">\n" +
5246 " <div class=\"col-sm-6\">\n" +
5247 "\n" +
5248 " <div class=\"panel panel-default\">\n" +
5249 " <div class=\"panel-heading\">\n" +
5250 " <h3 class=\"panel-title\">\n" +
5251 " <span class=\"fa fa-exclamation-triangle\"></span> Report groups trending over {{ index.timeSpan.label }}\n" +
5252 " </h3>\n" +
5253 " </div>\n" +
5254 " <div class=\"panel-body\">\n" +
5255 " <p ng-if=\"index.loading.reports != false\" class=\"text-center\">\n" +
5256 " <span class=\"fa fa-cog fa-spin fa-5x loader\"></span>\n" +
5257 " </p>\n" +
5258 "\n" +
5259 " <p ng-if=\"index.trendingReports.length == 0 && index.loading.reports == false\">\n" +
5260 " No reports found\n" +
5261 " </p>\n" +
5262 "\n" +
5263 " <div small-report-group-list groups=\"index.trendingReports\" applications=\"index.applications\" ng-if=\"index.loading.reports==false\"></div>\n" +
5264 " </div>\n" +
5265 " </div>\n" +
5266 "\n" +
5267 " </div>\n" +
5268 "\n" +
5269 " <div class=\"col-sm-6\">\n" +
5270 "\n" +
5271 "\n" +
5272 " <div class=\"panel panel-default\">\n" +
5273 " <div class=\"panel-heading\">\n" +
5274 " <h3 class=\"panel-title\">\n" +
5275 " Most common slow calls over {{ index.timeSpan.label }}\n" +
5276 " </h3>\n" +
5277 " </div>\n" +
5278 " <div class=\"panel-body\">\n" +
5279 "\n" +
5280 " <div ng-if=\"index.loading.slowCalls!=false\" class=\"text-center\">\n" +
5281 " <span class=\"fa fa-cog fa-spin fa-5x loader\"></span>\n" +
5282 " </div>\n" +
5283 "\n" +
5284 " <table id=\"slow-statements\" ng-if=\"index.loading.slowCalls==false\">\n" +
5285 " <tbody>\n" +
5286 " <tr ng-repeat=\"call in index.slowCalls\">\n" +
5287 " <td class=\"occurences\">\n" +
5288 " <span class=\"occurences\" data-uib-tooltip=\"Occurences\">{{call.occurences|numberToThousands}}</span>\n" +
5289 " </td>\n" +
5290 " <td class=\"ellipsis\">\n" +
5291 " <small title=\"{{call.statement}}\" class=\"statement\">{{call.statement}}</small>\n" +
5292 " <br/>\n" +
5293 " <span class=\"type\">{{call.statement_type}}</span>\n" +
5294 " <span class=\"subtype\">{{call.statement_subtype}}</span>\n" +
5295 " <span class=\"duration\" data-uib-tooltip=\"Average duration\">{{call.total_duration/call.occurences|round:2}}s</span>\n" +
5296 " <span class=\"report-list\">\n" +
5297 " Latest reports:\n" +
5298 " <a ng-repeat=\"d in call.latest_details\" target=\"_blank\" ui-sref=\"report.view_detail({groupId:d.group_id, reportId:d.report_id})\"> <strong>{{$index+1}}</strong> </a>\n" +
5299 " </span>\n" +
5300 " </td>\n" +
5301 " </tr>\n" +
5302 " </tbody>\n" +
5303 " </table>\n" +
5304 "\n" +
5305 "\n" +
5306 " </div>\n" +
5307 " </div>\n" +
5308 "\n" +
5309 "\n" +
5310 " </div>\n" +
5311 "\n" +
5312 " </div>\n" +
5313 " </div>\n" +
5314 " </div>\n" +
5315 "</div>\n"
5316 );
5317
5318
5319 $templateCache.put('templates/directives/permissions.html',
5320 "<div class=\"panel panel-default\">\n" +
5321 " <div class=\"panel-heading\">\n" +
5322 " <h3 class=\"panel-title\">Permissions</h3>\n" +
5323 " </div>\n" +
5324 " <div class=\"panel-body\">\n" +
5325 " <p>Here you can <strong>set permissions</strong> for others to access your app data.</p>\n" +
5326 "\n" +
5327 " <p>For example you can let other staff member view or alter error reports.</p>\n" +
5328 "\n" +
5329 " <div ng-if=\"permissions.possibleGroups.length > 0\">\n" +
5330 " <h3>Group permissions</h3>\n" +
5331 "\n" +
5332 " <ul class=\"list-group\">\n" +
5333 " <li ng-repeat=\"perm in permissions.currentPermissions.group\" class=\"animate-repeat list-group-item\">\n" +
5334 " <strong>{{ perm.self.group_name }}</strong>\n" +
5335 " <div ng-repeat=\"perm_name in perm.permissions\" class=\"pull-right animate-repeat m-l-1\">\n" +
5336 " <span ng-if=\"perm_name == '__all_permissions__'\">Resource owner</span>\n" +
5337 " <span class=\"dropdown\" data-uib-dropdown on-toggle=\"toggled(open)\" ng-if=\"perm_name != '__all_permissions__'\">\n" +
5338 " <a class=\"btn btn-danger btn-xs\" data-uib-dropdown-toggle><span class=\"fa fa-trash-o\"></span> {{ perm_name }}</a>\n" +
5339 " <ul class=\"dropdown-menu\">\n" +
5340 " <li><a>No</a></li>\n" +
5341 " <li><a ng-click=\"permissions.removeGroupPermission(perm_name, perm)\">Yes</a></li>\n" +
5342 " </ul>\n" +
5343 " </span>\n" +
5344 " </div>\n" +
5345 " </li>\n" +
5346 " </ul>\n" +
5347 "\n" +
5348 " <form name=\"add_permission\" class=\"form-inline\" ng-submit=\"permissions.setGroupPermission()\">\n" +
5349 " <div class=\"form-group\">\n" +
5350 " <select class=\"form-control\" ng-model=\"permissions.form.selectedGroup\" ng-options=\"g.id as g.group_name for g in permissions.possibleGroups\"></select>\n" +
5351 " </div>\n" +
5352 " <div class=\"form-group\">\n" +
5353 " <span ng-repeat=\"permission in permissions.possiblePermissions\">\n" +
5354 " <input type=\"checkbox\" ng-model=\"permissions.form.selectedGroupPermissions[permission]\"> {{ permission }}\n" +
5355 " </span>\n" +
5356 " </div>\n" +
5357 " <div class=\"form-group\">\n" +
5358 " <button class=\"btn btn-info\"><span class=\"fa fa-user\"></span> Give permission</button>\n" +
5359 " </div>\n" +
5360 " </form>\n" +
5361 "\n" +
5362 " </div>\n" +
5363 "\n" +
5364 " <h3>User permissions</h3>\n" +
5365 " <div>\n" +
5366 " <ul class=\"list-group\">\n" +
5367 " <li ng-repeat=\"perm in permissions.currentPermissions.user\" class=\"animate-repeat list-group-item\">\n" +
5368 " <strong>{{ perm.self.user_name }}</strong>\n" +
5369 " <div ng-repeat=\"perm_name in perm.permissions\" class=\"pull-right animate-repeat m-l-1\">\n" +
5370 " <span ng-if=\"perm_name == '__all_permissions__'\">Resource owner</span>\n" +
5371 " <span class=\"dropdown\" data-uib-dropdown on-toggle=\"toggled(open)\" ng-if=\"perm_name != '__all_permissions__'\">\n" +
5372 " <a class=\"btn btn-danger btn-xs\" data-uib-dropdown-toggle><span class=\"fa fa-trash-o\"></span> {{ perm_name }}</a>\n" +
5373 " <ul class=\"dropdown-menu\">\n" +
5374 " <li><a>No</a></li>\n" +
5375 " <li><a ng-click=\"permissions.removeUserPermission(perm_name,perm)\">Yes</a></li>\n" +
5376 " </ul>\n" +
5377 " </span>\n" +
5378 " </div>\n" +
5379 " </li>\n" +
5380 " </ul>\n" +
5381 " </div>\n" +
5382 " <div>\n" +
5383 " <p>First enter username or full email of person you want to give access to (the person needs to be <strong>already registered in AppEnlight</strong>)</p>\n" +
5384 "\n" +
5385 " <form name=\"add_permission\" class=\"form-inline\" ng-submit=\"permissions.setUserPermission()\">\n" +
5386 " <div class=\"form-group\">\n" +
5387 " <input type=\"text\" class=\"autocomplete form-control\" placeholder=\"Search for user/email\" ng-model=\"permissions.form.autocompleteUser\"\n" +
5388 " uib-typeahead=\"u.user for u in permissions.searchUsers($viewValue) | limitTo:8\" typeahead-loading=\"permissions.searchingUsers\" typeahead-wait-ms=\"250\"\n" +
5389 " typeahead-template-url=\"templates/directives/user_search_type_ahead.html\"\n" +
5390 " />\n" +
5391 " </div>\n" +
5392 " <div class=\"form-group\">\n" +
5393 " <span ng-repeat=\"permission in permissions.possiblePermissions\">\n" +
5394 " <input type=\"checkbox\" ng-model=\"permissions.form.selectedUserPermissions[permission]\"> {{ permission }}\n" +
5395 " </span>\n" +
5396 " </div>\n" +
5397 " <div class=\"form-group\">\n" +
5398 " <button class=\"btn btn-info\" ng-disabled=\"!permissions.form.autocompleteUser\"><span class=\"fa fa-user\"></span> Give permission</button>\n" +
5399 " </div>\n" +
5454 " </div>\n" +
5400 " </form>\n" +
5455 " <div class=\"panel-body\">\n" +
5456 "\n" +
5457 " <p ng-if=\"index.stream.reports.length === 0\">No new reports</p>\n" +
5458 "\n" +
5459 " <div small-report-list reports=\"index.stream.reports\" applications=\"index.applications\"></div>\n" +
5401 " </div>\n" +
5460 " </div>\n" +
5402 " </div>\n" +
5461 " </div>\n" +
5403 "</div>\n"
5404 );
5405
5406
5407 $templateCache.put('templates/directives/plugin_config.html',
5408 "<div ng-repeat=\"tmpl in plugin_ctrlr.inclusions track by $index\">\n" +
5409 " <div><strong>Plugin: {{tmpl.name}}</strong></div>\n" +
5410 " <ng-include src=\"tmpl.template\"></ng-include>\n" +
5411 " <hr/>\n" +
5412 "</div>\n"
5413 );
5414
5415
5416 $templateCache.put('templates/directives/postprocess_action.html',
5417 "<div class=\"panel panel-default action\">\n" +
5418 " <div class=\"panel-body form-inline\">\n" +
5419 " <div class=\"pull-right\">\n" +
5420 " <span class=\"dropdown\" data-uib-dropdown>\n" +
5421 " <a class=\"btn btn-danger\" data-uib-dropdown-toggle><span class=\"fa fa-trash-o\"></span></a>\n" +
5422 " <ul class=\"dropdown-menu\">\n" +
5423 " <li><a>No</a></li>\n" +
5424 " <li><a ng-click=\"ctrl.deleteAction(ctrl.action)\">Yes</a></li>\n" +
5425 " </ul>\n" +
5426 " </span>\n" +
5427 " </div>\n" +
5462 " </div>\n" +
5428 "\n" +
5463 "\n" +
5429 " <div class=\"form-group\">\n" +
5464 " <div class=\"col-sm-6\">\n" +
5430 " <label>Action</label>\n" +
5431 "\n" +
5465 "\n" +
5432 " <div class=\"form-group\">\n" +
5466 " <div class=\"panel panel-default\">\n" +
5433 " <select class=\"form-control\" ng-model=\"ctrl.action.new_value\" ng-options=\"f[0] as f[1] for f in ctrl.possibleActions\" ng-change=\"ctrl.setDirty()\"></select>\n" +
5467 " <div class=\"panel-heading\">\n" +
5468 " <h3 class=\"panel-title\"><span class=\"fa fa-sort-amount-desc\"></span> Request breakdown over {{ index.timeSpan.label }}</h3>\n" +
5434 " </div>\n" +
5469 " </div>\n" +
5470 " <div class=\"panel-body\" id=\"view-breakdown-container\">\n" +
5471 " <p ng-if=\"index.loading.requestsBreakdown!=false\" class=\"text-center\">\n" +
5472 " <span class=\"fa fa-cog fa-spin fa-5x loader\"></span>\n" +
5473 " </p>\n" +
5435 "\n" +
5474 "\n" +
5436 " <a class=\"btn btn-success\" ng-if=\"ctrl.action.dirty\" ng-click=\"ctrl.saveAction()\"><span class=\"fa fa-save\"></span> &nbsp;Save changes</a>\n" +
5475 " <div class=\"report-list\">\n" +
5437 "\n" +
5476 " <div ng-if=\"index.loading.requestsBreakdown==false\" ng-repeat=\"view in index.requestsBreakdown\">\n" +
5477 " <div class=\"view-info\">\n" +
5478 " <div class=\"view-name\">\n" +
5479 " <div class=\"bar\" style=\"width: {{view.percentage}}%\">\n" +
5438 " </div>\n" +
5480 " </div>\n" +
5439 " <hr/>\n" +
5440 " <p>Meeting following criteria:</p>\n" +
5441 " <form-errors errors=\"ctrl.errors\"></form-errors>\n" +
5442 " {{ctrl.rule}}\n" +
5443 " <rule rule=\"ctrl.action.rule\" rule-definitions=\"ctrl.ruleDefinitions\" parent-rule=\"null\" parent-obj=\"ctrl.action\"></rule>\n" +
5444 " </div>\n" +
5481 " </div>\n" +
5445 "</div>\n"
5482 " <strong ng-if=\"view.latest_details.length\">\n" +
5446 );
5483 " <a data-ui-sref=\"report.list_slow({view_name:view.view_name})\">{{view.view_name}}</a></strong>\n" +
5447
5484 " <strong ng-if=\"!view.latest_details.length\">{{view.view_name}}</strong>\n" +
5448
5485 "\n" +
5449 $templateCache.put('templates/directives/report_alert_action.html',
5486 " <div class=\"stats\">\n" +
5450 "<div class=\"panel panel-default action\">\n" +
5487 " <small>\n" +
5451 " <div class=\"panel-body form-inline\">\n" +
5488 " avg. response <strong>{{view.avg_response}}s</strong> in\n" +
5452 " <div class=\"pull-right\">\n" +
5489 " <span class=\"requests\"\n" +
5453 " <span class=\"dropdown\" data-uib-dropdown>\n" +
5490 " data-uib-tooltip=\"Requests\"><strong>{{view.requests|numberToThousands}}</strong> requests</span>\n" +
5454 " <a class=\"btn btn-danger\" data-uib-dropdown-toggle><span class=\"fa fa-trash-o\"></span></a>\n" +
5491 "\n" +
5455 " <ul class=\"dropdown-menu\">\n" +
5492 " <span ng-if=\"view.latest_details\">\n" +
5456 " <li><a>No</a></li>\n" +
5493 " &nbsp;&nbsp; Latest reports:\n" +
5457 " <li><a ng-click=\"ctrl.deleteAction(ctrl.actions, ctrl.action)\">Yes</a></li>\n" +
5494 " <a ng-repeat=\"d in view.latest_details\" target=\"_blank\" ui-sref=\"report.view_detail({groupId:d.group_id, reportId:d.report_id})\"> <strong>{{$index+1}}</strong></a>\n" +
5458 " </ul>\n" +
5459 " </span>\n" +
5495 " </span>\n" +
5496 " </small>\n" +
5460 " </div>\n" +
5497 " </div>\n" +
5461 "\n" +
5498 "\n" +
5462 " <div class=\"form-group\">\n" +
5463 " <label>Applies to</label>\n" +
5464 " <select class=\"form-control\" ng-model=\"ctrl.action.resource_id\" ng-options=\"f.resource_id as f.resource_name for f in ctrl.applications\" ng-change=\"ctrl.setDirty()\">\n" +
5465 " <option value=\"\">All Resources</option>\n" +
5466 " </select>\n" +
5467 " </div>\n" +
5499 " </div>\n" +
5468 " <div class=\"form-group\">\n" +
5469 " <label>Notify</label>\n" +
5470 " <select class=\"form-control\" ng-model=\"ctrl.action.action\" ng-change=\"ctrl.setDirty()\" ng-options=\"f[0] as f[1] for f in ctrl.possibleNotifications\"></select>\n" +
5471 "\n" +
5472 " <a class=\"btn btn-success\" ng-if=\"ctrl.action.dirty\" ng-click=\"ctrl.saveAction()\"><span class=\"fa fa-save\"></span> &nbsp;Save changes</a>\n" +
5473 "\n" +
5500 "\n" +
5474 " </div>\n" +
5501 " </div>\n" +
5475 " <div>\n" +
5476 " <p><strong>Channels:</strong></p>\n" +
5477 " <ul class=\"list-group\">\n" +
5478 " <li class=\"list-group-item\" ng-repeat=\"channel in ctrl.action.channels\">\n" +
5479 " <strong>{{channel.channel_visible_value}}</strong>\n" +
5480 " <div class=\"pull-right\">\n" +
5481 " <span class=\"dropdown\" data-uib-dropdown>\n" +
5482 " <a class=\"btn btn-danger btn-xs\" data-uib-dropdown-toggle><span class=\"fa fa-trash-o\"></span></a>\n" +
5483 " <ul class=\"dropdown-menu\">\n" +
5484 " <li><a>No</a></li>\n" +
5485 " <li><a ng-click=\"ctrl.unBindChannel(channel)\">Yes</a></li>\n" +
5486 " </ul>\n" +
5487 " </span>\n" +
5488 " </div>\n" +
5502 " </div>\n" +
5489 " </li>\n" +
5503 "\n" +
5490 " </ul>\n" +
5504 "\n" +
5491 " <div class=\"form-group\" ng-if=\"ctrl.possibleChannels.length\">\n" +
5492 " <select class=\"form-control\" ng-model=\"ctrl.channelToBind\" ng-options=\"c as c.channel_visible_value for c in ctrl.possibleChannels |filter: c.supports_report_alerting\"></select>\n" +
5493 " <a class=\"btn btn-info\" ng-click=\"ctrl.bindChannel(channel, ctrl.action)\"><span class=\"fa fa-plus-circle\"></span> Add Channel</a>\n" +
5494 " </div>\n" +
5505 " </div>\n" +
5495 " <div class=\"alert alert-danger\" ng-if=\"!ctrl.possibleChannels.length\">\n" +
5496 " <span class=\"fa fa-exclamation-triangle \"></span>You need to create an alert channel before you can assign it to your rule.\n" +
5497 " </div>\n" +
5506 " </div>\n" +
5498 "\n" +
5507 "\n" +
5499 " </div>\n" +
5508 " </div>\n" +
5500 " <hr/>\n" +
5509 "\n" +
5501 " <p>Meeting following criteria:</p>\n" +
5502 " <form-errors errors=\"ctrl.errors\"></form-errors>\n" +
5503 " <rule rule=\"ctrl.action.rule\" rule-definitions=\"ctrl.ruleDefinitions\" parent-rule=\"null\" parent-obj=\"ctrl.action\"></rule>\n" +
5504 " </div>\n" +
5510 " </div>\n" +
5505 "</div>\n"
5506 );
5507
5508
5509 $templateCache.put('templates/directives/rule_read_only.html',
5510 "<div class=\"rule-read-only\">\n" +
5511 "\n" +
5511 "\n" +
5512 " <span class=\"form-group\">\n" +
5512 " <div class=\"row\">\n" +
5513 " {{rule_ctrlr.readOnlyPossibleFields[rule_ctrlr.rule.field]}}\n" +
5513 " <div class=\"col-sm-6\">\n" +
5514 " </span>\n" +
5515 "\n" +
5514 "\n" +
5516 " <span ng-if=\"rule_ctrlr.rule.field != '__AND__' && rule_ctrlr.rule.field !='__OR__' && rule_ctrlr.rule.field !='__NOT__'\">\n" +
5515 " <div class=\"panel panel-default\">\n" +
5517 " is {{rule_ctrlr.ruleDefinitions.allOps[rule_ctrlr.rule.op]}} {{rule_ctrlr.rule.value}}\n" +
5516 " <div class=\"panel-heading\">\n" +
5518 " </span>\n" +
5517 " <h3 class=\"panel-title\">\n" +
5518 " <span class=\"fa fa-exclamation-triangle\"></span> Report groups trending over {{ index.timeSpan.label }}\n" +
5519 " </h3>\n" +
5520 " </div>\n" +
5521 " <div class=\"panel-body\">\n" +
5522 " <p ng-if=\"index.loading.reports != false\" class=\"text-center\">\n" +
5523 " <span class=\"fa fa-cog fa-spin fa-5x loader\"></span>\n" +
5524 " </p>\n" +
5519 "\n" +
5525 "\n" +
5520 " <span ng-if=\"rule_ctrlr.rule.field == '__AND__' || rule_ctrlr.rule.field =='__OR__' || rule_ctrlr.rule.field =='__NOT__'\">\n" +
5526 " <p ng-if=\"index.trendingReports.length == 0 && index.loading.reports == false\">\n" +
5521 " <p ng-if=\"parent\"><strong>Subrules</strong></p>\n" +
5527 " No reports found\n" +
5522 " <div ng-repeat=\"subrule in rule_ctrlr.rule.rules\" class=\"m-l-2\">\n" +
5528 " </p>\n" +
5523 "\n" +
5529 "\n" +
5524 " <div class=\"panel panel-default\">\n" +
5530 " <div small-report-group-list groups=\"index.trendingReports\" applications=\"index.applications\" ng-if=\"index.loading.reports==false\"></div>\n" +
5525 " <div class=\"panel-body form-inline\">\n" +
5526 " <recursive>\n" +
5527 " <rule-read-only rule=\"subrule\" rule-definitions=\"rule_ctrlr.ruleDefinitions\" parent-rule=\"null\" parent-obj=\"rule_ctrlr.parentObj\"></rule-read-only>\n" +
5528 " </recursive>\n" +
5529 " </div>\n" +
5531 " </div>\n" +
5530 " </div>\n" +
5532 " </div>\n" +
5533 "\n" +
5531 " </div>\n" +
5534 " </div>\n" +
5532 "\n" +
5535 "\n" +
5533 " </span>\n" +
5536 " <div class=\"col-sm-6\">\n" +
5534 "</div>\n"
5535 );
5536
5537
5538 $templateCache.put('templates/directives/rule.html',
5539 "<div class=\"rule form-inline\">\n" +
5540 "\n" +
5537 "\n" +
5541 " <div class=\"form-group\">\n" +
5538 "\n" +
5542 " <select class=\"form-control\"\n" +
5539 " <div class=\"panel panel-default\">\n" +
5543 " ng-model=\"rule_ctrlr.rule.field\"\n" +
5540 " <div class=\"panel-heading\">\n" +
5544 " ng-change=\"rule_ctrlr.fieldChange()\"\n" +
5541 " <h3 class=\"panel-title\">\n" +
5545 " ng-options=\"key as label for (key, label) in rule_ctrlr.ruleDefinitions.possibleFields\"></select>\n" +
5542 " Most common slow calls over {{ index.timeSpan.label }}\n" +
5543 " </h3>\n" +
5546 " </div>\n" +
5544 " </div>\n" +
5545 " <div class=\"panel-body\">\n" +
5547 "\n" +
5546 "\n" +
5548 " <div ng-if=\"rule_ctrlr.rule.field != '__AND__' && rule_ctrlr.rule.field !='__OR__' && rule_ctrlr.rule.field !='__NOT__'\" class=\"form-group\">\n" +
5547 " <div ng-if=\"index.loading.slowCalls!=false\" class=\"text-center\">\n" +
5548 " <span class=\"fa fa-cog fa-spin fa-5x loader\"></span>\n" +
5549 " </div>\n" +
5549 "\n" +
5550 "\n" +
5550 " <select ng-model=\"rule_ctrlr.rule.op\" class=\"form-control\"\n" +
5551 " <table id=\"slow-statements\" ng-if=\"index.loading.slowCalls==false\">\n" +
5551 " ng-change=\"rule_ctrlr.setDirty()\"\n" +
5552 " <tbody>\n" +
5552 " ng-options=\"op as rule_ctrlr.ruleDefinitions.allOps[op] for op in rule_ctrlr.ruleDefinitions.fieldOps[rule_ctrlr.rule.field]\">\n" +
5553 " <tr ng-repeat=\"call in index.slowCalls\">\n" +
5553 " </select>\n" +
5554 " <td class=\"occurences\">\n" +
5555 " <span class=\"occurences\" data-uib-tooltip=\"Occurences\">{{call.occurences|numberToThousands}}</span>\n" +
5556 " </td>\n" +
5557 " <td class=\"ellipsis\">\n" +
5558 " <small title=\"{{call.statement}}\" class=\"statement\">{{call.statement}}</small>\n" +
5559 " <br/>\n" +
5560 " <span class=\"type\">{{call.statement_type}}</span>\n" +
5561 " <span class=\"subtype\">{{call.statement_subtype}}</span>\n" +
5562 " <span class=\"duration\" data-uib-tooltip=\"Average duration\">{{call.total_duration/call.occurences|round:2}}s</span>\n" +
5563 " <span class=\"report-list\">\n" +
5564 " Latest reports:\n" +
5565 " <a ng-repeat=\"d in call.latest_details\" target=\"_blank\" ui-sref=\"report.view_detail({groupId:d.group_id, reportId:d.report_id})\"> <strong>{{$index+1}}</strong> </a>\n" +
5566 " </span>\n" +
5567 " </td>\n" +
5568 " </tr>\n" +
5569 " </tbody>\n" +
5570 " </table>\n" +
5554 "\n" +
5571 "\n" +
5555 " <input type=\"text\" placeholder=\"Value\" ng-model=\"rule_ctrlr.rule.value\" ng-change=\"rule_ctrlr.setDirty()\" class=\"form-control\">\n" +
5556 "\n" +
5572 "\n" +
5557 " </div>\n" +
5573 " </div>\n" +
5574 " </div>\n" +
5575 "\n" +
5558 "\n" +
5576 "\n" +
5559 " <span ng-if=\"rule_ctrlr.rule.field == '__AND__' || rule_ctrlr.rule.field =='__OR__' || rule_ctrlr.rule.field =='__NOT__'\">\n" +
5560 " <p ng-if=\"parent\"><strong>Subrules</strong></p>\n" +
5561 " <div ng-repeat=\"subrule in rule_ctrlr.rule.rules\" class=\"m-l-2\">\n" +
5562 " <div class=\"panel panel-default\">\n" +
5563 " <div class=\"panel-body form-inline\">\n" +
5564 " <recursive>\n" +
5565 " <rule rule=\"subrule\" rule-definitions=\"rule_ctrlr.ruleDefinitions\" parent-rule=\"rule_ctrlr.rule\" parent-obj=\"rule_ctrlr.parentObj\"></rule>\n" +
5566 " </recursive>\n" +
5567 " </div>\n" +
5577 " </div>\n" +
5578 "\n" +
5568 " </div>\n" +
5579 " </div>\n" +
5569 " </div>\n" +
5580 " </div>\n" +
5570 "\n" +
5571 " <span ng-if=\"(rule_ctrlr.config.disable_subrules == false) == false\" class=\"btn btn-info\" ng-click=\"rule_ctrlr.add()\"><span class=\"fa fa-plus-circle\"></span> Add rule</span>\n" +
5572 "\n" +
5573 " </span>\n" +
5574 " <div class=\"pull-right\" ng-if=\"rule_ctrlr.parentRule\">\n" +
5575 " <span class=\"dropdown\" data-uib-dropdown>\n" +
5576 " <a class=\"btn btn-danger\" data-uib-dropdown-toggle><span class=\"fa fa-trash-o\"></span></a>\n" +
5577 " <ul class=\"dropdown-menu\">\n" +
5578 " <li><a>No</a></li>\n" +
5579 " <li><a ng-click=\"rule_ctrlr.deleteRule(rule_ctrlr.parentRule, rule_ctrlr.rule)\">Yes</a></li>\n" +
5580 " </ul>\n" +
5581 " </span>\n" +
5582 " </div>\n" +
5581 " </div>\n" +
5583 "</div>\n"
5582 "</div>\n"
5584 );
5583 );
5585
5584
5586
5585
5587 $templateCache.put('templates/directives/search_type_ahead.html',
5586 $templateCache.put('templates/directives/search_type_ahead.html',
5588 "<a>\n" +
5587 "<a>\n" +
5589 " <span class=\"tag\" ng-show=\"match.model.tag\">{{match.model.tag}}</span>\n" +
5588 " <span class=\"tag\" ng-show=\"match.model.tag\">{{match.model.tag}}</span>\n" +
5590 " <span class=\"tag\" ng-show=\"!match.model.tag\">{{match.label}}</span>\n" +
5589 " <span class=\"tag\" ng-show=\"!match.model.tag\">{{match.label}}</span>\n" +
5591 " <span ng-show=\"match.model.example\">-</span> <span class=\"example\">{{match.model.example}}</span>\n" +
5590 " <span ng-show=\"match.model.example\">-</span> <span class=\"example\">{{match.model.example}}</span>\n" +
5592 " <div class=\"description\">{{match.model.description}}</div>\n" +
5591 " <div class=\"description\">{{match.model.description}}</div>\n" +
5593 "\n" +
5592 "\n" +
5594 "</a>\n"
5593 "</a>\n"
5595 );
5594 );
5596
5595
5597
5596
5598 $templateCache.put('templates/directives/user_search_type_ahead.html',
5597 $templateCache.put('templates/directives/user_search_type_ahead.html',
5599 "<a>\n" +
5598 "<a>\n" +
5600 " <span>{{match.label}}</span> -\n" +
5599 " <span>{{match.label}}</span> -\n" +
5601 " <span class=\"color-secondary\">{{match.model.name}}</span>\n" +
5600 " <span class=\"color-secondary\">{{match.model.name}}</span>\n" +
5602 "</a>\n"
5601 "</a>\n"
5603 );
5602 );
5604
5603
5605
5604
5606 $templateCache.put('templates/events.html',
5605 $templateCache.put('templates/events.html',
5607 "<div class=\"panel panel-default\">\n" +
5606 "<div class=\"panel panel-default\">\n" +
5608 " <div class=\"panel-body\">\n" +
5607 " <div class=\"panel-body\">\n" +
5609 "\n" +
5608 "\n" +
5610 " <h1>Event history</h1>\n" +
5609 " <h1>Event history</h1>\n" +
5611 "\n" +
5610 "\n" +
5612 " <table class=\"table table-striped event-table\">\n" +
5611 " <table class=\"table table-striped event-table\">\n" +
5613 " <tr ng-repeat=\"event in events.events track by event.id\">\n" +
5612 " <tr ng-repeat=\"event in events.events track by event.id\">\n" +
5614 " <td class=\"text-center icons\">\n" +
5613 " <td class=\"text-center icons\">\n" +
5615 " <span ng-if=\"event.event_type === 1\" class=\"fa fa-exclamation-triangle fa-2x\" style=\"color:orangered\"></span>\n" +
5614 " <span ng-if=\"event.event_type === 1\" class=\"fa fa-exclamation-triangle fa-2x\" style=\"color:orangered\"></span>\n" +
5616 " <span ng-if=\"event.event_type === 3\" class=\"fa fa-clock-o fa-2x\" style=\"color:darkorange\"></span>\n" +
5615 " <span ng-if=\"event.event_type === 3\" class=\"fa fa-clock-o fa-2x\" style=\"color:darkorange\"></span>\n" +
5617 " <span ng-if=\"event.event_type === 7\" class=\"fa fa-question-circle fa-2x\" style=\"color:dimgrey\"></span>\n" +
5616 " <span ng-if=\"event.event_type === 7\" class=\"fa fa-question-circle fa-2x\" style=\"color:dimgrey\"></span>\n" +
5618 " <span ng-if=\"event.event_type === 9\" class=\"fa fa-line-chart fa-2x\" style=\"color:green\"></span>\n" +
5617 " <span ng-if=\"event.event_type === 9\" class=\"fa fa-line-chart fa-2x\" style=\"color:green\"></span>\n" +
5619 " </td>\n" +
5618 " </td>\n" +
5620 " <td>\n" +
5619 " <td>\n" +
5621 " <p>For <strong>{{ event.resource_name }}</strong></p>\n" +
5620 " <p>For <strong>{{ event.resource_name }}</strong></p>\n" +
5622 "\n" +
5621 "\n" +
5623 " <p>{{ event.text }}</p>\n" +
5622 " <p>{{ event.text }}</p>\n" +
5624 " <small class=\"date\" data-uib-tooltip=\"{{event.start_date}}\"> created:\n" +
5623 " <small class=\"date\" data-uib-tooltip=\"{{event.start_date}}\"> created:\n" +
5625 " <iso-to-relative-time time=\"{{event.start_date}}\"/>\n" +
5624 " <iso-to-relative-time time=\"{{event.start_date}}\"/>\n" +
5626 " </small>\n" +
5625 " </small>\n" +
5627 " <small class=\"date\" ng-show=\"event.end_date\" data-uib-tooltip=\"{{event.end_date}}\"> | closed:\n" +
5626 " <small class=\"date\" ng-show=\"event.end_date\" data-uib-tooltip=\"{{event.end_date}}\"> | closed:\n" +
5628 " <iso-to-relative-time time=\"{{event.end_date}}\"/>\n" +
5627 " <iso-to-relative-time time=\"{{event.end_date}}\"/>\n" +
5629 " </small>\n" +
5628 " </small>\n" +
5630 " </td>\n" +
5629 " </td>\n" +
5631 " <td class=\"options\">\n" +
5630 " <td class=\"options\">\n" +
5632 "\n" +
5631 "\n" +
5633 " <span class=\"dropdown pull-right\" ng-if=\"event.status === 1\" data-uib-dropdown on-toggle=\"toggled(open)\">\n" +
5632 " <span class=\"dropdown pull-right\" ng-if=\"event.status === 1\" data-uib-dropdown on-toggle=\"toggled(open)\">\n" +
5634 " <a class=\"dropdown-toggle btn btn-danger\" data-uib-dropdown-toggle>\n" +
5633 " <a class=\"dropdown-toggle btn btn-danger\" data-uib-dropdown-toggle>\n" +
5635 " <span class=\"fa fa-exclamation-circle\"></span>\n" +
5634 " <span class=\"fa fa-exclamation-circle\"></span>\n" +
5636 " </a>\n" +
5635 " </a>\n" +
5637 " <ul class=\"dropdown-menu\">\n" +
5636 " <ul class=\"dropdown-menu\">\n" +
5638 " <li>\n" +
5637 " <li>\n" +
5639 " <a ng-click=\"events.closeEvent(event)\">Close event</a>\n" +
5638 " <a ng-click=\"events.closeEvent(event)\">Close event</a>\n" +
5640 " <a>Do nothing</a>\n" +
5639 " <a>Do nothing</a>\n" +
5641 " </li>\n" +
5640 " </li>\n" +
5642 " </ul>\n" +
5641 " </ul>\n" +
5643 " </span>\n" +
5642 " </span>\n" +
5644 "\n" +
5643 "\n" +
5645 " </td>\n" +
5644 " </td>\n" +
5646 " </tr>\n" +
5645 " </tr>\n" +
5647 " </table>\n" +
5646 " </table>\n" +
5648 " </div>\n" +
5647 " </div>\n" +
5649 "</div>\n"
5648 "</div>\n"
5650 );
5649 );
5651
5650
5652
5651
5653 $templateCache.put('templates/integrations/bitbucket.html',
5652 $templateCache.put('templates/integrations/bitbucket.html',
5654 " <div class=\"modal-header\">\n" +
5653 " <div class=\"modal-header\">\n" +
5655 " <h3 class=\"m-t-0\">Add issue to Bitbucket</h3>\n" +
5654 " <h3 class=\"m-t-0\">Add issue to Bitbucket</h3>\n" +
5656 " </div>\n" +
5655 " </div>\n" +
5657 " <div class=\"modal-body\">\n" +
5656 " <div class=\"modal-body\">\n" +
5658 " <div class=\"alert alert-danger\" ng-repeat=\"msg in ctrl.error_messages\">{{msg}}</div>\n" +
5657 " <div class=\"alert alert-danger\" ng-repeat=\"msg in ctrl.error_messages\">{{msg}}</div>\n" +
5659 " <div class=\"text-center\" ng-show=\"ctrl.loading\">\n" +
5658 " <div class=\"text-center\" ng-show=\"ctrl.loading\">\n" +
5660 " <span class=\"fa fa-cog fa-spin fa-5x loader m-a-4\"></span>\n" +
5659 " <span class=\"fa fa-cog fa-spin fa-5x loader m-a-4\"></span>\n" +
5661 " </div>\n" +
5660 " </div>\n" +
5662 "\n" +
5661 "\n" +
5663 " <form role=\"form\" ng-show=\"!ctrl.loading\">\n" +
5662 " <form role=\"form\" ng-show=\"!ctrl.loading\">\n" +
5664 " <div class=\"form-group\">\n" +
5663 " <div class=\"form-group\">\n" +
5665 " <label for=\"issue_title\">Issue Title</label>\n" +
5664 " <label for=\"issue_title\">Issue Title</label>\n" +
5666 " <input type=\"text\" class=\"form-control\" id=\"issue_title\" placeholder=\"Issue title\" ng-model=\"ctrl.form.title\">\n" +
5665 " <input type=\"text\" class=\"form-control\" id=\"issue_title\" placeholder=\"Issue title\" ng-model=\"ctrl.form.title\">\n" +
5667 " </div>\n" +
5666 " </div>\n" +
5668 " <div class=\"form-group row\">\n" +
5667 " <div class=\"form-group row\">\n" +
5669 " <div class=\"col-sm-6\">\n" +
5668 " <div class=\"col-sm-6\">\n" +
5670 " <label for=\"issue_priority\">Priority</label>\n" +
5669 " <label for=\"issue_priority\">Priority</label>\n" +
5671 " <select class=\"form-control\" id=\"issue_priority\" ng-options=\"s for s in ctrl.priorities\" ng-model=\"ctrl.form.priority\"></select>\n" +
5670 " <select class=\"form-control\" id=\"issue_priority\" ng-options=\"s for s in ctrl.priorities\" ng-model=\"ctrl.form.priority\"></select>\n" +
5672 " </div>\n" +
5671 " </div>\n" +
5673 "\n" +
5672 "\n" +
5674 " <div class=\"col-sm-6\">\n" +
5673 " <div class=\"col-sm-6\">\n" +
5675 " <label for=\"issue_responsible\">Assignee</label>\n" +
5674 " <label for=\"issue_responsible\">Assignee</label>\n" +
5676 " <select class=\"form-control\" id=\"issue_responsible\" ng-options=\"a.user for a in ctrl.assignees\" ng-model=\"ctrl.form.responsible\"></select>\n" +
5675 " <select class=\"form-control\" id=\"issue_responsible\" ng-options=\"a.user for a in ctrl.assignees\" ng-model=\"ctrl.form.responsible\"></select>\n" +
5677 " </div>\n" +
5676 " </div>\n" +
5678 " </div>\n" +
5677 " </div>\n" +
5679 " <div class=\"form-group\">\n" +
5678 " <div class=\"form-group\">\n" +
5680 " <label for=\"issue_content\">Description</label>\n" +
5679 " <label for=\"issue_content\">Description</label>\n" +
5681 " <textarea id=\"issue_content\" class=\"form-control\" ng-model=\"ctrl.form.content\" style=\"min-height: 100px\"></textarea>\n" +
5680 " <textarea id=\"issue_content\" class=\"form-control\" ng-model=\"ctrl.form.content\" style=\"min-height: 100px\"></textarea>\n" +
5682 " </div>\n" +
5681 " </div>\n" +
5683 " </form>\n" +
5682 " </form>\n" +
5684 "\n" +
5683 "\n" +
5685 " </div>\n" +
5684 " </div>\n" +
5686 " <div class=\"modal-footer\">\n" +
5685 " <div class=\"modal-footer\">\n" +
5687 " <button class=\"btn btn-primary\" ng-click=\"ctrl.ok()\">Add issue</button>\n" +
5686 " <button class=\"btn btn-primary\" ng-click=\"ctrl.ok()\">Add issue</button>\n" +
5688 " <button class=\"btn btn-warning\" ng-click=\"ctrl.cancel()\">Cancel</button>\n" +
5687 " <button class=\"btn btn-warning\" ng-click=\"ctrl.cancel()\">Cancel</button>\n" +
5689 " </div>\n"
5688 " </div>\n"
5690 );
5689 );
5691
5690
5692
5691
5693 $templateCache.put('templates/integrations/github.html',
5692 $templateCache.put('templates/integrations/github.html',
5694 " <div class=\"modal-header\">\n" +
5693 " <div class=\"modal-header\">\n" +
5695 " <h3 class=\"m-t-0\">Add issue to Github</h3>\n" +
5694 " <h3 class=\"m-t-0\">Add issue to Github</h3>\n" +
5696 " </div>\n" +
5695 " </div>\n" +
5697 " <div class=\"modal-body\">\n" +
5696 " <div class=\"modal-body\">\n" +
5698 " <div class=\"alert alert-danger\" ng-repeat=\"msg in ctrl.error_messages\">{{msg}}</div>\n" +
5697 " <div class=\"alert alert-danger\" ng-repeat=\"msg in ctrl.error_messages\">{{msg}}</div>\n" +
5699 "\n" +
5698 "\n" +
5700 " <div class=\"text-center\" ng-show=\"ctrl.loading\">\n" +
5699 " <div class=\"text-center\" ng-show=\"ctrl.loading\">\n" +
5701 " <span class=\"fa fa-cog fa-spin fa-5x loader m-a-4\"></span>\n" +
5700 " <span class=\"fa fa-cog fa-spin fa-5x loader m-a-4\"></span>\n" +
5702 " </div>\n" +
5701 " </div>\n" +
5703 "\n" +
5702 "\n" +
5704 " <form role=\"form\" ng-show=\"!ctrl.loading\">\n" +
5703 " <form role=\"form\" ng-show=\"!ctrl.loading\">\n" +
5705 " <div class=\"form-group\">\n" +
5704 " <div class=\"form-group\">\n" +
5706 " <label for=\"issue_title\">Issue Title</label>\n" +
5705 " <label for=\"issue_title\">Issue Title</label>\n" +
5707 " <input type=\"text\" class=\"form-control\" id=\"issue_title\" placeholder=\"Issue title\" ng-model=\"ctrl.form.title\">\n" +
5706 " <input type=\"text\" class=\"form-control\" id=\"issue_title\" placeholder=\"Issue title\" ng-model=\"ctrl.form.title\">\n" +
5708 " </div>\n" +
5707 " </div>\n" +
5709 " <div class=\"form-group row\">\n" +
5708 " <div class=\"form-group row\">\n" +
5710 " <div class=\"col-sm-6\">\n" +
5709 " <div class=\"col-sm-6\">\n" +
5711 " <label for=\"issue_status\">Tag</label>\n" +
5710 " <label for=\"issue_status\">Tag</label>\n" +
5712 " <select class=\"form-control\" id=\"issue_status\" ng-options=\"s for s in ctrl.statuses\" ng-model=\"ctrl.form.status\"></select>\n" +
5711 " <select class=\"form-control\" id=\"issue_status\" ng-options=\"s for s in ctrl.statuses\" ng-model=\"ctrl.form.status\"></select>\n" +
5713 " </div>\n" +
5712 " </div>\n" +
5714 "\n" +
5713 "\n" +
5715 " <div class=\"col-sm-6\">\n" +
5714 " <div class=\"col-sm-6\">\n" +
5716 " <label for=\"issue_responsible\">Assignee</label>\n" +
5715 " <label for=\"issue_responsible\">Assignee</label>\n" +
5717 " <select class=\"form-control\" id=\"issue_responsible\" ng-options=\"a.user for a in ctrl.assignees\" ng-model=\"ctrl.form.responsible\"></select>\n" +
5716 " <select class=\"form-control\" id=\"issue_responsible\" ng-options=\"a.user for a in ctrl.assignees\" ng-model=\"ctrl.form.responsible\"></select>\n" +
5718 " </div>\n" +
5717 " </div>\n" +
5719 " </div>\n" +
5718 " </div>\n" +
5720 " <div class=\"form-group\">\n" +
5719 " <div class=\"form-group\">\n" +
5721 " <label for=\"issue_description\">Description</label>\n" +
5720 " <label for=\"issue_description\">Description</label>\n" +
5722 " <textarea id=\"issue_description\" class=\"form-control\" ng-model=\"ctrl.form.content\" style=\"min-height: 100px\"></textarea>\n" +
5721 " <textarea id=\"issue_description\" class=\"form-control\" ng-model=\"ctrl.form.content\" style=\"min-height: 100px\"></textarea>\n" +
5723 " </div>\n" +
5722 " </div>\n" +
5724 " </form>\n" +
5723 " </form>\n" +
5725 "\n" +
5724 "\n" +
5726 " </div>\n" +
5725 " </div>\n" +
5727 " <div class=\"modal-footer\">\n" +
5726 " <div class=\"modal-footer\">\n" +
5728 " <button class=\"btn btn-primary\" ng-click=\"ctrl.ok()\">Add issue</button>\n" +
5727 " <button class=\"btn btn-primary\" ng-click=\"ctrl.ok()\">Add issue</button>\n" +
5729 " <button class=\"btn btn-warning\" ng-click=\"ctrl.cancel()\">Cancel</button>\n" +
5728 " <button class=\"btn btn-warning\" ng-click=\"ctrl.cancel()\">Cancel</button>\n" +
5730 " </div>\n"
5729 " </div>\n"
5731 );
5730 );
5732
5731
5733
5732
5734 $templateCache.put('templates/integrations/jira.html',
5733 $templateCache.put('templates/integrations/jira.html',
5735 " <div class=\"modal-header\">\n" +
5734 " <div class=\"modal-header\">\n" +
5736 " <h3 class=\"m-t-0\">Add issue to Jira</h3>\n" +
5735 " <h3 class=\"m-t-0\">Add issue to Jira</h3>\n" +
5737 " </div>\n" +
5736 " </div>\n" +
5738 " <div class=\"modal-body\">\n" +
5737 " <div class=\"modal-body\">\n" +
5739 " <div class=\"alert alert-danger\" ng-repeat=\"msg in ctrl.error_messages\">{{msg}}</div>\n" +
5738 " <div class=\"alert alert-danger\" ng-repeat=\"msg in ctrl.error_messages\">{{msg}}</div>\n" +
5740 " <div class=\"text-center\" ng-show=\"ctrl.loading\">\n" +
5739 " <div class=\"text-center\" ng-show=\"ctrl.loading\">\n" +
5741 " <span class=\"fa fa-cog fa-spin fa-5x loader m-a-4\"></span>\n" +
5740 " <span class=\"fa fa-cog fa-spin fa-5x loader m-a-4\"></span>\n" +
5742 " </div>\n" +
5741 " </div>\n" +
5743 "\n" +
5742 "\n" +
5744 " <form role=\"form\" ng-show=\"!ctrl.loading\">\n" +
5743 " <form role=\"form\" ng-show=\"!ctrl.loading\">\n" +
5745 " <div class=\"form-group\">\n" +
5744 " <div class=\"form-group\">\n" +
5746 " <label for=\"issue_title\">Issue Title</label>\n" +
5745 " <label for=\"issue_title\">Issue Title</label>\n" +
5747 " <input type=\"text\" class=\"form-control\" id=\"issue_title\" placeholder=\"Issue title\" ng-model=\"ctrl.form.title\">\n" +
5746 " <input type=\"text\" class=\"form-control\" id=\"issue_title\" placeholder=\"Issue title\" ng-model=\"ctrl.form.title\">\n" +
5748 " </div>\n" +
5747 " </div>\n" +
5749 "\n" +
5748 "\n" +
5750 " <div class=\"form-group\">\n" +
5749 " <div class=\"form-group\">\n" +
5751 " <label for=\"issue_type\">Issue Type</label>\n" +
5750 " <label for=\"issue_type\">Issue Type</label>\n" +
5752 " <select class=\"form-control\" id=\"issue_type\" ng-options=\"i.name for i in ctrl.issue_types\" ng-model=\"ctrl.form.issue_type\"></select>\n" +
5751 " <select class=\"form-control\" id=\"issue_type\" ng-options=\"i.name for i in ctrl.issue_types\" ng-model=\"ctrl.form.issue_type\"></select>\n" +
5753 " </div>\n" +
5752 " </div>\n" +
5754 " <div class=\"form-group row\">\n" +
5753 " <div class=\"form-group row\">\n" +
5755 " <div class=\"col-sm-6\">\n" +
5754 " <div class=\"col-sm-6\">\n" +
5756 " <label for=\"issue_priority\">Priority</label>\n" +
5755 " <label for=\"issue_priority\">Priority</label>\n" +
5757 " <select class=\"form-control\" id=\"issue_priority\" ng-options=\"s.name for s in ctrl.priorities\" ng-model=\"ctrl.form.priority\"></select>\n" +
5756 " <select class=\"form-control\" id=\"issue_priority\" ng-options=\"s.name for s in ctrl.priorities\" ng-model=\"ctrl.form.priority\"></select>\n" +
5758 " </div>\n" +
5757 " </div>\n" +
5759 "\n" +
5758 "\n" +
5760 " <div class=\"col-sm-6\">\n" +
5759 " <div class=\"col-sm-6\">\n" +
5761 " <label for=\"issue_responsible\">Assignee</label>\n" +
5760 " <label for=\"issue_responsible\">Assignee</label>\n" +
5762 " <select class=\"form-control\" id=\"issue_responsible\" ng-options=\"a.name for a in ctrl.assignees\" ng-model=\"ctrl.form.responsible\"></select>\n" +
5761 " <select class=\"form-control\" id=\"issue_responsible\" ng-options=\"a.name for a in ctrl.assignees\" ng-model=\"ctrl.form.responsible\"></select>\n" +
5763 " </div>\n" +
5762 " </div>\n" +
5764 " </div>\n" +
5763 " </div>\n" +
5765 " <div class=\"form-group\">\n" +
5764 " <div class=\"form-group\">\n" +
5766 " <label for=\"issue_content\">Description</label>\n" +
5765 " <label for=\"issue_content\">Description</label>\n" +
5767 " <textarea id=\"issue_content\" class=\"form-control\" ng-model=\"ctrl.form.content\" style=\"min-height: 100px\"></textarea>\n" +
5766 " <textarea id=\"issue_content\" class=\"form-control\" ng-model=\"ctrl.form.content\" style=\"min-height: 100px\"></textarea>\n" +
5768 " </div>\n" +
5767 " </div>\n" +
5769 " </form>\n" +
5768 " </form>\n" +
5770 "\n" +
5769 "\n" +
5771 " </div>\n" +
5770 " </div>\n" +
5772 " <div class=\"modal-footer\">\n" +
5771 " <div class=\"modal-footer\">\n" +
5773 " <button class=\"btn btn-primary\" ng-click=\"ctrl.ok()\">Add issue</button>\n" +
5772 " <button class=\"btn btn-primary\" ng-click=\"ctrl.ok()\">Add issue</button>\n" +
5774 " <button class=\"btn btn-warning\" ng-click=\"ctrl.cancel()\">Cancel</button>\n" +
5773 " <button class=\"btn btn-warning\" ng-click=\"ctrl.cancel()\">Cancel</button>\n" +
5775 " </div>\n"
5774 " </div>\n"
5776 );
5775 );
5777
5776
5778
5777
5779 $templateCache.put('templates/loader.html',
5778 $templateCache.put('templates/loader.html',
5780 "<div class=\"text-center\">\n" +
5779 "<div class=\"text-center\">\n" +
5781 " <span class=\"fa fa-cog fa-spin fa-5x m-a-4\"></span>\n" +
5780 " <span class=\"fa fa-cog fa-spin fa-5x m-a-4\"></span>\n" +
5782 "</div>\n"
5781 "</div>\n"
5783 );
5782 );
5784
5783
5785
5784
5786 $templateCache.put('templates/logs.html',
5785 $templateCache.put('templates/logs.html',
5787 "<ng-include src=\"'templates/loader.html'\" ng-if=\"logs.isLoading.logs\"></ng-include>\n" +
5786 "<ng-include src=\"'templates/loader.html'\" ng-if=\"logs.isLoading.logs\"></ng-include>\n" +
5788 "\n" +
5787 "\n" +
5789 "<div ng-if=\"logs.isLoading.logs === false\">\n" +
5788 "<div ng-if=\"logs.isLoading.logs === false\">\n" +
5790 "\n" +
5789 "\n" +
5791 " <p class=\"search-params\">\n" +
5790 " <p class=\"search-params\">\n" +
5792 " <strong>Search params:</strong>\n" +
5791 " <strong>Search params:</strong>\n" +
5793 " <span ng-repeat=\"tag in logs.searchParams.tags\" class=\"tag\">\n" +
5792 " <span ng-repeat=\"tag in logs.searchParams.tags\" class=\"tag\">\n" +
5794 " <strong>{{tag.type}}</strong>\n" +
5793 " <strong>{{tag.type}}</strong>\n" +
5795 " {{ tag.type == 'resource' ? logs.applications[tag.value].resource_name : tag.value }}\n" +
5794 " {{ tag.type == 'resource' ? logs.applications[tag.value].resource_name : tag.value }}\n" +
5796 "\n" +
5795 "\n" +
5797 " <a ng-click=\"logs.removeSearchTag(tag)\"><span class=\"fa fa-times\"></span></a>\n" +
5796 " <a ng-click=\"logs.removeSearchTag(tag)\"><span class=\"fa fa-times\"></span></a>\n" +
5798 " </span>\n" +
5797 " </span>\n" +
5799 " </p>\n" +
5798 " </p>\n" +
5800 "\n" +
5799 "\n" +
5801 " <p>\n" +
5800 " <p>\n" +
5802 "\n" +
5801 "\n" +
5803 " <script type=\"text/ng-template\" id=\"SearchTypeAheadUrl.html\">\n" +
5802 " <script type=\"text/ng-template\" id=\"SearchTypeAheadUrl.html\">\n" +
5804 "\n" +
5803 "\n" +
5805 " </script>\n" +
5804 " </script>\n" +
5806 "\n" +
5805 "\n" +
5807 " <form class=\"form\">\n" +
5806 " <form class=\"form\">\n" +
5808 " <div class=\"typeahead-tags\">\n" +
5807 " <div class=\"typeahead-tags\">\n" +
5809 " <input type=\"text\" id=\"typeAhead\" ng-model=\"logs.filterTypeAhead\" placeholder=\"Start typing to filter logs for events, filter by servers, namespaces, levels.\"\n" +
5808 " <input type=\"text\" id=\"typeAhead\" ng-model=\"logs.filterTypeAhead\" placeholder=\"Start typing to filter logs for events, filter by servers, namespaces, levels.\"\n" +
5810 " ng-keydown=\"logs.typeAheadTag($event)\"\n" +
5809 " ng-keydown=\"logs.typeAheadTag($event)\"\n" +
5811 " uib-typeahead=\"tag as tag.text for tag in logs.filterTypeAheadOptions | filter:$viewValue:logs.aheadFilter\"\n" +
5810 " uib-typeahead=\"tag as tag.text for tag in logs.filterTypeAheadOptions | filter:$viewValue:logs.aheadFilter\"\n" +
5812 " typeahead-min-length=\"1\" class=\"form-control\"\n" +
5811 " typeahead-min-length=\"1\" class=\"form-control\"\n" +
5813 " typeahead-template-url=\"templates/directives/search_type_ahead.html\">\n" +
5812 " typeahead-template-url=\"templates/directives/search_type_ahead.html\">\n" +
5814 " </div>\n" +
5813 " </div>\n" +
5815 " </form>\n" +
5814 " </form>\n" +
5816 "\n" +
5815 "\n" +
5817 " <div class=\"well animate-show position-absolute increse-zindex\" ng-if=\"logs.showDatePicker\" ng-model=\"logs.pickerDate\" ng-change=\"logs.pickerDateChanged()\">\n" +
5816 " <div class=\"well animate-show position-absolute increse-zindex\" ng-if=\"logs.showDatePicker\" ng-model=\"logs.pickerDate\" ng-change=\"logs.pickerDateChanged()\">\n" +
5818 " <uib-datepicker></uib-datepicker>\n" +
5817 " <uib-datepicker></uib-datepicker>\n" +
5819 " </div>\n" +
5818 " </div>\n" +
5820 "\n" +
5819 "\n" +
5821 " </p>\n" +
5820 " </p>\n" +
5822 "\n" +
5821 "\n" +
5823 " <div class=\"panel\">\n" +
5822 " <div class=\"panel\">\n" +
5824 "\n" +
5823 "\n" +
5825 " <div class=\"panel-body\">\n" +
5824 " <div class=\"panel-body\">\n" +
5826 " <c3chart data-domid=\"log_events_chart\" data-data=\"logs.logEventsChartData\" data-config=\"logs.logEventsChartConfig\">\n" +
5825 " <c3chart data-domid=\"log_events_chart\" data-data=\"logs.logEventsChartData\" data-config=\"logs.logEventsChartConfig\">\n" +
5827 " </c3chart>\n" +
5826 " </c3chart>\n" +
5828 " </div>\n" +
5827 " </div>\n" +
5829 " </div>\n" +
5828 " </div>\n" +
5830 "\n" +
5829 "\n" +
5831 "\n" +
5830 "\n" +
5832 " <div class=\"text-center\">\n" +
5831 " <div class=\"text-center\">\n" +
5833 " <uib-pagination total-items=\"logs.itemCount\" items-per-page=\"logs.itemsPerPage\" ng-model=\"logs.searchParams.page\" max-size=\"10\"\n" +
5832 " <uib-pagination total-items=\"logs.itemCount\" items-per-page=\"logs.itemsPerPage\" ng-model=\"logs.searchParams.page\" max-size=\"10\"\n" +
5834 " ng-change=\"logs.paginationChange()\"\n" +
5833 " ng-change=\"logs.paginationChange()\"\n" +
5835 " class=\"pagination pagination-sm\" boundary-links=\"true\" direction-links=\"false\"></uib-pagination>\n" +
5834 " class=\"pagination pagination-sm\" boundary-links=\"true\" direction-links=\"false\"></uib-pagination>\n" +
5836 " </div>\n" +
5835 " </div>\n" +
5837 "\n" +
5836 "\n" +
5838 " <div class=\"panel panel-default\">\n" +
5837 " <div class=\"panel panel-default\">\n" +
5839 "\n" +
5838 "\n" +
5840 " <table class=\"table table-striped log-list\">\n" +
5839 " <table class=\"table table-striped log-list\">\n" +
5841 " <caption>Logs</caption>\n" +
5840 " <caption>Logs</caption>\n" +
5842 " <thead>\n" +
5841 " <thead>\n" +
5843 " <tr>\n" +
5842 " <tr>\n" +
5844 " <th class=\"c1 resource\">Application</th>\n" +
5843 " <th class=\"c1 resource\">Application</th>\n" +
5845 " <th class=\"c2 message\">Message</th>\n" +
5844 " <th class=\"c2 message\">Message</th>\n" +
5846 " <th class=\"c3 when\">When</th>\n" +
5845 " <th class=\"c3 when\">When</th>\n" +
5847 " </tr>\n" +
5846 " </tr>\n" +
5848 " </thead>\n" +
5847 " </thead>\n" +
5849 " <tbody>\n" +
5848 " <tbody>\n" +
5850 " <tr ng-repeat=\"log in logs.logsPage track by log.log_id\" class=\"{{$odd ? 'odd' : 'even'}}\">\n" +
5849 " <tr ng-repeat=\"log in logs.logsPage track by log.log_id\" class=\"{{$odd ? 'odd' : 'even'}}\">\n" +
5851 " <td class=\"c1\">\n" +
5850 " <td class=\"c1\">\n" +
5852 " <a class=\"tag application\" ng-click=\"logs.addSearchTag({type:'resource', value:log.resource_id})\">\n" +
5851 " <a class=\"tag application\" ng-click=\"logs.addSearchTag({type:'resource', value:log.resource_id})\">\n" +
5853 " <span class=\"name\">{{log.resource_name}}</span></a>\n" +
5852 " <span class=\"name\">{{log.resource_name}}</span></a>\n" +
5854 " </td>\n" +
5853 " </td>\n" +
5855 " <td class=\"c2\">\n" +
5854 " <td class=\"c2\">\n" +
5856 " <a class=\"tag {{log.log_level|lowercase}}\" ng-click=\"logs.addSearchTag({type:'level', value:log.log_level})\">\n" +
5855 " <a class=\"tag {{log.log_level|lowercase}}\" ng-click=\"logs.addSearchTag({type:'level', value:log.log_level})\">\n" +
5857 " <span class=\"name\">level:</span> {{log.log_level}}</a>\n" +
5856 " <span class=\"name\">level:</span> {{log.log_level}}</a>\n" +
5858 " <a class=\"tag\" ng-click=\"logs.addSearchTag({type:'namespace', value:log.namespace})\">\n" +
5857 " <a class=\"tag\" ng-click=\"logs.addSearchTag({type:'namespace', value:log.namespace})\">\n" +
5859 " <span class=\"name\">namespace:</span> {{log.namespace}}</a>\n" +
5858 " <span class=\"name\">namespace:</span> {{log.namespace}}</a>\n" +
5860 " <a ng-repeat=\"(tag, value) in log.tags\" class=\"tag\" ng-click=\"logs.addSearchTag({type:tag, value:value})\">\n" +
5859 " <a ng-repeat=\"(tag, value) in log.tags\" class=\"tag\" ng-click=\"logs.addSearchTag({type:tag, value:value})\">\n" +
5861 " <span class=\"name\">{{tag}}:</span> {{value}}</a>\n" +
5860 " <span class=\"name\">{{tag}}:</span> {{value}}</a>\n" +
5862 " <div class=\"log\">{{log.message}}</div>\n" +
5861 " <div class=\"log\">{{log.message}}</div>\n" +
5863 " </td>\n" +
5862 " </td>\n" +
5864 " <td class=\"c3 when\">\n" +
5863 " <td class=\"c3 when\">\n" +
5865 " <a ng-click=\"logs.filterId(log)\" data-uib-tooltip=\"{{log.timestamp}}\">\n" +
5864 " <a ng-click=\"logs.filterId(log)\" data-uib-tooltip=\"{{log.timestamp}}\">\n" +
5866 " <iso-to-relative-time time=\"{{log.timestamp}}\"/>\n" +
5865 " <iso-to-relative-time time=\"{{log.timestamp}}\"/>\n" +
5867 " </a>\n" +
5866 " </a>\n" +
5868 " </td>\n" +
5867 " </td>\n" +
5869 " </tr>\n" +
5868 " </tr>\n" +
5870 "\n" +
5869 "\n" +
5871 " </tbody>\n" +
5870 " </tbody>\n" +
5872 " </table>\n" +
5871 " </table>\n" +
5873 "\n" +
5872 "\n" +
5874 " </div>\n" +
5873 " </div>\n" +
5875 "\n" +
5874 "\n" +
5876 " <div class=\"text-center\">\n" +
5875 " <div class=\"text-center\">\n" +
5877 " <uib-pagination total-items=\"logs.itemCount\" items-per-page=\"logs.itemsPerPage\" ng-model=\"logs.searchParams.page\" max-size=\"10\"\n" +
5876 " <uib-pagination total-items=\"logs.itemCount\" items-per-page=\"logs.itemsPerPage\" ng-model=\"logs.searchParams.page\" max-size=\"10\"\n" +
5878 " ng-change=\"logs.paginationChange()\"\n" +
5877 " ng-change=\"logs.paginationChange()\"\n" +
5879 " class=\"pagination pagination-sm\" boundary-links=\"true\" direction-links=\"false\"></uib-pagination>\n" +
5878 " class=\"pagination pagination-sm\" boundary-links=\"true\" direction-links=\"false\"></uib-pagination>\n" +
5880 " </div>\n" +
5879 " </div>\n" +
5881 "\n" +
5880 "\n" +
5882 "</div>\n"
5881 "</div>\n"
5883 );
5882 );
5884
5883
5885
5884
5886 $templateCache.put('templates/quickstart.html',
5885 $templateCache.put('templates/quickstart.html',
5887 "<h2>AppEnlight quickstart</h2>\n" +
5886 "<h2>AppEnlight quickstart</h2>\n" +
5888 "\n" +
5887 "\n" +
5889 "<p>\n" +
5888 "<p>\n" +
5890 " <span class=\"point\">1</span>\n" +
5889 " <span class=\"point\">1</span>\n" +
5891 " For AppEnlight to operate, you need to\n" +
5890 " For AppEnlight to operate, you need to\n" +
5892 " <a data-ui-sref=\"applications.update({resourceId:'new'})\" target=\"_blank\"><strong>create an app profile</strong></a> that allows\n" +
5891 " <a data-ui-sref=\"applications.update({resourceId:'new'})\" target=\"_blank\"><strong>create an app profile</strong></a> that allows\n" +
5893 " you to\n" +
5892 " you to\n" +
5894 " obtain an <strong>API key</strong> that one of the clients can use.\n" +
5893 " obtain an <strong>API key</strong> that one of the clients can use.\n" +
5895 "</p>\n" +
5894 "</p>\n" +
5896 "\n" +
5895 "\n" +
5897 "<div class=\"clear\"></div>\n" +
5896 "<div class=\"clear\"></div>\n" +
5898 "<hr/>\n" +
5897 "<hr/>\n" +
5899 "\n" +
5898 "\n" +
5900 "<p>\n" +
5899 "<p>\n" +
5901 " <span class=\"point\">2</span>\n" +
5900 " <span class=\"point\">2</span>\n" +
5902 " It is a good idea to configure an\n" +
5901 " It is a good idea to configure an\n" +
5903 " <a data-ui-sref=\"user.alert_channels.email\" target=\"_blank\">\n" +
5902 " <a data-ui-sref=\"user.alert_channels.email\" target=\"_blank\">\n" +
5904 " <strong>email alert channel</strong></a> that you can use to receive\n" +
5903 " <strong>email alert channel</strong></a> that you can use to receive\n" +
5905 " notifications about events that happen in your application.\n" +
5904 " notifications about events that happen in your application.\n" +
5906 "</p>\n" +
5905 "</p>\n" +
5907 "\n" +
5906 "\n" +
5908 "<p>\n" +
5907 "<p>\n" +
5909 " It can be the same email account you used to register withing AppEnlight -\n" +
5908 " It can be the same email account you used to register withing AppEnlight -\n" +
5910 " although we often recommend using a separate <em>errors@...</em> account\n" +
5909 " although we often recommend using a separate <em>errors@...</em> account\n" +
5911 " designated for alert notifications.\n" +
5910 " designated for alert notifications.\n" +
5912 "</p>\n" +
5911 "</p>\n" +
5913 "\n" +
5912 "\n" +
5914 "<div class=\"clear\"></div>\n" +
5913 "<div class=\"clear\"></div>\n" +
5915 "<hr/>\n" +
5914 "<hr/>\n" +
5916 "\n" +
5915 "\n" +
5917 "<p>\n" +
5916 "<p>\n" +
5918 " <span class=\"point\">3</span>\n" +
5917 " <span class=\"point\">3</span>\n" +
5919 " In order for your application to stream meaningful information, you will need to\n" +
5918 " In order for your application to stream meaningful information, you will need to\n" +
5920 " integrate a compatible client for your language of choice.\n" +
5919 " integrate a compatible client for your language of choice.\n" +
5921 "</p>\n" +
5920 "</p>\n" +
5922 "\n" +
5921 "\n" +
5923 "<p>Head over to the <a href=\"{{AeConfig.urls.docs}}\" target=\"_blank\">\n" +
5922 "<p>Head over to the <a href=\"{{AeConfig.urls.docs}}\" target=\"_blank\">\n" +
5924 " <strong>developers section</strong></a> for information on currently available\n" +
5923 " <strong>developers section</strong></a> for information on currently available\n" +
5925 " clients that you can plug into your software</p>\n"
5924 " clients that you can plug into your software</p>\n"
5926 );
5925 );
5927
5926
5928
5927
5929 $templateCache.put('templates/register.html',
5928 $templateCache.put('templates/register.html',
5930 ""
5929 ""
5931 );
5930 );
5932
5931
5933
5932
5934 $templateCache.put('templates/reports/list_slow.html',
5933 $templateCache.put('templates/reports/list_slow.html',
5935 "<ng-include src=\"'templates/loader.html'\" ng-if=\"reports_list.is_loading\"></ng-include>\n" +
5934 "<ng-include src=\"'templates/loader.html'\" ng-if=\"reports_list.is_loading\"></ng-include>\n" +
5936 "\n" +
5935 "\n" +
5937 "<div ng-if=\"reports_list.is_loading === false\">\n" +
5936 "<div ng-if=\"reports_list.is_loading === false\">\n" +
5938 "\n" +
5937 "\n" +
5939 " <p class=\"search-params\">\n" +
5938 " <p class=\"search-params\">\n" +
5940 " <strong>Search params:</strong>\n" +
5939 " <strong>Search params:</strong>\n" +
5941 " <span ng-repeat=\"tag in reports_list.searchParams.tags\" class=\"tag\">\n" +
5940 " <span ng-repeat=\"tag in reports_list.searchParams.tags\" class=\"tag\">\n" +
5942 " <strong>{{tag.type}}</strong>\n" +
5941 " <strong>{{tag.type}}</strong>\n" +
5943 " {{ tag.type == 'resource' ? reports_list.applications[tag.value].resource_name : tag.value }}\n" +
5942 " {{ tag.type == 'resource' ? reports_list.applications[tag.value].resource_name : tag.value }}\n" +
5944 "\n" +
5943 "\n" +
5945 " <a ng-click=\"reports_list.removeSearchTag(tag)\"><span class=\"fa fa-times\"></span></a>\n" +
5944 " <a ng-click=\"reports_list.removeSearchTag(tag)\"><span class=\"fa fa-times\"></span></a>\n" +
5946 " </span>\n" +
5945 " </span>\n" +
5947 " </p>\n" +
5946 " </p>\n" +
5948 "\n" +
5947 "\n" +
5949 " <p>\n" +
5948 " <p>\n" +
5950 "\n" +
5949 "\n" +
5951 " <form class=\"form\">\n" +
5950 " <form class=\"form\">\n" +
5952 " <div class=\"typeahead-tags\">\n" +
5951 " <div class=\"typeahead-tags\">\n" +
5953 " <input type=\"text\" id=\"typeAhead\" ng-model=\"reports_list.filterTypeAhead\" placeholder=\"Start typing to filter slowness reports - filter by tags, average response time, priority or other properties.\"\n" +
5952 " <input type=\"text\" id=\"typeAhead\" ng-model=\"reports_list.filterTypeAhead\" placeholder=\"Start typing to filter slowness reports - filter by tags, average response time, priority or other properties.\"\n" +
5954 " ng-keydown=\"reports_list.typeAheadTag($event)\"\n" +
5953 " ng-keydown=\"reports_list.typeAheadTag($event)\"\n" +
5955 " uib-typeahead=\"tag as tag.text for tag in reports_list.filterTypeAheadOptions | filter:$viewValue:aheadFilter\"\n" +
5954 " uib-typeahead=\"tag as tag.text for tag in reports_list.filterTypeAheadOptions | filter:$viewValue:aheadFilter\"\n" +
5956 " typeahead-min-length=\"1\" class=\"form-control\"\n" +
5955 " typeahead-min-length=\"1\" class=\"form-control\"\n" +
5957 " typeahead-template-url=\"templates/directives/search_type_ahead.html\">\n" +
5956 " typeahead-template-url=\"templates/directives/search_type_ahead.html\">\n" +
5958 " </div>\n" +
5957 " </div>\n" +
5959 " </form>\n" +
5958 " </form>\n" +
5960 "\n" +
5959 "\n" +
5961 "\n" +
5960 "\n" +
5962 " <div class=\"well position-absolute increse-zindex\" ng-show=\"reports_list.showDatePicker\" ng-model=\"reports_list.pickerDate\" ng-change=\"reports_list.pickerDateChanged()\"\n" +
5961 " <div class=\"well position-absolute increse-zindex\" ng-show=\"reports_list.showDatePicker\" ng-model=\"reports_list.pickerDate\" ng-change=\"reports_list.pickerDateChanged()\"\n" +
5963 " class=\"animate-show\">\n" +
5962 " class=\"animate-show\">\n" +
5964 " <uib-datepicker></uib-datepicker>\n" +
5963 " <uib-datepicker></uib-datepicker>\n" +
5965 " </div>\n" +
5964 " </div>\n" +
5966 "\n" +
5965 "\n" +
5967 " </p>\n" +
5966 " </p>\n" +
5968 "\n" +
5967 "\n" +
5969 "\n" +
5968 "\n" +
5970 " <div class=\"text-center\">\n" +
5969 " <div class=\"text-center\">\n" +
5971 " <uib-pagination total-items=\"reports_list.itemCount\" items-per-page=\"reports_list.itemsPerPage\" ng-model=\"reports_list.searchParams.page\" max-size=\"10\"\n" +
5970 " <uib-pagination total-items=\"reports_list.itemCount\" items-per-page=\"reports_list.itemsPerPage\" ng-model=\"reports_list.searchParams.page\" max-size=\"10\"\n" +
5972 " class=\"pagination pagination-sm\" boundary-links=\"true\" direction-links=\"false\"\n" +
5971 " class=\"pagination pagination-sm\" boundary-links=\"true\" direction-links=\"false\"\n" +
5973 " ng-change=\"reports_list.paginationChange()\"\n" +
5972 " ng-change=\"reports_list.paginationChange()\"\n" +
5974 " ng-show=\"!reports_list.is_loading\"></uib-pagination>\n" +
5973 " ng-show=\"!reports_list.is_loading\"></uib-pagination>\n" +
5975 " </div>\n" +
5974 " </div>\n" +
5976 "\n" +
5975 "\n" +
5977 "\n" +
5976 "\n" +
5978 " <div class=\"panel panel-default\">\n" +
5977 " <div class=\"panel panel-default\">\n" +
5979 " <!-- Default panel contents -->\n" +
5978 " <!-- Default panel contents -->\n" +
5980 "\n" +
5979 "\n" +
5981 " <table class=\"table table-striped report-list\" ng-show=\"!reports_list.is_loading\">\n" +
5980 " <table class=\"table table-striped report-list\" ng-show=\"!reports_list.is_loading\">\n" +
5982 " <caption>Slow Request Reports</caption>\n" +
5981 " <caption>Slow Request Reports</caption>\n" +
5983 " <thead>\n" +
5982 " <thead>\n" +
5984 " <tr>\n" +
5983 " <tr>\n" +
5985 " <td class=\"c1 ordering occurences\">#</td>\n" +
5984 " <td class=\"c1 ordering occurences\">#</td>\n" +
5986 " <td class=\"c2 average_duration\">Avg. duration</td>\n" +
5985 " <td class=\"c2 average_duration\">Avg. duration</td>\n" +
5987 " <td class=\"c3 application\">Application</td>\n" +
5986 " <td class=\"c3 application\">Application</td>\n" +
5988 " <td class=\"c5 when\">When <input type=\"checkbox\" ng-model=\"reports_list.notRelativeTime\"\n" +
5987 " <td class=\"c5 when\">When <input type=\"checkbox\" ng-model=\"reports_list.notRelativeTime\"\n" +
5989 " ng-change=\"reports_list.changeRelativeTime()\"\n" +
5988 " ng-change=\"reports_list.changeRelativeTime()\"\n" +
5990 " title=\"Tick to see UTC time instead relative\"></td>\n" +
5989 " title=\"Tick to see UTC time instead relative\"></td>\n" +
5991 " <td class=\"c6 error_type\">Location</td>\n" +
5990 " <td class=\"c6 error_type\">Location</td>\n" +
5992 " </tr>\n" +
5991 " </tr>\n" +
5993 " </thead>\n" +
5992 " </thead>\n" +
5994 " <tbody>\n" +
5993 " <tbody>\n" +
5995 " <tr ng-repeat=\"report in reports_list.reportsPage track by report.id\">\n" +
5994 " <tr ng-repeat=\"report in reports_list.reportsPage track by report.id\">\n" +
5996 " <td class=\"c1 occurences\">\n" +
5995 " <td class=\"c1 occurences\">\n" +
5997 " <span class=\"priority-{{report.group.priority}}\" data-uib-tooltip=\"Report priority\">{{report.group.priority}}</span>\n" +
5996 " <span class=\"priority-{{report.group.priority}}\" data-uib-tooltip=\"Report priority\">{{report.group.priority}}</span>\n" +
5998 " <span class=\"count {{report.presentation.className}}\" data-uib-tooltip=\"{{report.presentation.tooltip}}\">\n" +
5997 " <span class=\"count {{report.presentation.className}}\" data-uib-tooltip=\"{{report.presentation.tooltip}}\">\n" +
5999 " {{report.group.occurences|numberToThousands}}\n" +
5998 " {{report.group.occurences|numberToThousands}}\n" +
6000 " </span>\n" +
5999 " </span>\n" +
6001 " </td>\n" +
6000 " </td>\n" +
6002 " <td class=\"c2 average_duration\">{{report.group.average_duration.toFixed(3)}}s</td>\n" +
6001 " <td class=\"c2 average_duration\">{{report.group.average_duration.toFixed(3)}}s</td>\n" +
6003 " <td class=\"c3 application\">\n" +
6002 " <td class=\"c3 application\">\n" +
6004 " <div class=\"app_name\">{{report.resource_name}}</div>\n" +
6003 " <div class=\"app_name\">{{report.resource_name}}</div>\n" +
6005 " <span class=\"server\">@{{report.tags.server_name}}</span></td>\n" +
6004 " <span class=\"server\">@{{report.tags.server_name}}</span></td>\n" +
6006 " <td class=\"c4 when\">\n" +
6005 " <td class=\"c4 when\">\n" +
6007 " <span ng-show=\"!reports_list.notRelativeTime\"><span data-uib-tooltip=\"{{report.group.last_timestamp}}\"><iso-to-relative-time\n" +
6006 " <span ng-show=\"!reports_list.notRelativeTime\"><span data-uib-tooltip=\"{{report.group.last_timestamp}}\"><iso-to-relative-time\n" +
6008 " time=\"{{report.group.last_timestamp}}\"/></span>\n" +
6007 " time=\"{{report.group.last_timestamp}}\"/></span>\n" +
6009 " </span>\n" +
6008 " </span>\n" +
6010 " <span ng-show=\"reports_list.notRelativeTime\">{{report.group.last_timestamp.replace('T', ' ').slice(0,16)}}</span>\n" +
6009 " <span ng-show=\"reports_list.notRelativeTime\">{{report.group.last_timestamp.replace('T', ' ').slice(0,16)}}</span>\n" +
6011 " </td>\n" +
6010 " </td>\n" +
6012 " <td class=\"c5 report ellipsis\">\n" +
6011 " <td class=\"c5 report ellipsis\">\n" +
6013 " <a ui-sref=\"report.view_detail({groupId:report.group.id, reportId:report.id})\">{{ report.tags.view_name || report.url_path}} </span></a></td>\n" +
6012 " <a ui-sref=\"report.view_detail({groupId:report.group.id, reportId:report.id})\">{{ report.tags.view_name || report.url_path}} </span></a></td>\n" +
6014 " </td>\n" +
6013 " </td>\n" +
6015 " </tr>\n" +
6014 " </tr>\n" +
6016 "\n" +
6015 "\n" +
6017 " </tbody>\n" +
6016 " </tbody>\n" +
6018 " </table>\n" +
6017 " </table>\n" +
6019 "\n" +
6018 "\n" +
6020 " </div>\n" +
6019 " </div>\n" +
6021 "\n" +
6020 "\n" +
6022 " <div class=\"text-center\">\n" +
6021 " <div class=\"text-center\">\n" +
6023 " <uib-pagination total-items=\"reports_list.itemCount\" items-per-page=\"reports_list.itemsPerPage\" ng-model=\"reports_list.searchParams.page\" max-size=\"10\"\n" +
6022 " <uib-pagination total-items=\"reports_list.itemCount\" items-per-page=\"reports_list.itemsPerPage\" ng-model=\"reports_list.searchParams.page\" max-size=\"10\"\n" +
6024 " class=\"pagination pagination-sm\" boundary-links=\"true\" direction-links=\"false\"\n" +
6023 " class=\"pagination pagination-sm\" boundary-links=\"true\" direction-links=\"false\"\n" +
6025 " ng-change=\"reports_list.paginationChange()\"\n" +
6024 " ng-change=\"reports_list.paginationChange()\"\n" +
6026 " ng-show=\"!reports_list.is_loading\"></uib-pagination>\n" +
6025 " ng-show=\"!reports_list.is_loading\"></uib-pagination>\n" +
6027 " </div>\n" +
6026 " </div>\n" +
6028 "\n" +
6027 "\n" +
6029 "</div>\n"
6028 "</div>\n"
6030 );
6029 );
6031
6030
6032
6031
6033 $templateCache.put('templates/reports/list.html',
6032 $templateCache.put('templates/reports/list.html',
6034 "<ng-include src=\"'templates/loader.html'\" ng-if=\"reports_list.is_loading\"></ng-include>\n" +
6033 "<ng-include src=\"'templates/loader.html'\" ng-if=\"reports_list.is_loading\"></ng-include>\n" +
6035 "\n" +
6034 "\n" +
6036 "<div ng-if=\"reports_list.is_loading === false\">\n" +
6035 "<div ng-if=\"reports_list.is_loading === false\">\n" +
6037 "\n" +
6036 "\n" +
6038 " <p class=\"search-params\">\n" +
6037 " <p class=\"search-params\">\n" +
6039 " <strong>Search params:</strong>\n" +
6038 " <strong>Search params:</strong>\n" +
6040 " <span ng-repeat=\"tag in reports_list.searchParams.tags\" class=\"tag\">\n" +
6039 " <span ng-repeat=\"tag in reports_list.searchParams.tags\" class=\"tag\">\n" +
6041 " <strong>{{tag.type}}</strong>\n" +
6040 " <strong>{{tag.type}}</strong>\n" +
6042 " {{ tag.type == 'resource' ? reports_list.applications[tag.value].resource_name : tag.value }}\n" +
6041 " {{ tag.type == 'resource' ? reports_list.applications[tag.value].resource_name : tag.value }}\n" +
6043 "\n" +
6042 "\n" +
6044 " <a ng-click=\"reports_list.removeSearchTag(tag)\"><span class=\"fa fa-times\"></span></a>\n" +
6043 " <a ng-click=\"reports_list.removeSearchTag(tag)\"><span class=\"fa fa-times\"></span></a>\n" +
6045 " </span>\n" +
6044 " </span>\n" +
6046 " </p>\n" +
6045 " </p>\n" +
6047 "\n" +
6046 "\n" +
6048 " <form class=\"form\">\n" +
6047 " <form class=\"form\">\n" +
6049 " <div class=\"typeahead-tags\">\n" +
6048 " <div class=\"typeahead-tags\">\n" +
6050 " <input type=\"text\" id=\"typeAhead\" ng-model=\"reports_list.filterTypeAhead\" placeholder=\"Start typing to filter reports - filter by tags, exception, priority or other properties.\"\n" +
6049 " <input type=\"text\" id=\"typeAhead\" ng-model=\"reports_list.filterTypeAhead\" placeholder=\"Start typing to filter reports - filter by tags, exception, priority or other properties.\"\n" +
6051 " ng-keydown=\"reports_list.typeAheadTag($event)\"\n" +
6050 " ng-keydown=\"reports_list.typeAheadTag($event)\"\n" +
6052 " uib-typeahead=\"tag as tag.text for tag in reports_list.filterTypeAheadOptions | filter:$viewValue:aheadFilter\"\n" +
6051 " uib-typeahead=\"tag as tag.text for tag in reports_list.filterTypeAheadOptions | filter:$viewValue:aheadFilter\"\n" +
6053 " typeahead-min-length=\"1\" class=\"form-control\"\n" +
6052 " typeahead-min-length=\"1\" class=\"form-control\"\n" +
6054 " typeahead-template-url=\"templates/directives/search_type_ahead.html\">\n" +
6053 " typeahead-template-url=\"templates/directives/search_type_ahead.html\">\n" +
6055 " </div>\n" +
6054 " </div>\n" +
6056 " </form>\n" +
6055 " </form>\n" +
6057 "\n" +
6056 "\n" +
6058 "\n" +
6057 "\n" +
6059 " <div class=\"well position-absolute increse-zindex\" ng-show=\"reports_list.showDatePicker\" ng-model=\"reports_list.pickerDate\" ng-change=\"reports_list.pickerDateChanged()\"\n" +
6058 " <div class=\"well position-absolute increse-zindex\" ng-show=\"reports_list.showDatePicker\" ng-model=\"reports_list.pickerDate\" ng-change=\"reports_list.pickerDateChanged()\"\n" +
6060 " class=\"animate-show\">\n" +
6059 " class=\"animate-show\">\n" +
6061 " <uib-datepicker></uib-datepicker>\n" +
6060 " <uib-datepicker></uib-datepicker>\n" +
6062 " </div>\n" +
6061 " </div>\n" +
6063 "\n" +
6062 "\n" +
6064 " </p>\n" +
6063 " </p>\n" +
6065 "\n" +
6064 "\n" +
6066 "\n" +
6065 "\n" +
6067 " <div class=\"text-center\">\n" +
6066 " <div class=\"text-center\">\n" +
6068 " <uib-pagination total-items=\"reports_list.itemCount\" items-per-page=\"reports_list.itemsPerPage\" ng-model=\"reports_list.searchParams.page\" max-size=\"10\"\n" +
6067 " <uib-pagination total-items=\"reports_list.itemCount\" items-per-page=\"reports_list.itemsPerPage\" ng-model=\"reports_list.searchParams.page\" max-size=\"10\"\n" +
6069 " class=\"pagination pagination-sm\" boundary-links=\"true\" direction-links=\"false\"\n" +
6068 " class=\"pagination pagination-sm\" boundary-links=\"true\" direction-links=\"false\"\n" +
6070 " ng-change=\"reports_list.paginationChange()\"\n" +
6069 " ng-change=\"reports_list.paginationChange()\"\n" +
6071 " ng-show=\"!reports_list.is_loading\"></uib-pagination>\n" +
6070 " ng-show=\"!reports_list.is_loading\"></uib-pagination>\n" +
6072 " </div>\n" +
6071 " </div>\n" +
6073 "\n" +
6072 "\n" +
6074 " <div class=\"panel panel-default\">\n" +
6073 " <div class=\"panel panel-default\">\n" +
6075 " <!-- Default panel contents -->\n" +
6074 " <!-- Default panel contents -->\n" +
6076 "\n" +
6075 "\n" +
6077 " <table class=\"table table-striped report-list\" ng-show=\"!reports_list.is_loading\">\n" +
6076 " <table class=\"table table-striped report-list\" ng-show=\"!reports_list.is_loading\">\n" +
6078 " <caption>Reports</caption>\n" +
6077 " <caption>Reports</caption>\n" +
6079 " <thead>\n" +
6078 " <thead>\n" +
6080 " <tr>\n" +
6079 " <tr>\n" +
6081 " <th class=\"c1 ordering occurences\">#</th>\n" +
6080 " <th class=\"c1 ordering occurences\">#</th>\n" +
6082 " <th class=\"c2 application\">Application</th>\n" +
6081 " <th class=\"c2 application\">Application</th>\n" +
6083 " <th class=\"c4 when\">When <input type=\"checkbox\" ng-model=\"reports_list.notRelativeTime\"\n" +
6082 " <th class=\"c4 when\">When <input type=\"checkbox\" ng-model=\"reports_list.notRelativeTime\"\n" +
6084 " ng-change=\"reports_list.changeRelativeTime()\"\n" +
6083 " ng-change=\"reports_list.changeRelativeTime()\"\n" +
6085 " title=\"Tick to see UTC time instead relative\"></th>\n" +
6084 " title=\"Tick to see UTC time instead relative\"></th>\n" +
6086 " <th class=\"c5 error_type\">Error</th>\n" +
6085 " <th class=\"c5 error_type\">Error</th>\n" +
6087 " </tr>\n" +
6086 " </tr>\n" +
6088 " </thead>\n" +
6087 " </thead>\n" +
6089 " <tbody>\n" +
6088 " <tbody>\n" +
6090 " <tr ng-repeat=\"report in reports_list.reportsPage track by report.id\">\n" +
6089 " <tr ng-repeat=\"report in reports_list.reportsPage track by report.id\">\n" +
6091 " <td class=\"c1 occurences\">\n" +
6090 " <td class=\"c1 occurences\">\n" +
6092 " <span class=\"priority-{{report.group.priority}}\" data-uib-tooltip=\"Report priority\">{{report.group.priority}}</span>\n" +
6091 " <span class=\"priority-{{report.group.priority}}\" data-uib-tooltip=\"Report priority\">{{report.group.priority}}</span>\n" +
6093 " <span class=\"count {{report.presentation.className}}\" data-uib-tooltip=\"{{report.presentation.tooltip}}\">\n" +
6092 " <span class=\"count {{report.presentation.className}}\" data-uib-tooltip=\"{{report.presentation.tooltip}}\">\n" +
6094 " {{report.group.occurences|numberToThousands}}\n" +
6093 " {{report.group.occurences|numberToThousands}}\n" +
6095 " </span>\n" +
6094 " </span>\n" +
6096 " </td>\n" +
6095 " </td>\n" +
6097 " <td class=\"c2 application\">\n" +
6096 " <td class=\"c2 application\">\n" +
6098 " <div class=\"app_name\">{{report.resource_name}}</div>\n" +
6097 " <div class=\"app_name\">{{report.resource_name}}</div>\n" +
6099 " <span class=\"server\">@{{report.tags.server_name}}</span></td>\n" +
6098 " <span class=\"server\">@{{report.tags.server_name}}</span></td>\n" +
6100 " <td class=\"c3 when\">\n" +
6099 " <td class=\"c3 when\">\n" +
6101 " <span ng-show=\"!reports_list.notRelativeTime\"><span data-uib-tooltip=\"{{report.group.last_timestamp}}\"><iso-to-relative-time\n" +
6100 " <span ng-show=\"!reports_list.notRelativeTime\"><span data-uib-tooltip=\"{{report.group.last_timestamp}}\"><iso-to-relative-time\n" +
6102 " time=\"{{report.group.last_timestamp}}\"/></span>\n" +
6101 " time=\"{{report.group.last_timestamp}}\"/></span>\n" +
6103 " </span>\n" +
6102 " </span>\n" +
6104 " <span ng-show=\"reports_list.notRelativeTime\">{{report.group.last_timestamp.replace('T', ' ').slice(0,16)}}</span>\n" +
6103 " <span ng-show=\"reports_list.notRelativeTime\">{{report.group.last_timestamp.replace('T', ' ').slice(0,16)}}</span>\n" +
6105 " </td>\n" +
6104 " </td>\n" +
6106 " <td class=\"c4 report ellipsis\"><a ui-sref=\"report.view_detail({groupId:report.group.id, reportId:report.id})\" title=\"{{report.error}}\">{{report.error || 'Unknown Exception'}}</a> <br/>\n" +
6105 " <td class=\"c4 report ellipsis\"><a ui-sref=\"report.view_detail({groupId:report.group.id, reportId:report.id})\" title=\"{{report.error}}\">{{report.error || 'Unknown Exception'}}</a> <br/>\n" +
6107 " <span class=\"url\">{{ report.tags.view_name || report.url_path}}</td>\n" +
6106 " <span class=\"url\">{{ report.tags.view_name || report.url_path}}</td>\n" +
6108 " </tr>\n" +
6107 " </tr>\n" +
6109 "\n" +
6108 "\n" +
6110 " </tbody>\n" +
6109 " </tbody>\n" +
6111 " </table>\n" +
6110 " </table>\n" +
6112 " </div>\n" +
6111 " </div>\n" +
6113 "\n" +
6112 "\n" +
6114 "\n" +
6113 "\n" +
6115 " <div class=\"text-center\">\n" +
6114 " <div class=\"text-center\">\n" +
6116 " <uib-pagination total-items=\"reports_list.itemCount\" items-per-page=\"reports_list.itemsPerPage\" ng-model=\"reports_list.searchParams.page\" max-size=\"10\"\n" +
6115 " <uib-pagination total-items=\"reports_list.itemCount\" items-per-page=\"reports_list.itemsPerPage\" ng-model=\"reports_list.searchParams.page\" max-size=\"10\"\n" +
6117 " class=\"pagination pagination-sm\" boundary-links=\"true\" direction-links=\"false\"\n" +
6116 " class=\"pagination pagination-sm\" boundary-links=\"true\" direction-links=\"false\"\n" +
6118 " ng-change=\"reports_list.paginationChange()\"\n" +
6117 " ng-change=\"reports_list.paginationChange()\"\n" +
6119 " ng-show=\"!reports_list.is_loading\"></uib-pagination>\n" +
6118 " ng-show=\"!reports_list.is_loading\"></uib-pagination>\n" +
6120 " </div>\n" +
6119 " </div>\n" +
6121 "\n" +
6120 "\n" +
6122 "</div>\n"
6121 "</div>\n"
6123 );
6122 );
6124
6123
6125
6124
6126 $templateCache.put('templates/reports/parent_view.html',
6125 $templateCache.put('templates/reports/parent_view.html',
6127 "<div ui-view></div>"
6126 "<div ui-view></div>"
6128 );
6127 );
6129
6128
6130
6129
6131 $templateCache.put('templates/reports/small_report_group_list.html',
6130 $templateCache.put('templates/reports/small_report_group_list.html',
6132 "<table class=\"errors-small-list\">\n" +
6131 "<table class=\"errors-small-list\">\n" +
6133 " <tr ng-repeat=\"report_group in groups track by report_group.id\" class=\"animate-repeat\">\n" +
6132 " <tr ng-repeat=\"report_group in groups track by report_group.id\" class=\"animate-repeat\">\n" +
6134 " <td class=\"c1 occurences\"><span class=\"occurences\" data-uib-tooltip=\"occurences\">{{ report_group.occurences|numberToThousands }}</span></td>\n" +
6133 " <td class=\"c1 occurences\"><span class=\"occurences\" data-uib-tooltip=\"occurences\">{{ report_group.occurences|numberToThousands }}</span></td>\n" +
6135 " <td class=\"ellipsis c2 report_group\">\n" +
6134 " <td class=\"ellipsis c2 report_group\">\n" +
6136 " <a ui-sref=\"report.view_detail({groupId:report_group.id, reportId:report_group.last_report})\" title=\"{{report_group.error}}\" class=\"error-type\">\n" +
6135 " <a ui-sref=\"report.view_detail({groupId:report_group.id, reportId:report_group.last_report})\" title=\"{{report_group.error}}\" class=\"error-type\">\n" +
6137 " {{ report_group.error || \"Slow Report\"}}</a>\n" +
6136 " {{ report_group.error || \"Slow Report\"}}</a>\n" +
6138 " <br/>\n" +
6137 " <br/>\n" +
6139 " <span ng-show=\"report_group.summed_duration\" class=\"duration\" data-uib-tooltip=\"Average duration\">{{report_group.summed_duration/report_group.occurences|round:2}}s</span>\n" +
6138 " <span ng-show=\"report_group.summed_duration\" class=\"duration\" data-uib-tooltip=\"Average duration\">{{report_group.summed_duration/report_group.occurences|round:2}}s</span>\n" +
6140 " <span class=\"url\">{{ report_group.view_name || report_group.url_path}}</span>\n" +
6139 " <span class=\"url\">{{ report_group.view_name || report_group.url_path}}</span>\n" +
6141 " </td>\n" +
6140 " </td>\n" +
6142 " <td class=\"info\">\n" +
6141 " <td class=\"info\">\n" +
6143 " <strong ng-show=\"report_group.resource_id\">@{{applications[report_group.resource_id].resource_name}}</strong><br/>\n" +
6142 " <strong ng-show=\"report_group.resource_id\">@{{applications[report_group.resource_id].resource_name}}</strong><br/>\n" +
6144 " <span class=\"date\">{{report_group.last_timestamp | isoToRelativeTime}}</span>\n" +
6143 " <span class=\"date\">{{report_group.last_timestamp | isoToRelativeTime}}</span>\n" +
6145 " </td>\n" +
6144 " </td>\n" +
6146 " </tr>\n" +
6145 " </tr>\n" +
6147 "</table>\n"
6146 "</table>\n"
6148 );
6147 );
6149
6148
6150
6149
6151 $templateCache.put('templates/reports/small_report_list.html',
6150 $templateCache.put('templates/reports/small_report_list.html',
6152 "<table class=\"errors-small-list\">\n" +
6151 "<table class=\"errors-small-list\">\n" +
6153 " <tr ng-repeat=\"report in reports track by $index\" ng-show=\"reports.length > 0\" class=\"animate-repeat\">\n" +
6152 " <tr ng-repeat=\"report in reports track by $index\" ng-show=\"reports.length > 0\" class=\"animate-repeat\">\n" +
6154 " <td class=\"c1 occurences\"><span class=\"occurences\" data-uib-tooltip=\"occurences\">{{ report.group.occurences|numberToThousands }}</span></td>\n" +
6153 " <td class=\"c1 occurences\"><span class=\"occurences\" data-uib-tooltip=\"occurences\">{{ report.group.occurences|numberToThousands }}</span></td>\n" +
6155 " <td class=\"ellipsis c2 report\">\n" +
6154 " <td class=\"ellipsis c2 report\">\n" +
6156 " <a ui-sref=\"report.view_detail({groupId:report.group_id, reportId:report.report_id})\" title=\"{{report.error}}\" class=\"error-type\">\n" +
6155 " <a ui-sref=\"report.view_detail({groupId:report.group_id, reportId:report.report_id})\" title=\"{{report.error}}\" class=\"error-type\">\n" +
6157 " {{ report.error || \"Slow Report\"}}</a>\n" +
6156 " {{ report.error || \"Slow Report\"}}</a>\n" +
6158 " <br/>\n" +
6157 " <br/>\n" +
6159 " <span ng-show=\"report.group.summed_duration\" class=\"duration\" data-uib-tooltip=\"Average duration\">{{report.group.summed_duration/report.group.occurences|round:2}}s</span>\n" +
6158 " <span ng-show=\"report.group.summed_duration\" class=\"duration\" data-uib-tooltip=\"Average duration\">{{report.group.summed_duration/report.group.occurences|round:2}}s</span>\n" +
6160 " <span class=\"url\">{{ report.view_name || report.url_path}}</span>\n" +
6159 " <span class=\"url\">{{ report.view_name || report.url_path}}</span>\n" +
6161 " </td>\n" +
6160 " </td>\n" +
6162 " <td class=\"info\">\n" +
6161 " <td class=\"info\">\n" +
6163 " <strong ng-show=\"report.resource_id\">@{{applications[report.resource_id].resource_name}}</strong><br/>\n" +
6162 " <strong ng-show=\"report.resource_id\">@{{applications[report.resource_id].resource_name}}</strong><br/>\n" +
6164 " <span class=\"date\">{{report.last_timestamp | isoToRelativeTime}}</span>\n" +
6163 " <span class=\"date\">{{report.last_timestamp | isoToRelativeTime}}</span>\n" +
6165 " </td>\n" +
6164 " </td>\n" +
6166 " </tr>\n" +
6165 " </tr>\n" +
6167 "</table>\n"
6166 "</table>\n"
6168 );
6167 );
6169
6168
6170
6169
6171 $templateCache.put('templates/reports/view.html',
6170 $templateCache.put('templates/reports/view.html',
6172 "<script type=\"text/ng-template\" id=\"slow_call.html\">\n" +
6171 "<script type=\"text/ng-template\" id=\"slow_call.html\">\n" +
6173 " <table class=\"report-table\">\n" +
6172 " <table class=\"report-table\">\n" +
6174 " <tr>\n" +
6173 " <tr>\n" +
6175 " <td class=\"table-label\">Type</td>\n" +
6174 " <td class=\"table-label\">Type</td>\n" +
6176 " <td class=\"data\"><strong>{{call.type}}\n" +
6175 " <td class=\"data\"><strong>{{call.type}}\n" +
6177 " ({{call.subtype}})\n" +
6176 " ({{call.subtype}})\n" +
6178 " </strong></td>\n" +
6177 " </strong></td>\n" +
6179 " </tr>\n" +
6178 " </tr>\n" +
6180 " <tr>\n" +
6179 " <tr>\n" +
6181 " <td class=\"table-label\">Duration</td>\n" +
6180 " <td class=\"table-label\">Duration</td>\n" +
6182 " <td class=\"data\"><strong class=\"textColor_1\">{{call.duration}}</strong></td>\n" +
6181 " <td class=\"data\"><strong class=\"textColor_1\">{{call.duration}}</strong></td>\n" +
6183 " </tr>\n" +
6182 " </tr>\n" +
6184 " <tr>\n" +
6183 " <tr>\n" +
6185 " <td class=\"table-label\">Start Time</td>\n" +
6184 " <td class=\"table-label\">Start Time</td>\n" +
6186 " <td class=\"data\">{{call.timestamp}}</td>\n" +
6185 " <td class=\"data\">{{call.timestamp}}</td>\n" +
6187 " </tr>\n" +
6186 " </tr>\n" +
6188 " <tr>\n" +
6187 " <tr>\n" +
6189 " <td class=\"table-label\">Statement</td>\n" +
6188 " <td class=\"table-label\">Statement</td>\n" +
6190 " <td class=\"data\">\n" +
6189 " <td class=\"data\">\n" +
6191 " <pre class=\"word-wrap\">{{call.statement}}</pre>\n" +
6190 " <pre class=\"word-wrap\">{{call.statement}}</pre>\n" +
6192 " </td>\n" +
6191 " </td>\n" +
6193 " </tr>\n" +
6192 " </tr>\n" +
6194 " <tr ng-if=\"call.location\">\n" +
6193 " <tr ng-if=\"call.location\">\n" +
6195 " <td class=\"table-label\">Location</td>\n" +
6194 " <td class=\"table-label\">Location</td>\n" +
6196 " <td class=\"data\">{{call.location}}</td>\n" +
6195 " <td class=\"data\">{{call.location}}</td>\n" +
6197 " </tr>\n" +
6196 " </tr>\n" +
6198 " <tr>\n" +
6197 " <tr>\n" +
6199 " <td class=\"table-label\">Parameters</td>\n" +
6198 " <td class=\"table-label\">Parameters</td>\n" +
6200 " <td class=\"\">\n" +
6199 " <td class=\"\">\n" +
6201 " <div class=\"var-listing\" human-format vars=\"call.parameters\"></div>\n" +
6200 " <div class=\"var-listing\" human-format vars=\"call.parameters\"></div>\n" +
6202 " </td>\n" +
6201 " </td>\n" +
6203 " </tr>\n" +
6202 " </tr>\n" +
6204 " </table>\n" +
6203 " </table>\n" +
6205 "\n" +
6204 "\n" +
6206 " <div ng-if=\"call.children.length > 0\" class=\"subcalls p-l-8\">\n" +
6205 " <div ng-if=\"call.children.length > 0\" class=\"subcalls p-l-8\">\n" +
6207 "\n" +
6206 "\n" +
6208 " <p><strong>\n" +
6207 " <p><strong>\n" +
6209 " <small>Sub-calls</small>\n" +
6208 " <small>Sub-calls</small>\n" +
6210 " </strong></p>\n" +
6209 " </strong></p>\n" +
6211 "\n" +
6210 "\n" +
6212 " <div class=\"panel panel-default\">\n" +
6211 " <div class=\"panel panel-default\">\n" +
6213 " <div ng-repeat=\"call in call.children\" ng-include=\"'slow_call.html'\" class=\"panel-body\"/>\n" +
6212 " <div ng-repeat=\"call in call.children\" ng-include=\"'slow_call.html'\" class=\"panel-body\"/>\n" +
6214 " </div>\n" +
6213 " </div>\n" +
6215 " </div>\n" +
6214 " </div>\n" +
6216 " </div>\n" +
6215 " </div>\n" +
6217 "\n" +
6216 "\n" +
6218 "</script>\n" +
6217 "</script>\n" +
6219 "\n" +
6218 "\n" +
6220 "<script type=\"text/ng-template\" id=\"AssignReportCtrl.html\">\n" +
6219 "<script type=\"text/ng-template\" id=\"AssignReportCtrl.html\">\n" +
6221 "\n" +
6220 "\n" +
6222 " <div class=\"modal-header\">\n" +
6221 " <div class=\"modal-header\">\n" +
6223 " <h3>Assign users to report</h3>\n" +
6222 " <h3>Assign users to report</h3>\n" +
6224 " </div>\n" +
6223 " </div>\n" +
6225 " <div class=\"modal-body\">\n" +
6224 " <div class=\"modal-body\">\n" +
6226 "\n" +
6225 "\n" +
6227 " <ng-include src=\"'templates/loader.html'\" ng-if=\"ctrl.loading\"></ng-include>\n" +
6226 " <ng-include src=\"'templates/loader.html'\" ng-if=\"ctrl.loading\"></ng-include>\n" +
6228 "\n" +
6227 "\n" +
6229 " <div class=\"row\" ng-if=\"!ctrl.loading\">\n" +
6228 " <div class=\"row\" ng-if=\"!ctrl.loading\">\n" +
6230 " <div class=\"col-sm-6\">\n" +
6229 " <div class=\"col-sm-6\">\n" +
6231 " <strong>Unassigned</strong>\n" +
6230 " <strong>Unassigned</strong>\n" +
6232 "\n" +
6231 "\n" +
6233 " <div class=\"user-assignment\" ng-repeat=\"user in ctrl.unAssignedUsers\"\n" +
6232 " <div class=\"user-assignment\" ng-repeat=\"user in ctrl.unAssignedUsers\"\n" +
6234 " ng-click=\"ctrl.reassignUser(user)\">\n" +
6233 " ng-click=\"ctrl.reassignUser(user)\">\n" +
6235 " <img ng-src=\"{{user.gravatar_url}}\"/>\n" +
6234 " <img ng-src=\"{{user.gravatar_url}}\"/>\n" +
6236 " <strong>{{user.user_name}}</strong><br/>\n" +
6235 " <strong>{{user.user_name}}</strong><br/>\n" +
6237 " {{user.name}}\n" +
6236 " {{user.name}}\n" +
6238 " <div class=\"clear\"></div>\n" +
6237 " <div class=\"clear\"></div>\n" +
6239 " </div>\n" +
6238 " </div>\n" +
6240 " </div>\n" +
6239 " </div>\n" +
6241 "\n" +
6240 "\n" +
6242 " <div class=\"col-sm-6\">\n" +
6241 " <div class=\"col-sm-6\">\n" +
6243 " <strong>Assigned</strong>\n" +
6242 " <strong>Assigned</strong>\n" +
6244 "\n" +
6243 "\n" +
6245 " <div class=\"user-assignment\" ng-repeat=\"user in ctrl.assignedUsers\" ng-click=\"ctrl.reassignUser(user)\">\n" +
6244 " <div class=\"user-assignment\" ng-repeat=\"user in ctrl.assignedUsers\" ng-click=\"ctrl.reassignUser(user)\">\n" +
6246 " <img ng-src=\"{{user.gravatar_url}}\"/>\n" +
6245 " <img ng-src=\"{{user.gravatar_url}}\"/>\n" +
6247 " {{user.user_name}}<br/>\n" +
6246 " {{user.user_name}}<br/>\n" +
6248 " {{user.name}}\n" +
6247 " {{user.name}}\n" +
6249 " <div class=\"clear\"></div>\n" +
6248 " <div class=\"clear\"></div>\n" +
6250 " </div>\n" +
6249 " </div>\n" +
6251 " </div>\n" +
6250 " </div>\n" +
6252 " </div>\n" +
6251 " </div>\n" +
6253 " </div>\n" +
6252 " </div>\n" +
6254 " <div class=\"modal-footer\">\n" +
6253 " <div class=\"modal-footer\">\n" +
6255 " <button class=\"btn btn-primary\" ng-click=\"ctrl.ok()\">OK</button>\n" +
6254 " <button class=\"btn btn-primary\" ng-click=\"ctrl.ok()\">OK</button>\n" +
6256 " <button class=\"btn btn-warning\" ng-click=\"ctrl.cancel()\">Cancel</button>\n" +
6255 " <button class=\"btn btn-warning\" ng-click=\"ctrl.cancel()\">Cancel</button>\n" +
6257 " </div>\n" +
6256 " </div>\n" +
6258 "</script>\n" +
6257 "</script>\n" +
6259 "\n" +
6258 "\n" +
6260 "<ng-include src=\"'templates/loader.html'\" ng-if=\"report.is_loading.report\"></ng-include>\n" +
6259 "<ng-include src=\"'templates/loader.html'\" ng-if=\"report.is_loading.report\"></ng-include>\n" +
6261 "\n" +
6260 "\n" +
6262 "<div ng-if=\"!report.is_loading.report && report.report === null\">\n" +
6261 "<div ng-if=\"!report.is_loading.report && report.report === null\">\n" +
6263 " <strong>OOPS something went wrong :(</strong>\n" +
6262 " <strong>OOPS something went wrong :(</strong>\n" +
6264 "</div>\n" +
6263 "</div>\n" +
6265 "\n" +
6264 "\n" +
6266 "<div ng-if=\"report.report !== null && !report.is_loading.report\">\n" +
6265 "<div ng-if=\"report.report !== null && !report.is_loading.report\">\n" +
6267 "\n" +
6266 "\n" +
6268 " <div ng-if=\"report.stateHolder.AeUser.id\" class=\"row\">\n" +
6267 " <div ng-if=\"report.stateHolder.AeUser.id\" class=\"row\">\n" +
6269 " <div class=\"col-lg-12\">\n" +
6268 " <div class=\"col-lg-12\">\n" +
6270 " <a onclick=\"window.history.back()\" class=\"btn btn-default\" ng-if=\"report.window.history.length > 2\"><span class=\"fa fa-arrow-circle-o-left\"></span>\n" +
6269 " <a onclick=\"window.history.back()\" class=\"btn btn-default\" ng-if=\"report.window.history.length > 2\"><span class=\"fa fa-arrow-circle-o-left\"></span>\n" +
6271 " Go back</a>\n" +
6270 " Go back</a>\n" +
6272 " <a class=\"btn btn-default\" ng-click=\"report.assignUsersModal()\" ng-if=\"report.reportType == 'report'\"><span\n" +
6271 " <a class=\"btn btn-default\" ng-click=\"report.assignUsersModal()\" ng-if=\"report.reportType == 'report'\"><span\n" +
6273 " class=\"fa fa-flag\"></span> Assign report\n" +
6272 " class=\"fa fa-flag\"></span> Assign report\n" +
6274 " to user</a>\n" +
6273 " to user</a>\n" +
6275 "\n" +
6274 "\n" +
6276 " <a class=\"btn {{ report.report.group.fixed ? 'btn-success' : 'btn-default'}}\" ng-click=\"report.markFixed()\"\n" +
6275 " <a class=\"btn {{ report.report.group.fixed ? 'btn-success' : 'btn-default'}}\" ng-click=\"report.markFixed()\"\n" +
6277 " ng-if=\"report.reportType == 'report'\">\n" +
6276 " ng-if=\"report.reportType == 'report'\">\n" +
6278 " <span class=\"fa fa-check\"></span> Mark fixed</a>\n" +
6277 " <span class=\"fa fa-check\"></span> Mark fixed</a>\n" +
6279 "\n" +
6278 "\n" +
6280 " <span class=\"dropdown\" ng-if=\"report.report.application.integrations.length\" data-uib-dropdown on-toggle=\"toggled(open)\">\n" +
6279 " <span class=\"dropdown\" ng-if=\"report.report.application.integrations.length\" data-uib-dropdown on-toggle=\"toggled(open)\">\n" +
6281 " <a class=\"dropdown-toggle btn btn-default\" data-uib-dropdown-toggle>\n" +
6280 " <a class=\"dropdown-toggle btn btn-default\" data-uib-dropdown-toggle>\n" +
6282 " <span class=\"fa fa-send\"></span> Integrations\n" +
6281 " <span class=\"fa fa-send\"></span> Integrations\n" +
6283 " </a>\n" +
6282 " </a>\n" +
6284 " <ul class=\"dropdown-menu\">\n" +
6283 " <ul class=\"dropdown-menu\">\n" +
6285 " <li ng-repeat=\"choice in report.report.application.integrations\">\n" +
6284 " <li ng-repeat=\"choice in report.report.application.integrations\">\n" +
6286 " <a ng-click=\"report.runIntegration(choice.name)\">{{choice.action}}</a>\n" +
6285 " <a ng-click=\"report.runIntegration(choice.name)\">{{choice.action}}</a>\n" +
6287 " </li>\n" +
6286 " </li>\n" +
6288 " </ul>\n" +
6287 " </ul>\n" +
6289 " </span>\n" +
6288 " </span>\n" +
6290 "\n" +
6289 "\n" +
6291 " <a class=\"btn btn-default\" ng-click=\"report.markPublic()\">Make {{report.group.public ? 'private' : 'public'}}</a>\n" +
6290 " <a class=\"btn btn-default\" ng-click=\"report.markPublic()\">Make {{report.group.public ? 'private' : 'public'}}</a>\n" +
6292 "\n" +
6291 "\n" +
6293 "<span class=\"dropdown\" data-uib-dropdown on-toggle=\"toggled(open)\">\n" +
6292 "<span class=\"dropdown\" data-uib-dropdown on-toggle=\"toggled(open)\">\n" +
6294 " <a class=\"btn btn-danger\" data-uib-dropdown-toggle><span class=\"fa fa-trash-o\"></span> Delete</a>\n" +
6293 " <a class=\"btn btn-danger\" data-uib-dropdown-toggle><span class=\"fa fa-trash-o\"></span> Delete</a>\n" +
6295 " <ul class=\"dropdown-menu\">\n" +
6294 " <ul class=\"dropdown-menu\">\n" +
6296 " <li><a>No</a></li>\n" +
6295 " <li><a>No</a></li>\n" +
6297 " <li><a ng-click=\"report.delete()\">Yes</a></li>\n" +
6296 " <li><a ng-click=\"report.delete()\">Yes</a></li>\n" +
6298 " </ul>\n" +
6297 " </ul>\n" +
6299 "</span>\n" +
6298 "</span>\n" +
6300 " </div>\n" +
6299 " </div>\n" +
6301 " </div>\n" +
6300 " </div>\n" +
6302 "\n" +
6301 "\n" +
6303 " <div class=\"row\">\n" +
6302 " <div class=\"row\">\n" +
6304 " <div class=\"col-lg-4\">\n" +
6303 " <div class=\"col-lg-4\">\n" +
6305 "\n" +
6304 "\n" +
6306 " <div class=\"panel panel-default m-t-1\">\n" +
6305 " <div class=\"panel panel-default m-t-1\">\n" +
6307 " <div class=\"panel-body\">\n" +
6306 " <div class=\"panel-body\">\n" +
6308 "\n" +
6307 "\n" +
6309 " <h3 class=\"m-t-0\">Report Information</h3>\n" +
6308 " <h3 class=\"m-t-0\">Report Information</h3>\n" +
6310 "\n" +
6309 "\n" +
6311 " <table class=\"report-table with-ellipsis\">\n" +
6310 " <table class=\"report-table with-ellipsis\">\n" +
6312 " <tr>\n" +
6311 " <tr>\n" +
6313 " <td class=\"table-label\">Occurences</td>\n" +
6312 " <td class=\"table-label\">Occurences</td>\n" +
6314 " <td class=\"data\">{{report.report.group.occurences}}</td>\n" +
6313 " <td class=\"data\">{{report.report.group.occurences}}</td>\n" +
6315 " </tr>\n" +
6314 " </tr>\n" +
6316 " <tr ng-if=\"report.report.http_status\">\n" +
6315 " <tr ng-if=\"report.report.http_status\">\n" +
6317 " <td class=\"table-label\">HTTP status</td>\n" +
6316 " <td class=\"table-label\">HTTP status</td>\n" +
6318 " <td class=\"data\">{{report.report.http_status}}</td>\n" +
6317 " <td class=\"data\">{{report.report.http_status}}</td>\n" +
6319 " </tr>\n" +
6318 " </tr>\n" +
6320 " <tr ng-if=\"report.report.group.priority\">\n" +
6319 " <tr ng-if=\"report.report.group.priority\">\n" +
6321 " <td class=\"table-label\">Priority</td>\n" +
6320 " <td class=\"table-label\">Priority</td>\n" +
6322 " <td class=\"data\">{{report.report.group.priority}}</td>\n" +
6321 " <td class=\"data\">{{report.report.group.priority}}</td>\n" +
6323 " </tr>\n" +
6322 " </tr>\n" +
6324 " <tr ng-if=\"report.report.group.public\">\n" +
6323 " <tr ng-if=\"report.report.group.public\">\n" +
6325 " <td class=\"table-label\">Public URL</td>\n" +
6324 " <td class=\"table-label\">Public URL</td>\n" +
6326 " <td class=\"data\">\n" +
6325 " <td class=\"data\">\n" +
6327 " <form>\n" +
6326 " <form>\n" +
6328 " <textarea class=\"TextAreaField form-control\" id=\"public-url\" onclick=\"this.select()\">{{report.$state.href(report.$state.current.name, report.$state.params, {absolute: true})}}</textarea>\n" +
6327 " <textarea class=\"TextAreaField form-control\" id=\"public-url\" onclick=\"this.select()\">{{report.$state.href(report.$state.current.name, report.$state.params, {absolute: true})}}</textarea>\n" +
6329 " </form>\n" +
6328 " </form>\n" +
6330 " </td>\n" +
6329 " </td>\n" +
6331 " </tr>\n" +
6330 " </tr>\n" +
6332 " <tr data-uib-tooltip=\"{{report.report.url}}\">\n" +
6331 " <tr data-uib-tooltip=\"{{report.report.url}}\">\n" +
6333 " <td class=\"table-label\">URL</td>\n" +
6332 " <td class=\"table-label\">URL</td>\n" +
6334 " <td class=\"data ellipsis\"><a href=\"{{report.report.url}}\">{{report.report.url}}</a></td>\n" +
6333 " <td class=\"data ellipsis\"><a href=\"{{report.report.url}}\">{{report.report.url}}</a></td>\n" +
6335 " </tr>\n" +
6334 " </tr>\n" +
6336 "\n" +
6335 "\n" +
6337 " <tr ng-if=\"report.report.ip\">\n" +
6336 " <tr ng-if=\"report.report.ip\">\n" +
6338 " <td class=\"table-label\">Remote IP</td>\n" +
6337 " <td class=\"table-label\">Remote IP</td>\n" +
6339 " <td class=\"data\">{{report.report.ip}}</td>\n" +
6338 " <td class=\"data\">{{report.report.ip}}</td>\n" +
6340 " </tr>\n" +
6339 " </tr>\n" +
6341 " <tr ng-if=\"report.report.user_agent\" data-uib-tooltip=\"{{report.report.user_agent}}\">\n" +
6340 " <tr ng-if=\"report.report.user_agent\" data-uib-tooltip=\"{{report.report.user_agent}}\">\n" +
6342 " <td class=\"table-label\">User Agent</td>\n" +
6341 " <td class=\"table-label\">User Agent</td>\n" +
6343 " <td class=\"data ellipsis\">{{report.report.user_agent}}</td>\n" +
6342 " <td class=\"data ellipsis\">{{report.report.user_agent}}</td>\n" +
6344 " </tr>\n" +
6343 " </tr>\n" +
6345 " <tr ng-if=\"report.report.message\">\n" +
6344 " <tr ng-if=\"report.report.message\">\n" +
6346 " <td class=\"table-label\">Message</td>\n" +
6345 " <td class=\"table-label\">Message</td>\n" +
6347 " <td class=\"data\">{{report.report.message}}</td>\n" +
6346 " <td class=\"data\">{{report.report.message}}</td>\n" +
6348 " </tr>\n" +
6347 " </tr>\n" +
6349 " <tr ng-if=\"report.report.duration > 0\">\n" +
6348 " <tr ng-if=\"report.report.duration > 0\">\n" +
6350 " <td class=\"table-label\">Duration</td>\n" +
6349 " <td class=\"table-label\">Duration</td>\n" +
6351 " <td class=\"data\">\n" +
6350 " <td class=\"data\">\n" +
6352 " <span>{{report.report.duration}}s</span>\n" +
6351 " <span>{{report.report.duration}}s</span>\n" +
6353 " </td>\n" +
6352 " </td>\n" +
6354 " </tr>\n" +
6353 " </tr>\n" +
6355 " <tr>\n" +
6354 " <tr>\n" +
6356 " <td class=\"table-label\">First occured</td>\n" +
6355 " <td class=\"table-label\">First occured</td>\n" +
6357 " <td class=\"data\">\n" +
6356 " <td class=\"data\">\n" +
6358 " <span uib-tooltip=\"{{report.report.group.first_timestamp}}\"><iso-to-relative-time\n" +
6357 " <span uib-tooltip=\"{{report.report.group.first_timestamp}}\"><iso-to-relative-time\n" +
6359 " time=\"{{report.report.group.first_timestamp}}\"/></span>\n" +
6358 " time=\"{{report.report.group.first_timestamp}}\"/></span>\n" +
6360 " </td>\n" +
6359 " </td>\n" +
6361 " </tr>\n" +
6360 " </tr>\n" +
6362 " <tr>\n" +
6361 " <tr>\n" +
6363 " <td class=\"table-label\">Last occured</td>\n" +
6362 " <td class=\"table-label\">Last occured</td>\n" +
6364 " <td class=\"data\">\n" +
6363 " <td class=\"data\">\n" +
6365 " <span uib-tooltip=\"{{report.report.group.last_timestamp}}\"><iso-to-relative-time\n" +
6364 " <span uib-tooltip=\"{{report.report.group.last_timestamp}}\"><iso-to-relative-time\n" +
6366 " time=\"{{report.report.group.last_timestamp}}\"/></span>\n" +
6365 " time=\"{{report.report.group.last_timestamp}}\"/></span>\n" +
6367 " </td>\n" +
6366 " </td>\n" +
6368 " </tr>\n" +
6367 " </tr>\n" +
6369 " </table>\n" +
6368 " </table>\n" +
6370 "\n" +
6369 "\n" +
6371 " <div ng-if=\"report.requestStats\">\n" +
6370 " <div ng-if=\"report.requestStats\">\n" +
6372 " <h3>Performance stats</h3>\n" +
6371 " <h3>Performance stats</h3>\n" +
6373 "\n" +
6372 "\n" +
6374 " <div class=\"perf_stats\">\n" +
6373 " <div class=\"perf_stats\">\n" +
6375 " <span class=\"stat\" ng-repeat=\"stat in report.requestStats\"\n" +
6374 " <span class=\"stat\" ng-repeat=\"stat in report.requestStats\"\n" +
6376 " ng-if=\"stat.calls > 0 || stat.value > 0\"><strong>\n" +
6375 " ng-if=\"stat.calls > 0 || stat.value > 0\"><strong>\n" +
6377 " <span class=\"{{stat.name}} bar\" style=\"width:10px\"></span> {{stat.calls}}\n" +
6376 " <span class=\"{{stat.name}} bar\" style=\"width:10px\"></span> {{stat.calls}}\n" +
6378 " <span ng-if=\"stat.name!='main'\"><small>{{stat.name}} calls</small></span>\n" +
6377 " <span ng-if=\"stat.name!='main'\"><small>{{stat.name}} calls</small></span>\n" +
6379 " <span ng-if=\"stat.name=='main'\">\n" +
6378 " <span ng-if=\"stat.name=='main'\">\n" +
6380 " <span class=\"fa fa-question-circle\"\n" +
6379 " <span class=\"fa fa-question-circle\"\n" +
6381 " data-uib-tooltip=\"Execution time that didnt get assigned to other layers\"></span> Other</span>\n" +
6380 " data-uib-tooltip=\"Execution time that didnt get assigned to other layers\"></span> Other</span>\n" +
6382 " </strong>\n" +
6381 " </strong>\n" +
6383 " </span>\n" +
6382 " </span>\n" +
6384 "\n" +
6383 "\n" +
6385 " <div style=\"width: 100%; overflow:hidden\">\n" +
6384 " <div style=\"width: 100%; overflow:hidden\">\n" +
6386 " <div class=\"{{stat.name}} bar\" style=\"width:{{stat.percent}}%; height: 25px\"\n" +
6385 " <div class=\"{{stat.name}} bar\" style=\"width:{{stat.percent}}%; height: 25px\"\n" +
6387 " ng-repeat=\"stat in report.requestStats\"\n" +
6386 " ng-repeat=\"stat in report.requestStats\"\n" +
6388 " data-uib-tooltip=\"{{stat.value}}s - Cumulative time spent in this request on all {{ stat.name }} calls\"></div>\n" +
6387 " data-uib-tooltip=\"{{stat.value}}s - Cumulative time spent in this request on all {{ stat.name }} calls\"></div>\n" +
6389 " <div class=\"row\">\n" +
6388 " <div class=\"row\">\n" +
6390 " <div class=\"col-xs-6 text-left\">\n" +
6389 " <div class=\"col-xs-6 text-left\">\n" +
6391 " <small>0s</small>\n" +
6390 " <small>0s</small>\n" +
6392 " </div>\n" +
6391 " </div>\n" +
6393 " <div class=\"col-xs-6 text-right\">\n" +
6392 " <div class=\"col-xs-6 text-right\">\n" +
6394 " <small>{{report.report.duration.toFixed(3)}}s</small>\n" +
6393 " <small>{{report.report.duration.toFixed(3)}}s</small>\n" +
6395 " </div>\n" +
6394 " </div>\n" +
6396 " </div>\n" +
6395 " </div>\n" +
6397 " </div>\n" +
6396 " </div>\n" +
6398 " </div>\n" +
6397 " </div>\n" +
6399 " </div>\n" +
6398 " </div>\n" +
6400 "\n" +
6399 "\n" +
6401 " <h3>Tags</h3>\n" +
6400 " <h3>Tags</h3>\n" +
6402 "\n" +
6401 "\n" +
6403 " <table class=\"report-table with-tags\">\n" +
6402 " <table class=\"report-table with-tags\">\n" +
6404 " <tr ng-repeat=\"(tag, value) in report.report.tags\">\n" +
6403 " <tr ng-repeat=\"(tag, value) in report.report.tags\">\n" +
6405 " <td class=\"table-label\" ng-switch=\"tag\"><!--\n" +
6404 " <td class=\"table-label\" ng-switch=\"tag\"><!--\n" +
6406 " --><span ng-switch-when=\"user_name\">Username/UID</span><!--\n" +
6405 " --><span ng-switch-when=\"user_name\">Username/UID</span><!--\n" +
6407 " --><span ng-switch-when=\"view_name\">View Name</span><!--\n" +
6406 " --><span ng-switch-when=\"view_name\">View Name</span><!--\n" +
6408 " --><span ng-switch-when=\"server_name\">Server Name</span><!--\n" +
6407 " --><span ng-switch-when=\"server_name\">Server Name</span><!--\n" +
6409 " --><span ng-switch-default>{{ tag }}</span>\n" +
6408 " --><span ng-switch-default>{{ tag }}</span>\n" +
6410 " </td>\n" +
6409 " </td>\n" +
6411 " <td class=\"data\"><a ng-click=\"report.searchTag(tag, value)\">{{ value }}</td>\n" +
6410 " <td class=\"data\"><a ng-click=\"report.searchTag(tag, value)\">{{ value }}</td>\n" +
6412 " </tr>\n" +
6411 " </tr>\n" +
6413 " </table>\n" +
6412 " </table>\n" +
6414 "\n" +
6413 "\n" +
6415 " </div>\n" +
6414 " </div>\n" +
6416 " </div>\n" +
6415 " </div>\n" +
6417 "\n" +
6416 "\n" +
6418 "\n" +
6417 "\n" +
6419 " </div>\n" +
6418 " </div>\n" +
6420 " <div class=\"col-lg-8\">\n" +
6419 " <div class=\"col-lg-8\">\n" +
6421 " <div class=\"frames\">\n" +
6420 " <div class=\"frames\">\n" +
6422 " <p class=\"text-center\">Report history</p>\n" +
6421 " <p class=\"text-center\">Report history</p>\n" +
6423 "\n" +
6422 "\n" +
6424 " <div class=\"panel\" ng-if=\"!report.is_loading.history\">\n" +
6423 " <div class=\"panel\" ng-if=\"!report.is_loading.history\">\n" +
6425 " <div class=\"panel-body\">\n" +
6424 " <div class=\"panel-body\">\n" +
6426 " <c3chart data-domid=\"report_history_chart\" data-data=\"report.reportHistoryData\" data-config=\"report.reportHistoryConfig\">\n" +
6425 " <c3chart data-domid=\"report_history_chart\" data-data=\"report.reportHistoryData\" data-config=\"report.reportHistoryConfig\">\n" +
6427 " </c3chart>\n" +
6426 " </c3chart>\n" +
6428 " </div>\n" +
6427 " </div>\n" +
6429 " </div>\n" +
6428 " </div>\n" +
6430 "\n" +
6429 "\n" +
6431 " <div class=\"row m-b-1\">\n" +
6430 " <div class=\"row m-b-1\">\n" +
6432 " <div class=\"col-sm-2 text-left\">\n" +
6431 " <div class=\"col-sm-2 text-left\">\n" +
6433 " <a class=\"switch_detail btn btn-sm btn-default {{report.report.group.previous_report ? '' : 'disabled'}}\"\n" +
6432 " <a class=\"switch_detail btn btn-sm btn-default {{report.report.group.previous_report ? '' : 'disabled'}}\"\n" +
6434 " ng-click=\"report.previousDetail()\">\n" +
6433 " ng-click=\"report.previousDetail()\">\n" +
6435 " <span class=\"fa fa-arrow-left\"></span>\n" +
6434 " <span class=\"fa fa-arrow-left\"></span>\n" +
6436 " Prev. detail</a>\n" +
6435 " Prev. detail</a>\n" +
6437 "\n" +
6436 "\n" +
6438 " </div>\n" +
6437 " </div>\n" +
6439 " <div class=\"col-sm-8 text-center\">\n" +
6438 " <div class=\"col-sm-8 text-center\">\n" +
6440 " <small>\n" +
6439 " <small>\n" +
6441 " <span uib-tooltip=\"{{report.report.start_time|isoToRelativeTime}}\" class=\"m-r-1\">\n" +
6440 " <span uib-tooltip=\"{{report.report.start_time|isoToRelativeTime}}\" class=\"m-r-1\">\n" +
6442 " {{report.report.start_time.replace('T', ' ')}} UTC</span>\n" +
6441 " {{report.report.start_time.replace('T', ' ')}} UTC</span>\n" +
6443 " <span class=\"text-muted\">ID: {{report.report.request_id}}</span>\n" +
6442 " <span class=\"text-muted\">ID: {{report.report.request_id}}</span>\n" +
6444 " </small>\n" +
6443 " </small>\n" +
6445 " </div>\n" +
6444 " </div>\n" +
6446 " <div class=\"col-sm-2 text-right\">\n" +
6445 " <div class=\"col-sm-2 text-right\">\n" +
6447 " <a class=\"switch_detail btn btn-sm btn-default {{report.report.group.next_report ? '' : 'disabled'}}\"\n" +
6446 " <a class=\"switch_detail btn btn-sm btn-default {{report.report.group.next_report ? '' : 'disabled'}}\"\n" +
6448 " ng-click=\"report.nextDetail()\">\n" +
6447 " ng-click=\"report.nextDetail()\">\n" +
6449 " Next detail <span class=\"fa fa-arrow-right\"></span></a>\n" +
6448 " Next detail <span class=\"fa fa-arrow-right\"></span></a>\n" +
6450 " </div>\n" +
6449 " </div>\n" +
6451 " </div>\n" +
6450 " </div>\n" +
6452 "\n" +
6451 "\n" +
6453 " <h3 class=\"word-wrap\">{{report.report.error}}</h3>\n" +
6452 " <h3 class=\"word-wrap\">{{report.report.error}}</h3>\n" +
6454 "\n" +
6453 "\n" +
6455 " <div ng-if=\"report.report.traceback\">\n" +
6454 " <div ng-if=\"report.report.traceback\">\n" +
6456 "\n" +
6455 "\n" +
6457 " <h3><strong>Traceback</strong></h3>\n" +
6456 " <h3><strong>Traceback</strong></h3>\n" +
6458 "\n" +
6457 "\n" +
6459 " <div class=\"btn-group\">\n" +
6458 " <div class=\"btn-group\">\n" +
6460 " <a ng-if=\"report.traceback.length-10 > 0 \" ng-click=\"report.showLong = !report.showLong\"\n" +
6459 " <a ng-if=\"report.traceback.length-10 > 0 \" ng-click=\"report.showLong = !report.showLong\"\n" +
6461 " class=\"btn btn-default {{report.showLong ? 'active' : ''}}\">\n" +
6460 " class=\"btn btn-default {{report.showLong ? 'active' : ''}}\">\n" +
6462 " <span class=\"fa fa-align-left\"></span>\n" +
6461 " <span class=\"fa fa-align-left\"></span>\n" +
6463 " <small>Show {{report.traceback.length-10}} remaining frames</small>\n" +
6462 " <small>Show {{report.traceback.length-10}} remaining frames</small>\n" +
6464 " </a>\n" +
6463 " </a>\n" +
6465 "\n" +
6464 "\n" +
6466 " <a class=\"btn btn-default {{report.showRaw ? 'active' : ''}}\" ng-click=\"report.showRaw = !report.showRaw\">\n" +
6465 " <a class=\"btn btn-default {{report.showRaw ? 'active' : ''}}\" ng-click=\"report.showRaw = !report.showRaw\">\n" +
6467 " <span class=\"fa fa-list\"></span>\n" +
6466 " <span class=\"fa fa-list\"></span>\n" +
6468 " <small>Raw version</small>\n" +
6467 " <small>Raw version</small>\n" +
6469 " </a>\n" +
6468 " </a>\n" +
6470 " </div>\n" +
6469 " </div>\n" +
6471 "\n" +
6470 "\n" +
6472 " <div ng-if=\"report.showRaw\" class=\"m-t-1\">\n" +
6471 " <div ng-if=\"report.showRaw\" class=\"m-t-1\">\n" +
6473 " <pre>{{report.rawTraceback}}</pre>\n" +
6472 " <pre>{{report.rawTraceback}}</pre>\n" +
6474 " </div>\n" +
6473 " </div>\n" +
6475 " <div ng-if=\"!report.showRaw\" class=\"m-t-1\">\n" +
6474 " <div ng-if=\"!report.showRaw\" class=\"m-t-1\">\n" +
6476 "\n" +
6475 "\n" +
6477 " <div ng-repeat=\"frame in report.traceback\" class=\"frame {{$odd ? 'odd' : 'even'}}\"\n" +
6476 " <div ng-repeat=\"frame in report.traceback\" class=\"frame {{$odd ? 'odd' : 'even'}}\"\n" +
6478 " ng-if=\"$index >= report.traceback.length-10 || report.traceback.length <= 10 || report.showLong\">\n" +
6477 " ng-if=\"$index >= report.traceback.length-10 || report.traceback.length <= 10 || report.showLong\">\n" +
6479 " <div class=\"frameline\" ng-if=\"frame.line\">\n" +
6478 " <div class=\"frameline\" ng-if=\"frame.line\">\n" +
6480 " <a class=\"inspect_vars\" ng-click=\"frame.showVars = !frame.showVars\" ng-if=\"frame.vars\">\n" +
6479 " <a class=\"inspect_vars\" ng-click=\"frame.showVars = !frame.showVars\" ng-if=\"frame.vars\">\n" +
6481 " <span class=\"fa fa-search dim btn btn-default\"\n" +
6480 " <span class=\"fa fa-search dim btn btn-default\"\n" +
6482 " uib-tooltip=\"Show local vars\"> </span>\n" +
6481 " uib-tooltip=\"Show local vars\"> </span>\n" +
6483 " </a>\n" +
6482 " </a>\n" +
6484 "\n" +
6483 "\n" +
6485 " <span class=\"no-vars\" ng-if=\"frame.vars.length == 0\"></span>\n" +
6484 " <span class=\"no-vars\" ng-if=\"frame.vars.length == 0\"></span>\n" +
6486 "\n" +
6485 "\n" +
6487 " <span ng-if=\"frame.file\">\n" +
6486 " <span ng-if=\"frame.file\">\n" +
6488 " <span class=\"mono\">File</span> <span class=\"file mono\">{{frame.file || 'Unknown file'}}</span>,\n" +
6487 " <span class=\"mono\">File</span> <span class=\"file mono\">{{frame.file || 'Unknown file'}}</span>,\n" +
6489 " </span>\n" +
6488 " </span>\n" +
6490 " <span ng-if=\"frame.module && !frame.file\">\n" +
6489 " <span ng-if=\"frame.module && !frame.file\">\n" +
6491 " <span class=\"mono\">Module</span> <span class=\"file mono\">{{frame.module || 'Unknown module'}}</span>,\n" +
6490 " <span class=\"mono\">Module</span> <span class=\"file mono\">{{frame.module || 'Unknown module'}}</span>,\n" +
6492 " </span>\n" +
6491 " </span>\n" +
6493 " <span class=\"mono\">line</span> <span class=\"line mono\">{{frame.line || 'Unknown line'}}</span>\n" +
6492 " <span class=\"mono\">line</span> <span class=\"line mono\">{{frame.line || 'Unknown line'}}</span>\n" +
6494 "\n" +
6493 "\n" +
6495 " <span ng-if=\"frame.fn\"><span class=\"mono\">in</span> <strong\n" +
6494 " <span ng-if=\"frame.fn\"><span class=\"mono\">in</span> <strong\n" +
6496 " class=\"fn mono\">{{frame.fn || 'Unknown function'}}</strong></span>\n" +
6495 " class=\"fn mono\">{{frame.fn || 'Unknown function'}}</strong></span>\n" +
6497 "\n" +
6496 "\n" +
6498 " </div>\n" +
6497 " </div>\n" +
6499 " <div class=\"cline mono\" ng-if=\"frame.cline\">{{frame.cline || 'Unknown context'}}</div>\n" +
6498 " <div class=\"cline mono\" ng-if=\"frame.cline\">{{frame.cline || 'Unknown context'}}</div>\n" +
6500 "\n" +
6499 "\n" +
6501 " <div class=\"vars\" ng-if=\"frame.showVars\">\n" +
6500 " <div class=\"vars\" ng-if=\"frame.showVars\">\n" +
6502 " <table class=\"var-listing small\">\n" +
6501 " <table class=\"var-listing small\">\n" +
6503 " <tr ng-repeat=\"fvar in frame.vars track by $index\" class=\"frame {{$odd ? 'odd' : 'even'}}\">\n" +
6502 " <tr ng-repeat=\"fvar in frame.vars track by $index\" class=\"frame {{$odd ? 'odd' : 'even'}}\">\n" +
6504 " <td class=\"var-label\">{{ fvar[0] }}</td>\n" +
6503 " <td class=\"var-label\">{{ fvar[0] }}</td>\n" +
6505 " <td>\n" +
6504 " <td>\n" +
6506 " <span human-format vars=\"fvar[1]\"></span>\n" +
6505 " <span human-format vars=\"fvar[1]\"></span>\n" +
6507 " </td>\n" +
6506 " </td>\n" +
6508 " </tr>\n" +
6507 " </tr>\n" +
6509 " </table>\n" +
6508 " </table>\n" +
6510 "\n" +
6509 "\n" +
6511 " </div>\n" +
6510 " </div>\n" +
6512 " </div>\n" +
6511 " </div>\n" +
6513 " </div>\n" +
6512 " </div>\n" +
6514 "\n" +
6513 "\n" +
6515 "\n" +
6514 "\n" +
6516 " </div>\n" +
6515 " </div>\n" +
6517 "\n" +
6516 "\n" +
6518 "\n" +
6517 "\n" +
6519 " <uib-tabset>\n" +
6518 " <uib-tabset>\n" +
6520 " <uib-tab select=\"report.selectedTab('slow_calls')\" active=\"report.tabs.slow_calls\">\n" +
6519 " <uib-tab select=\"report.selectedTab('slow_calls')\" active=\"report.tabs.slow_calls\">\n" +
6521 " <uib-tab-heading>\n" +
6520 " <uib-tab-heading>\n" +
6522 " Slow Calls\n" +
6521 " Slow Calls\n" +
6523 " </uib-tab-heading>\n" +
6522 " </uib-tab-heading>\n" +
6524 "\n" +
6523 "\n" +
6525 " <h3><strong>Slow Calls</strong></h3>\n" +
6524 " <h3><strong>Slow Calls</strong></h3>\n" +
6526 "\n" +
6525 "\n" +
6527 " <div ng-if=\"report.report.slow_calls.length > 0\">\n" +
6526 " <div ng-if=\"report.report.slow_calls.length > 0\">\n" +
6528 " <div ng-repeat=\"call in report.report.slow_calls\" ng-include=\"'slow_call.html'\"></div>\n" +
6527 " <div ng-repeat=\"call in report.report.slow_calls\" ng-include=\"'slow_call.html'\"></div>\n" +
6529 " </div>\n" +
6528 " </div>\n" +
6530 "\n" +
6529 "\n" +
6531 " <div ng-if=\"report.report.slow_calls.length == 0\">\n" +
6530 " <div ng-if=\"report.report.slow_calls.length == 0\">\n" +
6532 " No slow calls reported\n" +
6531 " No slow calls reported\n" +
6533 " </div>\n" +
6532 " </div>\n" +
6534 "\n" +
6533 "\n" +
6535 " </uib-tab>\n" +
6534 " </uib-tab>\n" +
6536 "\n" +
6535 "\n" +
6537 "\n" +
6536 "\n" +
6538 " <uib-tab select=\"report.selectedTab('request_details')\" active=\"report.tabs.request_details\">\n" +
6537 " <uib-tab select=\"report.selectedTab('request_details')\" active=\"report.tabs.request_details\">\n" +
6539 " <uib-tab-heading>\n" +
6538 " <uib-tab-heading>\n" +
6540 " Request details\n" +
6539 " Request details\n" +
6541 " </uib-tab-heading>\n" +
6540 " </uib-tab-heading>\n" +
6542 "\n" +
6541 "\n" +
6543 " <h3><strong>Extra</strong></h3>\n" +
6542 " <h3><strong>Extra</strong></h3>\n" +
6544 " <div class=\"var-listing\" human-format vars=\"report.report.extra\"></div>\n" +
6543 " <div class=\"var-listing\" human-format vars=\"report.report.extra\"></div>\n" +
6545 " <h3><strong>Request details</strong></h3>\n" +
6544 " <h3><strong>Request details</strong></h3>\n" +
6546 " <div class=\"var-listing\" human-format vars=\"report.report.request\"></div>\n" +
6545 " <div class=\"var-listing\" human-format vars=\"report.report.request\"></div>\n" +
6547 "\n" +
6546 "\n" +
6548 " </uib-tab>\n" +
6547 " </uib-tab>\n" +
6549 "\n" +
6548 "\n" +
6550 " <uib-tab select=\"report.selectedTab('logs')\" active=\"report.tabs.logs\">\n" +
6549 " <uib-tab select=\"report.selectedTab('logs')\" active=\"report.tabs.logs\">\n" +
6551 " <uib-tab-heading>\n" +
6550 " <uib-tab-heading>\n" +
6552 " Logs\n" +
6551 " Logs\n" +
6553 " </uib-tab-heading>\n" +
6552 " </uib-tab-heading>\n" +
6554 "\n" +
6553 "\n" +
6555 " <div ng-if=\"report.is_loading.logs!=false\" class=\"text-center\">\n" +
6554 " <div ng-if=\"report.is_loading.logs!=false\" class=\"text-center\">\n" +
6556 " <span class=\"fa fa-cog fa-spin fa-3x loader\"></span>\n" +
6555 " <span class=\"fa fa-cog fa-spin fa-3x loader\"></span>\n" +
6557 " </div>\n" +
6556 " </div>\n" +
6558 " <p ng-if=\"report.reportLogs.length == 0\"> No logs found</p>\n" +
6557 " <p ng-if=\"report.reportLogs.length == 0\"> No logs found</p>\n" +
6559 "\n" +
6558 "\n" +
6560 " <table class=\"table table-striped log-list\" ng-if=\"report.reportLogs.length > 0\">\n" +
6559 " <table class=\"table table-striped log-list\" ng-if=\"report.reportLogs.length > 0\">\n" +
6561 "\n" +
6560 "\n" +
6562 " <caption>Logs</caption>\n" +
6561 " <caption>Logs</caption>\n" +
6563 " <thead>\n" +
6562 " <thead>\n" +
6564 " <tr>\n" +
6563 " <tr>\n" +
6565 " <th class=\"message\">Message</th>\n" +
6564 " <th class=\"message\">Message</th>\n" +
6566 " <th class=\"when\">When</th>\n" +
6565 " <th class=\"when\">When</th>\n" +
6567 " </tr>\n" +
6566 " </tr>\n" +
6568 " </thead>\n" +
6567 " </thead>\n" +
6569 " <tbody>\n" +
6568 " <tbody>\n" +
6570 " <tr ng-repeat=\"log in report.reportLogs track by log.log_id\">\n" +
6569 " <tr ng-repeat=\"log in report.reportLogs track by log.log_id\">\n" +
6571 " <td>\n" +
6570 " <td>\n" +
6572 " <a class=\"tag {{log.log_level|lowercase}}\">\n" +
6571 " <a class=\"tag {{log.log_level|lowercase}}\">\n" +
6573 " <span class=\"name\">level:</span> {{log.log_level}}</a>\n" +
6572 " <span class=\"name\">level:</span> {{log.log_level}}</a>\n" +
6574 " <a class=\"tag\">\n" +
6573 " <a class=\"tag\">\n" +
6575 " <span class=\"name\">namespace:</span> {{log.namespace}}</a>\n" +
6574 " <span class=\"name\">namespace:</span> {{log.namespace}}</a>\n" +
6576 " <a ng-repeat=\"(tag, value) in log.tags\" class=\"tag\">\n" +
6575 " <a ng-repeat=\"(tag, value) in log.tags\" class=\"tag\">\n" +
6577 " <span class=\"name\">{{tag}}:</span> {{value}}</a>\n" +
6576 " <span class=\"name\">{{tag}}:</span> {{value}}</a>\n" +
6578 " <div class=\"log\">\n" +
6577 " <div class=\"log\">\n" +
6579 " {{log.message}}\n" +
6578 " {{log.message}}\n" +
6580 " </div>\n" +
6579 " </div>\n" +
6581 " </td>\n" +
6580 " </td>\n" +
6582 " <td class=\"when\">\n" +
6581 " <td class=\"when\">\n" +
6583 " <a data-uib-tooltip=\"{{log.timestamp}}\">\n" +
6582 " <a data-uib-tooltip=\"{{log.timestamp}}\">\n" +
6584 " <iso-to-relative-time time=\"{{log.timestamp}}\"/>\n" +
6583 " <iso-to-relative-time time=\"{{log.timestamp}}\"/>\n" +
6585 " </a>\n" +
6584 " </a>\n" +
6586 " </td>\n" +
6585 " </td>\n" +
6587 " </tr>\n" +
6586 " </tr>\n" +
6588 "\n" +
6587 "\n" +
6589 " </tbody>\n" +
6588 " </tbody>\n" +
6590 " </table>\n" +
6589 " </table>\n" +
6591 "\n" +
6590 "\n" +
6592 " </uib-tab>\n" +
6591 " </uib-tab>\n" +
6593 "\n" +
6592 "\n" +
6594 "\n" +
6593 "\n" +
6595 " <uib-tab select=\"report.selectedTab('comments')\" active=\"report.tabs.comments\">\n" +
6594 " <uib-tab select=\"report.selectedTab('comments')\" active=\"report.tabs.comments\">\n" +
6596 " <uib-tab-heading>\n" +
6595 " <uib-tab-heading>\n" +
6597 " Comments\n" +
6596 " Comments\n" +
6598 " <span class=\"label label-info\">{{report.report.comments.length}}</span>\n" +
6597 " <span class=\"label label-info\">{{report.report.comments.length}}</span>\n" +
6599 "\n" +
6598 "\n" +
6600 " </uib-tab-heading>\n" +
6599 " </uib-tab-heading>\n" +
6601 "\n" +
6600 "\n" +
6602 " <h3><strong>Comments</strong></h3>\n" +
6601 " <h3><strong>Comments</strong></h3>\n" +
6603 "\n" +
6602 "\n" +
6604 " <p ng-if=\"report.report.comments.length == 0\">No comments yet - be first to add one!</p>\n" +
6603 " <p ng-if=\"report.report.comments.length == 0\">No comments yet - be first to add one!</p>\n" +
6605 "\n" +
6604 "\n" +
6606 " <div class=\"comment\" ng-repeat=\"comment in report.report.comments\">\n" +
6605 " <div class=\"comment\" ng-repeat=\"comment in report.report.comments\">\n" +
6607 " <p name=\"comment-{{comment.comment_id}}\"><span class=\"fa fa-comment\"></span>\n" +
6606 " <p name=\"comment-{{comment.comment_id}}\"><span class=\"fa fa-comment\"></span>\n" +
6608 " <strong>{{comment.user_name}}</strong>\n" +
6607 " <strong>{{comment.user_name}}</strong>\n" +
6609 " <iso-to-relative-time time=\"{{comment.created_timestamp}}\"/>\n" +
6608 " <iso-to-relative-time time=\"{{comment.created_timestamp}}\"/>\n" +
6610 " </p>\n" +
6609 " </p>\n" +
6611 " <p class=\"well\">{{comment.body}}</p>\n" +
6610 " <p class=\"well\">{{comment.body}}</p>\n" +
6612 " </div>\n" +
6611 " </div>\n" +
6613 "\n" +
6612 "\n" +
6614 " <form name=\"commentForm\" ng-submit=\"report.addComment()\">\n" +
6613 " <form name=\"commentForm\" ng-submit=\"report.addComment()\">\n" +
6615 " <div class=\"form-group\">\n" +
6614 " <div class=\"form-group\">\n" +
6616 " <textarea type=\"text\" class=\"form-control\" id=\"report.commentForm\" ng-model=\"report.comment\" required\n" +
6615 " <textarea type=\"text\" class=\"form-control\" id=\"report.commentForm\" ng-model=\"report.comment\" required\n" +
6617 " mentio mentio-search=\"report.searchMentionedPeople(term)\" mentio-items=\"report.mentionedPeople| filter:label:typedTerm\" class=\"form-control\"></textarea>\n" +
6616 " mentio mentio-search=\"report.searchMentionedPeople(term)\" mentio-items=\"report.mentionedPeople| filter:label:typedTerm\" class=\"form-control\"></textarea>\n" +
6618 "\n" +
6617 "\n" +
6619 " </div>\n" +
6618 " </div>\n" +
6620 " <div class=\"form-group\">\n" +
6619 " <div class=\"form-group\">\n" +
6621 " <button class=\"btn btn-info\" ng-disabled=\"report.commentForm.$invalid\">Comment</button>\n" +
6620 " <button class=\"btn btn-info\" ng-disabled=\"report.commentForm.$invalid\">Comment</button>\n" +
6622 " </div>\n" +
6621 " </div>\n" +
6623 " </form>\n" +
6622 " </form>\n" +
6624 "\n" +
6623 "\n" +
6625 " <div ng-repeat=\"comment in report.report.comments\" class=\"{{$odd ? 'odd' : 'even'}}\" class=\"repeat-animate\">\n" +
6624 " <div ng-repeat=\"comment in report.report.comments\" class=\"{{$odd ? 'odd' : 'even'}}\" class=\"repeat-animate\">\n" +
6626 " </div>\n" +
6625 " </div>\n" +
6627 "\n" +
6626 "\n" +
6628 " </uib-tab>\n" +
6627 " </uib-tab>\n" +
6629 "\n" +
6628 "\n" +
6630 " <uib-tab select=\"report.selectedTab('affected_users')\" active=\"report.tabs.affected_users\">\n" +
6629 " <uib-tab select=\"report.selectedTab('affected_users')\" active=\"report.tabs.affected_users\">\n" +
6631 " <uib-tab-heading>\n" +
6630 " <uib-tab-heading>\n" +
6632 " Affected users\n" +
6631 " Affected users\n" +
6633 " <span class=\"label label-warning\">{{report.report.affected_users_count}}</span>\n" +
6632 " <span class=\"label label-warning\">{{report.report.affected_users_count}}</span>\n" +
6634 "\n" +
6633 "\n" +
6635 " </uib-tab-heading>\n" +
6634 " </uib-tab-heading>\n" +
6636 "\n" +
6635 "\n" +
6637 " <h3><strong>50 most affected users ID's by this issue:</strong></h3>\n" +
6636 " <h3><strong>50 most affected users ID's by this issue:</strong></h3>\n" +
6638 " <ul class=\"affected-user-list\">\n" +
6637 " <ul class=\"affected-user-list\">\n" +
6639 " <li ng-repeat=\"user in report.report.top_affected_users\">\n" +
6638 " <li ng-repeat=\"user in report.report.top_affected_users\">\n" +
6640 " <strong>{{user.username}}</strong> <span class=\"badge\" uib-tooltip=\"occurences\">{{user.count}}</span>\n" +
6639 " <strong>{{user.username}}</strong> <span class=\"badge\" uib-tooltip=\"occurences\">{{user.count}}</span>\n" +
6641 " </li>\n" +
6640 " </li>\n" +
6642 " </ul>\n" +
6641 " </ul>\n" +
6643 "\n" +
6642 "\n" +
6644 " </uib-tab>\n" +
6643 " </uib-tab>\n" +
6645 "\n" +
6644 "\n" +
6646 " </uib-tabset>\n" +
6645 " </uib-tabset>\n" +
6647 "\n" +
6646 "\n" +
6648 "\n" +
6647 "\n" +
6649 " </div>\n" +
6648 " </div>\n" +
6650 "\n" +
6649 "\n" +
6651 " </div>\n" +
6650 " </div>\n" +
6652 " </div>\n" +
6651 " </div>\n" +
6653 "</div>\n"
6652 "</div>\n"
6654 );
6653 );
6655
6654
6656
6655
6657 $templateCache.put('templates/user/alert_channels_email.html',
6656 $templateCache.put('templates/user/alert_channels_email.html',
6658 "<ng-include src=\"'templates/loader.html'\" ng-if=\"email.loading.email\"></ng-include>\n" +
6657 "<ng-include src=\"'templates/loader.html'\" ng-if=\"email.loading.email\"></ng-include>\n" +
6659 "\n" +
6658 "\n" +
6660 "<div ng-show=\"!email.loading.email\">\n" +
6659 "<div ng-show=\"!email.loading.email\">\n" +
6661 "\n" +
6660 "\n" +
6662 " <div class=\"panel panel-default\">\n" +
6661 " <div class=\"panel panel-default\">\n" +
6663 " <div class=\"panel-heading\" ng-include=\"'templates/user/breadcrumbs.html'\"></div>\n" +
6662 " <div class=\"panel-heading\" ng-include=\"'templates/user/breadcrumbs.html'\"></div>\n" +
6664 " <div class=\"panel-body\">\n" +
6663 " <div class=\"panel-body\">\n" +
6665 " <p>Adding email alert channel - after you authorize your email in the system we can send alerts directly to this mailbox.</p>\n" +
6664 " <p>Adding email alert channel - after you authorize your email in the system we can send alerts directly to this mailbox.</p>\n" +
6666 " <form class=\"form-horizontal\" name=\"email.channelForm\" ng-submit=\"email.createChannel()\">\n" +
6665 " <form class=\"form-horizontal\" name=\"email.channelForm\" ng-submit=\"email.createChannel()\">\n" +
6667 " <div class=\"form-group\" id=\"row-email\">\n" +
6666 " <div class=\"form-group\" id=\"row-email\">\n" +
6668 " <data-form-errors errors=\"email.channelForm.ae_validation.email\"></data-form-errors>\n" +
6667 " <data-form-errors errors=\"email.channelForm.ae_validation.email\"></data-form-errors>\n" +
6669 " <label id=\"label-email\" class=\"control-label col-sm-4 col-lg-3\">\n" +
6668 " <label id=\"label-email\" class=\"control-label col-sm-4 col-lg-3\">\n" +
6670 " Email Address\n" +
6669 " Email Address\n" +
6671 " <span class=\"required\">*</span>\n" +
6670 " <span class=\"required\">*</span>\n" +
6672 " </label>\n" +
6671 " </label>\n" +
6673 " <div class=\"col-sm-8 col-lg-9\">\n" +
6672 " <div class=\"col-sm-8 col-lg-9\">\n" +
6674 " <input class=\"form-control\" type=\"text\" ng-model=\"email.form.email\">\n" +
6673 " <input class=\"form-control\" type=\"text\" ng-model=\"email.form.email\">\n" +
6675 " </div>\n" +
6674 " </div>\n" +
6676 " </div>\n" +
6675 " </div>\n" +
6677 " <div class=\"form-group\">\n" +
6676 " <div class=\"form-group\">\n" +
6678 " <label for=\"submit\" class=\"control-label col-sm-4 col-lg-3\">\n" +
6677 " <label for=\"submit\" class=\"control-label col-sm-4 col-lg-3\">\n" +
6679 " </label>\n" +
6678 " </label>\n" +
6680 " <div class=\"col-sm-8 col-lg-9\">\n" +
6679 " <div class=\"col-sm-8 col-lg-9\">\n" +
6681 " <input class=\"form-control btn btn-primary\" name=\"submit\" type=\"submit\" value=\"Add email channel\">\n" +
6680 " <input class=\"form-control btn btn-primary\" name=\"submit\" type=\"submit\" value=\"Add email channel\">\n" +
6682 " </div>\n" +
6681 " </div>\n" +
6683 " </div>\n" +
6682 " </div>\n" +
6684 " </form>\n" +
6683 " </form>\n" +
6685 " </div>\n" +
6684 " </div>\n" +
6686 " </div>\n" +
6685 " </div>\n" +
6687 "</div>\n"
6686 "</div>\n"
6688 );
6687 );
6689
6688
6690
6689
6691 $templateCache.put('templates/user/alert_channels_list.html',
6690 $templateCache.put('templates/user/alert_channels_list.html',
6692 "<ng-include src=\"'templates/loader.html'\" ng-if=\"channels.loading.channels || channels.loading.applications\"></ng-include>\n" +
6691 "<ng-include src=\"'templates/loader.html'\" ng-if=\"channels.loading.channels || channels.loading.applications\"></ng-include>\n" +
6693 "\n" +
6692 "\n" +
6694 "<div ng-if=\"!channels.loading.channels && !channels.loading.applications && !channels.loading.actions\">\n" +
6693 "<div ng-if=\"!channels.loading.channels && !channels.loading.applications && !channels.loading.actions\">\n" +
6695 "\n" +
6694 "\n" +
6696 " <div class=\"panel panel-default\">\n" +
6695 " <div class=\"panel panel-default\">\n" +
6697 " <div class=\"panel-heading\" ng-include=\"'templates/user/breadcrumbs.html'\"></div>\n" +
6696 " <div class=\"panel-heading\" ng-include=\"'templates/user/breadcrumbs.html'\"></div>\n" +
6698 " <div class=\"panel-body\">\n" +
6697 " <div class=\"panel-body\">\n" +
6699 " <h1>Report alert rules</h1>\n" +
6698 " <h1>Report alert rules</h1>\n" +
6700 " <p>\n" +
6699 " <p>\n" +
6701 " <a class=\"btn btn-info\" ng-click=\"channels.addAction()\"><span class=\"fa fa-plus-circle\"></span> Add top-level rule</a>\n" +
6700 " <a class=\"btn btn-info\" ng-click=\"channels.addAction()\"><span class=\"fa fa-plus-circle\"></span> Add top-level rule</a>\n" +
6702 " </p>\n" +
6701 " </p>\n" +
6703 "\n" +
6702 "\n" +
6704 " <report-alert-action action=\"action\" rule-definitions=\"channels.ruleDefinitions\"\n" +
6703 " <report-alert-action action=\"action\" rule-definitions=\"channels.ruleDefinitions\"\n" +
6705 " possible-channels=\"channels.alertChannels\"\n" +
6704 " possible-channels=\"channels.alertChannels\"\n" +
6706 " actions=\"channels.alertActions\" applications=\"channels.applications\"\n" +
6705 " actions=\"channels.alertActions\" applications=\"channels.applications\"\n" +
6707 " ng-repeat=\"action in channels.alertActions | filter: {type:'report'}\"></report-alert-action>\n" +
6706 " ng-repeat=\"action in channels.alertActions | filter: {type:'report'}\"></report-alert-action>\n" +
6708 "\n" +
6707 "\n" +
6709 " </div>\n" +
6708 " </div>\n" +
6710 " </div>\n" +
6709 " </div>\n" +
6711 "\n" +
6710 "\n" +
6712 " <div class=\"panel panel-default\">\n" +
6711 " <div class=\"panel panel-default\">\n" +
6713 " <div class=\"panel-body\">\n" +
6712 " <div class=\"panel-body\">\n" +
6714 " <h1>Alert channels</h1>\n" +
6713 " <h1>Alert channels</h1>\n" +
6715 "\n" +
6714 "\n" +
6716 " <p>Here you can configure your <em>alert channels</em>.</p>\n" +
6715 " <p>Here you can configure your <em>alert channels</em>.</p>\n" +
6717 "\n" +
6716 "\n" +
6718 " <p>An alert channel serves as means of delivery of notifications about important events that happen in your applications.</p>\n" +
6717 " <p>An alert channel serves as means of delivery of notifications about important events that happen in your applications.</p>\n" +
6719 "\n" +
6718 "\n" +
6720 " <div class=\"alert alert-success\">You can add more integrations that support different alert channels via application management panel.</div>\n" +
6719 " <div class=\"alert alert-success\">You can add more integrations that support different alert channels via application management panel.</div>\n" +
6721 "\n" +
6720 "\n" +
6722 " <table class=\"table table-striped\">\n" +
6721 " <table class=\"table table-striped\">\n" +
6723 " <tr ng-repeat=\"channel in channels.alertChannels\" class=\"animate-repeat\">\n" +
6722 " <tr ng-repeat=\"channel in channels.alertChannels\" class=\"animate-repeat\">\n" +
6724 " <td><strong>{{ channel.channel_visible_value }}</strong></td>\n" +
6723 " <td><strong>{{ channel.channel_visible_value }}</strong></td>\n" +
6725 " <td class=\"text-right\">\n" +
6724 " <td class=\"text-right\">\n" +
6726 " <span class=\"btn btn-default\" data-uib-tooltip=\"Channel is {{ channel.channel_validated? '' :'NOT' }} validated\" tooltip-append-to-body=\"true\"\n" +
6725 " <span class=\"btn btn-default\" data-uib-tooltip=\"Channel is {{ channel.channel_validated? '' :'NOT' }} validated\" tooltip-append-to-body=\"true\"\n" +
6727 " ng-class=\"{dim:!channel.channel_validated}\">\n" +
6726 " ng-class=\"{dim:!channel.channel_validated}\">\n" +
6728 " <span class=\"fa\" ng-class=\"{'fa-check-circle':channel.channel_validated, 'fa-times-circle':!channel.channel_validated}\"></span>\n" +
6727 " <span class=\"fa\" ng-class=\"{'fa-check-circle':channel.channel_validated, 'fa-times-circle':!channel.channel_validated}\"></span>\n" +
6729 " </span>\n" +
6728 " </span>\n" +
6730 " <a class=\"btn btn-default\" data-uib-tooltip=\"Press to turn {{ channel.send_alerts ? 'OFF' : 'ON' }} alerting on this chanel\"\n" +
6729 " <a class=\"btn btn-default\" data-uib-tooltip=\"Press to turn {{ channel.send_alerts ? 'OFF' : 'ON' }} alerting on this chanel\"\n" +
6731 " ng-click=\"channels.updateChannel(channel,'send_alerts')\" ng-class=\"{dim:!channel.send_alerts}\" tooltip-append-to-body=\"true\">\n" +
6730 " ng-click=\"channels.updateChannel(channel,'send_alerts')\" ng-class=\"{dim:!channel.send_alerts}\" tooltip-append-to-body=\"true\">\n" +
6732 " <span class=\"fa fa-rss\"></span> Alerts\n" +
6731 " <span class=\"fa fa-rss\"></span> Alerts\n" +
6733 " </a>\n" +
6732 " </a>\n" +
6734 " <a class=\"btn btn-default\" data-uib-tooltip=\"Press to turn {{ channel.daily_digest ? 'OFF' : 'ON' }} daily digests on this channel\"\n" +
6733 " <a class=\"btn btn-default\" data-uib-tooltip=\"Press to turn {{ channel.daily_digest ? 'OFF' : 'ON' }} daily digests on this channel\"\n" +
6735 " ng-click=\"channels.updateChannel(channel,'daily_digest')\" ng-class=\"{dim:!channel.daily_digest}\" tooltip-append-to-body=\"true\">\n" +
6734 " ng-click=\"channels.updateChannel(channel,'daily_digest')\" ng-class=\"{dim:!channel.daily_digest}\" tooltip-append-to-body=\"true\">\n" +
6736 " <span class=\"fa fa-envelope\"></span> Daily digests\n" +
6735 " <span class=\"fa fa-envelope\"></span> Daily digests\n" +
6737 " </a>\n" +
6736 " </a>\n" +
6738 "\n" +
6737 "\n" +
6739 " <span class=\"dropdown\" data-uib-dropdown on-toggle=\"toggled(open)\">\n" +
6738 " <span class=\"dropdown\" data-uib-dropdown on-toggle=\"toggled(open)\">\n" +
6740 " <a class=\"btn btn-default\" data-uib-dropdown-toggle><span class=\"fa fa-trash-o\"></span> Remove</a>\n" +
6739 " <a class=\"btn btn-default\" data-uib-dropdown-toggle><span class=\"fa fa-trash-o\"></span> Remove</a>\n" +
6741 " <ul class=\"dropdown-menu\">\n" +
6740 " <ul class=\"dropdown-menu\">\n" +
6742 " <li><a>No</a></li>\n" +
6741 " <li><a>No</a></li>\n" +
6743 " <li><a ng-click=\"channels.removeChannel(channel)\">Yes</a></li>\n" +
6742 " <li><a ng-click=\"channels.removeChannel(channel)\">Yes</a></li>\n" +
6744 " </ul>\n" +
6743 " </ul>\n" +
6745 " </span>\n" +
6744 " </span>\n" +
6746 "\n" +
6745 "\n" +
6747 " </td>\n" +
6746 " </td>\n" +
6748 " </tr>\n" +
6747 " </tr>\n" +
6749 " </table>\n" +
6748 " </table>\n" +
6750 "\n" +
6749 "\n" +
6751 " </div>\n" +
6750 " </div>\n" +
6752 " </div>\n" +
6751 " </div>\n" +
6753 "\n" +
6752 "\n" +
6754 "</div>\n"
6753 "</div>\n"
6755 );
6754 );
6756
6755
6757
6756
6758 $templateCache.put('templates/user/alert_channels.html',
6757 $templateCache.put('templates/user/alert_channels.html',
6759 "<ui-view></ui-view>"
6758 "<ui-view></ui-view>"
6760 );
6759 );
6761
6760
6762
6761
6763 $templateCache.put('templates/user/auth_tokens.html',
6762 $templateCache.put('templates/user/auth_tokens.html',
6764 "<ng-include src=\"'templates/loader.html'\" ng-if=\"auth_tokens.loading.tokens\"></ng-include>\n" +
6763 "<ng-include src=\"'templates/loader.html'\" ng-if=\"auth_tokens.loading.tokens\"></ng-include>\n" +
6765 "\n" +
6764 "\n" +
6766 "<div ng-show=\"!auth_tokens.loading.tokens\">\n" +
6765 "<div ng-show=\"!auth_tokens.loading.tokens\">\n" +
6767 "\n" +
6766 "\n" +
6768 " <div class=\"panel panel-default\">\n" +
6767 " <div class=\"panel panel-default\">\n" +
6769 " <div class=\"panel-heading\" ng-include=\"'templates/user/breadcrumbs.html'\"></div>\n" +
6768 " <div class=\"panel-heading\" ng-include=\"'templates/user/breadcrumbs.html'\"></div>\n" +
6770 "\n" +
6769 "\n" +
6771 " <div class=\"panel-body\">\n" +
6770 " <div class=\"panel-body\">\n" +
6772 "\n" +
6771 "\n" +
6773 " <div class=\"alert alert-success\">You can use those tokens to authenticate yourself when performing various API calls</div>\n" +
6772 " <div class=\"alert alert-success\">You can use those tokens to authenticate yourself when performing various API calls</div>\n" +
6774 "\n" +
6773 "\n" +
6775 " <hr/>\n" +
6774 " <hr/>\n" +
6776 "\n" +
6775 "\n" +
6777 " <form method=\"post\" class=\"form-inline\" name=\"auth_tokens.TokenForm\" ng-submit=\"auth_tokens.addToken()\" novalidate>\n" +
6776 " <form method=\"post\" class=\"form-inline\" name=\"auth_tokens.TokenForm\" ng-submit=\"auth_tokens.addToken()\" novalidate>\n" +
6778 " <data-form-errors errors=\"auth_tokens.TokenForm.ae_validation.description\"></data-form-errors>\n" +
6777 " <data-form-errors errors=\"auth_tokens.TokenForm.ae_validation.description\"></data-form-errors>\n" +
6779 " <data-form-errors errors=\"auth_tokens.TokenForm.ae_validation.expires\"></data-form-errors>\n" +
6778 " <data-form-errors errors=\"auth_tokens.TokenForm.ae_validation.expires\"></data-form-errors>\n" +
6780 " <div class=\"form-group\">\n" +
6779 " <div class=\"form-group\">\n" +
6781 " <label>\n" +
6780 " <label>\n" +
6782 " Description\n" +
6781 " Description\n" +
6783 " </label>\n" +
6782 " </label>\n" +
6784 " <input class=\"form-control\" name=\"description\" placeholder=\"Token description\" type=\"text\" ng-model=\"auth_tokens.form.description\">\n" +
6783 " <input class=\"form-control\" name=\"description\" placeholder=\"Token description\" type=\"text\" ng-model=\"auth_tokens.form.description\">\n" +
6785 " </div>\n" +
6784 " </div>\n" +
6786 " <div class=\"form-group\">\n" +
6785 " <div class=\"form-group\">\n" +
6787 " <label>\n" +
6786 " <label>\n" +
6788 " Expires\n" +
6787 " Expires\n" +
6789 " </label>\n" +
6788 " </label>\n" +
6790 " <select class=\"form-control\" ng-model=\"auth_tokens.form.expires\" ng-options=\"i.key as i.label for i in auth_tokens.expireOptions | objectToOrderedArray:'minutes'\">\n" +
6789 " <select class=\"form-control\" ng-model=\"auth_tokens.form.expires\" ng-options=\"i.key as i.label for i in auth_tokens.expireOptions | objectToOrderedArray:'minutes'\">\n" +
6791 " <option value=\"\">Never</option>\n" +
6790 " <option value=\"\">Never</option>\n" +
6792 " </select>\n" +
6791 " </select>\n" +
6793 " </div>\n" +
6792 " </div>\n" +
6794 " <div class=\"form-group\">\n" +
6793 " <div class=\"form-group\">\n" +
6795 " <label class=\"control-label col-sm-4 col-lg-3\">\n" +
6794 " <label class=\"control-label col-sm-4 col-lg-3\">\n" +
6796 " </label>\n" +
6795 " </label>\n" +
6797 " <input class=\"form-control btn btn-primary\" name=\"submit\" type=\"submit\" value=\"Create Token\">\n" +
6796 " <input class=\"form-control btn btn-primary\" name=\"submit\" type=\"submit\" value=\"Create Token\">\n" +
6798 " </div>\n" +
6797 " </div>\n" +
6799 " </form>\n" +
6798 " </form>\n" +
6800 "\n" +
6799 "\n" +
6801 " </div>\n" +
6800 " </div>\n" +
6802 "\n" +
6801 "\n" +
6803 "\n" +
6802 "\n" +
6804 " </div>\n" +
6803 " </div>\n" +
6805 "\n" +
6804 "\n" +
6806 " <div class=\"panel panel-default\">\n" +
6805 " <div class=\"panel panel-default\">\n" +
6807 " <table st-table=\"displayedCollection\" st-safe-src=\"auth_tokens.tokens\" class=\"table table-striped\">\n" +
6806 " <table st-table=\"displayedCollection\" st-safe-src=\"auth_tokens.tokens\" class=\"table table-striped\">\n" +
6808 " <caption>Your current tokens</caption>\n" +
6807 " <caption>Your current tokens</caption>\n" +
6809 " <thead>\n" +
6808 " <thead>\n" +
6810 " <tr>\n" +
6809 " <tr>\n" +
6811 " <th st-sort=\"description\"><a>Description</a></th>\n" +
6810 " <th st-sort=\"description\"><a>Description</a></th>\n" +
6812 " <th class=\"created\"><a>Created</a></th>\n" +
6811 " <th class=\"created\"><a>Created</a></th>\n" +
6813 " <th class=\"expires\"><a>Expires</a></th>\n" +
6812 " <th class=\"expires\"><a>Expires</a></th>\n" +
6814 " <th class=\"options\"></th>\n" +
6813 " <th class=\"options\"></th>\n" +
6815 " </tr>\n" +
6814 " </tr>\n" +
6816 " <tr>\n" +
6815 " <tr>\n" +
6817 " <th><input st-search=\"description\" placeholder=\"search for description\" class=\"form-control\" type=\"search\" st-delay=\"1\"/></th>\n" +
6816 " <th><input st-search=\"description\" placeholder=\"search for description\" class=\"form-control\" type=\"search\" st-delay=\"1\"/></th>\n" +
6818 " <th></th>\n" +
6817 " <th></th>\n" +
6819 " <th></th>\n" +
6818 " <th></th>\n" +
6820 " <th></th>\n" +
6819 " <th></th>\n" +
6821 " </tr>\n" +
6820 " </tr>\n" +
6822 " </thead>\n" +
6821 " </thead>\n" +
6823 " <tbody>\n" +
6822 " <tbody>\n" +
6824 "\n" +
6823 "\n" +
6825 " <tr ng-repeat=\"token in displayedCollection\">\n" +
6824 " <tr ng-repeat=\"token in displayedCollection\">\n" +
6826 " <td><p>{{token.description}}</p>\n" +
6825 " <td><p>{{token.description}}</p>\n" +
6827 " <pre ng-init=\"token.limit = 8\" ng-mouseover=\"token.limit = 99\" ng-mouseleave=\"token.limit = 8\">{{token.token| limitTo:token.limit}}...</pre>\n" +
6826 " <pre ng-init=\"token.limit = 8\" ng-mouseover=\"token.limit = 99\" ng-mouseleave=\"token.limit = 8\">{{token.token| limitTo:token.limit}}...</pre>\n" +
6828 " </td>\n" +
6827 " </td>\n" +
6829 " <td><span data-uib-tooltip=\"{{token.creation_date}}\">{{token.creation_date | isoToRelativeTime}}</span></td>\n" +
6828 " <td><span data-uib-tooltip=\"{{token.creation_date}}\">{{token.creation_date | isoToRelativeTime}}</span></td>\n" +
6830 " <td><span ng-if=\"token.expires\" data-uib-tooltip=\"{{token.expires}}\">{{token.expires | isoToRelativeTime}}</span>\n" +
6829 " <td><span ng-if=\"token.expires\" data-uib-tooltip=\"{{token.expires}}\">{{token.expires | isoToRelativeTime}}</span>\n" +
6831 " <span ng-if=\"!token.expires\">Never</span></td>\n" +
6830 " <span ng-if=\"!token.expires\">Never</span></td>\n" +
6832 " <td>\n" +
6831 " <td>\n" +
6833 " <span class=\"dropdown\" data-uib-dropdown on-toggle=\"toggled(open)\">\n" +
6832 " <span class=\"dropdown\" data-uib-dropdown on-toggle=\"toggled(open)\">\n" +
6834 " <a class=\"btn btn-danger\" data-uib-dropdown-toggle><span class=\"fa fa-trash-o\"></span></a>\n" +
6833 " <a class=\"btn btn-danger\" data-uib-dropdown-toggle><span class=\"fa fa-trash-o\"></span></a>\n" +
6835 " <ul class=\"dropdown-menu\">\n" +
6834 " <ul class=\"dropdown-menu\">\n" +
6836 " <li><a>No</a></li>\n" +
6835 " <li><a>No</a></li>\n" +
6837 " <li><a ng-click=\"auth_tokens.removeToken(token)\">Yes</a></li>\n" +
6836 " <li><a ng-click=\"auth_tokens.removeToken(token)\">Yes</a></li>\n" +
6838 " </ul>\n" +
6837 " </ul>\n" +
6839 " </span>\n" +
6838 " </span>\n" +
6840 " </td>\n" +
6839 " </td>\n" +
6841 " </tr>\n" +
6840 " </tr>\n" +
6842 " </tbody>\n" +
6841 " </tbody>\n" +
6843 " </table>\n" +
6842 " </table>\n" +
6844 " </div>\n" +
6843 " </div>\n" +
6845 "\n" +
6844 "\n" +
6846 "</div>\n"
6845 "</div>\n"
6847 );
6846 );
6848
6847
6849
6848
6850 $templateCache.put('templates/user/breadcrumbs.html',
6849 $templateCache.put('templates/user/breadcrumbs.html',
6851 "<ol class=\"breadcrumb\" ng-show=\"$state.includes('user.profile')\">\n" +
6850 "<ol class=\"breadcrumb\" ng-show=\"$state.includes('user.profile')\">\n" +
6852 " <li>Settings</li>\n" +
6851 " <li>Settings</li>\n" +
6853 " <li ng-show=\"$state.includes('user.profile.edit')\" ng-class=\"{bold:$state.is('user.profile.edit')}\">User Profile</li>\n" +
6852 " <li ng-show=\"$state.includes('user.profile.edit')\" ng-class=\"{bold:$state.is('user.profile.edit')}\">User Profile</li>\n" +
6854 " <li ng-show=\"$state.includes('user.profile.password')\" ng-class=\"{bold:$state.is('user.profile.password')}\">Password</li>\n" +
6853 " <li ng-show=\"$state.includes('user.profile.password')\" ng-class=\"{bold:$state.is('user.profile.password')}\">Password</li>\n" +
6855 " <li ng-show=\"$state.includes('user.profile.identities')\" ng-class=\"{bold:$state.is('user.profile.identities')}\">Identities</li>\n" +
6854 " <li ng-show=\"$state.includes('user.profile.identities')\" ng-class=\"{bold:$state.is('user.profile.identities')}\">Identities</li>\n" +
6856 "</ol>\n" +
6855 "</ol>\n" +
6857 "\n" +
6856 "\n" +
6858 "<ol class=\"breadcrumb\" ng-show=\"$state.includes('user.alert_channels')\">\n" +
6857 "<ol class=\"breadcrumb\" ng-show=\"$state.includes('user.alert_channels')\">\n" +
6859 "<li>Notifications</li>\n" +
6858 "<li>Notifications</li>\n" +
6860 "<li ng-show=\"$state.includes('user.alert_channels.list')\" ng-class=\"{bold:$state.is('user.alert_channels.list')}\">Alert Channels</li>\n" +
6859 "<li ng-show=\"$state.includes('user.alert_channels.list')\" ng-class=\"{bold:$state.is('user.alert_channels.list')}\">Alert Channels</li>\n" +
6861 "<li ng-show=\"$state.includes('user.alert_channels.email')\" ng-class=\"{bold:$state.is('user.alert_channels.email')}\">Create email channel</li>\n" +
6860 "<li ng-show=\"$state.includes('user.alert_channels.email')\" ng-class=\"{bold:$state.is('user.alert_channels.email')}\">Create email channel</li>\n" +
6862 "</ol>\n"
6861 "</ol>\n"
6863 );
6862 );
6864
6863
6865
6864
6866 $templateCache.put('templates/user/index.html',
6865 $templateCache.put('templates/user/index.html',
6867 ""
6866 ""
6868 );
6867 );
6869
6868
6870
6869
6871 $templateCache.put('templates/user/menu.html',
6870 $templateCache.put('templates/user/menu.html',
6872 "<div class=\"panel panel-default\">\n" +
6871 "<div class=\"panel panel-default\">\n" +
6873 " <div class=\"panel-heading\">Applications</div>\n" +
6872 " <div class=\"panel-heading\">Applications</div>\n" +
6874 " <ul class=\"list-group\">\n" +
6873 " <ul class=\"list-group\">\n" +
6875 " <li class=\"list-group-item\" ui-sref-active-eq=\"active\"><a data-ui-sref=\"applications.list\"><span class=\"fa fa-cog\"></span> List applications</a></li>\n" +
6874 " <li class=\"list-group-item\" ui-sref-active-eq=\"active\"><a data-ui-sref=\"applications.list\"><span class=\"fa fa-cog\"></span> List applications</a></li>\n" +
6876 " <li class=\"list-group-item\" ui-sref-active-eq=\"active\"><a data-ui-sref=\"applications.update({resourceId:'new'})\"><span class=\"fa fa-plus-circle\"></span> Create application</a></li>\n" +
6875 " <li class=\"list-group-item\" ui-sref-active-eq=\"active\"><a data-ui-sref=\"applications.update({resourceId:'new'})\"><span class=\"fa fa-plus-circle\"></span> Create application</a></li>\n" +
6877 " <li class=\"list-group-item\" ui-sref-active-eq=\"active\"><a data-ui-sref=\"applications.purge_logs\"><span class=\"fa fa-trash-o\"></span> Purge logs</a></li>\n" +
6876 " <li class=\"list-group-item\" ui-sref-active-eq=\"active\"><a data-ui-sref=\"applications.purge_logs\"><span class=\"fa fa-trash-o\"></span> Purge logs</a></li>\n" +
6878 " </ul>\n" +
6877 " </ul>\n" +
6879 "</div>\n" +
6878 "</div>\n" +
6880 "\n" +
6879 "\n" +
6881 "\n" +
6880 "\n" +
6882 "<div class=\"panel panel-default\">\n" +
6881 "<div class=\"panel panel-default\">\n" +
6883 " <div class=\"panel-heading\">Settings</div>\n" +
6882 " <div class=\"panel-heading\">Settings</div>\n" +
6884 " <ul class=\"list-group\">\n" +
6883 " <ul class=\"list-group\">\n" +
6885 " <li class=\"list-group-item\" ui-sref-active-eq=\"active\"><a data-ui-sref=\"user.profile.edit\"><span class=\"fa fa-user\"></span> Profile details</a></li>\n" +
6884 " <li class=\"list-group-item\" ui-sref-active-eq=\"active\"><a data-ui-sref=\"user.profile.edit\"><span class=\"fa fa-user\"></span> Profile details</a></li>\n" +
6886 " <li class=\"list-group-item\" ui-sref-active-eq=\"active\"><a data-ui-sref=\"user.profile.password\"><span class=\"fa fa-lock\"></span> Change Password</a></li>\n" +
6885 " <li class=\"list-group-item\" ui-sref-active-eq=\"active\"><a data-ui-sref=\"user.profile.password\"><span class=\"fa fa-lock\"></span> Change Password</a></li>\n" +
6887 " <li class=\"list-group-item\" ui-sref-active-eq=\"active\"><a data-ui-sref=\"user.profile.identities\"><span class=\"fa fa-link\"></span> External Identities</a></li>\n" +
6886 " <li class=\"list-group-item\" ui-sref-active-eq=\"active\"><a data-ui-sref=\"user.profile.identities\"><span class=\"fa fa-link\"></span> External Identities</a></li>\n" +
6888 " <li class=\"list-group-item\" ui-sref-active-eq=\"active\"><a data-ui-sref=\"user.profile.auth_tokens\"><span class=\"fa fa-unlock\"></span> Auth Tokens</a></li>\n" +
6887 " <li class=\"list-group-item\" ui-sref-active-eq=\"active\"><a data-ui-sref=\"user.profile.auth_tokens\"><span class=\"fa fa-unlock\"></span> Auth Tokens</a></li>\n" +
6889 " </ul>\n" +
6888 " </ul>\n" +
6890 "</div>\n" +
6889 "</div>\n" +
6891 "\n" +
6890 "\n" +
6892 "<div class=\"panel panel-default\">\n" +
6891 "<div class=\"panel panel-default\">\n" +
6893 " <div class=\"panel-heading\">Notifications</div>\n" +
6892 " <div class=\"panel-heading\">Notifications</div>\n" +
6894 " <ul class=\"list-group\">\n" +
6893 " <ul class=\"list-group\">\n" +
6895 " <li class=\"list-group-item\" ui-sref-active-eq=\"active\"><a data-ui-sref=\"user.alert_channels.list\"><span class=\"fa fa-bullhorn\"></span> Alert channels</a></li>\n" +
6894 " <li class=\"list-group-item\" ui-sref-active-eq=\"active\"><a data-ui-sref=\"user.alert_channels.list\"><span class=\"fa fa-bullhorn\"></span> Alert channels</a></li>\n" +
6896 " <li class=\"list-group-item\" ui-sref-active-eq=\"active\"><a data-ui-sref=\"user.alert_channels.email\"><span class=\"fa fa-envelope\"></span> Add email channel</a></li>\n" +
6895 " <li class=\"list-group-item\" ui-sref-active-eq=\"active\"><a data-ui-sref=\"user.alert_channels.email\"><span class=\"fa fa-envelope\"></span> Add email channel</a></li>\n" +
6897 " </ul>\n" +
6896 " </ul>\n" +
6898 "</div>"
6897 "</div>"
6899 );
6898 );
6900
6899
6901
6900
6902 $templateCache.put('templates/user/parent_view.html',
6901 $templateCache.put('templates/user/parent_view.html',
6903 "<div class=\"row\">\n" +
6902 "<div class=\"row\">\n" +
6904 " <div class=\"col-sm-3\" id=\"menu\">\n" +
6903 " <div class=\"col-sm-3\" id=\"menu\">\n" +
6905 " <div ng-include=\"'templates/user/menu.html'\"></div>\n" +
6904 " <div ng-include=\"'templates/user/menu.html'\"></div>\n" +
6906 " </div>\n" +
6905 " </div>\n" +
6907 "\n" +
6906 "\n" +
6908 " <div class=\"col-sm-9\" ui-view></div>\n" +
6907 " <div class=\"col-sm-9\" ui-view></div>\n" +
6909 "</div>\n"
6908 "</div>\n"
6910 );
6909 );
6911
6910
6912
6911
6913 $templateCache.put('templates/user/profile_edit.html',
6912 $templateCache.put('templates/user/profile_edit.html',
6914 "<ng-include src=\"'templates/loader.html'\" ng-if=\"profile.loading.profile\"></ng-include>\n" +
6913 "<ng-include src=\"'templates/loader.html'\" ng-if=\"profile.loading.profile\"></ng-include>\n" +
6915 "\n" +
6914 "\n" +
6916 "<div ng-show=\"!profile.loading.profile\">\n" +
6915 "<div ng-show=\"!profile.loading.profile\">\n" +
6917 " <div class=\"panel panel-default\">\n" +
6916 " <div class=\"panel panel-default\">\n" +
6918 " <div class=\"panel-heading\" ng-include=\"'templates/user/breadcrumbs.html'\"></div>\n" +
6917 " <div class=\"panel-heading\" ng-include=\"'templates/user/breadcrumbs.html'\"></div>\n" +
6919 " <div class=\"panel-body\">\n" +
6918 " <div class=\"panel-body\">\n" +
6920 " <form name=\"profile.profileForm\" class=\"form-horizontal\" ng-submit=\"profile.updateProfile()\">\n" +
6919 " <form name=\"profile.profileForm\" class=\"form-horizontal\" ng-submit=\"profile.updateProfile()\">\n" +
6921 " <div class=\"form-group\" id=\"row-email\">\n" +
6920 " <div class=\"form-group\" id=\"row-email\">\n" +
6922 " <data-form-errors errors=\"profile.profileForm.ae_validation.email\"></data-form-errors>\n" +
6921 " <data-form-errors errors=\"profile.profileForm.ae_validation.email\"></data-form-errors>\n" +
6923 " <label for=\"email\" id=\"label-email\" class=\"control-label col-sm-4 col-lg-3\">\n" +
6922 " <label for=\"email\" id=\"label-email\" class=\"control-label col-sm-4 col-lg-3\">\n" +
6924 " Email Address\n" +
6923 " Email Address\n" +
6925 " <span class=\"required\">*</span>\n" +
6924 " <span class=\"required\">*</span>\n" +
6926 " </label>\n" +
6925 " </label>\n" +
6927 " <div class=\"col-sm-8 col-lg-9\">\n" +
6926 " <div class=\"col-sm-8 col-lg-9\">\n" +
6928 " <input class=\"form-control\" id=\"email\" name=\"email\" type=\"text\" ng-model=\"profile.user.email\">\n" +
6927 " <input class=\"form-control\" id=\"email\" name=\"email\" type=\"text\" ng-model=\"profile.user.email\">\n" +
6929 " </div>\n" +
6928 " </div>\n" +
6930 " </div>\n" +
6929 " </div>\n" +
6931 "\n" +
6930 "\n" +
6932 " <div class=\"form-group\" id=\"row-first_name\">\n" +
6931 " <div class=\"form-group\" id=\"row-first_name\">\n" +
6933 " <data-form-errors errors=\"profile.profileForm.ae_validation.first_name\"></data-form-errors>\n" +
6932 " <data-form-errors errors=\"profile.profileForm.ae_validation.first_name\"></data-form-errors>\n" +
6934 " <label for=\"first_name\" id=\"label-first_name\" class=\"control-label col-sm-4 col-lg-3\">\n" +
6933 " <label for=\"first_name\" id=\"label-first_name\" class=\"control-label col-sm-4 col-lg-3\">\n" +
6935 " First Name\n" +
6934 " First Name\n" +
6936 " </label>\n" +
6935 " </label>\n" +
6937 " <div class=\"col-sm-8 col-lg-9\">\n" +
6936 " <div class=\"col-sm-8 col-lg-9\">\n" +
6938 " <input class=\"form-control\" id=\"first_name\" name=\"first_name\" type=\"text\" ng-model=\"profile.user.first_name\">\n" +
6937 " <input class=\"form-control\" id=\"first_name\" name=\"first_name\" type=\"text\" ng-model=\"profile.user.first_name\">\n" +
6939 " </div>\n" +
6938 " </div>\n" +
6940 " </div>\n" +
6939 " </div>\n" +
6941 " <div class=\"form-group\" id=\"row-last_name\">\n" +
6940 " <div class=\"form-group\" id=\"row-last_name\">\n" +
6942 " <data-form-errors errors=\"profile.profileForm.ae_validation.last_name\"></data-form-errors>\n" +
6941 " <data-form-errors errors=\"profile.profileForm.ae_validation.last_name\"></data-form-errors>\n" +
6943 " <label for=\"last_name\" id=\"label-last_name\" class=\"control-label col-sm-4 col-lg-3\">\n" +
6942 " <label for=\"last_name\" id=\"label-last_name\" class=\"control-label col-sm-4 col-lg-3\">\n" +
6944 " Last Name\n" +
6943 " Last Name\n" +
6945 " </label>\n" +
6944 " </label>\n" +
6946 " <div class=\"col-sm-8 col-lg-9\">\n" +
6945 " <div class=\"col-sm-8 col-lg-9\">\n" +
6947 " <input class=\"form-control\" id=\"last_name\" name=\"last_name\" type=\"text\" ng-model=\"profile.user.last_name\">\n" +
6946 " <input class=\"form-control\" id=\"last_name\" name=\"last_name\" type=\"text\" ng-model=\"profile.user.last_name\">\n" +
6948 " </div>\n" +
6947 " </div>\n" +
6949 " </div>\n" +
6948 " </div>\n" +
6950 " <div class=\"form-group\" id=\"row-company_name\">\n" +
6949 " <div class=\"form-group\" id=\"row-company_name\">\n" +
6951 " <data-form-errors errors=\"profile.profileForm.ae_validation.company_name\"></data-form-errors>\n" +
6950 " <data-form-errors errors=\"profile.profileForm.ae_validation.company_name\"></data-form-errors>\n" +
6952 " <label for=\"company_name\" id=\"label-company_name\" class=\"control-label col-sm-4 col-lg-3\">\n" +
6951 " <label for=\"company_name\" id=\"label-company_name\" class=\"control-label col-sm-4 col-lg-3\">\n" +
6953 " Company Name\n" +
6952 " Company Name\n" +
6954 " </label>\n" +
6953 " </label>\n" +
6955 " <div class=\"col-sm-8 col-lg-9\">\n" +
6954 " <div class=\"col-sm-8 col-lg-9\">\n" +
6956 " <input class=\"form-control\" id=\"company_name\" name=\"company_name\" type=\"text\" ng-model=\"profile.user.company_name\">\n" +
6955 " <input class=\"form-control\" id=\"company_name\" name=\"company_name\" type=\"text\" ng-model=\"profile.user.company_name\">\n" +
6957 " </div>\n" +
6956 " </div>\n" +
6958 " </div>\n" +
6957 " </div>\n" +
6959 " <div class=\"form-group\" id=\"row-company_address\">\n" +
6958 " <div class=\"form-group\" id=\"row-company_address\">\n" +
6960 " <data-form-errors errors=\"profile.profileForm.ae_validation.company_address\"></data-form-errors>\n" +
6959 " <data-form-errors errors=\"profile.profileForm.ae_validation.company_address\"></data-form-errors>\n" +
6961 " <label for=\"company_address\" id=\"label-company_address\" class=\"control-label col-sm-4 col-lg-3\">\n" +
6960 " <label for=\"company_address\" id=\"label-company_address\" class=\"control-label col-sm-4 col-lg-3\">\n" +
6962 " Company Address\n" +
6961 " Company Address\n" +
6963 " </label>\n" +
6962 " </label>\n" +
6964 " <div class=\"col-sm-8 col-lg-9\">\n" +
6963 " <div class=\"col-sm-8 col-lg-9\">\n" +
6965 " <textarea class=\"form-control\" id=\"company_address\" name=\"company_address\" ng-model=\"profile.user.company_address\"></textarea>\n" +
6964 " <textarea class=\"form-control\" id=\"company_address\" name=\"company_address\" ng-model=\"profile.user.company_address\"></textarea>\n" +
6966 " </div>\n" +
6965 " </div>\n" +
6967 " </div>\n" +
6966 " </div>\n" +
6968 " <div class=\"form-group\" id=\"row-zip_code\">\n" +
6967 " <div class=\"form-group\" id=\"row-zip_code\">\n" +
6969 " <data-form-errors errors=\"profile.profileForm.ae_validation.zip_code\"></data-form-errors>\n" +
6968 " <data-form-errors errors=\"profile.profileForm.ae_validation.zip_code\"></data-form-errors>\n" +
6970 " <label for=\"zip_code\" id=\"label-zip_code\" class=\"control-label col-sm-4 col-lg-3\">\n" +
6969 " <label for=\"zip_code\" id=\"label-zip_code\" class=\"control-label col-sm-4 col-lg-3\">\n" +
6971 " ZIP code\n" +
6970 " ZIP code\n" +
6972 " </label>\n" +
6971 " </label>\n" +
6973 " <div class=\"col-sm-8 col-lg-9\">\n" +
6972 " <div class=\"col-sm-8 col-lg-9\">\n" +
6974 " <input class=\"form-control\" id=\"zip_code\" name=\"zip_code\" type=\"text\" ng-model=\"profile.user.zip_code\">\n" +
6973 " <input class=\"form-control\" id=\"zip_code\" name=\"zip_code\" type=\"text\" ng-model=\"profile.user.zip_code\">\n" +
6975 " </div>\n" +
6974 " </div>\n" +
6976 " </div>\n" +
6975 " </div>\n" +
6977 " <div class=\"form-group\" id=\"row-city\">\n" +
6976 " <div class=\"form-group\" id=\"row-city\">\n" +
6978 " <data-form-errors errors=\"profile.profileForm.ae_validation.city\"></data-form-errors>\n" +
6977 " <data-form-errors errors=\"profile.profileForm.ae_validation.city\"></data-form-errors>\n" +
6979 " <label for=\"city\" id=\"label-city\" class=\"control-label col-sm-4 col-lg-3\">\n" +
6978 " <label for=\"city\" id=\"label-city\" class=\"control-label col-sm-4 col-lg-3\">\n" +
6980 " City\n" +
6979 " City\n" +
6981 " </label>\n" +
6980 " </label>\n" +
6982 " <div class=\"col-sm-8 col-lg-9\">\n" +
6981 " <div class=\"col-sm-8 col-lg-9\">\n" +
6983 " <input class=\"form-control\" id=\"city\" name=\"city\" type=\"text\" ng-model=\"profile.user.city\">\n" +
6982 " <input class=\"form-control\" id=\"city\" name=\"city\" type=\"text\" ng-model=\"profile.user.city\">\n" +
6984 " </div>\n" +
6983 " </div>\n" +
6985 " </div>\n" +
6984 " </div>\n" +
6986 " <div class=\"form-group\" id=\"row-notifications\">\n" +
6985 " <div class=\"form-group\" id=\"row-notifications\">\n" +
6987 " <data-form-errors errors=\"profile.profileForm.ae_validation.notifications\"></data-form-errors>\n" +
6986 " <data-form-errors errors=\"profile.profileForm.ae_validation.notifications\"></data-form-errors>\n" +
6988 " <label for=\"notifications\" id=\"label-notifications\" class=\"control-label col-sm-4 col-lg-3\">\n" +
6987 " <label for=\"notifications\" id=\"label-notifications\" class=\"control-label col-sm-4 col-lg-3\">\n" +
6989 " Account notifications\n" +
6988 " Account notifications\n" +
6990 " </label>\n" +
6989 " </label>\n" +
6991 " <div class=\"col-sm-8 col-lg-9\">\n" +
6990 " <div class=\"col-sm-8 col-lg-9\">\n" +
6992 " <input checked class=\"form-control\" id=\"notifications\" name=\"notifications\" type=\"checkbox\" ng-model=\"profile.user.notifications\">\n" +
6991 " <input checked class=\"form-control\" id=\"notifications\" name=\"notifications\" type=\"checkbox\" ng-model=\"profile.user.notifications\">\n" +
6993 " </div>\n" +
6992 " </div>\n" +
6994 " </div>\n" +
6993 " </div>\n" +
6995 " <div class=\"form-group\" id=\"row-submit\">\n" +
6994 " <div class=\"form-group\" id=\"row-submit\">\n" +
6996 " <label for=\"submit\" id=\"label-submit\" class=\"control-label col-sm-4 col-lg-3\">\n" +
6995 " <label for=\"submit\" id=\"label-submit\" class=\"control-label col-sm-4 col-lg-3\">\n" +
6997 " </label>\n" +
6996 " </label>\n" +
6998 " <div class=\"col-sm-8 col-lg-9\">\n" +
6997 " <div class=\"col-sm-8 col-lg-9\">\n" +
6999 " <input class=\"form-control btn btn-primary\" id=\"submit\" name=\"submit\" type=\"submit\" value=\"Update Account\">\n" +
6998 " <input class=\"form-control btn btn-primary\" id=\"submit\" name=\"submit\" type=\"submit\" value=\"Update Account\">\n" +
7000 " </div>\n" +
6999 " </div>\n" +
7001 " </div>\n" +
7000 " </div>\n" +
7002 " </form>\n" +
7001 " </form>\n" +
7003 " </div>\n" +
7002 " </div>\n" +
7004 " </div>\n" +
7003 " </div>\n" +
7005 "</div>\n"
7004 "</div>\n"
7006 );
7005 );
7007
7006
7008
7007
7009 $templateCache.put('templates/user/profile_identities.html',
7008 $templateCache.put('templates/user/profile_identities.html',
7010 "<ng-include src=\"'templates/loader.html'\" ng-if=\"identities.loading.identities\"></ng-include>\n" +
7009 "<ng-include src=\"'templates/loader.html'\" ng-if=\"identities.loading.identities\"></ng-include>\n" +
7011 "\n" +
7010 "\n" +
7012 "<div ng-show=\"!identities.loading.identities\">\n" +
7011 "<div ng-show=\"!identities.loading.identities\">\n" +
7013 "\n" +
7012 "\n" +
7014 " <div class=\"panel panel-default\">\n" +
7013 " <div class=\"panel panel-default\">\n" +
7015 " <div class=\"panel-heading\" ng-include=\"'templates/user/breadcrumbs.html'\"></div>\n" +
7014 " <div class=\"panel-heading\" ng-include=\"'templates/user/breadcrumbs.html'\"></div>\n" +
7016 " <div class=\"panel-body\">\n" +
7015 " <div class=\"panel-body\">\n" +
7017 "\n" +
7016 "\n" +
7018 " <div class=\"col-sm-6\">\n" +
7017 " <div class=\"col-sm-6\">\n" +
7019 " <p ng-show=\"identities.identities.length === 0\">No external providers linked yet</p>\n" +
7018 " <p ng-show=\"identities.identities.length === 0\">No external providers linked yet</p>\n" +
7020 " <ul class=\"list-group\">\n" +
7019 " <ul class=\"list-group\">\n" +
7021 " <li ng-repeat=\"provider in identities.identities\" class=\"animate-repeat list-group-item\">\n" +
7020 " <li ng-repeat=\"provider in identities.identities\" class=\"animate-repeat list-group-item\">\n" +
7022 " <div class=\"pull-right\">\n" +
7021 " <div class=\"pull-right\">\n" +
7023 " <span class=\"dropdown\" data-uib-dropdown on-toggle=\"toggled(open)\">\n" +
7022 " <span class=\"dropdown\" data-uib-dropdown on-toggle=\"toggled(open)\">\n" +
7024 " <a class=\"btn btn-danger btn-xs\" data-uib-dropdown-toggle><span class=\"fa fa-trash-o\"></span></a>\n" +
7023 " <a class=\"btn btn-danger btn-xs\" data-uib-dropdown-toggle><span class=\"fa fa-trash-o\"></span></a>\n" +
7025 " <ul class=\"dropdown-menu\">\n" +
7024 " <ul class=\"dropdown-menu\">\n" +
7026 " <li><a>No</a></li>\n" +
7025 " <li><a>No</a></li>\n" +
7027 " <li><a ng-click=\"identities.removeProvider(provider)\">Yes</a></li>\n" +
7026 " <li><a ng-click=\"identities.removeProvider(provider)\">Yes</a></li>\n" +
7028 " </ul>\n" +
7027 " </ul>\n" +
7029 " </span>\n" +
7028 " </span>\n" +
7030 " </div>\n" +
7029 " </div>\n" +
7031 " <em>@{{ provider.provider }}</em>: <strong>{{ provider.id }}</strong>\n" +
7030 " <em>@{{ provider.provider }}</em>: <strong>{{ provider.id }}</strong>\n" +
7032 " </li>\n" +
7031 " </li>\n" +
7033 " </ul>\n" +
7032 " </ul>\n" +
7034 " </div>\n" +
7033 " </div>\n" +
7035 " <div class=\"col-sm-6\">\n" +
7034 " <div class=\"col-sm-6\">\n" +
7036 " <ul class=\"list-group\">\n" +
7035 " <ul class=\"list-group\">\n" +
7037 " <li class=\"list-group-item\">\n" +
7036 " <li class=\"list-group-item\">\n" +
7038 " <a href=\"{{AeConfig.urls.social_auth.google}}\" target=\"_self\">\n" +
7037 " <a href=\"{{AeConfig.urls.social_auth.google}}\" target=\"_self\">\n" +
7039 " <span class=\"fa fa-google-plus-square fa-2x\"></span> Connect with Google</a>\n" +
7038 " <span class=\"fa fa-google-plus-square fa-2x\"></span> Connect with Google</a>\n" +
7040 " </li>\n" +
7039 " </li>\n" +
7041 " <li class=\"list-group-item\">\n" +
7040 " <li class=\"list-group-item\">\n" +
7042 " <a href=\"{{AeConfig.urls.social_auth.twitter}}\" target=\"_self\">\n" +
7041 " <a href=\"{{AeConfig.urls.social_auth.twitter}}\" target=\"_self\">\n" +
7043 " <span class=\"fa fa-twitter fa-2x\"></span> Connect with Twitter</a>\n" +
7042 " <span class=\"fa fa-twitter fa-2x\"></span> Connect with Twitter</a>\n" +
7044 " </li>\n" +
7043 " </li>\n" +
7045 " <li class=\"list-group-item\">\n" +
7044 " <li class=\"list-group-item\">\n" +
7046 " <a href=\"{{AeConfig.urls.social_auth.bitbucket}}\" target=\"_self\">\n" +
7045 " <a href=\"{{AeConfig.urls.social_auth.bitbucket}}\" target=\"_self\">\n" +
7047 " <span class=\"fa fa-bitbucket fa-2x\"></span> Connect with Bitbucket</a>\n" +
7046 " <span class=\"fa fa-bitbucket fa-2x\"></span> Connect with Bitbucket</a>\n" +
7048 " </li>\n" +
7047 " </li>\n" +
7049 " <li class=\"list-group-item\">\n" +
7048 " <li class=\"list-group-item\">\n" +
7050 " <a href=\"{{AeConfig.urls.social_auth.github}}\" target=\"_self\">\n" +
7049 " <a href=\"{{AeConfig.urls.social_auth.github}}\" target=\"_self\">\n" +
7051 " <span class=\"fa fa-github fa-2x\"></span> Connect with Github including private repo access</a>\n" +
7050 " <span class=\"fa fa-github fa-2x\"></span> Connect with Github including private repo access</a>\n" +
7052 " </li>\n" +
7051 " </li>\n" +
7053 " </ul>\n" +
7052 " </ul>\n" +
7054 " </div>\n" +
7053 " </div>\n" +
7055 " </div>\n" +
7054 " </div>\n" +
7056 " </div>\n" +
7055 " </div>\n" +
7057 "</div>\n"
7056 "</div>\n"
7058 );
7057 );
7059
7058
7060
7059
7061 $templateCache.put('templates/user/profile_password.html',
7060 $templateCache.put('templates/user/profile_password.html',
7062 "<ng-include src=\"'templates/loader.html'\" ng-if=\"password.loading.password\"></ng-include>\n" +
7061 "<ng-include src=\"'templates/loader.html'\" ng-if=\"password.loading.password\"></ng-include>\n" +
7063 "\n" +
7062 "\n" +
7064 "<div ng-show=\"!password.loading.password\">\n" +
7063 "<div ng-show=\"!password.loading.password\">\n" +
7065 "\n" +
7064 "\n" +
7066 " <div class=\"panel panel-default\">\n" +
7065 " <div class=\"panel panel-default\">\n" +
7067 " <div class=\"panel-heading\" ng-include=\"'templates/user/breadcrumbs.html'\"></div>\n" +
7066 " <div class=\"panel-heading\" ng-include=\"'templates/user/breadcrumbs.html'\"></div>\n" +
7068 " <div class=\"panel-body\">\n" +
7067 " <div class=\"panel-body\">\n" +
7069 "\n" +
7068 "\n" +
7070 " <form class=\"form-horizontal\" name=\"password.passwordForm\" ng-submit=\"password.updatePassword()\">\n" +
7069 " <form class=\"form-horizontal\" name=\"password.passwordForm\" ng-submit=\"password.updatePassword()\">\n" +
7071 " <div class=\"form-group\" id=\"row-old_password\">\n" +
7070 " <div class=\"form-group\" id=\"row-old_password\">\n" +
7072 " <data-form-errors errors=\"password.passwordForm.ae_validation.old_password\"></data-form-errors>\n" +
7071 " <data-form-errors errors=\"password.passwordForm.ae_validation.old_password\"></data-form-errors>\n" +
7073 " <label for=\"old_password\" id=\"label-old_password\" class=\"control-label col-sm-4 col-lg-3\">\n" +
7072 " <label for=\"old_password\" id=\"label-old_password\" class=\"control-label col-sm-4 col-lg-3\">\n" +
7074 " Old Password\n" +
7073 " Old Password\n" +
7075 " <span class=\"required\">*</span>\n" +
7074 " <span class=\"required\">*</span>\n" +
7076 " </label>\n" +
7075 " </label>\n" +
7077 " <div class=\"col-sm-8 col-lg-9\">\n" +
7076 " <div class=\"col-sm-8 col-lg-9\">\n" +
7078 " <input class=\"form-control\" id=\"old_password\" name=\"old_password\" type=\"password\" ng-model=\"password.form.old_password\">\n" +
7077 " <input class=\"form-control\" id=\"old_password\" name=\"old_password\" type=\"password\" ng-model=\"password.form.old_password\">\n" +
7079 " </div>\n" +
7078 " </div>\n" +
7080 " </div>\n" +
7079 " </div>\n" +
7081 " <div class=\"form-group\" id=\"row-new_password\">\n" +
7080 " <div class=\"form-group\" id=\"row-new_password\">\n" +
7082 " <data-form-errors errors=\"password.passwordForm.ae_validation.new_password\"></data-form-errors>\n" +
7081 " <data-form-errors errors=\"password.passwordForm.ae_validation.new_password\"></data-form-errors>\n" +
7083 " <label for=\"new_password\" id=\"label-new_password\" class=\"control-label col-sm-4 col-lg-3\">\n" +
7082 " <label for=\"new_password\" id=\"label-new_password\" class=\"control-label col-sm-4 col-lg-3\">\n" +
7084 " New Password\n" +
7083 " New Password\n" +
7085 " <span class=\"required\">*</span>\n" +
7084 " <span class=\"required\">*</span>\n" +
7086 " </label>\n" +
7085 " </label>\n" +
7087 " <div class=\"col-sm-8 col-lg-9\">\n" +
7086 " <div class=\"col-sm-8 col-lg-9\">\n" +
7088 " <input class=\"form-control\" id=\"new_password\" name=\"new_password\" type=\"password\" ng-model=\"password.form.new_password\">\n" +
7087 " <input class=\"form-control\" id=\"new_password\" name=\"new_password\" type=\"password\" ng-model=\"password.form.new_password\">\n" +
7089 " </div>\n" +
7088 " </div>\n" +
7090 " </div>\n" +
7089 " </div>\n" +
7091 " <div class=\"form-group\" id=\"row-new_password_confirm\">\n" +
7090 " <div class=\"form-group\" id=\"row-new_password_confirm\">\n" +
7092 " <data-form-errors errors=\"password.passwordForm.ae_validation.new_password_confirm\"></data-form-errors>\n" +
7091 " <data-form-errors errors=\"password.passwordForm.ae_validation.new_password_confirm\"></data-form-errors>\n" +
7093 " <label for=\"new_password_confirm\" id=\"label-new_password_confirm\" class=\"control-label col-sm-4 col-lg-3\">\n" +
7092 " <label for=\"new_password_confirm\" id=\"label-new_password_confirm\" class=\"control-label col-sm-4 col-lg-3\">\n" +
7094 " Confirm Password\n" +
7093 " Confirm Password\n" +
7095 " <span class=\"required\">*</span>\n" +
7094 " <span class=\"required\">*</span>\n" +
7096 " </label>\n" +
7095 " </label>\n" +
7097 " <div class=\"col-sm-8 col-lg-9\">\n" +
7096 " <div class=\"col-sm-8 col-lg-9\">\n" +
7098 " <input class=\"form-control\" id=\"new_password_confirm\" name=\"new_password_confirm\" type=\"password\" ng-model=\"password.form.new_password_confirm\">\n" +
7097 " <input class=\"form-control\" id=\"new_password_confirm\" name=\"new_password_confirm\" type=\"password\" ng-model=\"password.form.new_password_confirm\">\n" +
7099 " </div>\n" +
7098 " </div>\n" +
7100 " </div>\n" +
7099 " </div>\n" +
7101 " <div class=\"form-group\" id=\"row-submit\">\n" +
7100 " <div class=\"form-group\" id=\"row-submit\">\n" +
7102 " <label for=\"submit\" id=\"label-submit\" class=\"control-label col-sm-4 col-lg-3\"></label>\n" +
7101 " <label for=\"submit\" id=\"label-submit\" class=\"control-label col-sm-4 col-lg-3\"></label>\n" +
7103 " <div class=\"col-sm-8 col-lg-9\">\n" +
7102 " <div class=\"col-sm-8 col-lg-9\">\n" +
7104 " <input class=\"form-control SubmitField btn btn-primary\" id=\"submit\" name=\"submit\" type=\"submit\" value=\"Change Password\">\n" +
7103 " <input class=\"form-control SubmitField btn btn-primary\" id=\"submit\" name=\"submit\" type=\"submit\" value=\"Change Password\">\n" +
7105 " </div>\n" +
7104 " </div>\n" +
7106 " </div>\n" +
7105 " </div>\n" +
7107 " </form>\n" +
7106 " </form>\n" +
7108 "\n" +
7107 "\n" +
7109 " </div>\n" +
7108 " </div>\n" +
7110 " </div>\n" +
7109 " </div>\n" +
7111 "</div>\n"
7110 "</div>\n"
7112 );
7111 );
7113
7112
7114
7113
7115 $templateCache.put('templates/user/profile.html',
7114 $templateCache.put('templates/user/profile.html',
7116 "<ui-view></ui-view>"
7115 "<ui-view></ui-view>"
7117 );
7116 );
7118
7117
7119 }]);
7118 }]);
7120
7119
7121 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
7120 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
7122 // #
7121 // #
7123 // # This program is free software: you can redistribute it and/or modify
7122 // # This program is free software: you can redistribute it and/or modify
7124 // # it under the terms of the GNU Affero General Public License, version 3
7123 // # it under the terms of the GNU Affero General Public License, version 3
7125 // # (only), as published by the Free Software Foundation.
7124 // # (only), as published by the Free Software Foundation.
7126 // #
7125 // #
7127 // # This program is distributed in the hope that it will be useful,
7126 // # This program is distributed in the hope that it will be useful,
7128 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
7127 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
7129 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
7128 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
7130 // # GNU General Public License for more details.
7129 // # GNU General Public License for more details.
7131 // #
7130 // #
7132 // # You should have received a copy of the GNU Affero General Public License
7131 // # You should have received a copy of the GNU Affero General Public License
7133 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
7132 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
7134 // #
7133 // #
7135 // # This program is dual-licensed. If you wish to learn more about the
7134 // # This program is dual-licensed. If you wish to learn more about the
7136 // # AppEnlight Enterprise Edition, including its added features, Support
7135 // # AppEnlight Enterprise Edition, including its added features, Support
7137 // # services, and proprietary license terms, please see
7136 // # services, and proprietary license terms, please see
7138 // # https://rhodecode.com/licenses/
7137 // # https://rhodecode.com/licenses/
7139
7138
7140 angular.module('appenlight.components.appenlightApp', [])
7139 angular.module('appenlight.components.appenlightApp', [])
7141 .component('appenlightApp', {
7140 .component('appenlightApp', {
7142 templateUrl: 'templates/components/appenlight-app.html',
7141 templateUrl: 'components/appenlight-app/appenlight-app.html',
7143 controller: AppEnlightAppController
7142 controller: AppEnlightAppController
7144 });
7143 });
7145
7144
7146 AppEnlightAppController.$inject = ['$scope','$state', 'stateHolder', 'AeConfig'];
7145 AppEnlightAppController.$inject = ['$scope','$state', 'stateHolder', 'AeConfig'];
7147
7146
7148 function AppEnlightAppController($scope, $state, stateHolder, AeConfig){
7147 function AppEnlightAppController($scope, $state, stateHolder, AeConfig){
7149
7148
7150 // to keep bw compatibility
7149 // to keep bw compatibility
7151 $scope.$state = $state;
7150 $scope.$state = $state;
7152 $scope.stateHolder = stateHolder;
7151 $scope.stateHolder = stateHolder;
7153 $scope.flash = stateHolder.flashMessages.list;
7152 $scope.flash = stateHolder.flashMessages.list;
7154 $scope.closeAlert = stateHolder.flashMessages.closeAlert;
7153 $scope.closeAlert = stateHolder.flashMessages.closeAlert;
7155 $scope.AeConfig = AeConfig;
7154 $scope.AeConfig = AeConfig;
7156 }
7155 }
7157
7156
7158 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
7157 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
7159 // #
7158 // #
7160 // # This program is free software: you can redistribute it and/or modify
7159 // # This program is free software: you can redistribute it and/or modify
7161 // # it under the terms of the GNU Affero General Public License, version 3
7160 // # it under the terms of the GNU Affero General Public License, version 3
7162 // # (only), as published by the Free Software Foundation.
7161 // # (only), as published by the Free Software Foundation.
7163 // #
7162 // #
7164 // # This program is distributed in the hope that it will be useful,
7163 // # This program is distributed in the hope that it will be useful,
7165 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
7164 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
7166 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
7165 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
7167 // # GNU General Public License for more details.
7166 // # GNU General Public License for more details.
7168 // #
7167 // #
7169 // # You should have received a copy of the GNU Affero General Public License
7168 // # You should have received a copy of the GNU Affero General Public License
7170 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
7169 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
7171 // #
7170 // #
7172 // # This program is dual-licensed. If you wish to learn more about the
7171 // # This program is dual-licensed. If you wish to learn more about the
7173 // # AppEnlight Enterprise Edition, including its added features, Support
7172 // # AppEnlight Enterprise Edition, including its added features, Support
7174 // # services, and proprietary license terms, please see
7173 // # services, and proprietary license terms, please see
7175 // # https://rhodecode.com/licenses/
7174 // # https://rhodecode.com/licenses/
7176
7175
7177 angular.module('appenlight.components.appenlightHeader', [])
7176 angular.module('appenlight.components.appenlightHeader', [])
7178 .component('appenlightFooter', {
7177 .component('appenlightFooter', {
7179 templateUrl: 'templates/components/appenlight-footer.html',
7178 templateUrl: 'templates/components/appenlight-footer.html',
7180 controller: AppEnlightFooterController
7179 controller: AppEnlightFooterController
7181 });
7180 });
7182
7181
7183 ChannelstreamController.$inject = ['stateHolder', 'AeConfig'];
7182 ChannelstreamController.$inject = ['stateHolder', 'AeConfig'];
7184
7183
7185 function AppEnlightFooterController(stateHolder, AeConfig){
7184 function AppEnlightFooterController(stateHolder, AeConfig){
7186 var vm = this;
7185 var vm = this;
7187 vm.AeConfig = AeConfig;
7186 vm.AeConfig = AeConfig;
7188 vm.stateHolder = stateHolder;
7187 vm.stateHolder = stateHolder;
7189 }
7188 }
7190
7189
7191 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
7190 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
7192 // #
7191 // #
7193 // # This program is free software: you can redistribute it and/or modify
7192 // # This program is free software: you can redistribute it and/or modify
7194 // # it under the terms of the GNU Affero General Public License, version 3
7193 // # it under the terms of the GNU Affero General Public License, version 3
7195 // # (only), as published by the Free Software Foundation.
7194 // # (only), as published by the Free Software Foundation.
7196 // #
7195 // #
7197 // # This program is distributed in the hope that it will be useful,
7196 // # This program is distributed in the hope that it will be useful,
7198 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
7197 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
7199 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
7198 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
7200 // # GNU General Public License for more details.
7199 // # GNU General Public License for more details.
7201 // #
7200 // #
7202 // # You should have received a copy of the GNU Affero General Public License
7201 // # You should have received a copy of the GNU Affero General Public License
7203 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
7202 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
7204 // #
7203 // #
7205 // # This program is dual-licensed. If you wish to learn more about the
7204 // # This program is dual-licensed. If you wish to learn more about the
7206 // # AppEnlight Enterprise Edition, including its added features, Support
7205 // # AppEnlight Enterprise Edition, including its added features, Support
7207 // # services, and proprietary license terms, please see
7206 // # services, and proprietary license terms, please see
7208 // # https://rhodecode.com/licenses/
7207 // # https://rhodecode.com/licenses/
7209
7208
7210 angular.module('appenlight.components.appenlightHeader', [])
7209 angular.module('appenlight.components.appenlightHeader', [])
7211 .component('appenlightHeader', {
7210 .component('appenlightHeader', {
7212 templateUrl: 'templates/components/appenlight-header.html',
7211 templateUrl: 'components/appenlight-header/appenlight-header.html',
7213 controller: AppEnlightHeaderController
7212 controller: AppEnlightHeaderController
7214 });
7213 });
7215
7214
7216 ChannelstreamController.$inject = ['$state', 'stateHolder', 'AeConfig'];
7215 ChannelstreamController.$inject = ['$state', 'stateHolder', 'AeConfig'];
7217
7216
7218 function AppEnlightHeaderController($state, stateHolder, AeConfig){
7217 function AppEnlightHeaderController($state, stateHolder, AeConfig){
7219 var vm = this;
7218 var vm = this;
7220 vm.AeConfig = AeConfig;
7219 vm.AeConfig = AeConfig;
7221 vm.stateHolder = stateHolder;
7220 vm.stateHolder = stateHolder;
7222 vm.assignedReports = stateHolder.AeUser.assigned_reports;
7221 vm.assignedReports = stateHolder.AeUser.assigned_reports;
7223 vm.latestEvents = stateHolder.AeUser.latest_events;
7222 vm.latestEvents = stateHolder.AeUser.latest_events;
7224 vm.activeEvents = 0;
7223 vm.activeEvents = 0;
7225 _.each(vm.latestEvents, function (event) {
7224 _.each(vm.latestEvents, function (event) {
7226 if (event.status === 1 && event.end_date === null) {
7225 if (event.status === 1 && event.end_date === null) {
7227 vm.activeEvents += 1;
7226 vm.activeEvents += 1;
7228 }
7227 }
7229 });
7228 });
7230
7229
7231 vm.clickedEvent = function(event){
7230 vm.clickedEvent = function(event){
7232 // exception reports
7231 // exception reports
7233 if (_.contains([1,2], event.event_type)){
7232 if (_.contains([1,2], event.event_type)){
7234 $state.go('report.list', {resource:event.resource_id, start_date:event.start_date});
7233 $state.go('report.list', {resource:event.resource_id, start_date:event.start_date});
7235 }
7234 }
7236 // slowness reports
7235 // slowness reports
7237 else if (_.contains([3,4], event.event_type)){
7236 else if (_.contains([3,4], event.event_type)){
7238 $state.go('report.list_slow', {resource:event.resource_id, start_date:event.start_date});
7237 $state.go('report.list_slow', {resource:event.resource_id, start_date:event.start_date});
7239 }
7238 }
7240 // uptime reports
7239 // uptime reports
7241 else if (_.contains([7,8], event.event_type)){
7240 else if (_.contains([7,8], event.event_type)){
7242 $state.go('uptime', {resource:event.resource_id, start_date:event.start_date});
7241 $state.go('uptime', {resource:event.resource_id, start_date:event.start_date});
7243 }
7242 }
7244 else{
7243 else{
7245
7244
7246 }
7245 }
7247 }
7246 }
7248 }
7247 }
7249
7248
7250 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
7249 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
7251 // #
7250 // #
7252 // # This program is free software: you can redistribute it and/or modify
7251 // # This program is free software: you can redistribute it and/or modify
7253 // # it under the terms of the GNU Affero General Public License, version 3
7252 // # it under the terms of the GNU Affero General Public License, version 3
7254 // # (only), as published by the Free Software Foundation.
7253 // # (only), as published by the Free Software Foundation.
7255 // #
7254 // #
7256 // # This program is distributed in the hope that it will be useful,
7255 // # This program is distributed in the hope that it will be useful,
7257 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
7256 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
7258 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
7257 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
7259 // # GNU General Public License for more details.
7258 // # GNU General Public License for more details.
7260 // #
7259 // #
7261 // # You should have received a copy of the GNU Affero General Public License
7260 // # You should have received a copy of the GNU Affero General Public License
7262 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
7261 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
7263 // #
7262 // #
7264 // # This program is dual-licensed. If you wish to learn more about the
7263 // # This program is dual-licensed. If you wish to learn more about the
7265 // # AppEnlight Enterprise Edition, including its added features, Support
7264 // # AppEnlight Enterprise Edition, including its added features, Support
7266 // # services, and proprietary license terms, please see
7265 // # services, and proprietary license terms, please see
7267 // # https://rhodecode.com/licenses/
7266 // # https://rhodecode.com/licenses/
7268
7267
7269 angular.module('appenlight.components.channelstream', [])
7268 angular.module('appenlight.components.channelstream', [])
7270 .component('channelstream', {
7269 .component('channelstream', {
7271 controller: ChannelstreamController,
7270 controller: ChannelstreamController,
7272 bindings: {
7271 bindings: {
7273 config: '='
7272 config: '='
7274 }
7273 }
7275 });
7274 });
7276
7275
7277 ChannelstreamController.$inject = ['$rootScope', 'stateHolder', 'userSelfPropertyResource'];
7276 ChannelstreamController.$inject = ['$rootScope', 'stateHolder', 'userSelfPropertyResource'];
7278
7277
7279 function ChannelstreamController($rootScope, stateHolder, userSelfPropertyResource){
7278 function ChannelstreamController($rootScope, stateHolder, userSelfPropertyResource){
7280 if (stateHolder.AeUser.id === null){
7279 if (stateHolder.AeUser.id === null){
7281 return
7280 return
7282 }
7281 }
7283 userSelfPropertyResource.get({key: 'websocket'}, function (data) {
7282 userSelfPropertyResource.get({key: 'websocket'}, function (data) {
7284 stateHolder.websocket = new ReconnectingWebSocket(this.config.ws_url + '/ws?conn_id=' + data.conn_id);
7283 stateHolder.websocket = new ReconnectingWebSocket(this.config.ws_url + '/ws?conn_id=' + data.conn_id);
7285 stateHolder.websocket.onopen = function (event) {
7284 stateHolder.websocket.onopen = function (event) {
7286
7285
7287 };
7286 };
7288 stateHolder.websocket.onmessage = function (event) {
7287 stateHolder.websocket.onmessage = function (event) {
7289 var data = JSON.parse(event.data);
7288 var data = JSON.parse(event.data);
7290 $rootScope.$apply(function (scope) {
7289 $rootScope.$apply(function (scope) {
7291 _.each(data, function (message) {
7290 _.each(data, function (message) {
7292
7291
7293 if(typeof message.message.topic !== 'undefined'){
7292 if(typeof message.message.topic !== 'undefined'){
7294 $rootScope.$emit(
7293 $rootScope.$emit(
7295 'channelstream-message.'+message.message.topic, message);
7294 'channelstream-message.'+message.message.topic, message);
7296 }
7295 }
7297 else{
7296 else{
7298 $rootScope.$emit('channelstream-message', message);
7297 $rootScope.$emit('channelstream-message', message);
7299 }
7298 }
7300 });
7299 });
7301 });
7300 });
7302 };
7301 };
7303 stateHolder.websocket.onclose = function (event) {
7302 stateHolder.websocket.onclose = function (event) {
7304
7303
7305 };
7304 };
7306
7305
7307 stateHolder.websocket.onerror = function (event) {
7306 stateHolder.websocket.onerror = function (event) {
7308
7307
7309 };
7308 };
7310 }.bind(this));
7309 }.bind(this));
7311 }
7310 }
7312
7311
7313 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
7312 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
7314 // #
7313 // #
7315 // # This program is free software: you can redistribute it and/or modify
7314 // # This program is free software: you can redistribute it and/or modify
7316 // # it under the terms of the GNU Affero General Public License, version 3
7315 // # it under the terms of the GNU Affero General Public License, version 3
7317 // # (only), as published by the Free Software Foundation.
7316 // # (only), as published by the Free Software Foundation.
7318 // #
7317 // #
7319 // # This program is distributed in the hope that it will be useful,
7318 // # This program is distributed in the hope that it will be useful,
7320 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
7319 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
7321 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
7320 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
7322 // # GNU General Public License for more details.
7321 // # GNU General Public License for more details.
7323 // #
7322 // #
7324 // # You should have received a copy of the GNU Affero General Public License
7323 // # You should have received a copy of the GNU Affero General Public License
7325 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
7324 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
7326 // #
7325 // #
7327 // # This program is dual-licensed. If you wish to learn more about the
7326 // # This program is dual-licensed. If you wish to learn more about the
7328 // # AppEnlight Enterprise Edition, including its added features, Support
7327 // # AppEnlight Enterprise Edition, including its added features, Support
7329 // # services, and proprietary license terms, please see
7328 // # services, and proprietary license terms, please see
7330 // # https://rhodecode.com/licenses/
7329 // # https://rhodecode.com/licenses/
7331
7330
7332 var aeconfig = angular.module('appenlight.config', []);
7331 var aeconfig = angular.module('appenlight.config', []);
7333 aeconfig.factory('AeConfig', function () {
7332 aeconfig.factory('AeConfig', function () {
7334 var obj = {};
7333 var obj = {};
7335 obj.flashMessages = decodeEncodedJSON(window.AE.flash_messages);
7334 obj.flashMessages = decodeEncodedJSON(window.AE.flash_messages);
7336 obj.timeOptions = decodeEncodedJSON(window.AE.timeOptions);
7335 obj.timeOptions = decodeEncodedJSON(window.AE.timeOptions);
7337 obj.plugins = decodeEncodedJSON(window.AE.plugins);
7336 obj.plugins = decodeEncodedJSON(window.AE.plugins);
7338 obj.topNav = decodeEncodedJSON(window.AE.topNav);
7337 obj.topNav = decodeEncodedJSON(window.AE.topNav);
7339 obj.ws_url = window.AE.ws_url;
7338 obj.ws_url = window.AE.ws_url;
7340 obj.urls = window.AE.urls;
7339 obj.urls = window.AE.urls;
7341 // set keys on values because we wont be able to retrieve them everywhere
7340 // set keys on values because we wont be able to retrieve them everywhere
7342 for (var key in obj.timeOptions) {
7341 for (var key in obj.timeOptions) {
7343 obj.timeOptions[key]['key'] = key;
7342 obj.timeOptions[key]['key'] = key;
7344 }
7343 }
7345 console.info('config', obj);
7344 console.info('config', obj);
7346 return obj;
7345 return obj;
7347 });
7346 });
7348
7347
7349 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
7348 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
7350 // #
7349 // #
7351 // # This program is free software: you can redistribute it and/or modify
7350 // # This program is free software: you can redistribute it and/or modify
7352 // # it under the terms of the GNU Affero General Public License, version 3
7351 // # it under the terms of the GNU Affero General Public License, version 3
7353 // # (only), as published by the Free Software Foundation.
7352 // # (only), as published by the Free Software Foundation.
7354 // #
7353 // #
7355 // # This program is distributed in the hope that it will be useful,
7354 // # This program is distributed in the hope that it will be useful,
7356 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
7355 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
7357 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
7356 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
7358 // # GNU General Public License for more details.
7357 // # GNU General Public License for more details.
7359 // #
7358 // #
7360 // # You should have received a copy of the GNU Affero General Public License
7359 // # You should have received a copy of the GNU Affero General Public License
7361 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
7360 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
7362 // #
7361 // #
7363 // # This program is dual-licensed. If you wish to learn more about the
7362 // # This program is dual-licensed. If you wish to learn more about the
7364 // # AppEnlight Enterprise Edition, including its added features, Support
7363 // # AppEnlight Enterprise Edition, including its added features, Support
7365 // # services, and proprietary license terms, please see
7364 // # services, and proprietary license terms, please see
7366 // # https://rhodecode.com/licenses/
7365 // # https://rhodecode.com/licenses/
7367
7366
7368 angular.module('appenlight.controllers').controller('AdminApplicationsListController', AdminApplicationsListController);
7367 angular.module('appenlight.controllers').controller('AdminApplicationsListController', AdminApplicationsListController);
7369
7368
7370 AdminApplicationsListController.$inject = ['applicationsResource'];
7369 AdminApplicationsListController.$inject = ['applicationsResource'];
7371
7370
7372 function AdminApplicationsListController(applicationsResource) {
7371 function AdminApplicationsListController(applicationsResource) {
7373
7372
7374 var vm = this;
7373 var vm = this;
7375 vm.loading = {applications: true};
7374 vm.loading = {applications: true};
7376
7375
7377 vm.applications = applicationsResource.query({
7376 vm.applications = applicationsResource.query({
7378 root_list: true,
7377 root_list: true,
7379 resource_type: 'application'
7378 resource_type: 'application'
7380 }, function (data) {
7379 }, function (data) {
7381 vm.loading = {applications: false};
7380 vm.loading = {applications: false};
7382 });
7381 });
7383 };
7382 };
7384
7383
7385 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
7384 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
7386 // #
7385 // #
7387 // # This program is free software: you can redistribute it and/or modify
7386 // # This program is free software: you can redistribute it and/or modify
7388 // # it under the terms of the GNU Affero General Public License, version 3
7387 // # it under the terms of the GNU Affero General Public License, version 3
7389 // # (only), as published by the Free Software Foundation.
7388 // # (only), as published by the Free Software Foundation.
7390 // #
7389 // #
7391 // # This program is distributed in the hope that it will be useful,
7390 // # This program is distributed in the hope that it will be useful,
7392 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
7391 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
7393 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
7392 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
7394 // # GNU General Public License for more details.
7393 // # GNU General Public License for more details.
7395 // #
7394 // #
7396 // # You should have received a copy of the GNU Affero General Public License
7395 // # You should have received a copy of the GNU Affero General Public License
7397 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
7396 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
7398 // #
7397 // #
7399 // # This program is dual-licensed. If you wish to learn more about the
7398 // # This program is dual-licensed. If you wish to learn more about the
7400 // # AppEnlight Enterprise Edition, including its added features, Support
7399 // # AppEnlight Enterprise Edition, including its added features, Support
7401 // # services, and proprietary license terms, please see
7400 // # services, and proprietary license terms, please see
7402 // # https://rhodecode.com/licenses/
7401 // # https://rhodecode.com/licenses/
7403
7402
7404 angular.module('appenlight.controllers').controller('ConfigsListController', ConfigsListController);
7403 angular.module('appenlight.controllers').controller('ConfigsListController', ConfigsListController);
7405
7404
7406 ConfigsListController.$inject = ['configsResource', 'configsNoIdResource'];
7405 ConfigsListController.$inject = ['configsResource', 'configsNoIdResource'];
7407
7406
7408 function ConfigsListController(configsResource, configsNoIdResource) {
7407 function ConfigsListController(configsResource, configsNoIdResource) {
7409 var vm = this;
7408 var vm = this;
7410 vm.loading = {config: true};
7409 vm.loading = {config: true};
7411
7410
7412 var filters = [
7411 var filters = [
7413 'template_footer_html:global',
7412 'template_footer_html:global',
7414 'list_groups_to_non_admins:global',
7413 'list_groups_to_non_admins:global',
7415 'per_application_reports_rate_limit:global',
7414 'per_application_reports_rate_limit:global',
7416 'per_application_logs_rate_limit:global',
7415 'per_application_logs_rate_limit:global',
7417 'per_application_metrics_rate_limit:global',
7416 'per_application_metrics_rate_limit:global',
7418 ];
7417 ];
7419
7418
7420 vm.configs = {};
7419 vm.configs = {};
7421
7420
7422 vm.configList = configsResource.query({filter: filters},
7421 vm.configList = configsResource.query({filter: filters},
7423 function (data) {
7422 function (data) {
7424 vm.loading = {config: false};
7423 vm.loading = {config: false};
7425 _.each(data, function (item) {
7424 _.each(data, function (item) {
7426 if (vm.configs[item.section] === undefined) {
7425 if (vm.configs[item.section] === undefined) {
7427 vm.configs[item.section] = {};
7426 vm.configs[item.section] = {};
7428 }
7427 }
7429 vm.configs[item.section][item.key] = item;
7428 vm.configs[item.section][item.key] = item;
7430 });
7429 });
7431 });
7430 });
7432
7431
7433 vm.save = function () {
7432 vm.save = function () {
7434 vm.loading.config = true;
7433 vm.loading.config = true;
7435 _.each(vm.configList, function (item) {
7434 _.each(vm.configList, function (item) {
7436 item.$save();
7435 item.$save();
7437 });
7436 });
7438 vm.loading.config = false;
7437 vm.loading.config = false;
7439 };
7438 };
7440
7439
7441 };
7440 };
7442
7441
7443 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
7442 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
7444 // #
7443 // #
7445 // # This program is free software: you can redistribute it and/or modify
7444 // # This program is free software: you can redistribute it and/or modify
7446 // # it under the terms of the GNU Affero General Public License, version 3
7445 // # it under the terms of the GNU Affero General Public License, version 3
7447 // # (only), as published by the Free Software Foundation.
7446 // # (only), as published by the Free Software Foundation.
7448 // #
7447 // #
7449 // # This program is distributed in the hope that it will be useful,
7448 // # This program is distributed in the hope that it will be useful,
7450 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
7449 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
7451 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
7450 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
7452 // # GNU General Public License for more details.
7451 // # GNU General Public License for more details.
7453 // #
7452 // #
7454 // # You should have received a copy of the GNU Affero General Public License
7453 // # You should have received a copy of the GNU Affero General Public License
7455 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
7454 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
7456 // #
7455 // #
7457 // # This program is dual-licensed. If you wish to learn more about the
7456 // # This program is dual-licensed. If you wish to learn more about the
7458 // # AppEnlight Enterprise Edition, including its added features, Support
7457 // # AppEnlight Enterprise Edition, including its added features, Support
7459 // # services, and proprietary license terms, please see
7458 // # services, and proprietary license terms, please see
7460 // # https://rhodecode.com/licenses/
7459 // # https://rhodecode.com/licenses/
7461
7460
7462 angular.module('appenlight.controllers').controller('AdminGroupsCreateController', AdminGroupsCreateController);
7461 angular.module('appenlight.controllers').controller('AdminGroupsCreateController', AdminGroupsCreateController);
7463
7462
7464 AdminGroupsCreateController.$inject = ['$state', 'groupsResource', 'groupsPropertyResource', 'sectionViewResource', 'AeConfig'];
7463 AdminGroupsCreateController.$inject = ['$state', 'groupsResource', 'groupsPropertyResource', 'sectionViewResource', 'AeConfig'];
7465
7464
7466 function AdminGroupsCreateController($state, groupsResource, groupsPropertyResource, sectionViewResource, AeConfig) {
7465 function AdminGroupsCreateController($state, groupsResource, groupsPropertyResource, sectionViewResource, AeConfig) {
7467
7466
7468 var vm = this;
7467 var vm = this;
7469 vm.loading = {
7468 vm.loading = {
7470 group: false,
7469 group: false,
7471 resource_permissions: false,
7470 resource_permissions: false,
7472 users: false
7471 users: false
7473 };
7472 };
7474
7473
7475 vm.form = {
7474 vm.form = {
7476 autocompleteUser: '',
7475 autocompleteUser: '',
7477 }
7476 }
7478
7477
7479
7478
7480 if (typeof $state.params.groupId !== 'undefined') {
7479 if (typeof $state.params.groupId !== 'undefined') {
7481 vm.loading.group = true;
7480 vm.loading.group = true;
7482 var groupId = $state.params.groupId;
7481 var groupId = $state.params.groupId;
7483 vm.group = groupsResource.get({groupId: groupId}, function (data) {
7482 vm.group = groupsResource.get({groupId: groupId}, function (data) {
7484 vm.loading.group = false;
7483 vm.loading.group = false;
7485 });
7484 });
7486
7485
7487 vm.resource_permissions = groupsPropertyResource.query(
7486 vm.resource_permissions = groupsPropertyResource.query(
7488 {groupId: groupId, key: 'resource_permissions'}, function (data) {
7487 {groupId: groupId, key: 'resource_permissions'}, function (data) {
7489 vm.loading.resource_permissions = false;
7488 vm.loading.resource_permissions = false;
7490 var tmpObj = {
7489 var tmpObj = {
7491 'group': {
7490 'group': {
7492 'application': {},
7491 'application': {},
7493 'dashboard': {}
7492 'dashboard': {}
7494 }
7493 }
7495 };
7494 };
7496 _.each(data, function (item) {
7495 _.each(data, function (item) {
7497
7496
7498 var section = tmpObj[item.type][item.resource_type];
7497 var section = tmpObj[item.type][item.resource_type];
7499 if (typeof section[item.resource_id] == 'undefined') {
7498 if (typeof section[item.resource_id] == 'undefined') {
7500 section[item.resource_id] = {
7499 section[item.resource_id] = {
7501 self: item,
7500 self: item,
7502 permissions: []
7501 permissions: []
7503 }
7502 }
7504 }
7503 }
7505 section[item.resource_id].permissions.push(item.perm_name);
7504 section[item.resource_id].permissions.push(item.perm_name);
7506
7505
7507 });
7506 });
7508 vm.resourcePermissions = tmpObj;
7507 vm.resourcePermissions = tmpObj;
7509 });
7508 });
7510
7509
7511 vm.users = groupsPropertyResource.query(
7510 vm.users = groupsPropertyResource.query(
7512 {groupId: groupId, key: 'users'}, function (data) {
7511 {groupId: groupId, key: 'users'}, function (data) {
7513 vm.loading.users = false;
7512 vm.loading.users = false;
7514 }, function () {
7513 }, function () {
7515 vm.loading.users = false;
7514 vm.loading.users = false;
7516 });
7515 });
7517
7516
7518 }
7517 }
7519 else {
7518 else {
7520 var groupId = null;
7519 var groupId = null;
7521 }
7520 }
7522
7521
7523 var formResponse = function (response) {
7522 var formResponse = function (response) {
7524 if (response.status === 422) {
7523 if (response.status === 422) {
7525 setServerValidation(vm.groupForm, response.data);
7524 setServerValidation(vm.groupForm, response.data);
7526 }
7525 }
7527 vm.loading.group = false;
7526 vm.loading.group = false;
7528 };
7527 };
7529
7528
7530 vm.createGroup = function () {
7529 vm.createGroup = function () {
7531 vm.loading.group = true;
7530 vm.loading.group = true;
7532 if (groupId) {
7531 if (groupId) {
7533 groupsResource.update({groupId: vm.group.id}, vm.group, function (data) {
7532 groupsResource.update({groupId: vm.group.id}, vm.group, function (data) {
7534 setServerValidation(vm.groupForm);
7533 setServerValidation(vm.groupForm);
7535 vm.loading.group = false;
7534 vm.loading.group = false;
7536 }, formResponse);
7535 }, formResponse);
7537 }
7536 }
7538 else {
7537 else {
7539 groupsResource.save(vm.group, function (data) {
7538 groupsResource.save(vm.group, function (data) {
7540 $state.go('admin.group.update', {groupId: data.id});
7539 $state.go('admin.group.update', {groupId: data.id});
7541 }, formResponse);
7540 }, formResponse);
7542 }
7541 }
7543 };
7542 };
7544
7543
7545 vm.removeUser = function (user) {
7544 vm.removeUser = function (user) {
7546 groupsPropertyResource.delete(
7545 groupsPropertyResource.delete(
7547 {groupId: groupId, key: 'users', user_name: user.user_name},
7546 {groupId: groupId, key: 'users', user_name: user.user_name},
7548 function (data) {
7547 function (data) {
7549 vm.loading.users = false;
7548 vm.loading.users = false;
7550 vm.users = _.filter(vm.users, function (item) {
7549 vm.users = _.filter(vm.users, function (item) {
7551 return item != user;
7550 return item != user;
7552 });
7551 });
7553 }, function () {
7552 }, function () {
7554 vm.loading.users = false;
7553 vm.loading.users = false;
7555 });
7554 });
7556 };
7555 };
7557
7556
7558 vm.addUser = function () {
7557 vm.addUser = function () {
7559 groupsPropertyResource.save(
7558 groupsPropertyResource.save(
7560 {groupId: groupId, key: 'users'},
7559 {groupId: groupId, key: 'users'},
7561 {user_name: vm.form.autocompleteUser},
7560 {user_name: vm.form.autocompleteUser},
7562 function (data) {
7561 function (data) {
7563 vm.loading.users = false;
7562 vm.loading.users = false;
7564 vm.users.push(data);
7563 vm.users.push(data);
7565 vm.form.autocompleteUser = '';
7564 vm.form.autocompleteUser = '';
7566 }, function () {
7565 }, function () {
7567 vm.loading.users = false;
7566 vm.loading.users = false;
7568 });
7567 });
7569 }
7568 }
7570
7569
7571 vm.searchUsers = function (searchPhrase) {
7570 vm.searchUsers = function (searchPhrase) {
7572
7571
7573 return sectionViewResource.query({
7572 return sectionViewResource.query({
7574 section: 'users_section',
7573 section: 'users_section',
7575 view: 'search_users',
7574 view: 'search_users',
7576 'user_name': searchPhrase
7575 'user_name': searchPhrase
7577 }).$promise.then(function (data) {
7576 }).$promise.then(function (data) {
7578 return _.map(data, function (item) {
7577 return _.map(data, function (item) {
7579 return item.user;
7578 return item.user;
7580 });
7579 });
7581 });
7580 });
7582 }
7581 }
7583 };
7582 };
7584
7583
7585 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
7584 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
7586 // #
7585 // #
7587 // # This program is free software: you can redistribute it and/or modify
7586 // # This program is free software: you can redistribute it and/or modify
7588 // # it under the terms of the GNU Affero General Public License, version 3
7587 // # it under the terms of the GNU Affero General Public License, version 3
7589 // # (only), as published by the Free Software Foundation.
7588 // # (only), as published by the Free Software Foundation.
7590 // #
7589 // #
7591 // # This program is distributed in the hope that it will be useful,
7590 // # This program is distributed in the hope that it will be useful,
7592 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
7591 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
7593 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
7592 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
7594 // # GNU General Public License for more details.
7593 // # GNU General Public License for more details.
7595 // #
7594 // #
7596 // # You should have received a copy of the GNU Affero General Public License
7595 // # You should have received a copy of the GNU Affero General Public License
7597 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
7596 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
7598 // #
7597 // #
7599 // # This program is dual-licensed. If you wish to learn more about the
7598 // # This program is dual-licensed. If you wish to learn more about the
7600 // # AppEnlight Enterprise Edition, including its added features, Support
7599 // # AppEnlight Enterprise Edition, including its added features, Support
7601 // # services, and proprietary license terms, please see
7600 // # services, and proprietary license terms, please see
7602 // # https://rhodecode.com/licenses/
7601 // # https://rhodecode.com/licenses/
7603
7602
7604 angular.module('appenlight.controllers').controller('AdminGroupsController', AdminGroupsController);
7603 angular.module('appenlight.controllers').controller('AdminGroupsController', AdminGroupsController);
7605
7604
7606 AdminGroupsController.$inject = ['groupsResource'];
7605 AdminGroupsController.$inject = ['groupsResource'];
7607
7606
7608 function AdminGroupsController(groupsResource) {
7607 function AdminGroupsController(groupsResource) {
7609
7608
7610 var vm = this;
7609 var vm = this;
7611 vm.loading = {groups: true};
7610 vm.loading = {groups: true};
7612
7611
7613 vm.groups = groupsResource.query({}, function (data) {
7612 vm.groups = groupsResource.query({}, function (data) {
7614 vm.loading = {groups: false};
7613 vm.loading = {groups: false};
7615 vm.activeUsers = _.reduce(vm.groups, function(memo, val){
7614 vm.activeUsers = _.reduce(vm.groups, function(memo, val){
7616 if (val.status == 1){
7615 if (val.status == 1){
7617 return memo + 1;
7616 return memo + 1;
7618 }
7617 }
7619 return memo;
7618 return memo;
7620 }, 0);
7619 }, 0);
7621
7620
7622 });
7621 });
7623
7622
7624
7623
7625 vm.removeGroup = function (group) {
7624 vm.removeGroup = function (group) {
7626 groupsResource.remove({groupId: group.id}, function (data, responseHeaders) {
7625 groupsResource.remove({groupId: group.id}, function (data, responseHeaders) {
7627
7626
7628 if (data) {
7627 if (data) {
7629 var index = vm.groups.indexOf(group);
7628 var index = vm.groups.indexOf(group);
7630 if (index !== -1) {
7629 if (index !== -1) {
7631 vm.groups.splice(index, 1);
7630 vm.groups.splice(index, 1);
7632 vm.activeGroups -= 1;
7631 vm.activeGroups -= 1;
7633 }
7632 }
7634 }
7633 }
7635 });
7634 });
7636 }
7635 }
7637 };
7636 };
7638
7637
7639 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
7638 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
7640 // #
7639 // #
7641 // # This program is free software: you can redistribute it and/or modify
7640 // # This program is free software: you can redistribute it and/or modify
7642 // # it under the terms of the GNU Affero General Public License, version 3
7641 // # it under the terms of the GNU Affero General Public License, version 3
7643 // # (only), as published by the Free Software Foundation.
7642 // # (only), as published by the Free Software Foundation.
7644 // #
7643 // #
7645 // # This program is distributed in the hope that it will be useful,
7644 // # This program is distributed in the hope that it will be useful,
7646 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
7645 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
7647 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
7646 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
7648 // # GNU General Public License for more details.
7647 // # GNU General Public License for more details.
7649 // #
7648 // #
7650 // # You should have received a copy of the GNU Affero General Public License
7649 // # You should have received a copy of the GNU Affero General Public License
7651 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
7650 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
7652 // #
7651 // #
7653 // # This program is dual-licensed. If you wish to learn more about the
7652 // # This program is dual-licensed. If you wish to learn more about the
7654 // # AppEnlight Enterprise Edition, including its added features, Support
7653 // # AppEnlight Enterprise Edition, including its added features, Support
7655 // # services, and proprietary license terms, please see
7654 // # services, and proprietary license terms, please see
7656 // # https://rhodecode.com/licenses/
7655 // # https://rhodecode.com/licenses/
7657
7656
7658 angular.module('appenlight.controllers').controller('AdminPartitionsController', AdminPartitionsController);
7657 angular.module('appenlight.controllers').controller('AdminPartitionsController', AdminPartitionsController);
7659
7658
7660 AdminPartitionsController.$inject = ['sectionViewResource'];
7659 AdminPartitionsController.$inject = ['sectionViewResource'];
7661
7660
7662 function AdminPartitionsController(sectionViewResource) {
7661 function AdminPartitionsController(sectionViewResource) {
7663 var vm = this;
7662 var vm = this;
7664 vm.permanentPartitions = [];
7663 vm.permanentPartitions = [];
7665 vm.dailyPartitions = [];
7664 vm.dailyPartitions = [];
7666 vm.loading = {partitions: true};
7665 vm.loading = {partitions: true};
7667 vm.dailyChecked = false;
7666 vm.dailyChecked = false;
7668 vm.permChecked = false;
7667 vm.permChecked = false;
7669 vm.dailyConfirm = '';
7668 vm.dailyConfirm = '';
7670 vm.permConfirm = '';
7669 vm.permConfirm = '';
7671
7670
7672
7671
7673 vm.loadPartitions = function (data) {
7672 vm.loadPartitions = function (data) {
7674 var permanentPartitions = vm.transformPartitionList(
7673 var permanentPartitions = vm.transformPartitionList(
7675 data.permanent_partitions);
7674 data.permanent_partitions);
7676 var dailyPartitions = vm.transformPartitionList(
7675 var dailyPartitions = vm.transformPartitionList(
7677 data.daily_partitions);
7676 data.daily_partitions);
7678 vm.permanentPartitions = permanentPartitions;
7677 vm.permanentPartitions = permanentPartitions;
7679 vm.dailyPartitions = dailyPartitions;
7678 vm.dailyPartitions = dailyPartitions;
7680 vm.loading = {partitions: false};
7679 vm.loading = {partitions: false};
7681 };
7680 };
7682
7681
7683 vm.setCheckedList = function (scope) {
7682 vm.setCheckedList = function (scope) {
7684 var toTest = null;
7683 var toTest = null;
7685 if (scope === 'dailyPartitions'){
7684 if (scope === 'dailyPartitions'){
7686 toTest = 'dailyChecked';
7685 toTest = 'dailyChecked';
7687 }
7686 }
7688 else{
7687 else{
7689 toTest = 'permChecked';
7688 toTest = 'permChecked';
7690 }
7689 }
7691
7690
7692 if (vm[toTest]) {
7691 if (vm[toTest]) {
7693 var val = true;
7692 var val = true;
7694 }
7693 }
7695 else {
7694 else {
7696 var val = false;
7695 var val = false;
7697 }
7696 }
7698
7697
7699 _.each(vm[scope], function (item) {
7698 _.each(vm[scope], function (item) {
7700 _.each(item[1].pg, function (index) {
7699 _.each(item[1].pg, function (index) {
7701 index.checked = val;
7700 index.checked = val;
7702 });
7701 });
7703 _.each(item[1].elasticsearch, function (index) {
7702 _.each(item[1].elasticsearch, function (index) {
7704 index.checked = val;
7703 index.checked = val;
7705 });
7704 });
7706 });
7705 });
7707 }
7706 }
7708
7707
7709
7708
7710 vm.transformPartitionList = function (inputList) {
7709 vm.transformPartitionList = function (inputList) {
7711 var outputList = [];
7710 var outputList = [];
7712
7711
7713 _.each(inputList, function (item) {
7712 _.each(inputList, function (item) {
7714 var time = [item[0], {
7713 var time = [item[0], {
7715 elasticsearch: [],
7714 elasticsearch: [],
7716 pg: []
7715 pg: []
7717 }]
7716 }]
7718 _.each(item[1].pg, function (index) {
7717 _.each(item[1].pg, function (index) {
7719 time[1].pg.push({name: index, checked: false})
7718 time[1].pg.push({name: index, checked: false})
7720 });
7719 });
7721 _.each(item[1].elasticsearch, function (index) {
7720 _.each(item[1].elasticsearch, function (index) {
7722 time[1].elasticsearch.push({
7721 time[1].elasticsearch.push({
7723 name: index,
7722 name: index,
7724 checked: false
7723 checked: false
7725 })
7724 })
7726 });
7725 });
7727 outputList.push(time);
7726 outputList.push(time);
7728 });
7727 });
7729 return outputList;
7728 return outputList;
7730 };
7729 };
7731
7730
7732 sectionViewResource.get({section:'admin_section', view: 'partitions'},
7731 sectionViewResource.get({section:'admin_section', view: 'partitions'},
7733 vm.loadPartitions);
7732 vm.loadPartitions);
7734
7733
7735 vm.partitionsDelete = function (partitionType) {
7734 vm.partitionsDelete = function (partitionType) {
7736 var es_indices = [];
7735 var es_indices = [];
7737 var pg_indices = [];
7736 var pg_indices = [];
7738 _.each(vm[partitionType], function (item) {
7737 _.each(vm[partitionType], function (item) {
7739 _.each(item[1].pg, function (index) {
7738 _.each(item[1].pg, function (index) {
7740 if (index.checked) {
7739 if (index.checked) {
7741 pg_indices.push(index.name)
7740 pg_indices.push(index.name)
7742 }
7741 }
7743 });
7742 });
7744 _.each(item[1].elasticsearch, function (index) {
7743 _.each(item[1].elasticsearch, function (index) {
7745 if (index.checked) {
7744 if (index.checked) {
7746 es_indices.push(index.name)
7745 es_indices.push(index.name)
7747 }
7746 }
7748 });
7747 });
7749 });
7748 });
7750
7749
7751
7750
7752 vm.loading = {partitions: true};
7751 vm.loading = {partitions: true};
7753 sectionViewResource.save({section:'admin_section',
7752 sectionViewResource.save({section:'admin_section',
7754 view: 'partitions_remove'}, {
7753 view: 'partitions_remove'}, {
7755 es_indices: es_indices,
7754 es_indices: es_indices,
7756 pg_indices: pg_indices,
7755 pg_indices: pg_indices,
7757 confirm: 'CONFIRM'
7756 confirm: 'CONFIRM'
7758 }, vm.loadPartitions);
7757 }, vm.loadPartitions);
7759
7758
7760 }
7759 }
7761
7760
7762 }
7761 }
7763
7762
7764 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
7763 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
7765 // #
7764 // #
7766 // # This program is free software: you can redistribute it and/or modify
7765 // # This program is free software: you can redistribute it and/or modify
7767 // # it under the terms of the GNU Affero General Public License, version 3
7766 // # it under the terms of the GNU Affero General Public License, version 3
7768 // # (only), as published by the Free Software Foundation.
7767 // # (only), as published by the Free Software Foundation.
7769 // #
7768 // #
7770 // # This program is distributed in the hope that it will be useful,
7769 // # This program is distributed in the hope that it will be useful,
7771 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
7770 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
7772 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
7771 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
7773 // # GNU General Public License for more details.
7772 // # GNU General Public License for more details.
7774 // #
7773 // #
7775 // # You should have received a copy of the GNU Affero General Public License
7774 // # You should have received a copy of the GNU Affero General Public License
7776 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
7775 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
7777 // #
7776 // #
7778 // # This program is dual-licensed. If you wish to learn more about the
7777 // # This program is dual-licensed. If you wish to learn more about the
7779 // # AppEnlight Enterprise Edition, including its added features, Support
7778 // # AppEnlight Enterprise Edition, including its added features, Support
7780 // # services, and proprietary license terms, please see
7779 // # services, and proprietary license terms, please see
7781 // # https://rhodecode.com/licenses/
7780 // # https://rhodecode.com/licenses/
7782
7781
7783 angular.module('appenlight.controllers').controller('AdminSystemController', AdminSystemController);
7782 angular.module('appenlight.controllers').controller('AdminSystemController', AdminSystemController);
7784
7783
7785 AdminSystemController.$inject = ['sectionViewResource'];
7784 AdminSystemController.$inject = ['sectionViewResource'];
7786
7785
7787 function AdminSystemController(sectionViewResource) {
7786 function AdminSystemController(sectionViewResource) {
7788 var vm = this;
7787 var vm = this;
7789 vm.tables = [];
7788 vm.tables = [];
7790 vm.loading = {system: true};
7789 vm.loading = {system: true};
7791 sectionViewResource.get({
7790 sectionViewResource.get({
7792 section: 'admin_section',
7791 section: 'admin_section',
7793 view: 'system'
7792 view: 'system'
7794 }, null, function (data) {
7793 }, null, function (data) {
7795 vm.DBtables = data.db_tables;
7794 vm.DBtables = data.db_tables;
7796 vm.ESIndices = data.es_indices;
7795 vm.ESIndices = data.es_indices;
7797 vm.queueStats = data.queue_stats;
7796 vm.queueStats = data.queue_stats;
7798 vm.systemLoad = data.system_load;
7797 vm.systemLoad = data.system_load;
7799 vm.packages = data.packages;
7798 vm.packages = data.packages;
7800 vm.processInfo = data.process_info;
7799 vm.processInfo = data.process_info;
7801 vm.disks = data.disks;
7800 vm.disks = data.disks;
7802 vm.memory = data.memory;
7801 vm.memory = data.memory;
7803 vm.selfInfo = data.self_info;
7802 vm.selfInfo = data.self_info;
7804
7803
7805 vm.loading.system = false;
7804 vm.loading.system = false;
7806 });
7805 });
7807 };
7806 };
7808
7807
7809 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
7808 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
7810 // #
7809 // #
7811 // # This program is free software: you can redistribute it and/or modify
7810 // # This program is free software: you can redistribute it and/or modify
7812 // # it under the terms of the GNU Affero General Public License, version 3
7811 // # it under the terms of the GNU Affero General Public License, version 3
7813 // # (only), as published by the Free Software Foundation.
7812 // # (only), as published by the Free Software Foundation.
7814 // #
7813 // #
7815 // # This program is distributed in the hope that it will be useful,
7814 // # This program is distributed in the hope that it will be useful,
7816 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
7815 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
7817 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
7816 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
7818 // # GNU General Public License for more details.
7817 // # GNU General Public License for more details.
7819 // #
7818 // #
7820 // # You should have received a copy of the GNU Affero General Public License
7819 // # You should have received a copy of the GNU Affero General Public License
7821 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
7820 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
7822 // #
7821 // #
7823 // # This program is dual-licensed. If you wish to learn more about the
7822 // # This program is dual-licensed. If you wish to learn more about the
7824 // # AppEnlight Enterprise Edition, including its added features, Support
7823 // # AppEnlight Enterprise Edition, including its added features, Support
7825 // # services, and proprietary license terms, please see
7824 // # services, and proprietary license terms, please see
7826 // # https://rhodecode.com/licenses/
7825 // # https://rhodecode.com/licenses/
7827
7826
7828 angular.module('appenlight.controllers').controller('AdminUsersCreateController', AdminUsersCreateController);
7827 angular.module('appenlight.controllers').controller('AdminUsersCreateController', AdminUsersCreateController);
7829
7828
7830 AdminUsersCreateController.$inject = ['$state', 'usersResource', 'usersPropertyResource', 'sectionViewResource', 'AeConfig'];
7829 AdminUsersCreateController.$inject = ['$state', 'usersResource', 'usersPropertyResource', 'sectionViewResource', 'AeConfig'];
7831
7830
7832 function AdminUsersCreateController($state, usersResource, usersPropertyResource, sectionViewResource, AeConfig) {
7831 function AdminUsersCreateController($state, usersResource, usersPropertyResource, sectionViewResource, AeConfig) {
7833
7832
7834 var vm = this;
7833 var vm = this;
7835 vm.loading = {user: false};
7834 vm.loading = {user: false};
7836
7835
7837
7836
7838 if (typeof $state.params.userId !== 'undefined') {
7837 if (typeof $state.params.userId !== 'undefined') {
7839 vm.loading.user = true;
7838 vm.loading.user = true;
7840 var userId = $state.params.userId;
7839 var userId = $state.params.userId;
7841 vm.user = usersResource.get({userId: userId}, function (data) {
7840 vm.user = usersResource.get({userId: userId}, function (data) {
7842 vm.loading.user = false;
7841 vm.loading.user = false;
7843 // cast to true for angular checkbox
7842 // cast to true for angular checkbox
7844 if (vm.user.status === 1) {
7843 if (vm.user.status === 1) {
7845 vm.user.status = true;
7844 vm.user.status = true;
7846 }
7845 }
7847 });
7846 });
7848
7847
7849 vm.resource_permissions = usersPropertyResource.query(
7848 vm.resource_permissions = usersPropertyResource.query(
7850 {userId: userId, key: 'resource_permissions'}, function (data) {
7849 {userId: userId, key: 'resource_permissions'}, function (data) {
7851 vm.loading.resource_permissions = false;
7850 vm.loading.resource_permissions = false;
7852 var tmpObj = {
7851 var tmpObj = {
7853 'user': {
7852 'user': {
7854 'application': {},
7853 'application': {},
7855 'dashboard': {}
7854 'dashboard': {}
7856 },
7855 },
7857 'group': {
7856 'group': {
7858 'application': {},
7857 'application': {},
7859 'dashboard': {}
7858 'dashboard': {}
7860 }
7859 }
7861 };
7860 };
7862 _.each(data, function (item) {
7861 _.each(data, function (item) {
7863
7862
7864 var section = tmpObj[item.type][item.resource_type];
7863 var section = tmpObj[item.type][item.resource_type];
7865 if (typeof section[item.resource_id] == 'undefined'){
7864 if (typeof section[item.resource_id] == 'undefined'){
7866 section[item.resource_id] = {
7865 section[item.resource_id] = {
7867 self:item,
7866 self:item,
7868 permissions: []
7867 permissions: []
7869 }
7868 }
7870 }
7869 }
7871 section[item.resource_id].permissions.push(item.perm_name);
7870 section[item.resource_id].permissions.push(item.perm_name);
7872
7871
7873 });
7872 });
7874 vm.resourcePermissions = tmpObj;
7873 vm.resourcePermissions = tmpObj;
7875 });
7874 });
7876
7875
7877 }
7876 }
7878 else {
7877 else {
7879 var userId = null;
7878 var userId = null;
7880 vm.user = {
7879 vm.user = {
7881 status: true
7880 status: true
7882 }
7881 }
7883 }
7882 }
7884
7883
7885 var formResponse = function (response) {
7884 var formResponse = function (response) {
7886 if (response.status == 422) {
7885 if (response.status == 422) {
7887 setServerValidation(vm.profileForm, response.data);
7886 setServerValidation(vm.profileForm, response.data);
7888 }
7887 }
7889 vm.loading.user = false;
7888 vm.loading.user = false;
7890 }
7889 }
7891
7890
7892 vm.createUser = function () {
7891 vm.createUser = function () {
7893 vm.loading.user = true;
7892 vm.loading.user = true;
7894
7893
7895 if (userId) {
7894 if (userId) {
7896 usersResource.update({userId: vm.user.id}, vm.user, function (data) {
7895 usersResource.update({userId: vm.user.id}, vm.user, function (data) {
7897 setServerValidation(vm.profileForm);
7896 setServerValidation(vm.profileForm);
7898 vm.loading.user = false;
7897 vm.loading.user = false;
7899 }, formResponse);
7898 }, formResponse);
7900 }
7899 }
7901 else {
7900 else {
7902 usersResource.save(vm.user, function (data) {
7901 usersResource.save(vm.user, function (data) {
7903 $state.go('admin.user.update', {userId: data.id});
7902 $state.go('admin.user.update', {userId: data.id});
7904 }, formResponse);
7903 }, formResponse);
7905 }
7904 }
7906 }
7905 }
7907
7906
7908 vm.generatePassword = function () {
7907 vm.generatePassword = function () {
7909 var length = 8;
7908 var length = 8;
7910 var charset = "abcdefghijklnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
7909 var charset = "abcdefghijklnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
7911 vm.gen_pass = "";
7910 vm.gen_pass = "";
7912 for (var i = 0, n = charset.length; i < length; ++i) {
7911 for (var i = 0, n = charset.length; i < length; ++i) {
7913 vm.gen_pass += charset.charAt(Math.floor(Math.random() * n));
7912 vm.gen_pass += charset.charAt(Math.floor(Math.random() * n));
7914 }
7913 }
7915 vm.user.user_password = '' + vm.gen_pass;
7914 vm.user.user_password = '' + vm.gen_pass;
7916
7915
7917 }
7916 }
7918
7917
7919 vm.reloginUser = function () {
7918 vm.reloginUser = function () {
7920 sectionViewResource.get({
7919 sectionViewResource.get({
7921 section: 'admin_section', view: 'relogin_user',
7920 section: 'admin_section', view: 'relogin_user',
7922 user_id: vm.user.id
7921 user_id: vm.user.id
7923 }, function () {
7922 }, function () {
7924 window.location = AeConfig.urls.baseUrl;
7923 window.location = AeConfig.urls.baseUrl;
7925 });
7924 });
7926
7925
7927 }
7926 }
7928 };
7927 };
7929
7928
7930 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
7929 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
7931 // #
7930 // #
7932 // # This program is free software: you can redistribute it and/or modify
7931 // # This program is free software: you can redistribute it and/or modify
7933 // # it under the terms of the GNU Affero General Public License, version 3
7932 // # it under the terms of the GNU Affero General Public License, version 3
7934 // # (only), as published by the Free Software Foundation.
7933 // # (only), as published by the Free Software Foundation.
7935 // #
7934 // #
7936 // # This program is distributed in the hope that it will be useful,
7935 // # This program is distributed in the hope that it will be useful,
7937 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
7936 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
7938 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
7937 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
7939 // # GNU General Public License for more details.
7938 // # GNU General Public License for more details.
7940 // #
7939 // #
7941 // # You should have received a copy of the GNU Affero General Public License
7940 // # You should have received a copy of the GNU Affero General Public License
7942 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
7941 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
7943 // #
7942 // #
7944 // # This program is dual-licensed. If you wish to learn more about the
7943 // # This program is dual-licensed. If you wish to learn more about the
7945 // # AppEnlight Enterprise Edition, including its added features, Support
7944 // # AppEnlight Enterprise Edition, including its added features, Support
7946 // # services, and proprietary license terms, please see
7945 // # services, and proprietary license terms, please see
7947 // # https://rhodecode.com/licenses/
7946 // # https://rhodecode.com/licenses/
7948
7947
7949 angular.module('appenlight.controllers').controller('AdminUsersController', AdminUsersController);
7948 angular.module('appenlight.controllers').controller('AdminUsersController', AdminUsersController);
7950
7949
7951 AdminUsersController.$inject = ['usersResource'];
7950 AdminUsersController.$inject = ['usersResource'];
7952
7951
7953 function AdminUsersController(usersResource) {
7952 function AdminUsersController(usersResource) {
7954
7953
7955 var vm = this;
7954 var vm = this;
7956 vm.loading = {users: true};
7955 vm.loading = {users: true};
7957
7956
7958 vm.users = usersResource.query({}, function (data) {
7957 vm.users = usersResource.query({}, function (data) {
7959 vm.loading = {users: false};
7958 vm.loading = {users: false};
7960 vm.activeUsers = _.reduce(vm.users, function(memo, val){
7959 vm.activeUsers = _.reduce(vm.users, function(memo, val){
7961 if (val.status == 1){
7960 if (val.status == 1){
7962 return memo + 1;
7961 return memo + 1;
7963 }
7962 }
7964 return memo;
7963 return memo;
7965 }, 0);
7964 }, 0);
7966
7965
7967 });
7966 });
7968
7967
7969
7968
7970 vm.removeUser = function (user) {
7969 vm.removeUser = function (user) {
7971 usersResource.remove({userId: user.id}, function (data, responseHeaders) {
7970 usersResource.remove({userId: user.id}, function (data, responseHeaders) {
7972
7971
7973 if (data) {
7972 if (data) {
7974 var index = vm.users.indexOf(user);
7973 var index = vm.users.indexOf(user);
7975 if (index !== -1) {
7974 if (index !== -1) {
7976 vm.users.splice(index, 1);
7975 vm.users.splice(index, 1);
7977 vm.activeUsers -= 1;
7976 vm.activeUsers -= 1;
7978 }
7977 }
7979 }
7978 }
7980 });
7979 });
7981 }
7980 }
7982 };
7981 };
7983
7982
7984 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
7983 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
7985 // #
7984 // #
7986 // # This program is free software: you can redistribute it and/or modify
7985 // # This program is free software: you can redistribute it and/or modify
7987 // # it under the terms of the GNU Affero General Public License, version 3
7986 // # it under the terms of the GNU Affero General Public License, version 3
7988 // # (only), as published by the Free Software Foundation.
7987 // # (only), as published by the Free Software Foundation.
7989 // #
7988 // #
7990 // # This program is distributed in the hope that it will be useful,
7989 // # This program is distributed in the hope that it will be useful,
7991 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
7990 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
7992 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
7991 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
7993 // # GNU General Public License for more details.
7992 // # GNU General Public License for more details.
7994 // #
7993 // #
7995 // # You should have received a copy of the GNU Affero General Public License
7994 // # You should have received a copy of the GNU Affero General Public License
7996 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
7995 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
7997 // #
7996 // #
7998 // # This program is dual-licensed. If you wish to learn more about the
7997 // # This program is dual-licensed. If you wish to learn more about the
7999 // # AppEnlight Enterprise Edition, including its added features, Support
7998 // # AppEnlight Enterprise Edition, including its added features, Support
8000 // # services, and proprietary license terms, please see
7999 // # services, and proprietary license terms, please see
8001 // # https://rhodecode.com/licenses/
8000 // # https://rhodecode.com/licenses/
8002
8001
8003 angular.module('appenlight.controllers')
8002 angular.module('appenlight.controllers')
8004 .controller('ApplicationsUpdateController', ApplicationsUpdateController)
8003 .controller('ApplicationsUpdateController', ApplicationsUpdateController)
8005
8004
8006 ApplicationsUpdateController.$inject = ['$state', 'applicationsNoIdResource', 'applicationsResource', 'applicationsPropertyResource', 'stateHolder'];
8005 ApplicationsUpdateController.$inject = ['$state', 'applicationsNoIdResource', 'applicationsResource', 'applicationsPropertyResource', 'stateHolder'];
8007
8006
8008 function ApplicationsUpdateController($state, applicationsNoIdResource, applicationsResource, applicationsPropertyResource, stateHolder) {
8007 function ApplicationsUpdateController($state, applicationsNoIdResource, applicationsResource, applicationsPropertyResource, stateHolder) {
8009 'use strict';
8008 'use strict';
8010
8009
8011 var vm = this;
8010 var vm = this;
8012 vm.loading = {application: false};
8011 vm.loading = {application: false};
8013
8012
8014 vm.groupingOptions = [
8013 vm.groupingOptions = [
8015 ['url_type', 'Error Type + location'],
8014 ['url_type', 'Error Type + location'],
8016 ['url_traceback', 'Traceback + location'],
8015 ['url_traceback', 'Traceback + location'],
8017 ['traceback_server', 'Traceback + Server'],
8016 ['traceback_server', 'Traceback + Server'],
8018 ];
8017 ];
8019
8018
8020 var resourceId = $state.params.resourceId;
8019 var resourceId = $state.params.resourceId;
8021
8020
8022
8021
8023 var options = {};
8022 var options = {};
8024
8023
8025 vm.momentJs = moment;
8024 vm.momentJs = moment;
8026
8025
8027 vm.formTransferModel = {password:''};
8026 vm.formTransferModel = {password:''};
8028
8027
8029 // set initial data
8028 // set initial data
8030
8029
8031 if (resourceId === 'new') {
8030 if (resourceId === 'new') {
8032 vm.resource = {
8031 vm.resource = {
8033 resource_id: null,
8032 resource_id: null,
8034 slow_report_threshold: 10,
8033 slow_report_threshold: 10,
8035 error_report_threshold: 10,
8034 error_report_threshold: 10,
8036 allow_permanent_storage: true,
8035 allow_permanent_storage: true,
8037 default_grouping: vm.groupingOptions[1][0]
8036 default_grouping: vm.groupingOptions[1][0]
8038 };
8037 };
8039 }
8038 }
8040 else {
8039 else {
8041 vm.loading.application = true;
8040 vm.loading.application = true;
8042 vm.resource = applicationsResource.get({
8041 vm.resource = applicationsResource.get({
8043 'resourceId': resourceId
8042 'resourceId': resourceId
8044 }, function (data) {
8043 }, function (data) {
8045 vm.loading.application = false;
8044 vm.loading.application = false;
8046 });
8045 });
8047 }
8046 }
8048
8047
8049
8048
8050 vm.updateBasicForm = function () {
8049 vm.updateBasicForm = function () {
8051 vm.loading.application = true;
8050 vm.loading.application = true;
8052 if (vm.resource.resource_id === null) {
8051 if (vm.resource.resource_id === null) {
8053 applicationsNoIdResource.save(null, vm.resource, function (data) {
8052 applicationsNoIdResource.save(null, vm.resource, function (data) {
8054 stateHolder.AeUser.addApplication(data);
8053 stateHolder.AeUser.addApplication(data);
8055 $state.go('applications.update', {resourceId: data.resource_id});
8054 $state.go('applications.update', {resourceId: data.resource_id});
8056 setServerValidation(vm.BasicForm);
8055 setServerValidation(vm.BasicForm);
8057 }, function (response) {
8056 }, function (response) {
8058 if (response.status == 422) {
8057 if (response.status == 422) {
8059 setServerValidation(vm.BasicForm, response.data);
8058 setServerValidation(vm.BasicForm, response.data);
8060 }
8059 }
8061 vm.loading.application = false;
8060 vm.loading.application = false;
8062
8061
8063 });
8062 });
8064 }
8063 }
8065 else {
8064 else {
8066 applicationsResource.update({resourceId: vm.resource.resource_id},
8065 applicationsResource.update({resourceId: vm.resource.resource_id},
8067 vm.resource, function (data) {
8066 vm.resource, function (data) {
8068 vm.resource = data;
8067 vm.resource = data;
8069 vm.loading.application = false;
8068 vm.loading.application = false;
8070 setServerValidation(vm.BasicForm);
8069 setServerValidation(vm.BasicForm);
8071 }, function (response) {
8070 }, function (response) {
8072 if (response.status == 422) {
8071 if (response.status == 422) {
8073 setServerValidation(vm.BasicForm, response.data);
8072 setServerValidation(vm.BasicForm, response.data);
8074 }
8073 }
8075 vm.loading.application = false;
8074 vm.loading.application = false;
8076 });
8075 });
8077 }
8076 }
8078 };
8077 };
8079
8078
8080 vm.addRule = function () {
8079 vm.addRule = function () {
8081
8080
8082 applicationsPropertyResource.save({
8081 applicationsPropertyResource.save({
8083 resourceId: vm.resource.resource_id,
8082 resourceId: vm.resource.resource_id,
8084 key: 'postprocessing_rules'
8083 key: 'postprocessing_rules'
8085 }, null,
8084 }, null,
8086 function (data) {
8085 function (data) {
8087 vm.resource.postprocessing_rules.push(data);
8086 vm.resource.postprocessing_rules.push(data);
8088 }
8087 }
8089 );
8088 );
8090 };
8089 };
8091
8090
8092 vm.regenerateAPIKeys = function(){
8091 vm.regenerateAPIKeys = function(){
8093 vm.loading.application = true;
8092 vm.loading.application = true;
8094 applicationsPropertyResource.save({
8093 applicationsPropertyResource.save({
8095 resourceId: vm.resource.resource_id,
8094 resourceId: vm.resource.resource_id,
8096 key: 'api_key'
8095 key: 'api_key'
8097 }, {password: vm.regenerateAPIKeysPassword},
8096 }, {password: vm.regenerateAPIKeysPassword},
8098 function (data) {
8097 function (data) {
8099 vm.resource = data;
8098 vm.resource = data;
8100 vm.loading.application = false;
8099 vm.loading.application = false;
8101 vm.regenerateAPIKeysPassword = '';
8100 vm.regenerateAPIKeysPassword = '';
8102 setServerValidation(vm.regenerateAPIKeysForm);
8101 setServerValidation(vm.regenerateAPIKeysForm);
8103 },
8102 },
8104 function (response) {
8103 function (response) {
8105 if (response.status == 422) {
8104 if (response.status == 422) {
8106 setServerValidation(vm.regenerateAPIKeysForm, response.data);
8105 setServerValidation(vm.regenerateAPIKeysForm, response.data);
8107
8106
8108 }
8107 }
8109 vm.loading.application = false;
8108 vm.loading.application = false;
8110 }
8109 }
8111 )
8110 )
8112 };
8111 };
8113
8112
8114 vm.deleteApplication = function(){
8113 vm.deleteApplication = function(){
8115 vm.loading.application = true;
8114 vm.loading.application = true;
8116 applicationsPropertyResource.update({
8115 applicationsPropertyResource.update({
8117 resourceId: vm.resource.resource_id,
8116 resourceId: vm.resource.resource_id,
8118 key: 'delete_resource'
8117 key: 'delete_resource'
8119 }, vm.formDeleteModel,
8118 }, vm.formDeleteModel,
8120 function (data) {
8119 function (data) {
8121 stateHolder.AeUser.removeApplicationById(vm.resource.resource_id);
8120 stateHolder.AeUser.removeApplicationById(vm.resource.resource_id);
8122 $state.go('applications.list');
8121 $state.go('applications.list');
8123 },
8122 },
8124 function (response) {
8123 function (response) {
8125 if (response.status == 422) {
8124 if (response.status == 422) {
8126 setServerValidation(vm.formDelete, response.data);
8125 setServerValidation(vm.formDelete, response.data);
8127
8126
8128 }
8127 }
8129 vm.loading.application = false;
8128 vm.loading.application = false;
8130 }
8129 }
8131 );
8130 );
8132 };
8131 };
8133
8132
8134 vm.transferApplication = function(){
8133 vm.transferApplication = function(){
8135 vm.loading.application = true;
8134 vm.loading.application = true;
8136 applicationsPropertyResource.update({
8135 applicationsPropertyResource.update({
8137 resourceId: vm.resource.resource_id,
8136 resourceId: vm.resource.resource_id,
8138 key: 'owner'
8137 key: 'owner'
8139 }, vm.formTransferModel,
8138 }, vm.formTransferModel,
8140 function (data) {
8139 function (data) {
8141 $state.go('applications.list');
8140 $state.go('applications.list');
8142 },
8141 },
8143 function (response) {
8142 function (response) {
8144 if (response.status == 422) {
8143 if (response.status == 422) {
8145 setServerValidation(vm.formTransfer, response.data);
8144 setServerValidation(vm.formTransfer, response.data);
8146
8145
8147 }
8146 }
8148 vm.loading.application = false;
8147 vm.loading.application = false;
8149 }
8148 }
8150 )
8149 )
8151 }
8150 }
8152
8151
8153 }
8152 }
8154
8153
8155 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
8154 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
8156 // #
8155 // #
8157 // # This program is free software: you can redistribute it and/or modify
8156 // # This program is free software: you can redistribute it and/or modify
8158 // # it under the terms of the GNU Affero General Public License, version 3
8157 // # it under the terms of the GNU Affero General Public License, version 3
8159 // # (only), as published by the Free Software Foundation.
8158 // # (only), as published by the Free Software Foundation.
8160 // #
8159 // #
8161 // # This program is distributed in the hope that it will be useful,
8160 // # This program is distributed in the hope that it will be useful,
8162 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
8161 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
8163 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
8162 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
8164 // # GNU General Public License for more details.
8163 // # GNU General Public License for more details.
8165 // #
8164 // #
8166 // # You should have received a copy of the GNU Affero General Public License
8165 // # You should have received a copy of the GNU Affero General Public License
8167 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
8166 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
8168 // #
8167 // #
8169 // # This program is dual-licensed. If you wish to learn more about the
8168 // # This program is dual-licensed. If you wish to learn more about the
8170 // # AppEnlight Enterprise Edition, including its added features, Support
8169 // # AppEnlight Enterprise Edition, including its added features, Support
8171 // # services, and proprietary license terms, please see
8170 // # services, and proprietary license terms, please see
8172 // # https://rhodecode.com/licenses/
8171 // # https://rhodecode.com/licenses/
8173
8172
8174 angular.module('appenlight.controllers')
8173 angular.module('appenlight.controllers')
8175 .controller('IntegrationController', IntegrationController)
8174 .controller('IntegrationController', IntegrationController)
8176
8175
8177 IntegrationController.$inject = ['$state', 'integrationResource'];
8176 IntegrationController.$inject = ['$state', 'integrationResource'];
8178
8177
8179 function IntegrationController($state, integrationResource) {
8178 function IntegrationController($state, integrationResource) {
8180
8179
8181 var vm = this;
8180 var vm = this;
8182 vm.loading = {integration: true};
8181 vm.loading = {integration: true};
8183 vm.config = integrationResource.get(
8182 vm.config = integrationResource.get(
8184 {
8183 {
8185 integration: $state.params.integration,
8184 integration: $state.params.integration,
8186 action: 'setup',
8185 action: 'setup',
8187 resourceId: $state.params.resourceId
8186 resourceId: $state.params.resourceId
8188 }, function (data) {
8187 }, function (data) {
8189 vm.loading.integration = false;
8188 vm.loading.integration = false;
8190 });
8189 });
8191
8190
8192 vm.configureIntegration = function () {
8191 vm.configureIntegration = function () {
8193 console.info('configureIntegration');
8192 console.info('configureIntegration');
8194 vm.loading.integration = true;
8193 vm.loading.integration = true;
8195 integrationResource.save(
8194 integrationResource.save(
8196 {
8195 {
8197 integration: $state.params.integration,
8196 integration: $state.params.integration,
8198 action: 'setup',
8197 action: 'setup',
8199 resourceId: $state.params.resourceId
8198 resourceId: $state.params.resourceId
8200 }, vm.config, function (data) {
8199 }, vm.config, function (data) {
8201 vm.loading.integration = false;
8200 vm.loading.integration = false;
8202 setServerValidation(vm.integrationForm);
8201 setServerValidation(vm.integrationForm);
8203 }, function (response) {
8202 }, function (response) {
8204 if (response.status == 422) {
8203 if (response.status == 422) {
8205 setServerValidation(vm.integrationForm, response.data);
8204 setServerValidation(vm.integrationForm, response.data);
8206 }
8205 }
8207 vm.loading.integration = false;
8206 vm.loading.integration = false;
8208 });
8207 });
8209 };
8208 };
8210
8209
8211 vm.removeIntegration = function () {
8210 vm.removeIntegration = function () {
8212 console.info('removeIntegration');
8211 console.info('removeIntegration');
8213 integrationResource.remove({
8212 integrationResource.remove({
8214 integration: $state.params.integration,
8213 integration: $state.params.integration,
8215 resourceId: $state.params.resourceId,
8214 resourceId: $state.params.resourceId,
8216 action: 'delete'
8215 action: 'delete'
8217 },
8216 },
8218 function () {
8217 function () {
8219 $state.go('applications.integrations',
8218 $state.go('applications.integrations',
8220 {resourceId: $state.params.resourceId});
8219 {resourceId: $state.params.resourceId});
8221 }
8220 }
8222 );
8221 );
8223 }
8222 }
8224
8223
8225 vm.testIntegration = function(to_test){
8224 vm.testIntegration = function(to_test){
8226 console.info('testIntegration', to_test);
8225 console.info('testIntegration', to_test);
8227 vm.loading.integration = true;
8226 vm.loading.integration = true;
8228 integrationResource.save(
8227 integrationResource.save(
8229 {
8228 {
8230 integration: $state.params.integration,
8229 integration: $state.params.integration,
8231 action: 'test_'+ to_test,
8230 action: 'test_'+ to_test,
8232 resourceId: $state.params.resourceId
8231 resourceId: $state.params.resourceId
8233 }, vm.config, function (data) {
8232 }, vm.config, function (data) {
8234 vm.loading.integration = false;
8233 vm.loading.integration = false;
8235 }, function (response) {
8234 }, function (response) {
8236 vm.loading.integration = false;
8235 vm.loading.integration = false;
8237 });
8236 });
8238 }
8237 }
8239
8238
8240
8239
8241 }
8240 }
8242
8241
8243 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
8242 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
8244 // #
8243 // #
8245 // # This program is free software: you can redistribute it and/or modify
8244 // # This program is free software: you can redistribute it and/or modify
8246 // # it under the terms of the GNU Affero General Public License, version 3
8245 // # it under the terms of the GNU Affero General Public License, version 3
8247 // # (only), as published by the Free Software Foundation.
8246 // # (only), as published by the Free Software Foundation.
8248 // #
8247 // #
8249 // # This program is distributed in the hope that it will be useful,
8248 // # This program is distributed in the hope that it will be useful,
8250 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
8249 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
8251 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
8250 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
8252 // # GNU General Public License for more details.
8251 // # GNU General Public License for more details.
8253 // #
8252 // #
8254 // # You should have received a copy of the GNU Affero General Public License
8253 // # You should have received a copy of the GNU Affero General Public License
8255 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
8254 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
8256 // #
8255 // #
8257 // # This program is dual-licensed. If you wish to learn more about the
8256 // # This program is dual-licensed. If you wish to learn more about the
8258 // # AppEnlight Enterprise Edition, including its added features, Support
8257 // # AppEnlight Enterprise Edition, including its added features, Support
8259 // # services, and proprietary license terms, please see
8258 // # services, and proprietary license terms, please see
8260 // # https://rhodecode.com/licenses/
8259 // # https://rhodecode.com/licenses/
8261
8260
8262 angular.module('appenlight.controllers')
8261 angular.module('appenlight.controllers')
8263 .controller('IntegrationsListController', IntegrationsListController)
8262 .controller('IntegrationsListController', IntegrationsListController)
8264
8263
8265 IntegrationsListController.$inject = ['$state', 'applicationsResource'];
8264 IntegrationsListController.$inject = ['$state', 'applicationsResource'];
8266
8265
8267 function IntegrationsListController($state, applicationsResource) {
8266 function IntegrationsListController($state, applicationsResource) {
8268
8267
8269 var vm = this;
8268 var vm = this;
8270 vm.loading = {application: true};
8269 vm.loading = {application: true};
8271 vm.resource = applicationsResource.get({resourceId: $state.params.resourceId}, function (data) {
8270 vm.resource = applicationsResource.get({resourceId: $state.params.resourceId}, function (data) {
8272 vm.loading.application = false;
8271 vm.loading.application = false;
8273 $state.current.data.resource = vm.resource;
8272 $state.current.data.resource = vm.resource;
8274 });
8273 });
8275 }
8274 }
8276
8275
8277 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
8276 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
8278 // #
8277 // #
8279 // # This program is free software: you can redistribute it and/or modify
8278 // # This program is free software: you can redistribute it and/or modify
8280 // # it under the terms of the GNU Affero General Public License, version 3
8279 // # it under the terms of the GNU Affero General Public License, version 3
8281 // # (only), as published by the Free Software Foundation.
8280 // # (only), as published by the Free Software Foundation.
8282 // #
8281 // #
8283 // # This program is distributed in the hope that it will be useful,
8282 // # This program is distributed in the hope that it will be useful,
8284 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
8283 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
8285 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
8284 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
8286 // # GNU General Public License for more details.
8285 // # GNU General Public License for more details.
8287 // #
8286 // #
8288 // # You should have received a copy of the GNU Affero General Public License
8287 // # You should have received a copy of the GNU Affero General Public License
8289 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
8288 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
8290 // #
8289 // #
8291 // # This program is dual-licensed. If you wish to learn more about the
8290 // # This program is dual-licensed. If you wish to learn more about the
8292 // # AppEnlight Enterprise Edition, including its added features, Support
8291 // # AppEnlight Enterprise Edition, including its added features, Support
8293 // # services, and proprietary license terms, please see
8292 // # services, and proprietary license terms, please see
8294 // # https://rhodecode.com/licenses/
8293 // # https://rhodecode.com/licenses/
8295
8294
8296 angular.module('appenlight.controllers')
8295 angular.module('appenlight.controllers')
8297 .controller('ApplicationsListController', ApplicationsListController)
8296 .controller('ApplicationsListController', ApplicationsListController)
8298
8297
8299 ApplicationsListController.$inject = ['applicationsResource'];
8298 ApplicationsListController.$inject = ['applicationsResource'];
8300
8299
8301 function ApplicationsListController(applicationsResource) {
8300 function ApplicationsListController(applicationsResource) {
8302
8301
8303 var vm = this;
8302 var vm = this;
8304 vm.loading = {applications: true};
8303 vm.loading = {applications: true};
8305 vm.applications = applicationsResource.query(null, function(){
8304 vm.applications = applicationsResource.query(null, function(){
8306 vm.loading.applications = false;
8305 vm.loading.applications = false;
8307 });
8306 });
8308 }
8307 }
8309
8308
8310 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
8309 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
8311 // #
8310 // #
8312 // # This program is free software: you can redistribute it and/or modify
8311 // # This program is free software: you can redistribute it and/or modify
8313 // # it under the terms of the GNU Affero General Public License, version 3
8312 // # it under the terms of the GNU Affero General Public License, version 3
8314 // # (only), as published by the Free Software Foundation.
8313 // # (only), as published by the Free Software Foundation.
8315 // #
8314 // #
8316 // # This program is distributed in the hope that it will be useful,
8315 // # This program is distributed in the hope that it will be useful,
8317 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
8316 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
8318 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
8317 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
8319 // # GNU General Public License for more details.
8318 // # GNU General Public License for more details.
8320 // #
8319 // #
8321 // # You should have received a copy of the GNU Affero General Public License
8320 // # You should have received a copy of the GNU Affero General Public License
8322 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
8321 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
8323 // #
8322 // #
8324 // # This program is dual-licensed. If you wish to learn more about the
8323 // # This program is dual-licensed. If you wish to learn more about the
8325 // # AppEnlight Enterprise Edition, including its added features, Support
8324 // # AppEnlight Enterprise Edition, including its added features, Support
8326 // # services, and proprietary license terms, please see
8325 // # services, and proprietary license terms, please see
8327 // # https://rhodecode.com/licenses/
8326 // # https://rhodecode.com/licenses/
8328
8327
8329 angular.module('appenlight.controllers')
8328 angular.module('appenlight.controllers')
8330 .controller('ApplicationsPurgeLogsController', ApplicationsPurgeLogsController)
8329 .controller('ApplicationsPurgeLogsController', ApplicationsPurgeLogsController)
8331
8330
8332 ApplicationsPurgeLogsController.$inject = ['applicationsResource', 'sectionViewResource', 'logsNoIdResource'];
8331 ApplicationsPurgeLogsController.$inject = ['applicationsResource', 'sectionViewResource', 'logsNoIdResource'];
8333
8332
8334 function ApplicationsPurgeLogsController(applicationsResource, sectionViewResource, logsNoIdResource) {
8333 function ApplicationsPurgeLogsController(applicationsResource, sectionViewResource, logsNoIdResource) {
8335
8334
8336 var vm = this;
8335 var vm = this;
8337 vm.loading = {applications: true};
8336 vm.loading = {applications: true};
8338
8337
8339 vm.namespace = null;
8338 vm.namespace = null;
8340 vm.selectedResource = null;
8339 vm.selectedResource = null;
8341 vm.commonNamespaces = [];
8340 vm.commonNamespaces = [];
8342
8341
8343 vm.applications = applicationsResource.query({'type':'update_reports'}, function () {
8342 vm.applications = applicationsResource.query({'type':'update_reports'}, function () {
8344 vm.loading.applications = false;
8343 vm.loading.applications = false;
8345 vm.selectedResource = vm.applications[0].resource_id;
8344 vm.selectedResource = vm.applications[0].resource_id;
8346 vm.getCommonKeys();
8345 vm.getCommonKeys();
8347 });
8346 });
8348
8347
8349 /**
8348 /**
8350 * Fetches most commonly used tags in logs
8349 * Fetches most commonly used tags in logs
8351 */
8350 */
8352 vm.getCommonKeys = function () {
8351 vm.getCommonKeys = function () {
8353 sectionViewResource.get({
8352 sectionViewResource.get({
8354 section: 'logs_section',
8353 section: 'logs_section',
8355 view: 'common_tags',
8354 view: 'common_tags',
8356 resource: vm.selectedResource
8355 resource: vm.selectedResource
8357 }, function (data) {
8356 }, function (data) {
8358 vm.commonNamespaces = data['namespaces']
8357 vm.commonNamespaces = data['namespaces']
8359 });
8358 });
8360 };
8359 };
8361
8360
8362 vm.purgeLogs = function () {
8361 vm.purgeLogs = function () {
8363 vm.loading.applications = true;
8362 vm.loading.applications = true;
8364 logsNoIdResource.delete({resource:vm.selectedResource,
8363 logsNoIdResource.delete({resource:vm.selectedResource,
8365 namespace: vm.namespace}, function(){
8364 namespace: vm.namespace}, function(){
8366 vm.loading.applications = false;
8365 vm.loading.applications = false;
8367 });
8366 });
8368 }
8367 }
8369 }
8368 }
8370
8369
8371 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
8370 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
8372 // #
8371 // #
8373 // # This program is free software: you can redistribute it and/or modify
8372 // # This program is free software: you can redistribute it and/or modify
8374 // # it under the terms of the GNU Affero General Public License, version 3
8373 // # it under the terms of the GNU Affero General Public License, version 3
8375 // # (only), as published by the Free Software Foundation.
8374 // # (only), as published by the Free Software Foundation.
8376 // #
8375 // #
8377 // # This program is distributed in the hope that it will be useful,
8376 // # This program is distributed in the hope that it will be useful,
8378 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
8377 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
8379 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
8378 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
8380 // # GNU General Public License for more details.
8379 // # GNU General Public License for more details.
8381 // #
8380 // #
8382 // # You should have received a copy of the GNU Affero General Public License
8381 // # You should have received a copy of the GNU Affero General Public License
8383 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
8382 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
8384 // #
8383 // #
8385 // # This program is dual-licensed. If you wish to learn more about the
8384 // # This program is dual-licensed. If you wish to learn more about the
8386 // # AppEnlight Enterprise Edition, including its added features, Support
8385 // # AppEnlight Enterprise Edition, including its added features, Support
8387 // # services, and proprietary license terms, please see
8386 // # services, and proprietary license terms, please see
8388 // # https://rhodecode.com/licenses/
8387 // # https://rhodecode.com/licenses/
8389
8388
8390 angular.module('appenlight.controllers').controller('EventsController', EventsController);
8389 angular.module('appenlight.controllers').controller('EventsController', EventsController);
8391
8390
8392 EventsController.$inject = ['eventsNoIdResource', 'eventsResource'];
8391 EventsController.$inject = ['eventsNoIdResource', 'eventsResource'];
8393
8392
8394 function EventsController(eventsNoIdResource, eventsResource) {
8393 function EventsController(eventsNoIdResource, eventsResource) {
8395 console.info('EventsController');
8394 console.info('EventsController');
8396 var vm = this;
8395 var vm = this;
8397
8396
8398 vm.loading = {events: true};
8397 vm.loading = {events: true};
8399
8398
8400 vm.events = eventsNoIdResource.query(
8399 vm.events = eventsNoIdResource.query(
8401 {key: 'events'},
8400 {key: 'events'},
8402 function (data) {
8401 function (data) {
8403 vm.loading.events = false;
8402 vm.loading.events = false;
8404 });
8403 });
8405
8404
8406
8405
8407 vm.closeEvent = function (event) {
8406 vm.closeEvent = function (event) {
8408
8407
8409 eventsResource.update({eventId: event.id}, {status: 0}, function (data) {
8408 eventsResource.update({eventId: event.id}, {status: 0}, function (data) {
8410 event.status = 0;
8409 event.status = 0;
8411 });
8410 });
8412 }
8411 }
8413
8412
8414 }
8413 }
8415
8414
8416 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
8415 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
8417 // #
8416 // #
8418 // # This program is free software: you can redistribute it and/or modify
8417 // # This program is free software: you can redistribute it and/or modify
8419 // # it under the terms of the GNU Affero General Public License, version 3
8418 // # it under the terms of the GNU Affero General Public License, version 3
8420 // # (only), as published by the Free Software Foundation.
8419 // # (only), as published by the Free Software Foundation.
8421 // #
8420 // #
8422 // # This program is distributed in the hope that it will be useful,
8421 // # This program is distributed in the hope that it will be useful,
8423 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
8422 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
8424 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
8423 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
8425 // # GNU General Public License for more details.
8424 // # GNU General Public License for more details.
8426 // #
8425 // #
8427 // # You should have received a copy of the GNU Affero General Public License
8426 // # You should have received a copy of the GNU Affero General Public License
8428 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
8427 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
8429 // #
8428 // #
8430 // # This program is dual-licensed. If you wish to learn more about the
8429 // # This program is dual-licensed. If you wish to learn more about the
8431 // # AppEnlight Enterprise Edition, including its added features, Support
8430 // # AppEnlight Enterprise Edition, including its added features, Support
8432 // # services, and proprietary license terms, please see
8431 // # services, and proprietary license terms, please see
8433 // # https://rhodecode.com/licenses/
8432 // # https://rhodecode.com/licenses/
8434
8433
8435 angular.module('appenlight.controllers')
8434 angular.module('appenlight.controllers')
8436 .controller('IndexDashboardController', IndexDashboardController);
8435 .controller('IndexDashboardController', IndexDashboardController);
8437
8436
8438 IndexDashboardController.$inject = ['$rootScope', '$scope', '$location','$cookies', '$interval', 'stateHolder', 'applicationsPropertyResource', 'AeConfig'];
8437 IndexDashboardController.$inject = ['$rootScope', '$scope', '$location','$cookies', '$interval', 'stateHolder', 'applicationsPropertyResource', 'AeConfig'];
8439
8438
8440 function IndexDashboardController($rootScope, $scope, $location, $cookies, $interval, stateHolder, applicationsPropertyResource, AeConfig) {
8439 function IndexDashboardController($rootScope, $scope, $location, $cookies, $interval, stateHolder, applicationsPropertyResource, AeConfig) {
8441 var vm = this;
8440 var vm = this;
8442 stateHolder.section = 'dashboard';
8441 stateHolder.section = 'dashboard';
8443 vm.timeOptions = {};
8442 vm.timeOptions = {};
8444 var allowed = ['1h', '4h', '12h', '24h', '1w', '2w', '1M'];
8443 var allowed = ['1h', '4h', '12h', '24h', '1w', '2w', '1M'];
8445 _.each(allowed, function (key) {
8444 _.each(allowed, function (key) {
8446 if (allowed.indexOf(key) !== -1) {
8445 if (allowed.indexOf(key) !== -1) {
8447 vm.timeOptions[key] = AeConfig.timeOptions[key];
8446 vm.timeOptions[key] = AeConfig.timeOptions[key];
8448 }
8447 }
8449 });
8448 });
8450 vm.stateHolder = stateHolder;
8449 vm.stateHolder = stateHolder;
8451 vm.urls = AeConfig.urls;
8450 vm.urls = AeConfig.urls;
8452 vm.applications = stateHolder.AeUser.applications_map;
8451 vm.applications = stateHolder.AeUser.applications_map;
8453 vm.show_dashboard = false;
8452 vm.show_dashboard = false;
8454 vm.resource = null;
8453 vm.resource = null;
8455 vm.graphType = {selected: null};
8454 vm.graphType = {selected: null};
8456 vm.timeSpan = vm.timeOptions['1h'];
8455 vm.timeSpan = vm.timeOptions['1h'];
8457 vm.trendingReports = [];
8456 vm.trendingReports = [];
8458 vm.exceptions = 0;
8457 vm.exceptions = 0;
8459 vm.satisfyingRequests = 0;
8458 vm.satisfyingRequests = 0;
8460 vm.toleratedRequests = 0;
8459 vm.toleratedRequests = 0;
8461 vm.frustratingRequests = 0;
8460 vm.frustratingRequests = 0;
8462 vm.uptimeStats = 0;
8461 vm.uptimeStats = 0;
8463 vm.apdexStats = [];
8462 vm.apdexStats = [];
8464 vm.seriesRequestsData = [];
8463 vm.seriesRequestsData = [];
8465 vm.seriesMetricsData = [];
8464 vm.seriesMetricsData = [];
8466 vm.seriesSlowData = [];
8465 vm.seriesSlowData = [];
8467 vm.slowCalls = [];
8466 vm.slowCalls = [];
8468 vm.slowURIS = [];
8467 vm.slowURIS = [];
8469
8468
8470 vm.reportChartConfig = {
8469 vm.reportChartConfig = {
8471 data: {
8470 data: {
8472 json: [],
8471 json: [],
8473 xFormat: '%Y-%m-%dT%H:%M:%S'
8472 xFormat: '%Y-%m-%dT%H:%M:%S'
8474 },
8473 },
8475 color: {
8474 color: {
8476 pattern: ['#6baed6', '#e6550d', '#74c476', '#fdd0a2', '#8c564b']
8475 pattern: ['#6baed6', '#e6550d', '#74c476', '#fdd0a2', '#8c564b']
8477 },
8476 },
8478 axis: {
8477 axis: {
8479 x: {
8478 x: {
8480 type: 'timeseries',
8479 type: 'timeseries',
8481 tick: {
8480 tick: {
8482 culling: {
8481 culling: {
8483 max: 6 // the number of tick texts will be adjusted to less than this value
8482 max: 6 // the number of tick texts will be adjusted to less than this value
8484 },
8483 },
8485 format: '%Y-%m-%d %H:%M'
8484 format: '%Y-%m-%d %H:%M'
8486 }
8485 }
8487 },
8486 },
8488 y: {
8487 y: {
8489 tick: {
8488 tick: {
8490 count: 5,
8489 count: 5,
8491 format: d3.format('.2s')
8490 format: d3.format('.2s')
8492 }
8491 }
8493 }
8492 }
8494 },
8493 },
8495 subchart: {
8494 subchart: {
8496 show: true,
8495 show: true,
8497 size: {
8496 size: {
8498 height: 20
8497 height: 20
8499 }
8498 }
8500 },
8499 },
8501 size: {
8500 size: {
8502 height: 250
8501 height: 250
8503 },
8502 },
8504 zoom: {
8503 zoom: {
8505 rescale: true
8504 rescale: true
8506 },
8505 },
8507 grid: {
8506 grid: {
8508 x: {
8507 x: {
8509 show: true
8508 show: true
8510 },
8509 },
8511 y: {
8510 y: {
8512 show: true
8511 show: true
8513 }
8512 }
8514 },
8513 },
8515 tooltip: {
8514 tooltip: {
8516 format: {
8515 format: {
8517 title: function (d) {
8516 title: function (d) {
8518 return '' + d;
8517 return '' + d;
8519 },
8518 },
8520 value: function (v) {
8519 value: function (v) {
8521 return v
8520 return v
8522 }
8521 }
8523 }
8522 }
8524 }
8523 }
8525 };
8524 };
8526 vm.reportChartData = {};
8525 vm.reportChartData = {};
8527
8526
8528 vm.reportSlowChartConfig = {
8527 vm.reportSlowChartConfig = {
8529 data: {
8528 data: {
8530 json: [],
8529 json: [],
8531 xFormat: '%Y-%m-%dT%H:%M:%S'
8530 xFormat: '%Y-%m-%dT%H:%M:%S'
8532 },
8531 },
8533 color: {
8532 color: {
8534 pattern: ['#6baed6', '#e6550d', '#74c476', '#fdd0a2', '#8c564b']
8533 pattern: ['#6baed6', '#e6550d', '#74c476', '#fdd0a2', '#8c564b']
8535 },
8534 },
8536 axis: {
8535 axis: {
8537 x: {
8536 x: {
8538 type: 'timeseries',
8537 type: 'timeseries',
8539 tick: {
8538 tick: {
8540 culling: {
8539 culling: {
8541 max: 6 // the number of tick texts will be adjusted to less than this value
8540 max: 6 // the number of tick texts will be adjusted to less than this value
8542 },
8541 },
8543 format: '%Y-%m-%d %H:%M'
8542 format: '%Y-%m-%d %H:%M'
8544 }
8543 }
8545 },
8544 },
8546 y: {
8545 y: {
8547 tick: {
8546 tick: {
8548 count: 5,
8547 count: 5,
8549 format: d3.format('.2s')
8548 format: d3.format('.2s')
8550 }
8549 }
8551 }
8550 }
8552 },
8551 },
8553 subchart: {
8552 subchart: {
8554 show: true,
8553 show: true,
8555 size: {
8554 size: {
8556 height: 20
8555 height: 20
8557 }
8556 }
8558 },
8557 },
8559 size: {
8558 size: {
8560 height: 250
8559 height: 250
8561 },
8560 },
8562 zoom: {
8561 zoom: {
8563 rescale: true
8562 rescale: true
8564 },
8563 },
8565 grid: {
8564 grid: {
8566 x: {
8565 x: {
8567 show: true
8566 show: true
8568 },
8567 },
8569 y: {
8568 y: {
8570 show: true
8569 show: true
8571 }
8570 }
8572 },
8571 },
8573 tooltip: {
8572 tooltip: {
8574 format: {
8573 format: {
8575 title: function (d) {
8574 title: function (d) {
8576 return '' + d;
8575 return '' + d;
8577 },
8576 },
8578 value: function (v) {
8577 value: function (v) {
8579 return v
8578 return v
8580 }
8579 }
8581 }
8580 }
8582 }
8581 }
8583 };
8582 };
8584 vm.reportSlowChartData = {};
8583 vm.reportSlowChartData = {};
8585
8584
8586 vm.metricsChartConfig = {
8585 vm.metricsChartConfig = {
8587 data: {
8586 data: {
8588 json: [],
8587 json: [],
8589 xFormat: '%Y-%m-%dT%H:%M:%S',
8588 xFormat: '%Y-%m-%dT%H:%M:%S',
8590 keys: {
8589 keys: {
8591 x: 'x',
8590 x: 'x',
8592 value: ["main", "sql", "nosql", "tmpl", "remote", "custom"]
8591 value: ["main", "sql", "nosql", "tmpl", "remote", "custom"]
8593 },
8592 },
8594 names: {
8593 names: {
8595 main: 'View/Application logic',
8594 main: 'View/Application logic',
8596 sql: 'Relational database queries',
8595 sql: 'Relational database queries',
8597 nosql: 'NoSql datastore calls',
8596 nosql: 'NoSql datastore calls',
8598 tmpl: 'Template rendering',
8597 tmpl: 'Template rendering',
8599 custom: 'Custom timed calls',
8598 custom: 'Custom timed calls',
8600 remote: 'Requests to remote resources'
8599 remote: 'Requests to remote resources'
8601 },
8600 },
8602 type: 'area',
8601 type: 'area',
8603 groups: [["main", "sql", "nosql", "remote", "custom", "tmpl"]],
8602 groups: [["main", "sql", "nosql", "remote", "custom", "tmpl"]],
8604 order: null
8603 order: null
8605 },
8604 },
8606 color: {
8605 color: {
8607 pattern: ['#6baed6', '#c7e9c0', '#fd8d3c', '#d6616b', '#ffcc00', '#c6dbef']
8606 pattern: ['#6baed6', '#c7e9c0', '#fd8d3c', '#d6616b', '#ffcc00', '#c6dbef']
8608 },
8607 },
8609 axis: {
8608 axis: {
8610 x: {
8609 x: {
8611 type: 'timeseries',
8610 type: 'timeseries',
8612 tick: {
8611 tick: {
8613 culling: {
8612 culling: {
8614 max: 6 // the number of tick texts will be adjusted to less than this value
8613 max: 6 // the number of tick texts will be adjusted to less than this value
8615 },
8614 },
8616 format: '%Y-%m-%d %H:%M'
8615 format: '%Y-%m-%d %H:%M'
8617 }
8616 }
8618 },
8617 },
8619 y: {
8618 y: {
8620 tick: {
8619 tick: {
8621 count: 5,
8620 count: 5,
8622 format: d3.format('.2f')
8621 format: d3.format('.2f')
8623 }
8622 }
8624 }
8623 }
8625 },
8624 },
8626 point: {
8625 point: {
8627 show: false
8626 show: false
8628 },
8627 },
8629 subchart: {
8628 subchart: {
8630 show: true,
8629 show: true,
8631 size: {
8630 size: {
8632 height: 20
8631 height: 20
8633 }
8632 }
8634 },
8633 },
8635 size: {
8634 size: {
8636 height: 350
8635 height: 350
8637 },
8636 },
8638 zoom: {
8637 zoom: {
8639 rescale: true
8638 rescale: true
8640 },
8639 },
8641 grid: {
8640 grid: {
8642 x: {
8641 x: {
8643 show: true
8642 show: true
8644 },
8643 },
8645 y: {
8644 y: {
8646 show: true
8645 show: true
8647 }
8646 }
8648 },
8647 },
8649 tooltip: {
8648 tooltip: {
8650 format: {
8649 format: {
8651 title: function (d) {
8650 title: function (d) {
8652 return '' + d;
8651 return '' + d;
8653 },
8652 },
8654 value: function (v) {
8653 value: function (v) {
8655 return v
8654 return v
8656 }
8655 }
8657 }
8656 }
8658 }
8657 }
8659 };
8658 };
8660 vm.metricsChartData = {};
8659 vm.metricsChartData = {};
8661
8660
8662 vm.responseChartConfig = {
8661 vm.responseChartConfig = {
8663 data: {
8662 data: {
8664 json: [],
8663 json: [],
8665 xFormat: '%Y-%m-%dT%H:%M:%S'
8664 xFormat: '%Y-%m-%dT%H:%M:%S'
8666 },
8665 },
8667 color: {
8666 color: {
8668 pattern: ['#d6616b', '#6baed6', '#fd8d3c']
8667 pattern: ['#d6616b', '#6baed6', '#fd8d3c']
8669 },
8668 },
8670 axis: {
8669 axis: {
8671 x: {
8670 x: {
8672 type: 'timeseries',
8671 type: 'timeseries',
8673 tick: {
8672 tick: {
8674 culling: {
8673 culling: {
8675 max: 6 // the number of tick texts will be adjusted to less than this value
8674 max: 6 // the number of tick texts will be adjusted to less than this value
8676 },
8675 },
8677 format: '%Y-%m-%d %H:%M'
8676 format: '%Y-%m-%d %H:%M'
8678 }
8677 }
8679 },
8678 },
8680 y: {
8679 y: {
8681 tick: {
8680 tick: {
8682 count: 5,
8681 count: 5,
8683 format: d3.format('.2f')
8682 format: d3.format('.2f')
8684 }
8683 }
8685 }
8684 }
8686 },
8685 },
8687 point: {
8686 point: {
8688 show: false
8687 show: false
8689 },
8688 },
8690 subchart: {
8689 subchart: {
8691 show: true,
8690 show: true,
8692 size: {
8691 size: {
8693 height: 20
8692 height: 20
8694 }
8693 }
8695 },
8694 },
8696 size: {
8695 size: {
8697 height: 350
8696 height: 350
8698 },
8697 },
8699 zoom: {
8698 zoom: {
8700 rescale: true
8699 rescale: true
8701 },
8700 },
8702 grid: {
8701 grid: {
8703 x: {
8702 x: {
8704 show: true
8703 show: true
8705 },
8704 },
8706 y: {
8705 y: {
8707 show: true
8706 show: true
8708 }
8707 }
8709 },
8708 },
8710 tooltip: {
8709 tooltip: {
8711 format: {
8710 format: {
8712 title: function (d) {
8711 title: function (d) {
8713 return '' + d;
8712 return '' + d;
8714 },
8713 },
8715 value: function (v) {
8714 value: function (v) {
8716 return v
8715 return v
8717 }
8716 }
8718 }
8717 }
8719 }
8718 }
8720 };
8719 };
8721 vm.responseChartData = {};
8720 vm.responseChartData = {};
8722
8721
8723 vm.requestsChartConfig = {
8722 vm.requestsChartConfig = {
8724 data: {
8723 data: {
8725 json: [],
8724 json: [],
8726 xFormat: '%Y-%m-%dT%H:%M:%S'
8725 xFormat: '%Y-%m-%dT%H:%M:%S'
8727 },
8726 },
8728 color: {
8727 color: {
8729 pattern: ['#d6616b', '#6baed6', '#fd8d3c']
8728 pattern: ['#d6616b', '#6baed6', '#fd8d3c']
8730 },
8729 },
8731 axis: {
8730 axis: {
8732 x: {
8731 x: {
8733 type: 'timeseries',
8732 type: 'timeseries',
8734 tick: {
8733 tick: {
8735 culling: {
8734 culling: {
8736 max: 6 // the number of tick texts will be adjusted to less than this value
8735 max: 6 // the number of tick texts will be adjusted to less than this value
8737 },
8736 },
8738 format: '%Y-%m-%d %H:%M'
8737 format: '%Y-%m-%d %H:%M'
8739 }
8738 }
8740 },
8739 },
8741 y: {
8740 y: {
8742 tick: {
8741 tick: {
8743 count: 5,
8742 count: 5,
8744 format: d3.format('.2f')
8743 format: d3.format('.2f')
8745 }
8744 }
8746 }
8745 }
8747 },
8746 },
8748 point: {
8747 point: {
8749 show: false
8748 show: false
8750 },
8749 },
8751 subchart: {
8750 subchart: {
8752 show: true,
8751 show: true,
8753 size: {
8752 size: {
8754 height: 20
8753 height: 20
8755 }
8754 }
8756 },
8755 },
8757 size: {
8756 size: {
8758 height: 350
8757 height: 350
8759 },
8758 },
8760 zoom: {
8759 zoom: {
8761 rescale: true
8760 rescale: true
8762 },
8761 },
8763 grid: {
8762 grid: {
8764 x: {
8763 x: {
8765 show: true
8764 show: true
8766 },
8765 },
8767 y: {
8766 y: {
8768 show: true
8767 show: true
8769 }
8768 }
8770 },
8769 },
8771 tooltip: {
8770 tooltip: {
8772 format: {
8771 format: {
8773 title: function (d) {
8772 title: function (d) {
8774 return '' + d;
8773 return '' + d;
8775 },
8774 },
8776 value: function (v) {
8775 value: function (v) {
8777 return v
8776 return v
8778 }
8777 }
8779 }
8778 }
8780 }
8779 }
8781 };
8780 };
8782 vm.requestsChartData = {};
8781 vm.requestsChartData = {};
8783
8782
8784 vm.loading = {
8783 vm.loading = {
8785 'apdex': true,
8784 'apdex': true,
8786 'reports': true,
8785 'reports': true,
8787 'graphs': true,
8786 'graphs': true,
8788 'slowCalls': true,
8787 'slowCalls': true,
8789 'slowURIS': true,
8788 'slowURIS': true,
8790 'requestsBreakdown': true,
8789 'requestsBreakdown': true,
8791 'series': true
8790 'series': true
8792 };
8791 };
8793 vm.stream = {paused: false, filtered: false, messages: [], reports: []};
8792 vm.stream = {paused: false, filtered: false, messages: [], reports: []};
8794
8793
8795 $rootScope.$on('channelstream-message.front_dashboard.new_topic', function(event, message){
8794 $rootScope.$on('channelstream-message.front_dashboard.new_topic', function(event, message){
8796 var ws_report = message.message.report;
8795 var ws_report = message.message.report;
8797 if (ws_report.http_status != 500) {
8796 if (ws_report.http_status != 500) {
8798 return
8797 return
8799 }
8798 }
8800 if (vm.stream.paused == true) {
8799 if (vm.stream.paused == true) {
8801 return
8800 return
8802 }
8801 }
8803 if (vm.stream.filtered && ws_report.resource_id != vm.resource) {
8802 if (vm.stream.filtered && ws_report.resource_id != vm.resource) {
8804 return
8803 return
8805 }
8804 }
8806 var should_insert = true;
8805 var should_insert = true;
8807 _.each(vm.stream.reports, function (report) {
8806 _.each(vm.stream.reports, function (report) {
8808 if (report.report_id == ws_report.report_id) {
8807 if (report.report_id == ws_report.report_id) {
8809 report.occurences = ws_report.occurences;
8808 report.occurences = ws_report.occurences;
8810 should_insert = false;
8809 should_insert = false;
8811 }
8810 }
8812 });
8811 });
8813 if (should_insert) {
8812 if (should_insert) {
8814 if (vm.stream.reports.length > 7) {
8813 if (vm.stream.reports.length > 7) {
8815 vm.stream.reports.pop();
8814 vm.stream.reports.pop();
8816 }
8815 }
8817 vm.stream.reports.unshift(ws_report);
8816 vm.stream.reports.unshift(ws_report);
8818 }
8817 }
8819 });
8818 });
8820
8819
8821 vm.determineStartState = function () {
8820 vm.determineStartState = function () {
8822 if (stateHolder.AeUser.applications.length) {
8821 if (stateHolder.AeUser.applications.length) {
8823 vm.resource = Number($location.search().resource);
8822 vm.resource = Number($location.search().resource);
8824
8823
8825 if (!vm.resource){
8824 if (!vm.resource){
8826 var cookieResource = $cookies.getObject('resource');
8825 var cookieResource = $cookies.getObject('resource');
8827
8826
8828
8827
8829 if (cookieResource) {
8828 if (cookieResource) {
8830 vm.resource = cookieResource;
8829 vm.resource = cookieResource;
8831 }
8830 }
8832 else{
8831 else{
8833 vm.resource = stateHolder.AeUser.applications[0].resource_id;
8832 vm.resource = stateHolder.AeUser.applications[0].resource_id;
8834 }
8833 }
8835 }
8834 }
8836 }
8835 }
8837
8836
8838 var timespan = $location.search().timespan;
8837 var timespan = $location.search().timespan;
8839
8838
8840 if(_.has(vm.timeOptions, timespan)){
8839 if(_.has(vm.timeOptions, timespan)){
8841 vm.timeSpan = vm.timeOptions[timespan];
8840 vm.timeSpan = vm.timeOptions[timespan];
8842 }
8841 }
8843 else{
8842 else{
8844 vm.timeSpan = vm.timeOptions['1h'];
8843 vm.timeSpan = vm.timeOptions['1h'];
8845 }
8844 }
8846
8845
8847 var graphType = $location.search().graphtype;
8846 var graphType = $location.search().graphtype;
8848 if(!graphType){
8847 if(!graphType){
8849 vm.graphType = {selected: 'metrics_graphs'};
8848 vm.graphType = {selected: 'metrics_graphs'};
8850 }
8849 }
8851 else{
8850 else{
8852 vm.graphType = {selected: graphType};
8851 vm.graphType = {selected: graphType};
8853 }
8852 }
8854 vm.updateSearchParams();
8853 vm.updateSearchParams();
8855 };
8854 };
8856
8855
8857 vm.updateSearchParams = function () {
8856 vm.updateSearchParams = function () {
8858 $location.search('resource', vm.resource);
8857 $location.search('resource', vm.resource);
8859 $location.search('timespan', vm.timeSpan.key);
8858 $location.search('timespan', vm.timeSpan.key);
8860 $location.search('graphtype', vm.graphType.selected);
8859 $location.search('graphtype', vm.graphType.selected);
8861 stateHolder.resource = vm.resource;
8860 stateHolder.resource = vm.resource;
8862 if (vm.resource){
8861 if (vm.resource){
8863 $cookies.putObject('resource', vm.resource,
8862 $cookies.putObject('resource', vm.resource,
8864 {expires:new Date(3000, 1, 1)});
8863 {expires:new Date(3000, 1, 1)});
8865 }
8864 }
8866 };
8865 };
8867
8866
8868 vm.refreshData = function () {
8867 vm.refreshData = function () {
8869 vm.fetchApdexStats();
8868 vm.fetchApdexStats();
8870 vm.fetchTrendingReports();
8869 vm.fetchTrendingReports();
8871 vm.fetchMetrics();
8870 vm.fetchMetrics();
8872 vm.fetchRequestsBreakdown();
8871 vm.fetchRequestsBreakdown();
8873 vm.fetchSlowCalls();
8872 vm.fetchSlowCalls();
8874 };
8873 };
8875
8874
8876 vm.changedTimeSpan = function(){
8875 vm.changedTimeSpan = function(){
8877 vm.startDateFilter = timeSpanToStartDate(vm.timeSpan.key);
8876 vm.startDateFilter = timeSpanToStartDate(vm.timeSpan.key);
8878 vm.refreshData();
8877 vm.refreshData();
8879 };
8878 };
8880
8879
8881 var intervalId = $interval(function () {
8880 var intervalId = $interval(function () {
8882 if (_.contains(['30m', "1h"], vm.timeSpan.key)) {
8881 if (_.contains(['30m', "1h"], vm.timeSpan.key)) {
8883 // don't do anything if window is unfocused
8882 // don't do anything if window is unfocused
8884 if(document.hidden === true){
8883 if(document.hidden === true){
8885 return ;
8884 return ;
8886 }
8885 }
8887 vm.refreshData();
8886 vm.refreshData();
8888 }
8887 }
8889 }, 60000);
8888 }, 60000);
8890
8889
8891 vm.fetchApdexStats = function () {
8890 vm.fetchApdexStats = function () {
8892 vm.loading.apdex = true;
8891 vm.loading.apdex = true;
8893 vm.apdexStats = applicationsPropertyResource.query({
8892 vm.apdexStats = applicationsPropertyResource.query({
8894 'key': 'apdex_stats',
8893 'key': 'apdex_stats',
8895 'resourceId': vm.resource,
8894 'resourceId': vm.resource,
8896 "start_date": timeSpanToStartDate(vm.timeSpan.key)
8895 "start_date": timeSpanToStartDate(vm.timeSpan.key)
8897 },
8896 },
8898 function (data) {
8897 function (data) {
8899 vm.loading.apdex = false;
8898 vm.loading.apdex = false;
8900
8899
8901 vm.exceptions = _.reduce(data, function (memo, row) {
8900 vm.exceptions = _.reduce(data, function (memo, row) {
8902 return memo + row.errors;
8901 return memo + row.errors;
8903 }, 0);
8902 }, 0);
8904 vm.satisfyingRequests = _.reduce(data, function (memo, row) {
8903 vm.satisfyingRequests = _.reduce(data, function (memo, row) {
8905 return memo + row.satisfying_requests;
8904 return memo + row.satisfying_requests;
8906 }, 0);
8905 }, 0);
8907 vm.toleratedRequests = _.reduce(data, function (memo, row) {
8906 vm.toleratedRequests = _.reduce(data, function (memo, row) {
8908 return memo + row.tolerated_requests;
8907 return memo + row.tolerated_requests;
8909 }, 0);
8908 }, 0);
8910 vm.frustratingRequests = _.reduce(data, function (memo, row) {
8909 vm.frustratingRequests = _.reduce(data, function (memo, row) {
8911 return memo + row.frustrating_requests;
8910 return memo + row.frustrating_requests;
8912 }, 0);
8911 }, 0);
8913 if (data.length) {
8912 if (data.length) {
8914 vm.uptimeStats = data[0].uptime;
8913 vm.uptimeStats = data[0].uptime;
8915 }
8914 }
8916
8915
8917 },
8916 },
8918 function () {
8917 function () {
8919 vm.loading.apdex = false;
8918 vm.loading.apdex = false;
8920 }
8919 }
8921 );
8920 );
8922 }
8921 }
8923
8922
8924 vm.fetchMetrics = function () {
8923 vm.fetchMetrics = function () {
8925 vm.loading.series = true;
8924 vm.loading.series = true;
8926 applicationsPropertyResource.query({
8925 applicationsPropertyResource.query({
8927 'resourceId': vm.resource,
8926 'resourceId': vm.resource,
8928 'key': vm.graphType.selected,
8927 'key': vm.graphType.selected,
8929 "start_date": timeSpanToStartDate(vm.timeSpan.key)
8928 "start_date": timeSpanToStartDate(vm.timeSpan.key)
8930 }, function (data) {
8929 }, function (data) {
8931 if (vm.graphType.selected == 'metrics_graphs') {
8930 if (vm.graphType.selected == 'metrics_graphs') {
8932 vm.metricsChartData = {
8931 vm.metricsChartData = {
8933 json: data,
8932 json: data,
8934 xFormat: '%Y-%m-%dT%H:%M:%S',
8933 xFormat: '%Y-%m-%dT%H:%M:%S',
8935 keys: {
8934 keys: {
8936 x: 'x',
8935 x: 'x',
8937 value: ["main", "sql", "nosql", "tmpl", "remote", "custom"]
8936 value: ["main", "sql", "nosql", "tmpl", "remote", "custom"]
8938 },
8937 },
8939 names: {
8938 names: {
8940 main: 'View/Application logic',
8939 main: 'View/Application logic',
8941 sql: 'Relational database queries',
8940 sql: 'Relational database queries',
8942 nosql: 'NoSql datastore calls',
8941 nosql: 'NoSql datastore calls',
8943 tmpl: 'Template rendering',
8942 tmpl: 'Template rendering',
8944 custom: 'Custom timed calls',
8943 custom: 'Custom timed calls',
8945 remote: 'Requests to remote resources'
8944 remote: 'Requests to remote resources'
8946 },
8945 },
8947 type: 'area',
8946 type: 'area',
8948 groups: [["main", "sql", "nosql", "remote", "custom", "tmpl"]],
8947 groups: [["main", "sql", "nosql", "remote", "custom", "tmpl"]],
8949 order: null
8948 order: null
8950 };
8949 };
8951 }
8950 }
8952 else if (vm.graphType.selected == 'report_graphs') {
8951 else if (vm.graphType.selected == 'report_graphs') {
8953 vm.reportChartData = {
8952 vm.reportChartData = {
8954 json: data,
8953 json: data,
8955 xFormat: '%Y-%m-%dT%H:%M:%S',
8954 xFormat: '%Y-%m-%dT%H:%M:%S',
8956 keys: {
8955 keys: {
8957 x: 'x',
8956 x: 'x',
8958 value: ["not_found", "report"]
8957 value: ["not_found", "report"]
8959 },
8958 },
8960 names: {
8959 names: {
8961 report: 'Errors',
8960 report: 'Errors',
8962 not_found: '404\'s requests'
8961 not_found: '404\'s requests'
8963 },
8962 },
8964 type: 'bar'
8963 type: 'bar'
8965 };
8964 };
8966 }
8965 }
8967 else if (vm.graphType.selected == 'slow_report_graphs') {
8966 else if (vm.graphType.selected == 'slow_report_graphs') {
8968 vm.reportSlowChartData = {
8967 vm.reportSlowChartData = {
8969 json: data,
8968 json: data,
8970 xFormat: '%Y-%m-%dT%H:%M:%S',
8969 xFormat: '%Y-%m-%dT%H:%M:%S',
8971 keys: {
8970 keys: {
8972 x: 'x',
8971 x: 'x',
8973 value: ["slow_report"]
8972 value: ["slow_report"]
8974 },
8973 },
8975 names: {
8974 names: {
8976 slow_report: 'Slow reports'
8975 slow_report: 'Slow reports'
8977 },
8976 },
8978 type: 'bar'
8977 type: 'bar'
8979 };
8978 };
8980 }
8979 }
8981 else if (vm.graphType.selected == 'response_graphs') {
8980 else if (vm.graphType.selected == 'response_graphs') {
8982 vm.responseChartData = {
8981 vm.responseChartData = {
8983 json: data,
8982 json: data,
8984 xFormat: '%Y-%m-%dT%H:%M:%S',
8983 xFormat: '%Y-%m-%dT%H:%M:%S',
8985 keys: {
8984 keys: {
8986 x: 'x',
8985 x: 'x',
8987 value: ["today", "days_ago_2", "days_ago_7"]
8986 value: ["today", "days_ago_2", "days_ago_7"]
8988 },
8987 },
8989 names: {
8988 names: {
8990 today: 'Today',
8989 today: 'Today',
8991 "days_ago_2": '2 days ago',
8990 "days_ago_2": '2 days ago',
8992 "days_ago_7": '7 days ago'
8991 "days_ago_7": '7 days ago'
8993 }
8992 }
8994 };
8993 };
8995 }
8994 }
8996 else if (vm.graphType.selected == 'requests_graphs') {
8995 else if (vm.graphType.selected == 'requests_graphs') {
8997 vm.requestsChartData = {
8996 vm.requestsChartData = {
8998 json: data,
8997 json: data,
8999 xFormat: '%Y-%m-%dT%H:%M:%S',
8998 xFormat: '%Y-%m-%dT%H:%M:%S',
9000 keys: {
8999 keys: {
9001 x: 'x',
9000 x: 'x',
9002 value: ["requests"]
9001 value: ["requests"]
9003 },
9002 },
9004 names: {
9003 names: {
9005 requests: 'Requests/s'
9004 requests: 'Requests/s'
9006 }
9005 }
9007 };
9006 };
9008 }
9007 }
9009 vm.loading.series = false;
9008 vm.loading.series = false;
9010 }, function(){
9009 }, function(){
9011 vm.loading.series = false;
9010 vm.loading.series = false;
9012 });
9011 });
9013 }
9012 }
9014
9013
9015 vm.fetchSlowCalls = function () {
9014 vm.fetchSlowCalls = function () {
9016 vm.loading.slowCalls = true;
9015 vm.loading.slowCalls = true;
9017 applicationsPropertyResource.query({
9016 applicationsPropertyResource.query({
9018 'resourceId': vm.resource,
9017 'resourceId': vm.resource,
9019 "start_date": timeSpanToStartDate(vm.timeSpan.key),
9018 "start_date": timeSpanToStartDate(vm.timeSpan.key),
9020 'key': 'slow_calls'
9019 'key': 'slow_calls'
9021 }, function (data) {
9020 }, function (data) {
9022 vm.slowCalls = data;
9021 vm.slowCalls = data;
9023 vm.loading.slowCalls = false;
9022 vm.loading.slowCalls = false;
9024 }, function () {
9023 }, function () {
9025 vm.loading.slowCalls = false;
9024 vm.loading.slowCalls = false;
9026 });
9025 });
9027 }
9026 }
9028
9027
9029 vm.fetchRequestsBreakdown = function () {
9028 vm.fetchRequestsBreakdown = function () {
9030 vm.loading.requestsBreakdown = true;
9029 vm.loading.requestsBreakdown = true;
9031 applicationsPropertyResource.query({
9030 applicationsPropertyResource.query({
9032 'resourceId': vm.resource,
9031 'resourceId': vm.resource,
9033 "start_date": timeSpanToStartDate(vm.timeSpan.key),
9032 "start_date": timeSpanToStartDate(vm.timeSpan.key),
9034 'key': 'requests_breakdown'
9033 'key': 'requests_breakdown'
9035 }, function (data) {
9034 }, function (data) {
9036 vm.requestsBreakdown = data;
9035 vm.requestsBreakdown = data;
9037 vm.loading.requestsBreakdown = false;
9036 vm.loading.requestsBreakdown = false;
9038 }, function () {
9037 }, function () {
9039 vm.loading.requestsBreakdown = false;
9038 vm.loading.requestsBreakdown = false;
9040 });
9039 });
9041 }
9040 }
9042
9041
9043 vm.fetchTrendingReports = function () {
9042 vm.fetchTrendingReports = function () {
9044
9043
9045 if (vm.graphType.selected == 'slow_report_graphs') {
9044 if (vm.graphType.selected == 'slow_report_graphs') {
9046 var report_type = 'slow';
9045 var report_type = 'slow';
9047 }
9046 }
9048 else {
9047 else {
9049 var report_type = 'error';
9048 var report_type = 'error';
9050 }
9049 }
9051
9050
9052 vm.loading.reports = true;
9051 vm.loading.reports = true;
9053 vm.trendingReports = applicationsPropertyResource.query({
9052 vm.trendingReports = applicationsPropertyResource.query({
9054 'key': 'trending_reports',
9053 'key': 'trending_reports',
9055 'resourceId': vm.resource,
9054 'resourceId': vm.resource,
9056 "start_date": timeSpanToStartDate(vm.timeSpan.key),
9055 "start_date": timeSpanToStartDate(vm.timeSpan.key),
9057 "report_type": report_type
9056 "report_type": report_type
9058 },
9057 },
9059 function () {
9058 function () {
9060 vm.loading.reports = false;
9059 vm.loading.reports = false;
9061 },
9060 },
9062 function () {
9061 function () {
9063 vm.loading.reports = false;
9062 vm.loading.reports = false;
9064 }
9063 }
9065 );
9064 );
9066 };
9065 };
9067
9066
9068 if (stateHolder.AeUser.applications.length){
9067 if (stateHolder.AeUser.applications.length){
9069 vm.show_dashboard = true;
9068 vm.show_dashboard = true;
9070 vm.determineStartState();
9069 vm.determineStartState();
9071 vm.refreshData();
9070 vm.refreshData();
9072 }
9071 }
9073
9072
9074 $scope.$on('$locationChangeSuccess', function () {
9073 $scope.$on('$locationChangeSuccess', function () {
9075
9074
9076 if (vm.loading.series === false) {
9075 if (vm.loading.series === false) {
9077 vm.determineStartState();
9076 vm.determineStartState();
9078 vm.refreshData();
9077 vm.refreshData();
9079 }
9078 }
9080 });
9079 });
9081
9080
9082 }
9081 }
9083
9082
9084 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
9083 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
9085 // #
9084 // #
9086 // # This program is free software: you can redistribute it and/or modify
9085 // # This program is free software: you can redistribute it and/or modify
9087 // # it under the terms of the GNU Affero General Public License, version 3
9086 // # it under the terms of the GNU Affero General Public License, version 3
9088 // # (only), as published by the Free Software Foundation.
9087 // # (only), as published by the Free Software Foundation.
9089 // #
9088 // #
9090 // # This program is distributed in the hope that it will be useful,
9089 // # This program is distributed in the hope that it will be useful,
9091 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
9090 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
9092 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9091 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9093 // # GNU General Public License for more details.
9092 // # GNU General Public License for more details.
9094 // #
9093 // #
9095 // # You should have received a copy of the GNU Affero General Public License
9094 // # You should have received a copy of the GNU Affero General Public License
9096 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
9095 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
9097 // #
9096 // #
9098 // # This program is dual-licensed. If you wish to learn more about the
9097 // # This program is dual-licensed. If you wish to learn more about the
9099 // # AppEnlight Enterprise Edition, including its added features, Support
9098 // # AppEnlight Enterprise Edition, including its added features, Support
9100 // # services, and proprietary license terms, please see
9099 // # services, and proprietary license terms, please see
9101 // # https://rhodecode.com/licenses/
9100 // # https://rhodecode.com/licenses/
9102
9101
9103 angular.module('appenlight.controllers').controller('IndexCtrl', IndexCtrl);
9102 angular.module('appenlight.controllers').controller('IndexCtrl', IndexCtrl);
9104
9103
9105 IndexCtrl.$inject = [IndexCtrl];
9104 IndexCtrl.$inject = [IndexCtrl];
9106
9105
9107 function IndexCtrl() {
9106 function IndexCtrl() {
9108 var vm = this;
9107 var vm = this;
9109 vm.selected_section = 'errors';
9108 vm.selected_section = 'errors';
9110 }
9109 }
9111
9110
9112 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
9111 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
9113 // #
9112 // #
9114 // # This program is free software: you can redistribute it and/or modify
9113 // # This program is free software: you can redistribute it and/or modify
9115 // # it under the terms of the GNU Affero General Public License, version 3
9114 // # it under the terms of the GNU Affero General Public License, version 3
9116 // # (only), as published by the Free Software Foundation.
9115 // # (only), as published by the Free Software Foundation.
9117 // #
9116 // #
9118 // # This program is distributed in the hope that it will be useful,
9117 // # This program is distributed in the hope that it will be useful,
9119 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
9118 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
9120 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9119 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9121 // # GNU General Public License for more details.
9120 // # GNU General Public License for more details.
9122 // #
9121 // #
9123 // # You should have received a copy of the GNU Affero General Public License
9122 // # You should have received a copy of the GNU Affero General Public License
9124 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
9123 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
9125 // #
9124 // #
9126 // # This program is dual-licensed. If you wish to learn more about the
9125 // # This program is dual-licensed. If you wish to learn more about the
9127 // # AppEnlight Enterprise Edition, including its added features, Support
9126 // # AppEnlight Enterprise Edition, including its added features, Support
9128 // # services, and proprietary license terms, please see
9127 // # services, and proprietary license terms, please see
9129 // # https://rhodecode.com/licenses/
9128 // # https://rhodecode.com/licenses/
9130
9129
9131 angular.module('appenlight.controllers')
9130 angular.module('appenlight.controllers')
9132 .controller('BitbucketIntegrationCtrl', BitbucketIntegrationCtrl)
9131 .controller('BitbucketIntegrationCtrl', BitbucketIntegrationCtrl)
9133
9132
9134 BitbucketIntegrationCtrl.$inject = ['$uibModalInstance', '$state', 'report', 'integrationName', 'integrationResource'];
9133 BitbucketIntegrationCtrl.$inject = ['$uibModalInstance', '$state', 'report', 'integrationName', 'integrationResource'];
9135
9134
9136 function BitbucketIntegrationCtrl($uibModalInstance, $state, report, integrationName, integrationResource) {
9135 function BitbucketIntegrationCtrl($uibModalInstance, $state, report, integrationName, integrationResource) {
9137 var vm = this;
9136 var vm = this;
9138 vm.loading = true;
9137 vm.loading = true;
9139 vm.assignees = [];
9138 vm.assignees = [];
9140 vm.report = report;
9139 vm.report = report;
9141 vm.integrationName = integrationName;
9140 vm.integrationName = integrationName;
9142 vm.statuses = [];
9141 vm.statuses = [];
9143 vm.priorities = [];
9142 vm.priorities = [];
9144 vm.error_messages = [];
9143 vm.error_messages = [];
9145 vm.form = {
9144 vm.form = {
9146 content: '\n' +
9145 content: '\n' +
9147 'Issue created for report: ' +
9146 'Issue created for report: ' +
9148 $state.href('report.view_detail', {groupId:report.group_id, reportId:report.id}, {absolute:true})
9147 $state.href('report.view_detail', {groupId:report.group_id, reportId:report.id}, {absolute:true})
9149 };
9148 };
9150
9149
9151 vm.fetchInfo = function () {
9150 vm.fetchInfo = function () {
9152 integrationResource.get({
9151 integrationResource.get({
9153 resourceId: vm.report.resource_id,
9152 resourceId: vm.report.resource_id,
9154 action: 'info',
9153 action: 'info',
9155 integration: vm.integrationName
9154 integration: vm.integrationName
9156 }, null,
9155 }, null,
9157 function (data) {
9156 function (data) {
9158 vm.loading = false;
9157 vm.loading = false;
9159 if (data.error_messages) {
9158 if (data.error_messages) {
9160 vm.error_messages = data.error_messages;
9159 vm.error_messages = data.error_messages;
9161 }
9160 }
9162 vm.assignees = data.assignees;
9161 vm.assignees = data.assignees;
9163 vm.priorities = data.priorities;
9162 vm.priorities = data.priorities;
9164 vm.form.responsible = vm.assignees[0];
9163 vm.form.responsible = vm.assignees[0];
9165 vm.form.priority = vm.priorities[0];
9164 vm.form.priority = vm.priorities[0];
9166 }, function (error_data) {
9165 }, function (error_data) {
9167 if (error_data.data.error_messages) {
9166 if (error_data.data.error_messages) {
9168 vm.error_messages = error_data.data.error_messages;
9167 vm.error_messages = error_data.data.error_messages;
9169 }
9168 }
9170 else {
9169 else {
9171 vm.error_messages = ['There was a problem processing your request'];
9170 vm.error_messages = ['There was a problem processing your request'];
9172 }
9171 }
9173 });
9172 });
9174 };
9173 };
9175 vm.ok = function () {
9174 vm.ok = function () {
9176 vm.loading = true;
9175 vm.loading = true;
9177 vm.form.group_id = vm.report.group_id;
9176 vm.form.group_id = vm.report.group_id;
9178 integrationResource.save({
9177 integrationResource.save({
9179 resourceId: vm.report.resource_id,
9178 resourceId: vm.report.resource_id,
9180 action: 'create-issue',
9179 action: 'create-issue',
9181 integration: vm.integrationName
9180 integration: vm.integrationName
9182 }, vm.form,
9181 }, vm.form,
9183 function (data) {
9182 function (data) {
9184 vm.loading = false;
9183 vm.loading = false;
9185 if (data.error_messages) {
9184 if (data.error_messages) {
9186 vm.error_messages = data.error_messages;
9185 vm.error_messages = data.error_messages;
9187 }
9186 }
9188 if (data !== false) {
9187 if (data !== false) {
9189 $uibModalInstance.dismiss('success');
9188 $uibModalInstance.dismiss('success');
9190 }
9189 }
9191 }, function (error_data) {
9190 }, function (error_data) {
9192 if (error_data.data.error_messages) {
9191 if (error_data.data.error_messages) {
9193 vm.error_messages = error_data.data.error_messages;
9192 vm.error_messages = error_data.data.error_messages;
9194 }
9193 }
9195 else {
9194 else {
9196 vm.error_messages = ['There was a problem processing your request'];
9195 vm.error_messages = ['There was a problem processing your request'];
9197 }
9196 }
9198 });
9197 });
9199 };
9198 };
9200 vm.cancel = function () {
9199 vm.cancel = function () {
9201 $uibModalInstance.dismiss('cancel');
9200 $uibModalInstance.dismiss('cancel');
9202 };
9201 };
9203 vm.fetchInfo();
9202 vm.fetchInfo();
9204 }
9203 }
9205
9204
9206 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
9205 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
9207 // #
9206 // #
9208 // # This program is free software: you can redistribute it and/or modify
9207 // # This program is free software: you can redistribute it and/or modify
9209 // # it under the terms of the GNU Affero General Public License, version 3
9208 // # it under the terms of the GNU Affero General Public License, version 3
9210 // # (only), as published by the Free Software Foundation.
9209 // # (only), as published by the Free Software Foundation.
9211 // #
9210 // #
9212 // # This program is distributed in the hope that it will be useful,
9211 // # This program is distributed in the hope that it will be useful,
9213 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
9212 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
9214 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9213 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9215 // # GNU General Public License for more details.
9214 // # GNU General Public License for more details.
9216 // #
9215 // #
9217 // # You should have received a copy of the GNU Affero General Public License
9216 // # You should have received a copy of the GNU Affero General Public License
9218 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
9217 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
9219 // #
9218 // #
9220 // # This program is dual-licensed. If you wish to learn more about the
9219 // # This program is dual-licensed. If you wish to learn more about the
9221 // # AppEnlight Enterprise Edition, including its added features, Support
9220 // # AppEnlight Enterprise Edition, including its added features, Support
9222 // # services, and proprietary license terms, please see
9221 // # services, and proprietary license terms, please see
9223 // # https://rhodecode.com/licenses/
9222 // # https://rhodecode.com/licenses/
9224
9223
9225 angular.module('appenlight.controllers')
9224 angular.module('appenlight.controllers')
9226 .controller('GithubIntegrationCtrl', GithubIntegrationCtrl);
9225 .controller('GithubIntegrationCtrl', GithubIntegrationCtrl);
9227
9226
9228 GithubIntegrationCtrl.$inject = ['$uibModalInstance', '$state', 'report', 'integrationName', 'integrationResource'];
9227 GithubIntegrationCtrl.$inject = ['$uibModalInstance', '$state', 'report', 'integrationName', 'integrationResource'];
9229
9228
9230 function GithubIntegrationCtrl($uibModalInstance, $state, report, integrationName, integrationResource) {
9229 function GithubIntegrationCtrl($uibModalInstance, $state, report, integrationName, integrationResource) {
9231 var vm = this;
9230 var vm = this;
9232 vm.loading = true;
9231 vm.loading = true;
9233 vm.assignees = [];
9232 vm.assignees = [];
9234 vm.report = report;
9233 vm.report = report;
9235 vm.integrationName = integrationName;
9234 vm.integrationName = integrationName;
9236 vm.statuses = [];
9235 vm.statuses = [];
9237 vm.assignees = [];
9236 vm.assignees = [];
9238 vm.error_messages = [];
9237 vm.error_messages = [];
9239 vm.form = {
9238 vm.form = {
9240 content: '\n' +
9239 content: '\n' +
9241 'Issue created for report: ' +
9240 'Issue created for report: ' +
9242 $state.href('report.view_detail', {groupId:report.group_id, reportId:report.id}, {absolute:true})
9241 $state.href('report.view_detail', {groupId:report.group_id, reportId:report.id}, {absolute:true})
9243 };
9242 };
9244
9243
9245 vm.fetchInfo = function () {
9244 vm.fetchInfo = function () {
9246 integrationResource.get({
9245 integrationResource.get({
9247 resourceId: vm.report.resource_id,
9246 resourceId: vm.report.resource_id,
9248 action: 'info',
9247 action: 'info',
9249 integration: vm.integrationName
9248 integration: vm.integrationName
9250 }, null,
9249 }, null,
9251 function (data) {
9250 function (data) {
9252 vm.loading = false;
9251 vm.loading = false;
9253 if (data.error_messages) {
9252 if (data.error_messages) {
9254 vm.error_messages = data.error_messages;
9253 vm.error_messages = data.error_messages;
9255 }
9254 }
9256 else {
9255 else {
9257 vm.assignees = data.assignees;
9256 vm.assignees = data.assignees;
9258 vm.statuses = data.statuses;
9257 vm.statuses = data.statuses;
9259 vm.form.responsible = vm.assignees[0];
9258 vm.form.responsible = vm.assignees[0];
9260 vm.form.status = vm.statuses[0];
9259 vm.form.status = vm.statuses[0];
9261 }
9260 }
9262 }, function (error_data) {
9261 }, function (error_data) {
9263 if (error_data.data.error_messages) {
9262 if (error_data.data.error_messages) {
9264 vm.error_messages = error_data.data.error_messages;
9263 vm.error_messages = error_data.data.error_messages;
9265 }
9264 }
9266 else {
9265 else {
9267 vm.error_messages = ['There was a problem processing your request'];
9266 vm.error_messages = ['There was a problem processing your request'];
9268 }
9267 }
9269 });
9268 });
9270 };
9269 };
9271 vm.ok = function () {
9270 vm.ok = function () {
9272 vm.loading = true;
9271 vm.loading = true;
9273 vm.form.group_id = vm.report.group_id;
9272 vm.form.group_id = vm.report.group_id;
9274 integrationResource.save({
9273 integrationResource.save({
9275 resourceId: vm.report.resource_id,
9274 resourceId: vm.report.resource_id,
9276 action: 'create-issue',
9275 action: 'create-issue',
9277 integration: vm.integrationName
9276 integration: vm.integrationName
9278 }, vm.form,
9277 }, vm.form,
9279 function (data) {
9278 function (data) {
9280 vm.loading = false;
9279 vm.loading = false;
9281 if (data.error_messages) {
9280 if (data.error_messages) {
9282 vm.error_messages = data.error_messages;
9281 vm.error_messages = data.error_messages;
9283 }
9282 }
9284 else {
9283 else {
9285 $uibModalInstance.dismiss('success');
9284 $uibModalInstance.dismiss('success');
9286 }
9285 }
9287 }, function (error_data) {
9286 }, function (error_data) {
9288 if (error_data.data.error_messages) {
9287 if (error_data.data.error_messages) {
9289 vm.error_messages = error_data.data.error_messages;
9288 vm.error_messages = error_data.data.error_messages;
9290 }
9289 }
9291 else {
9290 else {
9292 vm.error_messages = ['There was a problem processing your request'];
9291 vm.error_messages = ['There was a problem processing your request'];
9293 }
9292 }
9294 });
9293 });
9295 };
9294 };
9296 vm.cancel = function () {
9295 vm.cancel = function () {
9297 $uibModalInstance.dismiss('cancel');
9296 $uibModalInstance.dismiss('cancel');
9298 };
9297 };
9299 vm.fetchInfo();
9298 vm.fetchInfo();
9300 }
9299 }
9301
9300
9302 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
9301 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
9303 // #
9302 // #
9304 // # This program is free software: you can redistribute it and/or modify
9303 // # This program is free software: you can redistribute it and/or modify
9305 // # it under the terms of the GNU Affero General Public License, version 3
9304 // # it under the terms of the GNU Affero General Public License, version 3
9306 // # (only), as published by the Free Software Foundation.
9305 // # (only), as published by the Free Software Foundation.
9307 // #
9306 // #
9308 // # This program is distributed in the hope that it will be useful,
9307 // # This program is distributed in the hope that it will be useful,
9309 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
9308 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
9310 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9309 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9311 // # GNU General Public License for more details.
9310 // # GNU General Public License for more details.
9312 // #
9311 // #
9313 // # You should have received a copy of the GNU Affero General Public License
9312 // # You should have received a copy of the GNU Affero General Public License
9314 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
9313 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
9315 // #
9314 // #
9316 // # This program is dual-licensed. If you wish to learn more about the
9315 // # This program is dual-licensed. If you wish to learn more about the
9317 // # AppEnlight Enterprise Edition, including its added features, Support
9316 // # AppEnlight Enterprise Edition, including its added features, Support
9318 // # services, and proprietary license terms, please see
9317 // # services, and proprietary license terms, please see
9319 // # https://rhodecode.com/licenses/
9318 // # https://rhodecode.com/licenses/
9320
9319
9321 angular.module('appenlight.controllers')
9320 angular.module('appenlight.controllers')
9322 .controller('JiraIntegrationCtrl', JiraIntegrationCtrl)
9321 .controller('JiraIntegrationCtrl', JiraIntegrationCtrl)
9323
9322
9324 JiraIntegrationCtrl.$inject = ['$uibModalInstance', '$state', 'report', 'integrationName', 'integrationResource'];
9323 JiraIntegrationCtrl.$inject = ['$uibModalInstance', '$state', 'report', 'integrationName', 'integrationResource'];
9325
9324
9326 function JiraIntegrationCtrl($uibModalInstance, $state, report, integrationName, integrationResource) {
9325 function JiraIntegrationCtrl($uibModalInstance, $state, report, integrationName, integrationResource) {
9327 var vm = this;
9326 var vm = this;
9328 vm.loading = true;
9327 vm.loading = true;
9329 vm.assignees = [];
9328 vm.assignees = [];
9330 vm.report = report;
9329 vm.report = report;
9331 vm.integrationName = integrationName;
9330 vm.integrationName = integrationName;
9332 vm.statuses = [];
9331 vm.statuses = [];
9333 vm.priorities = [];
9332 vm.priorities = [];
9334 vm.issue_types = [];
9333 vm.issue_types = [];
9335 vm.error_messages = [];
9334 vm.error_messages = [];
9336 vm.form = {
9335 vm.form = {
9337 content: '\n' +
9336 content: '\n' +
9338 'Issue created for report: ' +
9337 'Issue created for report: ' +
9339 $state.href('report.view_detail', {groupId:report.group_id, reportId:report.id}, {absolute:true})
9338 $state.href('report.view_detail', {groupId:report.group_id, reportId:report.id}, {absolute:true})
9340 };
9339 };
9341
9340
9342 vm.fetchInfo = function () {
9341 vm.fetchInfo = function () {
9343 integrationResource.get({
9342 integrationResource.get({
9344 resourceId: vm.report.resource_id,
9343 resourceId: vm.report.resource_id,
9345 action: 'info',
9344 action: 'info',
9346 integration: vm.integrationName
9345 integration: vm.integrationName
9347 }, null,
9346 }, null,
9348 function (data) {
9347 function (data) {
9349 vm.loading = false;
9348 vm.loading = false;
9350 if (data.error_messages) {
9349 if (data.error_messages) {
9351 vm.error_messages = data.error_messages;
9350 vm.error_messages = data.error_messages;
9352 }
9351 }
9353 vm.assignees = data.assignees;
9352 vm.assignees = data.assignees;
9354 vm.priorities = data.priorities;
9353 vm.priorities = data.priorities;
9355 vm.issue_types = data.issue_types;
9354 vm.issue_types = data.issue_types;
9356 vm.form.issue_type = vm.issue_types[0];
9355 vm.form.issue_type = vm.issue_types[0];
9357 vm.form.responsible = vm.assignees[0];
9356 vm.form.responsible = vm.assignees[0];
9358 vm.form.priority = vm.priorities[0];
9357 vm.form.priority = vm.priorities[0];
9359 }, function (error_data) {
9358 }, function (error_data) {
9360
9359
9361 if (error_data.data.error_messages) {
9360 if (error_data.data.error_messages) {
9362 vm.error_messages = error_data.data.error_messages;
9361 vm.error_messages = error_data.data.error_messages;
9363 }
9362 }
9364 else {
9363 else {
9365 vm.error_messages = ['There was a problem processing your request'];
9364 vm.error_messages = ['There was a problem processing your request'];
9366 }
9365 }
9367 });
9366 });
9368 };
9367 };
9369 vm.ok = function () {
9368 vm.ok = function () {
9370 vm.loading = true;
9369 vm.loading = true;
9371 vm.form.group_id = vm.report.group_id;
9370 vm.form.group_id = vm.report.group_id;
9372 integrationResource.save({
9371 integrationResource.save({
9373 resourceId: vm.report.resource_id,
9372 resourceId: vm.report.resource_id,
9374 action: 'create-issue',
9373 action: 'create-issue',
9375 integration: vm.integrationName
9374 integration: vm.integrationName
9376 }, vm.form,
9375 }, vm.form,
9377 function (data) {
9376 function (data) {
9378 vm.loading = false;
9377 vm.loading = false;
9379 if (data.error_messages) {
9378 if (data.error_messages) {
9380 vm.error_messages = data.error_messages;
9379 vm.error_messages = data.error_messages;
9381 }
9380 }
9382 if (data !== false) {
9381 if (data !== false) {
9383 $uibModalInstance.dismiss('success');
9382 $uibModalInstance.dismiss('success');
9384 }
9383 }
9385 }, function (error_data) {
9384 }, function (error_data) {
9386 if (error_data.data.error_messages) {
9385 if (error_data.data.error_messages) {
9387 vm.error_messages = error_data.data.error_messages;
9386 vm.error_messages = error_data.data.error_messages;
9388 }
9387 }
9389 else {
9388 else {
9390 vm.error_messages = ['There was a problem processing your request'];
9389 vm.error_messages = ['There was a problem processing your request'];
9391 }
9390 }
9392 });
9391 });
9393 };
9392 };
9394 vm.cancel = function () {
9393 vm.cancel = function () {
9395 $uibModalInstance.dismiss('cancel');
9394 $uibModalInstance.dismiss('cancel');
9396 };
9395 };
9397 vm.fetchInfo();
9396 vm.fetchInfo();
9398 }
9397 }
9399
9398
9400 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
9399 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
9401 // #
9400 // #
9402 // # This program is free software: you can redistribute it and/or modify
9401 // # This program is free software: you can redistribute it and/or modify
9403 // # it under the terms of the GNU Affero General Public License, version 3
9402 // # it under the terms of the GNU Affero General Public License, version 3
9404 // # (only), as published by the Free Software Foundation.
9403 // # (only), as published by the Free Software Foundation.
9405 // #
9404 // #
9406 // # This program is distributed in the hope that it will be useful,
9405 // # This program is distributed in the hope that it will be useful,
9407 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
9406 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
9408 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9407 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9409 // # GNU General Public License for more details.
9408 // # GNU General Public License for more details.
9410 // #
9409 // #
9411 // # You should have received a copy of the GNU Affero General Public License
9410 // # You should have received a copy of the GNU Affero General Public License
9412 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
9411 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
9413 // #
9412 // #
9414 // # This program is dual-licensed. If you wish to learn more about the
9413 // # This program is dual-licensed. If you wish to learn more about the
9415 // # AppEnlight Enterprise Edition, including its added features, Support
9414 // # AppEnlight Enterprise Edition, including its added features, Support
9416 // # services, and proprietary license terms, please see
9415 // # services, and proprietary license terms, please see
9417 // # https://rhodecode.com/licenses/
9416 // # https://rhodecode.com/licenses/
9418
9417
9419 angular.module('appenlight.controllers').controller('LogsController', LogsController);
9418 angular.module('appenlight.controllers').controller('LogsController', LogsController);
9420
9419
9421 LogsController.$inject = ['$scope', '$location', 'stateHolder', 'typeAheadTagHelper', 'logsNoIdResource', 'sectionViewResource'];
9420 LogsController.$inject = ['$scope', '$location', 'stateHolder', 'typeAheadTagHelper', 'logsNoIdResource', 'sectionViewResource'];
9422
9421
9423 function LogsController($scope, $location, stateHolder, typeAheadTagHelper, logsNoIdResource, sectionViewResource) {
9422 function LogsController($scope, $location, stateHolder, typeAheadTagHelper, logsNoIdResource, sectionViewResource) {
9424 var vm = this;
9423 var vm = this;
9425 vm.logEventsChartConfig = {
9424 vm.logEventsChartConfig = {
9426 data: {
9425 data: {
9427 json: [],
9426 json: [],
9428 xFormat: '%Y-%m-%dT%H:%M:%S'
9427 xFormat: '%Y-%m-%dT%H:%M:%S'
9429 },
9428 },
9430 color: {
9429 color: {
9431 pattern: ['#6baed6', '#e6550d', '#74c476', '#fdd0a2', '#8c564b']
9430 pattern: ['#6baed6', '#e6550d', '#74c476', '#fdd0a2', '#8c564b']
9432 },
9431 },
9433 axis: {
9432 axis: {
9434 x: {
9433 x: {
9435 type: 'timeseries',
9434 type: 'timeseries',
9436 tick: {
9435 tick: {
9437 format: '%Y-%m-%d'
9436 format: '%Y-%m-%d'
9438 }
9437 }
9439 },
9438 },
9440 y: {
9439 y: {
9441 tick: {
9440 tick: {
9442 count: 5,
9441 count: 5,
9443 format: d3.format('.2s')
9442 format: d3.format('.2s')
9444 }
9443 }
9445 }
9444 }
9446 },
9445 },
9447 subchart: {
9446 subchart: {
9448 show: true,
9447 show: true,
9449 size: {
9448 size: {
9450 height: 20
9449 height: 20
9451 }
9450 }
9452 },
9451 },
9453 size: {
9452 size: {
9454 height: 250
9453 height: 250
9455 },
9454 },
9456 zoom: {
9455 zoom: {
9457 rescale: true
9456 rescale: true
9458 },
9457 },
9459 grid: {
9458 grid: {
9460 x: {
9459 x: {
9461 show: true
9460 show: true
9462 },
9461 },
9463 y: {
9462 y: {
9464 show: true
9463 show: true
9465 }
9464 }
9466 },
9465 },
9467 tooltip: {
9466 tooltip: {
9468 format: {
9467 format: {
9469 title: function (d) {
9468 title: function (d) {
9470 return '' + d;
9469 return '' + d;
9471 },
9470 },
9472 value: function (v) {
9471 value: function (v) {
9473 return v
9472 return v
9474 }
9473 }
9475 }
9474 }
9476 }
9475 }
9477 };
9476 };
9478 vm.logEventsChartData = {};
9477 vm.logEventsChartData = {};
9479 stateHolder.section = 'logs';
9478 stateHolder.section = 'logs';
9480 vm.today = function () {
9479 vm.today = function () {
9481 vm.pickerDate = new Date();
9480 vm.pickerDate = new Date();
9482 };
9481 };
9483 vm.today();
9482 vm.today();
9484
9483
9485 vm.applications = stateHolder.AeUser.applications_map;
9484 vm.applications = stateHolder.AeUser.applications_map;
9486 vm.logsPage = [];
9485 vm.logsPage = [];
9487 vm.itemCount = 0;
9486 vm.itemCount = 0;
9488 vm.itemsPerPage = 250;
9487 vm.itemsPerPage = 250;
9489 vm.searchParams = parseSearchToTags($location.search());
9488 vm.searchParams = parseSearchToTags($location.search());
9490 vm.$location = $location;
9489 vm.$location = $location;
9491 vm.isLoading = {
9490 vm.isLoading = {
9492 logs: true,
9491 logs: true,
9493 series: true
9492 series: true
9494 };
9493 };
9495 vm.filterTypeAheadOptions = [
9494 vm.filterTypeAheadOptions = [
9496 {
9495 {
9497 type: 'message',
9496 type: 'message',
9498 text: 'message:',
9497 text: 'message:',
9499 'description': 'Full-text search in your logs',
9498 'description': 'Full-text search in your logs',
9500 tag: 'Message',
9499 tag: 'Message',
9501 example: 'message:text-im-looking-for'
9500 example: 'message:text-im-looking-for'
9502 },
9501 },
9503 {
9502 {
9504 type: 'namespace',
9503 type: 'namespace',
9505 text: 'namespace:',
9504 text: 'namespace:',
9506 'description': 'Query logs from specific namespace',
9505 'description': 'Query logs from specific namespace',
9507 tag: 'Namespace',
9506 tag: 'Namespace',
9508 example: "namespace:module.foo"
9507 example: "namespace:module.foo"
9509 },
9508 },
9510 {
9509 {
9511 type: 'resource',
9510 type: 'resource',
9512 text: 'resource:',
9511 text: 'resource:',
9513 'description': 'Restrict resultset to application',
9512 'description': 'Restrict resultset to application',
9514 tag: 'Application',
9513 tag: 'Application',
9515 example: "resource:ID"
9514 example: "resource:ID"
9516 },
9515 },
9517 {
9516 {
9518 type: 'request_id',
9517 type: 'request_id',
9519 text: 'request_id:',
9518 text: 'request_id:',
9520 'description': 'Show logs with specific request id',
9519 'description': 'Show logs with specific request id',
9521 example: "request_id:883143dc572e4c38aceae92af0ea5ae0",
9520 example: "request_id:883143dc572e4c38aceae92af0ea5ae0",
9522 tag: 'Request ID'
9521 tag: 'Request ID'
9523 },
9522 },
9524 {
9523 {
9525 type: 'level',
9524 type: 'level',
9526 text: 'level:',
9525 text: 'level:',
9527 'description': 'Show entries with specific log level',
9526 'description': 'Show entries with specific log level',
9528 example: 'level:warning',
9527 example: 'level:warning',
9529 tag: 'Level'
9528 tag: 'Level'
9530 },
9529 },
9531 {
9530 {
9532 type: 'server_name',
9531 type: 'server_name',
9533 text: 'server_name:',
9532 text: 'server_name:',
9534 'description': 'Show entries tagged with this key/value pair',
9533 'description': 'Show entries tagged with this key/value pair',
9535 example: 'server_name:hostname',
9534 example: 'server_name:hostname',
9536 tag: 'Tag'
9535 tag: 'Tag'
9537 },
9536 },
9538 {
9537 {
9539 type: 'start_date',
9538 type: 'start_date',
9540 text: 'start_date:',
9539 text: 'start_date:',
9541 'description': 'Show results newer than this date (press TAB for dropdown)',
9540 'description': 'Show results newer than this date (press TAB for dropdown)',
9542 example: 'start_date:2014-08-15T13:00',
9541 example: 'start_date:2014-08-15T13:00',
9543 tag: 'Start Date'
9542 tag: 'Start Date'
9544 },
9543 },
9545 {
9544 {
9546 type: 'end_date',
9545 type: 'end_date',
9547 text: 'end_date:',
9546 text: 'end_date:',
9548 'description': 'Show results older than this date (press TAB for dropdown)',
9547 'description': 'Show results older than this date (press TAB for dropdown)',
9549 example: 'start_date:2014-08-15T23:59',
9548 example: 'start_date:2014-08-15T23:59',
9550 tag: 'End Date'
9549 tag: 'End Date'
9551 },
9550 },
9552 {type: 'level', value: 'debug', text: 'level:debug'},
9551 {type: 'level', value: 'debug', text: 'level:debug'},
9553 {type: 'level', value: 'info', text: 'level:info'},
9552 {type: 'level', value: 'info', text: 'level:info'},
9554 {type: 'level', value: 'warning', text: 'level:warning'},
9553 {type: 'level', value: 'warning', text: 'level:warning'},
9555 {type: 'level', value: 'critical', text: 'level:critical'}
9554 {type: 'level', value: 'critical', text: 'level:critical'}
9556 ];
9555 ];
9557 vm.filterTypeAhead = null;
9556 vm.filterTypeAhead = null;
9558 vm.showDatePicker = false;
9557 vm.showDatePicker = false;
9559 vm.manualOpen = false;
9558 vm.manualOpen = false;
9560 vm.aheadFilter = typeAheadTagHelper.aheadFilter;
9559 vm.aheadFilter = typeAheadTagHelper.aheadFilter;
9561 vm.removeSearchTag = function (tag) {
9560 vm.removeSearchTag = function (tag) {
9562 $location.search(tag.type, null);
9561 $location.search(tag.type, null);
9563 };
9562 };
9564 vm.addSearchTag = function (tag) {
9563 vm.addSearchTag = function (tag) {
9565 $location.search(tag.type, tag.value);
9564 $location.search(tag.type, tag.value);
9566 };
9565 };
9567
9566
9568 vm.paginationChange = function(){
9567 vm.paginationChange = function(){
9569 $location.search('page', vm.searchParams.page);
9568 $location.search('page', vm.searchParams.page);
9570 };
9569 };
9571
9570
9572
9571
9573 _.each(vm.applications, function (item) {
9572 _.each(vm.applications, function (item) {
9574 vm.filterTypeAheadOptions.push({
9573 vm.filterTypeAheadOptions.push({
9575 type: 'resource',
9574 type: 'resource',
9576 text: 'resource:' + item.resource_id + ':' + item.resource_name,
9575 text: 'resource:' + item.resource_id + ':' + item.resource_name,
9577 example: 'resource:' + item.resource_id,
9576 example: 'resource:' + item.resource_id,
9578 'tag': item.resource_name,
9577 'tag': item.resource_name,
9579 'description': 'Restrict resultset to this application'
9578 'description': 'Restrict resultset to this application'
9580 });
9579 });
9581 });
9580 });
9582
9581
9583 vm.typeAheadTag = function (event) {
9582 vm.typeAheadTag = function (event) {
9584 var text = vm.filterTypeAhead;
9583 var text = vm.filterTypeAhead;
9585 if (_.isObject(vm.filterTypeAhead)) {
9584 if (_.isObject(vm.filterTypeAhead)) {
9586 text = vm.filterTypeAhead.text;
9585 text = vm.filterTypeAhead.text;
9587 }
9586 }
9588 ;
9587 ;
9589 if (!vm.filterTypeAhead) {
9588 if (!vm.filterTypeAhead) {
9590 return
9589 return
9591 }
9590 }
9592 var parsed = text.split(':');
9591 var parsed = text.split(':');
9593 var tag = {'type': null, 'value': null};
9592 var tag = {'type': null, 'value': null};
9594 // app tags have : twice
9593 // app tags have : twice
9595 if (parsed.length > 2 && parsed[0] == 'resource') {
9594 if (parsed.length > 2 && parsed[0] == 'resource') {
9596 tag.type = 'resource';
9595 tag.type = 'resource';
9597 tag.value = parsed[1];
9596 tag.value = parsed[1];
9598 }
9597 }
9599 // normal tag:value
9598 // normal tag:value
9600 else if (parsed.length > 1) {
9599 else if (parsed.length > 1) {
9601 tag.type = parsed[0];
9600 tag.type = parsed[0];
9602 tag.value = parsed.slice(1).join(':');
9601 tag.value = parsed.slice(1).join(':');
9603 }
9602 }
9604 else {
9603 else {
9605 tag.type = 'message';
9604 tag.type = 'message';
9606 tag.value = parsed.join(':');
9605 tag.value = parsed.join(':');
9607 }
9606 }
9608
9607
9609 // set datepicker hour based on type of field
9608 // set datepicker hour based on type of field
9610 if ('start_date:' == text) {
9609 if ('start_date:' == text) {
9611 vm.showDatePicker = true;
9610 vm.showDatePicker = true;
9612 vm.filterTypeAhead = 'start_date:' + moment(vm.pickerDate).utc().format();
9611 vm.filterTypeAhead = 'start_date:' + moment(vm.pickerDate).utc().format();
9613 }
9612 }
9614 else if ('end_date:' == text) {
9613 else if ('end_date:' == text) {
9615 vm.showDatePicker = true;
9614 vm.showDatePicker = true;
9616 vm.filterTypeAhead = 'end_date:' + moment(vm.pickerDate).utc().hour(23).minute(59).format();
9615 vm.filterTypeAhead = 'end_date:' + moment(vm.pickerDate).utc().hour(23).minute(59).format();
9617 }
9616 }
9618
9617
9619 if (event.keyCode != 13 || !tag.type || !tag.value) {
9618 if (event.keyCode != 13 || !tag.type || !tag.value) {
9620 return
9619 return
9621 }
9620 }
9622 vm.showDatePicker = false;
9621 vm.showDatePicker = false;
9623 // aka we selected one of main options
9622 // aka we selected one of main options
9624 $location.search(tag.type, tag.value);
9623 $location.search(tag.type, tag.value);
9625
9624
9626 // clear typeahead
9625 // clear typeahead
9627 vm.filterTypeAhead = undefined;
9626 vm.filterTypeAhead = undefined;
9628 };
9627 };
9629
9628
9630
9629
9631 vm.pickerDateChanged = function(){
9630 vm.pickerDateChanged = function(){
9632 if (vm.filterTypeAhead.indexOf('start_date:') == '0') {
9631 if (vm.filterTypeAhead.indexOf('start_date:') == '0') {
9633 vm.filterTypeAhead = 'start_date:' + moment(vm.pickerDate).utc().format();
9632 vm.filterTypeAhead = 'start_date:' + moment(vm.pickerDate).utc().format();
9634 }
9633 }
9635 else if (vm.filterTypeAhead.indexOf('end_date:') == '0') {
9634 else if (vm.filterTypeAhead.indexOf('end_date:') == '0') {
9636 vm.filterTypeAhead = 'end_date:' + moment(vm.pickerDate).utc().hour(23).minute(59).format();
9635 vm.filterTypeAhead = 'end_date:' + moment(vm.pickerDate).utc().hour(23).minute(59).format();
9637 }
9636 }
9638 vm.showDatePicker = false;
9637 vm.showDatePicker = false;
9639 };
9638 };
9640
9639
9641 vm.fetchLogs = function (searchParams) {
9640 vm.fetchLogs = function (searchParams) {
9642 vm.isLoading.logs = true;
9641 vm.isLoading.logs = true;
9643 logsNoIdResource.query(searchParams, function (data, getResponseHeaders) {
9642 logsNoIdResource.query(searchParams, function (data, getResponseHeaders) {
9644 vm.isLoading.logs = false;
9643 vm.isLoading.logs = false;
9645 var headers = getResponseHeaders();
9644 var headers = getResponseHeaders();
9646 vm.logsPage = data;
9645 vm.logsPage = data;
9647 vm.itemCount = headers['x-total-count'];
9646 vm.itemCount = headers['x-total-count'];
9648 vm.itemsPerPage = headers['x-items-per-page'];
9647 vm.itemsPerPage = headers['x-items-per-page'];
9649 }, function () {
9648 }, function () {
9650 vm.isLoading.logs = false;
9649 vm.isLoading.logs = false;
9651 });
9650 });
9652 };
9651 };
9653
9652
9654 vm.fetchSeriesData = function (searchParams) {
9653 vm.fetchSeriesData = function (searchParams) {
9655 searchParams['section'] = 'logs_section';
9654 searchParams['section'] = 'logs_section';
9656 searchParams['view'] = 'fetch_series';
9655 searchParams['view'] = 'fetch_series';
9657 vm.isLoading.series = true;
9656 vm.isLoading.series = true;
9658 sectionViewResource.query(searchParams, function (data) {
9657 sectionViewResource.query(searchParams, function (data) {
9659
9658
9660 vm.logEventsChartData = {
9659 vm.logEventsChartData = {
9661 json: data,
9660 json: data,
9662 xFormat: '%Y-%m-%dT%H:%M:%S',
9661 xFormat: '%Y-%m-%dT%H:%M:%S',
9663 keys: {
9662 keys: {
9664 x: 'x',
9663 x: 'x',
9665 value: ["logs"]
9664 value: ["logs"]
9666 },
9665 },
9667 names: {
9666 names: {
9668 logs: 'Log events'
9667 logs: 'Log events'
9669 },
9668 },
9670 type: 'bar'
9669 type: 'bar'
9671 };
9670 };
9672 vm.isLoading.series = false;
9671 vm.isLoading.series = false;
9673 }, function () {
9672 }, function () {
9674 vm.isLoading.series = false;
9673 vm.isLoading.series = false;
9675 });
9674 });
9676 };
9675 };
9677
9676
9678 vm.filterId = function (log) {
9677 vm.filterId = function (log) {
9679 $location.search('request_id', log.request_id);
9678 $location.search('request_id', log.request_id);
9680 };
9679 };
9681
9680
9682 var params = parseTagsToSearch(vm.searchParams);
9681 var params = parseTagsToSearch(vm.searchParams);
9683 vm.fetchLogs(params);
9682 vm.fetchLogs(params);
9684 vm.fetchSeriesData(params);
9683 vm.fetchSeriesData(params);
9685
9684
9686 $scope.$on('$locationChangeSuccess', function () {
9685 $scope.$on('$locationChangeSuccess', function () {
9687
9686
9688 vm.searchParams = parseSearchToTags($location.search());
9687 vm.searchParams = parseSearchToTags($location.search());
9689 var params = parseTagsToSearch(vm.searchParams);
9688 var params = parseTagsToSearch(vm.searchParams);
9690
9689
9691 if (vm.isLoading.logs === false) {
9690 if (vm.isLoading.logs === false) {
9692
9691
9693 vm.fetchLogs(params);
9692 vm.fetchLogs(params);
9694 vm.fetchSeriesData(params);
9693 vm.fetchSeriesData(params);
9695 }
9694 }
9696 });
9695 });
9697
9696
9698 }
9697 }
9699
9698
9700 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
9699 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
9701 // #
9700 // #
9702 // # This program is free software: you can redistribute it and/or modify
9701 // # This program is free software: you can redistribute it and/or modify
9703 // # it under the terms of the GNU Affero General Public License, version 3
9702 // # it under the terms of the GNU Affero General Public License, version 3
9704 // # (only), as published by the Free Software Foundation.
9703 // # (only), as published by the Free Software Foundation.
9705 // #
9704 // #
9706 // # This program is distributed in the hope that it will be useful,
9705 // # This program is distributed in the hope that it will be useful,
9707 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
9706 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
9708 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9707 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9709 // # GNU General Public License for more details.
9708 // # GNU General Public License for more details.
9710 // #
9709 // #
9711 // # You should have received a copy of the GNU Affero General Public License
9710 // # You should have received a copy of the GNU Affero General Public License
9712 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
9711 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
9713 // #
9712 // #
9714 // # This program is dual-licensed. If you wish to learn more about the
9713 // # This program is dual-licensed. If you wish to learn more about the
9715 // # AppEnlight Enterprise Edition, including its added features, Support
9714 // # AppEnlight Enterprise Edition, including its added features, Support
9716 // # services, and proprietary license terms, please see
9715 // # services, and proprietary license terms, please see
9717 // # https://rhodecode.com/licenses/
9716 // # https://rhodecode.com/licenses/
9718
9717
9719 angular.module('appenlight.controllers')
9718 angular.module('appenlight.controllers')
9720 .controller('OverviewCtrl', OverviewCtrl);
9719 .controller('OverviewCtrl', OverviewCtrl);
9721
9720
9722 OverviewCtrl.$inject = [];
9721 OverviewCtrl.$inject = [];
9723
9722
9724 function OverviewCtrl() {
9723 function OverviewCtrl() {
9725
9724
9726 }
9725 }
9727
9726
9728 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
9727 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
9729 // #
9728 // #
9730 // # This program is free software: you can redistribute it and/or modify
9729 // # This program is free software: you can redistribute it and/or modify
9731 // # it under the terms of the GNU Affero General Public License, version 3
9730 // # it under the terms of the GNU Affero General Public License, version 3
9732 // # (only), as published by the Free Software Foundation.
9731 // # (only), as published by the Free Software Foundation.
9733 // #
9732 // #
9734 // # This program is distributed in the hope that it will be useful,
9733 // # This program is distributed in the hope that it will be useful,
9735 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
9734 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
9736 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9735 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9737 // # GNU General Public License for more details.
9736 // # GNU General Public License for more details.
9738 // #
9737 // #
9739 // # You should have received a copy of the GNU Affero General Public License
9738 // # You should have received a copy of the GNU Affero General Public License
9740 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
9739 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
9741 // #
9740 // #
9742 // # This program is dual-licensed. If you wish to learn more about the
9741 // # This program is dual-licensed. If you wish to learn more about the
9743 // # AppEnlight Enterprise Edition, including its added features, Support
9742 // # AppEnlight Enterprise Edition, including its added features, Support
9744 // # services, and proprietary license terms, please see
9743 // # services, and proprietary license terms, please see
9745 // # https://rhodecode.com/licenses/
9744 // # https://rhodecode.com/licenses/
9746
9745
9747 angular.module('appenlight.controllers')
9746 angular.module('appenlight.controllers')
9748 .controller('RegisterController', RegisterController);
9747 .controller('RegisterController', RegisterController);
9749
9748
9750 RegisterController.$inject = ['$scope', '$location'];
9749 RegisterController.$inject = ['$scope', '$location'];
9751
9750
9752 function RegisterController() {
9751 function RegisterController() {
9753 var vm = this;
9752 var vm = this;
9754 vm.selected_form = 'sign-up';
9753 vm.selected_form = 'sign-up';
9755 if (window.location.search.indexOf('sign_in') != -1 || window.location.search.indexOf('came_from') != -1) {
9754 if (window.location.search.indexOf('sign_in') != -1 || window.location.search.indexOf('came_from') != -1) {
9756 vm.selected_form = 'sign-in';
9755 vm.selected_form = 'sign-in';
9757 }
9756 }
9758 }
9757 }
9759
9758
9760 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
9759 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
9761 // #
9760 // #
9762 // # This program is free software: you can redistribute it and/or modify
9761 // # This program is free software: you can redistribute it and/or modify
9763 // # it under the terms of the GNU Affero General Public License, version 3
9762 // # it under the terms of the GNU Affero General Public License, version 3
9764 // # (only), as published by the Free Software Foundation.
9763 // # (only), as published by the Free Software Foundation.
9765 // #
9764 // #
9766 // # This program is distributed in the hope that it will be useful,
9765 // # This program is distributed in the hope that it will be useful,
9767 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
9766 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
9768 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9767 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9769 // # GNU General Public License for more details.
9768 // # GNU General Public License for more details.
9770 // #
9769 // #
9771 // # You should have received a copy of the GNU Affero General Public License
9770 // # You should have received a copy of the GNU Affero General Public License
9772 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
9771 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
9773 // #
9772 // #
9774 // # This program is dual-licensed. If you wish to learn more about the
9773 // # This program is dual-licensed. If you wish to learn more about the
9775 // # AppEnlight Enterprise Edition, including its added features, Support
9774 // # AppEnlight Enterprise Edition, including its added features, Support
9776 // # services, and proprietary license terms, please see
9775 // # services, and proprietary license terms, please see
9777 // # https://rhodecode.com/licenses/
9776 // # https://rhodecode.com/licenses/
9778
9777
9779 angular.module('appenlight.controllers').controller('AssignReportCtrl', AssignReportCtrl);
9778 angular.module('appenlight.controllers').controller('AssignReportCtrl', AssignReportCtrl);
9780 AssignReportCtrl.$inject = ['$uibModalInstance', 'reportGroupPropertyResource', 'report'];
9779 AssignReportCtrl.$inject = ['$uibModalInstance', 'reportGroupPropertyResource', 'report'];
9781
9780
9782 function AssignReportCtrl($uibModalInstance, reportGroupPropertyResource, report) {
9781 function AssignReportCtrl($uibModalInstance, reportGroupPropertyResource, report) {
9783 var vm = this;
9782 var vm = this;
9784 vm.loading = true;
9783 vm.loading = true;
9785 vm.assignedUsers = [];
9784 vm.assignedUsers = [];
9786 vm.unAssignedUsers = [];
9785 vm.unAssignedUsers = [];
9787 vm.report = report;
9786 vm.report = report;
9788 vm.fetchAssignments = function () {
9787 vm.fetchAssignments = function () {
9789 reportGroupPropertyResource.get({
9788 reportGroupPropertyResource.get({
9790 groupId: vm.report.group_id,
9789 groupId: vm.report.group_id,
9791 key: 'assigned_users'
9790 key: 'assigned_users'
9792 }, null,
9791 }, null,
9793 function (data) {
9792 function (data) {
9794 vm.assignedUsers = data.assigned;
9793 vm.assignedUsers = data.assigned;
9795 vm.unAssignedUsers = data.unassigned;
9794 vm.unAssignedUsers = data.unassigned;
9796 vm.loading = false;
9795 vm.loading = false;
9797 });
9796 });
9798 }
9797 }
9799
9798
9800 vm.reassignUser = function (user) {
9799 vm.reassignUser = function (user) {
9801 var is_assigned = vm.assignedUsers.indexOf(user);
9800 var is_assigned = vm.assignedUsers.indexOf(user);
9802 if (is_assigned != -1) {
9801 if (is_assigned != -1) {
9803 vm.assignedUsers.splice(is_assigned, 1);
9802 vm.assignedUsers.splice(is_assigned, 1);
9804 vm.unAssignedUsers.push(user);
9803 vm.unAssignedUsers.push(user);
9805 return
9804 return
9806 }
9805 }
9807 var is_unassigned = vm.unAssignedUsers.indexOf(user);
9806 var is_unassigned = vm.unAssignedUsers.indexOf(user);
9808 if (is_unassigned != -1) {
9807 if (is_unassigned != -1) {
9809 vm.unAssignedUsers.splice(is_unassigned, 1);
9808 vm.unAssignedUsers.splice(is_unassigned, 1);
9810 vm.assignedUsers.push(user);
9809 vm.assignedUsers.push(user);
9811 return
9810 return
9812 }
9811 }
9813 }
9812 }
9814 vm.updateAssignments = function () {
9813 vm.updateAssignments = function () {
9815 var post = {'unassigned': [], 'assigned': []};
9814 var post = {'unassigned': [], 'assigned': []};
9816 _.each(vm.assignedUsers, function (u) {
9815 _.each(vm.assignedUsers, function (u) {
9817 post['assigned'].push(u.user_name)
9816 post['assigned'].push(u.user_name)
9818 });
9817 });
9819 _.each(vm.unAssignedUsers, function (u) {
9818 _.each(vm.unAssignedUsers, function (u) {
9820 post['unassigned'].push(u.user_name)
9819 post['unassigned'].push(u.user_name)
9821 });
9820 });
9822 vm.loading = true;
9821 vm.loading = true;
9823 reportGroupPropertyResource.update({
9822 reportGroupPropertyResource.update({
9824 groupId: vm.report.group_id,
9823 groupId: vm.report.group_id,
9825 key: 'assigned_users'
9824 key: 'assigned_users'
9826 }, post,
9825 }, post,
9827 function (data) {
9826 function (data) {
9828 vm.loading = false;
9827 vm.loading = false;
9829 $uibModalInstance.close(vm.report);
9828 $uibModalInstance.close(vm.report);
9830 });
9829 });
9831 };
9830 };
9832
9831
9833
9832
9834 vm.ok = function () {
9833 vm.ok = function () {
9835 vm.updateAssignments();
9834 vm.updateAssignments();
9836 };
9835 };
9837
9836
9838 vm.cancel = function () {
9837 vm.cancel = function () {
9839 $uibModalInstance.dismiss('cancel');
9838 $uibModalInstance.dismiss('cancel');
9840 };
9839 };
9841
9840
9842 vm.fetchAssignments();
9841 vm.fetchAssignments();
9843
9842
9844 }
9843 }
9845
9844
9846 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
9845 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
9847 // #
9846 // #
9848 // # This program is free software: you can redistribute it and/or modify
9847 // # This program is free software: you can redistribute it and/or modify
9849 // # it under the terms of the GNU Affero General Public License, version 3
9848 // # it under the terms of the GNU Affero General Public License, version 3
9850 // # (only), as published by the Free Software Foundation.
9849 // # (only), as published by the Free Software Foundation.
9851 // #
9850 // #
9852 // # This program is distributed in the hope that it will be useful,
9851 // # This program is distributed in the hope that it will be useful,
9853 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
9852 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
9854 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9853 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9855 // # GNU General Public License for more details.
9854 // # GNU General Public License for more details.
9856 // #
9855 // #
9857 // # You should have received a copy of the GNU Affero General Public License
9856 // # You should have received a copy of the GNU Affero General Public License
9858 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
9857 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
9859 // #
9858 // #
9860 // # This program is dual-licensed. If you wish to learn more about the
9859 // # This program is dual-licensed. If you wish to learn more about the
9861 // # AppEnlight Enterprise Edition, including its added features, Support
9860 // # AppEnlight Enterprise Edition, including its added features, Support
9862 // # services, and proprietary license terms, please see
9861 // # services, and proprietary license terms, please see
9863 // # https://rhodecode.com/licenses/
9862 // # https://rhodecode.com/licenses/
9864
9863
9865 'use strict';
9864 'use strict';
9866
9865
9867 /* Controllers */
9866 /* Controllers */
9868
9867
9869 angular.module('appenlight.controllers')
9868 angular.module('appenlight.controllers')
9870 .controller('ReportsListSlowController', ReportsListSlowController);
9869 .controller('ReportsListSlowController', ReportsListSlowController);
9871
9870
9872 ReportsListSlowController.$inject = ['$scope', '$location', '$cookies',
9871 ReportsListSlowController.$inject = ['$scope', '$location', '$cookies',
9873 'stateHolder', 'typeAheadTagHelper', 'slowReportsResource']
9872 'stateHolder', 'typeAheadTagHelper', 'slowReportsResource']
9874
9873
9875 function ReportsListSlowController($scope, $location, $cookies, stateHolder, typeAheadTagHelper, slowReportsResource) {
9874 function ReportsListSlowController($scope, $location, $cookies, stateHolder, typeAheadTagHelper, slowReportsResource) {
9876 var vm = this;
9875 var vm = this;
9877 vm.applications = stateHolder.AeUser.applications_map;
9876 vm.applications = stateHolder.AeUser.applications_map;
9878 stateHolder.section = 'slow_reports';
9877 stateHolder.section = 'slow_reports';
9879 vm.today = function () {
9878 vm.today = function () {
9880 vm.pickerDate = new Date();
9879 vm.pickerDate = new Date();
9881 };
9880 };
9882 vm.today();
9881 vm.today();
9883 vm.reportsPage = [];
9882 vm.reportsPage = [];
9884 vm.itemCount = 0;
9883 vm.itemCount = 0;
9885 vm.itemsPerPage = 250;
9884 vm.itemsPerPage = 250;
9886 typeAheadTagHelper.tags = [];
9885 typeAheadTagHelper.tags = [];
9887 vm.searchParams = {tags: [], page: 1, type: 'slow_report'};
9886 vm.searchParams = {tags: [], page: 1, type: 'slow_report'};
9888 vm.searchParams = parseSearchToTags($location.search());
9887 vm.searchParams = parseSearchToTags($location.search());
9889 vm.is_loading = false;
9888 vm.is_loading = false;
9890 vm.filterTypeAheadOptions = [
9889 vm.filterTypeAheadOptions = [
9891 {
9890 {
9892 type: 'view_name',
9891 type: 'view_name',
9893 text: 'view_name:',
9892 text: 'view_name:',
9894 'description': 'Query reports occured in specific views',
9893 'description': 'Query reports occured in specific views',
9895 tag: 'View Name',
9894 tag: 'View Name',
9896 example: "view_name:module.foo"
9895 example: "view_name:module.foo"
9897 },
9896 },
9898 {
9897 {
9899 type: 'resource',
9898 type: 'resource',
9900 text: 'resource:',
9899 text: 'resource:',
9901 'description': 'Restrict resultset to application',
9900 'description': 'Restrict resultset to application',
9902 tag: 'Application',
9901 tag: 'Application',
9903 example: "resource:ID"
9902 example: "resource:ID"
9904 },
9903 },
9905 {
9904 {
9906 type: 'priority',
9905 type: 'priority',
9907 text: 'priority:',
9906 text: 'priority:',
9908 'description': 'Show reports with specific priority',
9907 'description': 'Show reports with specific priority',
9909 example: 'priority:8',
9908 example: 'priority:8',
9910 tag: 'Priority'
9909 tag: 'Priority'
9911 },
9910 },
9912 {
9911 {
9913 type: 'min_occurences',
9912 type: 'min_occurences',
9914 text: 'min_occurences:',
9913 text: 'min_occurences:',
9915 'description': 'Show reports from groups with at least X occurences',
9914 'description': 'Show reports from groups with at least X occurences',
9916 example: 'min_occurences:25',
9915 example: 'min_occurences:25',
9917 tag: 'Min. occurences'
9916 tag: 'Min. occurences'
9918 },
9917 },
9919 {
9918 {
9920 type: 'min_duration',
9919 type: 'min_duration',
9921 text: 'min_duration:',
9920 text: 'min_duration:',
9922 'description': 'Show reports from groups with average duration >= Xs',
9921 'description': 'Show reports from groups with average duration >= Xs',
9923 example: 'min_duration:4.5',
9922 example: 'min_duration:4.5',
9924 tag: 'Min. duration'
9923 tag: 'Min. duration'
9925 },
9924 },
9926 {
9925 {
9927 type: 'url_path',
9926 type: 'url_path',
9928 text: 'url_path:',
9927 text: 'url_path:',
9929 'description': 'Show reports from specific URL paths',
9928 'description': 'Show reports from specific URL paths',
9930 example: 'url_path:/foo/bar/baz',
9929 example: 'url_path:/foo/bar/baz',
9931 tag: 'Url Path'
9930 tag: 'Url Path'
9932 },
9931 },
9933 {
9932 {
9934 type: 'url_domain',
9933 type: 'url_domain',
9935 text: 'url_domain:',
9934 text: 'url_domain:',
9936 'description': 'Show reports from specific domain',
9935 'description': 'Show reports from specific domain',
9937 example: 'url_domain:domain.com',
9936 example: 'url_domain:domain.com',
9938 tag: 'Domain'
9937 tag: 'Domain'
9939 },
9938 },
9940 {
9939 {
9941 type: 'request_id',
9940 type: 'request_id',
9942 text: 'request_id:',
9941 text: 'request_id:',
9943 'description': 'Show reports with specific request id',
9942 'description': 'Show reports with specific request id',
9944 example: "request_id:883143dc572e4c38aceae92af0ea5ae0",
9943 example: "request_id:883143dc572e4c38aceae92af0ea5ae0",
9945 tag: 'Request ID'
9944 tag: 'Request ID'
9946 },
9945 },
9947 {
9946 {
9948 type: 'report_status',
9947 type: 'report_status',
9949 text: 'report_status:',
9948 text: 'report_status:',
9950 'description': 'Show reports from groups with specific status',
9949 'description': 'Show reports from groups with specific status',
9951 example: 'report_status:never_reviewed',
9950 example: 'report_status:never_reviewed',
9952 tag: 'Status'
9951 tag: 'Status'
9953 },
9952 },
9954 {
9953 {
9955 type: 'server_name',
9954 type: 'server_name',
9956 text: 'server_name:',
9955 text: 'server_name:',
9957 'description': 'Show reports tagged with this key/value pair',
9956 'description': 'Show reports tagged with this key/value pair',
9958 example: 'server_name:hostname',
9957 example: 'server_name:hostname',
9959 tag: 'Tag'
9958 tag: 'Tag'
9960 },
9959 },
9961 {
9960 {
9962 type: 'start_date',
9961 type: 'start_date',
9963 text: 'start_date:',
9962 text: 'start_date:',
9964 'description': 'Show reports newer than this date (press TAB for dropdown)',
9963 'description': 'Show reports newer than this date (press TAB for dropdown)',
9965 example: 'start_date:2014-08-15T13:00',
9964 example: 'start_date:2014-08-15T13:00',
9966 tag: 'Start Date'
9965 tag: 'Start Date'
9967 },
9966 },
9968 {
9967 {
9969 type: 'end_date',
9968 type: 'end_date',
9970 text: 'end_date:',
9969 text: 'end_date:',
9971 'description': 'Show reports older than this date (press TAB for dropdown)',
9970 'description': 'Show reports older than this date (press TAB for dropdown)',
9972 example: 'start_date:2014-08-15T23:59',
9971 example: 'start_date:2014-08-15T23:59',
9973 tag: 'End Date'
9972 tag: 'End Date'
9974 }
9973 }
9975 ];
9974 ];
9976
9975
9977 vm.filterTypeAhead = undefined;
9976 vm.filterTypeAhead = undefined;
9978 vm.showDatePicker = false;
9977 vm.showDatePicker = false;
9979 vm.aheadFilter = typeAheadTagHelper.aheadFilter;
9978 vm.aheadFilter = typeAheadTagHelper.aheadFilter;
9980 vm.removeSearchTag = function (tag) {
9979 vm.removeSearchTag = function (tag) {
9981 $location.search(tag.type, null);
9980 $location.search(tag.type, null);
9982 };
9981 };
9983 vm.addSearchTag = function (tag) {
9982 vm.addSearchTag = function (tag) {
9984 $location.search(tag.type, tag.value);
9983 $location.search(tag.type, tag.value);
9985 };
9984 };
9986 vm.manualOpen = false;
9985 vm.manualOpen = false;
9987 vm.notRelativeTime = false;
9986 vm.notRelativeTime = false;
9988 if ($cookies.notRelativeTime) {
9987 if ($cookies.notRelativeTime) {
9989 vm.notRelativeTime = JSON.parse($cookies.notRelativeTime);
9988 vm.notRelativeTime = JSON.parse($cookies.notRelativeTime);
9990 }
9989 }
9991
9990
9992
9991
9993 vm.changeRelativeTime = function () {
9992 vm.changeRelativeTime = function () {
9994 $cookies.notRelativeTime = JSON.stringify(vm.notRelativeTime);
9993 $cookies.notRelativeTime = JSON.stringify(vm.notRelativeTime);
9995 };
9994 };
9996
9995
9997 _.each(_.range(1, 11), function (priority) {
9996 _.each(_.range(1, 11), function (priority) {
9998 vm.filterTypeAheadOptions.push({
9997 vm.filterTypeAheadOptions.push({
9999 type: 'priority',
9998 type: 'priority',
10000 text: 'priority:' + priority.toString(),
9999 text: 'priority:' + priority.toString(),
10001 description: 'Show entries with specific priority',
10000 description: 'Show entries with specific priority',
10002 example: 'priority:' + priority,
10001 example: 'priority:' + priority,
10003 tag: 'Priority'
10002 tag: 'Priority'
10004 });
10003 });
10005 });
10004 });
10006 _.each(['never_reviewed', 'reviewed', 'fixed', 'public'], function (status) {
10005 _.each(['never_reviewed', 'reviewed', 'fixed', 'public'], function (status) {
10007 vm.filterTypeAheadOptions.push({
10006 vm.filterTypeAheadOptions.push({
10008 type: 'report_status',
10007 type: 'report_status',
10009 text: 'report_status:' + status,
10008 text: 'report_status:' + status,
10010 'description': 'Show only reports with this status',
10009 'description': 'Show only reports with this status',
10011 example: 'report_status:' + status,
10010 example: 'report_status:' + status,
10012 tag: 'Status ' + status.toUpperCase()
10011 tag: 'Status ' + status.toUpperCase()
10013 });
10012 });
10014 });
10013 });
10015 _.each(stateHolder.AeUser.applications, function (item) {
10014 _.each(stateHolder.AeUser.applications, function (item) {
10016 vm.filterTypeAheadOptions.push({
10015 vm.filterTypeAheadOptions.push({
10017 type: 'resource',
10016 type: 'resource',
10018 text: 'resource:' + item.resource_id + ':' + item.resource_name,
10017 text: 'resource:' + item.resource_id + ':' + item.resource_name,
10019 example: 'resource:' + item.resource_id,
10018 example: 'resource:' + item.resource_id,
10020 'tag': item.resource_name,
10019 'tag': item.resource_name,
10021 'description': 'Restrict resultset to this application'
10020 'description': 'Restrict resultset to this application'
10022 });
10021 });
10023 });
10022 });
10024
10023
10025 vm.typeAheadTag = function (event) {
10024 vm.typeAheadTag = function (event) {
10026 var text = vm.filterTypeAhead;
10025 var text = vm.filterTypeAhead;
10027 if (_.isObject(vm.filterTypeAhead)) {
10026 if (_.isObject(vm.filterTypeAhead)) {
10028 text = vm.filterTypeAhead.text;
10027 text = vm.filterTypeAhead.text;
10029 }
10028 }
10030 ;
10029 ;
10031 if (!vm.filterTypeAhead) {
10030 if (!vm.filterTypeAhead) {
10032 return
10031 return
10033 }
10032 }
10034 var parsed = text.split(':');
10033 var parsed = text.split(':');
10035 var tag = {'type': null, 'value': null};
10034 var tag = {'type': null, 'value': null};
10036 // app tags have : twice
10035 // app tags have : twice
10037 if (parsed.length > 2 && parsed[0] == 'resource') {
10036 if (parsed.length > 2 && parsed[0] == 'resource') {
10038 tag.type = 'resource';
10037 tag.type = 'resource';
10039 tag.value = parsed[1];
10038 tag.value = parsed[1];
10040 }
10039 }
10041 // normal tag:value
10040 // normal tag:value
10042 else if (parsed.length > 1) {
10041 else if (parsed.length > 1) {
10043 tag.type = parsed[0];
10042 tag.type = parsed[0];
10044 var tagValue = parsed.slice(1);
10043 var tagValue = parsed.slice(1);
10045 if (tagValue) {
10044 if (tagValue) {
10046 tag.value = tagValue.join(':');
10045 tag.value = tagValue.join(':');
10047 }
10046 }
10048 }
10047 }
10049
10048
10050 // set datepicker hour based on type of field
10049 // set datepicker hour based on type of field
10051 if ('start_date:' == text) {
10050 if ('start_date:' == text) {
10052 vm.showDatePicker = true;
10051 vm.showDatePicker = true;
10053 vm.filterTypeAhead = 'start_date:' + moment(vm.pickerDate).utc().format();
10052 vm.filterTypeAhead = 'start_date:' + moment(vm.pickerDate).utc().format();
10054 }
10053 }
10055 else if ('end_date:' == text) {
10054 else if ('end_date:' == text) {
10056 vm.showDatePicker = true;
10055 vm.showDatePicker = true;
10057 vm.filterTypeAhead = 'end_date:' + moment(vm.pickerDate).utc().hour(23).minute(59).format();
10056 vm.filterTypeAhead = 'end_date:' + moment(vm.pickerDate).utc().hour(23).minute(59).format();
10058 }
10057 }
10059
10058
10060 if (event.keyCode != 13 || !tag.type || !tag.value) {
10059 if (event.keyCode != 13 || !tag.type || !tag.value) {
10061 return
10060 return
10062 }
10061 }
10063 vm.showDatePicker = false;
10062 vm.showDatePicker = false;
10064 // aka we selected one of main options
10063 // aka we selected one of main options
10065 $location.search(tag.type, tag.value);
10064 $location.search(tag.type, tag.value);
10066 // clear typeahead
10065 // clear typeahead
10067 vm.filterTypeAhead = undefined;
10066 vm.filterTypeAhead = undefined;
10068 }
10067 }
10069
10068
10070 vm.paginationChange = function(){
10069 vm.paginationChange = function(){
10071 $location.search('page', vm.searchParams.page);
10070 $location.search('page', vm.searchParams.page);
10072 }
10071 }
10073
10072
10074 vm.pickerDateChanged = function(){
10073 vm.pickerDateChanged = function(){
10075 if (vm.filterTypeAhead.indexOf('start_date:') == '0') {
10074 if (vm.filterTypeAhead.indexOf('start_date:') == '0') {
10076 vm.filterTypeAhead = 'start_date:' + moment(vm.pickerDate).utc().format();
10075 vm.filterTypeAhead = 'start_date:' + moment(vm.pickerDate).utc().format();
10077 }
10076 }
10078 else if (vm.filterTypeAhead.indexOf('end_date:') == '0') {
10077 else if (vm.filterTypeAhead.indexOf('end_date:') == '0') {
10079 vm.filterTypeAhead = 'end_date:' + moment(vm.pickerDate).utc().hour(23).minute(59).format();
10078 vm.filterTypeAhead = 'end_date:' + moment(vm.pickerDate).utc().hour(23).minute(59).format();
10080 }
10079 }
10081 vm.showDatePicker = false;
10080 vm.showDatePicker = false;
10082 }
10081 }
10083
10082
10084 var reportPresentation = function (report) {
10083 var reportPresentation = function (report) {
10085 report.presentation = {};
10084 report.presentation = {};
10086 if (report.group.public) {
10085 if (report.group.public) {
10087 report.presentation.className = 'public';
10086 report.presentation.className = 'public';
10088 report.presentation.tooltip = 'Public';
10087 report.presentation.tooltip = 'Public';
10089 }
10088 }
10090 else if (report.group.fixed) {
10089 else if (report.group.fixed) {
10091 report.presentation.className = 'fixed';
10090 report.presentation.className = 'fixed';
10092 report.presentation.tooltip = 'Fixed';
10091 report.presentation.tooltip = 'Fixed';
10093 }
10092 }
10094 else if (report.group.read) {
10093 else if (report.group.read) {
10095 report.presentation.className = 'reviewed';
10094 report.presentation.className = 'reviewed';
10096 report.presentation.tooltip = 'Reviewed';
10095 report.presentation.tooltip = 'Reviewed';
10097 }
10096 }
10098 else {
10097 else {
10099 report.presentation.className = 'new';
10098 report.presentation.className = 'new';
10100 report.presentation.tooltip = 'New';
10099 report.presentation.tooltip = 'New';
10101 }
10100 }
10102 return report;
10101 return report;
10103 }
10102 }
10104
10103
10105 vm.fetchReports = function (searchParams) {
10104 vm.fetchReports = function (searchParams) {
10106 vm.is_loading = true;
10105 vm.is_loading = true;
10107 slowReportsResource.query(searchParams, function (data, getResponseHeaders) {
10106 slowReportsResource.query(searchParams, function (data, getResponseHeaders) {
10108 var headers = getResponseHeaders();
10107 var headers = getResponseHeaders();
10109
10108
10110 vm.is_loading = false;
10109 vm.is_loading = false;
10111 vm.reportsPage = _.map(data, function (item) {
10110 vm.reportsPage = _.map(data, function (item) {
10112 return reportPresentation(item);
10111 return reportPresentation(item);
10113 });
10112 });
10114 vm.itemCount = headers['x-total-count'];
10113 vm.itemCount = headers['x-total-count'];
10115 vm.itemsPerPage = headers['x-items-per-page'];
10114 vm.itemsPerPage = headers['x-items-per-page'];
10116 }, function () {
10115 }, function () {
10117 vm.is_loading = false;
10116 vm.is_loading = false;
10118 });
10117 });
10119 }
10118 }
10120
10119
10121 vm.filterId = function (log) {
10120 vm.filterId = function (log) {
10122 vm.searchParams.tags.push({
10121 vm.searchParams.tags.push({
10123 type: "request_id",
10122 type: "request_id",
10124 value: log.request_id
10123 value: log.request_id
10125 });
10124 });
10126 }
10125 }
10127 //initial load
10126 //initial load
10128 var params = parseTagsToSearch(vm.searchParams);
10127 var params = parseTagsToSearch(vm.searchParams);
10129 vm.fetchReports(params);
10128 vm.fetchReports(params);
10130
10129
10131 $scope.$on('$locationChangeSuccess', function () {
10130 $scope.$on('$locationChangeSuccess', function () {
10132
10131
10133 vm.searchParams = parseSearchToTags($location.search());
10132 vm.searchParams = parseSearchToTags($location.search());
10134 var params = parseTagsToSearch(vm.searchParams);
10133 var params = parseTagsToSearch(vm.searchParams);
10135
10134
10136 if (vm.is_loading === false) {
10135 if (vm.is_loading === false) {
10137
10136
10138 vm.fetchReports(params);
10137 vm.fetchReports(params);
10139 }
10138 }
10140 });
10139 });
10141
10140
10142
10141
10143 }
10142 }
10144
10143
10145 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
10144 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
10146 // #
10145 // #
10147 // # This program is free software: you can redistribute it and/or modify
10146 // # This program is free software: you can redistribute it and/or modify
10148 // # it under the terms of the GNU Affero General Public License, version 3
10147 // # it under the terms of the GNU Affero General Public License, version 3
10149 // # (only), as published by the Free Software Foundation.
10148 // # (only), as published by the Free Software Foundation.
10150 // #
10149 // #
10151 // # This program is distributed in the hope that it will be useful,
10150 // # This program is distributed in the hope that it will be useful,
10152 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
10151 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
10153 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10152 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10154 // # GNU General Public License for more details.
10153 // # GNU General Public License for more details.
10155 // #
10154 // #
10156 // # You should have received a copy of the GNU Affero General Public License
10155 // # You should have received a copy of the GNU Affero General Public License
10157 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
10156 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
10158 // #
10157 // #
10159 // # This program is dual-licensed. If you wish to learn more about the
10158 // # This program is dual-licensed. If you wish to learn more about the
10160 // # AppEnlight Enterprise Edition, including its added features, Support
10159 // # AppEnlight Enterprise Edition, including its added features, Support
10161 // # services, and proprietary license terms, please see
10160 // # services, and proprietary license terms, please see
10162 // # https://rhodecode.com/licenses/
10161 // # https://rhodecode.com/licenses/
10163
10162
10164 angular.module('appenlight.controllers')
10163 angular.module('appenlight.controllers')
10165 .controller('ReportsListController', ReportsListController);
10164 .controller('ReportsListController', ReportsListController);
10166
10165
10167 ReportsListController.$inject = ['$scope', '$location', '$cookies',
10166 ReportsListController.$inject = ['$scope', '$location', '$cookies',
10168 'stateHolder', 'typeAheadTagHelper', 'reportsResource'];
10167 'stateHolder', 'typeAheadTagHelper', 'reportsResource'];
10169
10168
10170 function ReportsListController($scope, $location, $cookies, stateHolder,
10169 function ReportsListController($scope, $location, $cookies, stateHolder,
10171 typeAheadTagHelper, reportsResource) {
10170 typeAheadTagHelper, reportsResource) {
10172 var vm = this;
10171 var vm = this;
10173 vm.applications = stateHolder.AeUser.applications_map;
10172 vm.applications = stateHolder.AeUser.applications_map;
10174 stateHolder.section = 'reports';
10173 stateHolder.section = 'reports';
10175 vm.today = function () {
10174 vm.today = function () {
10176 vm.pickerDate = new Date();
10175 vm.pickerDate = new Date();
10177 };
10176 };
10178 vm.today();
10177 vm.today();
10179 vm.reportsPage = [];
10178 vm.reportsPage = [];
10180 vm.itemCount = 0;
10179 vm.itemCount = 0;
10181 vm.itemsPerPage = 250;
10180 vm.itemsPerPage = 250;
10182 typeAheadTagHelper.tags = [];
10181 typeAheadTagHelper.tags = [];
10183 vm.searchParams = {tags: [], page: 1, type: 'report'};
10182 vm.searchParams = {tags: [], page: 1, type: 'report'};
10184 vm.searchParams = parseSearchToTags($location.search());
10183 vm.searchParams = parseSearchToTags($location.search());
10185 vm.is_loading = false;
10184 vm.is_loading = false;
10186 vm.filterTypeAheadOptions = [
10185 vm.filterTypeAheadOptions = [
10187 {
10186 {
10188 type: 'error',
10187 type: 'error',
10189 text: 'error:',
10188 text: 'error:',
10190 'description': 'Full-text search in your reports',
10189 'description': 'Full-text search in your reports',
10191 example: 'error:text-im-looking-for',
10190 example: 'error:text-im-looking-for',
10192 tag: 'Error'
10191 tag: 'Error'
10193 },
10192 },
10194 {
10193 {
10195 type: 'view_name',
10194 type: 'view_name',
10196 text: 'view_name:',
10195 text: 'view_name:',
10197 'description': 'Query reports occured in specific views',
10196 'description': 'Query reports occured in specific views',
10198 example: "view_name:module.foo",
10197 example: "view_name:module.foo",
10199 tag: 'View Name'
10198 tag: 'View Name'
10200 },
10199 },
10201 {
10200 {
10202 type: 'resource',
10201 type: 'resource',
10203 text: 'resource:',
10202 text: 'resource:',
10204 'description': 'Restrict resultset to application',
10203 'description': 'Restrict resultset to application',
10205 example: "resource:ID",
10204 example: "resource:ID",
10206 tag: 'Application'
10205 tag: 'Application'
10207 },
10206 },
10208 {
10207 {
10209 type: 'priority',
10208 type: 'priority',
10210 text: 'priority:',
10209 text: 'priority:',
10211 'description': 'Show reports with specific priority',
10210 'description': 'Show reports with specific priority',
10212 example: 'priority:8',
10211 example: 'priority:8',
10213 tag: 'Priority'
10212 tag: 'Priority'
10214 },
10213 },
10215 {
10214 {
10216 type: 'min_occurences',
10215 type: 'min_occurences',
10217 text: 'min_occurences:',
10216 text: 'min_occurences:',
10218 'description': 'Show reports from groups with at least X occurences',
10217 'description': 'Show reports from groups with at least X occurences',
10219 example: 'min_occurences:25',
10218 example: 'min_occurences:25',
10220 tag: 'Occurences'
10219 tag: 'Occurences'
10221 },
10220 },
10222 {
10221 {
10223 type: 'url_path',
10222 type: 'url_path',
10224 text: 'url_path:',
10223 text: 'url_path:',
10225 'description': 'Show reports from specific URL paths',
10224 'description': 'Show reports from specific URL paths',
10226 example: 'url_path:/foo/bar/baz',
10225 example: 'url_path:/foo/bar/baz',
10227 tag: 'Url Path'
10226 tag: 'Url Path'
10228 },
10227 },
10229 {
10228 {
10230 type: 'url_domain',
10229 type: 'url_domain',
10231 text: 'url_domain:',
10230 text: 'url_domain:',
10232 'description': 'Show reports from specific domain',
10231 'description': 'Show reports from specific domain',
10233 example: 'url_domain:domain.com',
10232 example: 'url_domain:domain.com',
10234 tag: 'Domain'
10233 tag: 'Domain'
10235 },
10234 },
10236 {
10235 {
10237 type: 'report_status',
10236 type: 'report_status',
10238 text: 'report_status:',
10237 text: 'report_status:',
10239 'description': 'Show reports from groups with specific status',
10238 'description': 'Show reports from groups with specific status',
10240 example: 'report_status:never_reviewed',
10239 example: 'report_status:never_reviewed',
10241 tag: 'Status'
10240 tag: 'Status'
10242 },
10241 },
10243 {
10242 {
10244 type: 'request_id',
10243 type: 'request_id',
10245 text: 'request_id:',
10244 text: 'request_id:',
10246 'description': 'Show reports with specific request id',
10245 'description': 'Show reports with specific request id',
10247 example: "request_id:883143dc572e4c38aceae92af0ea5ae0",
10246 example: "request_id:883143dc572e4c38aceae92af0ea5ae0",
10248 tag: 'Request ID'
10247 tag: 'Request ID'
10249 },
10248 },
10250 {
10249 {
10251 type: 'server_name',
10250 type: 'server_name',
10252 text: 'server_name:',
10251 text: 'server_name:',
10253 'description': 'Show reports tagged with this key/value pair',
10252 'description': 'Show reports tagged with this key/value pair',
10254 example: 'server_name:hostname',
10253 example: 'server_name:hostname',
10255 tag: 'Tag'
10254 tag: 'Tag'
10256 },
10255 },
10257 {
10256 {
10258 type: 'http_status',
10257 type: 'http_status',
10259 text: 'http_status:',
10258 text: 'http_status:',
10260 'description': 'Show reports with specific HTTP status code',
10259 'description': 'Show reports with specific HTTP status code',
10261 example: "http_status:",
10260 example: "http_status:",
10262 tag: 'HTTP Status'
10261 tag: 'HTTP Status'
10263 },
10262 },
10264 {
10263 {
10265 type: 'http_status',
10264 type: 'http_status',
10266 text: 'http_status:500',
10265 text: 'http_status:500',
10267 'description': 'Show reports with specific HTTP status code',
10266 'description': 'Show reports with specific HTTP status code',
10268 example: "http_status:500",
10267 example: "http_status:500",
10269 tag: 'HTTP Status'
10268 tag: 'HTTP Status'
10270 },
10269 },
10271 {
10270 {
10272 type: 'http_status',
10271 type: 'http_status',
10273 text: 'http_status:404',
10272 text: 'http_status:404',
10274 'description': 'Include 404 reports in your search',
10273 'description': 'Include 404 reports in your search',
10275 example: "http_status:404",
10274 example: "http_status:404",
10276 tag: 'HTTP Status'
10275 tag: 'HTTP Status'
10277 },
10276 },
10278 {
10277 {
10279 type: 'start_date',
10278 type: 'start_date',
10280 text: 'start_date:',
10279 text: 'start_date:',
10281 'description': 'Show reports newer than this date (press TAB for dropdown)',
10280 'description': 'Show reports newer than this date (press TAB for dropdown)',
10282 example: 'start_date:2014-08-15T13:00',
10281 example: 'start_date:2014-08-15T13:00',
10283 tag: 'Start Date'
10282 tag: 'Start Date'
10284 },
10283 },
10285 {
10284 {
10286 type: 'end_date',
10285 type: 'end_date',
10287 text: 'end_date:',
10286 text: 'end_date:',
10288 'description': 'Show reports older than this date (press TAB for dropdown)',
10287 'description': 'Show reports older than this date (press TAB for dropdown)',
10289 example: 'start_date:2014-08-15T23:59',
10288 example: 'start_date:2014-08-15T23:59',
10290 tag: 'End Date'
10289 tag: 'End Date'
10291 }
10290 }
10292 ];
10291 ];
10293
10292
10294 vm.filterTypeAhead = undefined;
10293 vm.filterTypeAhead = undefined;
10295 vm.showDatePicker = false;
10294 vm.showDatePicker = false;
10296 vm.manualOpen = false;
10295 vm.manualOpen = false;
10297 vm.aheadFilter = typeAheadTagHelper.aheadFilter;
10296 vm.aheadFilter = typeAheadTagHelper.aheadFilter;
10298 vm.removeSearchTag = function (tag) {
10297 vm.removeSearchTag = function (tag) {
10299 $location.search(tag.type, null);
10298 $location.search(tag.type, null);
10300 };
10299 };
10301 vm.addSearchTag = function (tag) {
10300 vm.addSearchTag = function (tag) {
10302 $location.search(tag.type, tag.value);
10301 $location.search(tag.type, tag.value);
10303 };
10302 };
10304 vm.notRelativeTime = false;
10303 vm.notRelativeTime = false;
10305 if ($cookies.notRelativeTime) {
10304 if ($cookies.notRelativeTime) {
10306 vm.notRelativeTime = JSON.parse($cookies.notRelativeTime);
10305 vm.notRelativeTime = JSON.parse($cookies.notRelativeTime);
10307 }
10306 }
10308
10307
10309 vm.changeRelativeTime = function () {
10308 vm.changeRelativeTime = function () {
10310 $cookies.notRelativeTime = JSON.stringify(vm.notRelativeTime);
10309 $cookies.notRelativeTime = JSON.stringify(vm.notRelativeTime);
10311 }
10310 }
10312
10311
10313 _.each(_.range(1, 11), function (priority) {
10312 _.each(_.range(1, 11), function (priority) {
10314 vm.filterTypeAheadOptions.push({
10313 vm.filterTypeAheadOptions.push({
10315 type: 'priority',
10314 type: 'priority',
10316 text: 'priority:' + priority.toString(),
10315 text: 'priority:' + priority.toString(),
10317 description: 'Show entries with specific priority',
10316 description: 'Show entries with specific priority',
10318 example: 'priority:' + priority,
10317 example: 'priority:' + priority,
10319 tag: 'Priority'
10318 tag: 'Priority'
10320 });
10319 });
10321 });
10320 });
10322 _.each(['never_reviewed', 'reviewed', 'fixed', 'public'], function (status) {
10321 _.each(['never_reviewed', 'reviewed', 'fixed', 'public'], function (status) {
10323 vm.filterTypeAheadOptions.push({
10322 vm.filterTypeAheadOptions.push({
10324 type: 'report_status',
10323 type: 'report_status',
10325 text: 'report_status:' + status,
10324 text: 'report_status:' + status,
10326 'description': 'Show only reports with this status',
10325 'description': 'Show only reports with this status',
10327 example: 'report_status:' + status,
10326 example: 'report_status:' + status,
10328 tag: 'Status ' + status.toUpperCase()
10327 tag: 'Status ' + status.toUpperCase()
10329 });
10328 });
10330 });
10329 });
10331 _.each(stateHolder.AeUser.applications, function (item) {
10330 _.each(stateHolder.AeUser.applications, function (item) {
10332 vm.filterTypeAheadOptions.push({
10331 vm.filterTypeAheadOptions.push({
10333 type: 'resource',
10332 type: 'resource',
10334 text: 'resource:' + item.resource_id + ':' + item.resource_name,
10333 text: 'resource:' + item.resource_id + ':' + item.resource_name,
10335 example: 'resource:' + item.resource_id,
10334 example: 'resource:' + item.resource_id,
10336 'tag': item.resource_name,
10335 'tag': item.resource_name,
10337 'description': 'Restrict resultset to this application'
10336 'description': 'Restrict resultset to this application'
10338 });
10337 });
10339 });
10338 });
10340
10339
10341 vm.paginationChange = function(){
10340 vm.paginationChange = function(){
10342 $location.search('page', vm.searchParams.page);
10341 $location.search('page', vm.searchParams.page);
10343 };
10342 };
10344
10343
10345 vm.typeAheadTag = function (event) {
10344 vm.typeAheadTag = function (event) {
10346 var text = vm.filterTypeAhead;
10345 var text = vm.filterTypeAhead;
10347 if (_.isObject(vm.filterTypeAhead)) {
10346 if (_.isObject(vm.filterTypeAhead)) {
10348 text = vm.filterTypeAhead.text;
10347 text = vm.filterTypeAhead.text;
10349 }
10348 }
10350 if (!vm.filterTypeAhead) {
10349 if (!vm.filterTypeAhead) {
10351 return
10350 return
10352 }
10351 }
10353
10352
10354 var parsed = text.split(':');
10353 var parsed = text.split(':');
10355 var tag = {'type': null, 'value': null};
10354 var tag = {'type': null, 'value': null};
10356 // app tags have : twice
10355 // app tags have : twice
10357 if (parsed.length > 2 && parsed[0] == 'resource') {
10356 if (parsed.length > 2 && parsed[0] == 'resource') {
10358 tag.type = 'resource';
10357 tag.type = 'resource';
10359 tag.value = parsed[1];
10358 tag.value = parsed[1];
10360 }
10359 }
10361 // normal tag:value
10360 // normal tag:value
10362 else if (parsed.length > 1) {
10361 else if (parsed.length > 1) {
10363 tag.type = parsed[0];
10362 tag.type = parsed[0];
10364 var tagValue = parsed.slice(1);
10363 var tagValue = parsed.slice(1);
10365 if (tagValue) {
10364 if (tagValue) {
10366 tag.value = tagValue.join(':');
10365 tag.value = tagValue.join(':');
10367 }
10366 }
10368 }
10367 }
10369 else {
10368 else {
10370 tag.type = 'error';
10369 tag.type = 'error';
10371 tag.value = parsed.join(':');
10370 tag.value = parsed.join(':');
10372 }
10371 }
10373
10372
10374 // set datepicker hour based on type of field
10373 // set datepicker hour based on type of field
10375 if ('start_date:' == text) {
10374 if ('start_date:' == text) {
10376 vm.showDatePicker = true;
10375 vm.showDatePicker = true;
10377 vm.filterTypeAhead = 'start_date:' + moment(vm.pickerDate).utc().format();
10376 vm.filterTypeAhead = 'start_date:' + moment(vm.pickerDate).utc().format();
10378 }
10377 }
10379 else if ('end_date:' == text) {
10378 else if ('end_date:' == text) {
10380 vm.showDatePicker = true;
10379 vm.showDatePicker = true;
10381 vm.filterTypeAhead = 'end_date:' + moment(vm.pickerDate).utc().hour(23).minute(59).format();
10380 vm.filterTypeAhead = 'end_date:' + moment(vm.pickerDate).utc().hour(23).minute(59).format();
10382 }
10381 }
10383
10382
10384 if (event.keyCode != 13 || !tag.type || !tag.value) {
10383 if (event.keyCode != 13 || !tag.type || !tag.value) {
10385 return
10384 return
10386 }
10385 }
10387 vm.showDatePicker = false;
10386 vm.showDatePicker = false;
10388 // aka we selected one of main options
10387 // aka we selected one of main options
10389 $location.search(tag.type, tag.value);
10388 $location.search(tag.type, tag.value);
10390 // clear typeahead
10389 // clear typeahead
10391 vm.filterTypeAhead = undefined;
10390 vm.filterTypeAhead = undefined;
10392 }
10391 }
10393
10392
10394 vm.pickerDateChanged = function(){
10393 vm.pickerDateChanged = function(){
10395 if (vm.filterTypeAhead.indexOf('start_date:') == '0') {
10394 if (vm.filterTypeAhead.indexOf('start_date:') == '0') {
10396 vm.filterTypeAhead = 'start_date:' + moment(vm.pickerDate).utc().format();
10395 vm.filterTypeAhead = 'start_date:' + moment(vm.pickerDate).utc().format();
10397 }
10396 }
10398 else if (vm.filterTypeAhead.indexOf('end_date:') == '0') {
10397 else if (vm.filterTypeAhead.indexOf('end_date:') == '0') {
10399 vm.filterTypeAhead = 'end_date:' + moment(vm.pickerDate).utc().hour(23).minute(59).format();
10398 vm.filterTypeAhead = 'end_date:' + moment(vm.pickerDate).utc().hour(23).minute(59).format();
10400 }
10399 }
10401 vm.showDatePicker = false;
10400 vm.showDatePicker = false;
10402 };
10401 };
10403
10402
10404 var reportPresentation = function (report) {
10403 var reportPresentation = function (report) {
10405 report.presentation = {};
10404 report.presentation = {};
10406 if (report.group.public) {
10405 if (report.group.public) {
10407 report.presentation.className = 'public';
10406 report.presentation.className = 'public';
10408 report.presentation.tooltip = 'Public';
10407 report.presentation.tooltip = 'Public';
10409 }
10408 }
10410 else if (report.group.fixed) {
10409 else if (report.group.fixed) {
10411 report.presentation.className = 'fixed';
10410 report.presentation.className = 'fixed';
10412 report.presentation.tooltip = 'Fixed';
10411 report.presentation.tooltip = 'Fixed';
10413 }
10412 }
10414 else if (report.group.read) {
10413 else if (report.group.read) {
10415 report.presentation.className = 'reviewed';
10414 report.presentation.className = 'reviewed';
10416 report.presentation.tooltip = 'Reviewed';
10415 report.presentation.tooltip = 'Reviewed';
10417 }
10416 }
10418 else {
10417 else {
10419 report.presentation.className = 'new';
10418 report.presentation.className = 'new';
10420 report.presentation.tooltip = 'New';
10419 report.presentation.tooltip = 'New';
10421 }
10420 }
10422 return report;
10421 return report;
10423 };
10422 };
10424
10423
10425 vm.fetchReports = function (searchParams) {
10424 vm.fetchReports = function (searchParams) {
10426 vm.is_loading = true;
10425 vm.is_loading = true;
10427 reportsResource.query(searchParams, function (data, getResponseHeaders) {
10426 reportsResource.query(searchParams, function (data, getResponseHeaders) {
10428 var headers = getResponseHeaders();
10427 var headers = getResponseHeaders();
10429
10428
10430 vm.is_loading = false;
10429 vm.is_loading = false;
10431 vm.reportsPage = _.map(data, function (item) {
10430 vm.reportsPage = _.map(data, function (item) {
10432 return reportPresentation(item);
10431 return reportPresentation(item);
10433 });
10432 });
10434 vm.itemCount = headers['x-total-count'];
10433 vm.itemCount = headers['x-total-count'];
10435 vm.itemsPerPage = headers['x-items-per-page'];
10434 vm.itemsPerPage = headers['x-items-per-page'];
10436 }, function () {
10435 }, function () {
10437 vm.is_loading = false;
10436 vm.is_loading = false;
10438 });
10437 });
10439 };
10438 };
10440
10439
10441 vm.filterId = function (log) {
10440 vm.filterId = function (log) {
10442 vm.searchParams.tags.push({
10441 vm.searchParams.tags.push({
10443 type: "request_id",
10442 type: "request_id",
10444 value: log.request_id
10443 value: log.request_id
10445 });
10444 });
10446 };
10445 };
10447 // initial load
10446 // initial load
10448 var params = parseTagsToSearch(vm.searchParams);
10447 var params = parseTagsToSearch(vm.searchParams);
10449 vm.fetchReports(params);
10448 vm.fetchReports(params);
10450
10449
10451 $scope.$on('$locationChangeSuccess', function () {
10450 $scope.$on('$locationChangeSuccess', function () {
10452
10451
10453 vm.searchParams = parseSearchToTags($location.search());
10452 vm.searchParams = parseSearchToTags($location.search());
10454 var params = parseTagsToSearch(vm.searchParams);
10453 var params = parseTagsToSearch(vm.searchParams);
10455
10454
10456 if (vm.is_loading === false) {
10455 if (vm.is_loading === false) {
10457
10456
10458 vm.fetchReports(params);
10457 vm.fetchReports(params);
10459 }
10458 }
10460
10459
10461 });
10460 });
10462
10461
10463
10462
10464 }
10463 }
10465
10464
10466 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
10465 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
10467 // #
10466 // #
10468 // # This program is free software: you can redistribute it and/or modify
10467 // # This program is free software: you can redistribute it and/or modify
10469 // # it under the terms of the GNU Affero General Public License, version 3
10468 // # it under the terms of the GNU Affero General Public License, version 3
10470 // # (only), as published by the Free Software Foundation.
10469 // # (only), as published by the Free Software Foundation.
10471 // #
10470 // #
10472 // # This program is distributed in the hope that it will be useful,
10471 // # This program is distributed in the hope that it will be useful,
10473 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
10472 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
10474 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10473 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10475 // # GNU General Public License for more details.
10474 // # GNU General Public License for more details.
10476 // #
10475 // #
10477 // # You should have received a copy of the GNU Affero General Public License
10476 // # You should have received a copy of the GNU Affero General Public License
10478 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
10477 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
10479 // #
10478 // #
10480 // # This program is dual-licensed. If you wish to learn more about the
10479 // # This program is dual-licensed. If you wish to learn more about the
10481 // # AppEnlight Enterprise Edition, including its added features, Support
10480 // # AppEnlight Enterprise Edition, including its added features, Support
10482 // # services, and proprietary license terms, please see
10481 // # services, and proprietary license terms, please see
10483 // # https://rhodecode.com/licenses/
10482 // # https://rhodecode.com/licenses/
10484
10483
10485 angular.module('appenlight.controllers').controller('ReportsViewController', ReportsViewController);
10484 angular.module('appenlight.controllers').controller('ReportsViewController', ReportsViewController);
10486 ReportsViewController.$inject = ['$window', '$location', '$state', '$uibModal',
10485 ReportsViewController.$inject = ['$window', '$location', '$state', '$uibModal',
10487 '$cookies', 'reportGroupPropertyResource', 'reportGroupResource',
10486 '$cookies', 'reportGroupPropertyResource', 'reportGroupResource',
10488 'logsNoIdResource', 'stateHolder'];
10487 'logsNoIdResource', 'stateHolder'];
10489
10488
10490 function ReportsViewController($window, $location, $state, $uibModal, $cookies, reportGroupPropertyResource, reportGroupResource, logsNoIdResource, stateHolder) {
10489 function ReportsViewController($window, $location, $state, $uibModal, $cookies, reportGroupPropertyResource, reportGroupResource, logsNoIdResource, stateHolder) {
10491 var vm = this;
10490 var vm = this;
10492 vm.window = $window;
10491 vm.window = $window;
10493 vm.stateHolder = stateHolder;
10492 vm.stateHolder = stateHolder;
10494 vm.$state = $state;
10493 vm.$state = $state;
10495 vm.reportHistoryConfig = {
10494 vm.reportHistoryConfig = {
10496 data: {
10495 data: {
10497 json: [],
10496 json: [],
10498 xFormat: '%Y-%m-%dT%H:%M:%S'
10497 xFormat: '%Y-%m-%dT%H:%M:%S'
10499 },
10498 },
10500 color: {
10499 color: {
10501 pattern: ['#6baed6', '#e6550d', '#74c476', '#fdd0a2', '#8c564b']
10500 pattern: ['#6baed6', '#e6550d', '#74c476', '#fdd0a2', '#8c564b']
10502 },
10501 },
10503 axis: {
10502 axis: {
10504 x: {
10503 x: {
10505 type: 'timeseries',
10504 type: 'timeseries',
10506 tick: {
10505 tick: {
10507 format: '%Y-%m-%d'
10506 format: '%Y-%m-%d'
10508 }
10507 }
10509 },
10508 },
10510 y: {
10509 y: {
10511 tick: {
10510 tick: {
10512 count: 5,
10511 count: 5,
10513 format: d3.format('.2s')
10512 format: d3.format('.2s')
10514 }
10513 }
10515 }
10514 }
10516 },
10515 },
10517 subchart: {
10516 subchart: {
10518 show: true,
10517 show: true,
10519 size: {
10518 size: {
10520 height: 20
10519 height: 20
10521 }
10520 }
10522 },
10521 },
10523 size: {
10522 size: {
10524 height: 250
10523 height: 250
10525 },
10524 },
10526 zoom: {
10525 zoom: {
10527 rescale: true
10526 rescale: true
10528 },
10527 },
10529 grid: {
10528 grid: {
10530 x: {
10529 x: {
10531 show: true
10530 show: true
10532 },
10531 },
10533 y: {
10532 y: {
10534 show: true
10533 show: true
10535 }
10534 }
10536 },
10535 },
10537 tooltip: {
10536 tooltip: {
10538 format: {
10537 format: {
10539 title: function (d) {
10538 title: function (d) {
10540 return '' + d;
10539 return '' + d;
10541 },
10540 },
10542 value: function (v) {
10541 value: function (v) {
10543 return v
10542 return v
10544 }
10543 }
10545 }
10544 }
10546 }
10545 }
10547 };
10546 };
10548 vm.mentionedPeople = [];
10547 vm.mentionedPeople = [];
10549 vm.reportHistoryData = {};
10548 vm.reportHistoryData = {};
10550 vm.textTraceback = true;
10549 vm.textTraceback = true;
10551 vm.rawTraceback = '';
10550 vm.rawTraceback = '';
10552 vm.traceback = '';
10551 vm.traceback = '';
10553 vm.reportType = 'report';
10552 vm.reportType = 'report';
10554 vm.report = null;
10553 vm.report = null;
10555 vm.showLong = false;
10554 vm.showLong = false;
10556 vm.reportLogs = null;
10555 vm.reportLogs = null;
10557 vm.requestStats = null;
10556 vm.requestStats = null;
10558 vm.comment = null;
10557 vm.comment = null;
10559 vm.is_loading = {
10558 vm.is_loading = {
10560 report: true,
10559 report: true,
10561 logs: true,
10560 logs: true,
10562 history: true
10561 history: true
10563 };
10562 };
10564
10563
10565 vm.searchMentionedPeople = function(term){
10564 vm.searchMentionedPeople = function(term){
10566 //vm.mentionedPeople = [];
10565 //vm.mentionedPeople = [];
10567 var term = term.toLowerCase();
10566 var term = term.toLowerCase();
10568 reportGroupPropertyResource.get({
10567 reportGroupPropertyResource.get({
10569 groupId: vm.report.group_id,
10568 groupId: vm.report.group_id,
10570 key: 'assigned_users'
10569 key: 'assigned_users'
10571 }, null,
10570 }, null,
10572 function (data) {
10571 function (data) {
10573 var users = [];
10572 var users = [];
10574 _.each(data.assigned, function(u){
10573 _.each(data.assigned, function(u){
10575 users.push({label: u.user_name});
10574 users.push({label: u.user_name});
10576 });
10575 });
10577 _.each(data.unassigned, function(u){
10576 _.each(data.unassigned, function(u){
10578 users.push({label: u.user_name});
10577 users.push({label: u.user_name});
10579 });
10578 });
10580
10579
10581 var result = _.filter(users, function(u){
10580 var result = _.filter(users, function(u){
10582 return u.label.toLowerCase().indexOf(term) !== -1;
10581 return u.label.toLowerCase().indexOf(term) !== -1;
10583 });
10582 });
10584 vm.mentionedPeople = result;
10583 vm.mentionedPeople = result;
10585 });
10584 });
10586 };
10585 };
10587
10586
10588 vm.searchTag = function (tag, value) {
10587 vm.searchTag = function (tag, value) {
10589
10588
10590 if (vm.report.report_type === 3) {
10589 if (vm.report.report_type === 3) {
10591 $location.url($state.href('report.list_slow'));
10590 $location.url($state.href('report.list_slow'));
10592 }
10591 }
10593 else {
10592 else {
10594 $location.url($state.href('report.list'));
10593 $location.url($state.href('report.list'));
10595 }
10594 }
10596 $location.search(tag, value);
10595 $location.search(tag, value);
10597 };
10596 };
10598
10597
10599 vm.tabs = {
10598 vm.tabs = {
10600 slow_calls:false,
10599 slow_calls:false,
10601 request_details:false,
10600 request_details:false,
10602 logs:false,
10601 logs:false,
10603 comments:false,
10602 comments:false,
10604 affected_users:false
10603 affected_users:false
10605 };
10604 };
10606 if ($cookies.selectedReportTab) {
10605 if ($cookies.selectedReportTab) {
10607 vm.tabs[$cookies.selectedReportTab] = true;
10606 vm.tabs[$cookies.selectedReportTab] = true;
10608 }
10607 }
10609 else{
10608 else{
10610 $cookies.selectedReportTab = 'request_details';
10609 $cookies.selectedReportTab = 'request_details';
10611 vm.tabs.request_details = true;
10610 vm.tabs.request_details = true;
10612 }
10611 }
10613
10612
10614 vm.fetchLogs = function () {
10613 vm.fetchLogs = function () {
10615 if (!vm.report.request_id){
10614 if (!vm.report.request_id){
10616 return
10615 return
10617 }
10616 }
10618 vm.is_loading.logs = true;
10617 vm.is_loading.logs = true;
10619 logsNoIdResource.query({request_id: vm.report.request_id},
10618 logsNoIdResource.query({request_id: vm.report.request_id},
10620 function (data) {
10619 function (data) {
10621 vm.is_loading.logs = false;
10620 vm.is_loading.logs = false;
10622 vm.reportLogs = data;
10621 vm.reportLogs = data;
10623 }, function () {
10622 }, function () {
10624 vm.is_loading.logs = false;
10623 vm.is_loading.logs = false;
10625 });
10624 });
10626 };
10625 };
10627 vm.addComment = function () {
10626 vm.addComment = function () {
10628 reportGroupPropertyResource.save({
10627 reportGroupPropertyResource.save({
10629 groupId: vm.report.group_id,
10628 groupId: vm.report.group_id,
10630 key: 'comments'
10629 key: 'comments'
10631 }, {body: vm.comment},
10630 }, {body: vm.comment},
10632 function (data) {
10631 function (data) {
10633 vm.report.comments.push(data);
10632 vm.report.comments.push(data);
10634 });
10633 });
10635 vm.comment = '';
10634 vm.comment = '';
10636 };
10635 };
10637
10636
10638 vm.fetchReport = function () {
10637 vm.fetchReport = function () {
10639 vm.is_loading.report = true;
10638 vm.is_loading.report = true;
10640 reportGroupResource.get($state.params, function (data) {
10639 reportGroupResource.get($state.params, function (data) {
10641 vm.is_loading.report = false;
10640 vm.is_loading.report = false;
10642 if (data.request) {
10641 if (data.request) {
10643 try {
10642 try {
10644 var to_sort = _.pairs(data.request);
10643 var to_sort = _.pairs(data.request);
10645 data.request = _.object(_.sortBy(to_sort, function (i) {
10644 data.request = _.object(_.sortBy(to_sort, function (i) {
10646 return i[0]
10645 return i[0]
10647 }));
10646 }));
10648 }
10647 }
10649 catch (err) {
10648 catch (err) {
10650 }
10649 }
10651 }
10650 }
10652 vm.report = data;
10651 vm.report = data;
10653 if (vm.report.req_stats) {
10652 if (vm.report.req_stats) {
10654 vm.requestStats = [];
10653 vm.requestStats = [];
10655 _.each(_.pairs(vm.report.req_stats['percentages']), function (p) {
10654 _.each(_.pairs(vm.report.req_stats['percentages']), function (p) {
10656 vm.requestStats.push({
10655 vm.requestStats.push({
10657 name: p[0],
10656 name: p[0],
10658 value: vm.report.req_stats[p[0]].toFixed(3),
10657 value: vm.report.req_stats[p[0]].toFixed(3),
10659 percent: p[1],
10658 percent: p[1],
10660 calls: vm.report.req_stats[p[0] + '_calls']
10659 calls: vm.report.req_stats[p[0] + '_calls']
10661 })
10660 })
10662 });
10661 });
10663 }
10662 }
10664 vm.traceback = data.traceback;
10663 vm.traceback = data.traceback;
10665 _.each(vm.traceback, function (frame) {
10664 _.each(vm.traceback, function (frame) {
10666 if (frame.line) {
10665 if (frame.line) {
10667 vm.rawTraceback += 'File ' + frame.file + ' line ' + frame.line + ' in ' + frame.fn + ": \r\n";
10666 vm.rawTraceback += 'File ' + frame.file + ' line ' + frame.line + ' in ' + frame.fn + ": \r\n";
10668 }
10667 }
10669 vm.rawTraceback += ' ' + frame.cline + "\r\n";
10668 vm.rawTraceback += ' ' + frame.cline + "\r\n";
10670 });
10669 });
10671
10670
10672 if (stateHolder.AeUser.id){
10671 if (stateHolder.AeUser.id){
10673 vm.fetchHistory();
10672 vm.fetchHistory();
10674 }
10673 }
10675
10674
10676 vm.selectedTab($cookies.selectedReportTab);
10675 vm.selectedTab($cookies.selectedReportTab);
10677
10676
10678 }, function (response) {
10677 }, function (response) {
10679
10678
10680 if (response.status == 403) {
10679 if (response.status == 403) {
10681 var uid = response.headers('x-appenlight-uid');
10680 var uid = response.headers('x-appenlight-uid');
10682 if (!uid) {
10681 if (!uid) {
10683 window.location = '/register?came_from=' + encodeURIComponent(window.location);
10682 window.location = '/register?came_from=' + encodeURIComponent(window.location);
10684 }
10683 }
10685 }
10684 }
10686 vm.is_loading.report = false;
10685 vm.is_loading.report = false;
10687 });
10686 });
10688 };
10687 };
10689
10688
10690 vm.selectedTab = function(tab_name){
10689 vm.selectedTab = function(tab_name){
10691 $cookies.selectedReportTab = tab_name;
10690 $cookies.selectedReportTab = tab_name;
10692 if (tab_name == 'logs' && vm.reportLogs === null) {
10691 if (tab_name == 'logs' && vm.reportLogs === null) {
10693 vm.fetchLogs();
10692 vm.fetchLogs();
10694 }
10693 }
10695 };
10694 };
10696
10695
10697 vm.markFixed = function () {
10696 vm.markFixed = function () {
10698 reportGroupResource.update({
10697 reportGroupResource.update({
10699 groupId: vm.report.group_id
10698 groupId: vm.report.group_id
10700 }, {fixed: !vm.report.group.fixed},
10699 }, {fixed: !vm.report.group.fixed},
10701 function (data) {
10700 function (data) {
10702 vm.report.group.fixed = data.fixed;
10701 vm.report.group.fixed = data.fixed;
10703 });
10702 });
10704 };
10703 };
10705
10704
10706 vm.markPublic = function () {
10705 vm.markPublic = function () {
10707 reportGroupResource.update({
10706 reportGroupResource.update({
10708 groupId: vm.report.group_id
10707 groupId: vm.report.group_id
10709 }, {public: !vm.report.group.public},
10708 }, {public: !vm.report.group.public},
10710 function (data) {
10709 function (data) {
10711 vm.report.group.public = data.public;
10710 vm.report.group.public = data.public;
10712 });
10711 });
10713 };
10712 };
10714
10713
10715 vm.delete = function () {
10714 vm.delete = function () {
10716 reportGroupResource.delete({'groupId': vm.report.group_id},
10715 reportGroupResource.delete({'groupId': vm.report.group_id},
10717 function (data) {
10716 function (data) {
10718 $state.go('report.list');
10717 $state.go('report.list');
10719 })
10718 })
10720 };
10719 };
10721
10720
10722 vm.assignUsersModal = function (index) {
10721 vm.assignUsersModal = function (index) {
10723 vm.opts = {
10722 vm.opts = {
10724 backdrop: 'static',
10723 backdrop: 'static',
10725 templateUrl: 'AssignReportCtrl.html',
10724 templateUrl: 'AssignReportCtrl.html',
10726 controller: 'AssignReportCtrl as ctrl',
10725 controller: 'AssignReportCtrl as ctrl',
10727 resolve: {
10726 resolve: {
10728 report: function () {
10727 report: function () {
10729 return vm.report;
10728 return vm.report;
10730 }
10729 }
10731 }
10730 }
10732 };
10731 };
10733 var modalInstance = $uibModal.open(vm.opts);
10732 var modalInstance = $uibModal.open(vm.opts);
10734 modalInstance.result.then(function (report) {
10733 modalInstance.result.then(function (report) {
10735
10734
10736 }, function () {
10735 }, function () {
10737 console.info('Modal dismissed at: ' + new Date());
10736 console.info('Modal dismissed at: ' + new Date());
10738 });
10737 });
10739
10738
10740 };
10739 };
10741
10740
10742 vm.fetchHistory = function () {
10741 vm.fetchHistory = function () {
10743 reportGroupPropertyResource.query({
10742 reportGroupPropertyResource.query({
10744 groupId: vm.report.group_id,
10743 groupId: vm.report.group_id,
10745 key: 'history'
10744 key: 'history'
10746 }, function (data) {
10745 }, function (data) {
10747 vm.reportHistoryData = {
10746 vm.reportHistoryData = {
10748 json: data,
10747 json: data,
10749 keys: {
10748 keys: {
10750 x: 'x',
10749 x: 'x',
10751 value: ["reports"]
10750 value: ["reports"]
10752 },
10751 },
10753 names: {
10752 names: {
10754 reports: 'Reports history'
10753 reports: 'Reports history'
10755 },
10754 },
10756 type: 'bar'
10755 type: 'bar'
10757 };
10756 };
10758 vm.is_loading.history = false;
10757 vm.is_loading.history = false;
10759 });
10758 });
10760 };
10759 };
10761
10760
10762 vm.nextDetail = function () {
10761 vm.nextDetail = function () {
10763 $state.go('report.view_detail', {
10762 $state.go('report.view_detail', {
10764 groupId: vm.report.group_id,
10763 groupId: vm.report.group_id,
10765 reportId: vm.report.group.next_report
10764 reportId: vm.report.group.next_report
10766 });
10765 });
10767 };
10766 };
10768 vm.previousDetail = function () {
10767 vm.previousDetail = function () {
10769 $state.go('report.view_detail', {
10768 $state.go('report.view_detail', {
10770 groupId: vm.report.group_id,
10769 groupId: vm.report.group_id,
10771 reportId: vm.report.group.previous_report
10770 reportId: vm.report.group.previous_report
10772 });
10771 });
10773 };
10772 };
10774
10773
10775 vm.runIntegration = function (integration_name) {
10774 vm.runIntegration = function (integration_name) {
10776
10775
10777 if (integration_name == 'bitbucket') {
10776 if (integration_name == 'bitbucket') {
10778 var controller = 'BitbucketIntegrationCtrl as ctrl';
10777 var controller = 'BitbucketIntegrationCtrl as ctrl';
10779 var template_url = 'templates/integrations/bitbucket.html';
10778 var template_url = 'templates/integrations/bitbucket.html';
10780 }
10779 }
10781 else if (integration_name == 'github') {
10780 else if (integration_name == 'github') {
10782 var controller = 'GithubIntegrationCtrl as ctrl';
10781 var controller = 'GithubIntegrationCtrl as ctrl';
10783 var template_url = 'templates/integrations/github.html';
10782 var template_url = 'templates/integrations/github.html';
10784 }
10783 }
10785 else if (integration_name == 'jira') {
10784 else if (integration_name == 'jira') {
10786 var controller = 'JiraIntegrationCtrl as ctrl';
10785 var controller = 'JiraIntegrationCtrl as ctrl';
10787 var template_url = 'templates/integrations/jira.html';
10786 var template_url = 'templates/integrations/jira.html';
10788 }
10787 }
10789 else {
10788 else {
10790 return false;
10789 return false;
10791 }
10790 }
10792
10791
10793 vm.opts = {
10792 vm.opts = {
10794 backdrop: 'static',
10793 backdrop: 'static',
10795 templateUrl: template_url,
10794 templateUrl: template_url,
10796 controller: controller,
10795 controller: controller,
10797 resolve: {
10796 resolve: {
10798 integrationName: function () {
10797 integrationName: function () {
10799 return integration_name
10798 return integration_name
10800 },
10799 },
10801 report: function () {
10800 report: function () {
10802 return vm.report;
10801 return vm.report;
10803 }
10802 }
10804 }
10803 }
10805 };
10804 };
10806 var modalInstance = $uibModal.open(vm.opts);
10805 var modalInstance = $uibModal.open(vm.opts);
10807 modalInstance.result.then(function (report) {
10806 modalInstance.result.then(function (report) {
10808
10807
10809 }, function () {
10808 }, function () {
10810 console.info('Modal dismissed at: ' + new Date());
10809 console.info('Modal dismissed at: ' + new Date());
10811 });
10810 });
10812
10811
10813 };
10812 };
10814
10813
10815 // load report
10814 // load report
10816 vm.fetchReport();
10815 vm.fetchReport();
10817
10816
10818
10817
10819 }
10818 }
10820
10819
10821 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
10820 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
10822 // #
10821 // #
10823 // # This program is free software: you can redistribute it and/or modify
10822 // # This program is free software: you can redistribute it and/or modify
10824 // # it under the terms of the GNU Affero General Public License, version 3
10823 // # it under the terms of the GNU Affero General Public License, version 3
10825 // # (only), as published by the Free Software Foundation.
10824 // # (only), as published by the Free Software Foundation.
10826 // #
10825 // #
10827 // # This program is distributed in the hope that it will be useful,
10826 // # This program is distributed in the hope that it will be useful,
10828 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
10827 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
10829 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10828 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10830 // # GNU General Public License for more details.
10829 // # GNU General Public License for more details.
10831 // #
10830 // #
10832 // # You should have received a copy of the GNU Affero General Public License
10831 // # You should have received a copy of the GNU Affero General Public License
10833 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
10832 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
10834 // #
10833 // #
10835 // # This program is dual-licensed. If you wish to learn more about the
10834 // # This program is dual-licensed. If you wish to learn more about the
10836 // # AppEnlight Enterprise Edition, including its added features, Support
10835 // # AppEnlight Enterprise Edition, including its added features, Support
10837 // # services, and proprietary license terms, please see
10836 // # services, and proprietary license terms, please see
10838 // # https://rhodecode.com/licenses/
10837 // # https://rhodecode.com/licenses/
10839
10838
10840 angular.module('appenlight.controllers')
10839 angular.module('appenlight.controllers')
10841 .controller('AlertChannelsEmailController', AlertChannelsEmailController)
10840 .controller('AlertChannelsEmailController', AlertChannelsEmailController)
10842
10841
10843 AlertChannelsEmailController.$inject = ['$state','userSelfPropertyResource'];
10842 AlertChannelsEmailController.$inject = ['$state','userSelfPropertyResource'];
10844
10843
10845 function AlertChannelsEmailController($state, userSelfPropertyResource) {
10844 function AlertChannelsEmailController($state, userSelfPropertyResource) {
10846
10845
10847 var vm = this;
10846 var vm = this;
10848 vm.loading = {email: false};
10847 vm.loading = {email: false};
10849 vm.form = {};
10848 vm.form = {};
10850
10849
10851 vm.createChannel = function () {
10850 vm.createChannel = function () {
10852 vm.loading.email = true;
10851 vm.loading.email = true;
10853
10852
10854 userSelfPropertyResource.save({key: 'alert_channels'}, vm.form, function () {
10853 userSelfPropertyResource.save({key: 'alert_channels'}, vm.form, function () {
10855 //vm.loading.email = false;
10854 //vm.loading.email = false;
10856 //setServerValidation(vm.channelForm);
10855 //setServerValidation(vm.channelForm);
10857 //vm.form = {};
10856 //vm.form = {};
10858 $state.go('user.alert_channels.list');
10857 $state.go('user.alert_channels.list');
10859 }, function (response) {
10858 }, function (response) {
10860 if (response.status == 422) {
10859 if (response.status == 422) {
10861 setServerValidation(vm.channelForm, response.data);
10860 setServerValidation(vm.channelForm, response.data);
10862 }
10861 }
10863 vm.loading.email = false;
10862 vm.loading.email = false;
10864 });
10863 });
10865 }
10864 }
10866 }
10865 }
10867
10866
10868 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
10867 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
10869 // #
10868 // #
10870 // # This program is free software: you can redistribute it and/or modify
10869 // # This program is free software: you can redistribute it and/or modify
10871 // # it under the terms of the GNU Affero General Public License, version 3
10870 // # it under the terms of the GNU Affero General Public License, version 3
10872 // # (only), as published by the Free Software Foundation.
10871 // # (only), as published by the Free Software Foundation.
10873 // #
10872 // #
10874 // # This program is distributed in the hope that it will be useful,
10873 // # This program is distributed in the hope that it will be useful,
10875 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
10874 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
10876 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10875 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10877 // # GNU General Public License for more details.
10876 // # GNU General Public License for more details.
10878 // #
10877 // #
10879 // # You should have received a copy of the GNU Affero General Public License
10878 // # You should have received a copy of the GNU Affero General Public License
10880 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
10879 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
10881 // #
10880 // #
10882 // # This program is dual-licensed. If you wish to learn more about the
10881 // # This program is dual-licensed. If you wish to learn more about the
10883 // # AppEnlight Enterprise Edition, including its added features, Support
10882 // # AppEnlight Enterprise Edition, including its added features, Support
10884 // # services, and proprietary license terms, please see
10883 // # services, and proprietary license terms, please see
10885 // # https://rhodecode.com/licenses/
10884 // # https://rhodecode.com/licenses/
10886
10885
10887 angular.module('appenlight.controllers').controller('AlertChannelsController', AlertChannelsController);
10886 angular.module('appenlight.controllers').controller('AlertChannelsController', AlertChannelsController);
10888
10887
10889 AlertChannelsController.$inject = ['userSelfPropertyResource', 'applicationsNoIdResource'];
10888 AlertChannelsController.$inject = ['userSelfPropertyResource', 'applicationsNoIdResource'];
10890
10889
10891 function AlertChannelsController(userSelfPropertyResource, applicationsNoIdResource) {
10890 function AlertChannelsController(userSelfPropertyResource, applicationsNoIdResource) {
10892
10891
10893 var vm = this;
10892 var vm = this;
10894 vm.loading = {channels: true, applications: true, actions:true};
10893 vm.loading = {channels: true, applications: true, actions:true};
10895
10894
10896 vm.alertChannels = userSelfPropertyResource.query({key: 'alert_channels'},
10895 vm.alertChannels = userSelfPropertyResource.query({key: 'alert_channels'},
10897 function (data) {
10896 function (data) {
10898 vm.loading.channels = false;
10897 vm.loading.channels = false;
10899 });
10898 });
10900
10899
10901 vm.alertActions = userSelfPropertyResource.query({key: 'alert_actions'},
10900 vm.alertActions = userSelfPropertyResource.query({key: 'alert_actions'},
10902 function (data) {
10901 function (data) {
10903 vm.loading.actions = false;
10902 vm.loading.actions = false;
10904 });
10903 });
10905
10904
10906 vm.applications = applicationsNoIdResource.query({permission: 'view'},
10905 vm.applications = applicationsNoIdResource.query({permission: 'view'},
10907 function (data) {
10906 function (data) {
10908 vm.loading.applications = false;
10907 vm.loading.applications = false;
10909 });
10908 });
10910
10909
10911 var allOps = {
10910 var allOps = {
10912 'eq': 'Equal',
10911 'eq': 'Equal',
10913 'ne': 'Not equal',
10912 'ne': 'Not equal',
10914 'ge': 'Greater or equal',
10913 'ge': 'Greater or equal',
10915 'gt': 'Greater than',
10914 'gt': 'Greater than',
10916 'le': 'Lesser or equal',
10915 'le': 'Lesser or equal',
10917 'lt': 'Lesser than',
10916 'lt': 'Lesser than',
10918 'startswith': 'Starts with',
10917 'startswith': 'Starts with',
10919 'endswith': 'Ends with',
10918 'endswith': 'Ends with',
10920 'contains': 'Contains'
10919 'contains': 'Contains'
10921 };
10920 };
10922
10921
10923 var fieldOps = {};
10922 var fieldOps = {};
10924 fieldOps['http_status'] = ['eq', 'ne', 'ge', 'le'];
10923 fieldOps['http_status'] = ['eq', 'ne', 'ge', 'le'];
10925 fieldOps['group:priority'] = ['eq', 'ne', 'ge', 'le'];
10924 fieldOps['group:priority'] = ['eq', 'ne', 'ge', 'le'];
10926 fieldOps['duration'] = ['ge', 'le'];
10925 fieldOps['duration'] = ['ge', 'le'];
10927 fieldOps['url_domain'] = ['eq', 'ne', 'startswith', 'endswith',
10926 fieldOps['url_domain'] = ['eq', 'ne', 'startswith', 'endswith',
10928 'contains'];
10927 'contains'];
10929 fieldOps['url_path'] = ['eq', 'ne', 'startswith', 'endswith',
10928 fieldOps['url_path'] = ['eq', 'ne', 'startswith', 'endswith',
10930 'contains'];
10929 'contains'];
10931 fieldOps['error'] = ['eq', 'ne', 'startswith', 'endswith',
10930 fieldOps['error'] = ['eq', 'ne', 'startswith', 'endswith',
10932 'contains'];
10931 'contains'];
10933 fieldOps['tags:server_name'] = ['eq', 'ne', 'startswith', 'endswith',
10932 fieldOps['tags:server_name'] = ['eq', 'ne', 'startswith', 'endswith',
10934 'contains'];
10933 'contains'];
10935 fieldOps['group:occurences'] = ['eq', 'ne', 'ge', 'le'];
10934 fieldOps['group:occurences'] = ['eq', 'ne', 'ge', 'le'];
10936
10935
10937 var possibleFields = {
10936 var possibleFields = {
10938 '__AND__': 'All met (composite rule)',
10937 '__AND__': 'All met (composite rule)',
10939 '__OR__': 'One met (composite rule)',
10938 '__OR__': 'One met (composite rule)',
10940 '__NOT__': 'Not met (composite rule)',
10939 '__NOT__': 'Not met (composite rule)',
10941 'http_status': 'HTTP Status',
10940 'http_status': 'HTTP Status',
10942 'duration': 'Request duration',
10941 'duration': 'Request duration',
10943 'group:priority': 'Group -> Priority',
10942 'group:priority': 'Group -> Priority',
10944 'url_domain': 'Domain',
10943 'url_domain': 'Domain',
10945 'url_path': 'URL Path',
10944 'url_path': 'URL Path',
10946 'error': 'Error',
10945 'error': 'Error',
10947 'tags:server_name': 'Tag -> Server name',
10946 'tags:server_name': 'Tag -> Server name',
10948 'group:occurences': 'Group -> Occurences'
10947 'group:occurences': 'Group -> Occurences'
10949 };
10948 };
10950
10949
10951 vm.ruleDefinitions = {
10950 vm.ruleDefinitions = {
10952 fieldOps: fieldOps,
10951 fieldOps: fieldOps,
10953 allOps: allOps,
10952 allOps: allOps,
10954 possibleFields: possibleFields
10953 possibleFields: possibleFields
10955 };
10954 };
10956
10955
10957 vm.addAction = function (channel) {
10956 vm.addAction = function (channel) {
10958
10957
10959 userSelfPropertyResource.save({key: 'alert_channels_rules'}, {}, function (data) {
10958 userSelfPropertyResource.save({key: 'alert_channels_rules'}, {}, function (data) {
10960 vm.alertActions.push(data);
10959 vm.alertActions.push(data);
10961 }, function (response) {
10960 }, function (response) {
10962 if (response.status == 422) {
10961 if (response.status == 422) {
10963
10962
10964 }
10963 }
10965 });
10964 });
10966 };
10965 };
10967
10966
10968 vm.updateChannel = function (channel, subKey) {
10967 vm.updateChannel = function (channel, subKey) {
10969 var params = {
10968 var params = {
10970 key: 'alert_channels',
10969 key: 'alert_channels',
10971 channel_name: channel['channel_name'],
10970 channel_name: channel['channel_name'],
10972 channel_value: channel['channel_value']
10971 channel_value: channel['channel_value']
10973 };
10972 };
10974 var toUpdate = {};
10973 var toUpdate = {};
10975 if (['daily_digest', 'send_alerts'].indexOf(subKey) !== -1) {
10974 if (['daily_digest', 'send_alerts'].indexOf(subKey) !== -1) {
10976 toUpdate[subKey] = !channel[subKey];
10975 toUpdate[subKey] = !channel[subKey];
10977 }
10976 }
10978 userSelfPropertyResource.update(params, toUpdate, function (data) {
10977 userSelfPropertyResource.update(params, toUpdate, function (data) {
10979 _.extend(channel, data);
10978 _.extend(channel, data);
10980 });
10979 });
10981 };
10980 };
10982
10981
10983 vm.removeChannel = function (channel) {
10982 vm.removeChannel = function (channel) {
10984
10983
10985 userSelfPropertyResource.delete({
10984 userSelfPropertyResource.delete({
10986 key: 'alert_channels',
10985 key: 'alert_channels',
10987 channel_name: channel.channel_name,
10986 channel_name: channel.channel_name,
10988 channel_value: channel.channel_value
10987 channel_value: channel.channel_value
10989 }, function () {
10988 }, function () {
10990 vm.alertChannels = _.filter(vm.alertChannels, function(item){
10989 vm.alertChannels = _.filter(vm.alertChannels, function(item){
10991 return item != channel;
10990 return item != channel;
10992 });
10991 });
10993 });
10992 });
10994
10993
10995 }
10994 }
10996
10995
10997 }
10996 }
10998
10997
10999 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
10998 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
11000 // #
10999 // #
11001 // # This program is free software: you can redistribute it and/or modify
11000 // # This program is free software: you can redistribute it and/or modify
11002 // # it under the terms of the GNU Affero General Public License, version 3
11001 // # it under the terms of the GNU Affero General Public License, version 3
11003 // # (only), as published by the Free Software Foundation.
11002 // # (only), as published by the Free Software Foundation.
11004 // #
11003 // #
11005 // # This program is distributed in the hope that it will be useful,
11004 // # This program is distributed in the hope that it will be useful,
11006 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
11005 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
11007 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11006 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11008 // # GNU General Public License for more details.
11007 // # GNU General Public License for more details.
11009 // #
11008 // #
11010 // # You should have received a copy of the GNU Affero General Public License
11009 // # You should have received a copy of the GNU Affero General Public License
11011 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
11010 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
11012 // #
11011 // #
11013 // # This program is dual-licensed. If you wish to learn more about the
11012 // # This program is dual-licensed. If you wish to learn more about the
11014 // # AppEnlight Enterprise Edition, including its added features, Support
11013 // # AppEnlight Enterprise Edition, including its added features, Support
11015 // # services, and proprietary license terms, please see
11014 // # services, and proprietary license terms, please see
11016 // # https://rhodecode.com/licenses/
11015 // # https://rhodecode.com/licenses/
11017
11016
11018 angular.module('appenlight.controllers').controller('UserAuthTokensController', UserAuthTokensController);
11017 angular.module('appenlight.controllers').controller('UserAuthTokensController', UserAuthTokensController);
11019
11018
11020 UserAuthTokensController.$inject = ['$filter', 'userSelfPropertyResource', 'AeConfig'];
11019 UserAuthTokensController.$inject = ['$filter', 'userSelfPropertyResource', 'AeConfig'];
11021
11020
11022 function UserAuthTokensController($filter, userSelfPropertyResource, AeConfig) {
11021 function UserAuthTokensController($filter, userSelfPropertyResource, AeConfig) {
11023
11022
11024 var vm = this;
11023 var vm = this;
11025 vm.loading = {tokens: true};
11024 vm.loading = {tokens: true};
11026
11025
11027 vm.expireOptions = AeConfig.timeOptions;
11026 vm.expireOptions = AeConfig.timeOptions;
11028
11027
11029 vm.tokens = userSelfPropertyResource.query({key: 'auth_tokens'},
11028 vm.tokens = userSelfPropertyResource.query({key: 'auth_tokens'},
11030 function (data) {
11029 function (data) {
11031 vm.loading.tokens = false;
11030 vm.loading.tokens = false;
11032 });
11031 });
11033
11032
11034 vm.addToken = function () {
11033 vm.addToken = function () {
11035 vm.loading.tokens = true;
11034 vm.loading.tokens = true;
11036 userSelfPropertyResource.save({key: 'auth_tokens'},
11035 userSelfPropertyResource.save({key: 'auth_tokens'},
11037 vm.form,
11036 vm.form,
11038 function (data) {
11037 function (data) {
11039 vm.loading.tokens = false;
11038 vm.loading.tokens = false;
11040 setServerValidation(vm.TokenForm);
11039 setServerValidation(vm.TokenForm);
11041 vm.form = {};
11040 vm.form = {};
11042 vm.tokens.push(data);
11041 vm.tokens.push(data);
11043 }, function (response) {
11042 }, function (response) {
11044 vm.loading.tokens = false;
11043 vm.loading.tokens = false;
11045 if (response.status == 422) {
11044 if (response.status == 422) {
11046 setServerValidation(vm.TokenForm, response.data);
11045 setServerValidation(vm.TokenForm, response.data);
11047 }
11046 }
11048 })
11047 })
11049 }
11048 }
11050
11049
11051 vm.removeToken = function (token) {
11050 vm.removeToken = function (token) {
11052 userSelfPropertyResource.delete({key: 'auth_tokens',
11051 userSelfPropertyResource.delete({key: 'auth_tokens',
11053 token:token.token},
11052 token:token.token},
11054 function () {
11053 function () {
11055 var index = vm.tokens.indexOf(token);
11054 var index = vm.tokens.indexOf(token);
11056 if (index !== -1) {
11055 if (index !== -1) {
11057 vm.tokens.splice(index, 1);
11056 vm.tokens.splice(index, 1);
11058 }
11057 }
11059 })
11058 })
11060 }
11059 }
11061 }
11060 }
11062
11061
11063 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
11062 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
11064 // #
11063 // #
11065 // # This program is free software: you can redistribute it and/or modify
11064 // # This program is free software: you can redistribute it and/or modify
11066 // # it under the terms of the GNU Affero General Public License, version 3
11065 // # it under the terms of the GNU Affero General Public License, version 3
11067 // # (only), as published by the Free Software Foundation.
11066 // # (only), as published by the Free Software Foundation.
11068 // #
11067 // #
11069 // # This program is distributed in the hope that it will be useful,
11068 // # This program is distributed in the hope that it will be useful,
11070 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
11069 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
11071 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11070 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11072 // # GNU General Public License for more details.
11071 // # GNU General Public License for more details.
11073 // #
11072 // #
11074 // # You should have received a copy of the GNU Affero General Public License
11073 // # You should have received a copy of the GNU Affero General Public License
11075 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
11074 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
11076 // #
11075 // #
11077 // # This program is dual-licensed. If you wish to learn more about the
11076 // # This program is dual-licensed. If you wish to learn more about the
11078 // # AppEnlight Enterprise Edition, including its added features, Support
11077 // # AppEnlight Enterprise Edition, including its added features, Support
11079 // # services, and proprietary license terms, please see
11078 // # services, and proprietary license terms, please see
11080 // # https://rhodecode.com/licenses/
11079 // # https://rhodecode.com/licenses/
11081
11080
11082 angular.module('appenlight.controllers')
11081 angular.module('appenlight.controllers')
11083 .controller('UserIdentitiesController', UserIdentitiesController)
11082 .controller('UserIdentitiesController', UserIdentitiesController)
11084
11083
11085 UserIdentitiesController.$inject = ['userSelfPropertyResource'];
11084 UserIdentitiesController.$inject = ['userSelfPropertyResource'];
11086
11085
11087 function UserIdentitiesController(userSelfPropertyResource) {
11086 function UserIdentitiesController(userSelfPropertyResource) {
11088
11087
11089 var vm = this;
11088 var vm = this;
11090 vm.loading = {identities: true};
11089 vm.loading = {identities: true};
11091
11090
11092 vm.identities = userSelfPropertyResource.query(
11091 vm.identities = userSelfPropertyResource.query(
11093 {key: 'external_identities'},
11092 {key: 'external_identities'},
11094 function (data) {
11093 function (data) {
11095 vm.loading.identities = false;
11094 vm.loading.identities = false;
11096
11095
11097 });
11096 });
11098
11097
11099 vm.removeProvider = function (provider) {
11098 vm.removeProvider = function (provider) {
11100
11099
11101 userSelfPropertyResource.delete(
11100 userSelfPropertyResource.delete(
11102 {
11101 {
11103 key: 'external_identities',
11102 key: 'external_identities',
11104 provider: provider.provider,
11103 provider: provider.provider,
11105 id: provider.id
11104 id: provider.id
11106 },
11105 },
11107 function (status) {
11106 function (status) {
11108 if (status){
11107 if (status){
11109 vm.identities = _.filter(vm.identities, function (item) {
11108 vm.identities = _.filter(vm.identities, function (item) {
11110 return item != provider
11109 return item != provider
11111 });
11110 });
11112 }
11111 }
11113
11112
11114 });
11113 });
11115 }
11114 }
11116 }
11115 }
11117
11116
11118 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
11117 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
11119 // #
11118 // #
11120 // # This program is free software: you can redistribute it and/or modify
11119 // # This program is free software: you can redistribute it and/or modify
11121 // # it under the terms of the GNU Affero General Public License, version 3
11120 // # it under the terms of the GNU Affero General Public License, version 3
11122 // # (only), as published by the Free Software Foundation.
11121 // # (only), as published by the Free Software Foundation.
11123 // #
11122 // #
11124 // # This program is distributed in the hope that it will be useful,
11123 // # This program is distributed in the hope that it will be useful,
11125 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
11124 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
11126 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11125 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11127 // # GNU General Public License for more details.
11126 // # GNU General Public License for more details.
11128 // #
11127 // #
11129 // # You should have received a copy of the GNU Affero General Public License
11128 // # You should have received a copy of the GNU Affero General Public License
11130 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
11129 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
11131 // #
11130 // #
11132 // # This program is dual-licensed. If you wish to learn more about the
11131 // # This program is dual-licensed. If you wish to learn more about the
11133 // # AppEnlight Enterprise Edition, including its added features, Support
11132 // # AppEnlight Enterprise Edition, including its added features, Support
11134 // # services, and proprietary license terms, please see
11133 // # services, and proprietary license terms, please see
11135 // # https://rhodecode.com/licenses/
11134 // # https://rhodecode.com/licenses/
11136
11135
11137 angular.module('appenlight.controllers')
11136 angular.module('appenlight.controllers')
11138 .controller('UserPasswordController', UserPasswordController)
11137 .controller('UserPasswordController', UserPasswordController)
11139
11138
11140 UserPasswordController.$inject = ['userSelfPropertyResource'];
11139 UserPasswordController.$inject = ['userSelfPropertyResource'];
11141
11140
11142 function UserPasswordController(userSelfPropertyResource) {
11141 function UserPasswordController(userSelfPropertyResource) {
11143
11142
11144 var vm = this;
11143 var vm = this;
11145 vm.loading = {password: false};
11144 vm.loading = {password: false};
11146 vm.form = {};
11145 vm.form = {};
11147
11146
11148 vm.updatePassword = function () {
11147 vm.updatePassword = function () {
11149 vm.loading.password = true;
11148 vm.loading.password = true;
11150
11149
11151 userSelfPropertyResource.update({key: 'password'}, vm.form, function () {
11150 userSelfPropertyResource.update({key: 'password'}, vm.form, function () {
11152 vm.loading.password = false;
11151 vm.loading.password = false;
11153 vm.form = {};
11152 vm.form = {};
11154 setServerValidation(vm.passwordForm);
11153 setServerValidation(vm.passwordForm);
11155 }, function (response) {
11154 }, function (response) {
11156 if (response.status == 422) {
11155 if (response.status == 422) {
11157
11156
11158 setServerValidation(vm.passwordForm, response.data);
11157 setServerValidation(vm.passwordForm, response.data);
11159
11158
11160 }
11159 }
11161 vm.loading.password = false;
11160 vm.loading.password = false;
11162 });
11161 });
11163 }
11162 }
11164 }
11163 }
11165
11164
11166 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
11165 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
11167 // #
11166 // #
11168 // # This program is free software: you can redistribute it and/or modify
11167 // # This program is free software: you can redistribute it and/or modify
11169 // # it under the terms of the GNU Affero General Public License, version 3
11168 // # it under the terms of the GNU Affero General Public License, version 3
11170 // # (only), as published by the Free Software Foundation.
11169 // # (only), as published by the Free Software Foundation.
11171 // #
11170 // #
11172 // # This program is distributed in the hope that it will be useful,
11171 // # This program is distributed in the hope that it will be useful,
11173 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
11172 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
11174 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11173 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11175 // # GNU General Public License for more details.
11174 // # GNU General Public License for more details.
11176 // #
11175 // #
11177 // # You should have received a copy of the GNU Affero General Public License
11176 // # You should have received a copy of the GNU Affero General Public License
11178 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
11177 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
11179 // #
11178 // #
11180 // # This program is dual-licensed. If you wish to learn more about the
11179 // # This program is dual-licensed. If you wish to learn more about the
11181 // # AppEnlight Enterprise Edition, including its added features, Support
11180 // # AppEnlight Enterprise Edition, including its added features, Support
11182 // # services, and proprietary license terms, please see
11181 // # services, and proprietary license terms, please see
11183 // # https://rhodecode.com/licenses/
11182 // # https://rhodecode.com/licenses/
11184
11183
11185 angular.module('appenlight.controllers')
11184 angular.module('appenlight.controllers')
11186 .controller('UserProfileController', UserProfileController)
11185 .controller('UserProfileController', UserProfileController)
11187
11186
11188 UserProfileController.$inject = ['userSelfResource'];
11187 UserProfileController.$inject = ['userSelfResource'];
11189
11188
11190 function UserProfileController(userSelfResource) {
11189 function UserProfileController(userSelfResource) {
11191
11190
11192 var vm = this;
11191 var vm = this;
11193 vm.loading = {profile: true};
11192 vm.loading = {profile: true};
11194
11193
11195 vm.user = userSelfResource.get(null, function (data) {
11194 vm.user = userSelfResource.get(null, function (data) {
11196 vm.loading.profile = false;
11195 vm.loading.profile = false;
11197
11196
11198 });
11197 });
11199
11198
11200 vm.updateProfile = function () {
11199 vm.updateProfile = function () {
11201 vm.loading.profile = true;
11200 vm.loading.profile = true;
11202
11201
11203
11202
11204 vm.user.$update(null, function () {
11203 vm.user.$update(null, function () {
11205 vm.loading.profile = false;
11204 vm.loading.profile = false;
11206 setServerValidation(vm.profileForm);
11205 setServerValidation(vm.profileForm);
11207 }, function (response) {
11206 }, function (response) {
11208 if (response.status == 422) {
11207 if (response.status == 422) {
11209 setServerValidation(vm.profileForm, response.data);
11208 setServerValidation(vm.profileForm, response.data);
11210 }
11209 }
11211 vm.loading.profile = false;
11210 vm.loading.profile = false;
11212 });
11211 });
11213 }
11212 }
11214 }
11213 }
11215
11214
11216 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
11215 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
11217 // #
11216 // #
11218 // # This program is free software: you can redistribute it and/or modify
11217 // # This program is free software: you can redistribute it and/or modify
11219 // # it under the terms of the GNU Affero General Public License, version 3
11218 // # it under the terms of the GNU Affero General Public License, version 3
11220 // # (only), as published by the Free Software Foundation.
11219 // # (only), as published by the Free Software Foundation.
11221 // #
11220 // #
11222 // # This program is distributed in the hope that it will be useful,
11221 // # This program is distributed in the hope that it will be useful,
11223 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
11222 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
11224 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11223 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11225 // # GNU General Public License for more details.
11224 // # GNU General Public License for more details.
11226 // #
11225 // #
11227 // # You should have received a copy of the GNU Affero General Public License
11226 // # You should have received a copy of the GNU Affero General Public License
11228 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
11227 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
11229 // #
11228 // #
11230 // # This program is dual-licensed. If you wish to learn more about the
11229 // # This program is dual-licensed. If you wish to learn more about the
11231 // # AppEnlight Enterprise Edition, including its added features, Support
11230 // # AppEnlight Enterprise Edition, including its added features, Support
11232 // # services, and proprietary license terms, please see
11231 // # services, and proprietary license terms, please see
11233 // # https://rhodecode.com/licenses/
11232 // # https://rhodecode.com/licenses/
11234
11233
11235 angular.module('appenlight.directives.appVersion', []).
11236 directive('appVersion', ['version', function (version) {
11237 return function (scope, elm, attrs) {
11238 elm.text(version);
11239 };
11240 }])
11241
11242 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
11243 // #
11244 // # This program is free software: you can redistribute it and/or modify
11245 // # it under the terms of the GNU Affero General Public License, version 3
11246 // # (only), as published by the Free Software Foundation.
11247 // #
11248 // # This program is distributed in the hope that it will be useful,
11249 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
11250 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11251 // # GNU General Public License for more details.
11252 // #
11253 // # You should have received a copy of the GNU Affero General Public License
11254 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
11255 // #
11256 // # This program is dual-licensed. If you wish to learn more about the
11257 // # AppEnlight Enterprise Edition, including its added features, Support
11258 // # services, and proprietary license terms, please see
11259 // # https://rhodecode.com/licenses/
11260
11261 // This code is inspired by https://github.com/jettro/c3-angular-sample/tree/master/js
11234 // This code is inspired by https://github.com/jettro/c3-angular-sample/tree/master/js
11262 // License is MIT
11235 // License is MIT
11263
11236
11264
11237
11265 angular.module('appenlight.directives.c3chart', [])
11238 angular.module('appenlight.directives.c3chart', [])
11266 .controller('ChartCtrl', ['$scope', '$timeout', function ($scope, $timeout) {
11239 .controller('ChartCtrl', ['$scope', '$timeout', function ($scope, $timeout) {
11267 $scope.chart = null;
11240 $scope.chart = null;
11268 this.showGraph = function () {
11241 this.showGraph = function () {
11269 var config = angular.copy($scope.config);
11242 var config = angular.copy($scope.config);
11270 var firstLoad = true;
11243 var firstLoad = true;
11271 config.bindto = "#" + $scope.domid;
11244 config.bindto = "#" + $scope.domid;
11272 var originalXTickCount = null;
11245 var originalXTickCount = null;
11273 if ($scope.data && $scope.config) {
11246 if ($scope.data && $scope.config) {
11274 if (!_.isEmpty($scope.data)) {
11247 if (!_.isEmpty($scope.data)) {
11275 _.extend(config.data, angular.copy($scope.data));
11248 _.extend(config.data, angular.copy($scope.data));
11276 }
11249 }
11277
11250
11278 config.onresized = function () {
11251 config.onresized = function () {
11279 if (this.currentWidth < 400){
11252 if (this.currentWidth < 400){
11280 $scope.chart.internal.config.axis_x_tick_culling_max = 3;
11253 $scope.chart.internal.config.axis_x_tick_culling_max = 3;
11281 }
11254 }
11282 else if (this.currentWidth < 600){
11255 else if (this.currentWidth < 600){
11283 $scope.chart.internal.config.axis_x_tick_culling_max = 5;
11256 $scope.chart.internal.config.axis_x_tick_culling_max = 5;
11284 }
11257 }
11285 else{
11258 else{
11286 $scope.chart.internal.config.axis_x_tick_culling_max = originalXTickCount;
11259 $scope.chart.internal.config.axis_x_tick_culling_max = originalXTickCount;
11287 }
11260 }
11288 $scope.chart.flush();
11261 $scope.chart.flush();
11289 };
11262 };
11290
11263
11291
11264
11292 $scope.chart = c3.generate(config);
11265 $scope.chart = c3.generate(config);
11293 originalXTickCount = $scope.chart.internal.config.axis_x_tick_culling_max;
11266 originalXTickCount = $scope.chart.internal.config.axis_x_tick_culling_max;
11294 $scope.chart.internal.config.onresized.call($scope.chart.internal);
11267 $scope.chart.internal.config.onresized.call($scope.chart.internal);
11295 }
11268 }
11296
11269
11297 if ($scope.update) {
11270 if ($scope.update) {
11298
11271
11299 $scope.$watch('data', function () {
11272 $scope.$watch('data', function () {
11300 if (!firstLoad) {
11273 if (!firstLoad) {
11301
11274
11302 $scope.chart.load(angular.copy($scope.data), {unload: true});
11275 $scope.chart.load(angular.copy($scope.data), {unload: true});
11303 if (typeof $scope.data.groups != 'undefined') {
11276 if (typeof $scope.data.groups != 'undefined') {
11304
11277
11305 $scope.chart.groups($scope.data.groups);
11278 $scope.chart.groups($scope.data.groups);
11306 }
11279 }
11307 if (typeof $scope.data.names != 'undefined') {
11280 if (typeof $scope.data.names != 'undefined') {
11308
11281
11309 $scope.chart.data.names($scope.data.names);
11282 $scope.chart.data.names($scope.data.names);
11310 }
11283 }
11311 $scope.chart.flush();
11284 $scope.chart.flush();
11312 }
11285 }
11313 }, true);
11286 }, true);
11314 }
11287 }
11315 $scope.$watch('config.regions', function (newValue, oldValue) {
11288 $scope.$watch('config.regions', function (newValue, oldValue) {
11316 if (newValue === oldValue) {
11289 if (newValue === oldValue) {
11317 return
11290 return
11318 }
11291 }
11319 if (typeof $scope.config.regions != 'undefined') {
11292 if (typeof $scope.config.regions != 'undefined') {
11320
11293
11321 $scope.chart.regions($scope.config.regions);
11294 $scope.chart.regions($scope.config.regions);
11322 }
11295 }
11323 });
11296 });
11324
11297
11325 firstLoad = false;
11298 firstLoad = false;
11326 $scope.$watch('resizetrigger', function (newValue, oldValue) {
11299 $scope.$watch('resizetrigger', function (newValue, oldValue) {
11327 if (newValue !== oldValue) {
11300 if (newValue !== oldValue) {
11328 $timeout(function () {
11301 $timeout(function () {
11329 $scope.chart.resize();
11302 $scope.chart.resize();
11330 $scope.chart.internal.config.onresized.call($scope.chart.internal);
11303 $scope.chart.internal.config.onresized.call($scope.chart.internal);
11331 });
11304 });
11332 }
11305 }
11333 });
11306 });
11334 };
11307 };
11335 }])
11308 }])
11336 .directive('c3chart', function ($timeout) {
11309 .directive('c3chart', function ($timeout) {
11337 var chartLinker = function (scope, element, attrs, chartCtrl) {
11310 var chartLinker = function (scope, element, attrs, chartCtrl) {
11338 // Trick to wait for all rendering of the DOM to be finished.
11311 // Trick to wait for all rendering of the DOM to be finished.
11339 // then we can tell c3js to "connect" to our dom node
11312 // then we can tell c3js to "connect" to our dom node
11340 $timeout(function () {
11313 $timeout(function () {
11341 chartCtrl.showGraph()
11314 chartCtrl.showGraph()
11342 });
11315 });
11343
11316
11344 scope.$on("$destroy", function () {
11317 scope.$on("$destroy", function () {
11345 if (scope.chart !== null) {
11318 if (scope.chart !== null) {
11346 scope.chart = scope.chart.destroy();
11319 scope.chart = scope.chart.destroy();
11347 delete element;
11320 delete element;
11348 delete scope.chart;
11321 delete scope.chart;
11349
11322
11350 }
11323 }
11351 }
11324 }
11352 );
11325 );
11353 };
11326 };
11354 return {
11327 return {
11355 "restrict": "E",
11328 "restrict": "E",
11356 "controller": "ChartCtrl",
11329 "controller": "ChartCtrl",
11357 "scope": {
11330 "scope": {
11358 "domid": "@domid",
11331 "domid": "@domid",
11359 "config": "=config",
11332 "config": "=config",
11360 "data": "=data",
11333 "data": "=data",
11361 "resizetrigger": "=resizetrigger",
11334 "resizetrigger": "=resizetrigger",
11362 "update": "=update"
11335 "update": "=update"
11363 },
11336 },
11364 "template": "<div id='{{domid}}' class='chart'></div>",
11337 "template": "<div id='{{domid}}' class='chart'></div>",
11365 "replace": true,
11338 "replace": true,
11366 "link": chartLinker
11339 "link": chartLinker
11367 }
11340 }
11368 });
11341 });
11369
11342
11370 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
11343 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
11371 // #
11344 // #
11372 // # This program is free software: you can redistribute it and/or modify
11345 // # This program is free software: you can redistribute it and/or modify
11373 // # it under the terms of the GNU Affero General Public License, version 3
11346 // # it under the terms of the GNU Affero General Public License, version 3
11374 // # (only), as published by the Free Software Foundation.
11347 // # (only), as published by the Free Software Foundation.
11375 // #
11348 // #
11376 // # This program is distributed in the hope that it will be useful,
11349 // # This program is distributed in the hope that it will be useful,
11377 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
11350 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
11378 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11351 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11379 // # GNU General Public License for more details.
11352 // # GNU General Public License for more details.
11380 // #
11353 // #
11381 // # You should have received a copy of the GNU Affero General Public License
11354 // # You should have received a copy of the GNU Affero General Public License
11382 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
11355 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
11383 // #
11356 // #
11384 // # This program is dual-licensed. If you wish to learn more about the
11357 // # This program is dual-licensed. If you wish to learn more about the
11385 // # AppEnlight Enterprise Edition, including its added features, Support
11358 // # AppEnlight Enterprise Edition, including its added features, Support
11386 // # services, and proprietary license terms, please see
11359 // # services, and proprietary license terms, please see
11387 // # https://rhodecode.com/licenses/
11360 // # https://rhodecode.com/licenses/
11388
11361
11389 angular.module('appenlight.directives.confirmValidate', []).
11362 angular.module('appenlight.directives.confirmValidate', []).
11390 directive('confirmValidate', [function () {
11363 directive('confirmValidate', [function () {
11391 return {
11364 return {
11392 restrict: 'A',
11365 restrict: 'A',
11393 require: 'ngModel',
11366 require: 'ngModel',
11394 link: function ($scope, elem, attrs, ngModel) {
11367 link: function ($scope, elem, attrs, ngModel) {
11395 ngModel.$validators.confirm = function (modelValue, viewValue) {
11368 ngModel.$validators.confirm = function (modelValue, viewValue) {
11396 var value = modelValue || viewValue;
11369 var value = modelValue || viewValue;
11397
11370
11398 if (value.toLowerCase() == 'confirm') {
11371 if (value.toLowerCase() == 'confirm') {
11399 return true;
11372 return true;
11400 }
11373 }
11401 return false;
11374 return false;
11402 }
11375 }
11403 }
11376 }
11404 }
11377 }
11405 }])
11378 }])
11406
11379
11407 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
11380 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
11408 // #
11381 // #
11409 // # This program is free software: you can redistribute it and/or modify
11382 // # This program is free software: you can redistribute it and/or modify
11410 // # it under the terms of the GNU Affero General Public License, version 3
11383 // # it under the terms of the GNU Affero General Public License, version 3
11411 // # (only), as published by the Free Software Foundation.
11384 // # (only), as published by the Free Software Foundation.
11412 // #
11385 // #
11413 // # This program is distributed in the hope that it will be useful,
11386 // # This program is distributed in the hope that it will be useful,
11414 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
11387 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
11415 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11388 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11416 // # GNU General Public License for more details.
11389 // # GNU General Public License for more details.
11417 // #
11390 // #
11418 // # You should have received a copy of the GNU Affero General Public License
11391 // # You should have received a copy of the GNU Affero General Public License
11419 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
11392 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
11420 // #
11393 // #
11421 // # This program is dual-licensed. If you wish to learn more about the
11394 // # This program is dual-licensed. If you wish to learn more about the
11422 // # AppEnlight Enterprise Edition, including its added features, Support
11395 // # AppEnlight Enterprise Edition, including its added features, Support
11423 // # services, and proprietary license terms, please see
11396 // # services, and proprietary license terms, please see
11424 // # https://rhodecode.com/licenses/
11397 // # https://rhodecode.com/licenses/
11425
11398
11426 angular.module('appenlight.directives.focus', []).directive('focus', function () {
11399 angular.module('appenlight.directives.focus', []).directive('focus', function () {
11427 return function (scope, element, attrs) {
11400 return function (scope, element, attrs) {
11428 attrs.$observe('focus', function (newValue) {
11401 attrs.$observe('focus', function (newValue) {
11429 newValue === 'true' && element[0].focus();
11402 newValue === 'true' && element[0].focus();
11430 });
11403 });
11431 }
11404 }
11432 });
11405 });
11433
11406
11434 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
11407 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
11435 // #
11408 // #
11436 // # This program is free software: you can redistribute it and/or modify
11409 // # This program is free software: you can redistribute it and/or modify
11437 // # it under the terms of the GNU Affero General Public License, version 3
11410 // # it under the terms of the GNU Affero General Public License, version 3
11438 // # (only), as published by the Free Software Foundation.
11411 // # (only), as published by the Free Software Foundation.
11439 // #
11412 // #
11440 // # This program is distributed in the hope that it will be useful,
11413 // # This program is distributed in the hope that it will be useful,
11441 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
11414 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
11442 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11415 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11443 // # GNU General Public License for more details.
11416 // # GNU General Public License for more details.
11444 // #
11417 // #
11445 // # You should have received a copy of the GNU Affero General Public License
11418 // # You should have received a copy of the GNU Affero General Public License
11446 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
11419 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
11447 // #
11420 // #
11448 // # This program is dual-licensed. If you wish to learn more about the
11421 // # This program is dual-licensed. If you wish to learn more about the
11449 // # AppEnlight Enterprise Edition, including its added features, Support
11422 // # AppEnlight Enterprise Edition, including its added features, Support
11450 // # services, and proprietary license terms, please see
11423 // # services, and proprietary license terms, please see
11451 // # https://rhodecode.com/licenses/
11424 // # https://rhodecode.com/licenses/
11452
11425
11453 angular.module('appenlight.directives.formErrors', []).
11426 angular.module('appenlight.directives.formErrors', []).
11454 directive('formErrors', function() {
11427 directive('formErrors', function() {
11455 return {
11428 return {
11456 scope: {
11429 scope: {
11457 errors: '='
11430 errors: '='
11458 },
11431 },
11459 template: '<div ng-repeat="errorMessage in errors"><div class="form-error alert alert-error">{{ errorMessage }}</div></div>'
11432 template: '<div ng-repeat="errorMessage in errors"><div class="form-error alert alert-error">{{ errorMessage }}</div></div>'
11460 }
11433 }
11461 })
11434 })
11462
11435
11463 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
11436 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
11464 // #
11437 // #
11465 // # This program is free software: you can redistribute it and/or modify
11438 // # This program is free software: you can redistribute it and/or modify
11466 // # it under the terms of the GNU Affero General Public License, version 3
11439 // # it under the terms of the GNU Affero General Public License, version 3
11467 // # (only), as published by the Free Software Foundation.
11440 // # (only), as published by the Free Software Foundation.
11468 // #
11441 // #
11469 // # This program is distributed in the hope that it will be useful,
11442 // # This program is distributed in the hope that it will be useful,
11470 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
11443 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
11471 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11444 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11472 // # GNU General Public License for more details.
11445 // # GNU General Public License for more details.
11473 // #
11446 // #
11474 // # You should have received a copy of the GNU Affero General Public License
11447 // # You should have received a copy of the GNU Affero General Public License
11475 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
11448 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
11476 // #
11449 // #
11477 // # This program is dual-licensed. If you wish to learn more about the
11450 // # This program is dual-licensed. If you wish to learn more about the
11478 // # AppEnlight Enterprise Edition, including its added features, Support
11451 // # AppEnlight Enterprise Edition, including its added features, Support
11479 // # services, and proprietary license terms, please see
11452 // # services, and proprietary license terms, please see
11480 // # https://rhodecode.com/licenses/
11453 // # https://rhodecode.com/licenses/
11481
11454
11482 angular.module('appenlight.directives.humanFormat', []).
11455 angular.module('appenlight.directives.humanFormat', []).
11483 directive('humanFormat', [function () {
11456 directive('humanFormat', [function () {
11484 /* json inspector */
11457 /* json inspector */
11485 return {
11458 return {
11486 restrict: "A",
11459 restrict: "A",
11487 scope: {
11460 scope: {
11488 vars: '=',
11461 vars: '=',
11489 },
11462 },
11490 "link": function (scope, element, attrs) {
11463 "link": function (scope, element, attrs) {
11491 scope.$watch('vars', function (newValue, oldValue, scope) {
11464 scope.$watch('vars', function (newValue, oldValue, scope) {
11492 element.empty();
11465 element.empty();
11493 element.append(JsonHuman.format(scope.vars));
11466 element.append(JsonHuman.format(scope.vars));
11494 });
11467 });
11495
11468
11496 }
11469 }
11497 }
11470 }
11498 }])
11471 }])
11499
11472
11500 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
11473 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
11501 // #
11474 // #
11502 // # This program is free software: you can redistribute it and/or modify
11475 // # This program is free software: you can redistribute it and/or modify
11503 // # it under the terms of the GNU Affero General Public License, version 3
11476 // # it under the terms of the GNU Affero General Public License, version 3
11504 // # (only), as published by the Free Software Foundation.
11477 // # (only), as published by the Free Software Foundation.
11505 // #
11478 // #
11506 // # This program is distributed in the hope that it will be useful,
11479 // # This program is distributed in the hope that it will be useful,
11507 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
11480 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
11508 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11481 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11509 // # GNU General Public License for more details.
11482 // # GNU General Public License for more details.
11510 // #
11483 // #
11511 // # You should have received a copy of the GNU Affero General Public License
11484 // # You should have received a copy of the GNU Affero General Public License
11512 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
11485 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
11513 // #
11486 // #
11514 // # This program is dual-licensed. If you wish to learn more about the
11487 // # This program is dual-licensed. If you wish to learn more about the
11515 // # AppEnlight Enterprise Edition, including its added features, Support
11488 // # AppEnlight Enterprise Edition, including its added features, Support
11516 // # services, and proprietary license terms, please see
11489 // # services, and proprietary license terms, please see
11517 // # https://rhodecode.com/licenses/
11490 // # https://rhodecode.com/licenses/
11518
11491
11519 angular.module('appenlight.directives.isoToRelativeTime', []).
11492 angular.module('appenlight.directives.isoToRelativeTime', []).
11520 directive('isoToRelativeTime', function () {
11493 directive('isoToRelativeTime', function () {
11521 return {
11494 return {
11522 "restrict": "E",
11495 "restrict": "E",
11523 scope: {
11496 scope: {
11524 time: '@'
11497 time: '@'
11525 },
11498 },
11526 "link": function (scope, element) {
11499 "link": function (scope, element) {
11527 scope.$watch('time', function(newValue, oldValue, scope){
11500 scope.$watch('time', function(newValue, oldValue, scope){
11528 element.empty();
11501 element.empty();
11529 element.html(moment.utc(newValue).fromNow());
11502 element.html(moment.utc(newValue).fromNow());
11530 });
11503 });
11531 }
11504 }
11532 }
11505 }
11533 })
11506 })
11534
11507
11535 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
11508 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
11536 // #
11509 // #
11537 // # This program is free software: you can redistribute it and/or modify
11510 // # This program is free software: you can redistribute it and/or modify
11538 // # it under the terms of the GNU Affero General Public License, version 3
11511 // # it under the terms of the GNU Affero General Public License, version 3
11539 // # (only), as published by the Free Software Foundation.
11512 // # (only), as published by the Free Software Foundation.
11540 // #
11513 // #
11541 // # This program is distributed in the hope that it will be useful,
11514 // # This program is distributed in the hope that it will be useful,
11542 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
11515 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
11543 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11516 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11544 // # GNU General Public License for more details.
11517 // # GNU General Public License for more details.
11545 // #
11518 // #
11546 // # You should have received a copy of the GNU Affero General Public License
11519 // # You should have received a copy of the GNU Affero General Public License
11547 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
11520 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
11548 // #
11521 // #
11549 // # This program is dual-licensed. If you wish to learn more about the
11522 // # This program is dual-licensed. If you wish to learn more about the
11550 // # AppEnlight Enterprise Edition, including its added features, Support
11523 // # AppEnlight Enterprise Edition, including its added features, Support
11551 // # services, and proprietary license terms, please see
11524 // # services, and proprietary license terms, please see
11552 // # https://rhodecode.com/licenses/
11525 // # https://rhodecode.com/licenses/
11553
11526
11554 angular.module('appenlight.controllers')
11527 angular.module('appenlight.controllers')
11555 .controller('ApplicationPermissionsController', ApplicationPermissionsController);
11528 .controller('ApplicationPermissionsController', ApplicationPermissionsController);
11556
11529
11557 ApplicationPermissionsController.$inject = ['sectionViewResource',
11530 ApplicationPermissionsController.$inject = ['sectionViewResource',
11558 'applicationsPropertyResource', 'groupsResource']
11531 'applicationsPropertyResource', 'groupsResource']
11559
11532
11560
11533
11561 function ApplicationPermissionsController(sectionViewResource, applicationsPropertyResource , groupsResource) {
11534 function ApplicationPermissionsController(sectionViewResource, applicationsPropertyResource , groupsResource) {
11562 var vm = this;
11535 var vm = this;
11563 vm.form = {
11536 vm.form = {
11564 autocompleteUser: '',
11537 autocompleteUser: '',
11565 selectedGroup: null,
11538 selectedGroup: null,
11566 selectedUserPermissions: {},
11539 selectedUserPermissions: {},
11567 selectedGroupPermissions: {}
11540 selectedGroupPermissions: {}
11568 }
11541 }
11569 vm.possibleGroups = groupsResource.query(null, function(){
11542 vm.possibleGroups = groupsResource.query(null, function(){
11570 if (vm.possibleGroups.length > 0){
11543 if (vm.possibleGroups.length > 0){
11571 vm.form.selectedGroup = vm.possibleGroups[0].id;
11544 vm.form.selectedGroup = vm.possibleGroups[0].id;
11572 }
11545 }
11573 });
11546 });
11574
11547
11575 vm.possibleUsers = [];
11548 vm.possibleUsers = [];
11576 _.each(vm.resource.possible_permissions, function (perm) {
11549 _.each(vm.resource.possible_permissions, function (perm) {
11577 vm.form.selectedUserPermissions[perm] = false;
11550 vm.form.selectedUserPermissions[perm] = false;
11578 vm.form.selectedGroupPermissions[perm] = false;
11551 vm.form.selectedGroupPermissions[perm] = false;
11579 });
11552 });
11580
11553
11581 /**
11554 /**
11582 * Converts the permission list into {user, permission_list objects}
11555 * Converts the permission list into {user, permission_list objects}
11583 * for rendering in templates
11556 * for rendering in templates
11584 * **/
11557 * **/
11585 var tmpObj = {
11558 var tmpObj = {
11586 user: {},
11559 user: {},
11587 group: {}
11560 group: {}
11588 };
11561 };
11589 _.each(vm.currentPermissions, function (perm) {
11562 _.each(vm.currentPermissions, function (perm) {
11590
11563
11591 if (perm.type == 'user') {
11564 if (perm.type == 'user') {
11592 if (typeof tmpObj[perm.type][perm.user_name] === 'undefined') {
11565 if (typeof tmpObj[perm.type][perm.user_name] === 'undefined') {
11593 tmpObj[perm.type][perm.user_name] = {
11566 tmpObj[perm.type][perm.user_name] = {
11594 self: perm,
11567 self: perm,
11595 permissions: []
11568 permissions: []
11596 }
11569 }
11597 }
11570 }
11598 if (tmpObj[perm.type][perm.user_name].permissions.indexOf(perm.perm_name) === -1) {
11571 if (tmpObj[perm.type][perm.user_name].permissions.indexOf(perm.perm_name) === -1) {
11599 tmpObj[perm.type][perm.user_name].permissions.push(perm.perm_name);
11572 tmpObj[perm.type][perm.user_name].permissions.push(perm.perm_name);
11600 }
11573 }
11601 }
11574 }
11602 else {
11575 else {
11603 if (typeof tmpObj[perm.type][perm.group_name] === 'undefined') {
11576 if (typeof tmpObj[perm.type][perm.group_name] === 'undefined') {
11604 tmpObj[perm.type][perm.group_name] = {
11577 tmpObj[perm.type][perm.group_name] = {
11605 self: perm,
11578 self: perm,
11606 permissions: []
11579 permissions: []
11607 }
11580 }
11608 }
11581 }
11609 if (tmpObj[perm.type][perm.group_name].permissions.indexOf(perm.perm_name) === -1) {
11582 if (tmpObj[perm.type][perm.group_name].permissions.indexOf(perm.perm_name) === -1) {
11610 tmpObj[perm.type][perm.group_name].permissions.push(perm.perm_name);
11583 tmpObj[perm.type][perm.group_name].permissions.push(perm.perm_name);
11611 }
11584 }
11612
11585
11613 }
11586 }
11614 });
11587 });
11615 vm.currentPermissions = {
11588 vm.currentPermissions = {
11616 user: _.values(tmpObj.user),
11589 user: _.values(tmpObj.user),
11617 group: _.values(tmpObj.group),
11590 group: _.values(tmpObj.group),
11618 };
11591 };
11619
11592
11620
11593
11621
11594
11622 vm.searchUsers = function (searchPhrase) {
11595 vm.searchUsers = function (searchPhrase) {
11623
11596
11624 vm.searchingUsers = true;
11597 vm.searchingUsers = true;
11625 return sectionViewResource.query({
11598 return sectionViewResource.query({
11626 section: 'users_section',
11599 section: 'users_section',
11627 view: 'search_users',
11600 view: 'search_users',
11628 'user_name': searchPhrase
11601 'user_name': searchPhrase
11629 }).$promise.then(function (data) {
11602 }).$promise.then(function (data) {
11630 vm.searchingUsers = false;
11603 vm.searchingUsers = false;
11631 return _.map(data, function (item) {
11604 return _.map(data, function (item) {
11632 return item;
11605 return item;
11633 });
11606 });
11634 });
11607 });
11635 };
11608 };
11636
11609
11637
11610
11638 vm.setGroupPermission = function(){
11611 vm.setGroupPermission = function(){
11639 var POSTObj = {
11612 var POSTObj = {
11640 'group_id': vm.form.selectedGroup,
11613 'group_id': vm.form.selectedGroup,
11641 'permissions': []
11614 'permissions': []
11642 };
11615 };
11643 for (var key in vm.form.selectedGroupPermissions) {
11616 for (var key in vm.form.selectedGroupPermissions) {
11644 if (vm.form.selectedGroupPermissions[key]) {
11617 if (vm.form.selectedGroupPermissions[key]) {
11645 POSTObj.permissions.push(key)
11618 POSTObj.permissions.push(key)
11646 }
11619 }
11647 }
11620 }
11648 applicationsPropertyResource.save({
11621 applicationsPropertyResource.save({
11649 key: 'group_permissions',
11622 key: 'group_permissions',
11650 resourceId: vm.resource.resource_id
11623 resourceId: vm.resource.resource_id
11651 }, POSTObj,
11624 }, POSTObj,
11652 function (data) {
11625 function (data) {
11653 var found_row = false;
11626 var found_row = false;
11654 _.each(vm.currentPermissions.group, function (perm) {
11627 _.each(vm.currentPermissions.group, function (perm) {
11655 if (perm.self.group_id == data.group.id) {
11628 if (perm.self.group_id == data.group.id) {
11656 perm['permissions'] = data['permissions'];
11629 perm['permissions'] = data['permissions'];
11657 found_row = true;
11630 found_row = true;
11658 }
11631 }
11659 });
11632 });
11660 if (!found_row) {
11633 if (!found_row) {
11661 data.self = data.group;
11634 data.self = data.group;
11662 // normalize data format
11635 // normalize data format
11663 data.self.group_id = data.self.id;
11636 data.self.group_id = data.self.id;
11664 vm.currentPermissions.group.push(data);
11637 vm.currentPermissions.group.push(data);
11665 }
11638 }
11666 });
11639 });
11667
11640
11668 }
11641 }
11669
11642
11670
11643
11671 vm.setUserPermission = function () {
11644 vm.setUserPermission = function () {
11672
11645
11673 var POSTObj = {
11646 var POSTObj = {
11674 'user_name': vm.form.autocompleteUser,
11647 'user_name': vm.form.autocompleteUser,
11675 'permissions': []
11648 'permissions': []
11676 };
11649 };
11677 for (var key in vm.form.selectedUserPermissions) {
11650 for (var key in vm.form.selectedUserPermissions) {
11678 if (vm.form.selectedUserPermissions[key]) {
11651 if (vm.form.selectedUserPermissions[key]) {
11679 POSTObj.permissions.push(key)
11652 POSTObj.permissions.push(key)
11680 }
11653 }
11681 }
11654 }
11682 applicationsPropertyResource.save({
11655 applicationsPropertyResource.save({
11683 key: 'user_permissions',
11656 key: 'user_permissions',
11684 resourceId: vm.resource.resource_id
11657 resourceId: vm.resource.resource_id
11685 }, POSTObj,
11658 }, POSTObj,
11686 function (data) {
11659 function (data) {
11687 var found_row = false;
11660 var found_row = false;
11688 _.each(vm.currentPermissions.user, function (perm) {
11661 _.each(vm.currentPermissions.user, function (perm) {
11689 if (perm.self.user_name == data['user_name']) {
11662 if (perm.self.user_name == data['user_name']) {
11690 perm['permissions'] = data['permissions'];
11663 perm['permissions'] = data['permissions'];
11691 found_row = true;
11664 found_row = true;
11692 }
11665 }
11693 });
11666 });
11694 if (!found_row) {
11667 if (!found_row) {
11695 data.self = data;
11668 data.self = data;
11696 vm.currentPermissions.user.push(data);
11669 vm.currentPermissions.user.push(data);
11697 }
11670 }
11698 });
11671 });
11699 }
11672 }
11700
11673
11701 vm.removeUserPermission = function (perm_name, curr_perm) {
11674 vm.removeUserPermission = function (perm_name, curr_perm) {
11702
11675
11703
11676
11704 var POSTObj = {
11677 var POSTObj = {
11705 key: 'user_permissions',
11678 key: 'user_permissions',
11706 user_name: curr_perm.self.user_name,
11679 user_name: curr_perm.self.user_name,
11707 permissions: [perm_name],
11680 permissions: [perm_name],
11708 resourceId: vm.resource.resource_id
11681 resourceId: vm.resource.resource_id
11709 }
11682 }
11710 applicationsPropertyResource.delete(POSTObj, function (data) {
11683 applicationsPropertyResource.delete(POSTObj, function (data) {
11711 _.each(vm.currentPermissions.user, function (perm) {
11684 _.each(vm.currentPermissions.user, function (perm) {
11712 if (perm.self.user_name == data['user_name']) {
11685 if (perm.self.user_name == data['user_name']) {
11713 perm['permissions'] = data['permissions']
11686 perm['permissions'] = data['permissions']
11714 }
11687 }
11715 });
11688 });
11716 });
11689 });
11717 }
11690 }
11718
11691
11719 vm.removeGroupPermission = function (perm_name, curr_perm) {
11692 vm.removeGroupPermission = function (perm_name, curr_perm) {
11720
11693
11721 var POSTObj = {
11694 var POSTObj = {
11722 key: 'group_permissions',
11695 key: 'group_permissions',
11723 group_id: curr_perm.self.group_id,
11696 group_id: curr_perm.self.group_id,
11724 permissions: [perm_name],
11697 permissions: [perm_name],
11725 resourceId: vm.resource.resource_id
11698 resourceId: vm.resource.resource_id
11726 }
11699 }
11727 applicationsPropertyResource.delete(POSTObj, function (data) {
11700 applicationsPropertyResource.delete(POSTObj, function (data) {
11728 _.each(vm.currentPermissions.group, function (perm) {
11701 _.each(vm.currentPermissions.group, function (perm) {
11729 if (perm.self.group_id == data.group.id) {
11702 if (perm.self.group_id == data.group.id) {
11730 perm['permissions'] = data['permissions']
11703 perm['permissions'] = data['permissions']
11731 }
11704 }
11732 });
11705 });
11733 });
11706 });
11734 }
11707 }
11735 }
11708 }
11736
11709
11737 angular.module('appenlight.directives.permissionsForm',[])
11710 angular.module('appenlight.directives.permissionsForm',[])
11738 .directive('permissionsForm', function () {
11711 .directive('permissionsForm', function () {
11739 return {
11712 return {
11740 "restrict": "E",
11713 "restrict": "E",
11741 "controller": "ApplicationPermissionsController",
11714 "controller": "ApplicationPermissionsController",
11742 controllerAs: 'permissions',
11715 controllerAs: 'permissions',
11743 bindToController: true,
11716 bindToController: true,
11744 scope: {
11717 scope: {
11745 currentPermissions: '=',
11718 currentPermissions: '=',
11746 possiblePermissions: '=',
11719 possiblePermissions: '=',
11747 resource: '='
11720 resource: '='
11748 },
11721 },
11749 templateUrl: 'templates/directives/permissions.html'
11722 templateUrl: 'directives/permissions/permissions.html'
11750 }
11723 }
11751 })
11724 })
11752
11725
11753 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
11726 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
11754 // #
11727 // #
11755 // # This program is free software: you can redistribute it and/or modify
11728 // # This program is free software: you can redistribute it and/or modify
11756 // # it under the terms of the GNU Affero General Public License, version 3
11729 // # it under the terms of the GNU Affero General Public License, version 3
11757 // # (only), as published by the Free Software Foundation.
11730 // # (only), as published by the Free Software Foundation.
11758 // #
11731 // #
11759 // # This program is distributed in the hope that it will be useful,
11732 // # This program is distributed in the hope that it will be useful,
11760 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
11733 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
11761 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11734 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11762 // # GNU General Public License for more details.
11735 // # GNU General Public License for more details.
11763 // #
11736 // #
11764 // # You should have received a copy of the GNU Affero General Public License
11737 // # You should have received a copy of the GNU Affero General Public License
11765 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
11738 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
11766 // #
11739 // #
11767 // # This program is dual-licensed. If you wish to learn more about the
11740 // # This program is dual-licensed. If you wish to learn more about the
11768 // # AppEnlight Enterprise Edition, including its added features, Support
11741 // # AppEnlight Enterprise Edition, including its added features, Support
11769 // # services, and proprietary license terms, please see
11742 // # services, and proprietary license terms, please see
11770 // # https://rhodecode.com/licenses/
11743 // # https://rhodecode.com/licenses/
11771
11744
11772 angular.module('appenlight.directives.pluginConfig', []).directive('pluginConfig', function () {
11745 angular.module('appenlight.directives.pluginConfig', []).directive('pluginConfig', function () {
11773 return {
11746 return {
11774 scope: {},
11747 scope: {},
11775 bindToController: {
11748 bindToController: {
11776 resource: '=',
11749 resource: '=',
11777 section: '='
11750 section: '='
11778 },
11751 },
11779 restrict: 'E',
11752 restrict: 'E',
11780 templateUrl: 'templates/directives/plugin_config.html',
11753 templateUrl: 'directives/plugin_config/plugin_config.html',
11781 controller: PluginConfig,
11754 controller: PluginConfig,
11782 controllerAs: 'plugin_ctrlr'
11755 controllerAs: 'plugin_ctrlr'
11783 };
11756 };
11784
11757
11785 PluginConfig.$inject = ['stateHolder'];
11758 PluginConfig.$inject = ['stateHolder'];
11786
11759
11787 function PluginConfig(stateHolder) {
11760 function PluginConfig(stateHolder) {
11788 var vm = this;
11761 var vm = this;
11789 vm.plugins = {};
11762 vm.plugins = {};
11790 vm.inclusions = stateHolder.plugins.inclusions[vm.section];
11763 vm.inclusions = stateHolder.plugins.inclusions[vm.section];
11791 }
11764 }
11792 });
11765 });
11793
11766
11794 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
11767 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
11795 // #
11768 // #
11796 // # This program is free software: you can redistribute it and/or modify
11769 // # This program is free software: you can redistribute it and/or modify
11797 // # it under the terms of the GNU Affero General Public License, version 3
11770 // # it under the terms of the GNU Affero General Public License, version 3
11798 // # (only), as published by the Free Software Foundation.
11771 // # (only), as published by the Free Software Foundation.
11799 // #
11772 // #
11800 // # This program is distributed in the hope that it will be useful,
11773 // # This program is distributed in the hope that it will be useful,
11801 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
11774 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
11802 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11775 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11803 // # GNU General Public License for more details.
11776 // # GNU General Public License for more details.
11804 // #
11777 // #
11805 // # You should have received a copy of the GNU Affero General Public License
11778 // # You should have received a copy of the GNU Affero General Public License
11806 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
11779 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
11807 // #
11780 // #
11808 // # This program is dual-licensed. If you wish to learn more about the
11781 // # This program is dual-licensed. If you wish to learn more about the
11809 // # AppEnlight Enterprise Edition, including its added features, Support
11782 // # AppEnlight Enterprise Edition, including its added features, Support
11810 // # services, and proprietary license terms, please see
11783 // # services, and proprietary license terms, please see
11811 // # https://rhodecode.com/licenses/
11784 // # https://rhodecode.com/licenses/
11812
11785
11813 angular.module('appenlight.directives.postProcessAction', []).directive('postProcessAction', ['applicationsPropertyResource', function (applicationsPropertyResource) {
11786 angular.module('appenlight.directives.postProcessAction', []).directive('postProcessAction', ['applicationsPropertyResource', function (applicationsPropertyResource) {
11814 return {
11787 return {
11815 scope: {},
11788 scope: {},
11816 bindToController:{
11789 bindToController:{
11817 action: '=',
11790 action: '=',
11818 resource: '='
11791 resource: '='
11819 },
11792 },
11820 controller:postProcessActionController,
11793 controller:postProcessActionController,
11821 controllerAs:'ctrl',
11794 controllerAs:'ctrl',
11822 restrict: 'E',
11795 restrict: 'E',
11823 templateUrl: 'templates/directives/postprocess_action.html'
11796 templateUrl: 'directives/postprocess_action/postprocess_action.html'
11824 };
11797 };
11825 function postProcessActionController(){
11798 function postProcessActionController(){
11826 var vm = this;
11799 var vm = this;
11827
11800
11828 var allOps = {
11801 var allOps = {
11829 'eq': 'Equal',
11802 'eq': 'Equal',
11830 'ne': 'Not equal',
11803 'ne': 'Not equal',
11831 'ge': 'Greater or equal',
11804 'ge': 'Greater or equal',
11832 'gt': 'Greater than',
11805 'gt': 'Greater than',
11833 'le': 'Lesser or equal',
11806 'le': 'Lesser or equal',
11834 'lt': 'Lesser than',
11807 'lt': 'Lesser than',
11835 'startswith': 'Starts with',
11808 'startswith': 'Starts with',
11836 'endswith': 'Ends with',
11809 'endswith': 'Ends with',
11837 'contains': 'Contains'
11810 'contains': 'Contains'
11838 };
11811 };
11839
11812
11840 var fieldOps = {};
11813 var fieldOps = {};
11841 fieldOps['http_status'] = ['eq', 'ne', 'ge', 'le'];
11814 fieldOps['http_status'] = ['eq', 'ne', 'ge', 'le'];
11842 fieldOps['group:priority'] = ['eq', 'ne', 'ge', 'le'];
11815 fieldOps['group:priority'] = ['eq', 'ne', 'ge', 'le'];
11843 fieldOps['duration'] = ['ge', 'le'];
11816 fieldOps['duration'] = ['ge', 'le'];
11844 fieldOps['url_domain'] = ['eq', 'ne', 'startswith', 'endswith',
11817 fieldOps['url_domain'] = ['eq', 'ne', 'startswith', 'endswith',
11845 'contains'];
11818 'contains'];
11846 fieldOps['url_path'] = ['eq', 'ne', 'startswith', 'endswith',
11819 fieldOps['url_path'] = ['eq', 'ne', 'startswith', 'endswith',
11847 'contains'];
11820 'contains'];
11848 fieldOps['error'] = ['eq', 'ne', 'startswith', 'endswith',
11821 fieldOps['error'] = ['eq', 'ne', 'startswith', 'endswith',
11849 'contains'];
11822 'contains'];
11850 fieldOps['tags:server_name'] = ['eq', 'ne', 'startswith', 'endswith',
11823 fieldOps['tags:server_name'] = ['eq', 'ne', 'startswith', 'endswith',
11851 'contains'];
11824 'contains'];
11852 fieldOps['group:occurences'] = ['eq', 'ne', 'ge', 'le'];
11825 fieldOps['group:occurences'] = ['eq', 'ne', 'ge', 'le'];
11853
11826
11854 var possibleFields = {
11827 var possibleFields = {
11855 '__AND__': 'All met (composite rule)',
11828 '__AND__': 'All met (composite rule)',
11856 '__OR__': 'One met (composite rule)',
11829 '__OR__': 'One met (composite rule)',
11857 '__NOT__': 'Not met (composite rule)',
11830 '__NOT__': 'Not met (composite rule)',
11858 'http_status': 'HTTP Status',
11831 'http_status': 'HTTP Status',
11859 'duration': 'Request duration',
11832 'duration': 'Request duration',
11860 'group:priority': 'Group -> Priority',
11833 'group:priority': 'Group -> Priority',
11861 'url_domain': 'Domain',
11834 'url_domain': 'Domain',
11862 'url_path': 'URL Path',
11835 'url_path': 'URL Path',
11863 'error': 'Error',
11836 'error': 'Error',
11864 'tags:server_name': 'Tag -> Server name',
11837 'tags:server_name': 'Tag -> Server name',
11865 'group:occurences': 'Group -> Occurences'
11838 'group:occurences': 'Group -> Occurences'
11866 };
11839 };
11867
11840
11868 vm.ruleDefinitions = {
11841 vm.ruleDefinitions = {
11869 fieldOps: fieldOps,
11842 fieldOps: fieldOps,
11870 allOps: allOps,
11843 allOps: allOps,
11871 possibleFields: possibleFields
11844 possibleFields: possibleFields
11872 };
11845 };
11873
11846
11874 vm.possibleActions = [
11847 vm.possibleActions = [
11875 ['1', 'Priority +1'],
11848 ['1', 'Priority +1'],
11876 ['-1', 'Priority -1']
11849 ['-1', 'Priority -1']
11877 ];
11850 ];
11878
11851
11879 vm.deleteAction = function (action) {
11852 vm.deleteAction = function (action) {
11880 applicationsPropertyResource.remove({
11853 applicationsPropertyResource.remove({
11881 pkey: vm.action.pkey,
11854 pkey: vm.action.pkey,
11882 resourceId: vm.resource.resource_id,
11855 resourceId: vm.resource.resource_id,
11883 key: 'postprocessing_rules'
11856 key: 'postprocessing_rules'
11884 }, function () {
11857 }, function () {
11885 vm.resource.postprocessing_rules.splice(
11858 vm.resource.postprocessing_rules.splice(
11886 vm.resource.postprocessing_rules.indexOf(action), 1);
11859 vm.resource.postprocessing_rules.indexOf(action), 1);
11887 });
11860 });
11888 };
11861 };
11889
11862
11890
11863
11891 vm.saveAction = function () {
11864 vm.saveAction = function () {
11892 var params = {
11865 var params = {
11893 'pkey': vm.action.pkey,
11866 'pkey': vm.action.pkey,
11894 'resourceId': vm.resource.resource_id,
11867 'resourceId': vm.resource.resource_id,
11895 key: 'postprocessing_rules'
11868 key: 'postprocessing_rules'
11896 };
11869 };
11897 applicationsPropertyResource.update(params, vm.action,
11870 applicationsPropertyResource.update(params, vm.action,
11898 function (data) {
11871 function (data) {
11899 vm.action.dirty = false;
11872 vm.action.dirty = false;
11900 vm.errors = [];
11873 vm.errors = [];
11901 }, function (response) {
11874 }, function (response) {
11902 if (response.status == 422) {
11875 if (response.status == 422) {
11903 var errorDict = angular.fromJson(response.data);
11876 var errorDict = angular.fromJson(response.data);
11904 vm.errors = _.values(errorDict);
11877 vm.errors = _.values(errorDict);
11905 }
11878 }
11906 });
11879 });
11907 };
11880 };
11908
11881
11909 vm.setDirty = function() {
11882 vm.setDirty = function() {
11910 vm.action.dirty = true;
11883 vm.action.dirty = true;
11911
11884
11912 };
11885 };
11913 }
11886 }
11914
11887
11915 }]);
11888 }]);
11916
11889
11917 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
11890 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
11918 // #
11891 // #
11919 // # This program is free software: you can redistribute it and/or modify
11892 // # This program is free software: you can redistribute it and/or modify
11920 // # it under the terms of the GNU Affero General Public License, version 3
11893 // # it under the terms of the GNU Affero General Public License, version 3
11921 // # (only), as published by the Free Software Foundation.
11894 // # (only), as published by the Free Software Foundation.
11922 // #
11895 // #
11923 // # This program is distributed in the hope that it will be useful,
11896 // # This program is distributed in the hope that it will be useful,
11924 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
11897 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
11925 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11898 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11926 // # GNU General Public License for more details.
11899 // # GNU General Public License for more details.
11927 // #
11900 // #
11928 // # You should have received a copy of the GNU Affero General Public License
11901 // # You should have received a copy of the GNU Affero General Public License
11929 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
11902 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
11930 // #
11903 // #
11931 // # This program is dual-licensed. If you wish to learn more about the
11904 // # This program is dual-licensed. If you wish to learn more about the
11932 // # AppEnlight Enterprise Edition, including its added features, Support
11905 // # AppEnlight Enterprise Edition, including its added features, Support
11933 // # services, and proprietary license terms, please see
11906 // # services, and proprietary license terms, please see
11934 // # https://rhodecode.com/licenses/
11907 // # https://rhodecode.com/licenses/
11935
11908
11936 angular.module('appenlight.directives.recursive', []).directive("recursive", function ($compile) {
11909 angular.module('appenlight.directives.recursive', []).directive("recursive", function ($compile) {
11937 return {
11910 return {
11938 restrict: "EACM",
11911 restrict: "EACM",
11939 priority: 100000,
11912 priority: 100000,
11940 compile: function (tElement, tAttr) {
11913 compile: function (tElement, tAttr) {
11941 var contents = tElement.contents().remove();
11914 var contents = tElement.contents().remove();
11942 var compiledContents;
11915 var compiledContents;
11943 return function (scope, iElement, iAttr) {
11916 return function (scope, iElement, iAttr) {
11944 if (!compiledContents) {
11917 if (!compiledContents) {
11945 compiledContents = $compile(contents);
11918 compiledContents = $compile(contents);
11946 }
11919 }
11947 iElement.append(compiledContents(scope, function (clone) {
11920 iElement.append(compiledContents(scope, function (clone) {
11948 return clone;
11921 return clone;
11949 }));
11922 }));
11950 };
11923 };
11951 }
11924 }
11952 };
11925 };
11953 });
11926 });
11954
11927
11955 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
11928 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
11956 // #
11929 // #
11957 // # This program is free software: you can redistribute it and/or modify
11930 // # This program is free software: you can redistribute it and/or modify
11958 // # it under the terms of the GNU Affero General Public License, version 3
11931 // # it under the terms of the GNU Affero General Public License, version 3
11959 // # (only), as published by the Free Software Foundation.
11932 // # (only), as published by the Free Software Foundation.
11960 // #
11933 // #
11961 // # This program is distributed in the hope that it will be useful,
11934 // # This program is distributed in the hope that it will be useful,
11962 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
11935 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
11963 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11936 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11964 // # GNU General Public License for more details.
11937 // # GNU General Public License for more details.
11965 // #
11938 // #
11966 // # You should have received a copy of the GNU Affero General Public License
11939 // # You should have received a copy of the GNU Affero General Public License
11967 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
11940 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
11968 // #
11941 // #
11969 // # This program is dual-licensed. If you wish to learn more about the
11942 // # This program is dual-licensed. If you wish to learn more about the
11970 // # AppEnlight Enterprise Edition, including its added features, Support
11943 // # AppEnlight Enterprise Edition, including its added features, Support
11971 // # services, and proprietary license terms, please see
11944 // # services, and proprietary license terms, please see
11972 // # https://rhodecode.com/licenses/
11945 // # https://rhodecode.com/licenses/
11973
11946
11974 angular.module('appenlight.directives.reportAlertAction', []).directive('reportAlertAction', ['userSelfPropertyResource', function (userSelfPropertyResource) {
11947 angular.module('appenlight.directives.reportAlertAction', []).directive('reportAlertAction', ['userSelfPropertyResource', function (userSelfPropertyResource) {
11975 return {
11948 return {
11976 scope: {},
11949 scope: {},
11977 bindToController:{
11950 bindToController:{
11978 action: '=',
11951 action: '=',
11979 applications: '=',
11952 applications: '=',
11980 possibleChannels: '=',
11953 possibleChannels: '=',
11981 actions: '=',
11954 actions: '=',
11982 ruleDefinitions: '='
11955 ruleDefinitions: '='
11983 },
11956 },
11984 controller:reportAlertActionController,
11957 controller:reportAlertActionController,
11985 controllerAs:'ctrl',
11958 controllerAs:'ctrl',
11986 restrict: 'E',
11959 restrict: 'E',
11987 templateUrl: 'templates/directives/report_alert_action.html'
11960 templateUrl: 'directives/report_alert_action/report_alert_action.html'
11988 };
11961 };
11989 function reportAlertActionController(){
11962 function reportAlertActionController(){
11990 var vm = this;
11963 var vm = this;
11991 vm.deleteAction = function (actions, action) {
11964 vm.deleteAction = function (actions, action) {
11992 var get = {
11965 var get = {
11993 key: 'alert_channels_rules',
11966 key: 'alert_channels_rules',
11994 pkey: action.pkey
11967 pkey: action.pkey
11995 };
11968 };
11996 userSelfPropertyResource.remove(get, function (data) {
11969 userSelfPropertyResource.remove(get, function (data) {
11997 actions.splice(actions.indexOf(action), 1);
11970 actions.splice(actions.indexOf(action), 1);
11998 });
11971 });
11999
11972
12000 };
11973 };
12001
11974
12002 vm.bindChannel = function(){
11975 vm.bindChannel = function(){
12003 var post = {
11976 var post = {
12004 channel_pkey: vm.channelToBind.pkey,
11977 channel_pkey: vm.channelToBind.pkey,
12005 action_pkey: vm.action.pkey
11978 action_pkey: vm.action.pkey
12006 };
11979 };
12007
11980
12008 userSelfPropertyResource.save({key: 'alert_channels_actions_binds'}, post,
11981 userSelfPropertyResource.save({key: 'alert_channels_actions_binds'}, post,
12009 function (data) {
11982 function (data) {
12010 vm.action.channels = [];
11983 vm.action.channels = [];
12011 vm.action.channels = data.channels;
11984 vm.action.channels = data.channels;
12012 }, function (response) {
11985 }, function (response) {
12013 if (response.status == 422) {
11986 if (response.status == 422) {
12014
11987
12015 }
11988 }
12016 });
11989 });
12017 };
11990 };
12018
11991
12019 vm.unBindChannel = function(channel){
11992 vm.unBindChannel = function(channel){
12020 userSelfPropertyResource.delete({
11993 userSelfPropertyResource.delete({
12021 key: 'alert_channels_actions_binds',
11994 key: 'alert_channels_actions_binds',
12022 channel_pkey: channel.pkey,
11995 channel_pkey: channel.pkey,
12023 action_pkey: vm.action.pkey
11996 action_pkey: vm.action.pkey
12024 },
11997 },
12025 function (data) {
11998 function (data) {
12026 vm.action.channels = [];
11999 vm.action.channels = [];
12027 vm.action.channels = data.channels;
12000 vm.action.channels = data.channels;
12028 }, function (response) {
12001 }, function (response) {
12029 if (response.status == 422) {
12002 if (response.status == 422) {
12030
12003
12031 }
12004 }
12032 });
12005 });
12033 };
12006 };
12034
12007
12035 vm.saveAction = function () {
12008 vm.saveAction = function () {
12036 var params = {
12009 var params = {
12037 key: 'alert_channels_rules',
12010 key: 'alert_channels_rules',
12038 pkey: vm.action.pkey
12011 pkey: vm.action.pkey
12039 };
12012 };
12040 userSelfPropertyResource.update(params, vm.action,
12013 userSelfPropertyResource.update(params, vm.action,
12041 function (data) {
12014 function (data) {
12042 vm.action.dirty = false;
12015 vm.action.dirty = false;
12043 vm.errors = [];
12016 vm.errors = [];
12044 }, function (response) {
12017 }, function (response) {
12045 if (response.status == 422) {
12018 if (response.status == 422) {
12046 var errorDict = angular.fromJson(response.data);
12019 var errorDict = angular.fromJson(response.data);
12047 vm.errors = _.values(errorDict);
12020 vm.errors = _.values(errorDict);
12048 }
12021 }
12049 });
12022 });
12050 };
12023 };
12051
12024
12052 vm.possibleNotifications = [
12025 vm.possibleNotifications = [
12053 ['always', 'Always'],
12026 ['always', 'Always'],
12054 ['only_first', 'Only New'],
12027 ['only_first', 'Only New'],
12055 ];
12028 ];
12056
12029
12057 vm.possibleChannels = _.filter(vm.possibleChannels, function(c){
12030 vm.possibleChannels = _.filter(vm.possibleChannels, function(c){
12058 return c.supports_report_alerting }
12031 return c.supports_report_alerting }
12059 );
12032 );
12060
12033
12061 if (vm.possibleChannels.length > 0){
12034 if (vm.possibleChannels.length > 0){
12062 vm.channelToBind = vm.possibleChannels[0];
12035 vm.channelToBind = vm.possibleChannels[0];
12063 }
12036 }
12064
12037
12065 vm.setDirty = function() {
12038 vm.setDirty = function() {
12066 vm.action.dirty = true;
12039 vm.action.dirty = true;
12067
12040
12068 };
12041 };
12069 }
12042 }
12070
12043
12071 }]);
12044 }]);
12072
12045
12073 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
12046 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
12074 // #
12047 // #
12075 // # This program is free software: you can redistribute it and/or modify
12048 // # This program is free software: you can redistribute it and/or modify
12076 // # it under the terms of the GNU Affero General Public License, version 3
12049 // # it under the terms of the GNU Affero General Public License, version 3
12077 // # (only), as published by the Free Software Foundation.
12050 // # (only), as published by the Free Software Foundation.
12078 // #
12051 // #
12079 // # This program is distributed in the hope that it will be useful,
12052 // # This program is distributed in the hope that it will be useful,
12080 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
12053 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
12081 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12054 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12082 // # GNU General Public License for more details.
12055 // # GNU General Public License for more details.
12083 // #
12056 // #
12084 // # You should have received a copy of the GNU Affero General Public License
12057 // # You should have received a copy of the GNU Affero General Public License
12085 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
12058 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
12086 // #
12059 // #
12087 // # This program is dual-licensed. If you wish to learn more about the
12060 // # This program is dual-licensed. If you wish to learn more about the
12088 // # AppEnlight Enterprise Edition, including its added features, Support
12061 // # AppEnlight Enterprise Edition, including its added features, Support
12089 // # services, and proprietary license terms, please see
12062 // # services, and proprietary license terms, please see
12090 // # https://rhodecode.com/licenses/
12063 // # https://rhodecode.com/licenses/
12091
12064
12092 angular.module('appenlight.directives.ruleReadOnly', []).directive('ruleReadOnly', ['userSelfPropertyResource', function (userSelfPropertyResource) {
12065 angular.module('appenlight.directives.ruleReadOnly', []).directive('ruleReadOnly', ['userSelfPropertyResource', function (userSelfPropertyResource) {
12093 return {
12066 return {
12094 scope: {},
12067 scope: {},
12095 bindToController:{
12068 bindToController:{
12096 parentObj: '=',
12069 parentObj: '=',
12097 rule: '=',
12070 rule: '=',
12098 ruleDefinitions: '=',
12071 ruleDefinitions: '=',
12099 parentRule: "=",
12072 parentRule: "=",
12100 config: "="
12073 config: "="
12101 },
12074 },
12102 restrict: 'E',
12075 restrict: 'E',
12103 templateUrl: 'templates/directives/rule_read_only.html',
12076 templateUrl: 'directives/rule_read_only/rule_read_only.html',
12104 controller:RuleController,
12077 controller:RuleController,
12105 controllerAs:'rule_ctrlr'
12078 controllerAs:'rule_ctrlr'
12106 }
12079 }
12107 function RuleController(){
12080 function RuleController(){
12108 var vm = this;
12081 var vm = this;
12109 vm.readOnlyPossibleFields = {};
12082 vm.readOnlyPossibleFields = {};
12110 var labelPairs = _.pairs(vm.parentObj.config);
12083 var labelPairs = _.pairs(vm.parentObj.config);
12111 _.each(labelPairs, function (entry) {
12084 _.each(labelPairs, function (entry) {
12112 vm.readOnlyPossibleFields[entry[0]] = entry[1].human_label;
12085 vm.readOnlyPossibleFields[entry[0]] = entry[1].human_label;
12113 });
12086 });
12114 }
12087 }
12115 }]);
12088 }]);
12116
12089
12117 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
12090 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
12118 // #
12091 // #
12119 // # This program is free software: you can redistribute it and/or modify
12092 // # This program is free software: you can redistribute it and/or modify
12120 // # it under the terms of the GNU Affero General Public License, version 3
12093 // # it under the terms of the GNU Affero General Public License, version 3
12121 // # (only), as published by the Free Software Foundation.
12094 // # (only), as published by the Free Software Foundation.
12122 // #
12095 // #
12123 // # This program is distributed in the hope that it will be useful,
12096 // # This program is distributed in the hope that it will be useful,
12124 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
12097 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
12125 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12098 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12126 // # GNU General Public License for more details.
12099 // # GNU General Public License for more details.
12127 // #
12100 // #
12128 // # You should have received a copy of the GNU Affero General Public License
12101 // # You should have received a copy of the GNU Affero General Public License
12129 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
12102 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
12130 // #
12103 // #
12131 // # This program is dual-licensed. If you wish to learn more about the
12104 // # This program is dual-licensed. If you wish to learn more about the
12132 // # AppEnlight Enterprise Edition, including its added features, Support
12105 // # AppEnlight Enterprise Edition, including its added features, Support
12133 // # services, and proprietary license terms, please see
12106 // # services, and proprietary license terms, please see
12134 // # https://rhodecode.com/licenses/
12107 // # https://rhodecode.com/licenses/
12135
12108
12136 angular.module('appenlight.directives.rule', []).directive('rule', function () {
12109 angular.module('appenlight.directives.rule', []).directive('rule', function () {
12137 return {
12110 return {
12138 scope: {},
12111 scope: {},
12139 bindToController:{
12112 bindToController:{
12140 parentObj: '=',
12113 parentObj: '=',
12141 rule: '=',
12114 rule: '=',
12142 ruleDefinitions: '=',
12115 ruleDefinitions: '=',
12143 parentRule: "=",
12116 parentRule: "=",
12144 config: "="
12117 config: "="
12145 },
12118 },
12146 restrict: 'E',
12119 restrict: 'E',
12147 templateUrl: 'templates/directives/rule.html',
12120 templateUrl: 'directives/rule/rule.html',
12148 controller:RuleController,
12121 controller:RuleController,
12149 controllerAs:'rule_ctrlr'
12122 controllerAs:'rule_ctrlr'
12150 };
12123 };
12151 function RuleController(){
12124 function RuleController(){
12152 var vm = this;
12125 var vm = this;
12153
12126
12154 vm.rule.dirty = false;
12127 vm.rule.dirty = false;
12155 vm.oldField = vm.rule.field;
12128 vm.oldField = vm.rule.field;
12156
12129
12157 vm.add = function () {
12130 vm.add = function () {
12158 vm.rule.rules.push(
12131 vm.rule.rules.push(
12159 {op: "eq", field: 'http_status', value: ""}
12132 {op: "eq", field: 'http_status', value: ""}
12160 );
12133 );
12161 vm.setDirty();
12134 vm.setDirty();
12162 };
12135 };
12163
12136
12164 vm.setDirty = function() {
12137 vm.setDirty = function() {
12165 vm.rule.dirty = true;
12138 vm.rule.dirty = true;
12166
12139
12167 if (vm.parentObj){
12140 if (vm.parentObj){
12168
12141
12169
12142
12170 vm.parentObj.dirty = true;
12143 vm.parentObj.dirty = true;
12171 }
12144 }
12172 };
12145 };
12173
12146
12174 vm.fieldChange = function () {
12147 vm.fieldChange = function () {
12175 var compound_types = ['__AND__', '__OR__', '__NOT__'];
12148 var compound_types = ['__AND__', '__OR__', '__NOT__'];
12176 var new_is_compound = compound_types.indexOf(vm.rule.field) !== -1;
12149 var new_is_compound = compound_types.indexOf(vm.rule.field) !== -1;
12177 var old_was_compound = compound_types.indexOf(vm.oldField) !== -1;
12150 var old_was_compound = compound_types.indexOf(vm.oldField) !== -1;
12178
12151
12179 if (!new_is_compound) {
12152 if (!new_is_compound) {
12180 vm.rule.op = vm.ruleDefinitions.fieldOps[vm.rule.field][0];
12153 vm.rule.op = vm.ruleDefinitions.fieldOps[vm.rule.field][0];
12181 }
12154 }
12182 if ((new_is_compound && !old_was_compound)) {
12155 if ((new_is_compound && !old_was_compound)) {
12183
12156
12184 delete vm.rule.value;
12157 delete vm.rule.value;
12185 vm.rule.rules = [];
12158 vm.rule.rules = [];
12186 vm.add();
12159 vm.add();
12187 }
12160 }
12188 else if (!new_is_compound && old_was_compound) {
12161 else if (!new_is_compound && old_was_compound) {
12189
12162
12190 delete vm.rule.rules;
12163 delete vm.rule.rules;
12191 vm.rule.value = '';
12164 vm.rule.value = '';
12192 }
12165 }
12193 vm.oldField = vm.rule.field;
12166 vm.oldField = vm.rule.field;
12194 vm.setDirty();
12167 vm.setDirty();
12195 };
12168 };
12196
12169
12197 vm.deleteRule = function (parent, rule) {
12170 vm.deleteRule = function (parent, rule) {
12198 parent.rules.splice(parent.rules.indexOf(rule), 1);
12171 parent.rules.splice(parent.rules.indexOf(rule), 1);
12199 vm.setDirty();
12172 vm.setDirty();
12200 }
12173 }
12201 }
12174 }
12202 });
12175 });
12203
12176
12204 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
12177 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
12205 // #
12178 // #
12206 // # This program is free software: you can redistribute it and/or modify
12179 // # This program is free software: you can redistribute it and/or modify
12207 // # it under the terms of the GNU Affero General Public License, version 3
12180 // # it under the terms of the GNU Affero General Public License, version 3
12208 // # (only), as published by the Free Software Foundation.
12181 // # (only), as published by the Free Software Foundation.
12209 // #
12182 // #
12210 // # This program is distributed in the hope that it will be useful,
12183 // # This program is distributed in the hope that it will be useful,
12211 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
12184 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
12212 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12185 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12213 // # GNU General Public License for more details.
12186 // # GNU General Public License for more details.
12214 // #
12187 // #
12215 // # You should have received a copy of the GNU Affero General Public License
12188 // # You should have received a copy of the GNU Affero General Public License
12216 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
12189 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
12217 // #
12190 // #
12218 // # This program is dual-licensed. If you wish to learn more about the
12191 // # This program is dual-licensed. If you wish to learn more about the
12219 // # AppEnlight Enterprise Edition, including its added features, Support
12192 // # AppEnlight Enterprise Edition, including its added features, Support
12220 // # services, and proprietary license terms, please see
12193 // # services, and proprietary license terms, please see
12221 // # https://rhodecode.com/licenses/
12194 // # https://rhodecode.com/licenses/
12222
12195
12223 angular.module('appenlight.directives.smallReportGroupList',[]).
12196 angular.module('appenlight.directives.smallReportGroupList',[]).
12224 directive('smallReportGroupList', [function () {
12197 directive('smallReportGroupList', [function () {
12225 return {
12198 return {
12226 restrict: "A",
12199 restrict: "A",
12227 scope: {
12200 scope: {
12228 groups: '=',
12201 groups: '=',
12229 applications: '='
12202 applications: '='
12230 },
12203 },
12231 templateUrl: 'templates/reports/small_report_group_list.html'
12204 templateUrl: 'templates/reports/small_report_group_list.html'
12232 }
12205 }
12233 }])
12206 }])
12234
12207
12235 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
12208 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
12236 // #
12209 // #
12237 // # This program is free software: you can redistribute it and/or modify
12210 // # This program is free software: you can redistribute it and/or modify
12238 // # it under the terms of the GNU Affero General Public License, version 3
12211 // # it under the terms of the GNU Affero General Public License, version 3
12239 // # (only), as published by the Free Software Foundation.
12212 // # (only), as published by the Free Software Foundation.
12240 // #
12213 // #
12241 // # This program is distributed in the hope that it will be useful,
12214 // # This program is distributed in the hope that it will be useful,
12242 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
12215 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
12243 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12216 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12244 // # GNU General Public License for more details.
12217 // # GNU General Public License for more details.
12245 // #
12218 // #
12246 // # You should have received a copy of the GNU Affero General Public License
12219 // # You should have received a copy of the GNU Affero General Public License
12247 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
12220 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
12248 // #
12221 // #
12249 // # This program is dual-licensed. If you wish to learn more about the
12222 // # This program is dual-licensed. If you wish to learn more about the
12250 // # AppEnlight Enterprise Edition, including its added features, Support
12223 // # AppEnlight Enterprise Edition, including its added features, Support
12251 // # services, and proprietary license terms, please see
12224 // # services, and proprietary license terms, please see
12252 // # https://rhodecode.com/licenses/
12225 // # https://rhodecode.com/licenses/
12253
12226
12254 angular.module('appenlight.directives.smallReportList', []).
12227 angular.module('appenlight.directives.smallReportList', []).
12255 directive('smallReportList', [function () {
12228 directive('smallReportList', [function () {
12256 return {
12229 return {
12257 restrict: "A",
12230 restrict: "A",
12258 scope: {
12231 scope: {
12259 reports: '=',
12232 reports: '=',
12260 applications: '='
12233 applications: '='
12261 },
12234 },
12262 templateUrl: 'templates/reports/small_report_list.html'
12235 templateUrl: 'templates/reports/small_report_list.html'
12263 }
12236 }
12264 }])
12237 }])
12265
12238
12266 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
12239 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
12267 // #
12240 // #
12268 // # This program is free software: you can redistribute it and/or modify
12241 // # This program is free software: you can redistribute it and/or modify
12269 // # it under the terms of the GNU Affero General Public License, version 3
12242 // # it under the terms of the GNU Affero General Public License, version 3
12270 // # (only), as published by the Free Software Foundation.
12243 // # (only), as published by the Free Software Foundation.
12271 // #
12244 // #
12272 // # This program is distributed in the hope that it will be useful,
12245 // # This program is distributed in the hope that it will be useful,
12273 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
12246 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
12274 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12247 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12275 // # GNU General Public License for more details.
12248 // # GNU General Public License for more details.
12276 // #
12249 // #
12277 // # You should have received a copy of the GNU Affero General Public License
12250 // # You should have received a copy of the GNU Affero General Public License
12278 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
12251 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
12279 // #
12252 // #
12280 // # This program is dual-licensed. If you wish to learn more about the
12253 // # This program is dual-licensed. If you wish to learn more about the
12281 // # AppEnlight Enterprise Edition, including its added features, Support
12254 // # AppEnlight Enterprise Edition, including its added features, Support
12282 // # services, and proprietary license terms, please see
12255 // # services, and proprietary license terms, please see
12283 // # https://rhodecode.com/licenses/
12256 // # https://rhodecode.com/licenses/
12284
12257
12285 'use strict';
12258 'use strict';
12286
12259
12287 /* Filters */
12260 /* Filters */
12288
12261
12289 angular.module('appenlight.filters').
12262 angular.module('appenlight.filters').
12290 filter('interpolate', ['version', function (version) {
12263 filter('interpolate', ['version', function (version) {
12291 return function (text) {
12264 return function (text) {
12292 return String(text).replace(/\%VERSION\%/mg, version);
12265 return String(text).replace(/\%VERSION\%/mg, version);
12293 }
12266 }
12294 }])
12267 }])
12295 .filter('isoToRelativeTime', function () {
12268 .filter('isoToRelativeTime', function () {
12296 return function (input) {
12269 return function (input) {
12297 return moment.utc(input).fromNow();
12270 return moment.utc(input).fromNow();
12298 }
12271 }
12299 })
12272 })
12300
12273
12301 .filter('round', function () {
12274 .filter('round', function () {
12302 return function (input, precision) {
12275 return function (input, precision) {
12303 return input.toFixed(precision)
12276 return input.toFixed(precision)
12304 }
12277 }
12305 })
12278 })
12306
12279
12307 .filter('numberToThousands', function () {
12280 .filter('numberToThousands', function () {
12308 return function (input) {
12281 return function (input) {
12309 if (input > 1000000) {
12282 if (input > 1000000) {
12310 var i = input / 1000000;
12283 var i = input / 1000000;
12311 return i.toFixed(1).toString() + 'M'
12284 return i.toFixed(1).toString() + 'M'
12312 }
12285 }
12313 else if (input > 1000) {
12286 else if (input > 1000) {
12314 var i = input / 1000;
12287 var i = input / 1000;
12315 return i.toFixed(1).toString() + 'k'
12288 return i.toFixed(1).toString() + 'k'
12316 }
12289 }
12317 else {
12290 else {
12318 return input;
12291 return input;
12319 }
12292 }
12320 }
12293 }
12321 })
12294 })
12322 .filter('getOrdered', function () {
12295 .filter('getOrdered', function () {
12323 return function (input, filterOn) {
12296 return function (input, filterOn) {
12324 var ordered = {};
12297 var ordered = {};
12325 for (var key in input) {
12298 for (var key in input) {
12326 ordered[input[key][filterOn]] = input[key];
12299 ordered[input[key][filterOn]] = input[key];
12327 }
12300 }
12328 return ordered;
12301 return ordered;
12329 };
12302 };
12330 })
12303 })
12331 .filter('objectToOrderedArray', function(){
12304 .filter('objectToOrderedArray', function(){
12332 return function(items, field, reverse) {
12305 return function(items, field, reverse) {
12333 var filtered = [];
12306 var filtered = [];
12334 angular.forEach(items, function(item) {
12307 angular.forEach(items, function(item) {
12335 filtered.push(item);
12308 filtered.push(item);
12336 });
12309 });
12337 filtered.sort(function (a, b) {
12310 filtered.sort(function (a, b) {
12338 return (a[field] > b[field] ? 1 : -1);
12311 return (a[field] > b[field] ? 1 : -1);
12339 });
12312 });
12340 if(reverse) filtered.reverse();
12313 if(reverse) filtered.reverse();
12341 return filtered;
12314 return filtered;
12342 };
12315 };
12343 })
12316 })
12344 .filter('apdexValue', function () {
12317 .filter('apdexValue', function () {
12345 return function (input) {
12318 return function (input) {
12346 if (input.apdex >= 95) {
12319 if (input.apdex >= 95) {
12347 return 'satisfactory';
12320 return 'satisfactory';
12348 } else if (input.apdex >= 80) {
12321 } else if (input.apdex >= 80) {
12349 return 'tolerating';
12322 return 'tolerating';
12350 } else {
12323 } else {
12351 return 'frustrating';
12324 return 'frustrating';
12352 }
12325 }
12353 };
12326 };
12354 })
12327 })
12355 .filter('truncate', function(){
12328 .filter('truncate', function(){
12356 return function (text, length, end) {
12329 return function (text, length, end) {
12357 if (isNaN(length))
12330 if (isNaN(length))
12358 length = 10;
12331 length = 10;
12359
12332
12360 if (end === undefined)
12333 if (end === undefined)
12361 end = "...";
12334 end = "...";
12362
12335
12363 if (text.length <= length || text.length - end.length <= length) {
12336 if (text.length <= length || text.length - end.length <= length) {
12364 return text;
12337 return text;
12365 }
12338 }
12366 else {
12339 else {
12367 return String(text).substring(0, length-end.length) + end;
12340 return String(text).substring(0, length-end.length) + end;
12368 }
12341 }
12369
12342
12370 };
12343 };
12371 })
12344 })
12372
12345
12373 ;
12346 ;
12374
12347
12375 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
12348 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
12376 // #
12349 // #
12377 // # This program is free software: you can redistribute it and/or modify
12350 // # This program is free software: you can redistribute it and/or modify
12378 // # it under the terms of the GNU Affero General Public License, version 3
12351 // # it under the terms of the GNU Affero General Public License, version 3
12379 // # (only), as published by the Free Software Foundation.
12352 // # (only), as published by the Free Software Foundation.
12380 // #
12353 // #
12381 // # This program is distributed in the hope that it will be useful,
12354 // # This program is distributed in the hope that it will be useful,
12382 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
12355 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
12383 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12356 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12384 // # GNU General Public License for more details.
12357 // # GNU General Public License for more details.
12385 // #
12358 // #
12386 // # You should have received a copy of the GNU Affero General Public License
12359 // # You should have received a copy of the GNU Affero General Public License
12387 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
12360 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
12388 // #
12361 // #
12389 // # This program is dual-licensed. If you wish to learn more about the
12362 // # This program is dual-licensed. If you wish to learn more about the
12390 // # AppEnlight Enterprise Edition, including its added features, Support
12363 // # AppEnlight Enterprise Edition, including its added features, Support
12391 // # services, and proprietary license terms, please see
12364 // # services, and proprietary license terms, please see
12392 // # https://rhodecode.com/licenses/
12365 // # https://rhodecode.com/licenses/
12393
12366
12394 angular.module('appenlight').config(['$stateProvider', '$urlRouterProvider', function ($stateProvider, $urlRouterProvider) {
12367 angular.module('appenlight').config(['$stateProvider', '$urlRouterProvider', function ($stateProvider, $urlRouterProvider) {
12395
12368
12396 $urlRouterProvider.otherwise('/ui');
12369 $urlRouterProvider.otherwise('/ui');
12397
12370
12398 $stateProvider.state('logs', {
12371 $stateProvider.state('logs', {
12399 url: '/ui/logs?resource',
12372 url: '/ui/logs?resource',
12400 templateUrl: 'templates/logs.html',
12373 templateUrl: 'templates/logs.html',
12401 controller: 'LogsController as logs'
12374 controller: 'LogsController as logs'
12402 });
12375 });
12403
12376
12404 $stateProvider.state('front_dashboard', {
12377 $stateProvider.state('front_dashboard', {
12405 url: '/ui',
12378 url: '/ui',
12406 templateUrl: 'templates/dashboard.html',
12379 templateUrl: 'templates/dashboard.html',
12407 controller: 'IndexDashboardController as index'
12380 controller: 'IndexDashboardController as index'
12408 });
12381 });
12409
12382
12410 $stateProvider.state('report', {
12383 $stateProvider.state('report', {
12411 abstract: true,
12384 abstract: true,
12412 url: '/ui/report',
12385 url: '/ui/report',
12413 templateUrl: 'templates/reports/parent_view.html'
12386 templateUrl: 'templates/reports/parent_view.html'
12414 });
12387 });
12415
12388
12416 $stateProvider.state('report.list', {
12389 $stateProvider.state('report.list', {
12417 url: '?start_date&min_duration&max_duration&{view_name:any}&{server_name:any}&resource',
12390 url: '?start_date&min_duration&max_duration&{view_name:any}&{server_name:any}&resource',
12418 templateUrl: 'templates/reports/list.html',
12391 templateUrl: 'templates/reports/list.html',
12419 controller: 'ReportsListController as reports_list'
12392 controller: 'ReportsListController as reports_list'
12420 });
12393 });
12421
12394
12422 $stateProvider.state('report.list_slow', {
12395 $stateProvider.state('report.list_slow', {
12423 url: '/list_slow?start_date&min_duration&max_duration&{view_name:any}&{server_name:any}&resource',
12396 url: '/list_slow?start_date&min_duration&max_duration&{view_name:any}&{server_name:any}&resource',
12424 templateUrl: 'templates/reports/list_slow.html',
12397 templateUrl: 'templates/reports/list_slow.html',
12425 controller: 'ReportsListSlowController as reports_list'
12398 controller: 'ReportsListSlowController as reports_list'
12426 });
12399 });
12427
12400
12428 $stateProvider.state('report.view_detail', {
12401 $stateProvider.state('report.view_detail', {
12429 url: '/:groupId/:reportId',
12402 url: '/:groupId/:reportId',
12430 templateUrl: 'templates/reports/view.html',
12403 templateUrl: 'templates/reports/view.html',
12431 controller: 'ReportsViewController as report'
12404 controller: 'ReportsViewController as report'
12432 });
12405 });
12433 $stateProvider.state('report.view_group', {
12406 $stateProvider.state('report.view_group', {
12434 url: '/:groupId',
12407 url: '/:groupId',
12435 templateUrl: 'templates/reports/view.html',
12408 templateUrl: 'templates/reports/view.html',
12436 controller: 'ReportsViewController as report'
12409 controller: 'ReportsViewController as report'
12437 });
12410 });
12438 $stateProvider.state('events', {
12411 $stateProvider.state('events', {
12439 url: '/ui/events',
12412 url: '/ui/events',
12440 templateUrl: 'templates/events.html',
12413 templateUrl: 'templates/events.html',
12441 controller: 'EventsController as events'
12414 controller: 'EventsController as events'
12442 });
12415 });
12443 $stateProvider.state('admin', {
12416 $stateProvider.state('admin', {
12444 url: '/ui/admin',
12417 url: '/ui/admin',
12445 templateUrl: 'templates/admin/parent_view.html'
12418 templateUrl: 'templates/admin/parent_view.html'
12446 });
12419 });
12447 $stateProvider.state('admin.user', {
12420 $stateProvider.state('admin.user', {
12448 abstract: true,
12421 abstract: true,
12449 url: '/user',
12422 url: '/user',
12450 templateUrl: 'templates/admin/users/parent_view.html'
12423 templateUrl: 'templates/admin/users/parent_view.html'
12451 });
12424 });
12452 $stateProvider.state('admin.user.list', {
12425 $stateProvider.state('admin.user.list', {
12453 url: '/list',
12426 url: '/list',
12454 templateUrl: 'templates/admin/users/users_list.html',
12427 templateUrl: 'templates/admin/users/users_list.html',
12455 controller: 'AdminUsersController as users'
12428 controller: 'AdminUsersController as users'
12456 });
12429 });
12457 $stateProvider.state('admin.user.create', {
12430 $stateProvider.state('admin.user.create', {
12458 url: '/create',
12431 url: '/create',
12459 templateUrl: 'templates/admin/users/users_create.html',
12432 templateUrl: 'templates/admin/users/users_create.html',
12460 controller: 'AdminUsersCreateController as user'
12433 controller: 'AdminUsersCreateController as user'
12461 });
12434 });
12462 $stateProvider.state('admin.user.update', {
12435 $stateProvider.state('admin.user.update', {
12463 url: '/{userId}/update',
12436 url: '/{userId}/update',
12464 templateUrl: 'templates/admin/users/users_create.html',
12437 templateUrl: 'templates/admin/users/users_create.html',
12465 controller: 'AdminUsersCreateController as user'
12438 controller: 'AdminUsersCreateController as user'
12466 });
12439 });
12467
12440
12468
12441
12469 $stateProvider.state('admin.group', {
12442 $stateProvider.state('admin.group', {
12470 abstract: true,
12443 abstract: true,
12471 url: '/group',
12444 url: '/group',
12472 templateUrl: 'templates/admin/groups/parent_view.html'
12445 templateUrl: 'templates/admin/groups/parent_view.html'
12473 });
12446 });
12474 $stateProvider.state('admin.group.list', {
12447 $stateProvider.state('admin.group.list', {
12475 url: '/list',
12448 url: '/list',
12476 templateUrl: 'templates/admin/groups/groups_list.html',
12449 templateUrl: 'templates/admin/groups/groups_list.html',
12477 controller: 'AdminGroupsController as groups'
12450 controller: 'AdminGroupsController as groups'
12478 });
12451 });
12479 $stateProvider.state('admin.group.create', {
12452 $stateProvider.state('admin.group.create', {
12480 url: '/create',
12453 url: '/create',
12481 templateUrl: 'templates/admin/groups/groups_create.html',
12454 templateUrl: 'templates/admin/groups/groups_create.html',
12482 controller: 'AdminGroupsCreateController as group'
12455 controller: 'AdminGroupsCreateController as group'
12483 });
12456 });
12484 $stateProvider.state('admin.group.update', {
12457 $stateProvider.state('admin.group.update', {
12485 url: '/{groupId}/update',
12458 url: '/{groupId}/update',
12486 templateUrl: 'templates/admin/groups/groups_create.html',
12459 templateUrl: 'templates/admin/groups/groups_create.html',
12487 controller: 'AdminGroupsCreateController as group'
12460 controller: 'AdminGroupsCreateController as group'
12488 });
12461 });
12489
12462
12490 $stateProvider.state('admin.application', {
12463 $stateProvider.state('admin.application', {
12491 abstract: true,
12464 abstract: true,
12492 url: '/application',
12465 url: '/application',
12493 templateUrl: 'templates/admin/users/parent_view.html'
12466 templateUrl: 'templates/admin/users/parent_view.html'
12494 });
12467 });
12495
12468
12496 $stateProvider.state('admin.application.list', {
12469 $stateProvider.state('admin.application.list', {
12497 url: '/list',
12470 url: '/list',
12498 templateUrl: 'templates/admin/applications/applications_list.html',
12471 templateUrl: 'templates/admin/applications/applications_list.html',
12499 controller: 'AdminApplicationsListController as applications'
12472 controller: 'AdminApplicationsListController as applications'
12500 });
12473 });
12501
12474
12502 $stateProvider.state('admin.partitions', {
12475 $stateProvider.state('admin.partitions', {
12503 url: '/partitions',
12476 url: '/partitions',
12504 templateUrl: 'templates/admin/partitions.html',
12477 templateUrl: 'templates/admin/partitions.html',
12505 controller: 'AdminPartitionsController as partitions'
12478 controller: 'AdminPartitionsController as partitions'
12506 });
12479 });
12507 $stateProvider.state('admin.system', {
12480 $stateProvider.state('admin.system', {
12508 url: '/system',
12481 url: '/system',
12509 templateUrl: 'templates/admin/system.html',
12482 templateUrl: 'templates/admin/system.html',
12510 controller: 'AdminSystemController as system'
12483 controller: 'AdminSystemController as system'
12511 });
12484 });
12512
12485
12513 $stateProvider.state('admin.configs', {
12486 $stateProvider.state('admin.configs', {
12514 abstract: true,
12487 abstract: true,
12515 url: '/configs',
12488 url: '/configs',
12516 templateUrl: 'templates/admin/configs/parent_view.html'
12489 templateUrl: 'templates/admin/configs/parent_view.html'
12517 });
12490 });
12518
12491
12519 $stateProvider.state('admin.configs.list', {
12492 $stateProvider.state('admin.configs.list', {
12520 url: '',
12493 url: '',
12521 templateUrl: 'templates/admin/configs/edit.html',
12494 templateUrl: 'templates/admin/configs/edit.html',
12522 controller: 'ConfigsListController as configs'
12495 controller: 'ConfigsListController as configs'
12523 });
12496 });
12524
12497
12525 $stateProvider.state('user', {
12498 $stateProvider.state('user', {
12526 url: '/ui/user',
12499 url: '/ui/user',
12527 templateUrl: 'templates/user/parent_view.html'
12500 templateUrl: 'templates/user/parent_view.html'
12528 });
12501 });
12529
12502
12530 $stateProvider.state('user.profile', {
12503 $stateProvider.state('user.profile', {
12531 abstract: true,
12504 abstract: true,
12532 url: '/profile',
12505 url: '/profile',
12533 templateUrl: 'templates/user/profile.html'
12506 templateUrl: 'templates/user/profile.html'
12534 });
12507 });
12535 $stateProvider.state('user.profile.edit', {
12508 $stateProvider.state('user.profile.edit', {
12536 url: '',
12509 url: '',
12537 templateUrl: 'templates/user/profile_edit.html',
12510 templateUrl: 'templates/user/profile_edit.html',
12538 controller: 'UserProfileController as profile'
12511 controller: 'UserProfileController as profile'
12539 });
12512 });
12540
12513
12541
12514
12542 $stateProvider.state('user.profile.password', {
12515 $stateProvider.state('user.profile.password', {
12543 url: '/password',
12516 url: '/password',
12544 templateUrl: 'templates/user/profile_password.html',
12517 templateUrl: 'templates/user/profile_password.html',
12545 controller: 'UserPasswordController as password'
12518 controller: 'UserPasswordController as password'
12546 });
12519 });
12547
12520
12548 $stateProvider.state('user.profile.identities', {
12521 $stateProvider.state('user.profile.identities', {
12549 url: '/identities',
12522 url: '/identities',
12550 templateUrl: 'templates/user/profile_identities.html',
12523 templateUrl: 'templates/user/profile_identities.html',
12551 controller: 'UserIdentitiesController as identities'
12524 controller: 'UserIdentitiesController as identities'
12552 });
12525 });
12553
12526
12554 $stateProvider.state('user.profile.auth_tokens', {
12527 $stateProvider.state('user.profile.auth_tokens', {
12555 url: '/auth_tokens',
12528 url: '/auth_tokens',
12556 templateUrl: 'templates/user/auth_tokens.html',
12529 templateUrl: 'templates/user/auth_tokens.html',
12557 controller: 'UserAuthTokensController as auth_tokens'
12530 controller: 'UserAuthTokensController as auth_tokens'
12558 });
12531 });
12559
12532
12560 $stateProvider.state('user.alert_channels', {
12533 $stateProvider.state('user.alert_channels', {
12561 abstract: true,
12534 abstract: true,
12562 url: '/alert_channels',
12535 url: '/alert_channels',
12563 templateUrl: 'templates/user/alert_channels.html'
12536 templateUrl: 'templates/user/alert_channels.html'
12564 });
12537 });
12565
12538
12566 $stateProvider.state('user.alert_channels.list', {
12539 $stateProvider.state('user.alert_channels.list', {
12567 url: '',
12540 url: '',
12568 templateUrl: 'templates/user/alert_channels_list.html',
12541 templateUrl: 'templates/user/alert_channels_list.html',
12569 controller: 'AlertChannelsController as channels'
12542 controller: 'AlertChannelsController as channels'
12570 });
12543 });
12571
12544
12572 $stateProvider.state('user.alert_channels.email', {
12545 $stateProvider.state('user.alert_channels.email', {
12573 url: '/email',
12546 url: '/email',
12574 templateUrl: 'templates/user/alert_channels_email.html',
12547 templateUrl: 'templates/user/alert_channels_email.html',
12575 controller: 'AlertChannelsEmailController as email'
12548 controller: 'AlertChannelsEmailController as email'
12576 });
12549 });
12577
12550
12578 $stateProvider.state('applications', {
12551 $stateProvider.state('applications', {
12579 abstract: true,
12552 abstract: true,
12580 url: '/ui/applications',
12553 url: '/ui/applications',
12581 templateUrl: 'templates/applications/parent_view.html'
12554 templateUrl: 'templates/applications/parent_view.html'
12582 });
12555 });
12583
12556
12584 $stateProvider.state('applications.list', {
12557 $stateProvider.state('applications.list', {
12585 url: '',
12558 url: '',
12586 templateUrl: 'templates/applications/list.html',
12559 templateUrl: 'templates/applications/list.html',
12587 controller: 'ApplicationsListController as applications'
12560 controller: 'ApplicationsListController as applications'
12588 });
12561 });
12589 $stateProvider.state('applications.update', {
12562 $stateProvider.state('applications.update', {
12590 url: '/{resourceId}/update',
12563 url: '/{resourceId}/update',
12591 templateUrl: 'templates/applications/applications_update.html',
12564 templateUrl: 'templates/applications/applications_update.html',
12592 controller: 'ApplicationsUpdateController as application'
12565 controller: 'ApplicationsUpdateController as application'
12593 });
12566 });
12594
12567
12595 $stateProvider.state('applications.integrations', {
12568 $stateProvider.state('applications.integrations', {
12596 url: '/{resourceId}/integrations',
12569 url: '/{resourceId}/integrations',
12597 templateUrl: 'templates/applications/integrations.html',
12570 templateUrl: 'templates/applications/integrations.html',
12598 controller: 'IntegrationsListController as integrations',
12571 controller: 'IntegrationsListController as integrations',
12599 data: {
12572 data: {
12600 resource: null
12573 resource: null
12601 }
12574 }
12602 });
12575 });
12603
12576
12604 $stateProvider.state('applications.purge_logs', {
12577 $stateProvider.state('applications.purge_logs', {
12605 url: '/purge_logs',
12578 url: '/purge_logs',
12606 templateUrl: 'templates/applications/applications_purge_logs.html',
12579 templateUrl: 'templates/applications/applications_purge_logs.html',
12607 controller: 'ApplicationsPurgeLogsController as applications_purge'
12580 controller: 'ApplicationsPurgeLogsController as applications_purge'
12608 });
12581 });
12609
12582
12610 $stateProvider.state('applications.integrations.edit', {
12583 $stateProvider.state('applications.integrations.edit', {
12611 url: '/{integration}',
12584 url: '/{integration}',
12612 templateUrl: function ($stateParams) {
12585 templateUrl: function ($stateParams) {
12613 return 'templates/applications/integrations/' + $stateParams.integration + '.html'
12586 return 'templates/applications/integrations/' + $stateParams.integration + '.html'
12614 },
12587 },
12615 controller: 'IntegrationController as integration'
12588 controller: 'IntegrationController as integration'
12616 });
12589 });
12617
12590
12618 $stateProvider.state('tests', {
12591 $stateProvider.state('tests', {
12619 url: '/ui/tests',
12592 url: '/ui/tests',
12620 templateUrl: 'templates/user/alert_channels_test.html',
12593 templateUrl: 'templates/user/alert_channels_test.html',
12621 controller: 'AlertChannelsTestController as test_action'
12594 controller: 'AlertChannelsTestController as test_action'
12622 });
12595 });
12623
12596
12624 }]);
12597 }]);
12625
12598
12626 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
12599 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
12627 // #
12600 // #
12628 // # This program is free software: you can redistribute it and/or modify
12601 // # This program is free software: you can redistribute it and/or modify
12629 // # it under the terms of the GNU Affero General Public License, version 3
12602 // # it under the terms of the GNU Affero General Public License, version 3
12630 // # (only), as published by the Free Software Foundation.
12603 // # (only), as published by the Free Software Foundation.
12631 // #
12604 // #
12632 // # This program is distributed in the hope that it will be useful,
12605 // # This program is distributed in the hope that it will be useful,
12633 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
12606 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
12634 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12607 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12635 // # GNU General Public License for more details.
12608 // # GNU General Public License for more details.
12636 // #
12609 // #
12637 // # You should have received a copy of the GNU Affero General Public License
12610 // # You should have received a copy of the GNU Affero General Public License
12638 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
12611 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
12639 // #
12612 // #
12640 // # This program is dual-licensed. If you wish to learn more about the
12613 // # This program is dual-licensed. If you wish to learn more about the
12641 // # AppEnlight Enterprise Edition, including its added features, Support
12614 // # AppEnlight Enterprise Edition, including its added features, Support
12642 // # services, and proprietary license terms, please see
12615 // # services, and proprietary license terms, please see
12643 // # https://rhodecode.com/licenses/
12616 // # https://rhodecode.com/licenses/
12644
12617
12645 angular.module('appenlight.services.chartResultParser',[]).factory('chartResultParser', function () {
12618 angular.module('appenlight.services.chartResultParser',[]).factory('chartResultParser', function () {
12646
12619
12647 function transform(data) {
12620 function transform(data) {
12648
12621
12649 /** transform result to a format that is more friendly
12622 /** transform result to a format that is more friendly
12650 * to c3js we don't want to export this way as default
12623 * to c3js we don't want to export this way as default
12651 * as TSV stuff is less readable overall
12624 * as TSV stuff is less readable overall
12652 *
12625 *
12653 * we want format of:
12626 * we want format of:
12654 * {x: [unix_timestamps],
12627 * {x: [unix_timestamps],
12655 * key1: [val,list],
12628 * key1: [val,list],
12656 * key2: [val,list]...}
12629 * key2: [val,list]...}
12657 *
12630 *
12658 * OR
12631 * OR
12659 *
12632 *
12660 * handle special case where we want pie/donut for
12633 * handle special case where we want pie/donut for
12661 * aggregation with a single metric, we need to transform
12634 * aggregation with a single metric, we need to transform
12662 * the data from:
12635 * the data from:
12663 * [y:list, categories:[cat1,cat2,...]]
12636 * [y:list, categories:[cat1,cat2,...]]
12664 * to
12637 * to
12665 * [cat1: val, cat2:val...] format to render properly
12638 * [cat1: val, cat2:val...] format to render properly
12666 */
12639 */
12667 var chartC3Config = {
12640 var chartC3Config = {
12668 data: {
12641 data: {
12669 json: [],
12642 json: [],
12670 type: 'bar'
12643 type: 'bar'
12671 },
12644 },
12672 point: {
12645 point: {
12673 show: false
12646 show: false
12674 },
12647 },
12675 tooltip: {
12648 tooltip: {
12676 format: {
12649 format: {
12677 title: function (d) {
12650 title: function (d) {
12678 if (d) {
12651 if (d) {
12679 return '' + d;
12652 return '' + d;
12680 }
12653 }
12681 return '';
12654 return '';
12682 },
12655 },
12683 value: function (value, ratio, id, index) {
12656 value: function (value, ratio, id, index) {
12684 return d3.round(value, 3);
12657 return d3.round(value, 3);
12685 }
12658 }
12686 }
12659 }
12687 },
12660 },
12688 regions: data.rect_regions
12661 regions: data.rect_regions
12689 };
12662 };
12690 var labels = _.keys(data.system_labels);
12663 var labels = _.keys(data.system_labels);
12691 var specialCases = ['pie', 'donut', 'gauge'];
12664 var specialCases = ['pie', 'donut', 'gauge'];
12692 if (labels.length === 1 && _.contains(specialCases,
12665 if (labels.length === 1 && _.contains(specialCases,
12693 data.chart_type.type)) {
12666 data.chart_type.type)) {
12694 var transformedData = {};
12667 var transformedData = {};
12695
12668
12696 _.each(data.series, function (item) {
12669 _.each(data.series, function (item) {
12697 transformedData[item['key']] = item[labels[0]];
12670 transformedData[item['key']] = item[labels[0]];
12698 });
12671 });
12699 }
12672 }
12700 else {
12673 else {
12701 var transformedData = {'key': []};
12674 var transformedData = {'key': []};
12702
12675
12703 _.each(labels, function (label) {
12676 _.each(labels, function (label) {
12704 transformedData[label] = [];
12677 transformedData[label] = [];
12705 });
12678 });
12706
12679
12707 _.each(data.series, function (item) {
12680 _.each(data.series, function (item) {
12708 for (key in item) {
12681 for (key in item) {
12709 transformedData[key].push(item[key])
12682 transformedData[key].push(item[key])
12710 }
12683 }
12711 });
12684 });
12712 }
12685 }
12713
12686
12714
12687
12715 if (data.parent_agg.type === 'time_histogram') {
12688 if (data.parent_agg.type === 'time_histogram') {
12716 chartC3Config.axis = {
12689 chartC3Config.axis = {
12717 x: {
12690 x: {
12718 type: 'timeseries',
12691 type: 'timeseries',
12719 tick: {
12692 tick: {
12720 format: '%Y-%m-%d'
12693 format: '%Y-%m-%d'
12721 }
12694 }
12722 }
12695 }
12723 };
12696 };
12724 chartC3Config.data.xFormat = '%Y-%m-%dT%H:%M:%S';
12697 chartC3Config.data.xFormat = '%Y-%m-%dT%H:%M:%S';
12725 }
12698 }
12726 else if (data.categories) {
12699 else if (data.categories) {
12727 chartC3Config.axis = {
12700 chartC3Config.axis = {
12728 x: {
12701 x: {
12729 type: 'category',
12702 type: 'category',
12730 categories: data.categories
12703 categories: data.categories
12731 }
12704 }
12732 };
12705 };
12733 // we don't want to show key as label if it is being
12706 // we don't want to show key as label if it is being
12734 // used as a category instead
12707 // used as a category instead
12735 if (data.categories) {
12708 if (data.categories) {
12736 delete transformedData['key'];
12709 delete transformedData['key'];
12737 }
12710 }
12738 }
12711 }
12739
12712
12740 var human_labels = {};
12713 var human_labels = {};
12741 _.each(_.pairs(data.system_labels), function(entry){
12714 _.each(_.pairs(data.system_labels), function(entry){
12742 human_labels[entry[0]] = entry[1].human_label;
12715 human_labels[entry[0]] = entry[1].human_label;
12743 });
12716 });
12744 var chartC3Data = {
12717 var chartC3Data = {
12745 json: transformedData,
12718 json: transformedData,
12746 names: human_labels,
12719 names: human_labels,
12747 groups: data.groups,
12720 groups: data.groups,
12748 type: data.chart_type.type
12721 type: data.chart_type.type
12749 };
12722 };
12750
12723
12751 if (data.parent_agg.type == 'time_histogram') {
12724 if (data.parent_agg.type == 'time_histogram') {
12752 chartC3Data.x = 'key';
12725 chartC3Data.x = 'key';
12753 }
12726 }
12754 return {chartC3Data: chartC3Data, chartC3Config: chartC3Config}
12727 return {chartC3Data: chartC3Data, chartC3Config: chartC3Config}
12755 }
12728 }
12756
12729
12757 return transform
12730 return transform
12758 });
12731 });
12759
12732
12760 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
12733 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
12761 // #
12734 // #
12762 // # This program is free software: you can redistribute it and/or modify
12735 // # This program is free software: you can redistribute it and/or modify
12763 // # it under the terms of the GNU Affero General Public License, version 3
12736 // # it under the terms of the GNU Affero General Public License, version 3
12764 // # (only), as published by the Free Software Foundation.
12737 // # (only), as published by the Free Software Foundation.
12765 // #
12738 // #
12766 // # This program is distributed in the hope that it will be useful,
12739 // # This program is distributed in the hope that it will be useful,
12767 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
12740 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
12768 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12741 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12769 // # GNU General Public License for more details.
12742 // # GNU General Public License for more details.
12770 // #
12743 // #
12771 // # You should have received a copy of the GNU Affero General Public License
12744 // # You should have received a copy of the GNU Affero General Public License
12772 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
12745 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
12773 // #
12746 // #
12774 // # This program is dual-licensed. If you wish to learn more about the
12747 // # This program is dual-licensed. If you wish to learn more about the
12775 // # AppEnlight Enterprise Edition, including its added features, Support
12748 // # AppEnlight Enterprise Edition, including its added features, Support
12776 // # services, and proprietary license terms, please see
12749 // # services, and proprietary license terms, please see
12777 // # https://rhodecode.com/licenses/
12750 // # https://rhodecode.com/licenses/
12778
12751
12779 var DEFAULT_ACTIONS = {
12752 var DEFAULT_ACTIONS = {
12780 'get': {method: 'GET', timeout: 60000 * 2},
12753 'get': {method: 'GET', timeout: 60000 * 2},
12781 'save': {method: 'POST', timeout: 60000 * 2},
12754 'save': {method: 'POST', timeout: 60000 * 2},
12782 'query': {method: 'GET', isArray: true, timeout: 60000 * 2},
12755 'query': {method: 'GET', isArray: true, timeout: 60000 * 2},
12783 'remove': {method: 'DELETE', timeout: 30000},
12756 'remove': {method: 'DELETE', timeout: 30000},
12784 'update': {method: 'PATCH', timeout: 30000},
12757 'update': {method: 'PATCH', timeout: 30000},
12785 'delete': {method: 'DELETE', timeout: 30000}
12758 'delete': {method: 'DELETE', timeout: 30000}
12786 };
12759 };
12787
12760
12788 angular.module('appenlight.services.resources', []).factory('usersResource', ['$resource', 'AeConfig', function ($resource, AeConfig) {
12761 angular.module('appenlight.services.resources', []).factory('usersResource', ['$resource', 'AeConfig', function ($resource, AeConfig) {
12789 return $resource(AeConfig.urls.users, {userId: '@id'}, angular.copy(DEFAULT_ACTIONS));
12762 return $resource(AeConfig.urls.users, {userId: '@id'}, angular.copy(DEFAULT_ACTIONS));
12790 }]);
12763 }]);
12791
12764
12792 angular.module('appenlight.services.resources').factory('userResource', ['$resource', 'AeConfig', function ($resource, AeConfig) {
12765 angular.module('appenlight.services.resources').factory('userResource', ['$resource', 'AeConfig', function ($resource, AeConfig) {
12793 return $resource(AeConfig.urls.user, null, angular.copy(DEFAULT_ACTIONS));
12766 return $resource(AeConfig.urls.user, null, angular.copy(DEFAULT_ACTIONS));
12794 }]);
12767 }]);
12795
12768
12796 angular.module('appenlight.services.resources').factory('usersPropertyResource', ['$resource', 'AeConfig', function ($resource, AeConfig) {
12769 angular.module('appenlight.services.resources').factory('usersPropertyResource', ['$resource', 'AeConfig', function ($resource, AeConfig) {
12797 return $resource(AeConfig.urls.usersProperty, null, angular.copy(DEFAULT_ACTIONS));
12770 return $resource(AeConfig.urls.usersProperty, null, angular.copy(DEFAULT_ACTIONS));
12798 }]);
12771 }]);
12799
12772
12800 angular.module('appenlight.services.resources').factory('userSelfResource', ['$resource', 'AeConfig', function ($resource, AeConfig) {
12773 angular.module('appenlight.services.resources').factory('userSelfResource', ['$resource', 'AeConfig', function ($resource, AeConfig) {
12801 return $resource(AeConfig.urls.userSelf, null, angular.copy(DEFAULT_ACTIONS));
12774 return $resource(AeConfig.urls.userSelf, null, angular.copy(DEFAULT_ACTIONS));
12802 }]);
12775 }]);
12803
12776
12804 angular.module('appenlight.services.resources').factory('userSelfPropertyResource', ['$resource', 'AeConfig', function ($resource, AeConfig) {
12777 angular.module('appenlight.services.resources').factory('userSelfPropertyResource', ['$resource', 'AeConfig', function ($resource, AeConfig) {
12805 return $resource(AeConfig.urls.userSelfProperty, null, angular.copy(DEFAULT_ACTIONS));
12778 return $resource(AeConfig.urls.userSelfProperty, null, angular.copy(DEFAULT_ACTIONS));
12806 }]);
12779 }]);
12807
12780
12808 angular.module('appenlight.services.resources').factory('logsNoIdResource', ['$resource', 'AeConfig', function ($resource, AeConfig) {
12781 angular.module('appenlight.services.resources').factory('logsNoIdResource', ['$resource', 'AeConfig', function ($resource, AeConfig) {
12809 return $resource(AeConfig.urls.logsNoId, null, angular.copy(DEFAULT_ACTIONS));
12782 return $resource(AeConfig.urls.logsNoId, null, angular.copy(DEFAULT_ACTIONS));
12810 }]);
12783 }]);
12811
12784
12812 angular.module('appenlight.services.resources').factory('reportsResource', ['$resource', 'AeConfig', function ($resource, AeConfig) {
12785 angular.module('appenlight.services.resources').factory('reportsResource', ['$resource', 'AeConfig', function ($resource, AeConfig) {
12813 return $resource(AeConfig.urls.reports, null, angular.copy(DEFAULT_ACTIONS));
12786 return $resource(AeConfig.urls.reports, null, angular.copy(DEFAULT_ACTIONS));
12814 }]);
12787 }]);
12815
12788
12816 angular.module('appenlight.services.resources').factory('slowReportsResource', ['$resource', 'AeConfig', function ($resource, AeConfig) {
12789 angular.module('appenlight.services.resources').factory('slowReportsResource', ['$resource', 'AeConfig', function ($resource, AeConfig) {
12817 return $resource(AeConfig.urls.slowReports, null, angular.copy(DEFAULT_ACTIONS));
12790 return $resource(AeConfig.urls.slowReports, null, angular.copy(DEFAULT_ACTIONS));
12818 }]);
12791 }]);
12819
12792
12820 angular.module('appenlight.services.resources').factory('reportGroupResource', ['$resource', 'AeConfig', function ($resource, AeConfig) {
12793 angular.module('appenlight.services.resources').factory('reportGroupResource', ['$resource', 'AeConfig', function ($resource, AeConfig) {
12821 return $resource(AeConfig.urls.reportGroup, null, angular.copy(DEFAULT_ACTIONS));
12794 return $resource(AeConfig.urls.reportGroup, null, angular.copy(DEFAULT_ACTIONS));
12822 }]);
12795 }]);
12823
12796
12824 angular.module('appenlight.services.resources').factory('reportGroupPropertyResource', ['$resource', 'AeConfig', function ($resource, AeConfig) {
12797 angular.module('appenlight.services.resources').factory('reportGroupPropertyResource', ['$resource', 'AeConfig', function ($resource, AeConfig) {
12825 return $resource(AeConfig.urls.reportGroupProperty, null, angular.copy(DEFAULT_ACTIONS));
12798 return $resource(AeConfig.urls.reportGroupProperty, null, angular.copy(DEFAULT_ACTIONS));
12826 }]);
12799 }]);
12827
12800
12828
12801
12829 angular.module('appenlight.services.resources').factory('reportResource', ['$resource', 'AeConfig', function ($resource, AeConfig) {
12802 angular.module('appenlight.services.resources').factory('reportResource', ['$resource', 'AeConfig', function ($resource, AeConfig) {
12830 return $resource(AeConfig.urls.reports, null, angular.copy(DEFAULT_ACTIONS));
12803 return $resource(AeConfig.urls.reports, null, angular.copy(DEFAULT_ACTIONS));
12831 }]);
12804 }]);
12832
12805
12833 angular.module('appenlight.services.resources').factory('analyticsResource', ['$resource', 'AeConfig', function ($resource, AeConfig) {
12806 angular.module('appenlight.services.resources').factory('analyticsResource', ['$resource', 'AeConfig', function ($resource, AeConfig) {
12834 return $resource(AeConfig.urls.analyticsAction, null, angular.copy(DEFAULT_ACTIONS));
12807 return $resource(AeConfig.urls.analyticsAction, null, angular.copy(DEFAULT_ACTIONS));
12835 }]);
12808 }]);
12836
12809
12837 angular.module('appenlight.services.resources').factory('reportsResource', ['$resource', 'AeConfig', function ($resource, AeConfig) {
12810 angular.module('appenlight.services.resources').factory('reportsResource', ['$resource', 'AeConfig', function ($resource, AeConfig) {
12838 return $resource(AeConfig.urls.reports, null, angular.copy(DEFAULT_ACTIONS));
12811 return $resource(AeConfig.urls.reports, null, angular.copy(DEFAULT_ACTIONS));
12839 }]);
12812 }]);
12840
12813
12841 angular.module('appenlight.services.resources').factory('integrationResource', ['$resource', 'AeConfig', function ($resource, AeConfig) {
12814 angular.module('appenlight.services.resources').factory('integrationResource', ['$resource', 'AeConfig', function ($resource, AeConfig) {
12842 return $resource(AeConfig.urls.integrationAction, null, angular.copy(DEFAULT_ACTIONS));
12815 return $resource(AeConfig.urls.integrationAction, null, angular.copy(DEFAULT_ACTIONS));
12843 }]);
12816 }]);
12844
12817
12845
12818
12846 angular.module('appenlight.services.resources').factory('adminResource', ['$resource', 'AeConfig', function ($resource, AeConfig) {
12819 angular.module('appenlight.services.resources').factory('adminResource', ['$resource', 'AeConfig', function ($resource, AeConfig) {
12847 return $resource(AeConfig.urls.adminAction, null, angular.copy(DEFAULT_ACTIONS));
12820 return $resource(AeConfig.urls.adminAction, null, angular.copy(DEFAULT_ACTIONS));
12848 }]);
12821 }]);
12849
12822
12850 angular.module('appenlight.services.resources').factory('applicationsNoIdResource', ['$resource', 'AeConfig', function ($resource, AeConfig) {
12823 angular.module('appenlight.services.resources').factory('applicationsNoIdResource', ['$resource', 'AeConfig', function ($resource, AeConfig) {
12851 return $resource(AeConfig.urls.applicationsNoId, null, angular.copy(DEFAULT_ACTIONS));
12824 return $resource(AeConfig.urls.applicationsNoId, null, angular.copy(DEFAULT_ACTIONS));
12852 }]);
12825 }]);
12853
12826
12854 angular.module('appenlight.services.resources').factory('applicationsPropertyResource', ['$resource', 'AeConfig', function ($resource, AeConfig) {
12827 angular.module('appenlight.services.resources').factory('applicationsPropertyResource', ['$resource', 'AeConfig', function ($resource, AeConfig) {
12855 return $resource(AeConfig.urls.applicationsProperty, null, angular.copy(DEFAULT_ACTIONS));
12828 return $resource(AeConfig.urls.applicationsProperty, null, angular.copy(DEFAULT_ACTIONS));
12856 }]);
12829 }]);
12857 angular.module('appenlight.services.resources').factory('applicationsResource', ['$resource', 'AeConfig', function ($resource, AeConfig) {
12830 angular.module('appenlight.services.resources').factory('applicationsResource', ['$resource', 'AeConfig', function ($resource, AeConfig) {
12858 return $resource(AeConfig.urls.applications, null, angular.copy(DEFAULT_ACTIONS));
12831 return $resource(AeConfig.urls.applications, null, angular.copy(DEFAULT_ACTIONS));
12859 }]);
12832 }]);
12860
12833
12861 angular.module('appenlight.services.resources').factory('sectionViewResource', ['$resource', 'AeConfig', function ($resource, AeConfig) {
12834 angular.module('appenlight.services.resources').factory('sectionViewResource', ['$resource', 'AeConfig', function ($resource, AeConfig) {
12862 return $resource(AeConfig.urls.sectionView, null, angular.copy(DEFAULT_ACTIONS));
12835 return $resource(AeConfig.urls.sectionView, null, angular.copy(DEFAULT_ACTIONS));
12863 }]);
12836 }]);
12864
12837
12865 angular.module('appenlight.services.resources').factory('groupsNoIdResource', ['$resource', 'AeConfig', function ($resource, AeConfig) {
12838 angular.module('appenlight.services.resources').factory('groupsNoIdResource', ['$resource', 'AeConfig', function ($resource, AeConfig) {
12866 return $resource(AeConfig.urls.groupsNoId, null, angular.copy(DEFAULT_ACTIONS));
12839 return $resource(AeConfig.urls.groupsNoId, null, angular.copy(DEFAULT_ACTIONS));
12867 }]);
12840 }]);
12868
12841
12869
12842
12870 angular.module('appenlight.services.resources').factory('groupsResource', ['$resource', 'AeConfig', function ($resource, AeConfig) {
12843 angular.module('appenlight.services.resources').factory('groupsResource', ['$resource', 'AeConfig', function ($resource, AeConfig) {
12871 return $resource(AeConfig.urls.groups, {userId: '@id'}, angular.copy(DEFAULT_ACTIONS));
12844 return $resource(AeConfig.urls.groups, {userId: '@id'}, angular.copy(DEFAULT_ACTIONS));
12872 }]);
12845 }]);
12873
12846
12874 angular.module('appenlight.services.resources').factory('groupsPropertyResource', ['$resource', 'AeConfig', function ($resource, AeConfig) {
12847 angular.module('appenlight.services.resources').factory('groupsPropertyResource', ['$resource', 'AeConfig', function ($resource, AeConfig) {
12875 return $resource(AeConfig.urls.groupsProperty, null, angular.copy(DEFAULT_ACTIONS));
12848 return $resource(AeConfig.urls.groupsProperty, null, angular.copy(DEFAULT_ACTIONS));
12876 }]);
12849 }]);
12877
12850
12878
12851
12879 angular.module('appenlight.services.resources').factory('eventsNoIdResource', ['$resource', 'AeConfig', function ($resource, AeConfig) {
12852 angular.module('appenlight.services.resources').factory('eventsNoIdResource', ['$resource', 'AeConfig', function ($resource, AeConfig) {
12880 return $resource(AeConfig.urls.eventsNoId, null, angular.copy(DEFAULT_ACTIONS));
12853 return $resource(AeConfig.urls.eventsNoId, null, angular.copy(DEFAULT_ACTIONS));
12881 }]);
12854 }]);
12882
12855
12883
12856
12884 angular.module('appenlight.services.resources').factory('eventsResource', ['$resource', 'AeConfig', function ($resource, AeConfig) {
12857 angular.module('appenlight.services.resources').factory('eventsResource', ['$resource', 'AeConfig', function ($resource, AeConfig) {
12885 return $resource(AeConfig.urls.events, {userId: '@id'}, angular.copy(DEFAULT_ACTIONS));
12858 return $resource(AeConfig.urls.events, {userId: '@id'}, angular.copy(DEFAULT_ACTIONS));
12886 }]);
12859 }]);
12887
12860
12888 angular.module('appenlight.services.resources').factory('eventsPropertyResource', ['$resource', 'AeConfig', function ($resource, AeConfig) {
12861 angular.module('appenlight.services.resources').factory('eventsPropertyResource', ['$resource', 'AeConfig', function ($resource, AeConfig) {
12889 return $resource(AeConfig.urls.eventsProperty, null, angular.copy(DEFAULT_ACTIONS));
12862 return $resource(AeConfig.urls.eventsProperty, null, angular.copy(DEFAULT_ACTIONS));
12890 }]);
12863 }]);
12891
12864
12892 angular.module('appenlight.services.resources').factory('configsNoIdResource', ['$resource', 'AeConfig', function ($resource, AeConfig) {
12865 angular.module('appenlight.services.resources').factory('configsNoIdResource', ['$resource', 'AeConfig', function ($resource, AeConfig) {
12893 return $resource(AeConfig.urls.configsNoId, null, angular.copy(DEFAULT_ACTIONS));
12866 return $resource(AeConfig.urls.configsNoId, null, angular.copy(DEFAULT_ACTIONS));
12894 }]);
12867 }]);
12895
12868
12896 angular.module('appenlight.services.resources').factory('configsResource', ['$resource', 'AeConfig', function ($resource, AeConfig) {
12869 angular.module('appenlight.services.resources').factory('configsResource', ['$resource', 'AeConfig', function ($resource, AeConfig) {
12897 return $resource(AeConfig.urls.configs, {
12870 return $resource(AeConfig.urls.configs, {
12898 key: '@key',
12871 key: '@key',
12899 section: '@section'
12872 section: '@section'
12900 }, angular.copy(DEFAULT_ACTIONS));
12873 }, angular.copy(DEFAULT_ACTIONS));
12901 }]);
12874 }]);
12902
12875
12903 angular.module('appenlight.services.resources').factory('pluginConfigsResource', ['$resource', 'AeConfig', function ($resource, AeConfig) {
12876 angular.module('appenlight.services.resources').factory('pluginConfigsResource', ['$resource', 'AeConfig', function ($resource, AeConfig) {
12904 return $resource(AeConfig.urls.pluginConfigs, {
12877 return $resource(AeConfig.urls.pluginConfigs, {
12905 id: '@id',
12878 id: '@id',
12906 plugin_name: '@plugin_name'
12879 plugin_name: '@plugin_name'
12907 }, angular.copy(DEFAULT_ACTIONS));
12880 }, angular.copy(DEFAULT_ACTIONS));
12908 }]);
12881 }]);
12909
12882
12910 angular.module('appenlight.services.resources').factory('resourcesPropertyResource', ['$resource', 'AeConfig', function ($resource, AeConfig) {
12883 angular.module('appenlight.services.resources').factory('resourcesPropertyResource', ['$resource', 'AeConfig', function ($resource, AeConfig) {
12911 return $resource(AeConfig.urls.resourceProperty, null, angular.copy(DEFAULT_ACTIONS));
12884 return $resource(AeConfig.urls.resourceProperty, null, angular.copy(DEFAULT_ACTIONS));
12912 }]);
12885 }]);
12913
12886
12914 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
12887 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
12915 // #
12888 // #
12916 // # This program is free software: you can redistribute it and/or modify
12889 // # This program is free software: you can redistribute it and/or modify
12917 // # it under the terms of the GNU Affero General Public License, version 3
12890 // # it under the terms of the GNU Affero General Public License, version 3
12918 // # (only), as published by the Free Software Foundation.
12891 // # (only), as published by the Free Software Foundation.
12919 // #
12892 // #
12920 // # This program is distributed in the hope that it will be useful,
12893 // # This program is distributed in the hope that it will be useful,
12921 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
12894 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
12922 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12895 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12923 // # GNU General Public License for more details.
12896 // # GNU General Public License for more details.
12924 // #
12897 // #
12925 // # You should have received a copy of the GNU Affero General Public License
12898 // # You should have received a copy of the GNU Affero General Public License
12926 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
12899 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
12927 // #
12900 // #
12928 // # This program is dual-licensed. If you wish to learn more about the
12901 // # This program is dual-licensed. If you wish to learn more about the
12929 // # AppEnlight Enterprise Edition, including its added features, Support
12902 // # AppEnlight Enterprise Edition, including its added features, Support
12930 // # services, and proprietary license terms, please see
12903 // # services, and proprietary license terms, please see
12931 // # https://rhodecode.com/licenses/
12904 // # https://rhodecode.com/licenses/
12932
12905
12933 angular.module('appenlight.services.stateHolder', []).factory('stateHolder',
12906 angular.module('appenlight.services.stateHolder', []).factory('stateHolder',
12934 ['$timeout', 'AeConfig', function ($timeout, AeConfig) {
12907 ['$timeout', 'AeConfig', function ($timeout, AeConfig) {
12935
12908
12936 var AeUser = {"user_name": null, "id": null};
12909 var AeUser = {"user_name": null, "id": null};
12937 AeUser.update = function (jsonData) {
12910 AeUser.update = function (jsonData) {
12938 jsonData = jsonData || {};
12911 jsonData = jsonData || {};
12939 this.applications_map = {};
12912 this.applications_map = {};
12940 this.dashboards_map = {};
12913 this.dashboards_map = {};
12941 this.user_name = jsonData.user_name || null;
12914 this.user_name = jsonData.user_name || null;
12942 this.id = jsonData.id;
12915 this.id = jsonData.id;
12943 this.assigned_reports = jsonData.assigned_reports || null;
12916 this.assigned_reports = jsonData.assigned_reports || null;
12944 this.latest_events = jsonData.latest_events || null;
12917 this.latest_events = jsonData.latest_events || null;
12945 this.permissions = jsonData.permissions || null;
12918 this.permissions = jsonData.permissions || null;
12946 this.groups = jsonData.groups || null;
12919 this.groups = jsonData.groups || null;
12947 this.applications = [];
12920 this.applications = [];
12948 this.dashboards = [];
12921 this.dashboards = [];
12949 _.each(jsonData.applications, function (item) {
12922 _.each(jsonData.applications, function (item) {
12950 this.addApplication(item);
12923 this.addApplication(item);
12951 }.bind(this));
12924 }.bind(this));
12952 _.each(jsonData.dashboards, function (item) {
12925 _.each(jsonData.dashboards, function (item) {
12953 this.addDashboard(item);
12926 this.addDashboard(item);
12954 }.bind(this));
12927 }.bind(this));
12955 };
12928 };
12956 AeUser.addApplication = function (item) {
12929 AeUser.addApplication = function (item) {
12957 this.applications.push(item);
12930 this.applications.push(item);
12958 this.applications_map[item.resource_id] = item;
12931 this.applications_map[item.resource_id] = item;
12959 };
12932 };
12960 AeUser.addDashboard = function (item) {
12933 AeUser.addDashboard = function (item) {
12961 this.dashboards.push(item);
12934 this.dashboards.push(item);
12962 this.dashboards_map[item.resource_id] = item;
12935 this.dashboards_map[item.resource_id] = item;
12963 };
12936 };
12964
12937
12965 AeUser.removeApplicationById = function (applicationId) {
12938 AeUser.removeApplicationById = function (applicationId) {
12966 this.applications = _.filter(this.applications, function (item) {
12939 this.applications = _.filter(this.applications, function (item) {
12967 return item.resource_id != applicationId;
12940 return item.resource_id != applicationId;
12968 });
12941 });
12969 delete this.applications_map[applicationId];
12942 delete this.applications_map[applicationId];
12970 };
12943 };
12971 AeUser.removeDashboardById = function (dashboardId) {
12944 AeUser.removeDashboardById = function (dashboardId) {
12972 this.dashboards = _.filter(this.dashboards, function (item) {
12945 this.dashboards = _.filter(this.dashboards, function (item) {
12973 return item.resource_id != dashboardId;
12946 return item.resource_id != dashboardId;
12974 });
12947 });
12975 delete this.dashboards_map[dashboardId];
12948 delete this.dashboards_map[dashboardId];
12976 };
12949 };
12977
12950
12978 AeUser.hasAppPermission = function (perm_name) {
12951 AeUser.hasAppPermission = function (perm_name) {
12979 if (this.permissions.indexOf('root_administration') !== -1) {
12952 if (this.permissions.indexOf('root_administration') !== -1) {
12980 return true
12953 return true
12981 }
12954 }
12982 return this.permissions.indexOf(perm_name) !== -1;
12955 return this.permissions.indexOf(perm_name) !== -1;
12983 };
12956 };
12984
12957
12985 AeUser.hasContextPermission = function (permName, ACLList) {
12958 AeUser.hasContextPermission = function (permName, ACLList) {
12986 var hasPerm = false;
12959 var hasPerm = false;
12987 _.each(ACLList, function (ACL) {
12960 _.each(ACLList, function (ACL) {
12988 // is this the right perm?
12961 // is this the right perm?
12989 if (ACL.perm_name == permName ||
12962 if (ACL.perm_name == permName ||
12990 ACL.perm_name == '__all_permissions__') {
12963 ACL.perm_name == '__all_permissions__') {
12991 // perm for this user or a group user belongs to
12964 // perm for this user or a group user belongs to
12992 if (ACL.user_name === this.user_name ||
12965 if (ACL.user_name === this.user_name ||
12993 this.groups.indexOf(ACL.group_name) !== -1) {
12966 this.groups.indexOf(ACL.group_name) !== -1) {
12994 hasPerm = true
12967 hasPerm = true
12995 }
12968 }
12996 }
12969 }
12997 }.bind(this));
12970 }.bind(this));
12998
12971
12999 return hasPerm;
12972 return hasPerm;
13000 };
12973 };
13001
12974
13002 /**
12975 /**
13003 * Holds some common stuff like flash messages, but important part is
12976 * Holds some common stuff like flash messages, but important part is
13004 * plugins property that is a registry that holds all information about
12977 * plugins property that is a registry that holds all information about
13005 * loaded plugins, its mutated via .run() functions on inclusion
12978 * loaded plugins, its mutated via .run() functions on inclusion
13006 * @type {{list: Array, timeout: null, extend: flashMessages.extend, pop: flashMessages.pop, cancelTimeout: flashMessages.cancelTimeout, removeMessages: flashMessages.removeMessages}}
12979 * @type {{list: Array, timeout: null, extend: flashMessages.extend, pop: flashMessages.pop, cancelTimeout: flashMessages.cancelTimeout, removeMessages: flashMessages.removeMessages}}
13007 */
12980 */
13008 var flashMessages = {
12981 var flashMessages = {
13009 list: [],
12982 list: [],
13010 timeout: null,
12983 timeout: null,
13011 extend: function (values) {
12984 extend: function (values) {
13012
12985
13013 if (this.list.length > 2) {
12986 if (this.list.length > 2) {
13014 this.list.splice(0, this.list.length - 2);
12987 this.list.splice(0, this.list.length - 2);
13015 }
12988 }
13016 this.list.push.apply(this.list, values);
12989 this.list.push.apply(this.list, values);
13017 this.cancelTimeout();
12990 this.cancelTimeout();
13018 this.removeMessages();
12991 this.removeMessages();
13019 },
12992 },
13020 pop: function () {
12993 pop: function () {
13021
12994
13022 this.list.pop();
12995 this.list.pop();
13023 },
12996 },
13024 cancelTimeout: function () {
12997 cancelTimeout: function () {
13025 if (this.timeout) {
12998 if (this.timeout) {
13026 $timeout.cancel(this.timeout);
12999 $timeout.cancel(this.timeout);
13027 }
13000 }
13028 },
13001 },
13029 removeMessages: function () {
13002 removeMessages: function () {
13030 var self = this;
13003 var self = this;
13031 this.timeout = $timeout(function () {
13004 this.timeout = $timeout(function () {
13032 while (self.list.length > 0) {
13005 while (self.list.length > 0) {
13033 self.list.pop();
13006 self.list.pop();
13034 }
13007 }
13035 }, 10000);
13008 }, 10000);
13036 }
13009 }
13037 };
13010 };
13038 flashMessages.closeAlert = angular.bind(flashMessages, function (index) {
13011 flashMessages.closeAlert = angular.bind(flashMessages, function (index) {
13039 this.list.splice(index, 1);
13012 this.list.splice(index, 1);
13040 this.cancelTimeout();
13013 this.cancelTimeout();
13041 });
13014 });
13042 /* add flash messages from template generated on non-xhr request level */
13015 /* add flash messages from template generated on non-xhr request level */
13043 try {
13016 try {
13044 if (AeConfig.flashMessages.length > 0) {
13017 if (AeConfig.flashMessages.length > 0) {
13045 flashMessages.list = AeConfig.flashMessages;
13018 flashMessages.list = AeConfig.flashMessages;
13046 }
13019 }
13047 }
13020 }
13048 catch (exc) {
13021 catch (exc) {
13049
13022
13050 }
13023 }
13051
13024
13052 var Plugins = {
13025 var Plugins = {
13053 enabled: [],
13026 enabled: [],
13054 configs: {},
13027 configs: {},
13055 inclusions: {},
13028 inclusions: {},
13056 addInclusion: function (name, inclusion) {
13029 addInclusion: function (name, inclusion) {
13057 var self = this;
13030 var self = this;
13058 if (self.inclusions.hasOwnProperty(name) === false) {
13031 if (self.inclusions.hasOwnProperty(name) === false) {
13059 self.inclusions[name] = [];
13032 self.inclusions[name] = [];
13060 }
13033 }
13061 self.inclusions[name].push(inclusion);
13034 self.inclusions[name].push(inclusion);
13062 }
13035 }
13063 };
13036 };
13064
13037
13065 var stateHolder = {
13038 var stateHolder = {
13066 section: 'settings',
13039 section: 'settings',
13067 resource: null,
13040 resource: null,
13068 plugins: Plugins,
13041 plugins: Plugins,
13069 flashMessages: flashMessages,
13042 flashMessages: flashMessages,
13070 AeUser: AeUser,
13043 AeUser: AeUser,
13071 AeConfig: AeConfig
13044 AeConfig: AeConfig
13072 };
13045 };
13073 return stateHolder;
13046 return stateHolder;
13074 }]);
13047 }]);
13075
13048
13076 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
13049 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
13077 // #
13050 // #
13078 // # This program is free software: you can redistribute it and/or modify
13051 // # This program is free software: you can redistribute it and/or modify
13079 // # it under the terms of the GNU Affero General Public License, version 3
13052 // # it under the terms of the GNU Affero General Public License, version 3
13080 // # (only), as published by the Free Software Foundation.
13053 // # (only), as published by the Free Software Foundation.
13081 // #
13054 // #
13082 // # This program is distributed in the hope that it will be useful,
13055 // # This program is distributed in the hope that it will be useful,
13083 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
13056 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
13084 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13057 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13085 // # GNU General Public License for more details.
13058 // # GNU General Public License for more details.
13086 // #
13059 // #
13087 // # You should have received a copy of the GNU Affero General Public License
13060 // # You should have received a copy of the GNU Affero General Public License
13088 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
13061 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
13089 // #
13062 // #
13090 // # This program is dual-licensed. If you wish to learn more about the
13063 // # This program is dual-licensed. If you wish to learn more about the
13091 // # AppEnlight Enterprise Edition, including its added features, Support
13064 // # AppEnlight Enterprise Edition, including its added features, Support
13092 // # services, and proprietary license terms, please see
13065 // # services, and proprietary license terms, please see
13093 // # https://rhodecode.com/licenses/
13066 // # https://rhodecode.com/licenses/
13094
13067
13095 angular.module('appenlight.services.typeAheadTagHelper', []).factory('typeAheadTagHelper', function () {
13068 angular.module('appenlight.services.typeAheadTagHelper', []).factory('typeAheadTagHelper', function () {
13096 var typeAheadTagHelper = {tags: []};
13069 var typeAheadTagHelper = {tags: []};
13097 typeAheadTagHelper.aheadFilter = function (item, viewValue) {
13070 typeAheadTagHelper.aheadFilter = function (item, viewValue) {
13098 //dont show "deeper" autocomplete like level:foo with exception of application ones
13071 //dont show "deeper" autocomplete like level:foo with exception of application ones
13099 var label_text = item.text || item;
13072 var label_text = item.text || item;
13100 if (label_text.charAt(label_text.length - 1) != ':' && viewValue.indexOf(':') === -1 && label_text.indexOf('resource:') !== 0) {
13073 if (label_text.charAt(label_text.length - 1) != ':' && viewValue.indexOf(':') === -1 && label_text.indexOf('resource:') !== 0) {
13101 return false;
13074 return false;
13102 }
13075 }
13103 if (viewValue.length > 2) {
13076 if (viewValue.length > 2) {
13104 // with apps we need to do it differently
13077 // with apps we need to do it differently
13105 if (viewValue.toLowerCase().indexOf('resource:') == 0) {
13078 if (viewValue.toLowerCase().indexOf('resource:') == 0) {
13106 viewValue = viewValue.split(':').pop();
13079 viewValue = viewValue.split(':').pop();
13107 }
13080 }
13108 // check if tags match
13081 // check if tags match
13109 if (label_text.toLowerCase().indexOf(viewValue.toLowerCase()) === -1) {
13082 if (label_text.toLowerCase().indexOf(viewValue.toLowerCase()) === -1) {
13110 return false;
13083 return false;
13111 }
13084 }
13112 }
13085 }
13113 return true;
13086 return true;
13114 };
13087 };
13115 typeAheadTagHelper.removeSearchTag = function (tag) {
13088 typeAheadTagHelper.removeSearchTag = function (tag) {
13116
13089
13117 var indexValue = _.indexOf(typeAheadTagHelper.tags, tag);
13090 var indexValue = _.indexOf(typeAheadTagHelper.tags, tag);
13118 typeAheadTagHelper.tags.splice(indexValue, 1);
13091 typeAheadTagHelper.tags.splice(indexValue, 1);
13119
13092
13120 };
13093 };
13121 typeAheadTagHelper.addSearchTag = function (tag) {
13094 typeAheadTagHelper.addSearchTag = function (tag) {
13122 // do not allow dupes - angular will complain
13095 // do not allow dupes - angular will complain
13123 var found = _.find(typeAheadTagHelper.tags, function (existingTag) {
13096 var found = _.find(typeAheadTagHelper.tags, function (existingTag) {
13124 return existingTag.type == tag.type && existingTag.value == tag.value
13097 return existingTag.type == tag.type && existingTag.value == tag.value
13125 });
13098 });
13126 if (!found) {
13099 if (!found) {
13127 typeAheadTagHelper.tags.push(tag);
13100 typeAheadTagHelper.tags.push(tag);
13128 }
13101 }
13129 };
13102 };
13130
13103
13131 return typeAheadTagHelper;
13104 return typeAheadTagHelper;
13132 });
13105 });
13133
13106
13134 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
13107 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
13135 // #
13108 // #
13136 // # This program is free software: you can redistribute it and/or modify
13109 // # This program is free software: you can redistribute it and/or modify
13137 // # it under the terms of the GNU Affero General Public License, version 3
13110 // # it under the terms of the GNU Affero General Public License, version 3
13138 // # (only), as published by the Free Software Foundation.
13111 // # (only), as published by the Free Software Foundation.
13139 // #
13112 // #
13140 // # This program is distributed in the hope that it will be useful,
13113 // # This program is distributed in the hope that it will be useful,
13141 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
13114 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
13142 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13115 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13143 // # GNU General Public License for more details.
13116 // # GNU General Public License for more details.
13144 // #
13117 // #
13145 // # You should have received a copy of the GNU Affero General Public License
13118 // # You should have received a copy of the GNU Affero General Public License
13146 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
13119 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
13147 // #
13120 // #
13148 // # This program is dual-licensed. If you wish to learn more about the
13121 // # This program is dual-licensed. If you wish to learn more about the
13149 // # AppEnlight Enterprise Edition, including its added features, Support
13122 // # AppEnlight Enterprise Edition, including its added features, Support
13150 // # services, and proprietary license terms, please see
13123 // # services, and proprietary license terms, please see
13151 // # https://rhodecode.com/licenses/
13124 // # https://rhodecode.com/licenses/
13152
13125
13153 angular.module('appenlight.services.UUIDProvider', []).factory('UUIDProvider', function () {
13126 angular.module('appenlight.services.UUIDProvider', []).factory('UUIDProvider', function () {
13154 var provider = {
13127 var provider = {
13155 genUUID4: function () {
13128 genUUID4: function () {
13156 return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(
13129 return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(
13157 /[xy]/g, function (c) {
13130 /[xy]/g, function (c) {
13158 var r = Math.random() * 16 | 0, v = c == 'x' ? r : r & 0x3 | 0x8;
13131 var r = Math.random() * 16 | 0, v = c == 'x' ? r : r & 0x3 | 0x8;
13159 return v.toString(16);
13132 return v.toString(16);
13160 }
13133 }
13161 );
13134 );
13162 }
13135 }
13163 };
13136 };
13164 return provider;
13137 return provider;
13165 });
13138 });
13166
13139
13167 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
13140 ;// # Copyright (C) 2010-2016 RhodeCode GmbH
13168 // #
13141 // #
13169 // # This program is free software: you can redistribute it and/or modify
13142 // # This program is free software: you can redistribute it and/or modify
13170 // # it under the terms of the GNU Affero General Public License, version 3
13143 // # it under the terms of the GNU Affero General Public License, version 3
13171 // # (only), as published by the Free Software Foundation.
13144 // # (only), as published by the Free Software Foundation.
13172 // #
13145 // #
13173 // # This program is distributed in the hope that it will be useful,
13146 // # This program is distributed in the hope that it will be useful,
13174 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
13147 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
13175 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13148 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13176 // # GNU General Public License for more details.
13149 // # GNU General Public License for more details.
13177 // #
13150 // #
13178 // # You should have received a copy of the GNU Affero General Public License
13151 // # You should have received a copy of the GNU Affero General Public License
13179 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
13152 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
13180 // #
13153 // #
13181 // # This program is dual-licensed. If you wish to learn more about the
13154 // # This program is dual-licensed. If you wish to learn more about the
13182 // # AppEnlight Enterprise Edition, including its added features, Support
13155 // # AppEnlight Enterprise Edition, including its added features, Support
13183 // # services, and proprietary license terms, please see
13156 // # services, and proprietary license terms, please see
13184 // # https://rhodecode.com/licenses/
13157 // # https://rhodecode.com/licenses/
13185
13158
13186 var underscore = angular.module('underscore', []);
13159 var underscore = angular.module('underscore', []);
13187 underscore.factory('_', function () {
13160 underscore.factory('_', function () {
13188 return window._; // assumes underscore has already been loaded on the page
13161 return window._; // assumes underscore has already been loaded on the page
13189 });
13162 });
@@ -1,201 +1,200 b''
1 // # Copyright (C) 2010-2016 RhodeCode GmbH
1 // # Copyright (C) 2010-2016 RhodeCode GmbH
2 // #
2 // #
3 // # This program is free software: you can redistribute it and/or modify
3 // # This program is free software: you can redistribute it and/or modify
4 // # it under the terms of the GNU Affero General Public License, version 3
4 // # it under the terms of the GNU Affero General Public License, version 3
5 // # (only), as published by the Free Software Foundation.
5 // # (only), as published by the Free Software Foundation.
6 // #
6 // #
7 // # This program is distributed in the hope that it will be useful,
7 // # This program is distributed in the hope that it will be useful,
8 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
8 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
9 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 // # GNU General Public License for more details.
10 // # GNU General Public License for more details.
11 // #
11 // #
12 // # You should have received a copy of the GNU Affero General Public License
12 // # You should have received a copy of the GNU Affero General Public License
13 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
13 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
14 // #
14 // #
15 // # This program is dual-licensed. If you wish to learn more about the
15 // # This program is dual-licensed. If you wish to learn more about the
16 // # AppEnlight Enterprise Edition, including its added features, Support
16 // # AppEnlight Enterprise Edition, including its added features, Support
17 // # services, and proprietary license terms, please see
17 // # services, and proprietary license terms, please see
18 // # https://rhodecode.com/licenses/
18 // # https://rhodecode.com/licenses/
19
19
20 'use strict';
20 'use strict';
21
21
22 // Declare app level module which depends on filters, and services
22 // Declare app level module which depends on filters, and services
23 angular.module('appenlight.base', [
23 angular.module('appenlight.base', [
24 'ngRoute',
24 'ngRoute',
25 'ui.router',
25 'ui.router',
26 'ui.router.router',
26 'ui.router.router',
27 'underscore',
27 'underscore',
28 'ui.bootstrap',
28 'ui.bootstrap',
29 'ngResource',
29 'ngResource',
30 'ngAnimate',
30 'ngAnimate',
31 'ngCookies',
31 'ngCookies',
32 'smart-table',
32 'smart-table',
33 'angular-toArrayFilter',
33 'angular-toArrayFilter',
34 'mentio'
34 'mentio'
35 ]);
35 ]);
36
36
37 angular.module('appenlight.filters', []);
37 angular.module('appenlight.filters', []);
38 angular.module('appenlight.templates', []);
38 angular.module('appenlight.templates', []);
39 angular.module('appenlight.controllers', [
39 angular.module('appenlight.controllers', [
40 'appenlight.base'
40 'appenlight.base'
41 ]);
41 ]);
42 angular.module('appenlight.components', [
42 angular.module('appenlight.components', [
43 'appenlight.components.channelstream',
43 'appenlight.components.channelstream',
44 'appenlight.components.appenlightApp',
44 'appenlight.components.appenlightApp',
45 'appenlight.components.appenlightHeader'
45 'appenlight.components.appenlightHeader'
46 ]);
46 ]);
47 angular.module('appenlight.directives', [
47 angular.module('appenlight.directives', [
48 'appenlight.directives.appVersion',
49 'appenlight.directives.c3chart',
48 'appenlight.directives.c3chart',
50 'appenlight.directives.confirmValidate',
49 'appenlight.directives.confirmValidate',
51 'appenlight.directives.focus',
50 'appenlight.directives.focus',
52 'appenlight.directives.formErrors',
51 'appenlight.directives.formErrors',
53 'appenlight.directives.humanFormat',
52 'appenlight.directives.humanFormat',
54 'appenlight.directives.isoToRelativeTime',
53 'appenlight.directives.isoToRelativeTime',
55 'appenlight.directives.permissionsForm',
54 'appenlight.directives.permissionsForm',
56 'appenlight.directives.smallReportGroupList',
55 'appenlight.directives.smallReportGroupList',
57 'appenlight.directives.smallReportList',
56 'appenlight.directives.smallReportList',
58 'appenlight.directives.pluginConfig',
57 'appenlight.directives.pluginConfig',
59 'appenlight.directives.recursive',
58 'appenlight.directives.recursive',
60 'appenlight.directives.reportAlertAction',
59 'appenlight.directives.reportAlertAction',
61 'appenlight.directives.postProcessAction',
60 'appenlight.directives.postProcessAction',
62 'appenlight.directives.rule',
61 'appenlight.directives.rule',
63 'appenlight.directives.ruleReadOnly'
62 'appenlight.directives.ruleReadOnly'
64 ]);
63 ]);
65 angular.module('appenlight.services', [
64 angular.module('appenlight.services', [
66 'appenlight.services.chartResultParser',
65 'appenlight.services.chartResultParser',
67 'appenlight.services.resources',
66 'appenlight.services.resources',
68 'appenlight.services.stateHolder',
67 'appenlight.services.stateHolder',
69 'appenlight.services.typeAheadTagHelper',
68 'appenlight.services.typeAheadTagHelper',
70 'appenlight.services.UUIDProvider'
69 'appenlight.services.UUIDProvider'
71 ]).value('version', '0.1');
70 ]).value('version', '0.1');
72
71
73
72
74 var pluginsToLoad = _.map(decodeEncodedJSON(window.AE.plugins),
73 var pluginsToLoad = _.map(decodeEncodedJSON(window.AE.plugins),
75 function(item){
74 function(item){
76 return item.config.angular_module
75 return item.config.angular_module
77 });
76 });
78 console.log(pluginsToLoad);
77 console.log(pluginsToLoad);
79 angular.module('appenlight.plugins', pluginsToLoad);
78 angular.module('appenlight.plugins', pluginsToLoad);
80
79
81 var app = angular.module('appenlight', [
80 var app = angular.module('appenlight', [
82 'appenlight.base',
81 'appenlight.base',
83 'appenlight.config',
82 'appenlight.config',
84 'appenlight.templates',
83 'appenlight.templates',
85 'appenlight.filters',
84 'appenlight.filters',
86 'appenlight.services',
85 'appenlight.services',
87 'appenlight.directives',
86 'appenlight.directives',
88 'appenlight.controllers',
87 'appenlight.controllers',
89 'appenlight.components',
88 'appenlight.components',
90 'appenlight.plugins'
89 'appenlight.plugins'
91 ]);
90 ]);
92
91
93 // needs manual execution because of plugin files
92 // needs manual execution because of plugin files
94 function kickstartAE(initialUserData) {
93 function kickstartAE(initialUserData) {
95 app.config(['$httpProvider', '$uibTooltipProvider', '$locationProvider', function ($httpProvider, $uibTooltipProvider, $locationProvider) {
94 app.config(['$httpProvider', '$uibTooltipProvider', '$locationProvider', function ($httpProvider, $uibTooltipProvider, $locationProvider) {
96 $locationProvider.html5Mode(true);
95 $locationProvider.html5Mode(true);
97 $httpProvider.interceptors.push(['$q', '$rootScope', '$timeout', 'stateHolder', function ($q, $rootScope, $timeout, stateHolder) {
96 $httpProvider.interceptors.push(['$q', '$rootScope', '$timeout', 'stateHolder', function ($q, $rootScope, $timeout, stateHolder) {
98 return {
97 return {
99 'response': function (response) {
98 'response': function (response) {
100 var flashMessages = angular.fromJson(response.headers('x-flash-messages'));
99 var flashMessages = angular.fromJson(response.headers('x-flash-messages'));
101 if (flashMessages && flashMessages.length > 0) {
100 if (flashMessages && flashMessages.length > 0) {
102 stateHolder.flashMessages.extend(flashMessages);
101 stateHolder.flashMessages.extend(flashMessages);
103 }
102 }
104 return response;
103 return response;
105 },
104 },
106 'responseError': function (rejection) {
105 'responseError': function (rejection) {
107 if (rejection.status > 299 && rejection.status !== 422) {
106 if (rejection.status > 299 && rejection.status !== 422) {
108 stateHolder.flashMessages.extend([{
107 stateHolder.flashMessages.extend([{
109 msg: 'Response status code: ' + rejection.status + ', "' + rejection.statusText + '", url: ' + rejection.config.url,
108 msg: 'Response status code: ' + rejection.status + ', "' + rejection.statusText + '", url: ' + rejection.config.url,
110 type: 'error'
109 type: 'error'
111 }]);
110 }]);
112 }
111 }
113 if (rejection.status == 0) {
112 if (rejection.status == 0) {
114 stateHolder.flashMessages.extend([{
113 stateHolder.flashMessages.extend([{
115 msg: 'Response timeout',
114 msg: 'Response timeout',
116 type: 'error'
115 type: 'error'
117 }]);
116 }]);
118 }
117 }
119 var flashMessages = angular.fromJson(rejection.headers('x-flash-messages'));
118 var flashMessages = angular.fromJson(rejection.headers('x-flash-messages'));
120 if (flashMessages && flashMessages.length > 0) {
119 if (flashMessages && flashMessages.length > 0) {
121 stateHolder.flashMessages.extend(flashMessages);
120 stateHolder.flashMessages.extend(flashMessages);
122 }
121 }
123
122
124 return $q.reject(rejection);
123 return $q.reject(rejection);
125 }
124 }
126 }
125 }
127 }]);
126 }]);
128
127
129 $uibTooltipProvider.options({appendToBody: true});
128 $uibTooltipProvider.options({appendToBody: true});
130
129
131 }]);
130 }]);
132
131
133
132
134 app.config(function ($provide) {
133 app.config(function ($provide) {
135 $provide.decorator("$exceptionHandler", function ($delegate) {
134 $provide.decorator("$exceptionHandler", function ($delegate) {
136 return function (exception, cause) {
135 return function (exception, cause) {
137 $delegate(exception, cause);
136 $delegate(exception, cause);
138 if (typeof AppEnlight !== 'undefined') {
137 if (typeof AppEnlight !== 'undefined') {
139 AppEnlight.grabError(exception);
138 AppEnlight.grabError(exception);
140 }
139 }
141 };
140 };
142 });
141 });
143 });
142 });
144
143
145 app.run(['$rootScope', '$timeout', 'stateHolder', '$state', '$location', '$transitions', '$window', 'AeConfig',
144 app.run(['$rootScope', '$timeout', 'stateHolder', '$state', '$location', '$transitions', '$window', 'AeConfig',
146 function ($rootScope, $timeout, stateHolder, $state, $location, $transitions, $window, AeConfig) {
145 function ($rootScope, $timeout, stateHolder, $state, $location, $transitions, $window, AeConfig) {
147 if (initialUserData){
146 if (initialUserData){
148 stateHolder.AeUser.update(initialUserData);
147 stateHolder.AeUser.update(initialUserData);
149 }
148 }
150 $rootScope.$state = $state;
149 $rootScope.$state = $state;
151 $rootScope.stateHolder = stateHolder;
150 $rootScope.stateHolder = stateHolder;
152 $rootScope.flash = stateHolder.flashMessages.list;
151 $rootScope.flash = stateHolder.flashMessages.list;
153 $rootScope.closeAlert = stateHolder.flashMessages.closeAlert;
152 $rootScope.closeAlert = stateHolder.flashMessages.closeAlert;
154 $rootScope.AeConfig = AeConfig;
153 $rootScope.AeConfig = AeConfig;
155
154
156 var transitionApp = function($transition$, $state) {
155 var transitionApp = function($transition$, $state) {
157 // redirect user to /register unless its one of open views
156 // redirect user to /register unless its one of open views
158 var isGuestState = [
157 var isGuestState = [
159 'report.view_detail',
158 'report.view_detail',
160 'report.view_group',
159 'report.view_group',
161 'dashboard.view'
160 'dashboard.view'
162 ].indexOf($transition$.to().name) !== -1;
161 ].indexOf($transition$.to().name) !== -1;
163
162
164 var path = $window.location.pathname;
163 var path = $window.location.pathname;
165 // strip trailing slash
164 // strip trailing slash
166 if (path.substr(path.length - 1) === '/') {
165 if (path.substr(path.length - 1) === '/') {
167 path = path.substr(0, path.length - 1);
166 path = path.substr(0, path.length - 1);
168 }
167 }
169 var isOpenView = false;
168 var isOpenView = false;
170 var openViews = [
169 var openViews = [
171 AeConfig.urls.otherRoutes.lostPassword,
170 AeConfig.urls.otherRoutes.lostPassword,
172 AeConfig.urls.otherRoutes.lostPasswordGenerate
171 AeConfig.urls.otherRoutes.lostPasswordGenerate
173 ];
172 ];
174 console.log('$transitions.onBefore', path, $transition$.to().name, $state);
173 console.log('$transitions.onBefore', path, $transition$.to().name, $state);
175 _.each(openViews, function (url) {
174 _.each(openViews, function (url) {
176 var url = '/' + url.split('/').slice(3).join('/');
175 var url = '/' + url.split('/').slice(3).join('/');
177 if (url === path) {
176 if (url === path) {
178 isOpenView = true;
177 isOpenView = true;
179 }
178 }
180 });
179 });
181 if (stateHolder.AeUser.id === null && !isGuestState && !isOpenView) {
180 if (stateHolder.AeUser.id === null && !isGuestState && !isOpenView) {
182 if (window.location.toString().indexOf(AeConfig.urls.otherRoutes.register) === -1) {
181 if (window.location.toString().indexOf(AeConfig.urls.otherRoutes.register) === -1) {
183 console.log('redirect to register');
182 console.log('redirect to register');
184 var newLocation = AeConfig.urls.otherRoutes.register + '?came_from=' + encodeURIComponent(window.location);
183 var newLocation = AeConfig.urls.otherRoutes.register + '?came_from=' + encodeURIComponent(window.location);
185 // fix infinite digest here
184 // fix infinite digest here
186 $rootScope.$on('$locationChangeStart',
185 $rootScope.$on('$locationChangeStart',
187 function(event, toState, toParams, fromState, fromParams, options){
186 function(event, toState, toParams, fromState, fromParams, options){
188 event.preventDefault();
187 event.preventDefault();
189 $window.location = newLocation;
188 $window.location = newLocation;
190 });
189 });
191 $window.location = newLocation;
190 $window.location = newLocation;
192 return false;
191 return false;
193 }
192 }
194 return false;
193 return false;
195 }
194 }
196 return true;
195 return true;
197 };
196 };
198 $transitions.onBefore({}, transitionApp);
197 $transitions.onBefore({}, transitionApp);
199
198
200 }]);
199 }]);
201 }
200 }
1 NO CONTENT: file renamed from frontend/src/templates/components/appenlight-app.html to frontend/src/components/appenlight-app/appenlight-app.html
NO CONTENT: file renamed from frontend/src/templates/components/appenlight-app.html to frontend/src/components/appenlight-app/appenlight-app.html
@@ -1,36 +1,36 b''
1 // # Copyright (C) 2010-2016 RhodeCode GmbH
1 // # Copyright (C) 2010-2016 RhodeCode GmbH
2 // #
2 // #
3 // # This program is free software: you can redistribute it and/or modify
3 // # This program is free software: you can redistribute it and/or modify
4 // # it under the terms of the GNU Affero General Public License, version 3
4 // # it under the terms of the GNU Affero General Public License, version 3
5 // # (only), as published by the Free Software Foundation.
5 // # (only), as published by the Free Software Foundation.
6 // #
6 // #
7 // # This program is distributed in the hope that it will be useful,
7 // # This program is distributed in the hope that it will be useful,
8 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
8 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
9 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 // # GNU General Public License for more details.
10 // # GNU General Public License for more details.
11 // #
11 // #
12 // # You should have received a copy of the GNU Affero General Public License
12 // # You should have received a copy of the GNU Affero General Public License
13 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
13 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
14 // #
14 // #
15 // # This program is dual-licensed. If you wish to learn more about the
15 // # This program is dual-licensed. If you wish to learn more about the
16 // # AppEnlight Enterprise Edition, including its added features, Support
16 // # AppEnlight Enterprise Edition, including its added features, Support
17 // # services, and proprietary license terms, please see
17 // # services, and proprietary license terms, please see
18 // # https://rhodecode.com/licenses/
18 // # https://rhodecode.com/licenses/
19
19
20 angular.module('appenlight.components.appenlightApp', [])
20 angular.module('appenlight.components.appenlightApp', [])
21 .component('appenlightApp', {
21 .component('appenlightApp', {
22 templateUrl: 'templates/components/appenlight-app.html',
22 templateUrl: 'components/appenlight-app/appenlight-app.html',
23 controller: AppEnlightAppController
23 controller: AppEnlightAppController
24 });
24 });
25
25
26 AppEnlightAppController.$inject = ['$scope','$state', 'stateHolder', 'AeConfig'];
26 AppEnlightAppController.$inject = ['$scope','$state', 'stateHolder', 'AeConfig'];
27
27
28 function AppEnlightAppController($scope, $state, stateHolder, AeConfig){
28 function AppEnlightAppController($scope, $state, stateHolder, AeConfig){
29 console.log('app start');
29 console.log('app start');
30 // to keep bw compatibility
30 // to keep bw compatibility
31 $scope.$state = $state;
31 $scope.$state = $state;
32 $scope.stateHolder = stateHolder;
32 $scope.stateHolder = stateHolder;
33 $scope.flash = stateHolder.flashMessages.list;
33 $scope.flash = stateHolder.flashMessages.list;
34 $scope.closeAlert = stateHolder.flashMessages.closeAlert;
34 $scope.closeAlert = stateHolder.flashMessages.closeAlert;
35 $scope.AeConfig = AeConfig;
35 $scope.AeConfig = AeConfig;
36 }
36 }
1 NO CONTENT: file renamed from frontend/src/templates/components/appenlight-header.html to frontend/src/components/appenlight-header/appenlight-header.html
NO CONTENT: file renamed from frontend/src/templates/components/appenlight-header.html to frontend/src/components/appenlight-header/appenlight-header.html
@@ -1,58 +1,58 b''
1 // # Copyright (C) 2010-2016 RhodeCode GmbH
1 // # Copyright (C) 2010-2016 RhodeCode GmbH
2 // #
2 // #
3 // # This program is free software: you can redistribute it and/or modify
3 // # This program is free software: you can redistribute it and/or modify
4 // # it under the terms of the GNU Affero General Public License, version 3
4 // # it under the terms of the GNU Affero General Public License, version 3
5 // # (only), as published by the Free Software Foundation.
5 // # (only), as published by the Free Software Foundation.
6 // #
6 // #
7 // # This program is distributed in the hope that it will be useful,
7 // # This program is distributed in the hope that it will be useful,
8 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
8 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
9 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 // # GNU General Public License for more details.
10 // # GNU General Public License for more details.
11 // #
11 // #
12 // # You should have received a copy of the GNU Affero General Public License
12 // # You should have received a copy of the GNU Affero General Public License
13 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
13 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
14 // #
14 // #
15 // # This program is dual-licensed. If you wish to learn more about the
15 // # This program is dual-licensed. If you wish to learn more about the
16 // # AppEnlight Enterprise Edition, including its added features, Support
16 // # AppEnlight Enterprise Edition, including its added features, Support
17 // # services, and proprietary license terms, please see
17 // # services, and proprietary license terms, please see
18 // # https://rhodecode.com/licenses/
18 // # https://rhodecode.com/licenses/
19
19
20 angular.module('appenlight.components.appenlightHeader', [])
20 angular.module('appenlight.components.appenlightHeader', [])
21 .component('appenlightHeader', {
21 .component('appenlightHeader', {
22 templateUrl: 'templates/components/appenlight-header.html',
22 templateUrl: 'components/appenlight-header/appenlight-header.html',
23 controller: AppEnlightHeaderController
23 controller: AppEnlightHeaderController
24 });
24 });
25
25
26 ChannelstreamController.$inject = ['$state', 'stateHolder', 'AeConfig'];
26 ChannelstreamController.$inject = ['$state', 'stateHolder', 'AeConfig'];
27
27
28 function AppEnlightHeaderController($state, stateHolder, AeConfig){
28 function AppEnlightHeaderController($state, stateHolder, AeConfig){
29 var vm = this;
29 var vm = this;
30 vm.AeConfig = AeConfig;
30 vm.AeConfig = AeConfig;
31 vm.stateHolder = stateHolder;
31 vm.stateHolder = stateHolder;
32 vm.assignedReports = stateHolder.AeUser.assigned_reports;
32 vm.assignedReports = stateHolder.AeUser.assigned_reports;
33 vm.latestEvents = stateHolder.AeUser.latest_events;
33 vm.latestEvents = stateHolder.AeUser.latest_events;
34 vm.activeEvents = 0;
34 vm.activeEvents = 0;
35 _.each(vm.latestEvents, function (event) {
35 _.each(vm.latestEvents, function (event) {
36 if (event.status === 1 && event.end_date === null) {
36 if (event.status === 1 && event.end_date === null) {
37 vm.activeEvents += 1;
37 vm.activeEvents += 1;
38 }
38 }
39 });
39 });
40
40
41 vm.clickedEvent = function(event){
41 vm.clickedEvent = function(event){
42 // exception reports
42 // exception reports
43 if (_.contains([1,2], event.event_type)){
43 if (_.contains([1,2], event.event_type)){
44 $state.go('report.list', {resource:event.resource_id, start_date:event.start_date});
44 $state.go('report.list', {resource:event.resource_id, start_date:event.start_date});
45 }
45 }
46 // slowness reports
46 // slowness reports
47 else if (_.contains([3,4], event.event_type)){
47 else if (_.contains([3,4], event.event_type)){
48 $state.go('report.list_slow', {resource:event.resource_id, start_date:event.start_date});
48 $state.go('report.list_slow', {resource:event.resource_id, start_date:event.start_date});
49 }
49 }
50 // uptime reports
50 // uptime reports
51 else if (_.contains([7,8], event.event_type)){
51 else if (_.contains([7,8], event.event_type)){
52 $state.go('uptime', {resource:event.resource_id, start_date:event.start_date});
52 $state.go('uptime', {resource:event.resource_id, start_date:event.start_date});
53 }
53 }
54 else{
54 else{
55 console.log('other');
55 console.log('other');
56 }
56 }
57 }
57 }
58 }
58 }
1 NO CONTENT: file renamed from frontend/src/templates/directives/permissions.html to frontend/src/directives/permissions/permissions.html
NO CONTENT: file renamed from frontend/src/templates/directives/permissions.html to frontend/src/directives/permissions/permissions.html
@@ -1,217 +1,217 b''
1 // # Copyright (C) 2010-2016 RhodeCode GmbH
1 // # Copyright (C) 2010-2016 RhodeCode GmbH
2 // #
2 // #
3 // # This program is free software: you can redistribute it and/or modify
3 // # This program is free software: you can redistribute it and/or modify
4 // # it under the terms of the GNU Affero General Public License, version 3
4 // # it under the terms of the GNU Affero General Public License, version 3
5 // # (only), as published by the Free Software Foundation.
5 // # (only), as published by the Free Software Foundation.
6 // #
6 // #
7 // # This program is distributed in the hope that it will be useful,
7 // # This program is distributed in the hope that it will be useful,
8 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
8 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
9 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 // # GNU General Public License for more details.
10 // # GNU General Public License for more details.
11 // #
11 // #
12 // # You should have received a copy of the GNU Affero General Public License
12 // # You should have received a copy of the GNU Affero General Public License
13 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
13 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
14 // #
14 // #
15 // # This program is dual-licensed. If you wish to learn more about the
15 // # This program is dual-licensed. If you wish to learn more about the
16 // # AppEnlight Enterprise Edition, including its added features, Support
16 // # AppEnlight Enterprise Edition, including its added features, Support
17 // # services, and proprietary license terms, please see
17 // # services, and proprietary license terms, please see
18 // # https://rhodecode.com/licenses/
18 // # https://rhodecode.com/licenses/
19
19
20 angular.module('appenlight.controllers')
20 angular.module('appenlight.controllers')
21 .controller('ApplicationPermissionsController', ApplicationPermissionsController);
21 .controller('ApplicationPermissionsController', ApplicationPermissionsController);
22
22
23 ApplicationPermissionsController.$inject = ['sectionViewResource',
23 ApplicationPermissionsController.$inject = ['sectionViewResource',
24 'applicationsPropertyResource', 'groupsResource']
24 'applicationsPropertyResource', 'groupsResource']
25
25
26
26
27 function ApplicationPermissionsController(sectionViewResource, applicationsPropertyResource , groupsResource) {
27 function ApplicationPermissionsController(sectionViewResource, applicationsPropertyResource , groupsResource) {
28 var vm = this;
28 var vm = this;
29 vm.form = {
29 vm.form = {
30 autocompleteUser: '',
30 autocompleteUser: '',
31 selectedGroup: null,
31 selectedGroup: null,
32 selectedUserPermissions: {},
32 selectedUserPermissions: {},
33 selectedGroupPermissions: {}
33 selectedGroupPermissions: {}
34 }
34 }
35 vm.possibleGroups = groupsResource.query(null, function(){
35 vm.possibleGroups = groupsResource.query(null, function(){
36 if (vm.possibleGroups.length > 0){
36 if (vm.possibleGroups.length > 0){
37 vm.form.selectedGroup = vm.possibleGroups[0].id;
37 vm.form.selectedGroup = vm.possibleGroups[0].id;
38 }
38 }
39 });
39 });
40 console.log('g', vm.possibleGroups);
40 console.log('g', vm.possibleGroups);
41 vm.possibleUsers = [];
41 vm.possibleUsers = [];
42 _.each(vm.resource.possible_permissions, function (perm) {
42 _.each(vm.resource.possible_permissions, function (perm) {
43 vm.form.selectedUserPermissions[perm] = false;
43 vm.form.selectedUserPermissions[perm] = false;
44 vm.form.selectedGroupPermissions[perm] = false;
44 vm.form.selectedGroupPermissions[perm] = false;
45 });
45 });
46
46
47 /**
47 /**
48 * Converts the permission list into {user, permission_list objects}
48 * Converts the permission list into {user, permission_list objects}
49 * for rendering in templates
49 * for rendering in templates
50 * **/
50 * **/
51 var tmpObj = {
51 var tmpObj = {
52 user: {},
52 user: {},
53 group: {}
53 group: {}
54 };
54 };
55 _.each(vm.currentPermissions, function (perm) {
55 _.each(vm.currentPermissions, function (perm) {
56 console.log(perm);
56 console.log(perm);
57 if (perm.type == 'user') {
57 if (perm.type == 'user') {
58 if (typeof tmpObj[perm.type][perm.user_name] === 'undefined') {
58 if (typeof tmpObj[perm.type][perm.user_name] === 'undefined') {
59 tmpObj[perm.type][perm.user_name] = {
59 tmpObj[perm.type][perm.user_name] = {
60 self: perm,
60 self: perm,
61 permissions: []
61 permissions: []
62 }
62 }
63 }
63 }
64 if (tmpObj[perm.type][perm.user_name].permissions.indexOf(perm.perm_name) === -1) {
64 if (tmpObj[perm.type][perm.user_name].permissions.indexOf(perm.perm_name) === -1) {
65 tmpObj[perm.type][perm.user_name].permissions.push(perm.perm_name);
65 tmpObj[perm.type][perm.user_name].permissions.push(perm.perm_name);
66 }
66 }
67 }
67 }
68 else {
68 else {
69 if (typeof tmpObj[perm.type][perm.group_name] === 'undefined') {
69 if (typeof tmpObj[perm.type][perm.group_name] === 'undefined') {
70 tmpObj[perm.type][perm.group_name] = {
70 tmpObj[perm.type][perm.group_name] = {
71 self: perm,
71 self: perm,
72 permissions: []
72 permissions: []
73 }
73 }
74 }
74 }
75 if (tmpObj[perm.type][perm.group_name].permissions.indexOf(perm.perm_name) === -1) {
75 if (tmpObj[perm.type][perm.group_name].permissions.indexOf(perm.perm_name) === -1) {
76 tmpObj[perm.type][perm.group_name].permissions.push(perm.perm_name);
76 tmpObj[perm.type][perm.group_name].permissions.push(perm.perm_name);
77 }
77 }
78
78
79 }
79 }
80 });
80 });
81 vm.currentPermissions = {
81 vm.currentPermissions = {
82 user: _.values(tmpObj.user),
82 user: _.values(tmpObj.user),
83 group: _.values(tmpObj.group),
83 group: _.values(tmpObj.group),
84 };
84 };
85
85
86 console.log('test', tmpObj, vm.currentPermissions);
86 console.log('test', tmpObj, vm.currentPermissions);
87
87
88 vm.searchUsers = function (searchPhrase) {
88 vm.searchUsers = function (searchPhrase) {
89 console.log('SEARCHING');
89 console.log('SEARCHING');
90 vm.searchingUsers = true;
90 vm.searchingUsers = true;
91 return sectionViewResource.query({
91 return sectionViewResource.query({
92 section: 'users_section',
92 section: 'users_section',
93 view: 'search_users',
93 view: 'search_users',
94 'user_name': searchPhrase
94 'user_name': searchPhrase
95 }).$promise.then(function (data) {
95 }).$promise.then(function (data) {
96 vm.searchingUsers = false;
96 vm.searchingUsers = false;
97 return _.map(data, function (item) {
97 return _.map(data, function (item) {
98 return item;
98 return item;
99 });
99 });
100 });
100 });
101 };
101 };
102
102
103
103
104 vm.setGroupPermission = function(){
104 vm.setGroupPermission = function(){
105 var POSTObj = {
105 var POSTObj = {
106 'group_id': vm.form.selectedGroup,
106 'group_id': vm.form.selectedGroup,
107 'permissions': []
107 'permissions': []
108 };
108 };
109 for (var key in vm.form.selectedGroupPermissions) {
109 for (var key in vm.form.selectedGroupPermissions) {
110 if (vm.form.selectedGroupPermissions[key]) {
110 if (vm.form.selectedGroupPermissions[key]) {
111 POSTObj.permissions.push(key)
111 POSTObj.permissions.push(key)
112 }
112 }
113 }
113 }
114 applicationsPropertyResource.save({
114 applicationsPropertyResource.save({
115 key: 'group_permissions',
115 key: 'group_permissions',
116 resourceId: vm.resource.resource_id
116 resourceId: vm.resource.resource_id
117 }, POSTObj,
117 }, POSTObj,
118 function (data) {
118 function (data) {
119 var found_row = false;
119 var found_row = false;
120 _.each(vm.currentPermissions.group, function (perm) {
120 _.each(vm.currentPermissions.group, function (perm) {
121 if (perm.self.group_id == data.group.id) {
121 if (perm.self.group_id == data.group.id) {
122 perm['permissions'] = data['permissions'];
122 perm['permissions'] = data['permissions'];
123 found_row = true;
123 found_row = true;
124 }
124 }
125 });
125 });
126 if (!found_row) {
126 if (!found_row) {
127 data.self = data.group;
127 data.self = data.group;
128 // normalize data format
128 // normalize data format
129 data.self.group_id = data.self.id;
129 data.self.group_id = data.self.id;
130 vm.currentPermissions.group.push(data);
130 vm.currentPermissions.group.push(data);
131 }
131 }
132 });
132 });
133
133
134 }
134 }
135
135
136
136
137 vm.setUserPermission = function () {
137 vm.setUserPermission = function () {
138 console.log('set permissions');
138 console.log('set permissions');
139 var POSTObj = {
139 var POSTObj = {
140 'user_name': vm.form.autocompleteUser,
140 'user_name': vm.form.autocompleteUser,
141 'permissions': []
141 'permissions': []
142 };
142 };
143 for (var key in vm.form.selectedUserPermissions) {
143 for (var key in vm.form.selectedUserPermissions) {
144 if (vm.form.selectedUserPermissions[key]) {
144 if (vm.form.selectedUserPermissions[key]) {
145 POSTObj.permissions.push(key)
145 POSTObj.permissions.push(key)
146 }
146 }
147 }
147 }
148 applicationsPropertyResource.save({
148 applicationsPropertyResource.save({
149 key: 'user_permissions',
149 key: 'user_permissions',
150 resourceId: vm.resource.resource_id
150 resourceId: vm.resource.resource_id
151 }, POSTObj,
151 }, POSTObj,
152 function (data) {
152 function (data) {
153 var found_row = false;
153 var found_row = false;
154 _.each(vm.currentPermissions.user, function (perm) {
154 _.each(vm.currentPermissions.user, function (perm) {
155 if (perm.self.user_name == data['user_name']) {
155 if (perm.self.user_name == data['user_name']) {
156 perm['permissions'] = data['permissions'];
156 perm['permissions'] = data['permissions'];
157 found_row = true;
157 found_row = true;
158 }
158 }
159 });
159 });
160 if (!found_row) {
160 if (!found_row) {
161 data.self = data;
161 data.self = data;
162 vm.currentPermissions.user.push(data);
162 vm.currentPermissions.user.push(data);
163 }
163 }
164 });
164 });
165 }
165 }
166
166
167 vm.removeUserPermission = function (perm_name, curr_perm) {
167 vm.removeUserPermission = function (perm_name, curr_perm) {
168 console.log(perm_name);
168 console.log(perm_name);
169 console.log(curr_perm);
169 console.log(curr_perm);
170 var POSTObj = {
170 var POSTObj = {
171 key: 'user_permissions',
171 key: 'user_permissions',
172 user_name: curr_perm.self.user_name,
172 user_name: curr_perm.self.user_name,
173 permissions: [perm_name],
173 permissions: [perm_name],
174 resourceId: vm.resource.resource_id
174 resourceId: vm.resource.resource_id
175 }
175 }
176 applicationsPropertyResource.delete(POSTObj, function (data) {
176 applicationsPropertyResource.delete(POSTObj, function (data) {
177 _.each(vm.currentPermissions.user, function (perm) {
177 _.each(vm.currentPermissions.user, function (perm) {
178 if (perm.self.user_name == data['user_name']) {
178 if (perm.self.user_name == data['user_name']) {
179 perm['permissions'] = data['permissions']
179 perm['permissions'] = data['permissions']
180 }
180 }
181 });
181 });
182 });
182 });
183 }
183 }
184
184
185 vm.removeGroupPermission = function (perm_name, curr_perm) {
185 vm.removeGroupPermission = function (perm_name, curr_perm) {
186 console.log('g', curr_perm);
186 console.log('g', curr_perm);
187 var POSTObj = {
187 var POSTObj = {
188 key: 'group_permissions',
188 key: 'group_permissions',
189 group_id: curr_perm.self.group_id,
189 group_id: curr_perm.self.group_id,
190 permissions: [perm_name],
190 permissions: [perm_name],
191 resourceId: vm.resource.resource_id
191 resourceId: vm.resource.resource_id
192 }
192 }
193 applicationsPropertyResource.delete(POSTObj, function (data) {
193 applicationsPropertyResource.delete(POSTObj, function (data) {
194 _.each(vm.currentPermissions.group, function (perm) {
194 _.each(vm.currentPermissions.group, function (perm) {
195 if (perm.self.group_id == data.group.id) {
195 if (perm.self.group_id == data.group.id) {
196 perm['permissions'] = data['permissions']
196 perm['permissions'] = data['permissions']
197 }
197 }
198 });
198 });
199 });
199 });
200 }
200 }
201 }
201 }
202
202
203 angular.module('appenlight.directives.permissionsForm',[])
203 angular.module('appenlight.directives.permissionsForm',[])
204 .directive('permissionsForm', function () {
204 .directive('permissionsForm', function () {
205 return {
205 return {
206 "restrict": "E",
206 "restrict": "E",
207 "controller": "ApplicationPermissionsController",
207 "controller": "ApplicationPermissionsController",
208 controllerAs: 'permissions',
208 controllerAs: 'permissions',
209 bindToController: true,
209 bindToController: true,
210 scope: {
210 scope: {
211 currentPermissions: '=',
211 currentPermissions: '=',
212 possiblePermissions: '=',
212 possiblePermissions: '=',
213 resource: '='
213 resource: '='
214 },
214 },
215 templateUrl: 'templates/directives/permissions.html'
215 templateUrl: 'directives/permissions/permissions.html'
216 }
216 }
217 })
217 })
1 NO CONTENT: file renamed from frontend/src/templates/directives/plugin_config.html to frontend/src/directives/plugin_config/plugin_config.html
NO CONTENT: file renamed from frontend/src/templates/directives/plugin_config.html to frontend/src/directives/plugin_config/plugin_config.html
@@ -1,40 +1,40 b''
1 // # Copyright (C) 2010-2016 RhodeCode GmbH
1 // # Copyright (C) 2010-2016 RhodeCode GmbH
2 // #
2 // #
3 // # This program is free software: you can redistribute it and/or modify
3 // # This program is free software: you can redistribute it and/or modify
4 // # it under the terms of the GNU Affero General Public License, version 3
4 // # it under the terms of the GNU Affero General Public License, version 3
5 // # (only), as published by the Free Software Foundation.
5 // # (only), as published by the Free Software Foundation.
6 // #
6 // #
7 // # This program is distributed in the hope that it will be useful,
7 // # This program is distributed in the hope that it will be useful,
8 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
8 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
9 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 // # GNU General Public License for more details.
10 // # GNU General Public License for more details.
11 // #
11 // #
12 // # You should have received a copy of the GNU Affero General Public License
12 // # You should have received a copy of the GNU Affero General Public License
13 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
13 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
14 // #
14 // #
15 // # This program is dual-licensed. If you wish to learn more about the
15 // # This program is dual-licensed. If you wish to learn more about the
16 // # AppEnlight Enterprise Edition, including its added features, Support
16 // # AppEnlight Enterprise Edition, including its added features, Support
17 // # services, and proprietary license terms, please see
17 // # services, and proprietary license terms, please see
18 // # https://rhodecode.com/licenses/
18 // # https://rhodecode.com/licenses/
19
19
20 angular.module('appenlight.directives.pluginConfig', []).directive('pluginConfig', function () {
20 angular.module('appenlight.directives.pluginConfig', []).directive('pluginConfig', function () {
21 return {
21 return {
22 scope: {},
22 scope: {},
23 bindToController: {
23 bindToController: {
24 resource: '=',
24 resource: '=',
25 section: '='
25 section: '='
26 },
26 },
27 restrict: 'E',
27 restrict: 'E',
28 templateUrl: 'templates/directives/plugin_config.html',
28 templateUrl: 'directives/plugin_config/plugin_config.html',
29 controller: PluginConfig,
29 controller: PluginConfig,
30 controllerAs: 'plugin_ctrlr'
30 controllerAs: 'plugin_ctrlr'
31 };
31 };
32
32
33 PluginConfig.$inject = ['stateHolder'];
33 PluginConfig.$inject = ['stateHolder'];
34
34
35 function PluginConfig(stateHolder) {
35 function PluginConfig(stateHolder) {
36 var vm = this;
36 var vm = this;
37 vm.plugins = {};
37 vm.plugins = {};
38 vm.inclusions = stateHolder.plugins.inclusions[vm.section];
38 vm.inclusions = stateHolder.plugins.inclusions[vm.section];
39 }
39 }
40 });
40 });
1 NO CONTENT: file renamed from frontend/src/templates/directives/postprocess_action.html to frontend/src/directives/postprocess_action/postprocess_action.html
NO CONTENT: file renamed from frontend/src/templates/directives/postprocess_action.html to frontend/src/directives/postprocess_action/postprocess_action.html
@@ -1,122 +1,122 b''
1 // # Copyright (C) 2010-2016 RhodeCode GmbH
1 // # Copyright (C) 2010-2016 RhodeCode GmbH
2 // #
2 // #
3 // # This program is free software: you can redistribute it and/or modify
3 // # This program is free software: you can redistribute it and/or modify
4 // # it under the terms of the GNU Affero General Public License, version 3
4 // # it under the terms of the GNU Affero General Public License, version 3
5 // # (only), as published by the Free Software Foundation.
5 // # (only), as published by the Free Software Foundation.
6 // #
6 // #
7 // # This program is distributed in the hope that it will be useful,
7 // # This program is distributed in the hope that it will be useful,
8 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
8 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
9 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 // # GNU General Public License for more details.
10 // # GNU General Public License for more details.
11 // #
11 // #
12 // # You should have received a copy of the GNU Affero General Public License
12 // # You should have received a copy of the GNU Affero General Public License
13 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
13 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
14 // #
14 // #
15 // # This program is dual-licensed. If you wish to learn more about the
15 // # This program is dual-licensed. If you wish to learn more about the
16 // # AppEnlight Enterprise Edition, including its added features, Support
16 // # AppEnlight Enterprise Edition, including its added features, Support
17 // # services, and proprietary license terms, please see
17 // # services, and proprietary license terms, please see
18 // # https://rhodecode.com/licenses/
18 // # https://rhodecode.com/licenses/
19
19
20 angular.module('appenlight.directives.postProcessAction', []).directive('postProcessAction', ['applicationsPropertyResource', function (applicationsPropertyResource) {
20 angular.module('appenlight.directives.postProcessAction', []).directive('postProcessAction', ['applicationsPropertyResource', function (applicationsPropertyResource) {
21 return {
21 return {
22 scope: {},
22 scope: {},
23 bindToController:{
23 bindToController:{
24 action: '=',
24 action: '=',
25 resource: '='
25 resource: '='
26 },
26 },
27 controller:postProcessActionController,
27 controller:postProcessActionController,
28 controllerAs:'ctrl',
28 controllerAs:'ctrl',
29 restrict: 'E',
29 restrict: 'E',
30 templateUrl: 'templates/directives/postprocess_action.html'
30 templateUrl: 'directives/postprocess_action/postprocess_action.html'
31 };
31 };
32 function postProcessActionController(){
32 function postProcessActionController(){
33 var vm = this;
33 var vm = this;
34 console.log(vm);
34 console.log(vm);
35 var allOps = {
35 var allOps = {
36 'eq': 'Equal',
36 'eq': 'Equal',
37 'ne': 'Not equal',
37 'ne': 'Not equal',
38 'ge': 'Greater or equal',
38 'ge': 'Greater or equal',
39 'gt': 'Greater than',
39 'gt': 'Greater than',
40 'le': 'Lesser or equal',
40 'le': 'Lesser or equal',
41 'lt': 'Lesser than',
41 'lt': 'Lesser than',
42 'startswith': 'Starts with',
42 'startswith': 'Starts with',
43 'endswith': 'Ends with',
43 'endswith': 'Ends with',
44 'contains': 'Contains'
44 'contains': 'Contains'
45 };
45 };
46
46
47 var fieldOps = {};
47 var fieldOps = {};
48 fieldOps['http_status'] = ['eq', 'ne', 'ge', 'le'];
48 fieldOps['http_status'] = ['eq', 'ne', 'ge', 'le'];
49 fieldOps['group:priority'] = ['eq', 'ne', 'ge', 'le'];
49 fieldOps['group:priority'] = ['eq', 'ne', 'ge', 'le'];
50 fieldOps['duration'] = ['ge', 'le'];
50 fieldOps['duration'] = ['ge', 'le'];
51 fieldOps['url_domain'] = ['eq', 'ne', 'startswith', 'endswith',
51 fieldOps['url_domain'] = ['eq', 'ne', 'startswith', 'endswith',
52 'contains'];
52 'contains'];
53 fieldOps['url_path'] = ['eq', 'ne', 'startswith', 'endswith',
53 fieldOps['url_path'] = ['eq', 'ne', 'startswith', 'endswith',
54 'contains'];
54 'contains'];
55 fieldOps['error'] = ['eq', 'ne', 'startswith', 'endswith',
55 fieldOps['error'] = ['eq', 'ne', 'startswith', 'endswith',
56 'contains'];
56 'contains'];
57 fieldOps['tags:server_name'] = ['eq', 'ne', 'startswith', 'endswith',
57 fieldOps['tags:server_name'] = ['eq', 'ne', 'startswith', 'endswith',
58 'contains'];
58 'contains'];
59 fieldOps['group:occurences'] = ['eq', 'ne', 'ge', 'le'];
59 fieldOps['group:occurences'] = ['eq', 'ne', 'ge', 'le'];
60
60
61 var possibleFields = {
61 var possibleFields = {
62 '__AND__': 'All met (composite rule)',
62 '__AND__': 'All met (composite rule)',
63 '__OR__': 'One met (composite rule)',
63 '__OR__': 'One met (composite rule)',
64 '__NOT__': 'Not met (composite rule)',
64 '__NOT__': 'Not met (composite rule)',
65 'http_status': 'HTTP Status',
65 'http_status': 'HTTP Status',
66 'duration': 'Request duration',
66 'duration': 'Request duration',
67 'group:priority': 'Group -> Priority',
67 'group:priority': 'Group -> Priority',
68 'url_domain': 'Domain',
68 'url_domain': 'Domain',
69 'url_path': 'URL Path',
69 'url_path': 'URL Path',
70 'error': 'Error',
70 'error': 'Error',
71 'tags:server_name': 'Tag -> Server name',
71 'tags:server_name': 'Tag -> Server name',
72 'group:occurences': 'Group -> Occurences'
72 'group:occurences': 'Group -> Occurences'
73 };
73 };
74
74
75 vm.ruleDefinitions = {
75 vm.ruleDefinitions = {
76 fieldOps: fieldOps,
76 fieldOps: fieldOps,
77 allOps: allOps,
77 allOps: allOps,
78 possibleFields: possibleFields
78 possibleFields: possibleFields
79 };
79 };
80
80
81 vm.possibleActions = [
81 vm.possibleActions = [
82 ['1', 'Priority +1'],
82 ['1', 'Priority +1'],
83 ['-1', 'Priority -1']
83 ['-1', 'Priority -1']
84 ];
84 ];
85
85
86 vm.deleteAction = function (action) {
86 vm.deleteAction = function (action) {
87 applicationsPropertyResource.remove({
87 applicationsPropertyResource.remove({
88 pkey: vm.action.pkey,
88 pkey: vm.action.pkey,
89 resourceId: vm.resource.resource_id,
89 resourceId: vm.resource.resource_id,
90 key: 'postprocessing_rules'
90 key: 'postprocessing_rules'
91 }, function () {
91 }, function () {
92 vm.resource.postprocessing_rules.splice(
92 vm.resource.postprocessing_rules.splice(
93 vm.resource.postprocessing_rules.indexOf(action), 1);
93 vm.resource.postprocessing_rules.indexOf(action), 1);
94 });
94 });
95 };
95 };
96
96
97
97
98 vm.saveAction = function () {
98 vm.saveAction = function () {
99 var params = {
99 var params = {
100 'pkey': vm.action.pkey,
100 'pkey': vm.action.pkey,
101 'resourceId': vm.resource.resource_id,
101 'resourceId': vm.resource.resource_id,
102 key: 'postprocessing_rules'
102 key: 'postprocessing_rules'
103 };
103 };
104 applicationsPropertyResource.update(params, vm.action,
104 applicationsPropertyResource.update(params, vm.action,
105 function (data) {
105 function (data) {
106 vm.action.dirty = false;
106 vm.action.dirty = false;
107 vm.errors = [];
107 vm.errors = [];
108 }, function (response) {
108 }, function (response) {
109 if (response.status == 422) {
109 if (response.status == 422) {
110 var errorDict = angular.fromJson(response.data);
110 var errorDict = angular.fromJson(response.data);
111 vm.errors = _.values(errorDict);
111 vm.errors = _.values(errorDict);
112 }
112 }
113 });
113 });
114 };
114 };
115
115
116 vm.setDirty = function() {
116 vm.setDirty = function() {
117 vm.action.dirty = true;
117 vm.action.dirty = true;
118 console.log('set dirty');
118 console.log('set dirty');
119 };
119 };
120 }
120 }
121
121
122 }]);
122 }]);
1 NO CONTENT: file renamed from frontend/src/templates/directives/report_alert_action.html to frontend/src/directives/report_alert_action/report_alert_action.html
NO CONTENT: file renamed from frontend/src/templates/directives/report_alert_action.html to frontend/src/directives/report_alert_action/report_alert_action.html
@@ -1,117 +1,117 b''
1 // # Copyright (C) 2010-2016 RhodeCode GmbH
1 // # Copyright (C) 2010-2016 RhodeCode GmbH
2 // #
2 // #
3 // # This program is free software: you can redistribute it and/or modify
3 // # This program is free software: you can redistribute it and/or modify
4 // # it under the terms of the GNU Affero General Public License, version 3
4 // # it under the terms of the GNU Affero General Public License, version 3
5 // # (only), as published by the Free Software Foundation.
5 // # (only), as published by the Free Software Foundation.
6 // #
6 // #
7 // # This program is distributed in the hope that it will be useful,
7 // # This program is distributed in the hope that it will be useful,
8 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
8 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
9 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 // # GNU General Public License for more details.
10 // # GNU General Public License for more details.
11 // #
11 // #
12 // # You should have received a copy of the GNU Affero General Public License
12 // # You should have received a copy of the GNU Affero General Public License
13 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
13 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
14 // #
14 // #
15 // # This program is dual-licensed. If you wish to learn more about the
15 // # This program is dual-licensed. If you wish to learn more about the
16 // # AppEnlight Enterprise Edition, including its added features, Support
16 // # AppEnlight Enterprise Edition, including its added features, Support
17 // # services, and proprietary license terms, please see
17 // # services, and proprietary license terms, please see
18 // # https://rhodecode.com/licenses/
18 // # https://rhodecode.com/licenses/
19
19
20 angular.module('appenlight.directives.reportAlertAction', []).directive('reportAlertAction', ['userSelfPropertyResource', function (userSelfPropertyResource) {
20 angular.module('appenlight.directives.reportAlertAction', []).directive('reportAlertAction', ['userSelfPropertyResource', function (userSelfPropertyResource) {
21 return {
21 return {
22 scope: {},
22 scope: {},
23 bindToController:{
23 bindToController:{
24 action: '=',
24 action: '=',
25 applications: '=',
25 applications: '=',
26 possibleChannels: '=',
26 possibleChannels: '=',
27 actions: '=',
27 actions: '=',
28 ruleDefinitions: '='
28 ruleDefinitions: '='
29 },
29 },
30 controller:reportAlertActionController,
30 controller:reportAlertActionController,
31 controllerAs:'ctrl',
31 controllerAs:'ctrl',
32 restrict: 'E',
32 restrict: 'E',
33 templateUrl: 'templates/directives/report_alert_action.html'
33 templateUrl: 'directives/report_alert_action/report_alert_action.html'
34 };
34 };
35 function reportAlertActionController(){
35 function reportAlertActionController(){
36 var vm = this;
36 var vm = this;
37 vm.deleteAction = function (actions, action) {
37 vm.deleteAction = function (actions, action) {
38 var get = {
38 var get = {
39 key: 'alert_channels_rules',
39 key: 'alert_channels_rules',
40 pkey: action.pkey
40 pkey: action.pkey
41 };
41 };
42 userSelfPropertyResource.remove(get, function (data) {
42 userSelfPropertyResource.remove(get, function (data) {
43 actions.splice(actions.indexOf(action), 1);
43 actions.splice(actions.indexOf(action), 1);
44 });
44 });
45
45
46 };
46 };
47
47
48 vm.bindChannel = function(){
48 vm.bindChannel = function(){
49 var post = {
49 var post = {
50 channel_pkey: vm.channelToBind.pkey,
50 channel_pkey: vm.channelToBind.pkey,
51 action_pkey: vm.action.pkey
51 action_pkey: vm.action.pkey
52 };
52 };
53 console.log(post);
53 console.log(post);
54 userSelfPropertyResource.save({key: 'alert_channels_actions_binds'}, post,
54 userSelfPropertyResource.save({key: 'alert_channels_actions_binds'}, post,
55 function (data) {
55 function (data) {
56 vm.action.channels = [];
56 vm.action.channels = [];
57 vm.action.channels = data.channels;
57 vm.action.channels = data.channels;
58 }, function (response) {
58 }, function (response) {
59 if (response.status == 422) {
59 if (response.status == 422) {
60 console.log('scope', response);
60 console.log('scope', response);
61 }
61 }
62 });
62 });
63 };
63 };
64
64
65 vm.unBindChannel = function(channel){
65 vm.unBindChannel = function(channel){
66 userSelfPropertyResource.delete({
66 userSelfPropertyResource.delete({
67 key: 'alert_channels_actions_binds',
67 key: 'alert_channels_actions_binds',
68 channel_pkey: channel.pkey,
68 channel_pkey: channel.pkey,
69 action_pkey: vm.action.pkey
69 action_pkey: vm.action.pkey
70 },
70 },
71 function (data) {
71 function (data) {
72 vm.action.channels = [];
72 vm.action.channels = [];
73 vm.action.channels = data.channels;
73 vm.action.channels = data.channels;
74 }, function (response) {
74 }, function (response) {
75 if (response.status == 422) {
75 if (response.status == 422) {
76 console.log('scope', response);
76 console.log('scope', response);
77 }
77 }
78 });
78 });
79 };
79 };
80
80
81 vm.saveAction = function () {
81 vm.saveAction = function () {
82 var params = {
82 var params = {
83 key: 'alert_channels_rules',
83 key: 'alert_channels_rules',
84 pkey: vm.action.pkey
84 pkey: vm.action.pkey
85 };
85 };
86 userSelfPropertyResource.update(params, vm.action,
86 userSelfPropertyResource.update(params, vm.action,
87 function (data) {
87 function (data) {
88 vm.action.dirty = false;
88 vm.action.dirty = false;
89 vm.errors = [];
89 vm.errors = [];
90 }, function (response) {
90 }, function (response) {
91 if (response.status == 422) {
91 if (response.status == 422) {
92 var errorDict = angular.fromJson(response.data);
92 var errorDict = angular.fromJson(response.data);
93 vm.errors = _.values(errorDict);
93 vm.errors = _.values(errorDict);
94 }
94 }
95 });
95 });
96 };
96 };
97
97
98 vm.possibleNotifications = [
98 vm.possibleNotifications = [
99 ['always', 'Always'],
99 ['always', 'Always'],
100 ['only_first', 'Only New'],
100 ['only_first', 'Only New'],
101 ];
101 ];
102
102
103 vm.possibleChannels = _.filter(vm.possibleChannels, function(c){
103 vm.possibleChannels = _.filter(vm.possibleChannels, function(c){
104 return c.supports_report_alerting }
104 return c.supports_report_alerting }
105 );
105 );
106
106
107 if (vm.possibleChannels.length > 0){
107 if (vm.possibleChannels.length > 0){
108 vm.channelToBind = vm.possibleChannels[0];
108 vm.channelToBind = vm.possibleChannels[0];
109 }
109 }
110
110
111 vm.setDirty = function() {
111 vm.setDirty = function() {
112 vm.action.dirty = true;
112 vm.action.dirty = true;
113 console.log('set dirty');
113 console.log('set dirty');
114 };
114 };
115 }
115 }
116
116
117 }]);
117 }]);
1 NO CONTENT: file renamed from frontend/src/templates/directives/rule.html to frontend/src/directives/rule/rule.html
NO CONTENT: file renamed from frontend/src/templates/directives/rule.html to frontend/src/directives/rule/rule.html
@@ -1,86 +1,86 b''
1 // # Copyright (C) 2010-2016 RhodeCode GmbH
1 // # Copyright (C) 2010-2016 RhodeCode GmbH
2 // #
2 // #
3 // # This program is free software: you can redistribute it and/or modify
3 // # This program is free software: you can redistribute it and/or modify
4 // # it under the terms of the GNU Affero General Public License, version 3
4 // # it under the terms of the GNU Affero General Public License, version 3
5 // # (only), as published by the Free Software Foundation.
5 // # (only), as published by the Free Software Foundation.
6 // #
6 // #
7 // # This program is distributed in the hope that it will be useful,
7 // # This program is distributed in the hope that it will be useful,
8 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
8 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
9 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 // # GNU General Public License for more details.
10 // # GNU General Public License for more details.
11 // #
11 // #
12 // # You should have received a copy of the GNU Affero General Public License
12 // # You should have received a copy of the GNU Affero General Public License
13 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
13 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
14 // #
14 // #
15 // # This program is dual-licensed. If you wish to learn more about the
15 // # This program is dual-licensed. If you wish to learn more about the
16 // # AppEnlight Enterprise Edition, including its added features, Support
16 // # AppEnlight Enterprise Edition, including its added features, Support
17 // # services, and proprietary license terms, please see
17 // # services, and proprietary license terms, please see
18 // # https://rhodecode.com/licenses/
18 // # https://rhodecode.com/licenses/
19
19
20 angular.module('appenlight.directives.rule', []).directive('rule', function () {
20 angular.module('appenlight.directives.rule', []).directive('rule', function () {
21 return {
21 return {
22 scope: {},
22 scope: {},
23 bindToController:{
23 bindToController:{
24 parentObj: '=',
24 parentObj: '=',
25 rule: '=',
25 rule: '=',
26 ruleDefinitions: '=',
26 ruleDefinitions: '=',
27 parentRule: "=",
27 parentRule: "=",
28 config: "="
28 config: "="
29 },
29 },
30 restrict: 'E',
30 restrict: 'E',
31 templateUrl: 'templates/directives/rule.html',
31 templateUrl: 'directives/rule/rule.html',
32 controller:RuleController,
32 controller:RuleController,
33 controllerAs:'rule_ctrlr'
33 controllerAs:'rule_ctrlr'
34 };
34 };
35 function RuleController(){
35 function RuleController(){
36 var vm = this;
36 var vm = this;
37
37
38 vm.rule.dirty = false;
38 vm.rule.dirty = false;
39 vm.oldField = vm.rule.field;
39 vm.oldField = vm.rule.field;
40
40
41 vm.add = function () {
41 vm.add = function () {
42 vm.rule.rules.push(
42 vm.rule.rules.push(
43 {op: "eq", field: 'http_status', value: ""}
43 {op: "eq", field: 'http_status', value: ""}
44 );
44 );
45 vm.setDirty();
45 vm.setDirty();
46 };
46 };
47
47
48 vm.setDirty = function() {
48 vm.setDirty = function() {
49 vm.rule.dirty = true;
49 vm.rule.dirty = true;
50 console.log('set dirty');
50 console.log('set dirty');
51 if (vm.parentObj){
51 if (vm.parentObj){
52 console.log('p', vm.parentObj);
52 console.log('p', vm.parentObj);
53 console.log('set parent dirty');
53 console.log('set parent dirty');
54 vm.parentObj.dirty = true;
54 vm.parentObj.dirty = true;
55 }
55 }
56 };
56 };
57
57
58 vm.fieldChange = function () {
58 vm.fieldChange = function () {
59 var compound_types = ['__AND__', '__OR__', '__NOT__'];
59 var compound_types = ['__AND__', '__OR__', '__NOT__'];
60 var new_is_compound = compound_types.indexOf(vm.rule.field) !== -1;
60 var new_is_compound = compound_types.indexOf(vm.rule.field) !== -1;
61 var old_was_compound = compound_types.indexOf(vm.oldField) !== -1;
61 var old_was_compound = compound_types.indexOf(vm.oldField) !== -1;
62
62
63 if (!new_is_compound) {
63 if (!new_is_compound) {
64 vm.rule.op = vm.ruleDefinitions.fieldOps[vm.rule.field][0];
64 vm.rule.op = vm.ruleDefinitions.fieldOps[vm.rule.field][0];
65 }
65 }
66 if ((new_is_compound && !old_was_compound)) {
66 if ((new_is_compound && !old_was_compound)) {
67 console.log('resetting config');
67 console.log('resetting config');
68 delete vm.rule.value;
68 delete vm.rule.value;
69 vm.rule.rules = [];
69 vm.rule.rules = [];
70 vm.add();
70 vm.add();
71 }
71 }
72 else if (!new_is_compound && old_was_compound) {
72 else if (!new_is_compound && old_was_compound) {
73 console.log('resetting config');
73 console.log('resetting config');
74 delete vm.rule.rules;
74 delete vm.rule.rules;
75 vm.rule.value = '';
75 vm.rule.value = '';
76 }
76 }
77 vm.oldField = vm.rule.field;
77 vm.oldField = vm.rule.field;
78 vm.setDirty();
78 vm.setDirty();
79 };
79 };
80
80
81 vm.deleteRule = function (parent, rule) {
81 vm.deleteRule = function (parent, rule) {
82 parent.rules.splice(parent.rules.indexOf(rule), 1);
82 parent.rules.splice(parent.rules.indexOf(rule), 1);
83 vm.setDirty();
83 vm.setDirty();
84 }
84 }
85 }
85 }
86 });
86 });
1 NO CONTENT: file renamed from frontend/src/templates/directives/rule_read_only.html to frontend/src/directives/rule_read_only/rule_read_only.html
NO CONTENT: file renamed from frontend/src/templates/directives/rule_read_only.html to frontend/src/directives/rule_read_only/rule_read_only.html
@@ -1,43 +1,43 b''
1 // # Copyright (C) 2010-2016 RhodeCode GmbH
1 // # Copyright (C) 2010-2016 RhodeCode GmbH
2 // #
2 // #
3 // # This program is free software: you can redistribute it and/or modify
3 // # This program is free software: you can redistribute it and/or modify
4 // # it under the terms of the GNU Affero General Public License, version 3
4 // # it under the terms of the GNU Affero General Public License, version 3
5 // # (only), as published by the Free Software Foundation.
5 // # (only), as published by the Free Software Foundation.
6 // #
6 // #
7 // # This program is distributed in the hope that it will be useful,
7 // # This program is distributed in the hope that it will be useful,
8 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
8 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
9 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 // # GNU General Public License for more details.
10 // # GNU General Public License for more details.
11 // #
11 // #
12 // # You should have received a copy of the GNU Affero General Public License
12 // # You should have received a copy of the GNU Affero General Public License
13 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
13 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
14 // #
14 // #
15 // # This program is dual-licensed. If you wish to learn more about the
15 // # This program is dual-licensed. If you wish to learn more about the
16 // # AppEnlight Enterprise Edition, including its added features, Support
16 // # AppEnlight Enterprise Edition, including its added features, Support
17 // # services, and proprietary license terms, please see
17 // # services, and proprietary license terms, please see
18 // # https://rhodecode.com/licenses/
18 // # https://rhodecode.com/licenses/
19
19
20 angular.module('appenlight.directives.ruleReadOnly', []).directive('ruleReadOnly', ['userSelfPropertyResource', function (userSelfPropertyResource) {
20 angular.module('appenlight.directives.ruleReadOnly', []).directive('ruleReadOnly', ['userSelfPropertyResource', function (userSelfPropertyResource) {
21 return {
21 return {
22 scope: {},
22 scope: {},
23 bindToController:{
23 bindToController:{
24 parentObj: '=',
24 parentObj: '=',
25 rule: '=',
25 rule: '=',
26 ruleDefinitions: '=',
26 ruleDefinitions: '=',
27 parentRule: "=",
27 parentRule: "=",
28 config: "="
28 config: "="
29 },
29 },
30 restrict: 'E',
30 restrict: 'E',
31 templateUrl: 'templates/directives/rule_read_only.html',
31 templateUrl: 'directives/rule_read_only/rule_read_only.html',
32 controller:RuleController,
32 controller:RuleController,
33 controllerAs:'rule_ctrlr'
33 controllerAs:'rule_ctrlr'
34 }
34 }
35 function RuleController(){
35 function RuleController(){
36 var vm = this;
36 var vm = this;
37 vm.readOnlyPossibleFields = {};
37 vm.readOnlyPossibleFields = {};
38 var labelPairs = _.pairs(vm.parentObj.config);
38 var labelPairs = _.pairs(vm.parentObj.config);
39 _.each(labelPairs, function (entry) {
39 _.each(labelPairs, function (entry) {
40 vm.readOnlyPossibleFields[entry[0]] = entry[1].human_label;
40 vm.readOnlyPossibleFields[entry[0]] = entry[1].human_label;
41 });
41 });
42 }
42 }
43 }]);
43 }]);
@@ -1,25 +0,0 b''
1 // # Copyright (C) 2010-2016 RhodeCode GmbH
2 // #
3 // # This program is free software: you can redistribute it and/or modify
4 // # it under the terms of the GNU Affero General Public License, version 3
5 // # (only), as published by the Free Software Foundation.
6 // #
7 // # This program is distributed in the hope that it will be useful,
8 // # but WITHOUT ANY WARRANTY; without even the implied warranty of
9 // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 // # GNU General Public License for more details.
11 // #
12 // # You should have received a copy of the GNU Affero General Public License
13 // # along with this program. If not, see <http://www.gnu.org/licenses/>.
14 // #
15 // # This program is dual-licensed. If you wish to learn more about the
16 // # AppEnlight Enterprise Edition, including its added features, Support
17 // # services, and proprietary license terms, please see
18 // # https://rhodecode.com/licenses/
19
20 angular.module('appenlight.directives.appVersion', []).
21 directive('appVersion', ['version', function (version) {
22 return function (scope, elm, attrs) {
23 elm.text(version);
24 };
25 }])
General Comments 0
You need to be logged in to leave comments. Login now