Ultimate CSV Importer - Version 3.8.4

Version Description

Download this release

Release Info

Developer smackcoders
Plugin Icon 128x128 Ultimate CSV Importer
Version 3.8.4
Comparing to
See all releases

Code changes from version 3.8.3 to 3.8.4

README.md ADDED
@@ -0,0 +1,641 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ## Import CSV with Ultimate CSV Importer ##
2
+ **Contributors:** smackcoders
3
+
4
+ **Donate link:** http://www.smackcoders.com/donate.html
5
+
6
+ **Tags:** admin, administration, author, automatic, blog, categories, category, cms, contact, content, custom, custom post, dashboard, database, e-commerce, ecommerce, edit, event, events, feed, Formatting, free, gallery, image, images, import, integration, language, link, links, list, marketing, media, menu, meta, mobile, multisite, navigation, News, page, pages, performance, photo, photos, picture, pictures, plugin, plugins, Post, posts, profile, registration, rss, seo, Share, sharing, shop, shortcode, shortcodes, statistics, stats, store, tag, tags, Taxonomy, template, text, thumbnail, thumbnails, title, upload, url, user, users, video, woocommerce, wordpress, wpmu, xml, youtube.
7
+
8
+ **Requires at least:** 4.2
9
+
10
+ **Tested up to:** 4.3.1
11
+
12
+ **Stable tag:** 3.8.3
13
+
14
+ **Version:** 3.8.3
15
+
16
+ **Author:** smackcoders
17
+
18
+ **Author URI:** http://profiles.wordpress.org/smackcoders/
19
+
20
+ **License:** GPLv2 or later
21
+
22
+ Import CSV with CSV Importer made simple to import & export posts, pages, custom posts and custom fields in few simple clicks
23
+
24
+ #### Description ####
25
+
26
+ Import CSV data to WordPress is made very easy even for novice users as in few clicks and 3 simple steps with CSV Importer plugin.
27
+
28
+ Now csv importer supports multi language and almost every WordPress modules and plugin fields as follows. Import data feed periodically from csv file as
29
+
30
+ #### Supported Core Modules and Attributes ####
31
+ * Post
32
+ * Page
33
+ * Featured image support
34
+ * Post inline image handling
35
+ * Standard WP Custom Post types
36
+ * WordPress themes custom posts
37
+ * Custom post type UI plugin Post types
38
+ * Users with roles
39
+ * Comments
40
+ * Custom Fields
41
+ * Author
42
+ * Tags import and multi tag for each post import
43
+ * Categories import and multi category for each post
44
+ * Eshop
45
+ * All-in-one SEO
46
+
47
+ #### Highlights of 3.8 ####
48
+ * Multilanguage support (fr_FR,es_ES,nl_NL)
49
+ * Inline image handling shortcode with image attributes Example:[WPIMPINLINE:greensroad.jpg|width='150'|height='80'|alt='post_title_redtree']
50
+ * Fixed user reported Warnings and Bugs
51
+ * Any delimiter support for csv export
52
+
53
+ Note: Now you can import no. of images in in-line post content as image shortcodes using advanced media handling option as zip files.
54
+
55
+ #### CSV Importer ####
56
+
57
+ WP Ultimate CSV Importer Plugin proven much effective advanced CSV Importer With Ultimate User Friendly Features. It is much easy now even for newbies to import csv file exported from any tool, app or software. Import as any WordPress post type and associated fields by simple mapping feature. Now import any CSV file as thousands of post, page and custom post types. This is admin side free plugin helps you in bulk edit, create and import posts type for your blog or site.
58
+
59
+ It is more easy to import csv database maintained in Excel xls or spread sheets into valuable content for your web site without missing any. It is possible now to schedule a import csv periodically for content update, maintenance, prices, offers, coupons and inventory etc.
60
+
61
+ Much improved User interface with most flexible jquery plugin features and bootstrap UI design makes csv import more simple, easy, fast and even more flexible for better user experience. With improved Multi site, buddy press compatibility (except user import module) works well for most of the best WordPress themes available online. Now manage multi site & buddy press, Amazon data import, affiliates blog, product inventory, ecommerce store, multi author blog, automatic news import, photo blog etc periodically with simple click import.
62
+
63
+ #### Helpful Links ####
64
+
65
+ [Get More Details Here>>](https://www.smackcoders.com/wp-ultimate-csv-importer-pro.html?utm_source=WpOrg&utm_medium=Readme&utm_campaign=ListingTraffic)
66
+
67
+ [Test Drive Our Live Demo](http://demo.smackcoders.com/demowpthree/wp-admin/admin.php?page=wp-ultimate-csv-importer-pro/index.php&__module=dashboard?utm_source=WpOrg&utm_medium=Readme&utm_campaign=ListingTraffic)
68
+
69
+ [Get Started Sample CSV Files](https://www.smackcoders.com/blog/wordpress-ultimate-csv-importer-csv-sample-files-and-updates.html?utm_source=WpOrg&utm_medium=Readme&utm_campaign=ListingTraffic)
70
+
71
+ [Documentation and Tutorial for CSV Importer ](https://www.smackcoders.com/documentation/ultimate-csv-importer-pro?utm_source=WpOrg&utm_medium=Readme&utm_campaign=ListingTraffic)
72
+
73
+
74
+ #### Video Walkthrough ####
75
+ [![Demo CountPages alpha](https://i.ytimg.com/vi/Guv5zR7fgW0/sddefault.jpg)](https://www.youtube.com/watch?v=Guv5zR7fgW0&list=PL2k3Ck1bFtbQqFhOK7g08kxENI4qQkmC)
76
+
77
+ #### Highlights ####
78
+ * import csv from any source as WordPress posts
79
+ * New Terminate & Continue feature is added.
80
+ * Complete export feature with improved filters
81
+ * Import external/internal images in line to any posts
82
+ * Upload images related to each csv
83
+ * Auto delimiter
84
+ * Auto UTF-8 handling
85
+ * All-in-SEO import support.
86
+ * Drag drop import
87
+ * Define any type of post
88
+ * Control post status (Publish, Private, Pending, Draft, Sticky and Protected)
89
+ * Simple yet Powerful mapping feature
90
+ * Convert any csv import as perfect posts and fields
91
+ * Scheduled Publishing
92
+ * Duplicate Title and content handling
93
+ * Multi Lingual import (CSV format must be UTF-8 without BOM)
94
+ * Multi-site also supported now
95
+ * Compatible to WordPress themes
96
+ * Better alternative for xml
97
+ * Post Format option added
98
+ * Page template attribute feature
99
+ * EShop Products import (included from V3.6.3)
100
+
101
+ #### Power Import Features to Control your csv import ####
102
+ * Post title, content and even excerpt
103
+ * Text, WYSIWYG/HTML, in line CSS in post content
104
+ * Images, Youtube, Videos in post content
105
+ * Featured image by Url
106
+ * Multi authors
107
+ * Multiple tags and categories
108
+ * Non existing tags and categories are created automatically
109
+ * Any Short Codes in post content
110
+ * Assign sidebar widget, slider, slide show as short codes
111
+ * Manual slug feature for SEO friendly urls
112
+ * Different post status for each post in CSV file.
113
+ * Custom fields support for WP standard
114
+ * Map custom fields by adding new on the fly.
115
+
116
+ #### Imp. Notes ####
117
+ * All CSV files should be should be strictly UTF-8 CSV format. Now this can be handled by plugin.
118
+ * All WordPress supported languages can imported with csv format as UTF-8 without BOM (See FAQ for instructions).
119
+ * User import option is disabled for multi site mode.
120
+ * To Schedule posts for publishing provide future date and time in date column in CSV File.
121
+
122
+ #### Featured Image Support ####
123
+ Your WordPress theme should support featured image. If not, please add the following code to where you need to display. E.g)wp-contents/themes/header.php
124
+
125
+ `<?php add_theme_support( 'post-thumbnails' ); ?>`
126
+
127
+ #### Pro Features ####
128
+ * Advanced Features
129
+ * Multi language Support
130
+ * Woocommerce Support with woocommerce_products, woocommerce_variations, woocommerce_refunds, woocommerce_orders, woocommerce_coupons
131
+ * Market press
132
+ * ACF, TYPES, PODS, CCTM Custom Fields
133
+ * Advanced Export with Delimiter and Filters
134
+ * Advanced Media Handling
135
+ * Schedule Imports
136
+ * Dashboard, CSV Manager and Custom Mapping Templates
137
+ * DB Optimizer, System status etc.
138
+
139
+ Compare Free Vs Pro [Features](https://www.wpultimatecsvimporter.com/wp-ultimate-csv-importer-plugin?utm_source=WpOrg&utm_medium=Readme&utm_campaign=ListingTraffic)>>
140
+ Learn More from [User Manual](https://www.wpultimatecsvimporter.com/documentation?utm_source=WpOrg&utm_medium=Readme&utm_campaign=ListingTraffic)>>
141
+
142
+
143
+ #### Common Issues ####
144
+
145
+ How to solve auto_prepend_file and auto_append_file error?
146
+
147
+ Check your phpinfo.php. Ensure that auto_prepend_file and auto_append_file options are disabled. If not you can disable it in php.ini settings file your self. You can also do it by a .htaccess file
148
+
149
+ Create an .htaccess file in root and set the following values.
150
+ php_value auto_prepend_file none
151
+ php_value auto_append_file none
152
+
153
+ This will solve your issue or get support from hosting if you dint have sufficient permission.
154
+
155
+ Also you can follow the instructions as given here
156
+
157
+ * [http://codex.wordpress.org/Function_Reference/the_post_thumbnail](http://codex.wordpress.org/Function_Reference/the_post_thumbnail)
158
+ * [http://codex.wordpress.org/Post_Thumbnails](http://codex.wordpress.org/Post_Thumbnails)
159
+ * [http://wordpress.org/support/topic/featured-image-not-showing-7?replies=5](http://wordpress.org/support/topic/featured-image-not-showing-7?replies=5)
160
+
161
+
162
+ #### Extended Pro Power Features in WP Ultimate CSV Importer ####
163
+ * Types Plugin support
164
+ * Woocommerce CSV importer with product variation
165
+ * Marketpress Lite Importer
166
+ * WP Members Importer
167
+ * WP Customer Reviews Importer
168
+ * Auto Schedule all your Imports
169
+ * Save mapping as Templates for reuse
170
+ * Auto Mapping Feature
171
+ * Strict UTF-8 auto conversion
172
+ * All In One SEO Fields Import
173
+ * WordPress SEO by Yoast Fields Import
174
+ * Custom Post Type UI plugin import
175
+ * Advanced Custom Fields Import
176
+ * CCTM Posts and Fields Import
177
+ * Woocommerce CSV Importer,
178
+ * WP ecommerce Products CSV Importer with WP e-Commerce Custom Fields
179
+ * Categories & tags Import with Category icons plugin support
180
+ * Custom Taxonomy import
181
+
182
+ #### And we thank @respectyoda, @alantygel and @James Golovich for their wonderful support to us. ####
183
+
184
+ #### Installation ####
185
+
186
+ * [Step By Step Installation with Snaps](https://www.wpultimatecsvimporter.com/documentation/all-import/user-guide/simple-step-by-step-user-guide/?utm_source=WpOrg&utm_medium=Readme&utm_campaign=ListingTraffic)
187
+
188
+
189
+ #### Screenshots ####
190
+
191
+ 1. New Interactive Dashboard with Chart and Graph
192
+ 2. Advanced CSV Importer With Ultimate User Friendly Features with drag and drop etc.
193
+ 3. User friendly easy mapping for any csv file data to WordPress field attributes with sampling.
194
+ 4. Advanced duplicate post name and content check with server request control for high performance factor.
195
+ 5. Detailed real time log to know pinpoint status.
196
+ 6. Module based environment for easy and reduced interface to enable most required modules and when ever needed.
197
+ 7. Inbuilt support form for easy feedback, support, feature request with all useful links for easy and better csv import.
198
+ 8. New export module for posts, page, eshop, users, comments and all custom posts type plugins.
199
+
200
+
201
+ #### Frequently Asked Questions ####
202
+
203
+ How to solve auto_prepend_file and auto_append_file error?
204
+
205
+ Check your phpinfo.php. Ensure that auto_prepend_file and auto_append_file options are disabled. If not you can disable it in php.ini settings file your self. You can also do it by a .htaccess file
206
+
207
+ Create an .htaccess file in root and set the following values.
208
+ php_value auto_prepend_file none
209
+ php_value auto_append_file none
210
+
211
+ This will solve your issue or get support from hosting if you dint have sufficient permission.
212
+
213
+ [Click Here for More Details](https://www.wpultimatecsvimporter.com/documentation/all-import/user-guide/simple-step-by-step-user-guide/?utm_source=WpOrg&utm_medium=Readme&utm_campaign=ListingTraffic)
214
+
215
+ #### Changelog ####
216
+
217
+ **3.8.3**
218
+ * Fixed : Text domain is added for language translation system.
219
+ * Fixed : Bugs fixed for detecting duplicate post content and title option.
220
+
221
+ **3.8.2**
222
+ * Fixed : Wordpress 4.3.1 compatibility added.
223
+ * Fixed : Dashboard entry issue fix.
224
+ * Fixed : Featured image filename with empty space import issue fix.
225
+ * Fixed : Duplicate featured images on import fixed.
226
+ * Fixed : Core custom Field mapping group added
227
+
228
+ **3.8.1**
229
+ * Fixed : WordPress 4.2.3 and 4.2.4 compatibility checked.
230
+ * Fixed : Fixed the unwanted warnings in all files.
231
+ * Fixed : XSS vulnerability.
232
+ * Fixed : Removed the ../../../../../../wp-load.php and used the wordpress ajax call.
233
+ * Fixed : Removed the wp-content that are directly used in some files.
234
+ * Added : Checked the ABSPATH in each file.
235
+ * Added : Comments are exported by specific date and author option.
236
+
237
+ **3.8**
238
+ * Multilanguage support (fr_FR,es_ES,nl_NL)
239
+ * Inline image handling shortcode with image attributes
240
+ * Warnings and bugs Fixes
241
+ * Any delimiter support for csv export
242
+
243
+ **3.7.4**
244
+ * Fixed : Allow Editor/Author to import.(Multisite also).
245
+ * Added : WordPress 4.2.2 compatibility.
246
+
247
+ **3.7.3**
248
+ * Fixed: Vulnerablility security issue fix.
249
+
250
+ **3.7.2**
251
+ * Added: WordPress 4.2 and 4.2.1 compatibility.
252
+ * Fixed: Blank page conflict issue
253
+
254
+ **3.7.1**
255
+ * Added: Security fix for curl.
256
+ * Added: Security fix for session status.
257
+
258
+ **3.7**
259
+ * Fixed: Featured image hotlink issue.
260
+
261
+ **3.6.78**
262
+ * Added: Hot security fix in readfile.php. ( Thanks - @James Golovich )
263
+
264
+ **3.6.77**
265
+ * Added: WordPress 4.1.1 compatibility checked.
266
+ * Improved: Inline image import feature. Added recursive method to assign the image.
267
+ * Fixed: Featured image naming issue. [Solved](https://wordpress.org/support/topic/problem-in-import-with-the-image-name)
268
+ * Fixed: Removed unwanted warnings.
269
+
270
+ **3.6.76**
271
+ * Improved: Post Format.
272
+ * Fixed: Export eshop data issue.
273
+ * Fixed: Import with image name issue.
274
+ * Fixed: Groups plugin conflict.
275
+
276
+ **3.6.75**
277
+ * Added: Terminate & Continue option in import section.
278
+ * Improved: Log section. Issue fixed in Web View & Admin View.
279
+ * Fixed: Security fix for export module.
280
+
281
+ **3.6.74**
282
+ * Added: Security fix.
283
+
284
+ **3.6.73**
285
+ * Added: WordPress 4.0 compatibility checked.
286
+ * Added: https format support for all WP instances.
287
+ * Added: Warning to guide user to create uploads directory with writeable permissions.
288
+ * Fixed: Image handling issues in featured image.
289
+ * Fixed: Multisite compatible issue.
290
+ * Removed: Post Content field mandatory option.
291
+ * Removed: All console warnings.
292
+ * Improved: Details added in security and performance tab under settings module.
293
+
294
+ **3.6.72**
295
+ * Added: Debug mode enable/disable options.
296
+ * Modified: Menu order changes.
297
+
298
+ **3.6.71**
299
+ * Minor bug fixed
300
+
301
+ **3.6.7**
302
+ * Added: Export features for all missing modules.
303
+ * Fixed: All console warnings and reported logs.
304
+
305
+ **3.6.6**
306
+ * Dashboard chart issue fixed for multi site.
307
+ * UI improvements along with easy usability.
308
+ * Fixed Groups plugin conflicts
309
+
310
+ **3.6.5**
311
+ * Added in line image support with advance media handling
312
+ * PDO check added
313
+
314
+ **3.6.4**
315
+ * Added: Advanced export features with filter options.
316
+ * Improved: Advanced log section.
317
+ * Fixed reported jquery issues.
318
+ * WordPress 4.0 compatibility checked.
319
+
320
+ **3.6.3**
321
+ * Added: Eshop import support.
322
+ * Fixed reported conflicts with other plugins.
323
+ * WordPress 3.9.2 compatibility checked.
324
+
325
+ **3.6.2**
326
+ * Hot security fix added.
327
+
328
+ **3.6.1**
329
+ * Multi-site support issue fixed
330
+ * Duplicate import issue fixed
331
+ * Security issue fixed
332
+
333
+ **3.6**
334
+ * New interactive graphs and charts in plugin dashboard
335
+ * New Admin dashboard widgets
336
+ * Added Users and comments export feature
337
+ * Auto delimiter handling
338
+ * Auto mapping feature
339
+ * Now allow authors to access import features
340
+
341
+ **3.5.5**
342
+ * post_format attribute support added
343
+ * page_template attribute added
344
+ * update_post_meta added for duplicate meta issue (Thanks to @alantygel)
345
+ * Type error issue in jQuery fixed
346
+
347
+ **3.5.4**
348
+ * Added: All-in-SEO import support.
349
+ * WordPress 3.9.1 compatibility added.
350
+
351
+ **3.5.3**
352
+ * Added: Compatible up to WordPress 3.9.
353
+ * Added: Export feature added for posts, page, custom posts type plugins.
354
+ * Improved: Removed all warnings.
355
+ * Fixed reported bugs
356
+
357
+ **3.5.2**
358
+ * Import posts with author names as numerical apart from User ID
359
+ * Added menu_order attribute import
360
+ * Added Auto image rename option
361
+ * Option to cancel an partial import at middle
362
+ * Improved image handling even special characters in Url
363
+ * Import can handle image urls without any extensions
364
+ * User reported bugs fixed
365
+
366
+ **3.5.1**
367
+ * User reported issue fixes
368
+ * Activation and other plugin conflict issue solved like Jet pack
369
+ * Admin UI freezing issues - screen option, Help links issues fixed.
370
+ * WYSIWIG editor UI issue fixed.
371
+
372
+ **3.5.0**
373
+ * Combined major release version of 3.5 and 3.4
374
+ * Improved MVC structure.
375
+ * Improved User interface with drag and drop feature.
376
+ * Improved: WordPress 3.8.1 compatibility added.
377
+ * Module based system allows simplify UI
378
+ * Added: Detailed log feature added.
379
+ * Added: Support and Useful links added.
380
+ * Added: Support made easy now from plugin.
381
+
382
+ **3.3.1**
383
+ * Added: Multi site compatibility except User import.
384
+ * Added: Comments, Users modules mandatory fields validation added.
385
+ * Improved: Removed unwanted warnings.
386
+
387
+ **3.3.0**
388
+ * Added: WordPress 3.8 compatibility.
389
+ * Added: Bulk users with role import feature.
390
+ * Added: Comments import feature with relevant post ids.
391
+
392
+ **3.2.3**
393
+ * Added: WordPress 3.7.1 compatibility added.
394
+ * Added: Different media path support added.
395
+ * Added: Sub folder installations support added.
396
+ * Improved: Updated plugin directory path.
397
+ * Improved: Removed unwanted warnings.
398
+ * Improved: Performance check.
399
+
400
+ **3.2.2**
401
+ * Added: WordPress 3.6.1 compatibility added.
402
+ * Added: Mapping UI improved with on select dynamic update feature
403
+ * Added: Help content added
404
+ * Fixed: Post slug issue fixed and tested for 3.6 and 3.6.1
405
+
406
+ **3.2.1**
407
+ * Improved: Performance improvements on SQL and CSV parsing
408
+ * Fixed: Plugin deactivation issue fixed and updated the code.
409
+ * Fixed: Links in the cells makes problems with the "quote"
410
+ * Fixed: Loading content from more than one column
411
+ * Fixed: Custom Post type issues fixed
412
+
413
+ **3.2.0**
414
+ * Improved: User interface improvements
415
+ * Improved:WordPress 3.6 compatibility added, Much Improved UI.
416
+ * Fixed: Featured image issues fixed for WordPress-3.6.
417
+
418
+ **3.1.0**
419
+ * Improved: Much Improved Featured Image feature
420
+ * Fixed: Image url for featured image issues fixed
421
+ * Fixed: PHP 5.4 upgrade fix
422
+
423
+ **3.0.0**
424
+ * Added: Category in numericals are restricted and skipped to Uncategorized
425
+ * Added: Now password should be mentioned as {password}
426
+ * Added: Post authors can be User ID or name
427
+ * Improved: Much improved work flow
428
+ * Improved: Add custom field option improved.
429
+ * Improved: Date format handling improved
430
+ * Improved: Any Date format is supported now
431
+ * Improved: Future scheduling and status improved
432
+ * Improved: Can apply post status for individual post via csv itself
433
+ * Improved: Featured image handling improved and fixed. More improvement are scheduled.
434
+ * Improved: Duplicate check options improved for both title and content option.
435
+ * Improved: Post author issue fixed and improved
436
+ * Improved: Wrong user id or name are automatically assigned under admin
437
+ * Improved: Multi category and tags improved
438
+ * Fixed: Custom Field mapping and import fixed
439
+ * Fixed: Overall Status option improved and issue fixed
440
+ * Fixed: Password field fixed for Protected
441
+ * Fixed: Status as in CSV option improved and fixed
442
+
443
+ **2.7.0**
444
+ * Added: Added more post status options
445
+ * Added: Publish, Sticky, Private, Draft and Pending Status for whole import
446
+ * Added: Protected status with a common password option added
447
+ * Added: "Status as in CSV" to assign status for individual post through CSV as ID or Field Tag
448
+ * Added: User ID and User Name support for Post author feature added
449
+ * Added: In case of missing or false IDs post assigned to admin as draft
450
+ * Added: Add Custom Field Text box auto-filled with CSV header tag.
451
+ * Added: Duplicate detection for post content and post title added as options.
452
+ * Added: User can choose either one or both to avoid duplicate issues.
453
+ * Improved: 6 Standard date format added as drop down to choose.
454
+ * Improved: Renamed post_name as post_slug to avoid confusion
455
+ * Improved: Mapping Fields
456
+ * Improved: Field tags are formatted to support auto mapping option (next milestone)
457
+ * Improved: Listed custom fields with prefix as CF: Name for easy identification.
458
+ * Fixed: Date format conflict at import fixed.
459
+
460
+ **2.6.0**
461
+ * Fixed: Major Bug fixed
462
+ * Fixed: Added UTF-8 support.
463
+ * Fixed: Fixed Html tag conflicts.
464
+
465
+ **2.5.0**
466
+ * Major issues fixed and updated to WordPress-3.5.1 compatibility.
467
+
468
+ **2.0.1**
469
+ * Update to WordPress-3.5 compatibility.
470
+
471
+ **2.0.0**
472
+ * WPDEBUG errors fixed. CSV import folder changed to WP native uploads folder.
473
+
474
+ **1.1.1**
475
+ * Renamed the mapping field attachment as featured_image and category as post_category.
476
+
477
+ **1.1.0**
478
+ * Added featured image import feature along with post/page/custom post.
479
+
480
+ **1.0.2**
481
+ * Bug fixed to recognize the trimmed trailing space in the CSV file
482
+ * Added validation for the duplicate field mapping.
483
+
484
+ **1.0.1**
485
+ * Added features to import multiple tags and categories with different delimiters.
486
+
487
+ **1.0.0**
488
+ * Initial release version. Tested and found works well without any issues.
489
+
490
+
491
+
492
+ #### Upgrade Notice ####
493
+
494
+ **3.8.3**
495
+ * Upgrade now for improvements in multi language translation.
496
+
497
+ **3.8.2**
498
+ * Upgrade now for more improvements.
499
+
500
+ **3.8.1**
501
+ * Upgrade now for ABSPATH used in all files and also fixed all the warnings,bugs.
502
+
503
+ **3.8**
504
+ * Upgrade now for Multi language support and bug fixes
505
+
506
+ **3.7.4**
507
+ * Upgrade now for allow author/editor to import fix.
508
+
509
+ **3.7.3**
510
+ * Upgrade now for Vulnerability fix.
511
+
512
+ **3.7.2**
513
+ * Important Upgrade for wordpress 4.2 and above
514
+
515
+ **3.7.1**
516
+ * Upgrade now for security fix.
517
+
518
+ **3.7**
519
+ * Upgrade now for minor bug fixes.
520
+
521
+ **3.6.78**
522
+ * Upgrade now for security fix.
523
+
524
+ **3.6.77**
525
+ * Upgrade now for WordPress 4.1.1 compatibility and minor bug fixes.
526
+
527
+ **3.6.76**
528
+ * Upgrade now for more bug fixes.
529
+
530
+ **3.6.75**
531
+ * Upgrade now for improved experience.
532
+
533
+ **3.6.74**
534
+ * Upgrade now for security fix.
535
+
536
+ **3.6.73**
537
+ * Upgrade now for WordPress 4.0 compatibility and minor bug fixes.
538
+
539
+ **3.6.72**
540
+ * Upgrade to enable/disable debug mode in settings.
541
+
542
+ **3.6.71**
543
+ * Upgrade now for complete export features as in Pro with bug fix.
544
+
545
+ **3.6.7**
546
+ * Upgrade now for complete export features as in Pro.
547
+
548
+ **3.6.6**
549
+ * Upgrade now for improved experience.
550
+
551
+ **3.6.5**
552
+ * Upgrade Now for advanced media handling for post in line images
553
+
554
+ **3.6.4**
555
+ * Upgrade Now for filtered export and improved log features.
556
+
557
+ **3.6.3**
558
+ * Upgrade now for Eshop product import feature.
559
+
560
+ **3.6.2**
561
+ * Important Security Update
562
+
563
+ **3.6.1**
564
+ * Important issue fixes update
565
+
566
+ **3.6**
567
+ * Must upgrade with major values added features
568
+
569
+ **3.5.5**
570
+ * Upgrade for minor bug fix, conflicts and new attribute support.
571
+
572
+ **3.5.4**
573
+ * Upgrade now for All-in-SEO import support.
574
+
575
+ **3.5.3**
576
+ * Upgrade for added export feature and bug fixes
577
+
578
+ **3.5.2**
579
+ * Upgrade for bug free version and improved image handling
580
+
581
+ **3.5.1**
582
+ * Must upgrade now for 3.5 bug fixes
583
+
584
+ **3.5.0**
585
+ * Upgrade now for major release 3.5. Note - Old version files need to be deleted.
586
+
587
+ **3.3.1**
588
+ * Upgrade now for multi site compatibility.
589
+
590
+ **3.3.0**
591
+ * Upgrade now for WP 3.8 compatibility and added bulk user,comments feature.
592
+
593
+ **3.2.3**
594
+ * Upgrade for WordPress 3.7.1 compatibility and minor bug fixes
595
+
596
+ **3.2.2**
597
+ * WordPress 3.6.1 compatible, bug fix and UI improvements
598
+
599
+ **3.2.1**
600
+ * Performance improvements on SQL and CSV parsing
601
+
602
+ **3.2.0**
603
+ * Now compatible with 3.6 and improved featured image
604
+
605
+ **3.1.0**
606
+ * Now Much Improved Featured Image and url handling
607
+
608
+ **3.0.0**
609
+ * Must upgrade to have Major improvements, performance fixes and issue fixes
610
+
611
+ **2.7.0**
612
+ * Major improvements and feature changes.
613
+
614
+ **2.6.0**
615
+ * Bug fixed and should upgrade.
616
+
617
+ **2.5.0**
618
+ * Duplicate detection added.
619
+ * Added more information in success message.
620
+ * Import memory issues solved.
621
+
622
+ **2.0.1**
623
+ * Update to WordPress-3.5 compatibility.
624
+
625
+ **2.0.0**
626
+ * Major Bug fixed and should upgrade. WPDEBUG errors fixed. CSV import folder changed to WP native uploads folder.
627
+
628
+ **1.1.1**
629
+ * Minor correction and fix applied.
630
+
631
+ **1.1.0**
632
+ * A major new feature added in this version. Update needed.
633
+
634
+ **1.0.2**
635
+ * This version have important bug fixes and newly added features. Must be upgrade immediately.
636
+
637
+ **1.0.1**
638
+ * Added features to import multiple tags and categories with different delimiters.
639
+
640
+ **1.0.0**
641
+ * Initial release of plugin.
Readme.txt CHANGED
@@ -1,80 +1,27 @@
1
- === Import CSV with Ultimate CSV Importer ===
2
  Contributors: smackcoders
3
  Donate link: http://www.smackcoders.com/donate.html
4
- Tags: admin, administration, author, automatic, blog, categories, category, cms, contact, content, custom, custom post, dashboard, database, e-commerce, ecommerce, edit, event, events, feed, Formatting, free, gallery, image, images, import, integration, language, link, links, list, marketing, media, menu, meta, mobile, multisite, navigation, News, page, pages, performance, photo, photos, picture, pictures, plugin, plugins, Post, posts, profile, registration, rss, seo, Share, sharing, shop, shortcode, shortcodes, statistics, stats, store, tag, tags, Taxonomy, template, text, thumbnail, thumbnails, title, upload, url, user, users, video, woocommerce, wordpress, wpmu, xml, youtube,
5
- Requires at least: 4.3.1
6
- Tested up to: 4.3.1
7
- Stable tag: 3.8.3
8
- Version: 3.8.3
9
  Author: smackcoders
10
  Author URI: http://profiles.wordpress.org/smackcoders/
11
 
12
  License: GPLv2 or later
13
 
14
- Import CSV with CSV Importer made simple to import & export posts, pages, custom posts and custom fields in few simple clicks
15
 
16
  == Description ==
17
 
18
- Import CSV data to WordPress is made very easy even for novice users as in few clicks and 3 simple steps with CSV Importer plugin.
19
-
20
- Now csv importer supports multi language and almost every WordPress modules and plugin fields as follows. Import data feed periodically from csv file as
21
-
22
- = Supported Core Modules and Attributes =
23
- * Post
24
- * Page
25
- * Featured image support
26
- * Post inline image handling
27
- * Standard WP Custom Post types
28
- * WordPress themes custom posts
29
- * Custom post type UI plugin Post types
30
- * Users with roles
31
- * Comments
32
- * Custom Fields
33
- * Author
34
- * Tags import and multi tag for each post import
35
- * Categories import and multi category for each post
36
- * Eshop
37
- * All-in-one SEO
38
-
39
- = Highlights of 3.8 =
40
- * Multilanguage support (fr_FR,es_ES,nl_NL)
41
- * Inline image handling shortcode with image attributes Example:[WPIMPINLINE:greensroad.jpg|width='150'|height='80'|alt='post_title_redtree']
42
- * Fixed user reported Warnings and Bugs
43
- * Any delimiter support for csv export
44
-
45
- Note: Now you can import no. of images in in-line post content as image shortcodes using advanced media handling option as zip files.
46
-
47
- = CSV Importer =
48
-
49
- WP Ultimate CSV Importer Plugin proven much effective advanced CSV Importer With Ultimate User Friendly Features. It is much easy now even for newbies to import csv file exported from any tool, app or software. Import as any WordPress post type and associated fields by simple mapping feature. Now import any CSV file as thousands of post, page and custom post types. This is admin side free plugin helps you in bulk edit, create and import posts type for your blog or site.
50
-
51
- It is more easy to import csv database maintained in Excel xls or spread sheets into valuable content for your web site without missing any. It is possible now to schedule a import csv periodically for content update, maintenance, prices, offers, coupons and inventory etc.
52
-
53
- Much improved User interface with most flexible jquery plugin features and bootstrap UI design makes csv import more simple, easy, fast and even more flexible for better user experience. With improved Multi site, buddy press compatibility (except user import module) works well for most of the best WordPress themes available online. Now manage multi site & buddy press, Amazon data import, affiliates blog, product inventory, ecommerce store, multi author blog, automatic news import, photo blog etc periodically with simple click import.
54
-
55
- = Helpful Links =
56
-
57
- [Get More Details Here>>](https://www.smackcoders.com/wp-ultimate-csv-importer-pro.html?utm_source=WpOrg&utm_medium=Readme&utm_campaign=ListingTraffic)
58
-
59
- [Test Drive Our Live Demo](http://demo.smackcoders.com/demowpthree/wp-admin/admin.php?page=wp-ultimate-csv-importer-pro/index.php&__module=dashboard?utm_source=WpOrg&utm_medium=Readme&utm_campaign=ListingTraffic)
60
-
61
- [Get Started Sample CSV Files](https://www.smackcoders.com/blog/wordpress-ultimate-csv-importer-csv-sample-files-and-updates.html?utm_source=WpOrg&utm_medium=Readme&utm_campaign=ListingTraffic)
62
-
63
- [Documentation and Tutorial for CSV Importer ](https://www.smackcoders.com/documentation/ultimate-csv-importer-pro?utm_source=WpOrg&utm_medium=Readme&utm_campaign=ListingTraffic)
64
-
65
 
66
  = Video Walkthrough =
67
 
68
- <p>https://www.youtube.com/watch?v=Guv5zR7fgW0&list=PL2k3Ck1bFtbQqFhOK7g08kxENI4qQkmC</p>
69
 
70
  = Highlights =
71
- * import csv from any source as WordPress posts
72
- * New Terminate & Continue feature is added.
73
- * Complete export feature with improved filters
74
- * Import external/internal images in line to any posts
75
- * Upload images related to each csv
76
- * Auto delimiter
77
- * Auto UTF-8 handling
78
  * All-in-SEO import support.
79
  * Drag drop import
80
  * Define any type of post
@@ -84,12 +31,11 @@ Much improved User interface with most flexible jquery plugin features and boots
84
  * Scheduled Publishing
85
  * Duplicate Title and content handling
86
  * Multi Lingual import (CSV format must be UTF-8 without BOM)
87
- * Multi-site also supported now
88
- * Compatible to WordPress themes
89
  * Better alternative for xml
90
- * Post Format option added
91
- * Page template attribute feature
92
- * EShop Products import (included from V3.6.3)
93
  = Power Import Features to Control your csv import =
94
  * Post title, content and even excerpt
95
  * Text, WYSIWYG/HTML, in line CSS in post content
@@ -105,237 +51,234 @@ Much improved User interface with most flexible jquery plugin features and boots
105
  * Custom fields support for WP standard
106
  * Map custom fields by adding new on the fly.
107
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
108
  = Imp. Notes =
109
- * All CSV files should be should be strictly UTF-8 CSV format. Now this can be handled by plugin.
110
- * All WordPress supported languages can imported with csv format as UTF-8 without BOM (See FAQ for instructions).
111
- * User import option is disabled for multi site mode.
 
112
  * To Schedule posts for publishing provide future date and time in date column in CSV File.
113
 
114
  Featured Image Support
115
- Your WordPress theme should support featured image. If not, please add the following code to where you need to display E.g. wp-contents/themes/header.php
116
  `<?php add_theme_support( 'post-thumbnails' ); ?>`
117
 
118
- = Pro Features =
119
- * Advanced Features
120
- * Multi language Support
121
- * Woocommerce Support with woocommerce_products, woocommerce_variations, woocommerce_refunds, woocommerce_orders, woocommerce_coupons
122
- * Market press
123
- * ACF, TYPES, PODS, CCTM Custom Fields
124
- * Advanced Export with Delimiter and Filters
125
- * Advanced Media Handling
126
- * Schedule Imports
127
- * Dashboard, CSV Manager and Custom Mapping Templates
128
- * DB Optimizer, System status etc.
129
-
130
- Compare Free Vs Pro[Features](https://www.wpultimatecsvimporter.com/wp-ultimate-csv-importer-plugin?utm_source=WpOrg&utm_medium=Readme&utm_campaign=ListingTraffic)>>
131
- Learn More from [User Manual](https://www.wpultimatecsvimporter.com/documentation/all-import/user-guide/simple-step-by-step-user-guide?utm_source=WpOrg&utm_medium=Readme&utm_campaign=ListingTraffic)>>
132
 
 
 
 
133
 
134
- = Common Issues =
135
 
136
- How to solve auto_prepend_file and auto_append_file error?
 
 
 
 
 
 
 
 
137
 
138
- Check your phpinfo.php. Ensure that auto_prepend_file and auto_append_file options are disabled. If not you can disable it in php.ini settings file your self. You can also do it by a .htaccess file
139
 
140
- Create an .htaccess file in root and set the following values.
141
- php_value auto_prepend_file none
142
- php_value auto_append_file none
143
 
144
- This will solve your issue or get support from hosting if you dint have sufficient permission.
 
145
 
146
- Also you can follow the instructions as given here
147
 
148
- * [http://codex.wordpress.org/Function_Reference/the_post_thumbnail](http://codex.wordpress.org/Function_Reference/the_post_thumbnail)
149
- * [http://codex.wordpress.org/Post_Thumbnails](http://codex.wordpress.org/Post_Thumbnails)
150
- * [http://wordpress.org/support/topic/featured-image-not-showing-7?replies=5](http://wordpress.org/support/topic/featured-image-not-showing-7?replies=5)
 
 
 
 
 
151
 
 
152
 
153
- = Extended Pro Power Features in WP Ultimate CSV Importer =
154
- * Types Plugin support
155
- * Woocommerce CSV importer with product variation
156
- * Marketpress Lite Importer
157
- * WP Members Importer
158
- * WP Customer Reviews Importer
159
- * Auto Schedule all your Imports
160
- * Save mapping as Templates for reuse
161
- * Auto Mapping Feature
162
- * Strict UTF-8 auto conversion
163
- * All In One SEO Fields Import
164
- * WordPress SEO by Yoast Fields Import
165
- * Custom Post Type UI plugin import
166
- * Advanced Custom Fields Import
167
- * CCTM Posts and Fields Import
168
- * Woocommerce CSV Importer,
169
- * WP ecommerce Products CSV Importer with WP e-Commerce Custom Fields
170
- * Categories & tags Import with Category icons plugin support
171
- * Custom Taxonomy import
172
 
173
- = And we thank @respectyoda, @alantygel and @James Golovich for their wonderful support to us. =
174
 
175
- == Installation ==
 
 
 
 
 
176
 
177
- * [Step By Step Installation with Snaps](https://www.wpultimatecsvimporter.com/documentation/all-import/user-guide/simple-step-by-step-user-guide/?utm_source=WpOrg&utm_medium=Readme&utm_campaign=ListingTraffic)
178
 
179
 
180
  == Screenshots ==
181
 
182
- 1. New Interactive Dashboard with Chart and Graph
183
- 2. Advanced CSV Importer With Ultimate User Friendly Features with drag and drop etc.
184
- 3. User friendly easy mapping for any csv file data to WordPress field attributes with sampling.
185
- 4. Advanced duplicate post name and content check with server request control for high performance factor.
186
- 5. Detailed real time log to know pinpoint status.
187
- 6. Module based environment for easy and reduced interface to enable most required modules and when ever needed.
188
- 7. Inbuilt support form for easy feedback, support, feature request with all useful links for easy and better csv import.
189
- 8. New export module for posts, page, eshop, users, comments and all custom posts type plugins.
190
-
191
 
192
  == Frequently Asked Questions ==
193
 
194
- = Common Issues =
 
195
 
196
- How to solve auto_prepend_file and auto_append_file error?
197
 
198
- Check your phpinfo.php. Ensure that auto_prepend_file and auto_append_file options are disabled. If not you can disable it in php.ini settings file your self. You can also do it by a .htaccess file
199
 
200
- Create an .htaccess file in root and set the following values.
201
- php_value auto_prepend_file none
202
- php_value auto_append_file none
203
 
204
- This will solve your issue or get support from hosting if you dint have sufficient permission.
 
 
205
 
206
- [Click Here for More Details](https://www.wpultimatecsvimporter.com/documentation/all-import/user-guide/simple-step-by-step-user-guide/?utm_source=WpOrg&utm_medium=Readme&utm_campaign=ListingTraffic)
207
 
208
- == Changelog ==
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
209
 
210
- = 3.8.3 =
211
- * Fixed : Text domain is added for language translation system.
212
- * Fixed : Bugs fixed for detecting duplicate post content and title option.
213
-
214
- = 3.8.2 =
215
- * Fixed : Wordpress 4.3.1 compatibility added.
216
- * Fixed : Dashboard entry issue fix.
217
- * Fixed : Featured image filename with empty space import issue fix.
218
- * Fixed : Duplicate featured images on import fixed.
219
- * Fixed : Core custom Field mapping group added
220
-
221
- = 3.8.1 =
222
- * Fixed : WordPress 4.2.3 and 4.2.4 compatibility checked.
223
- * Fixed : Fixed the unwanted warnings in all files.
224
- * Fixed : XSS vulnerability.
225
- * Fixed : Removed the ../../../../../../wp-load.php and used the wordpress ajax call.
226
- * Fixed : Removed the wp-content that are directly used in some files.
227
- * Added : Checked the ABSPATH in each file.
228
- * Added : Comments are exported by specific date and author option.
229
-
230
- = 3.8 =
231
- * Multilanguage support (fr_FR,es_ES,nl_NL)
232
- * Inline image handling shortcode with image attributes
233
- * Warnings and bugs Fixes
234
- * Any delimiter support for csv export
235
-
236
- = 3.7.4 =
237
- * Fixed : Allow Editor/Author to import.(Multisite also).
238
- * Added : WordPress 4.2.2 compatibility.
239
-
240
- = 3.7.3 =
241
- * Fixed: Vulnerablility security issue fix.
242
-
243
- = 3.7.2 =
244
- * Added: WordPress 4.2 and 4.2.1 compatibility.
245
- * Fixed: Blank page conflict issue
246
-
247
- = 3.7.1 =
248
- * Added: Security fix for curl.
249
- * Added: Security fix for session status.
250
-
251
- = 3.7 =
252
- * Fixed: Featured image hotlink issue.
253
-
254
- = 3.6.78 =
255
- * Added: Hot security fix in readfile.php. ( Thanks - @James Golovich )
256
-
257
- = 3.6.77 =
258
- * Added: WordPress 4.1.1 compatibility checked.
259
- * Improved: Inline image import feature. Added recursive method to assign the image.
260
- * Fixed: Featured image naming issue. [Solved](https://wordpress.org/support/topic/problem-in-import-with-the-image-name)
261
- * Fixed: Removed unwanted warnings.
262
-
263
- = 3.6.76 =
264
- * Improved: Post Format.
265
- * Fixed: Export eshop data issue.
266
- * Fixed: Import with image name issue.
267
- * Fixed: Groups plugin conflict.
268
-
269
- = 3.6.75 =
270
- * Added: Terminate & Continue option in import section.
271
- * Improved: Log section. Issue fixed in Web View & Admin View.
272
- * Fixed: Security fix for export module.
273
-
274
- = 3.6.74 =
275
- * Added: Security fix.
276
-
277
- = 3.6.73 =
278
- * Added: WordPress 4.0 compatibility checked.
279
- * Added: https format support for all WP instances.
280
- * Added: Warning to guide user to create uploads directory with writeable permissions.
281
- * Fixed: Image handling issues in featured image.
282
- * Fixed: Multisite compatible issue.
283
- * Removed: Post Content field mandatory option.
284
- * Removed: All console warnings.
285
- * Improved: Details added in security and performance tab under settings module.
286
-
287
- = 3.6.72 =
288
- * Added: Debug mode enable/disable options.
289
- * Modified: Menu order changes.
290
-
291
- = 3.6.71 =
292
- * Minor bug fixed
293
-
294
- = 3.6.7 =
295
- * Added: Export features for all missing modules.
296
- * Fixed: All console warnings and reported logs.
297
-
298
- = 3.6.6 =
299
- * Dashboard chart issue fixed for multi site.
300
- * UI improvements along with easy usability.
301
- * Fixed Groups plugin conflicts
302
-
303
- = 3.6.5 =
304
- * Added in line image support with advance media handling
305
- * PDO check added
306
-
307
- = 3.6.4 =
308
- * Added: Advanced export features with filter options.
309
- * Improved: Advanced log section.
310
- * Fixed reported jquery issues.
311
- * WordPress 4.0 compatibility checked.
312
-
313
- = 3.6.3 =
314
- * Added: Eshop import support.
315
- * Fixed reported conflicts with other plugins.
316
- * WordPress 3.9.2 compatibility checked.
317
-
318
- = 3.6.2 =
319
- * Hot security fix added.
320
-
321
- = 3.6.1 =
322
- * Multi-site support issue fixed
323
- * Duplicate import issue fixed
324
- * Security issue fixed
325
-
326
- = 3.6 =
327
- * New interactive graphs and charts in plugin dashboard
328
- * New Admin dashboard widgets
329
- * Added Users and comments export feature
330
- * Auto delimiter handling
331
- * Auto mapping feature
332
- * Now allow authors to access import features
333
-
334
- = 3.5.5 =
335
- * post_format attribute support added
336
- * page_template attribute added
337
- * update_post_meta added for duplicate meta issue (Thanks to @alantygel)
338
- * Type error issue in jQuery fixed
339
 
340
  = 3.5.4 =
341
  * Added: All-in-SEO import support.
@@ -485,84 +428,6 @@ This will solve your issue or get support from hosting if you dint have sufficie
485
 
486
  == Upgrade Notice ==
487
 
488
- = 3.8.3 =
489
- * Upgrade now for improvements in multi language translation.
490
-
491
- = 3.8.2 =
492
- * Upgrade now for more improvements.
493
-
494
- = 3.8.1 =
495
- * Upgrade now for ABSPATH used in all files and also fixed all the warnings,bugs.
496
-
497
- = 3.8 =
498
- * Upgrade now for Multi language support and bug fixes
499
-
500
- = 3.7.4 =
501
- * Upgrade now for allow author/editor to import fix.
502
-
503
- = 3.7.3 =
504
- * Upgrade now for Vulnerability fix.
505
-
506
- = 3.7.2 =
507
- * Important Upgrade for wordpress 4.2 and above
508
-
509
- = 3.7.1 =
510
- * Upgrade now for security fix.
511
-
512
- = 3.7 =
513
- * Upgrade now for minor bug fixes.
514
-
515
- = 3.6.78 =
516
- * Upgrade now for security fix.
517
-
518
- = 3.6.77 =
519
- * Upgrade now for WordPress 4.1.1 compatibility and minor bug fixes.
520
-
521
- = 3.6.76 =
522
- * Upgrade now for more bug fixes.
523
-
524
- = 3.6.75 =
525
- * Upgrade now for improved experience.
526
-
527
- = 3.6.74 =
528
- * Upgrade now for security fix.
529
-
530
- = 3.6.73 =
531
- * Upgrade now for WordPress 4.0 compatibility and minor bug fixes.
532
-
533
- = 3.6.72 =
534
- * Upgrade to enable/disable debug mode in settings.
535
-
536
- = 3.6.71 =
537
- * Upgrade now for complete export features as in Pro with bug fix.
538
-
539
- = 3.6.7 =
540
- * Upgrade now for complete export features as in Pro.
541
-
542
- = 3.6.6 =
543
- * Upgrade now for improved experience.
544
-
545
- = 3.6.5 =
546
- * Upgrade Now for advanced media handling for post in line images
547
-
548
- = 3.6.4 =
549
- * Upgrade Now for filtered export and improved log features.
550
-
551
- = 3.6.3 =
552
- * Upgrade now for Eshop product import feature.
553
-
554
- = 3.6.2 =
555
- * Important Security Update
556
-
557
- = 3.6.1 =
558
- * Important issue fixes update
559
-
560
- = 3.6 =
561
- * Must upgrade with major values added features
562
-
563
- = 3.5.5 =
564
- * Upgrade for minor bug fix, conflicts and new attribute support.
565
-
566
  = 3.5.4 =
567
  * Upgrade now for All-in-SEO import support.
568
 
1
+ === Advanced CSV Importer With Ultimate User Friendly Features ===
2
  Contributors: smackcoders
3
  Donate link: http://www.smackcoders.com/donate.html
4
+ Tags: Advanced CSV Importer, Advanced CSV Import, csv, csv importer, csv import, csv file, csv format, admin, affiliate, amazon, author, automatic, blog, buddypress, categories, comments, content, custom post, e-commerce, free, images, import, language, manage, media, meta, multisite, News, page, photos, pictures, plugin, Post, seo, shop, shortcode, tags, Taxonomy, text, title, users, video, woocommerce, wordpress, xml, youtube, batch, bulk, bulk edit, bulk editor, excel, spreadsheet
5
+ Requires at least: 3.6.0
6
+ Tested up to: 4.3
7
+ Stable tag: 3.8.4
8
+ Version: 3.8.4
9
  Author: smackcoders
10
  Author URI: http://profiles.wordpress.org/smackcoders/
11
 
12
  License: GPLv2 or later
13
 
14
+ Advanced CSV Importer plugin to import data as bulk post, page, custom post etc., simple clicks even for multisite and buddypress blog.
15
 
16
  == Description ==
17
 
18
+ WP Ultimate CSV Importer Plugin proven much effective advanced CSV File Importer With Ultimate User Friendly Features. It is much easy now even for newbies to import any csv file as any wordpress post type and associated fields by simple mapping feature. Now import any CSV file as thousands of post, page and custom post types. This is admin side free plugin helps you in bulk edit, create and import posts type for your blog or site.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
19
 
20
  = Video Walkthrough =
21
 
22
+ <p>http://www.youtube.com/watch?v=OwKdt_NlT2U&list=PL2k3Ck1bFtbQqFhOK7g08kxENI4qQkmC</p>
23
 
24
  = Highlights =
 
 
 
 
 
 
 
25
  * All-in-SEO import support.
26
  * Drag drop import
27
  * Define any type of post
31
  * Scheduled Publishing
32
  * Duplicate Title and content handling
33
  * Multi Lingual import (CSV format must be UTF-8 without BOM)
34
+ * Mutisite and Buddypress also supported now
35
+ * Compatible to wordpress themes
36
  * Better alternative for xml
37
+ * Post Format(Not available now)
38
+
 
39
  = Power Import Features to Control your csv import =
40
  * Post title, content and even excerpt
41
  * Text, WYSIWYG/HTML, in line CSS in post content
51
  * Custom fields support for WP standard
52
  * Map custom fields by adding new on the fly.
53
 
54
+ The csv importer supports almost every wordpress modules and plugin fields as follows. Import data feed periodically from csv file as
55
+
56
+ = Supported Core Modules and Attributes =
57
+ * Post
58
+ * Page
59
+ * Standard WP Custom Post types
60
+ * Wordpress themes custom posts
61
+ * Custom post type UI plugin Post types
62
+ * Users with roles
63
+ * Comments
64
+ * Custom Fields
65
+ * Author
66
+ * Tags
67
+ * Categories
68
+
69
+ It is more easy to convert any off line database maintained in Excel xls or spread sheets into valuable content for your web site without missing any. It is possible now to schedule a periodical content update, maintenance, prices, offers, coupons and inventory etc.
70
+
71
+ = About Version 3.5.0 =
72
+ * Extended user experience
73
+ * Better performance
74
+ * No more time out issues
75
+ * Advanced Log for proper tracking
76
+ * Drag drop import
77
+ * Advanced CMS administration
78
+
79
+ Much improved User interface with most flexible jquery plugin features and bootstrap UI design makes csv import more simple, easy, fast and even more flexible for better user experience. With improved Multi site, buddy press compatibility (except user import module) works well for most of the best wordpress themes available online. Now manage multi site & buddy press, amazon data import, affiliates blog, product inventory, ecommerce store, multi author blog, automatic news import, photo blog etc periodically with simple click import.
80
+
81
+ = Extended Pro Power Features in Wp Ultimate CSV Importer =
82
+ * Auto Schedule all your Imports
83
+ * Save mapping as Templates for reuse
84
+ * Auto Mapping Feature
85
+ * Strict UTF-8 auto conversion
86
+ * All In One SEO Fields Import
87
+ * Wordpress SEO by Yoast Fields Import
88
+ * Custom Post Type UI plugin import
89
+ * Advanced Custom Fields Import
90
+ * CCTM Posts and Fields Import
91
+ * Woo commerce CSV Importer,
92
+ * eshop CSV Importer
93
+ * wp ecommerce Products CSV Importer with WP e-Commerce Custom Fields
94
+ * Categories & tags Import with Category icons plugin support
95
+ * Custom Taxonomy import
96
+ * [Get Complete List of supported 3rd party plugins here](http://www.smackcoders.com/wp-ultimate-csv-importer-pro.html)
97
+ * Types and more supports are in pipeline
98
+
99
+ [Read More about Pro>>](http://www.smackcoders.com/wp-ultimate-csv-importer-pro.html) or [Test Drive Our Live Demo](http://demo.smackcoders.com/demowpthree/wp-admin/admin.php?page=wp-ultimate-csv-importer-pro/index.php&__module=dashboard)
100
+
101
  = Imp. Notes =
102
+ * It is advised to remove older version files completely and install/reinstall version 3.5.0.
103
+ * All CSV files should be should be strictly UTF-8 CSV format.
104
+ * All wordpress supported languages can imported with csv format as UTF-8 without BOM (See FAQ for instructions).
105
+ * User import option is switched off in multi site mode.
106
  * To Schedule posts for publishing provide future date and time in date column in CSV File.
107
 
108
  Featured Image Support
109
+ Your wordpress theme should support featured image. If not, please add the following code to where you need to display E.g. wp-contents/themes/header.php
110
  `<?php add_theme_support( 'post-thumbnails' ); ?>`
111
 
112
+ Also you can follow the instructions as given here
 
 
 
 
 
 
 
 
 
 
 
 
 
113
 
114
+ * [http://codex.wordpress.org/Function_Reference/the_post_thumbnail](http://codex.wordpress.org/Function_Reference/the_post_thumbnail)
115
+ * [http://codex.wordpress.org/Post_Thumbnails](http://codex.wordpress.org/Post_Thumbnails)
116
+ * [http://wordpress.org/support/topic/featured-image-not-showing-7?replies=5](http://wordpress.org/support/topic/featured-image-not-showing-7?replies=5)
117
 
118
+ Need More Help, Cool. Browse Below Links
119
 
120
+ * [Get Pro Power Features, check here](http://www.smackcoders.com/wp-ultimate-csv-importer-pro.html)
121
+ * [Step By Step Installation Wiki with Snaps](http://wiki.smackcoders.com/WP_Ultimate_CSV_Importer#Installations)
122
+ * [Detailed FAQ](http://wiki.smackcoders.com/WP_Ultimate_CSV_Importer_FAQ)
123
+ * [Old Support Threads](http://wiki.smackcoders.com/WP_Ultimate_CSV_Importer_Support_Threads)
124
+ * [Wiki and Documentation](http://wiki.smackcoders.com/WP_Ultimate_CSV_Importer)
125
+ * [Tutorials, Guides, Blog News and Updates](http://blog.smackcoders.com/category/free-wordpress-plugins/wordpress-ultimate-csv-importer-plugin/)
126
+ * [Video Walkthrough](http://wiki.smackcoders.com/WP_Ultimate_CSV_Importer_Videos)
127
+ * [Get the Sample CSV Files Here](http://blog.smackcoders.com/wordpress-ultimate-csv-importer-csv-sample-files-and-updates.html)
128
+ * [Download CSV Format Cheat Sheets Here](http://blog.smackcoders.com/how-to-make-one-click-easy-csv-import-in-wordpress-free-cheat-sheet-downloads.html)
129
 
130
+ == Installation ==
131
 
132
+ Wp Ultimate CSV Importer is very easy to install like any other wordpress plugin. No need to edit or modify anything here. Users can install the plugin in 3 ways, choose one that suites you from below
 
 
133
 
134
+ = Imp. Notes =
135
+ * It is advised to remove older version files completely and install/reinstall version 3.5.0.
136
 
137
+ I. For simple general way to install
138
 
139
+ * Download the plugin (.zip file) on the right side above menu
140
+ * Click the Red Download Button ( Download Version X.X.X)
141
+ * Login to your Wordpress Admin (e.g. yourdomain.com/wp-admin/)
142
+ * Go to Plugins >> Add New
143
+ * Select the tab "Upload"
144
+ * Browse and Upload the downloaded zip file
145
+ * Activate the plugin after install
146
+ * You can see a new menu WP Ultimate CSV Importer in your Admin now
147
 
148
+ II. For familiar FTP users
149
 
150
+ * Download the plugin (.zip file) on the right side above menu
151
+ * Click the Red Download Button ( Download Version X.X.X)
152
+ * Extract the plugin zip
153
+ * Upload wp-ultimate-csv-importer folder to /wp-content/plugins/
154
+ * Go to Plugins >> Installed Plugins >> Inactive
155
+ * Click Activate to activate the plugin
156
+ * You can see a new menu WP Ultimate CSV Importer in your Admin now
 
 
 
 
 
 
 
 
 
 
 
 
157
 
158
+ III. Straight from Wordpress Admin
159
 
160
+ * Login to your Wordpress Admin (e.g. yourdomain.com/wp-admin/)
161
+ * Go to Plugins >> Add New
162
+ * Search for WP Ultimate CSV Importer
163
+ * Click Install Now to install
164
+ * Activate the plugin after install
165
+ * You can see a new menu WP Ultimate CSV Importer in your Admin now
166
 
167
+ Not clear. You can use [step by step installation wiki with snaps here](http://wiki.smackcoders.com/WP_Ultimate_CSV_Importer#Installations)
168
 
169
 
170
  == Screenshots ==
171
 
172
+ 1. Advanced CSV Importer With Ultimate User Friendly Features with drag and drop etc.
173
+ 2. User friendly easy mapping for any csv file data to wordpress field attributes with sampling.
174
+ 3. Advanced duplicate post name and content check with server request control for high performance factor.
175
+ 4. Detailed real time log to know pinpoint status.
176
+ 5. Module based environment for easy and reduced interface to enable most required modules and when ever needed.
177
+ 6. Inbuilt support form for easy feedback, support, feature request with all useful links for easy and better csv import.
178
+ 7. New export module for posts, page and all custom posts type plugins.
 
 
179
 
180
  == Frequently Asked Questions ==
181
 
182
+ = Imp. Notes =
183
+ * It is advised to remove older version files completely and install/reinstall version 3.5.0.
184
 
185
+ [CSV File and Format Related](http://wiki.smackcoders.com/WP_Ultimate_CSV_Importer_FAQ#CSV_File_and_Format_Related)
186
 
187
+ = '''What is csv file?''' =
188
 
189
+ CSV stands for "Comma Separated Values". CSV file format is used to store data in a structured table of lists as columns and rows. CSV File otherwise Comma Separated Values file is a simple text file that stores attribute names as headers and their related values in comma separated format.
 
 
190
 
191
+ In general opening csv files in MS Excel or any spread sheet editor will show all values under each header as columns and rows. Each column have a attribute name called as CSV file header and their data/values in rows for each entry.
192
+
193
+ For ultimate csv importer each row is imported as a post for a selected post type and columns are imported as filed attribute values of the posts. This is done by simple interface of drop downs of header or attribute names are mapped to wordpress post field attributes like post title, content, status. So no of rows are equal to no of posts that to be imported. And columns or csv headers are equal to no of field attributes assigned under each post like author, category, tags, custom fields etc.
194
 
195
+ = '''What is csv format and types of it?''' =
196
 
197
+ The CSV file type 'Comma-Separated Variables' or comma delimited file is a records and data from a database or software exported, where each record/data in single line and each field attributes in records are indicated as comma separated. In some cases instead of comma other delimiters also can be used like ; separated.
198
+
199
+
200
+ CSV Format is chosen encoding while saving as a csv file. There are several formats available like ANSI, UCS-2 Big Endian, UCS-2 Little Endian, UTF-8, UTF-8 without BOM etc.
201
+
202
+ For ultimate csv importer to import csv as wordpress post type, UTF-8 is advised for successful import. In case of other language import or any special characters, diacritics, Cyrillic or Han characters are included in csv import, UTF-8 without BOM format is suggested.
203
+
204
+ How to choose separator or delimiter for ultimate CSV Importer?
205
+
206
+ In ultimate csv importer you can choose the delimiter as , or ; while importing the csv file.
207
+
208
+ = '''How to open csv files? read csv file?''' =
209
+
210
+ In general to read or open existing CSV files simple text editors can be used. For easy editing and best view, any spread sheet editor like MS Excel or OpenOffice Calc is useful.
211
+
212
+ = '''How to convert my existing data to csv format?''' =
213
+
214
+ In general to read or open existing CSV files simple text editors can be used. For easy editing and best view, any spread sheet editor like MS Excel or OpenOffice Calc is useful. To convert encoding format of a csv file open it in text editor and save as with needed file format.
215
+
216
+ For E.g. open your csv file in Notepad++ copy the text. Now open a new empty file choose UTF-8 without BOM or other from Menus >> Encoding and paste the copied text. Now save and replace the old CSV file. Now your CSV file with choosen format can be imported without any issues in Ultimate CSV importer.
217
+
218
+ [Plugin Related](http://wiki.smackcoders.com/WP_Ultimate_CSV_Importer_FAQ#Plugin_Related)
219
+
220
+ = '''How to install the plugin?''' =
221
+
222
+ For detailed installation instruction read here - http://wiki.smackcoders.com/index.php?title=WP_Ultimate_CSV_Importer#Installations
223
+
224
+ = '''How to use the plugin to import a csv file?''' =
225
+
226
+ Refer here as below
227
+
228
+ 1.http://blog.smackcoders.com/how-to-import-content-to-wordpress-simple-steps-tutorial-wordpress-ultimate-csv-importer-plugin-part-i.html<br>
229
+
230
+ 2.http://blog.smackcoders.com/how-to-import-content-to-wordpress-simple-steps-tutorial-wordpress-ultimate-csv-importer-plugin-part-ii.html
231
+
232
+ = '''What is a csv importer plugin?''' =
233
+
234
+ Csv importer plugin is a tool/plugin that can import your data and records from exported, stored, saved as csv files to your software as useful viewable content to analyse, manage etc. In such way Ultimate CSV importer is a worpdress plugin that imports your off line records or data stored/exported as a csv file into any wordpress post type web content by simple easy mapping feature.
235
+
236
+ = '''Why we need CSV import for wordpress?''' =
237
+
238
+ If you need to move data from our local system to live website as post content and their field attributes in bulk you should need a csv importer plugin for reduce manual work and time. In normal affiliates data like amazon, auto blogging, drop shipping ecommerce, inventory management, periodical changes to content in bulk, bulk editing cms content etc can be handled as simple as few easy clicks by an advanced csv importer plugin like Ultimate CSV importer plugin.
239
+
240
+ More to that features like auto mapping headers, mapping templates, smart scheduling etc in pro version makes periodical imports more easy and automatic even without mapping itself.
241
+
242
+ Read More FAQs from below wiki links.
243
+
244
+ [CSV Import Related](http://wiki.smackcoders.com/WP_Ultimate_CSV_Importer_FAQ#CSV_Import_Related)
245
 
246
+ * What csv format is supported?
247
+ * How to import other languages using ultimate csv importer?
248
+ * How to Format a CSV file for simple sleek import using WP Ultimate CSV Importer Plugin?
249
+ * How to create a well formatted csv for ultimate power import? - the other way to learn tweaking
250
+ * Where can i get sample files, cheat sheets and other references?
251
+ * What you mean by mapping?
252
+ * What are mandatory fields?
253
+ * What can be imported to wordpress using ultimate csv importer?
254
+ * What are the list of 3rd party plugins supported?
255
+ * Why my custom fields or custom posts are supported by plugin?
256
+ * Can i bulk edit/update existing posts created manually?
257
+ * How to schedule post for publishing?
258
+ * What is auto mapping feature?
259
+ * What is mapping template feature? How to use it?
260
+ * How saved mapping template can be reused?
261
+ * How to schedule csv files for import?
262
+ * Is schedule import possible from remote location?
263
+ * how to automate periodical scheduled import?
264
+ * Is auto split up schedule import possible?
265
+
266
+ [Data Export Related](http://wiki.smackcoders.com/WP_Ultimate_CSV_Importer_FAQ#Data_Export_Related)
267
+
268
+ * How to export data or export-csv from wordpress? data export export to csv
269
+ * Can i schedule export?
270
+ * How the export feature works?
271
+ * Is export feature available to all modules?
272
+
273
+ [Common Issues](http://wiki.smackcoders.com/WP_Ultimate_CSV_Importer_FAQ#Common_Issues)
274
+
275
+ * Why and What to do if my import broke in the middle?
276
+ * Cant get my featured image imported?
277
+ * Why image import is broken
278
+ * I am getting time out error? how to solve it?
279
+ * How to handle large data import?
280
+
281
+ == Changelog ==
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
282
 
283
  = 3.5.4 =
284
  * Added: All-in-SEO import support.
428
 
429
  == Upgrade Notice ==
430
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
431
  = 3.5.4 =
432
  * Upgrade now for All-in-SEO import support.
433
 
config/schema.php CHANGED
@@ -1,36 +1,36 @@
1
  <?php
2
  /*********************************************************************************
3
- * WP Ultimate CSV Importer is a Tool for importing CSV for the Wordpress
4
- * plugin developed by Smackcoder. Copyright (C) 2014 Smackcoders.
5
- *
6
- * WP Ultimate CSV Importer is free software; you can redistribute it and/or
7
- * modify it under the terms of the GNU Affero General Public License version 3
8
- * as published by the Free Software Foundation with the addition of the
9
- * following permission added to Section 15 as permitted in Section 7(a): FOR
10
- * ANY PART OF THE COVERED WORK IN WHICH THE COPYRIGHT IS OWNED BY WP Ultimate
11
- * CSV Importer, WP Ultimate CSV Importer DISCLAIMS THE WARRANTY OF NON
12
- * INFRINGEMENT OF THIRD PARTY RIGHTS.
13
- *
14
- * WP Ultimate CSV Importer is distributed in the hope that it will be useful,
15
- * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
16
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public
17
- * License for more details.
18
- *
19
- * You should have received a copy of the GNU Affero General Public License
20
- * along with this program; if not, see http://www.gnu.org/licenses or write
21
- * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
22
- * Boston, MA 02110-1301 USA.
23
- *
24
- * You can contact Smackcoders at email address info@smackcoders.com.
25
- *
26
- * The interactive user interfaces in original and modified versions
27
- * of this program must display Appropriate Legal Notices, as required under
28
- * Section 5 of the GNU Affero General Public License version 3.
29
- *
30
- * In accordance with Section 7(b) of the GNU Affero General Public License
31
- * version 3, these Appropriate Legal Notices must retain the display of the
32
- * WP Ultimate CSV Importer copyright notice. If the display of the logo is
33
- * not reasonably feasible for technical reasons, the Appropriate Legal
34
- * Notices must display the words
35
- * "Copyright Smackcoders. 2014. All rights reserved".
36
- ********************************************************************************/
1
  <?php
2
  /*********************************************************************************
3
+ * WP Ultimate CSV Importer is a Tool for importing CSV for the Wordpress
4
+ * plugin developed by Smackcoder. Copyright (C) 2014 Smackcoders.
5
+ *
6
+ * WP Ultimate CSV Importer is free software; you can redistribute it and/or
7
+ * modify it under the terms of the GNU Affero General Public License version 3
8
+ * as published by the Free Software Foundation with the addition of the
9
+ * following permission added to Section 15 as permitted in Section 7(a): FOR
10
+ * ANY PART OF THE COVERED WORK IN WHICH THE COPYRIGHT IS OWNED BY WP Ultimate
11
+ * CSV Importer, WP Ultimate CSV Importer DISCLAIMS THE WARRANTY OF NON
12
+ * INFRINGEMENT OF THIRD PARTY RIGHTS.
13
+ *
14
+ * WP Ultimate CSV Importer is distributed in the hope that it will be useful,
15
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
16
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public
17
+ * License for more details.
18
+ *
19
+ * You should have received a copy of the GNU Affero General Public License
20
+ * along with this program; if not, see http://www.gnu.org/licenses or write
21
+ * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
22
+ * Boston, MA 02110-1301 USA.
23
+ *
24
+ * You can contact Smackcoders at email address info@smackcoders.com.
25
+ *
26
+ * The interactive user interfaces in original and modified versions
27
+ * of this program must display Appropriate Legal Notices, as required under
28
+ * Section 5 of the GNU Affero General Public License version 3.
29
+ *
30
+ * In accordance with Section 7(b) of the GNU Affero General Public License
31
+ * version 3, these Appropriate Legal Notices must retain the display of the
32
+ * WP Ultimate CSV Importer copyright notice. If the display of the logo is
33
+ * not reasonably feasible for technical reasons, the Appropriate Legal
34
+ * Notices must display the words
35
+ * "Copyright Smackcoders. 2014. All rights reserved".
36
+ ********************************************************************************/
config/settings.php CHANGED
@@ -34,27 +34,16 @@
34
  * Notices must display the words
35
  * "Copyright Smackcoders. 2014. All rights reserved".
36
  ********************************************************************************/
37
- if ( ! defined( 'ABSPATH' ) )
38
- exit; // Exit if accessed directly
 
39
 
40
- global $wpdb;
41
- DEFINE('WP_DBNAME_CSVIMPORTER', $wpdb->dbname);
42
- DEFINE('WP_DBHOST_CSVIMPORTER', $wpdb->dbhost);
43
- DEFINE('WP_DBUSER_CSVIMPORTER', $wpdb->dbuser);
44
- DEFINE('WP_DBPASSWORD_CSVIMPORTER', $wpdb->dbpassword);
45
 
46
- class SkinnySettings { public static $CONFIG = array(
 
 
 
 
47
 
48
-
49
- "project name" => WP_CONST_ULTIMATE_CSV_IMP_NAME,
50
- "debug" => false,
51
- "preload model" => true, //true = all model classes will be loaded with each request;
52
- //false = model classes will be loaded only if explicitly required (use require_once)
53
-
54
- "session persistency" => false, //tmp in your project dir must be writeable by the server!
55
- "session timeout" => 1800, //in seconds!
56
-
57
- "unauthenticated default module" => "default", //set this to where you want unauthenticated users redirected.
58
- "unauthenticated default action" => "index",
59
- );}
60
-
34
  * Notices must display the words
35
  * "Copyright Smackcoders. 2014. All rights reserved".
36
  ********************************************************************************/
37
+ if (!defined('ABSPATH')) {
38
+ exit;
39
+ } // Exit if accessed directly
40
 
41
+ class SkinnySettings {
42
+ public static $CONFIG = array(
 
 
 
43
 
44
+ "project name" => WP_CONST_ULTIMATE_CSV_IMP_NAME, "debug" => false, "preload model" => true, //true = all model classes will be loaded with each request;
45
+ //false = model classes will be loaded only if explicitly required (use require_once)
46
+ "unauthenticated default module" => "default", //set this to where you want unauthenticated users redirected.
47
+ "unauthenticated default action" => "index",);
48
+ }
49
 
 
 
 
 
 
 
 
 
 
 
 
 
 
css/bootstrap.css CHANGED
@@ -3718,7 +3718,7 @@ input[type="button"].btn-block {
3718
  margin: 2px 0 0;
3719
  font-size: 14px;
3720
  list-style: none;
3721
- color:#fff;
3722
  background-color: #222222;
3723
  border: 1px solid #cccccc;
3724
  border: 1px solid rgba(0, 0, 0, 0.15);
@@ -4515,8 +4515,8 @@ textarea.input-group-sm > .input-group-btn > .btn {
4515
  min-height: 50px;
4516
  margin-bottom: 20px;
4517
  border: 1px solid transparent;
4518
- background-color:#222222 !important;
4519
- width:98%;
4520
  }
4521
 
4522
  .navbar:before,
@@ -4541,8 +4541,8 @@ textarea.input-group-sm > .input-group-btn > .btn {
4541
 
4542
  @media (min-width: 768px) {
4543
  .navbar {
4544
- margin-top:25px;
4545
- margin-right:15px;
4546
  }
4547
  }
4548
 
@@ -6302,7 +6302,7 @@ button.close {
6302
  display: block;
6303
  font-size: 12px;
6304
  line-height: 1.4;
6305
- / / opacity : 0;
6306
  filter: alpha(opacity=0);
6307
  visibility: visible;
6308
  }
@@ -7452,8 +7452,8 @@ td.visible-print {
7452
  .nav .open > a:hover,
7453
  .nav .open > a:focus {
7454
  background-color: #0074A2 !important;
7455
- color:#fff;
7456
- /* border-color: #428bca; */
7457
  }
7458
 
7459
  .nav .nav-divider {
3718
  margin: 2px 0 0;
3719
  font-size: 14px;
3720
  list-style: none;
3721
+ color: #fff;
3722
  background-color: #222222;
3723
  border: 1px solid #cccccc;
3724
  border: 1px solid rgba(0, 0, 0, 0.15);
4515
  min-height: 50px;
4516
  margin-bottom: 20px;
4517
  border: 1px solid transparent;
4518
+ background-color: #222222 !important;
4519
+ width: 98%;
4520
  }
4521
 
4522
  .navbar:before,
4541
 
4542
  @media (min-width: 768px) {
4543
  .navbar {
4544
+ margin-top: 25px;
4545
+ margin-right: 15px;
4546
  }
4547
  }
4548
 
6302
  display: block;
6303
  font-size: 12px;
6304
  line-height: 1.4;
6305
+ / / opacity: 0;
6306
  filter: alpha(opacity=0);
6307
  visibility: visible;
6308
  }
7452
  .nav .open > a:hover,
7453
  .nav .open > a:focus {
7454
  background-color: #0074A2 !important;
7455
+ color: #fff;
7456
+ /* border-color: #428bca; */
7457
  }
7458
 
7459
  .nav .nav-divider {
css/bootstrap.min.css CHANGED
@@ -6,4 +6,6356 @@
6
  * http://www.apache.org/licenses/LICENSE-2.0
7
  *
8
  * Designed and built with all the love in the world by @mdo and @fat.
9
- *//*! normalize.css v2.1.0 | MIT License | git.io/normalize */article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,video{display:inline-block}audio:not([controls]){display:none;height:0}[hidden]{display:none}html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}a:focus{outline:thin dotted}a:active,a:hover{outline:0}h1{margin:.67em 0;font-size:2em}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}hr{height:0;-moz-box-sizing:content-box;box-sizing:content-box}mark{color:#000;background:#ff0}code,kbd,pre,samp{font-family:monospace,serif;font-size:1em}pre{white-space:pre-wrap}q{quotes:"\201C" "\201D" "\2018" "\2019"}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:0}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid #c0c0c0}legend{padding:0;border:0}button,input,select,textarea{margin:0;font-family:inherit;font-size:100%}button,input{line-height:normal}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button}button[disabled],html input[disabled]{cursor:default}input[type="checkbox"],input[type="radio"]{padding:0;box-sizing:border-box}input[type="search"]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}textarea{overflow:auto;vertical-align:top}table{border-collapse:collapse;border-spacing:0}@media print{*{color:#000!important;text-shadow:none!important;background:transparent!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}.ir a:after,a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100%!important}@page{margin:2cm .5cm}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.table td,.table th{background-color:#fff!important}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table-bordered th,.table-bordered td{border:1px solid #ddd!important}}*,*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:62.5%;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.428571429;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}button,input,select[multiple],textarea{background-image:none}a{color:#428bca;text-decoration:none}a:hover,a:focus{color:#2a6496;text-decoration:underline}a:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}img{vertical-align:middle}.img-responsive{display:block;height:auto;max-width:100%}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;height:auto;max-width:100%;padding:4px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);border:0}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16.099999999999998px;font-weight:200;line-height:1.4}@media(min-width:768px){.lead{font-size:21px}}small{font-size:85%}cite{font-style:normal}.text-muted{color:#999}.text-primary{color:#428bca}.text-warning{color:#c09853}.text-danger{color:#b94a48}.text-success{color:#468847}.text-info{color:#3a87ad}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:500;line-height:1.1}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small{font-weight:normal;line-height:1;color:#999}h1,h2,h3{margin-top:20px;margin-bottom:10px}h4,h5,h6{margin-top:10px;margin-bottom:10px}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}h1 small,.h1 small{font-size:24px}h2 small,.h2 small{font-size:18px}h3 small,.h3 small,h4 small,.h4 small{font-size:14px}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-bottom:20px}dt,dd{line-height:1.428571429}dt{font-weight:bold}dd{margin-left:0}@media(min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}.dl-horizontal dd:before,.dl-horizontal dd:after{display:table;content:" "}.dl-horizontal dd:after{clear:both}.dl-horizontal dd:before,.dl-horizontal dd:after{display:table;content:" "}.dl-horizontal dd:after{clear:both}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999}abbr.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;border-left:5px solid #eee}blockquote p{font-size:17.5px;font-weight:300;line-height:1.25}blockquote p:last-child{margin-bottom:0}blockquote small{display:block;line-height:1.428571429;color:#999}blockquote small:before{content:'\2014 \00A0'}blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0}blockquote.pull-right p,blockquote.pull-right small{text-align:right}blockquote.pull-right small:before{content:''}blockquote.pull-right small:after{content:'\00A0 \2014'}q:before,q:after,blockquote:before,blockquote:after{content:""}address{display:block;margin-bottom:20px;font-style:normal;line-height:1.428571429}code,pre{font-family:Monaco,Menlo,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;white-space:nowrap;background-color:#f9f2f4;border-radius:4px}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.428571429;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre.prettyprint{margin-bottom:20px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.container:before,.container:after{display:table;content:" "}.container:after{clear:both}.container:before,.container:after{display:table;content:" "}.container:after{clear:both}.row{margin-right:-15px;margin-left:-15px}.row:before,.row:after{display:table;content:" "}.row:after{clear:both}.row:before,.row:after{display:table;content:" "}.row:after{clear:both}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12,.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12,.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12,.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11{float:left}.col-xs-1{width:8.333333333333332%}.col-xs-2{width:16.666666666666664%}.col-xs-3{width:25%}.col-xs-4{width:33.33333333333333%}.col-xs-5{width:41.66666666666667%}.col-xs-6{width:50%}.col-xs-7{width:58.333333333333336%}.col-xs-8{width:66.66666666666666%}.col-xs-9{width:75%}.col-xs-10{width:83.33333333333334%}.col-xs-11{width:91.66666666666666%}.col-xs-12{width:100%}@media(min-width:768px){.container{max-width:750px}.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11{float:left}.col-sm-1{width:8.333333333333332%}.col-sm-2{width:16.666666666666664%}.col-sm-3{width:25%}.col-sm-4{width:33.33333333333333%}.col-sm-5{width:41.66666666666667%}.col-sm-6{width:50%}.col-sm-7{width:58.333333333333336%}.col-sm-8{width:66.66666666666666%}.col-sm-9{width:75%}.col-sm-10{width:83.33333333333334%}.col-sm-11{width:91.66666666666666%}.col-sm-12{width:100%}.col-sm-push-1{left:8.333333333333332%}.col-sm-push-2{left:16.666666666666664%}.col-sm-push-3{left:25%}.col-sm-push-4{left:33.33333333333333%}.col-sm-push-5{left:41.66666666666667%}.col-sm-push-6{left:50%}.col-sm-push-7{left:58.333333333333336%}.col-sm-push-8{left:66.66666666666666%}.col-sm-push-9{left:75%}.col-sm-push-10{left:83.33333333333334%}.col-sm-push-11{left:91.66666666666666%}.col-sm-pull-1{right:8.333333333333332%}.col-sm-pull-2{right:16.666666666666664%}.col-sm-pull-3{right:25%}.col-sm-pull-4{right:33.33333333333333%}.col-sm-pull-5{right:41.66666666666667%}.col-sm-pull-6{right:50%}.col-sm-pull-7{right:58.333333333333336%}.col-sm-pull-8{right:66.66666666666666%}.col-sm-pull-9{right:75%}.col-sm-pull-10{right:83.33333333333334%}.col-sm-pull-11{right:91.66666666666666%}.col-sm-offset-1{margin-left:8.333333333333332%}.col-sm-offset-2{margin-left:16.666666666666664%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-4{margin-left:33.33333333333333%}.col-sm-offset-5{margin-left:41.66666666666667%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-7{margin-left:58.333333333333336%}.col-sm-offset-8{margin-left:66.66666666666666%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-10{margin-left:83.33333333333334%}.col-sm-offset-11{margin-left:91.66666666666666%}}@media(min-width:992px){.container{max-width:970px}.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11{float:left}.col-md-1{width:8.333333333333332%}.col-md-2{width:16.666666666666664%}.col-md-3{width:25%}.col-md-4{width:33.33333333333333%}.col-md-5{width:41.66666666666667%}.col-md-6{width:50%}.col-md-7{width:58.333333333333336%}.col-md-8{width:66.66666666666666%}.col-md-9{width:75%}.col-md-10{width:83.33333333333334%}.col-md-11{width:91.66666666666666%}.col-md-12{width:100%}.col-md-push-0{left:auto}.col-md-push-1{left:8.333333333333332%}.col-md-push-2{left:16.666666666666664%}.col-md-push-3{left:25%}.col-md-push-4{left:33.33333333333333%}.col-md-push-5{left:41.66666666666667%}.col-md-push-6{left:50%}.col-md-push-7{left:58.333333333333336%}.col-md-push-8{left:66.66666666666666%}.col-md-push-9{left:75%}.col-md-push-10{left:83.33333333333334%}.col-md-push-11{left:91.66666666666666%}.col-md-pull-0{right:auto}.col-md-pull-1{right:8.333333333333332%}.col-md-pull-2{right:16.666666666666664%}.col-md-pull-3{right:25%}.col-md-pull-4{right:33.33333333333333%}.col-md-pull-5{right:41.66666666666667%}.col-md-pull-6{right:50%}.col-md-pull-7{right:58.333333333333336%}.col-md-pull-8{right:66.66666666666666%}.col-md-pull-9{right:75%}.col-md-pull-10{right:83.33333333333334%}.col-md-pull-11{right:91.66666666666666%}.col-md-offset-0{margin-left:0}.col-md-offset-1{margin-left:8.333333333333332%}.col-md-offset-2{margin-left:16.666666666666664%}.col-md-offset-3{margin-left:25%}.col-md-offset-4{margin-left:33.33333333333333%}.col-md-offset-5{margin-left:41.66666666666667%}.col-md-offset-6{margin-left:50%}.col-md-offset-7{margin-left:58.333333333333336%}.col-md-offset-8{margin-left:66.66666666666666%}.col-md-offset-9{margin-left:75%}.col-md-offset-10{margin-left:83.33333333333334%}.col-md-offset-11{margin-left:91.66666666666666%}}@media(min-width:1200px){.container{max-width:1170px}.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11{float:left}.col-lg-1{width:8.333333333333332%}.col-lg-2{width:16.666666666666664%}.col-lg-3{width:25%}.col-lg-4{width:33.33333333333333%}.col-lg-5{width:41.66666666666667%}.col-lg-6{width:50%}.col-lg-7{width:58.333333333333336%}.col-lg-8{width:66.66666666666666%}.col-lg-9{width:75%}.col-lg-10{width:83.33333333333334%}.col-lg-11{width:91.66666666666666%}.col-lg-12{width:100%}.col-lg-push-0{left:auto}.col-lg-push-1{left:8.333333333333332%}.col-lg-push-2{left:16.666666666666664%}.col-lg-push-3{left:25%}.col-lg-push-4{left:33.33333333333333%}.col-lg-push-5{left:41.66666666666667%}.col-lg-push-6{left:50%}.col-lg-push-7{left:58.333333333333336%}.col-lg-push-8{left:66.66666666666666%}.col-lg-push-9{left:75%}.col-lg-push-10{left:83.33333333333334%}.col-lg-push-11{left:91.66666666666666%}.col-lg-pull-0{right:auto}.col-lg-pull-1{right:8.333333333333332%}.col-lg-pull-2{right:16.666666666666664%}.col-lg-pull-3{right:25%}.col-lg-pull-4{right:33.33333333333333%}.col-lg-pull-5{right:41.66666666666667%}.col-lg-pull-6{right:50%}.col-lg-pull-7{right:58.333333333333336%}.col-lg-pull-8{right:66.66666666666666%}.col-lg-pull-9{right:75%}.col-lg-pull-10{right:83.33333333333334%}.col-lg-pull-11{right:91.66666666666666%}.col-lg-offset-0{margin-left:0}.col-lg-offset-1{margin-left:8.333333333333332%}.col-lg-offset-2{margin-left:16.666666666666664%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-4{margin-left:33.33333333333333%}.col-lg-offset-5{margin-left:41.66666666666667%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-7{margin-left:58.333333333333336%}.col-lg-offset-8{margin-left:66.66666666666666%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-10{margin-left:83.33333333333334%}.col-lg-offset-11{margin-left:91.66666666666666%}}table{max-width:100%;background-color:transparent}th{text-align:left}.table{width:100%;margin-bottom:20px}.table thead>tr>th,.table tbody>tr>th,.table tfoot>tr>th,.table thead>tr>td,.table tbody>tr>td,.table tfoot>tr>td{padding:8px;line-height:1.428571429;vertical-align:top;border-top:1px solid #ddd}.table thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table caption+thead tr:first-child th,.table colgroup+thead tr:first-child th,.table thead:first-child tr:first-child th,.table caption+thead tr:first-child td,.table colgroup+thead tr:first-child td,.table thead:first-child tr:first-child td{border-top:0}.table tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed thead>tr>th,.table-condensed tbody>tr>th,.table-condensed tfoot>tr>th,.table-condensed thead>tr>td,.table-condensed tbody>tr>td,.table-condensed tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-child(odd)>td,.table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#f5f5f5}table col[class*="col-"]{display:table-column;float:none}table td[class*="col-"],table th[class*="col-"]{display:table-cell;float:none}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8;border-color:#d6e9c6}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td{background-color:#d0e9c6;border-color:#c9e2b3}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f2dede;border-color:#eed3d7}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td{background-color:#ebcccc;border-color:#e6c1c7}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#fcf8e3;border-color:#fbeed5}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td{background-color:#faf2cc;border-color:#f8e5be}@media(max-width:768px){.table-responsive{width:100%;margin-bottom:15px;overflow-x:scroll;overflow-y:hidden;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0;background-color:#fff}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>thead>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>thead>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;margin-bottom:5px;font-weight:bold}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="file"]{display:block}select[multiple],select[size]{height:auto}select optgroup{font-family:inherit;font-size:inherit;font-style:inherit}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}input[type="number"]::-webkit-outer-spin-button,input[type="number"]::-webkit-inner-spin-button{height:auto}.form-control:-moz-placeholder{color:#999}.form-control::-moz-placeholder{color:#999}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.428571429;color:#555;vertical-align:middle;background-color:#fff;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6)}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee}textarea.form-control{height:auto}.form-group{margin-bottom:15px}.radio,.checkbox{display:block;min-height:20px;padding-left:20px;margin-top:10px;margin-bottom:10px;vertical-align:middle}.radio label,.checkbox label{display:inline;margin-bottom:0;font-weight:normal;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{float:left;margin-left:-20px}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{display:inline-block;padding-left:20px;margin-bottom:0;font-weight:normal;vertical-align:middle;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="checkbox"][disabled],.radio[disabled],.radio-inline[disabled],.checkbox[disabled],.checkbox-inline[disabled],fieldset[disabled] input[type="radio"],fieldset[disabled] input[type="checkbox"],fieldset[disabled] .radio,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}textarea.input-sm{height:auto}.input-lg{height:45px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-lg{height:45px;line-height:45px}textarea.input-lg{height:auto}.has-warning .help-block,.has-warning .control-label{color:#c09853}.has-warning .form-control{border-color:#c09853;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#a47e3c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e}.has-warning .input-group-addon{color:#c09853;background-color:#fcf8e3;border-color:#c09853}.has-error .help-block,.has-error .control-label{color:#b94a48}.has-error .form-control{border-color:#b94a48;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#953b39;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392}.has-error .input-group-addon{color:#b94a48;background-color:#f2dede;border-color:#b94a48}.has-success .help-block,.has-success .control-label{color:#468847}.has-success .form-control{border-color:#468847;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#356635;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b}.has-success .input-group-addon{color:#468847;background-color:#dff0d8;border-color:#468847}.form-control-static{padding-top:7px;margin-bottom:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media(min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block}.form-inline .radio,.form-inline .checkbox{display:inline-block;padding-left:0;margin-top:0;margin-bottom:0}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{float:none;margin-left:0}}.form-horizontal .control-label,.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}.form-horizontal .form-group:before,.form-horizontal .form-group:after{display:table;content:" "}.form-horizontal .form-group:after{clear:both}.form-horizontal .form-group:before,.form-horizontal .form-group:after{display:table;content:" "}.form-horizontal .form-group:after{clear:both}@media(min-width:768px){.form-horizontal .control-label{text-align:right}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:normal;line-height:1.428571429;text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;border:1px solid transparent;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.btn:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus{color:#333;text-decoration:none}.btn:active,.btn.active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{color:#333;background-color:#ebebeb;border-color:#adadad}.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#fff;border-color:#ccc}.btn-primary{color:#fff;background-color:#428bca;border-color:#357ebd}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#3276b1;border-color:#285e8e}.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#428bca;border-color:#357ebd}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.open .dropdown-toggle.btn-warning{color:#fff;background-color:#ed9c28;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open .dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#f0ad4e;border-color:#eea236}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#d2322d;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#d9534f;border-color:#d43f3a}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{color:#fff;background-color:#47a447;border-color:#398439}.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#5cb85c;border-color:#4cae4c}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.open .dropdown-toggle.btn-info{color:#fff;background-color:#39b3d7;border-color:#269abc}.btn-info:active,.btn-info.active,.open .dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#5bc0de;border-color:#46b8da}.btn-link{font-weight:normal;color:#428bca;cursor:pointer;border-radius:0}.btn-link,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#2a6496;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#999;text-decoration:none}.btn-lg{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-sm,.btn-xs{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs{padding:1px 5px}.btn-block{display:block;width:100%;padding-right:0;padding-left:0}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;transition:height .35s ease}@font-face{font-family:'Glyphicons Halflings';src:url('../fonts/glyphicons-halflings-regular.eot');src:url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'),url('../fonts/glyphicons-halflings-regular.woff') format('woff'),url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'),url('../fonts/glyphicons-halflings-regular.svg#glyphicons-halflingsregular') format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';-webkit-font-smoothing:antialiased;font-style:normal;font-weight:normal;line-height:1}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-print:before{content:"\e045"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-briefcase:before{content:"\1f4bc"}.glyphicon-calendar:before{content:"\1f4c5"}.glyphicon-pushpin:before{content:"\1f4cc"}.glyphicon-paperclip:before{content:"\1f4ce"}.glyphicon-camera:before{content:"\1f4f7"}.glyphicon-lock:before{content:"\1f512"}.glyphicon-bell:before{content:"\1f514"}.glyphicon-bookmark:before{content:"\1f516"}.glyphicon-fire:before{content:"\1f525"}.glyphicon-wrench:before{content:"\1f527"}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid #000;border-right:4px solid transparent;border-bottom:0 dotted;border-left:4px solid transparent;content:""}.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;list-style:none;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.428571429;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{color:#fff;text-decoration:none;background-color:#428bca}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;background-color:#428bca;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#999}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.428571429;color:#999}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0 dotted;border-bottom:4px solid #000;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media(min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}}.btn-default .caret{border-top-color:#333}.btn-primary .caret,.btn-success .caret,.btn-warning .caret,.btn-danger .caret,.btn-info .caret{border-top-color:#fff}.dropup .btn-default .caret{border-bottom-color:#333}.dropup .btn-primary .caret,.dropup .btn-success .caret,.dropup .btn-warning .caret,.dropup .btn-danger .caret,.dropup .btn-info .caret{border-bottom-color:#fff}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group>.btn:focus,.btn-group-vertical>.btn:focus{outline:0}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar:before,.btn-toolbar:after{display:table;content:" "}.btn-toolbar:after{clear:both}.btn-toolbar:before,.btn-toolbar:after{display:table;content:" "}.btn-toolbar:after{clear:both}.btn-toolbar .btn-group{float:left}.btn-toolbar>.btn+.btn,.btn-toolbar>.btn-group+.btn,.btn-toolbar>.btn+.btn-group,.btn-toolbar>.btn-group+.btn-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child>.btn:last-child,.btn-group>.btn-group:first-child>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group-xs>.btn{padding:5px 10px;padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after{display:table;content:" "}.btn-group-vertical>.btn-group:after{clear:both}.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after{display:table;content:" "}.btn-group-vertical>.btn-group:after{clear:both}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-right-radius:0;border-bottom-left-radius:4px;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child>.btn:last-child,.btn-group-vertical>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;border-collapse:separate;table-layout:fixed}.btn-group-justified .btn{display:table-cell;float:none;width:1%}[data-toggle="buttons"]>.btn>input[type="radio"],[data-toggle="buttons"]>.btn>input[type="checkbox"]{display:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group.col{float:none;padding-right:0;padding-left:0}.input-group .form-control{width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:45px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:45px;line-height:45px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:normal;line-height:1;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-4px}.input-group-btn>.btn:hover,.input-group-btn>.btn:active{z-index:2}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav:before,.nav:after{display:table;content:" "}.nav:after{clear:both}.nav:before,.nav:after{display:table;content:" "}.nav:after{clear:both}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#999}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#999;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#428bca}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.428571429;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center}@media(min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}}.nav-tabs.nav-justified>li>a{margin-right:0;border-bottom:1px solid #ddd}.nav-tabs.nav-justified>.active>a{border-bottom-color:#fff}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:5px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#428bca}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{text-align:center}@media(min-width:768px){.nav-justified>li{display:table-cell;width:1%}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-bottom:1px solid #ddd}.nav-tabs-justified>.active>a{border-bottom-color:#fff}.tabbable:before,.tabbable:after{display:table;content:" "}.tabbable:after{clear:both}.tabbable:before,.tabbable:after{display:table;content:" "}.tabbable:after{clear:both}.tab-content>.tab-pane,.pill-content>.pill-pane{display:none}.tab-content>.active,.pill-content>.active{display:block}.nav .caret{border-top-color:#428bca;border-bottom-color:#428bca}.nav a:hover .caret{border-top-color:#2a6496;border-bottom-color:#2a6496}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;z-index:1000;min-height:50px;margin-bottom:20px;border:1px solid transparent}.navbar:before,.navbar:after{display:table;content:" "}.navbar:after{clear:both}.navbar:before,.navbar:after{display:table;content:" "}.navbar:after{clear:both}@media(min-width:768px){.navbar{border-radius:4px}}.navbar-header:before,.navbar-header:after{display:table;content:" "}.navbar-header:after{clear:both}.navbar-header:before,.navbar-header:after{display:table;content:" "}.navbar-header:after{clear:both}@media(min-width:768px){.navbar-header{float:left}}.navbar-collapse{max-height:340px;padding-right:15px;padding-left:15px;overflow-x:visible;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse:before,.navbar-collapse:after{display:table;content:" "}.navbar-collapse:after{clear:both}.navbar-collapse:before,.navbar-collapse:after{display:table;content:" "}.navbar-collapse:after{clear:both}.navbar-collapse.in{overflow-y:auto}@media(min-width:768px){.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-collapse .navbar-nav.navbar-left:first-child{margin-left:-15px}.navbar-collapse .navbar-nav.navbar-right:last-child{margin-right:-15px}.navbar-collapse .navbar-text:last-child{margin-right:0}}.container>.navbar-header,.container>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media(min-width:768px){.container>.navbar-header,.container>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{border-width:0 0 1px}@media(min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;border-width:0 0 1px}@media(min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;z-index:1030}.navbar-fixed-bottom{bottom:0;margin-bottom:0}.navbar-brand{float:left;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}@media(min-width:768px){.navbar>.container .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;border:1px solid transparent;border-radius:4px}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media(min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media(max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media(min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}@media(min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1)}@media(min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;padding-left:0;margin-top:0;margin-bottom:0}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{float:none;margin-left:0}}@media(max-width:767px){.navbar-form .form-group{margin-bottom:5px}}@media(min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-nav.pull-right>li>.dropdown-menu,.navbar-nav>li>.dropdown-menu.pull-right{right:0;left:auto}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-text{float:left;margin-top:15px;margin-bottom:15px}@media(min-width:768px){.navbar-text{margin-right:15px;margin-left:15px}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#ccc}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e6e6e6}.navbar-default .navbar-nav>.dropdown>a:hover .caret,.navbar-default .navbar-nav>.dropdown>a:focus .caret{border-top-color:#333;border-bottom-color:#333}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.open>a .caret,.navbar-default .navbar-nav>.open>a:hover .caret,.navbar-default .navbar-nav>.open>a:focus .caret{border-top-color:#555;border-bottom-color:#555}.navbar-default .navbar-nav>.dropdown>a .caret{border-top-color:#777;border-bottom-color:#777}@media(max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#999}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#999}.navbar-inverse .navbar-nav>li>a{color:#999}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.dropdown>a:hover .caret{border-top-color:#fff;border-bottom-color:#fff}.navbar-inverse .navbar-nav>.dropdown>a .caret{border-top-color:#999;border-bottom-color:#999}.navbar-inverse .navbar-nav>.open>a .caret,.navbar-inverse .navbar-nav>.open>a:hover .caret,.navbar-inverse .navbar-nav>.open>a:focus .caret{border-top-color:#fff;border-bottom-color:#fff}@media(max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#999}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#999}.navbar-inverse .navbar-link:hover{color:#fff}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#999}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.428571429;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{background-color:#eee}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:2;color:#fff;cursor:default;background-color:#428bca;border-color:#428bca}.pagination>.disabled>span,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#999;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager:before,.pager:after{display:table;content:" "}.pager:after{clear:both}.pager:before,.pager:after{display:table;content:" "}.pager:after{clear:both}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#999;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}.label[href]:hover,.label[href]:focus{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.label-default{background-color:#999}.label-default[href]:hover,.label-default[href]:focus{background-color:#808080}.label-primary{background-color:#428bca}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#3071a9}.label-success{background-color:#5cb85c}.label-success[href]:hover,.label-success[href]:focus{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:bold;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;background-color:#999;border-radius:10px}.badge:empty{display:none}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}.btn .badge{position:relative;top:-1px}a.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#428bca;background-color:#fff}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding:30px;margin-bottom:30px;font-size:21px;font-weight:200;line-height:2.1428571435;color:inherit;background-color:#eee}.jumbotron h1{line-height:1;color:inherit}.jumbotron p{line-height:1.4}.container .jumbotron{border-radius:6px}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron{padding-right:60px;padding-left:60px}.jumbotron h1{font-size:63px}}.thumbnail{display:inline-block;display:block;height:auto;max-width:100%;padding:4px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.thumbnail>img{display:block;height:auto;max-width:100%}a.thumbnail:hover,a.thumbnail:focus{border-color:#428bca}.thumbnail>img{margin-right:auto;margin-left:auto}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:bold}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable{padding-right:35px}.alert-dismissable .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#468847;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#356635}.alert-info{color:#3a87ad;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#2d6987}.alert-warning{color:#c09853;background-color:#fcf8e3;border-color:#fbeed5}.alert-warning hr{border-top-color:#f8e5be}.alert-warning .alert-link{color:#a47e3c}.alert-danger{color:#b94a48;background-color:#f2dede;border-color:#eed3d7}.alert-danger hr{border-top-color:#e6c1c7}.alert-danger .alert-link{color:#953b39}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-moz-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:0 0}to{background-position:40px 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;color:#fff;text-align:center;background-color:#428bca;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-transition:width .6s ease;transition:width .6s ease}.progress-striped .progress-bar{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-size:40px 40px}.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-moz-animation:progress-bar-stripes 2s linear infinite;-ms-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.media,.media-body{overflow:hidden;zoom:1}.media,.media .media{margin-top:15px}.media:first-child{margin-top:0}.media-object{display:block}.media-heading{margin:0 0 5px}.media>.pull-left{margin-right:10px}.media>.pull-right{margin-left:10px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:hover,a.list-group-item:focus{text-decoration:none;background-color:#f5f5f5}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#e1edf7}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-body:before,.panel-body:after{display:table;content:" "}.panel-body:after{clear:both}.panel-body:before,.panel-body:after{display:table;content:" "}.panel-body:after{clear:both}.panel>.list-group{margin-bottom:0}.panel>.list-group .list-group-item{border-width:1px 0}.panel>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.panel>.list-group .list-group-item:last-child{border-bottom:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.panel>.table{margin-bottom:0}.panel>.panel-body+.table{border-top:1px solid #ddd}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-title{margin-top:0;margin-bottom:0;font-size:16px}.panel-title>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-group .panel{margin-bottom:0;overflow:hidden;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse .panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse .panel-body{border-top-color:#ddd}.panel-default>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#428bca}.panel-primary>.panel-heading{color:#fff;background-color:#428bca;border-color:#428bca}.panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#428bca}.panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#428bca}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#468847;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse .panel-body{border-top-color:#d6e9c6}.panel-success>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#d6e9c6}.panel-warning{border-color:#fbeed5}.panel-warning>.panel-heading{color:#c09853;background-color:#fcf8e3;border-color:#fbeed5}.panel-warning>.panel-heading+.panel-collapse .panel-body{border-top-color:#fbeed5}.panel-warning>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#fbeed5}.panel-danger{border-color:#eed3d7}.panel-danger>.panel-heading{color:#b94a48;background-color:#f2dede;border-color:#eed3d7}.panel-danger>.panel-heading+.panel-collapse .panel-body{border-top-color:#eed3d7}.panel-danger>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#eed3d7}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#3a87ad;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse .panel-body{border-top-color:#bce8f1}.panel-info>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#bce8f1}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:bold;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}body.modal-open,.modal-open .navbar-fixed-top,.modal-open .navbar-fixed-bottom{margin-right:15px}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;display:none;overflow:auto;overflow-y:scroll}.modal.fade .modal-dialog{-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);transform:translate(0,-25%);-webkit-transition:-webkit-transform .3s ease-out;-moz-transition:-moz-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0)}.modal-dialog{z-index:1050;width:auto;padding:10px;margin-right:auto;margin-left:auto}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,0.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);background-clip:padding-box}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1030;background-color:#000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.modal-header{min-height:16.428571429px;padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.428571429}.modal-body{position:relative;padding:20px}.modal-footer{padding:19px 20px 20px;margin-top:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer:before,.modal-footer:after{display:table;content:" "}.modal-footer:after{clear:both}.modal-footer:before,.modal-footer:after{display:table;content:" "}.modal-footer:after{clear:both}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}@media screen and (min-width:768px){.modal-dialog{right:auto;left:50%;width:600px;padding-top:30px;padding-bottom:30px}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}}.tooltip{position:absolute;z-index:1030;display:block;font-size:12px;line-height:1.4;opacity:0;filter:alpha(opacity=0);visibility:visible}.tooltip.in{opacity:.9;filter:alpha(opacity=90)}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top-color:#000;border-width:5px 5px 0}.tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-top-color:#000;border-width:5px 5px 0}.tooltip.top-right .tooltip-arrow{right:5px;bottom:0;border-top-color:#000;border-width:5px 5px 0}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-right-color:#000;border-width:5px 5px 5px 0}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-left-color:#000;border-width:5px 0 5px 5px}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-bottom-color:#000;border-width:0 5px 5px}.tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-bottom-color:#000;border-width:0 5px 5px}.tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-bottom-color:#000;border-width:0 5px 5px}.popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:276px;padding:1px;text-align:left;white-space:normal;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);background-clip:padding-box}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;font-weight:normal;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover .arrow,.popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover .arrow{border-width:11px}.popover .arrow:after{border-width:10px;content:""}.popover.top .arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,0.25);border-bottom-width:0}.popover.top .arrow:after{bottom:1px;margin-left:-10px;border-top-color:#fff;border-bottom-width:0;content:" "}.popover.right .arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,0.25);border-left-width:0}.popover.right .arrow:after{bottom:-10px;left:1px;border-right-color:#fff;border-left-width:0;content:" "}.popover.bottom .arrow{top:-11px;left:50%;margin-left:-11px;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,0.25);border-top-width:0}.popover.bottom .arrow:after{top:1px;margin-left:-10px;border-bottom-color:#fff;border-top-width:0;content:" "}.popover.left .arrow{top:50%;right:-11px;margin-top:-11px;border-left-color:#999;border-left-color:rgba(0,0,0,0.25);border-right-width:0}.popover.left .arrow:after{right:1px;bottom:-10px;border-left-color:#fff;border-right-width:0;content:" "}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;height:auto;max-width:100%;line-height:1}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6);opacity:.5;filter:alpha(opacity=50)}.carousel-control.left{background-image:-webkit-gradient(linear,0 top,100% top,from(rgba(0,0,0,0.5)),to(rgba(0,0,0,0.0001)));background-image:-webkit-linear-gradient(left,color-stop(rgba(0,0,0,0.5) 0),color-stop(rgba(0,0,0,0.0001) 100%));background-image:-moz-linear-gradient(left,rgba(0,0,0,0.5) 0,rgba(0,0,0,0.0001) 100%);background-image:linear-gradient(to right,rgba(0,0,0,0.5) 0,rgba(0,0,0,0.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000',endColorstr='#00000000',GradientType=1)}.carousel-control.right{right:0;left:auto;background-image:-webkit-gradient(linear,0 top,100% top,from(rgba(0,0,0,0.0001)),to(rgba(0,0,0,0.5)));background-image:-webkit-linear-gradient(left,color-stop(rgba(0,0,0,0.0001) 0),color-stop(rgba(0,0,0,0.5) 100%));background-image:-moz-linear-gradient(left,rgba(0,0,0,0.0001) 0,rgba(0,0,0,0.5) 100%);background-image:linear-gradient(to right,rgba(0,0,0,0.0001) 0,rgba(0,0,0,0.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000',endColorstr='#80000000',GradientType=1)}.carousel-control:hover,.carousel-control:focus{color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;left:50%;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;margin-top:-10px;margin-left:-10px;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-15px;margin-left:-15px;font-size:30px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after{display:table;content:" "}.clearfix:after{clear:both}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.affix{position:fixed}@-ms-viewport{width:device-width}@media screen and (max-width:400px){@-ms-viewport{width:320px}}.hidden{display:none!important;visibility:hidden!important}.visible-xs{display:none!important}tr.visible-xs{display:none!important}th.visible-xs,td.visible-xs{display:none!important}@media(max-width:767px){.visible-xs{display:block!important}tr.visible-xs{display:table-row!important}th.visible-xs,td.visible-xs{display:table-cell!important}}@media(min-width:768px) and (max-width:991px){.visible-xs.visible-sm{display:block!important}tr.visible-xs.visible-sm{display:table-row!important}th.visible-xs.visible-sm,td.visible-xs.visible-sm{display:table-cell!important}}@media(min-width:992px) and (max-width:1199px){.visible-xs.visible-md{display:block!important}tr.visible-xs.visible-md{display:table-row!important}th.visible-xs.visible-md,td.visible-xs.visible-md{display:table-cell!important}}@media(min-width:1200px){.visible-xs.visible-lg{display:block!important}tr.visible-xs.visible-lg{display:table-row!important}th.visible-xs.visible-lg,td.visible-xs.visible-lg{display:table-cell!important}}.visible-sm{display:none!important}tr.visible-sm{display:none!important}th.visible-sm,td.visible-sm{display:none!important}@media(max-width:767px){.visible-sm.visible-xs{display:block!important}tr.visible-sm.visible-xs{display:table-row!important}th.visible-sm.visible-xs,td.visible-sm.visible-xs{display:table-cell!important}}@media(min-width:768px) and (max-width:991px){.visible-sm{display:block!important}tr.visible-sm{display:table-row!important}th.visible-sm,td.visible-sm{display:table-cell!important}}@media(min-width:992px) and (max-width:1199px){.visible-sm.visible-md{display:block!important}tr.visible-sm.visible-md{display:table-row!important}th.visible-sm.visible-md,td.visible-sm.visible-md{display:table-cell!important}}@media(min-width:1200px){.visible-sm.visible-lg{display:block!important}tr.visible-sm.visible-lg{display:table-row!important}th.visible-sm.visible-lg,td.visible-sm.visible-lg{display:table-cell!important}}.visible-md{display:none!important}tr.visible-md{display:none!important}th.visible-md,td.visible-md{display:none!important}@media(max-width:767px){.visible-md.visible-xs{display:block!important}tr.visible-md.visible-xs{display:table-row!important}th.visible-md.visible-xs,td.visible-md.visible-xs{display:table-cell!important}}@media(min-width:768px) and (max-width:991px){.visible-md.visible-sm{display:block!important}tr.visible-md.visible-sm{display:table-row!important}th.visible-md.visible-sm,td.visible-md.visible-sm{display:table-cell!important}}@media(min-width:992px) and (max-width:1199px){.visible-md{display:block!important}tr.visible-md{display:table-row!important}th.visible-md,td.visible-md{display:table-cell!important}}@media(min-width:1200px){.visible-md.visible-lg{display:block!important}tr.visible-md.visible-lg{display:table-row!important}th.visible-md.visible-lg,td.visible-md.visible-lg{display:table-cell!important}}.visible-lg{display:none!important}tr.visible-lg{display:none!important}th.visible-lg,td.visible-lg{display:none!important}@media(max-width:767px){.visible-lg.visible-xs{display:block!important}tr.visible-lg.visible-xs{display:table-row!important}th.visible-lg.visible-xs,td.visible-lg.visible-xs{display:table-cell!important}}@media(min-width:768px) and (max-width:991px){.visible-lg.visible-sm{display:block!important}tr.visible-lg.visible-sm{display:table-row!important}th.visible-lg.visible-sm,td.visible-lg.visible-sm{display:table-cell!important}}@media(min-width:992px) and (max-width:1199px){.visible-lg.visible-md{display:block!important}tr.visible-lg.visible-md{display:table-row!important}th.visible-lg.visible-md,td.visible-lg.visible-md{display:table-cell!important}}@media(min-width:1200px){.visible-lg{display:block!important}tr.visible-lg{display:table-row!important}th.visible-lg,td.visible-lg{display:table-cell!important}}.hidden-xs{display:block!important}tr.hidden-xs{display:table-row!important}th.hidden-xs,td.hidden-xs{display:table-cell!important}@media(max-width:767px){.hidden-xs{display:none!important}tr.hidden-xs{display:none!important}th.hidden-xs,td.hidden-xs{display:none!important}}@media(min-width:768px) and (max-width:991px){.hidden-xs.hidden-sm{display:none!important}tr.hidden-xs.hidden-sm{display:none!important}th.hidden-xs.hidden-sm,td.hidden-xs.hidden-sm{display:none!important}}@media(min-width:992px) and (max-width:1199px){.hidden-xs.hidden-md{display:none!important}tr.hidden-xs.hidden-md{display:none!important}th.hidden-xs.hidden-md,td.hidden-xs.hidden-md{display:none!important}}@media(min-width:1200px){.hidden-xs.hidden-lg{display:none!important}tr.hidden-xs.hidden-lg{display:none!important}th.hidden-xs.hidden-lg,td.hidden-xs.hidden-lg{display:none!important}}.hidden-sm{display:block!important}tr.hidden-sm{display:table-row!important}th.hidden-sm,td.hidden-sm{display:table-cell!important}@media(max-width:767px){.hidden-sm.hidden-xs{display:none!important}tr.hidden-sm.hidden-xs{display:none!important}th.hidden-sm.hidden-xs,td.hidden-sm.hidden-xs{display:none!important}}@media(min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}tr.hidden-sm{display:none!important}th.hidden-sm,td.hidden-sm{display:none!important}}@media(min-width:992px) and (max-width:1199px){.hidden-sm.hidden-md{display:none!important}tr.hidden-sm.hidden-md{display:none!important}th.hidden-sm.hidden-md,td.hidden-sm.hidden-md{display:none!important}}@media(min-width:1200px){.hidden-sm.hidden-lg{display:none!important}tr.hidden-sm.hidden-lg{display:none!important}th.hidden-sm.hidden-lg,td.hidden-sm.hidden-lg{display:none!important}}.hidden-md{display:block!important}tr.hidden-md{display:table-row!important}th.hidden-md,td.hidden-md{display:table-cell!important}@media(max-width:767px){.hidden-md.hidden-xs{display:none!important}tr.hidden-md.hidden-xs{display:none!important}th.hidden-md.hidden-xs,td.hidden-md.hidden-xs{display:none!important}}@media(min-width:768px) and (max-width:991px){.hidden-md.hidden-sm{display:none!important}tr.hidden-md.hidden-sm{display:none!important}th.hidden-md.hidden-sm,td.hidden-md.hidden-sm{display:none!important}}@media(min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}tr.hidden-md{display:none!important}th.hidden-md,td.hidden-md{display:none!important}}@media(min-width:1200px){.hidden-md.hidden-lg{display:none!important}tr.hidden-md.hidden-lg{display:none!important}th.hidden-md.hidden-lg,td.hidden-md.hidden-lg{display:none!important}}.hidden-lg{display:block!important}tr.hidden-lg{display:table-row!important}th.hidden-lg,td.hidden-lg{display:table-cell!important}@media(max-width:767px){.hidden-lg.hidden-xs{display:none!important}tr.hidden-lg.hidden-xs{display:none!important}th.hidden-lg.hidden-xs,td.hidden-lg.hidden-xs{display:none!important}}@media(min-width:768px) and (max-width:991px){.hidden-lg.hidden-sm{display:none!important}tr.hidden-lg.hidden-sm{display:none!important}th.hidden-lg.hidden-sm,td.hidden-lg.hidden-sm{display:none!important}}@media(min-width:992px) and (max-width:1199px){.hidden-lg.hidden-md{display:none!important}tr.hidden-lg.hidden-md{display:none!important}th.hidden-lg.hidden-md,td.hidden-lg.hidden-md{display:none!important}}@media(min-width:1200px){.hidden-lg{display:none!important}tr.hidden-lg{display:none!important}th.hidden-lg,td.hidden-lg{display:none!important}}.visible-print{display:none!important}tr.visible-print{display:none!important}th.visible-print,td.visible-print{display:none!important}@media print{.visible-print{display:block!important}tr.visible-print{display:table-row!important}th.visible-print,td.visible-print{display:table-cell!important}.hidden-print{display:none!important}tr.hidden-print{display:none!important}th.hidden-print,td.hidden-print{display:none!important}}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6
  * http://www.apache.org/licenses/LICENSE-2.0
7
  *
8
  * Designed and built with all the love in the world by @mdo and @fat.
9
+ *//*! normalize.css v2.1.0 | MIT License | git.io/normalize */
10
+ article, aside, details, figcaption, figure, footer, header, hgroup, main, nav, section, summary {
11
+ display: block
12
+ }
13
+
14
+ audio, canvas, video {
15
+ display: inline-block
16
+ }
17
+
18
+ audio:not([controls]) {
19
+ display: none;
20
+ height: 0
21
+ }
22
+
23
+ [hidden] {
24
+ display: none
25
+ }
26
+
27
+ html {
28
+ font-family: sans-serif;
29
+ -webkit-text-size-adjust: 100%;
30
+ -ms-text-size-adjust: 100%
31
+ }
32
+
33
+ body {
34
+ margin: 0
35
+ }
36
+
37
+ a:focus {
38
+ outline: thin dotted
39
+ }
40
+
41
+ a:active, a:hover {
42
+ outline: 0
43
+ }
44
+
45
+ h1 {
46
+ margin: .67em 0;
47
+ font-size: 2em
48
+ }
49
+
50
+ abbr[title] {
51
+ border-bottom: 1px dotted
52
+ }
53
+
54
+ b, strong {
55
+ font-weight: bold
56
+ }
57
+
58
+ dfn {
59
+ font-style: italic
60
+ }
61
+
62
+ hr {
63
+ height: 0;
64
+ -moz-box-sizing: content-box;
65
+ box-sizing: content-box
66
+ }
67
+
68
+ mark {
69
+ color: #000;
70
+ background: #ff0
71
+ }
72
+
73
+ code, kbd, pre, samp {
74
+ font-family: monospace, serif;
75
+ font-size: 1em
76
+ }
77
+
78
+ pre {
79
+ white-space: pre-wrap
80
+ }
81
+
82
+ q {
83
+ quotes: "\201C" "\201D" "\2018" "\2019"
84
+ }
85
+
86
+ small {
87
+ font-size: 80%
88
+ }
89
+
90
+ sub, sup {
91
+ position: relative;
92
+ font-size: 75%;
93
+ line-height: 0;
94
+ vertical-align: baseline
95
+ }
96
+
97
+ sup {
98
+ top: -0.5em
99
+ }
100
+
101
+ sub {
102
+ bottom: -0.25em
103
+ }
104
+
105
+ img {
106
+ border: 0
107
+ }
108
+
109
+ svg:not(:root) {
110
+ overflow: hidden
111
+ }
112
+
113
+ figure {
114
+ margin: 0
115
+ }
116
+
117
+ fieldset {
118
+ padding: .35em .625em .75em;
119
+ margin: 0 2px;
120
+ border: 1px solid #c0c0c0
121
+ }
122
+
123
+ legend {
124
+ padding: 0;
125
+ border: 0
126
+ }
127
+
128
+ button, input, select, textarea {
129
+ margin: 0;
130
+ font-family: inherit;
131
+ font-size: 100%
132
+ }
133
+
134
+ button, input {
135
+ line-height: normal
136
+ }
137
+
138
+ button, select {
139
+ text-transform: none
140
+ }
141
+
142
+ button, html input[type="button"], input[type="reset"], input[type="submit"] {
143
+ cursor: pointer;
144
+ -webkit-appearance: button
145
+ }
146
+
147
+ button[disabled], html input[disabled] {
148
+ cursor: default
149
+ }
150
+
151
+ input[type="checkbox"], input[type="radio"] {
152
+ padding: 0;
153
+ box-sizing: border-box
154
+ }
155
+
156
+ input[type="search"] {
157
+ -webkit-box-sizing: content-box;
158
+ -moz-box-sizing: content-box;
159
+ box-sizing: content-box;
160
+ -webkit-appearance: textfield
161
+ }
162
+
163
+ input[type="search"]::-webkit-search-cancel-button, input[type="search"]::-webkit-search-decoration {
164
+ -webkit-appearance: none
165
+ }
166
+
167
+ button::-moz-focus-inner, input::-moz-focus-inner {
168
+ padding: 0;
169
+ border: 0
170
+ }
171
+
172
+ textarea {
173
+ overflow: auto;
174
+ vertical-align: top
175
+ }
176
+
177
+ table {
178
+ border-collapse: collapse;
179
+ border-spacing: 0
180
+ }
181
+
182
+ @media print {
183
+ * {
184
+ color: #000 !important;
185
+ text-shadow: none !important;
186
+ background: transparent !important;
187
+ box-shadow: none !important
188
+ }
189
+
190
+ a, a:visited {
191
+ text-decoration: underline
192
+ }
193
+
194
+ a[href]:after {
195
+ content: " (" attr(href) ")"
196
+ }
197
+
198
+ abbr[title]:after {
199
+ content: " (" attr(title) ")"
200
+ }
201
+
202
+ .ir a:after, a[href^="javascript:"]:after, a[href^="#"]:after {
203
+ content: ""
204
+ }
205
+
206
+ pre, blockquote {
207
+ border: 1px solid #999;
208
+ page-break-inside: avoid
209
+ }
210
+
211
+ thead {
212
+ display: table-header-group
213
+ }
214
+
215
+ tr, img {
216
+ page-break-inside: avoid
217
+ }
218
+
219
+ img {
220
+ max-width: 100% !important
221
+ }
222
+
223
+ @page {
224
+ margin: 2cm .5cm
225
+ }
226
+
227
+ p, h2, h3 {
228
+ orphans: 3;
229
+ widows: 3
230
+ }
231
+
232
+ h2, h3 {
233
+ page-break-after: avoid
234
+ }
235
+
236
+ .navbar {
237
+ display: none
238
+ }
239
+
240
+ .table td, .table th {
241
+ background-color: #fff !important
242
+ }
243
+
244
+ .btn > .caret, .dropup > .btn > .caret {
245
+ border-top-color: #000 !important
246
+ }
247
+
248
+ .label {
249
+ border: 1px solid #000
250
+ }
251
+
252
+ .table {
253
+ border-collapse: collapse !important
254
+ }
255
+
256
+ .table-bordered th, .table-bordered td {
257
+ border: 1px solid #ddd !important
258
+ }
259
+ }
260
+
261
+ *, *:before, *:after {
262
+ -webkit-box-sizing: border-box;
263
+ -moz-box-sizing: border-box;
264
+ box-sizing: border-box
265
+ }
266
+
267
+ html {
268
+ font-size: 62.5%;
269
+ -webkit-tap-highlight-color: rgba(0, 0, 0, 0)
270
+ }
271
+
272
+ body {
273
+ font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
274
+ font-size: 14px;
275
+ line-height: 1.428571429;
276
+ color: #333;
277
+ background-color: #fff
278
+ }
279
+
280
+ input, button, select, textarea {
281
+ font-family: inherit;
282
+ font-size: inherit;
283
+ line-height: inherit
284
+ }
285
+
286
+ button, input, select[multiple], textarea {
287
+ background-image: none
288
+ }
289
+
290
+ a {
291
+ color: #428bca;
292
+ text-decoration: none
293
+ }
294
+
295
+ a:hover, a:focus {
296
+ color: #2a6496;
297
+ text-decoration: underline
298
+ }
299
+
300
+ a:focus {
301
+ outline: thin dotted #333;
302
+ outline: 5px auto -webkit-focus-ring-color;
303
+ outline-offset: -2px
304
+ }
305
+
306
+ img {
307
+ vertical-align: middle
308
+ }
309
+
310
+ .img-responsive {
311
+ display: block;
312
+ height: auto;
313
+ max-width: 100%
314
+ }
315
+
316
+ .img-rounded {
317
+ border-radius: 6px
318
+ }
319
+
320
+ .img-thumbnail {
321
+ display: inline-block;
322
+ height: auto;
323
+ max-width: 100%;
324
+ padding: 4px;
325
+ line-height: 1.428571429;
326
+ background-color: #fff;
327
+ border: 1px solid #ddd;
328
+ border-radius: 4px;
329
+ -webkit-transition: all .2s ease-in-out;
330
+ transition: all .2s ease-in-out
331
+ }
332
+
333
+ .img-circle {
334
+ border-radius: 50%
335
+ }
336
+
337
+ hr {
338
+ margin-top: 20px;
339
+ margin-bottom: 20px;
340
+ border: 0;
341
+ border-top: 1px solid #eee
342
+ }
343
+
344
+ .sr-only {
345
+ position: absolute;
346
+ width: 1px;
347
+ height: 1px;
348
+ padding: 0;
349
+ margin: -1px;
350
+ overflow: hidden;
351
+ clip: rect(0 0 0 0);
352
+ border: 0
353
+ }
354
+
355
+ p {
356
+ margin: 0 0 10px
357
+ }
358
+
359
+ .lead {
360
+ margin-bottom: 20px;
361
+ font-size: 16.099999999999998px;
362
+ font-weight: 200;
363
+ line-height: 1.4
364
+ }
365
+
366
+ @media (min-width: 768px) {
367
+ .lead {
368
+ font-size: 21px
369
+ }
370
+ }
371
+
372
+ small {
373
+ font-size: 85%
374
+ }
375
+
376
+ cite {
377
+ font-style: normal
378
+ }
379
+
380
+ .text-muted {
381
+ color: #999
382
+ }
383
+
384
+ .text-primary {
385
+ color: #428bca
386
+ }
387
+
388
+ .text-warning {
389
+ color: #c09853
390
+ }
391
+
392
+ .text-danger {
393
+ color: #b94a48
394
+ }
395
+
396
+ .text-success {
397
+ color: #468847
398
+ }
399
+
400
+ .text-info {
401
+ color: #3a87ad
402
+ }
403
+
404
+ .text-left {
405
+ text-align: left
406
+ }
407
+
408
+ .text-right {
409
+ text-align: right
410
+ }
411
+
412
+ .text-center {
413
+ text-align: center
414
+ }
415
+
416
+ h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6 {
417
+ font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
418
+ font-weight: 500;
419
+ line-height: 1.1
420
+ }
421
+
422
+ h1 small, h2 small, h3 small, h4 small, h5 small, h6 small, .h1 small, .h2 small, .h3 small, .h4 small, .h5 small, .h6 small {
423
+ font-weight: normal;
424
+ line-height: 1;
425
+ color: #999
426
+ }
427
+
428
+ h1, h2, h3 {
429
+ margin-top: 20px;
430
+ margin-bottom: 10px
431
+ }
432
+
433
+ h4, h5, h6 {
434
+ margin-top: 10px;
435
+ margin-bottom: 10px
436
+ }
437
+
438
+ h1, .h1 {
439
+ font-size: 36px
440
+ }
441
+
442
+ h2, .h2 {
443
+ font-size: 30px
444
+ }
445
+
446
+ h3, .h3 {
447
+ font-size: 24px
448
+ }
449
+
450
+ h4, .h4 {
451
+ font-size: 18px
452
+ }
453
+
454
+ h5, .h5 {
455
+ font-size: 14px
456
+ }
457
+
458
+ h6, .h6 {
459
+ font-size: 12px
460
+ }
461
+
462
+ h1 small, .h1 small {
463
+ font-size: 24px
464
+ }
465
+
466
+ h2 small, .h2 small {
467
+ font-size: 18px
468
+ }
469
+
470
+ h3 small, .h3 small, h4 small, .h4 small {
471
+ font-size: 14px
472
+ }
473
+
474
+ .page-header {
475
+ padding-bottom: 9px;
476
+ margin: 40px 0 20px;
477
+ border-bottom: 1px solid #eee
478
+ }
479
+
480
+ ul, ol {
481
+ margin-top: 0;
482
+ margin-bottom: 10px
483
+ }
484
+
485
+ ul ul, ol ul, ul ol, ol ol {
486
+ margin-bottom: 0
487
+ }
488
+
489
+ .list-unstyled {
490
+ padding-left: 0;
491
+ list-style: none
492
+ }
493
+
494
+ .list-inline {
495
+ padding-left: 0;
496
+ list-style: none
497
+ }
498
+
499
+ .list-inline > li {
500
+ display: inline-block;
501
+ padding-right: 5px;
502
+ padding-left: 5px
503
+ }
504
+
505
+ dl {
506
+ margin-bottom: 20px
507
+ }
508
+
509
+ dt, dd {
510
+ line-height: 1.428571429
511
+ }
512
+
513
+ dt {
514
+ font-weight: bold
515
+ }
516
+
517
+ dd {
518
+ margin-left: 0
519
+ }
520
+
521
+ @media (min-width: 768px) {
522
+ .dl-horizontal dt {
523
+ float: left;
524
+ width: 160px;
525
+ overflow: hidden;
526
+ clear: left;
527
+ text-align: right;
528
+ text-overflow: ellipsis;
529
+ white-space: nowrap
530
+ }
531
+
532
+ .dl-horizontal dd {
533
+ margin-left: 180px
534
+ }
535
+
536
+ .dl-horizontal dd:before, .dl-horizontal dd:after {
537
+ display: table;
538
+ content: " "
539
+ }
540
+
541
+ .dl-horizontal dd:after {
542
+ clear: both
543
+ }
544
+
545
+ .dl-horizontal dd:before, .dl-horizontal dd:after {
546
+ display: table;
547
+ content: " "
548
+ }
549
+
550
+ .dl-horizontal dd:after {
551
+ clear: both
552
+ }
553
+ }
554
+
555
+ abbr[title], abbr[data-original-title] {
556
+ cursor: help;
557
+ border-bottom: 1px dotted #999
558
+ }
559
+
560
+ abbr.initialism {
561
+ font-size: 90%;
562
+ text-transform: uppercase
563
+ }
564
+
565
+ blockquote {
566
+ padding: 10px 20px;
567
+ margin: 0 0 20px;
568
+ border-left: 5px solid #eee
569
+ }
570
+
571
+ blockquote p {
572
+ font-size: 17.5px;
573
+ font-weight: 300;
574
+ line-height: 1.25
575
+ }
576
+
577
+ blockquote p:last-child {
578
+ margin-bottom: 0
579
+ }
580
+
581
+ blockquote small {
582
+ display: block;
583
+ line-height: 1.428571429;
584
+ color: #999
585
+ }
586
+
587
+ blockquote small:before {
588
+ content: '\2014 \00A0'
589
+ }
590
+
591
+ blockquote.pull-right {
592
+ padding-right: 15px;
593
+ padding-left: 0;
594
+ border-right: 5px solid #eee;
595
+ border-left: 0
596
+ }
597
+
598
+ blockquote.pull-right p, blockquote.pull-right small {
599
+ text-align: right
600
+ }
601
+
602
+ blockquote.pull-right small:before {
603
+ content: ''
604
+ }
605
+
606
+ blockquote.pull-right small:after {
607
+ content: '\00A0 \2014'
608
+ }
609
+
610
+ q:before, q:after, blockquote:before, blockquote:after {
611
+ content: ""
612
+ }
613
+
614
+ address {
615
+ display: block;
616
+ margin-bottom: 20px;
617
+ font-style: normal;
618
+ line-height: 1.428571429
619
+ }
620
+
621
+ code, pre {
622
+ font-family: Monaco, Menlo, Consolas, "Courier New", monospace
623
+ }
624
+
625
+ code {
626
+ padding: 2px 4px;
627
+ font-size: 90%;
628
+ color: #c7254e;
629
+ white-space: nowrap;
630
+ background-color: #f9f2f4;
631
+ border-radius: 4px
632
+ }
633
+
634
+ pre {
635
+ display: block;
636
+ padding: 9.5px;
637
+ margin: 0 0 10px;
638
+ font-size: 13px;
639
+ line-height: 1.428571429;
640
+ color: #333;
641
+ word-break: break-all;
642
+ word-wrap: break-word;
643
+ background-color: #f5f5f5;
644
+ border: 1px solid #ccc;
645
+ border-radius: 4px
646
+ }
647
+
648
+ pre.prettyprint {
649
+ margin-bottom: 20px
650
+ }
651
+
652
+ pre code {
653
+ padding: 0;
654
+ font-size: inherit;
655
+ color: inherit;
656
+ white-space: pre-wrap;
657
+ background-color: transparent;
658
+ border: 0
659
+ }
660
+
661
+ .pre-scrollable {
662
+ max-height: 340px;
663
+ overflow-y: scroll
664
+ }
665
+
666
+ .container {
667
+ padding-right: 15px;
668
+ padding-left: 15px;
669
+ margin-right: auto;
670
+ margin-left: auto
671
+ }
672
+
673
+ .container:before, .container:after {
674
+ display: table;
675
+ content: " "
676
+ }
677
+
678
+ .container:after {
679
+ clear: both
680
+ }
681
+
682
+ .container:before, .container:after {
683
+ display: table;
684
+ content: " "
685
+ }
686
+
687
+ .container:after {
688
+ clear: both
689
+ }
690
+
691
+ .row {
692
+ margin-right: -15px;
693
+ margin-left: -15px
694
+ }
695
+
696
+ .row:before, .row:after {
697
+ display: table;
698
+ content: " "
699
+ }
700
+
701
+ .row:after {
702
+ clear: both
703
+ }
704
+
705
+ .row:before, .row:after {
706
+ display: table;
707
+ content: " "
708
+ }
709
+
710
+ .row:after {
711
+ clear: both
712
+ }
713
+
714
+ .col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {
715
+ position: relative;
716
+ min-height: 1px;
717
+ padding-right: 15px;
718
+ padding-left: 15px
719
+ }
720
+
721
+ .col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11 {
722
+ float: left
723
+ }
724
+
725
+ .col-xs-1 {
726
+ width: 8.333333333333332%
727
+ }
728
+
729
+ .col-xs-2 {
730
+ width: 16.666666666666664%
731
+ }
732
+
733
+ .col-xs-3 {
734
+ width: 25%
735
+ }
736
+
737
+ .col-xs-4 {
738
+ width: 33.33333333333333%
739
+ }
740
+
741
+ .col-xs-5 {
742
+ width: 41.66666666666667%
743
+ }
744
+
745
+ .col-xs-6 {
746
+ width: 50%
747
+ }
748
+
749
+ .col-xs-7 {
750
+ width: 58.333333333333336%
751
+ }
752
+
753
+ .col-xs-8 {
754
+ width: 66.66666666666666%
755
+ }
756
+
757
+ .col-xs-9 {
758
+ width: 75%
759
+ }
760
+
761
+ .col-xs-10 {
762
+ width: 83.33333333333334%
763
+ }
764
+
765
+ .col-xs-11 {
766
+ width: 91.66666666666666%
767
+ }
768
+
769
+ .col-xs-12 {
770
+ width: 100%
771
+ }
772
+
773
+ @media (min-width: 768px) {
774
+ .container {
775
+ max-width: 750px
776
+ }
777
+
778
+ .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11 {
779
+ float: left
780
+ }
781
+
782
+ .col-sm-1 {
783
+ width: 8.333333333333332%
784
+ }
785
+
786
+ .col-sm-2 {
787
+ width: 16.666666666666664%
788
+ }
789
+
790
+ .col-sm-3 {
791
+ width: 25%
792
+ }
793
+
794
+ .col-sm-4 {
795
+ width: 33.33333333333333%
796
+ }
797
+
798
+ .col-sm-5 {
799
+ width: 41.66666666666667%
800
+ }
801
+
802
+ .col-sm-6 {
803
+ width: 50%
804
+ }
805
+
806
+ .col-sm-7 {
807
+ width: 58.333333333333336%
808
+ }
809
+
810
+ .col-sm-8 {
811
+ width: 66.66666666666666%
812
+ }
813
+
814
+ .col-sm-9 {
815
+ width: 75%
816
+ }
817
+
818
+ .col-sm-10 {
819
+ width: 83.33333333333334%
820
+ }
821
+
822
+ .col-sm-11 {
823
+ width: 91.66666666666666%
824
+ }
825
+
826
+ .col-sm-12 {
827
+ width: 100%
828
+ }
829
+
830
+ .col-sm-push-1 {
831
+ left: 8.333333333333332%
832
+ }
833
+
834
+ .col-sm-push-2 {
835
+ left: 16.666666666666664%
836
+ }
837
+
838
+ .col-sm-push-3 {
839
+ left: 25%
840
+ }
841
+
842
+ .col-sm-push-4 {
843
+ left: 33.33333333333333%
844
+ }
845
+
846
+ .col-sm-push-5 {
847
+ left: 41.66666666666667%
848
+ }
849
+
850
+ .col-sm-push-6 {
851
+ left: 50%
852
+ }
853
+
854
+ .col-sm-push-7 {
855
+ left: 58.333333333333336%
856
+ }
857
+
858
+ .col-sm-push-8 {
859
+ left: 66.66666666666666%
860
+ }
861
+
862
+ .col-sm-push-9 {
863
+ left: 75%
864
+ }
865
+
866
+ .col-sm-push-10 {
867
+ left: 83.33333333333334%
868
+ }
869
+
870
+ .col-sm-push-11 {
871
+ left: 91.66666666666666%
872
+ }
873
+
874
+ .col-sm-pull-1 {
875
+ right: 8.333333333333332%
876
+ }
877
+
878
+ .col-sm-pull-2 {
879
+ right: 16.666666666666664%
880
+ }
881
+
882
+ .col-sm-pull-3 {
883
+ right: 25%
884
+ }
885
+
886
+ .col-sm-pull-4 {
887
+ right: 33.33333333333333%
888
+ }
889
+
890
+ .col-sm-pull-5 {
891
+ right: 41.66666666666667%
892
+ }
893
+
894
+ .col-sm-pull-6 {
895
+ right: 50%
896
+ }
897
+
898
+ .col-sm-pull-7 {
899
+ right: 58.333333333333336%
900
+ }
901
+
902
+ .col-sm-pull-8 {
903
+ right: 66.66666666666666%
904
+ }
905
+
906
+ .col-sm-pull-9 {
907
+ right: 75%
908
+ }
909
+
910
+ .col-sm-pull-10 {
911
+ right: 83.33333333333334%
912
+ }
913
+
914
+ .col-sm-pull-11 {
915
+ right: 91.66666666666666%
916
+ }
917
+
918
+ .col-sm-offset-1 {
919
+ margin-left: 8.333333333333332%
920
+ }
921
+
922
+ .col-sm-offset-2 {
923
+ margin-left: 16.666666666666664%
924
+ }
925
+
926
+ .col-sm-offset-3 {
927
+ margin-left: 25%
928
+ }
929
+
930
+ .col-sm-offset-4 {
931
+ margin-left: 33.33333333333333%
932
+ }
933
+
934
+ .col-sm-offset-5 {
935
+ margin-left: 41.66666666666667%
936
+ }
937
+
938
+ .col-sm-offset-6 {
939
+ margin-left: 50%
940
+ }
941
+
942
+ .col-sm-offset-7 {
943
+ margin-left: 58.333333333333336%
944
+ }
945
+
946
+ .col-sm-offset-8 {
947
+ margin-left: 66.66666666666666%
948
+ }
949
+
950
+ .col-sm-offset-9 {
951
+ margin-left: 75%
952
+ }
953
+
954
+ .col-sm-offset-10 {
955
+ margin-left: 83.33333333333334%
956
+ }
957
+
958
+ .col-sm-offset-11 {
959
+ margin-left: 91.66666666666666%
960
+ }
961
+ }
962
+
963
+ @media (min-width: 992px) {
964
+ .container {
965
+ max-width: 970px
966
+ }
967
+
968
+ .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11 {
969
+ float: left
970
+ }
971
+
972
+ .col-md-1 {
973
+ width: 8.333333333333332%
974
+ }
975
+
976
+ .col-md-2 {
977
+ width: 16.666666666666664%
978
+ }
979
+
980
+ .col-md-3 {
981
+ width: 25%
982
+ }
983
+
984
+ .col-md-4 {
985
+ width: 33.33333333333333%
986
+ }
987
+
988
+ .col-md-5 {
989
+ width: 41.66666666666667%
990
+ }
991
+
992
+ .col-md-6 {
993
+ width: 50%
994
+ }
995
+
996
+ .col-md-7 {
997
+ width: 58.333333333333336%
998
+ }
999
+
1000
+ .col-md-8 {
1001
+ width: 66.66666666666666%
1002
+ }
1003
+
1004
+ .col-md-9 {
1005
+ width: 75%
1006
+ }
1007
+
1008
+ .col-md-10 {
1009
+ width: 83.33333333333334%
1010
+ }
1011
+
1012
+ .col-md-11 {
1013
+ width: 91.66666666666666%
1014
+ }
1015
+
1016
+ .col-md-12 {
1017
+ width: 100%
1018
+ }
1019
+
1020
+ .col-md-push-0 {
1021
+ left: auto
1022
+ }
1023
+
1024
+ .col-md-push-1 {
1025
+ left: 8.333333333333332%
1026
+ }
1027
+
1028
+ .col-md-push-2 {
1029
+ left: 16.666666666666664%
1030
+ }
1031
+
1032
+ .col-md-push-3 {
1033
+ left: 25%
1034
+ }
1035
+
1036
+ .col-md-push-4 {
1037
+ left: 33.33333333333333%
1038
+ }
1039
+
1040
+ .col-md-push-5 {
1041
+ left: 41.66666666666667%
1042
+ }
1043
+
1044
+ .col-md-push-6 {
1045
+ left: 50%
1046
+ }
1047
+
1048
+ .col-md-push-7 {
1049
+ left: 58.333333333333336%
1050
+ }
1051
+
1052
+ .col-md-push-8 {
1053
+ left: 66.66666666666666%
1054
+ }
1055
+
1056
+ .col-md-push-9 {
1057
+ left: 75%
1058
+ }
1059
+
1060
+ .col-md-push-10 {
1061
+ left: 83.33333333333334%
1062
+ }
1063
+
1064
+ .col-md-push-11 {
1065
+ left: 91.66666666666666%
1066
+ }
1067
+
1068
+ .col-md-pull-0 {
1069
+ right: auto
1070
+ }
1071
+
1072
+ .col-md-pull-1 {
1073
+ right: 8.333333333333332%
1074
+ }
1075
+
1076
+ .col-md-pull-2 {
1077
+ right: 16.666666666666664%
1078
+ }
1079
+
1080
+ .col-md-pull-3 {
1081
+ right: 25%
1082
+ }
1083
+
1084
+ .col-md-pull-4 {
1085
+ right: 33.33333333333333%
1086
+ }
1087
+
1088
+ .col-md-pull-5 {
1089
+ right: 41.66666666666667%
1090
+ }
1091
+
1092
+ .col-md-pull-6 {
1093
+ right: 50%
1094
+ }
1095
+
1096
+ .col-md-pull-7 {
1097
+ right: 58.333333333333336%
1098
+ }
1099
+
1100
+ .col-md-pull-8 {
1101
+ right: 66.66666666666666%
1102
+ }
1103
+
1104
+ .col-md-pull-9 {
1105
+ right: 75%
1106
+ }
1107
+
1108
+ .col-md-pull-10 {
1109
+ right: 83.33333333333334%
1110
+ }
1111
+
1112
+ .col-md-pull-11 {
1113
+ right: 91.66666666666666%
1114
+ }
1115
+
1116
+ .col-md-offset-0 {
1117
+ margin-left: 0
1118
+ }
1119
+
1120
+ .col-md-offset-1 {
1121
+ margin-left: 8.333333333333332%
1122
+ }
1123
+
1124
+ .col-md-offset-2 {
1125
+ margin-left: 16.666666666666664%
1126
+ }
1127
+
1128
+ .col-md-offset-3 {
1129
+ margin-left: 25%
1130
+ }
1131
+
1132
+ .col-md-offset-4 {
1133
+ margin-left: 33.33333333333333%
1134
+ }
1135
+
1136
+ .col-md-offset-5 {
1137
+ margin-left: 41.66666666666667%
1138
+ }
1139
+
1140
+ .col-md-offset-6 {
1141
+ margin-left: 50%
1142
+ }
1143
+
1144
+ .col-md-offset-7 {
1145
+ margin-left: 58.333333333333336%
1146
+ }
1147
+
1148
+ .col-md-offset-8 {
1149
+ margin-left: 66.66666666666666%
1150
+ }
1151
+
1152
+ .col-md-offset-9 {
1153
+ margin-left: 75%
1154
+ }
1155
+
1156
+ .col-md-offset-10 {
1157
+ margin-left: 83.33333333333334%
1158
+ }
1159
+
1160
+ .col-md-offset-11 {
1161
+ margin-left: 91.66666666666666%
1162
+ }
1163
+ }
1164
+
1165
+ @media (min-width: 1200px) {
1166
+ .container {
1167
+ max-width: 1170px
1168
+ }
1169
+
1170
+ .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11 {
1171
+ float: left
1172
+ }
1173
+
1174
+ .col-lg-1 {
1175
+ width: 8.333333333333332%
1176
+ }
1177
+
1178
+ .col-lg-2 {
1179
+ width: 16.666666666666664%
1180
+ }
1181
+
1182
+ .col-lg-3 {
1183
+ width: 25%
1184
+ }
1185
+
1186
+ .col-lg-4 {
1187
+ width: 33.33333333333333%
1188
+ }
1189
+
1190
+ .col-lg-5 {
1191
+ width: 41.66666666666667%
1192
+ }
1193
+
1194
+ .col-lg-6 {
1195
+ width: 50%
1196
+ }
1197
+
1198
+ .col-lg-7 {
1199
+ width: 58.333333333333336%
1200
+ }
1201
+
1202
+ .col-lg-8 {
1203
+ width: 66.66666666666666%
1204
+ }
1205
+
1206
+ .col-lg-9 {
1207
+ width: 75%
1208
+ }
1209
+
1210
+ .col-lg-10 {
1211
+ width: 83.33333333333334%
1212
+ }
1213
+
1214
+ .col-lg-11 {
1215
+ width: 91.66666666666666%
1216
+ }
1217
+
1218
+ .col-lg-12 {
1219
+ width: 100%
1220
+ }
1221
+
1222
+ .col-lg-push-0 {
1223
+ left: auto
1224
+ }
1225
+
1226
+ .col-lg-push-1 {
1227
+ left: 8.333333333333332%
1228
+ }
1229
+
1230
+ .col-lg-push-2 {
1231
+ left: 16.666666666666664%
1232
+ }
1233
+
1234
+ .col-lg-push-3 {
1235
+ left: 25%
1236
+ }
1237
+
1238
+ .col-lg-push-4 {
1239
+ left: 33.33333333333333%
1240
+ }
1241
+
1242
+ .col-lg-push-5 {
1243
+ left: 41.66666666666667%
1244
+ }
1245
+
1246
+ .col-lg-push-6 {
1247
+ left: 50%
1248
+ }
1249
+
1250
+ .col-lg-push-7 {
1251
+ left: 58.333333333333336%
1252
+ }
1253
+
1254
+ .col-lg-push-8 {
1255
+ left: 66.66666666666666%
1256
+ }
1257
+
1258
+ .col-lg-push-9 {
1259
+ left: 75%
1260
+ }
1261
+
1262
+ .col-lg-push-10 {
1263
+ left: 83.33333333333334%
1264
+ }
1265
+
1266
+ .col-lg-push-11 {
1267
+ left: 91.66666666666666%
1268
+ }
1269
+
1270
+ .col-lg-pull-0 {
1271
+ right: auto
1272
+ }
1273
+
1274
+ .col-lg-pull-1 {
1275
+ right: 8.333333333333332%
1276
+ }
1277
+
1278
+ .col-lg-pull-2 {
1279
+ right: 16.666666666666664%
1280
+ }
1281
+
1282
+ .col-lg-pull-3 {
1283
+ right: 25%
1284
+ }
1285
+
1286
+ .col-lg-pull-4 {
1287
+ right: 33.33333333333333%
1288
+ }
1289
+
1290
+ .col-lg-pull-5 {
1291
+ right: 41.66666666666667%
1292
+ }
1293
+
1294
+ .col-lg-pull-6 {
1295
+ right: 50%
1296
+ }
1297
+
1298
+ .col-lg-pull-7 {
1299
+ right: 58.333333333333336%
1300
+ }
1301
+
1302
+ .col-lg-pull-8 {
1303
+ right: 66.66666666666666%
1304
+ }
1305
+
1306
+ .col-lg-pull-9 {
1307
+ right: 75%
1308
+ }
1309
+
1310
+ .col-lg-pull-10 {
1311
+ right: 83.33333333333334%
1312
+ }
1313
+
1314
+ .col-lg-pull-11 {
1315
+ right: 91.66666666666666%
1316
+ }
1317
+
1318
+ .col-lg-offset-0 {
1319
+ margin-left: 0
1320
+ }
1321
+
1322
+ .col-lg-offset-1 {
1323
+ margin-left: 8.333333333333332%
1324
+ }
1325
+
1326
+ .col-lg-offset-2 {
1327
+ margin-left: 16.666666666666664%
1328
+ }
1329
+
1330
+ .col-lg-offset-3 {
1331
+ margin-left: 25%
1332
+ }
1333
+
1334
+ .col-lg-offset-4 {
1335
+ margin-left: 33.33333333333333%
1336
+ }
1337
+
1338
+ .col-lg-offset-5 {
1339
+ margin-left: 41.66666666666667%
1340
+ }
1341
+
1342
+ .col-lg-offset-6 {
1343
+ margin-left: 50%
1344
+ }
1345
+
1346
+ .col-lg-offset-7 {
1347
+ margin-left: 58.333333333333336%
1348
+ }
1349
+
1350
+ .col-lg-offset-8 {
1351
+ margin-left: 66.66666666666666%
1352
+ }
1353
+
1354
+ .col-lg-offset-9 {
1355
+ margin-left: 75%
1356
+ }
1357
+
1358
+ .col-lg-offset-10 {
1359
+ margin-left: 83.33333333333334%
1360
+ }
1361
+
1362
+ .col-lg-offset-11 {
1363
+ margin-left: 91.66666666666666%
1364
+ }
1365
+ }
1366
+
1367
+ table {
1368
+ max-width: 100%;
1369
+ background-color: transparent
1370
+ }
1371
+
1372
+ th {
1373
+ text-align: left
1374
+ }
1375
+
1376
+ .table {
1377
+ width: 100%;
1378
+ margin-bottom: 20px
1379
+ }
1380
+
1381
+ .table thead > tr > th, .table tbody > tr > th, .table tfoot > tr > th, .table thead > tr > td, .table tbody > tr > td, .table tfoot > tr > td {
1382
+ padding: 8px;
1383
+ line-height: 1.428571429;
1384
+ vertical-align: top;
1385
+ border-top: 1px solid #ddd
1386
+ }
1387
+
1388
+ .table thead > tr > th {
1389
+ vertical-align: bottom;
1390
+ border-bottom: 2px solid #ddd
1391
+ }
1392
+
1393
+ .table caption + thead tr:first-child th, .table colgroup + thead tr:first-child th, .table thead:first-child tr:first-child th, .table caption + thead tr:first-child td, .table colgroup + thead tr:first-child td, .table thead:first-child tr:first-child td {
1394
+ border-top: 0
1395
+ }
1396
+
1397
+ .table tbody + tbody {
1398
+ border-top: 2px solid #ddd
1399
+ }
1400
+
1401
+ .table .table {
1402
+ background-color: #fff
1403
+ }
1404
+
1405
+ .table-condensed thead > tr > th, .table-condensed tbody > tr > th, .table-condensed tfoot > tr > th, .table-condensed thead > tr > td, .table-condensed tbody > tr > td, .table-condensed tfoot > tr > td {
1406
+ padding: 5px
1407
+ }
1408
+
1409
+ .table-bordered {
1410
+ border: 1px solid #ddd
1411
+ }
1412
+
1413
+ .table-bordered > thead > tr > th, .table-bordered > tbody > tr > th, .table-bordered > tfoot > tr > th, .table-bordered > thead > tr > td, .table-bordered > tbody > tr > td, .table-bordered > tfoot > tr > td {
1414
+ border: 1px solid #ddd
1415
+ }
1416
+
1417
+ .table-bordered > thead > tr > th, .table-bordered > thead > tr > td {
1418
+ border-bottom-width: 2px
1419
+ }
1420
+
1421
+ .table-striped > tbody > tr:nth-child(odd) > td, .table-striped > tbody > tr:nth-child(odd) > th {
1422
+ background-color: #f9f9f9
1423
+ }
1424
+
1425
+ .table-hover > tbody > tr:hover > td, .table-hover > tbody > tr:hover > th {
1426
+ background-color: #f5f5f5
1427
+ }
1428
+
1429
+ table col[class*="col-"] {
1430
+ display: table-column;
1431
+ float: none
1432
+ }
1433
+
1434
+ table td[class*="col-"], table th[class*="col-"] {
1435
+ display: table-cell;
1436
+ float: none
1437
+ }
1438
+
1439
+ .table > thead > tr > td.active, .table > tbody > tr > td.active, .table > tfoot > tr > td.active, .table > thead > tr > th.active, .table > tbody > tr > th.active, .table > tfoot > tr > th.active, .table > thead > tr.active > td, .table > tbody > tr.active > td, .table > tfoot > tr.active > td, .table > thead > tr.active > th, .table > tbody > tr.active > th, .table > tfoot > tr.active > th {
1440
+ background-color: #f5f5f5
1441
+ }
1442
+
1443
+ .table > thead > tr > td.success, .table > tbody > tr > td.success, .table > tfoot > tr > td.success, .table > thead > tr > th.success, .table > tbody > tr > th.success, .table > tfoot > tr > th.success, .table > thead > tr.success > td, .table > tbody > tr.success > td, .table > tfoot > tr.success > td, .table > thead > tr.success > th, .table > tbody > tr.success > th, .table > tfoot > tr.success > th {
1444
+ background-color: #dff0d8;
1445
+ border-color: #d6e9c6
1446
+ }
1447
+
1448
+ .table-hover > tbody > tr > td.success:hover, .table-hover > tbody > tr > th.success:hover, .table-hover > tbody > tr.success:hover > td {
1449
+ background-color: #d0e9c6;
1450
+ border-color: #c9e2b3
1451
+ }
1452
+
1453
+ .table > thead > tr > td.danger, .table > tbody > tr > td.danger, .table > tfoot > tr > td.danger, .table > thead > tr > th.danger, .table > tbody > tr > th.danger, .table > tfoot > tr > th.danger, .table > thead > tr.danger > td, .table > tbody > tr.danger > td, .table > tfoot > tr.danger > td, .table > thead > tr.danger > th, .table > tbody > tr.danger > th, .table > tfoot > tr.danger > th {
1454
+ background-color: #f2dede;
1455
+ border-color: #eed3d7
1456
+ }
1457
+
1458
+ .table-hover > tbody > tr > td.danger:hover, .table-hover > tbody > tr > th.danger:hover, .table-hover > tbody > tr.danger:hover > td {
1459
+ background-color: #ebcccc;
1460
+ border-color: #e6c1c7
1461
+ }
1462
+
1463
+ .table > thead > tr > td.warning, .table > tbody > tr > td.warning, .table > tfoot > tr > td.warning, .table > thead > tr > th.warning, .table > tbody > tr > th.warning, .table > tfoot > tr > th.warning, .table > thead > tr.warning > td, .table > tbody > tr.warning > td, .table > tfoot > tr.warning > td, .table > thead > tr.warning > th, .table > tbody > tr.warning > th, .table > tfoot > tr.warning > th {
1464
+ background-color: #fcf8e3;
1465
+ border-color: #fbeed5
1466
+ }
1467
+
1468
+ .table-hover > tbody > tr > td.warning:hover, .table-hover > tbody > tr > th.warning:hover, .table-hover > tbody > tr.warning:hover > td {
1469
+ background-color: #faf2cc;
1470
+ border-color: #f8e5be
1471
+ }
1472
+
1473
+ @media (max-width: 768px) {
1474
+ .table-responsive {
1475
+ width: 100%;
1476
+ margin-bottom: 15px;
1477
+ overflow-x: scroll;
1478
+ overflow-y: hidden;
1479
+ border: 1px solid #ddd
1480
+ }
1481
+
1482
+ .table-responsive > .table {
1483
+ margin-bottom: 0;
1484
+ background-color: #fff
1485
+ }
1486
+
1487
+ .table-responsive > .table > thead > tr > th, .table-responsive > .table > tbody > tr > th, .table-responsive > .table > tfoot > tr > th, .table-responsive > .table > thead > tr > td, .table-responsive > .table > tbody > tr > td, .table-responsive > .table > tfoot > tr > td {
1488
+ white-space: nowrap
1489
+ }
1490
+
1491
+ .table-responsive > .table-bordered {
1492
+ border: 0
1493
+ }
1494
+
1495
+ .table-responsive > .table-bordered > thead > tr > th:first-child, .table-responsive > .table-bordered > tbody > tr > th:first-child, .table-responsive > .table-bordered > tfoot > tr > th:first-child, .table-responsive > .table-bordered > thead > tr > td:first-child, .table-responsive > .table-bordered > tbody > tr > td:first-child, .table-responsive > .table-bordered > tfoot > tr > td:first-child {
1496
+ border-left: 0
1497
+ }
1498
+
1499
+ .table-responsive > .table-bordered > thead > tr > th:last-child, .table-responsive > .table-bordered > tbody > tr > th:last-child, .table-responsive > .table-bordered > tfoot > tr > th:last-child, .table-responsive > .table-bordered > thead > tr > td:last-child, .table-responsive > .table-bordered > tbody > tr > td:last-child, .table-responsive > .table-bordered > tfoot > tr > td:last-child {
1500
+ border-right: 0
1501
+ }
1502
+
1503
+ .table-responsive > .table-bordered > thead > tr:last-child > th, .table-responsive > .table-bordered > tbody > tr:last-child > th, .table-responsive > .table-bordered > tfoot > tr:last-child > th, .table-responsive > .table-bordered > thead > tr:last-child > td, .table-responsive > .table-bordered > tbody > tr:last-child > td, .table-responsive > .table-bordered > tfoot > tr:last-child > td {
1504
+ border-bottom: 0
1505
+ }
1506
+ }
1507
+
1508
+ fieldset {
1509
+ padding: 0;
1510
+ margin: 0;
1511
+ border: 0
1512
+ }
1513
+
1514
+ legend {
1515
+ display: block;
1516
+ width: 100%;
1517
+ padding: 0;
1518
+ margin-bottom: 20px;
1519
+ font-size: 21px;
1520
+ line-height: inherit;
1521
+ color: #333;
1522
+ border: 0;
1523
+ border-bottom: 1px solid #e5e5e5
1524
+ }
1525
+
1526
+ label {
1527
+ display: inline-block;
1528
+ margin-bottom: 5px;
1529
+ font-weight: bold
1530
+ }
1531
+
1532
+ input[type="search"] {
1533
+ -webkit-box-sizing: border-box;
1534
+ -moz-box-sizing: border-box;
1535
+ box-sizing: border-box
1536
+ }
1537
+
1538
+ input[type="radio"], input[type="checkbox"] {
1539
+ margin: 4px 0 0;
1540
+ margin-top: 1px \9;
1541
+ line-height: normal
1542
+ }
1543
+
1544
+ input[type="file"] {
1545
+ display: block
1546
+ }
1547
+
1548
+ select[multiple], select[size] {
1549
+ height: auto
1550
+ }
1551
+
1552
+ select optgroup {
1553
+ font-family: inherit;
1554
+ font-size: inherit;
1555
+ font-style: inherit
1556
+ }
1557
+
1558
+ input[type="file"]:focus, input[type="radio"]:focus, input[type="checkbox"]:focus {
1559
+ outline: thin dotted #333;
1560
+ outline: 5px auto -webkit-focus-ring-color;
1561
+ outline-offset: -2px
1562
+ }
1563
+
1564
+ input[type="number"]::-webkit-outer-spin-button, input[type="number"]::-webkit-inner-spin-button {
1565
+ height: auto
1566
+ }
1567
+
1568
+ .form-control:-moz-placeholder {
1569
+ color: #999
1570
+ }
1571
+
1572
+ .form-control::-moz-placeholder {
1573
+ color: #999
1574
+ }
1575
+
1576
+ .form-control:-ms-input-placeholder {
1577
+ color: #999
1578
+ }
1579
+
1580
+ .form-control::-webkit-input-placeholder {
1581
+ color: #999
1582
+ }
1583
+
1584
+ .form-control {
1585
+ display: block;
1586
+ width: 100%;
1587
+ height: 34px;
1588
+ padding: 6px 12px;
1589
+ font-size: 14px;
1590
+ line-height: 1.428571429;
1591
+ color: #555;
1592
+ vertical-align: middle;
1593
+ background-color: #fff;
1594
+ border: 1px solid #ccc;
1595
+ border-radius: 4px;
1596
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
1597
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
1598
+ -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
1599
+ transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s
1600
+ }
1601
+
1602
+ .form-control:focus {
1603
+ border-color: #66afe9;
1604
+ outline: 0;
1605
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6);
1606
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6)
1607
+ }
1608
+
1609
+ .form-control[disabled], .form-control[readonly], fieldset[disabled] .form-control {
1610
+ cursor: not-allowed;
1611
+ background-color: #eee
1612
+ }
1613
+
1614
+ textarea.form-control {
1615
+ height: auto
1616
+ }
1617
+
1618
+ .form-group {
1619
+ margin-bottom: 15px
1620
+ }
1621
+
1622
+ .radio, .checkbox {
1623
+ display: block;
1624
+ min-height: 20px;
1625
+ padding-left: 20px;
1626
+ margin-top: 10px;
1627
+ margin-bottom: 10px;
1628
+ vertical-align: middle
1629
+ }
1630
+
1631
+ .radio label, .checkbox label {
1632
+ display: inline;
1633
+ margin-bottom: 0;
1634
+ font-weight: normal;
1635
+ cursor: pointer
1636
+ }
1637
+
1638
+ .radio input[type="radio"], .radio-inline input[type="radio"], .checkbox input[type="checkbox"], .checkbox-inline input[type="checkbox"] {
1639
+ float: left;
1640
+ margin-left: -20px
1641
+ }
1642
+
1643
+ .radio + .radio, .checkbox + .checkbox {
1644
+ margin-top: -5px
1645
+ }
1646
+
1647
+ .radio-inline, .checkbox-inline {
1648
+ display: inline-block;
1649
+ padding-left: 20px;
1650
+ margin-bottom: 0;
1651
+ font-weight: normal;
1652
+ vertical-align: middle;
1653
+ cursor: pointer
1654
+ }
1655
+
1656
+ .radio-inline + .radio-inline, .checkbox-inline + .checkbox-inline {
1657
+ margin-top: 0;
1658
+ margin-left: 10px
1659
+ }
1660
+
1661
+ input[type="radio"][disabled], input[type="checkbox"][disabled], .radio[disabled], .radio-inline[disabled], .checkbox[disabled], .checkbox-inline[disabled], fieldset[disabled] input[type="radio"], fieldset[disabled] input[type="checkbox"], fieldset[disabled] .radio, fieldset[disabled] .radio-inline, fieldset[disabled] .checkbox, fieldset[disabled] .checkbox-inline {
1662
+ cursor: not-allowed
1663
+ }
1664
+
1665
+ .input-sm {
1666
+ height: 30px;
1667
+ padding: 5px 10px;
1668
+ font-size: 12px;
1669
+ line-height: 1.5;
1670
+ border-radius: 3px
1671
+ }
1672
+
1673
+ select.input-sm {
1674
+ height: 30px;
1675
+ line-height: 30px
1676
+ }
1677
+
1678
+ textarea.input-sm {
1679
+ height: auto
1680
+ }
1681
+
1682
+ .input-lg {
1683
+ height: 45px;
1684
+ padding: 10px 16px;
1685
+ font-size: 18px;
1686
+ line-height: 1.33;
1687
+ border-radius: 6px
1688
+ }
1689
+
1690
+ select.input-lg {
1691
+ height: 45px;
1692
+ line-height: 45px
1693
+ }
1694
+
1695
+ textarea.input-lg {
1696
+ height: auto
1697
+ }
1698
+
1699
+ .has-warning .help-block, .has-warning .control-label {
1700
+ color: #c09853
1701
+ }
1702
+
1703
+ .has-warning .form-control {
1704
+ border-color: #c09853;
1705
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
1706
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075)
1707
+ }
1708
+
1709
+ .has-warning .form-control:focus {
1710
+ border-color: #a47e3c;
1711
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;
1712
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e
1713
+ }
1714
+
1715
+ .has-warning .input-group-addon {
1716
+ color: #c09853;
1717
+ background-color: #fcf8e3;
1718
+ border-color: #c09853
1719
+ }
1720
+
1721
+ .has-error .help-block, .has-error .control-label {
1722
+ color: #b94a48
1723
+ }
1724
+
1725
+ .has-error .form-control {
1726
+ border-color: #b94a48;
1727
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
1728
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075)
1729
+ }
1730
+
1731
+ .has-error .form-control:focus {
1732
+ border-color: #953b39;
1733
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;
1734
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392
1735
+ }
1736
+
1737
+ .has-error .input-group-addon {
1738
+ color: #b94a48;
1739
+ background-color: #f2dede;
1740
+ border-color: #b94a48
1741
+ }
1742
+
1743
+ .has-success .help-block, .has-success .control-label {
1744
+ color: #468847
1745
+ }
1746
+
1747
+ .has-success .form-control {
1748
+ border-color: #468847;
1749
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
1750
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075)
1751
+ }
1752
+
1753
+ .has-success .form-control:focus {
1754
+ border-color: #356635;
1755
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;
1756
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b
1757
+ }
1758
+
1759
+ .has-success .input-group-addon {
1760
+ color: #468847;
1761
+ background-color: #dff0d8;
1762
+ border-color: #468847
1763
+ }
1764
+
1765
+ .form-control-static {
1766
+ padding-top: 7px;
1767
+ margin-bottom: 0
1768
+ }
1769
+
1770
+ .help-block {
1771
+ display: block;
1772
+ margin-top: 5px;
1773
+ margin-bottom: 10px;
1774
+ color: #737373
1775
+ }
1776
+
1777
+ @media (min-width: 768px) {
1778
+ .form-inline .form-group {
1779
+ display: inline-block;
1780
+ margin-bottom: 0;
1781
+ vertical-align: middle
1782
+ }
1783
+
1784
+ .form-inline .form-control {
1785
+ display: inline-block
1786
+ }
1787
+
1788
+ .form-inline .radio, .form-inline .checkbox {
1789
+ display: inline-block;
1790
+ padding-left: 0;
1791
+ margin-top: 0;
1792
+ margin-bottom: 0
1793
+ }
1794
+
1795
+ .form-inline .radio input[type="radio"], .form-inline .checkbox input[type="checkbox"] {
1796
+ float: none;
1797
+ margin-left: 0
1798
+ }
1799
+ }
1800
+
1801
+ .form-horizontal .control-label, .form-horizontal .radio, .form-horizontal .checkbox, .form-horizontal .radio-inline, .form-horizontal .checkbox-inline {
1802
+ padding-top: 7px;
1803
+ margin-top: 0;
1804
+ margin-bottom: 0
1805
+ }
1806
+
1807
+ .form-horizontal .form-group {
1808
+ margin-right: -15px;
1809
+ margin-left: -15px
1810
+ }
1811
+
1812
+ .form-horizontal .form-group:before, .form-horizontal .form-group:after {
1813
+ display: table;
1814
+ content: " "
1815
+ }
1816
+
1817
+ .form-horizontal .form-group:after {
1818
+ clear: both
1819
+ }
1820
+
1821
+ .form-horizontal .form-group:before, .form-horizontal .form-group:after {
1822
+ display: table;
1823
+ content: " "
1824
+ }
1825
+
1826
+ .form-horizontal .form-group:after {
1827
+ clear: both
1828
+ }
1829
+
1830
+ @media (min-width: 768px) {
1831
+ .form-horizontal .control-label {
1832
+ text-align: right
1833
+ }
1834
+ }
1835
+
1836
+ .btn {
1837
+ display: inline-block;
1838
+ padding: 6px 12px;
1839
+ margin-bottom: 0;
1840
+ font-size: 14px;
1841
+ font-weight: normal;
1842
+ line-height: 1.428571429;
1843
+ text-align: center;
1844
+ white-space: nowrap;
1845
+ vertical-align: middle;
1846
+ cursor: pointer;
1847
+ border: 1px solid transparent;
1848
+ border-radius: 4px;
1849
+ -webkit-user-select: none;
1850
+ -moz-user-select: none;
1851
+ -ms-user-select: none;
1852
+ -o-user-select: none;
1853
+ user-select: none
1854
+ }
1855
+
1856
+ .btn:focus {
1857
+ outline: thin dotted #333;
1858
+ outline: 5px auto -webkit-focus-ring-color;
1859
+ outline-offset: -2px
1860
+ }
1861
+
1862
+ .btn:hover, .btn:focus {
1863
+ color: #333;
1864
+ text-decoration: none
1865
+ }
1866
+
1867
+ .btn:active, .btn.active {
1868
+ background-image: none;
1869
+ outline: 0;
1870
+ -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
1871
+ box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125)
1872
+ }
1873
+
1874
+ .btn.disabled, .btn[disabled], fieldset[disabled] .btn {
1875
+ pointer-events: none;
1876
+ cursor: not-allowed;
1877
+ opacity: .65;
1878
+ filter: alpha(opacity=65);
1879
+ -webkit-box-shadow: none;
1880
+ box-shadow: none
1881
+ }
1882
+
1883
+ .btn-default {
1884
+ color: #333;
1885
+ background-color: #fff;
1886
+ border-color: #ccc
1887
+ }
1888
+
1889
+ .btn-default:hover, .btn-default:focus, .btn-default:active, .btn-default.active, .open .dropdown-toggle.btn-default {
1890
+ color: #333;
1891
+ background-color: #ebebeb;
1892
+ border-color: #adadad
1893
+ }
1894
+
1895
+ .btn-default:active, .btn-default.active, .open .dropdown-toggle.btn-default {
1896
+ background-image: none
1897
+ }
1898
+
1899
+ .btn-default.disabled, .btn-default[disabled], fieldset[disabled] .btn-default, .btn-default.disabled:hover, .btn-default[disabled]:hover, fieldset[disabled] .btn-default:hover, .btn-default.disabled:focus, .btn-default[disabled]:focus, fieldset[disabled] .btn-default:focus, .btn-default.disabled:active, .btn-default[disabled]:active, fieldset[disabled] .btn-default:active, .btn-default.disabled.active, .btn-default[disabled].active, fieldset[disabled] .btn-default.active {
1900
+ background-color: #fff;
1901
+ border-color: #ccc
1902
+ }
1903
+
1904
+ .btn-primary {
1905
+ color: #fff;
1906
+ background-color: #428bca;
1907
+ border-color: #357ebd
1908
+ }
1909
+
1910
+ .btn-primary:hover, .btn-primary:focus, .btn-primary:active, .btn-primary.active, .open .dropdown-toggle.btn-primary {
1911
+ color: #fff;
1912
+ background-color: #3276b1;
1913
+ border-color: #285e8e
1914
+ }
1915
+
1916
+ .btn-primary:active, .btn-primary.active, .open .dropdown-toggle.btn-primary {
1917
+ background-image: none
1918
+ }
1919
+
1920
+ .btn-primary.disabled, .btn-primary[disabled], fieldset[disabled] .btn-primary, .btn-primary.disabled:hover, .btn-primary[disabled]:hover, fieldset[disabled] .btn-primary:hover, .btn-primary.disabled:focus, .btn-primary[disabled]:focus, fieldset[disabled] .btn-primary:focus, .btn-primary.disabled:active, .btn-primary[disabled]:active, fieldset[disabled] .btn-primary:active, .btn-primary.disabled.active, .btn-primary[disabled].active, fieldset[disabled] .btn-primary.active {
1921
+ background-color: #428bca;
1922
+ border-color: #357ebd
1923
+ }
1924
+
1925
+ .btn-warning {
1926
+ color: #fff;
1927
+ background-color: #f0ad4e;
1928
+ border-color: #eea236
1929
+ }
1930
+
1931
+ .btn-warning:hover, .btn-warning:focus, .btn-warning:active, .btn-warning.active, .open .dropdown-toggle.btn-warning {
1932
+ color: #fff;
1933
+ background-color: #ed9c28;
1934
+ border-color: #d58512
1935
+ }
1936
+
1937
+ .btn-warning:active, .btn-warning.active, .open .dropdown-toggle.btn-warning {
1938
+ background-image: none
1939
+ }
1940
+
1941
+ .btn-warning.disabled, .btn-warning[disabled], fieldset[disabled] .btn-warning, .btn-warning.disabled:hover, .btn-warning[disabled]:hover, fieldset[disabled] .btn-warning:hover, .btn-warning.disabled:focus, .btn-warning[disabled]:focus, fieldset[disabled] .btn-warning:focus, .btn-warning.disabled:active, .btn-warning[disabled]:active, fieldset[disabled] .btn-warning:active, .btn-warning.disabled.active, .btn-warning[disabled].active, fieldset[disabled] .btn-warning.active {
1942
+ background-color: #f0ad4e;
1943
+ border-color: #eea236
1944
+ }
1945
+
1946
+ .btn-danger {
1947
+ color: #fff;
1948
+ background-color: #d9534f;
1949
+ border-color: #d43f3a
1950
+ }
1951
+
1952
+ .btn-danger:hover, .btn-danger:focus, .btn-danger:active, .btn-danger.active, .open .dropdown-toggle.btn-danger {
1953
+ color: #fff;
1954
+ background-color: #d2322d;
1955
+ border-color: #ac2925
1956
+ }
1957
+
1958
+ .btn-danger:active, .btn-danger.active, .open .dropdown-toggle.btn-danger {
1959
+ background-image: none
1960
+ }
1961
+
1962
+ .btn-danger.disabled, .btn-danger[disabled], fieldset[disabled] .btn-danger, .btn-danger.disabled:hover, .btn-danger[disabled]:hover, fieldset[disabled] .btn-danger:hover, .btn-danger.disabled:focus, .btn-danger[disabled]:focus, fieldset[disabled] .btn-danger:focus, .btn-danger.disabled:active, .btn-danger[disabled]:active, fieldset[disabled] .btn-danger:active, .btn-danger.disabled.active, .btn-danger[disabled].active, fieldset[disabled] .btn-danger.active {
1963
+ background-color: #d9534f;
1964
+ border-color: #d43f3a
1965
+ }
1966
+
1967
+ .btn-success {
1968
+ color: #fff;
1969
+ background-color: #5cb85c;
1970
+ border-color: #4cae4c
1971
+ }
1972
+
1973
+ .btn-success:hover, .btn-success:focus, .btn-success:active, .btn-success.active, .open .dropdown-toggle.btn-success {
1974
+ color: #fff;
1975
+ background-color: #47a447;
1976
+ border-color: #398439
1977
+ }
1978
+
1979
+ .btn-success:active, .btn-success.active, .open .dropdown-toggle.btn-success {
1980
+ background-image: none
1981
+ }
1982
+
1983
+ .btn-success.disabled, .btn-success[disabled], fieldset[disabled] .btn-success, .btn-success.disabled:hover, .btn-success[disabled]:hover, fieldset[disabled] .btn-success:hover, .btn-success.disabled:focus, .btn-success[disabled]:focus, fieldset[disabled] .btn-success:focus, .btn-success.disabled:active, .btn-success[disabled]:active, fieldset[disabled] .btn-success:active, .btn-success.disabled.active, .btn-success[disabled].active, fieldset[disabled] .btn-success.active {
1984
+ background-color: #5cb85c;
1985
+ border-color: #4cae4c
1986
+ }
1987
+
1988
+ .btn-info {
1989
+ color: #fff;
1990
+ background-color: #5bc0de;
1991
+ border-color: #46b8da
1992
+ }
1993
+
1994
+ .btn-info:hover, .btn-info:focus, .btn-info:active, .btn-info.active, .open .dropdown-toggle.btn-info {
1995
+ color: #fff;
1996
+ background-color: #39b3d7;
1997
+ border-color: #269abc
1998
+ }
1999
+
2000
+ .btn-info:active, .btn-info.active, .open .dropdown-toggle.btn-info {
2001
+ background-image: none
2002
+ }
2003
+
2004
+ .btn-info.disabled, .btn-info[disabled], fieldset[disabled] .btn-info, .btn-info.disabled:hover, .btn-info[disabled]:hover, fieldset[disabled] .btn-info:hover, .btn-info.disabled:focus, .btn-info[disabled]:focus, fieldset[disabled] .btn-info:focus, .btn-info.disabled:active, .btn-info[disabled]:active, fieldset[disabled] .btn-info:active, .btn-info.disabled.active, .btn-info[disabled].active, fieldset[disabled] .btn-info.active {
2005
+ background-color: #5bc0de;
2006
+ border-color: #46b8da
2007
+ }
2008
+
2009
+ .btn-link {
2010
+ font-weight: normal;
2011
+ color: #428bca;
2012
+ cursor: pointer;
2013
+ border-radius: 0
2014
+ }
2015
+
2016
+ .btn-link, .btn-link:active, .btn-link[disabled], fieldset[disabled] .btn-link {
2017
+ background-color: transparent;
2018
+ -webkit-box-shadow: none;
2019
+ box-shadow: none
2020
+ }
2021
+
2022
+ .btn-link, .btn-link:hover, .btn-link:focus, .btn-link:active {
2023
+ border-color: transparent
2024
+ }
2025
+
2026
+ .btn-link:hover, .btn-link:focus {
2027
+ color: #2a6496;
2028
+ text-decoration: underline;
2029
+ background-color: transparent
2030
+ }
2031
+
2032
+ .btn-link[disabled]:hover, fieldset[disabled] .btn-link:hover, .btn-link[disabled]:focus, fieldset[disabled] .btn-link:focus {
2033
+ color: #999;
2034
+ text-decoration: none
2035
+ }
2036
+
2037
+ .btn-lg {
2038
+ padding: 10px 16px;
2039
+ font-size: 18px;
2040
+ line-height: 1.33;
2041
+ border-radius: 6px
2042
+ }
2043
+
2044
+ .btn-sm, .btn-xs {
2045
+ padding: 5px 10px;
2046
+ font-size: 12px;
2047
+ line-height: 1.5;
2048
+ border-radius: 3px
2049
+ }
2050
+
2051
+ .btn-xs {
2052
+ padding: 1px 5px
2053
+ }
2054
+
2055
+ .btn-block {
2056
+ display: block;
2057
+ width: 100%;
2058
+ padding-right: 0;
2059
+ padding-left: 0
2060
+ }
2061
+
2062
+ .btn-block + .btn-block {
2063
+ margin-top: 5px
2064
+ }
2065
+
2066
+ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="button"].btn-block {
2067
+ width: 100%
2068
+ }
2069
+
2070
+ .fade {
2071
+ opacity: 0;
2072
+ -webkit-transition: opacity .15s linear;
2073
+ transition: opacity .15s linear
2074
+ }
2075
+
2076
+ .fade.in {
2077
+ opacity: 1
2078
+ }
2079
+
2080
+ .collapse {
2081
+ display: none
2082
+ }
2083
+
2084
+ .collapse.in {
2085
+ display: block
2086
+ }
2087
+
2088
+ .collapsing {
2089
+ position: relative;
2090
+ height: 0;
2091
+ overflow: hidden;
2092
+ -webkit-transition: height .35s ease;
2093
+ transition: height .35s ease
2094
+ }
2095
+
2096
+ @font-face {
2097
+ font-family: 'Glyphicons Halflings';
2098
+ src: url('../fonts/glyphicons-halflings-regular.eot');
2099
+ src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons-halflingsregular') format('svg')
2100
+ }
2101
+
2102
+ .glyphicon {
2103
+ position: relative;
2104
+ top: 1px;
2105
+ display: inline-block;
2106
+ font-family: 'Glyphicons Halflings';
2107
+ -webkit-font-smoothing: antialiased;
2108
+ font-style: normal;
2109
+ font-weight: normal;
2110
+ line-height: 1
2111
+ }
2112
+
2113
+ .glyphicon-asterisk:before {
2114
+ content: "\2a"
2115
+ }
2116
+
2117
+ .glyphicon-plus:before {
2118
+ content: "\2b"
2119
+ }
2120
+
2121
+ .glyphicon-euro:before {
2122
+ content: "\20ac"
2123
+ }
2124
+
2125
+ .glyphicon-minus:before {
2126
+ content: "\2212"
2127
+ }
2128
+
2129
+ .glyphicon-cloud:before {
2130
+ content: "\2601"
2131
+ }
2132
+
2133
+ .glyphicon-envelope:before {
2134
+ content: "\2709"
2135
+ }
2136
+
2137
+ .glyphicon-pencil:before {
2138
+ content: "\270f"
2139
+ }
2140
+
2141
+ .glyphicon-glass:before {
2142
+ content: "\e001"
2143
+ }
2144
+
2145
+ .glyphicon-music:before {
2146
+ content: "\e002"
2147
+ }
2148
+
2149
+ .glyphicon-search:before {
2150
+ content: "\e003"
2151
+ }
2152
+
2153
+ .glyphicon-heart:before {
2154
+ content: "\e005"
2155
+ }
2156
+
2157
+ .glyphicon-star:before {
2158
+ content: "\e006"
2159
+ }
2160
+
2161
+ .glyphicon-star-empty:before {
2162
+ content: "\e007"
2163
+ }
2164
+
2165
+ .glyphicon-user:before {
2166
+ content: "\e008"
2167
+ }
2168
+
2169
+ .glyphicon-film:before {
2170
+ content: "\e009"
2171
+ }
2172
+
2173
+ .glyphicon-th-large:before {
2174
+ content: "\e010"
2175
+ }
2176
+
2177
+ .glyphicon-th:before {
2178
+ content: "\e011"
2179
+ }
2180
+
2181
+ .glyphicon-th-list:before {
2182
+ content: "\e012"
2183
+ }
2184
+
2185
+ .glyphicon-ok:before {
2186
+ content: "\e013"
2187
+ }
2188
+
2189
+ .glyphicon-remove:before {
2190
+ content: "\e014"
2191
+ }
2192
+
2193
+ .glyphicon-zoom-in:before {
2194
+ content: "\e015"
2195
+ }
2196
+
2197
+ .glyphicon-zoom-out:before {
2198
+ content: "\e016"
2199
+ }
2200
+
2201
+ .glyphicon-off:before {
2202
+ content: "\e017"
2203
+ }
2204
+
2205
+ .glyphicon-signal:before {
2206
+ content: "\e018"
2207
+ }
2208
+
2209
+ .glyphicon-cog:before {
2210
+ content: "\e019"
2211
+ }
2212
+
2213
+ .glyphicon-trash:before {
2214
+ content: "\e020"
2215
+ }
2216
+
2217
+ .glyphicon-home:before {
2218
+ content: "\e021"
2219
+ }
2220
+
2221
+ .glyphicon-file:before {
2222
+ content: "\e022"
2223
+ }
2224
+
2225
+ .glyphicon-time:before {
2226
+ content: "\e023"
2227
+ }
2228
+
2229
+ .glyphicon-road:before {
2230
+ content: "\e024"
2231
+ }
2232
+
2233
+ .glyphicon-download-alt:before {
2234
+ content: "\e025"
2235
+ }
2236
+
2237
+ .glyphicon-download:before {
2238
+ content: "\e026"
2239
+ }
2240
+
2241
+ .glyphicon-upload:before {
2242
+ content: "\e027"
2243
+ }
2244
+
2245
+ .glyphicon-inbox:before {
2246
+ content: "\e028"
2247
+ }
2248
+
2249
+ .glyphicon-play-circle:before {
2250
+ content: "\e029"
2251
+ }
2252
+
2253
+ .glyphicon-repeat:before {
2254
+ content: "\e030"
2255
+ }
2256
+
2257
+ .glyphicon-refresh:before {
2258
+ content: "\e031"
2259
+ }
2260
+
2261
+ .glyphicon-list-alt:before {
2262
+ content: "\e032"
2263
+ }
2264
+
2265
+ .glyphicon-flag:before {
2266
+ content: "\e034"
2267
+ }
2268
+
2269
+ .glyphicon-headphones:before {
2270
+ content: "\e035"
2271
+ }
2272
+
2273
+ .glyphicon-volume-off:before {
2274
+ content: "\e036"
2275
+ }
2276
+
2277
+ .glyphicon-volume-down:before {
2278
+ content: "\e037"
2279
+ }
2280
+
2281
+ .glyphicon-volume-up:before {
2282
+ content: "\e038"
2283
+ }
2284
+
2285
+ .glyphicon-qrcode:before {
2286
+ content: "\e039"
2287
+ }
2288
+
2289
+ .glyphicon-barcode:before {
2290
+ content: "\e040"
2291
+ }
2292
+
2293
+ .glyphicon-tag:before {
2294
+ content: "\e041"
2295
+ }
2296
+
2297
+ .glyphicon-tags:before {
2298
+ content: "\e042"
2299
+ }
2300
+
2301
+ .glyphicon-book:before {
2302
+ content: "\e043"
2303
+ }
2304
+
2305
+ .glyphicon-print:before {
2306
+ content: "\e045"
2307
+ }
2308
+
2309
+ .glyphicon-font:before {
2310
+ content: "\e047"
2311
+ }
2312
+
2313
+ .glyphicon-bold:before {
2314
+ content: "\e048"
2315
+ }
2316
+
2317
+ .glyphicon-italic:before {
2318
+ content: "\e049"
2319
+ }
2320
+
2321
+ .glyphicon-text-height:before {
2322
+ content: "\e050"
2323
+ }
2324
+
2325
+ .glyphicon-text-width:before {
2326
+ content: "\e051"
2327
+ }
2328
+
2329
+ .glyphicon-align-left:before {
2330
+ content: "\e052"
2331
+ }
2332
+
2333
+ .glyphicon-align-center:before {
2334
+ content: "\e053"
2335
+ }
2336
+
2337
+ .glyphicon-align-right:before {
2338
+ content: "\e054"
2339
+ }
2340
+
2341
+ .glyphicon-align-justify:before {
2342
+ content: "\e055"
2343
+ }
2344
+
2345
+ .glyphicon-list:before {
2346
+ content: "\e056"
2347
+ }
2348
+
2349
+ .glyphicon-indent-left:before {
2350
+ content: "\e057"
2351
+ }
2352
+
2353
+ .glyphicon-indent-right:before {
2354
+ content: "\e058"
2355
+ }
2356
+
2357
+ .glyphicon-facetime-video:before {
2358
+ content: "\e059"
2359
+ }
2360
+
2361
+ .glyphicon-picture:before {
2362
+ content: "\e060"
2363
+ }
2364
+
2365
+ .glyphicon-map-marker:before {
2366
+ content: "\e062"
2367
+ }
2368
+
2369
+ .glyphicon-adjust:before {
2370
+ content: "\e063"
2371
+ }
2372
+
2373
+ .glyphicon-tint:before {
2374
+ content: "\e064"
2375
+ }
2376
+
2377
+ .glyphicon-edit:before {
2378
+ content: "\e065"
2379
+ }
2380
+
2381
+ .glyphicon-share:before {
2382
+ content: "\e066"
2383
+ }
2384
+
2385
+ .glyphicon-check:before {
2386
+ content: "\e067"
2387
+ }
2388
+
2389
+ .glyphicon-move:before {
2390
+ content: "\e068"
2391
+ }
2392
+
2393
+ .glyphicon-step-backward:before {
2394
+ content: "\e069"
2395
+ }
2396
+
2397
+ .glyphicon-fast-backward:before {
2398
+ content: "\e070"
2399
+ }
2400
+
2401
+ .glyphicon-backward:before {
2402
+ content: "\e071"
2403
+ }
2404
+
2405
+ .glyphicon-play:before {
2406
+ content: "\e072"
2407
+ }
2408
+
2409
+ .glyphicon-pause:before {
2410
+ content: "\e073"
2411
+ }
2412
+
2413
+ .glyphicon-stop:before {
2414
+ content: "\e074"
2415
+ }
2416
+
2417
+ .glyphicon-forward:before {
2418
+ content: "\e075"
2419
+ }
2420
+
2421
+ .glyphicon-fast-forward:before {
2422
+ content: "\e076"
2423
+ }
2424
+
2425
+ .glyphicon-step-forward:before {
2426
+ content: "\e077"
2427
+ }
2428
+
2429
+ .glyphicon-eject:before {
2430
+ content: "\e078"
2431
+ }
2432
+
2433
+ .glyphicon-chevron-left:before {
2434
+ content: "\e079"
2435
+ }
2436
+
2437
+ .glyphicon-chevron-right:before {
2438
+ content: "\e080"
2439
+ }
2440
+
2441
+ .glyphicon-plus-sign:before {
2442
+ content: "\e081"
2443
+ }
2444
+
2445
+ .glyphicon-minus-sign:before {
2446
+ content: "\e082"
2447
+ }
2448
+
2449
+ .glyphicon-remove-sign:before {
2450
+ content: "\e083"
2451
+ }
2452
+
2453
+ .glyphicon-ok-sign:before {
2454
+ content: "\e084"
2455
+ }
2456
+
2457
+ .glyphicon-question-sign:before {
2458
+ content: "\e085"
2459
+ }
2460
+
2461
+ .glyphicon-info-sign:before {
2462
+ content: "\e086"
2463
+ }
2464
+
2465
+ .glyphicon-screenshot:before {
2466
+ content: "\e087"
2467
+ }
2468
+
2469
+ .glyphicon-remove-circle:before {
2470
+ content: "\e088"
2471
+ }
2472
+
2473
+ .glyphicon-ok-circle:before {
2474
+ content: "\e089"
2475
+ }
2476
+
2477
+ .glyphicon-ban-circle:before {
2478
+ content: "\e090"
2479
+ }
2480
+
2481
+ .glyphicon-arrow-left:before {
2482
+ content: "\e091"
2483
+ }
2484
+
2485
+ .glyphicon-arrow-right:before {
2486
+ content: "\e092"
2487
+ }
2488
+
2489
+ .glyphicon-arrow-up:before {
2490
+ content: "\e093"
2491
+ }
2492
+
2493
+ .glyphicon-arrow-down:before {
2494
+ content: "\e094"
2495
+ }
2496
+
2497
+ .glyphicon-share-alt:before {
2498
+ content: "\e095"
2499
+ }
2500
+
2501
+ .glyphicon-resize-full:before {
2502
+ content: "\e096"
2503
+ }
2504
+
2505
+ .glyphicon-resize-small:before {
2506
+ content: "\e097"
2507
+ }
2508
+
2509
+ .glyphicon-exclamation-sign:before {
2510
+ content: "\e101"
2511
+ }
2512
+
2513
+ .glyphicon-gift:before {
2514
+ content: "\e102"
2515
+ }
2516
+
2517
+ .glyphicon-leaf:before {
2518
+ content: "\e103"
2519
+ }
2520
+
2521
+ .glyphicon-eye-open:before {
2522
+ content: "\e105"
2523
+ }
2524
+
2525
+ .glyphicon-eye-close:before {
2526
+ content: "\e106"
2527
+ }
2528
+
2529
+ .glyphicon-warning-sign:before {
2530
+ content: "\e107"
2531
+ }
2532
+
2533
+ .glyphicon-plane:before {
2534
+ content: "\e108"
2535
+ }
2536
+
2537
+ .glyphicon-random:before {
2538
+ content: "\e110"
2539
+ }
2540
+
2541
+ .glyphicon-comment:before {
2542
+ content: "\e111"
2543
+ }
2544
+
2545
+ .glyphicon-magnet:before {
2546
+ content: "\e112"
2547
+ }
2548
+
2549
+ .glyphicon-chevron-up:before {
2550
+ content: "\e113"
2551
+ }
2552
+
2553
+ .glyphicon-chevron-down:before {
2554
+ content: "\e114"
2555
+ }
2556
+
2557
+ .glyphicon-retweet:before {
2558
+ content: "\e115"
2559
+ }
2560
+
2561
+ .glyphicon-shopping-cart:before {
2562
+ content: "\e116"
2563
+ }
2564
+
2565
+ .glyphicon-folder-close:before {
2566
+ content: "\e117"
2567
+ }
2568
+
2569
+ .glyphicon-folder-open:before {
2570
+ content: "\e118"
2571
+ }
2572
+
2573
+ .glyphicon-resize-vertical:before {
2574
+ content: "\e119"
2575
+ }
2576
+
2577
+ .glyphicon-resize-horizontal:before {
2578
+ content: "\e120"
2579
+ }
2580
+
2581
+ .glyphicon-hdd:before {
2582
+ content: "\e121"
2583
+ }
2584
+
2585
+ .glyphicon-bullhorn:before {
2586
+ content: "\e122"
2587
+ }
2588
+
2589
+ .glyphicon-certificate:before {
2590
+ content: "\e124"
2591
+ }
2592
+
2593
+ .glyphicon-thumbs-up:before {
2594
+ content: "\e125"
2595
+ }
2596
+
2597
+ .glyphicon-thumbs-down:before {
2598
+ content: "\e126"
2599
+ }
2600
+
2601
+ .glyphicon-hand-right:before {
2602
+ content: "\e127"
2603
+ }
2604
+
2605
+ .glyphicon-hand-left:before {
2606
+ content: "\e128"
2607
+ }
2608
+
2609
+ .glyphicon-hand-up:before {
2610
+ content: "\e129"
2611
+ }
2612
+
2613
+ .glyphicon-hand-down:before {
2614
+ content: "\e130"
2615
+ }
2616
+
2617
+ .glyphicon-circle-arrow-right:before {
2618
+ content: "\e131"
2619
+ }
2620
+
2621
+ .glyphicon-circle-arrow-left:before {
2622
+ content: "\e132"
2623
+ }
2624
+
2625
+ .glyphicon-circle-arrow-up:before {
2626
+ content: "\e133"
2627
+ }
2628
+
2629
+ .glyphicon-circle-arrow-down:before {
2630
+ content: "\e134"
2631
+ }
2632
+
2633
+ .glyphicon-globe:before {
2634
+ content: "\e135"
2635
+ }
2636
+
2637
+ .glyphicon-tasks:before {
2638
+ content: "\e137"
2639
+ }
2640
+
2641
+ .glyphicon-filter:before {
2642
+ content: "\e138"
2643
+ }
2644
+
2645
+ .glyphicon-fullscreen:before {
2646
+ content: "\e140"
2647
+ }
2648
+
2649
+ .glyphicon-dashboard:before {
2650
+ content: "\e141"
2651
+ }
2652
+
2653
+ .glyphicon-heart-empty:before {
2654
+ content: "\e143"
2655
+ }
2656
+
2657
+ .glyphicon-link:before {
2658
+ content: "\e144"
2659
+ }
2660
+
2661
+ .glyphicon-phone:before {
2662
+ content: "\e145"
2663
+ }
2664
+
2665
+ .glyphicon-usd:before {
2666
+ content: "\e148"
2667
+ }
2668
+
2669
+ .glyphicon-gbp:before {
2670
+ content: "\e149"
2671
+ }
2672
+
2673
+ .glyphicon-sort:before {
2674
+ content: "\e150"
2675
+ }
2676
+
2677
+ .glyphicon-sort-by-alphabet:before {
2678
+ content: "\e151"
2679
+ }
2680
+
2681
+ .glyphicon-sort-by-alphabet-alt:before {
2682
+ content: "\e152"
2683
+ }
2684
+
2685
+ .glyphicon-sort-by-order:before {
2686
+ content: "\e153"
2687
+ }
2688
+
2689
+ .glyphicon-sort-by-order-alt:before {
2690
+ content: "\e154"
2691
+ }
2692
+
2693
+ .glyphicon-sort-by-attributes:before {
2694
+ content: "\e155"
2695
+ }
2696
+
2697
+ .glyphicon-sort-by-attributes-alt:before {
2698
+ content: "\e156"
2699
+ }
2700
+
2701
+ .glyphicon-unchecked:before {
2702
+ content: "\e157"
2703
+ }
2704
+
2705
+ .glyphicon-expand:before {
2706
+ content: "\e158"
2707
+ }
2708
+
2709
+ .glyphicon-collapse-down:before {
2710
+ content: "\e159"
2711
+ }
2712
+
2713
+ .glyphicon-collapse-up:before {
2714
+ content: "\e160"
2715
+ }
2716
+
2717
+ .glyphicon-log-in:before {
2718
+ content: "\e161"
2719
+ }
2720
+
2721
+ .glyphicon-flash:before {
2722
+ content: "\e162"
2723
+ }
2724
+
2725
+ .glyphicon-log-out:before {
2726
+ content: "\e163"
2727
+ }
2728
+
2729
+ .glyphicon-new-window:before {
2730
+ content: "\e164"
2731
+ }
2732
+
2733
+ .glyphicon-record:before {
2734
+ content: "\e165"
2735
+ }
2736
+
2737
+ .glyphicon-save:before {
2738
+ content: "\e166"
2739
+ }
2740
+
2741
+ .glyphicon-open:before {
2742
+ content: "\e167"
2743
+ }
2744
+
2745
+ .glyphicon-saved:before {
2746
+ content: "\e168"
2747
+ }
2748
+
2749
+ .glyphicon-import:before {
2750
+ content: "\e169"
2751
+ }
2752
+
2753
+ .glyphicon-export:before {
2754
+ content: "\e170"
2755
+ }
2756
+
2757
+ .glyphicon-send:before {
2758
+ content: "\e171"
2759
+ }
2760
+
2761
+ .glyphicon-floppy-disk:before {
2762
+ content: "\e172"
2763
+ }
2764
+
2765
+ .glyphicon-floppy-saved:before {
2766
+ content: "\e173"
2767
+ }
2768
+
2769
+ .glyphicon-floppy-remove:before {
2770
+ content: "\e174"
2771
+ }
2772
+
2773
+ .glyphicon-floppy-save:before {
2774
+ content: "\e175"
2775
+ }
2776
+
2777
+ .glyphicon-floppy-open:before {
2778
+ content: "\e176"
2779
+ }
2780
+
2781
+ .glyphicon-credit-card:before {
2782
+ content: "\e177"
2783
+ }
2784
+
2785
+ .glyphicon-transfer:before {
2786
+ content: "\e178"
2787
+ }
2788
+
2789
+ .glyphicon-cutlery:before {
2790
+ content: "\e179"
2791
+ }
2792
+
2793
+ .glyphicon-header:before {
2794
+ content: "\e180"
2795
+ }
2796
+
2797
+ .glyphicon-compressed:before {
2798
+ content: "\e181"
2799
+ }
2800
+
2801
+ .glyphicon-earphone:before {
2802
+ content: "\e182"
2803
+ }
2804
+
2805
+ .glyphicon-phone-alt:before {
2806
+ content: "\e183"
2807
+ }
2808
+
2809
+ .glyphicon-tower:before {
2810
+ content: "\e184"
2811
+ }
2812
+
2813
+ .glyphicon-stats:before {
2814
+ content: "\e185"
2815
+ }
2816
+
2817
+ .glyphicon-sd-video:before {
2818
+ content: "\e186"
2819
+ }
2820
+
2821
+ .glyphicon-hd-video:before {
2822
+ content: "\e187"
2823
+ }
2824
+
2825
+ .glyphicon-subtitles:before {
2826
+ content: "\e188"
2827
+ }
2828
+
2829
+ .glyphicon-sound-stereo:before {
2830
+ content: "\e189"
2831
+ }
2832
+
2833
+ .glyphicon-sound-dolby:before {
2834
+ content: "\e190"
2835
+ }
2836
+
2837
+ .glyphicon-sound-5-1:before {
2838
+ content: "\e191"
2839
+ }
2840
+
2841
+ .glyphicon-sound-6-1:before {
2842
+ content: "\e192"
2843
+ }
2844
+
2845
+ .glyphicon-sound-7-1:before {
2846
+ content: "\e193"
2847
+ }
2848
+
2849
+ .glyphicon-copyright-mark:before {
2850
+ content: "\e194"
2851
+ }
2852
+
2853
+ .glyphicon-registration-mark:before {
2854
+ content: "\e195"
2855
+ }
2856
+
2857
+ .glyphicon-cloud-download:before {
2858
+ content: "\e197"
2859
+ }
2860
+
2861
+ .glyphicon-cloud-upload:before {
2862
+ content: "\e198"
2863
+ }
2864
+
2865
+ .glyphicon-tree-conifer:before {
2866
+ content: "\e199"
2867
+ }
2868
+
2869
+ .glyphicon-tree-deciduous:before {
2870
+ content: "\e200"
2871
+ }
2872
+
2873
+ .glyphicon-briefcase:before {
2874
+ content: "\1f4bc"
2875
+ }
2876
+
2877
+ .glyphicon-calendar:before {
2878
+ content: "\1f4c5"
2879
+ }
2880
+
2881
+ .glyphicon-pushpin:before {
2882
+ content: "\1f4cc"
2883
+ }
2884
+
2885
+ .glyphicon-paperclip:before {
2886
+ content: "\1f4ce"
2887
+ }
2888
+
2889
+ .glyphicon-camera:before {
2890
+ content: "\1f4f7"
2891
+ }
2892
+
2893
+ .glyphicon-lock:before {
2894
+ content: "\1f512"
2895
+ }
2896
+
2897
+ .glyphicon-bell:before {
2898
+ content: "\1f514"
2899
+ }
2900
+
2901
+ .glyphicon-bookmark:before {
2902
+ content: "\1f516"
2903
+ }
2904
+
2905
+ .glyphicon-fire:before {
2906
+ content: "\1f525"
2907
+ }
2908
+
2909
+ .glyphicon-wrench:before {
2910
+ content: "\1f527"
2911
+ }
2912
+
2913
+ .caret {
2914
+ display: inline-block;
2915
+ width: 0;
2916
+ height: 0;
2917
+ margin-left: 2px;
2918
+ vertical-align: middle;
2919
+ border-top: 4px solid #000;
2920
+ border-right: 4px solid transparent;
2921
+ border-bottom: 0 dotted;
2922
+ border-left: 4px solid transparent;
2923
+ content: ""
2924
+ }
2925
+
2926
+ .dropdown {
2927
+ position: relative
2928
+ }
2929
+
2930
+ .dropdown-toggle:focus {
2931
+ outline: 0
2932
+ }
2933
+
2934
+ .dropdown-menu {
2935
+ position: absolute;
2936
+ top: 100%;
2937
+ left: 0;
2938
+ z-index: 1000;
2939
+ display: none;
2940
+ float: left;
2941
+ min-width: 160px;
2942
+ padding: 5px 0;
2943
+ margin: 2px 0 0;
2944
+ font-size: 14px;
2945
+ list-style: none;
2946
+ background-color: #fff;
2947
+ border: 1px solid #ccc;
2948
+ border: 1px solid rgba(0, 0, 0, 0.15);
2949
+ border-radius: 4px;
2950
+ -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
2951
+ box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
2952
+ background-clip: padding-box
2953
+ }
2954
+
2955
+ .dropdown-menu.pull-right {
2956
+ right: 0;
2957
+ left: auto
2958
+ }
2959
+
2960
+ .dropdown-menu .divider {
2961
+ height: 1px;
2962
+ margin: 9px 0;
2963
+ overflow: hidden;
2964
+ background-color: #e5e5e5
2965
+ }
2966
+
2967
+ .dropdown-menu > li > a {
2968
+ display: block;
2969
+ padding: 3px 20px;
2970
+ clear: both;
2971
+ font-weight: normal;
2972
+ line-height: 1.428571429;
2973
+ color: #333;
2974
+ white-space: nowrap
2975
+ }
2976
+
2977
+ .dropdown-menu > li > a:hover, .dropdown-menu > li > a:focus {
2978
+ color: #fff;
2979
+ text-decoration: none;
2980
+ background-color: #428bca
2981
+ }
2982
+
2983
+ .dropdown-menu > .active > a, .dropdown-menu > .active > a:hover, .dropdown-menu > .active > a:focus {
2984
+ color: #fff;
2985
+ text-decoration: none;
2986
+ background-color: #428bca;
2987
+ outline: 0
2988
+ }
2989
+
2990
+ .dropdown-menu > .disabled > a, .dropdown-menu > .disabled > a:hover, .dropdown-menu > .disabled > a:focus {
2991
+ color: #999
2992
+ }
2993
+
2994
+ .dropdown-menu > .disabled > a:hover, .dropdown-menu > .disabled > a:focus {
2995
+ text-decoration: none;
2996
+ cursor: not-allowed;
2997
+ background-color: transparent;
2998
+ background-image: none;
2999
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled=false)
3000
+ }
3001
+
3002
+ .open > .dropdown-menu {
3003
+ display: block
3004
+ }
3005
+
3006
+ .open > a {
3007
+ outline: 0
3008
+ }
3009
+
3010
+ .dropdown-header {
3011
+ display: block;
3012
+ padding: 3px 20px;
3013
+ font-size: 12px;
3014
+ line-height: 1.428571429;
3015
+ color: #999
3016
+ }
3017
+
3018
+ .dropdown-backdrop {
3019
+ position: fixed;
3020
+ top: 0;
3021
+ right: 0;
3022
+ bottom: 0;
3023
+ left: 0;
3024
+ z-index: 990
3025
+ }
3026
+
3027
+ .pull-right > .dropdown-menu {
3028
+ right: 0;
3029
+ left: auto
3030
+ }
3031
+
3032
+ .dropup .caret, .navbar-fixed-bottom .dropdown .caret {
3033
+ border-top: 0 dotted;
3034
+ border-bottom: 4px solid #000;
3035
+ content: ""
3036
+ }
3037
+
3038
+ .dropup .dropdown-menu, .navbar-fixed-bottom .dropdown .dropdown-menu {
3039
+ top: auto;
3040
+ bottom: 100%;
3041
+ margin-bottom: 1px
3042
+ }
3043
+
3044
+ @media (min-width: 768px) {
3045
+ .navbar-right .dropdown-menu {
3046
+ right: 0;
3047
+ left: auto
3048
+ }
3049
+ }
3050
+
3051
+ .btn-default .caret {
3052
+ border-top-color: #333
3053
+ }
3054
+
3055
+ .btn-primary .caret, .btn-success .caret, .btn-warning .caret, .btn-danger .caret, .btn-info .caret {
3056
+ border-top-color: #fff
3057
+ }
3058
+
3059
+ .dropup .btn-default .caret {
3060
+ border-bottom-color: #333
3061
+ }
3062
+
3063
+ .dropup .btn-primary .caret, .dropup .btn-success .caret, .dropup .btn-warning .caret, .dropup .btn-danger .caret, .dropup .btn-info .caret {
3064
+ border-bottom-color: #fff
3065
+ }
3066
+
3067
+ .btn-group, .btn-group-vertical {
3068
+ position: relative;
3069
+ display: inline-block;
3070
+ vertical-align: middle
3071
+ }
3072
+
3073
+ .btn-group > .btn, .btn-group-vertical > .btn {
3074
+ position: relative;
3075
+ float: left
3076
+ }
3077
+
3078
+ .btn-group > .btn:hover, .btn-group-vertical > .btn:hover, .btn-group > .btn:focus, .btn-group-vertical > .btn:focus, .btn-group > .btn:active, .btn-group-vertical > .btn:active, .btn-group > .btn.active, .btn-group-vertical > .btn.active {
3079
+ z-index: 2
3080
+ }
3081
+
3082
+ .btn-group > .btn:focus, .btn-group-vertical > .btn:focus {
3083
+ outline: 0
3084
+ }
3085
+
3086
+ .btn-group .btn + .btn, .btn-group .btn + .btn-group, .btn-group .btn-group + .btn, .btn-group .btn-group + .btn-group {
3087
+ margin-left: -1px
3088
+ }
3089
+
3090
+ .btn-toolbar:before, .btn-toolbar:after {
3091
+ display: table;
3092
+ content: " "
3093
+ }
3094
+
3095
+ .btn-toolbar:after {
3096
+ clear: both
3097
+ }
3098
+
3099
+ .btn-toolbar:before, .btn-toolbar:after {
3100
+ display: table;
3101
+ content: " "
3102
+ }
3103
+
3104
+ .btn-toolbar:after {
3105
+ clear: both
3106
+ }
3107
+
3108
+ .btn-toolbar .btn-group {
3109
+ float: left
3110
+ }
3111
+
3112
+ .btn-toolbar > .btn + .btn, .btn-toolbar > .btn-group + .btn, .btn-toolbar > .btn + .btn-group, .btn-toolbar > .btn-group + .btn-group {
3113
+ margin-left: 5px
3114
+ }
3115
+
3116
+ .btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
3117
+ border-radius: 0
3118
+ }
3119
+
3120
+ .btn-group > .btn:first-child {
3121
+ margin-left: 0
3122
+ }
3123
+
3124
+ .btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {
3125
+ border-top-right-radius: 0;
3126
+ border-bottom-right-radius: 0
3127
+ }
3128
+
3129
+ .btn-group > .btn:last-child:not(:first-child), .btn-group > .dropdown-toggle:not(:first-child) {
3130
+ border-bottom-left-radius: 0;
3131
+ border-top-left-radius: 0
3132
+ }
3133
+
3134
+ .btn-group > .btn-group {
3135
+ float: left
3136
+ }
3137
+
3138
+ .btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
3139
+ border-radius: 0
3140
+ }
3141
+
3142
+ .btn-group > .btn-group:first-child > .btn:last-child, .btn-group > .btn-group:first-child > .dropdown-toggle {
3143
+ border-top-right-radius: 0;
3144
+ border-bottom-right-radius: 0
3145
+ }
3146
+
3147
+ .btn-group > .btn-group:last-child > .btn:first-child {
3148
+ border-bottom-left-radius: 0;
3149
+ border-top-left-radius: 0
3150
+ }
3151
+
3152
+ .btn-group .dropdown-toggle:active, .btn-group.open .dropdown-toggle {
3153
+ outline: 0
3154
+ }
3155
+
3156
+ .btn-group-xs > .btn {
3157
+ padding: 5px 10px;
3158
+ padding: 1px 5px;
3159
+ font-size: 12px;
3160
+ line-height: 1.5;
3161
+ border-radius: 3px
3162
+ }
3163
+
3164
+ .btn-group-sm > .btn {
3165
+ padding: 5px 10px;
3166
+ font-size: 12px;
3167
+ line-height: 1.5;
3168
+ border-radius: 3px
3169
+ }
3170
+
3171
+ .btn-group-lg > .btn {
3172
+ padding: 10px 16px;
3173
+ font-size: 18px;
3174
+ line-height: 1.33;
3175
+ border-radius: 6px
3176
+ }
3177
+
3178
+ .btn-group > .btn + .dropdown-toggle {
3179
+ padding-right: 8px;
3180
+ padding-left: 8px
3181
+ }
3182
+
3183
+ .btn-group > .btn-lg + .dropdown-toggle {
3184
+ padding-right: 12px;
3185
+ padding-left: 12px
3186
+ }
3187
+
3188
+ .btn-group.open .dropdown-toggle {
3189
+ -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
3190
+ box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125)
3191
+ }
3192
+
3193
+ .btn .caret {
3194
+ margin-left: 0
3195
+ }
3196
+
3197
+ .btn-lg .caret {
3198
+ border-width: 5px 5px 0;
3199
+ border-bottom-width: 0
3200
+ }
3201
+
3202
+ .dropup .btn-lg .caret {
3203
+ border-width: 0 5px 5px
3204
+ }
3205
+
3206
+ .btn-group-vertical > .btn, .btn-group-vertical > .btn-group {
3207
+ display: block;
3208
+ float: none;
3209
+ width: 100%;
3210
+ max-width: 100%
3211
+ }
3212
+
3213
+ .btn-group-vertical > .btn-group:before, .btn-group-vertical > .btn-group:after {
3214
+ display: table;
3215
+ content: " "
3216
+ }
3217
+
3218
+ .btn-group-vertical > .btn-group:after {
3219
+ clear: both
3220
+ }
3221
+
3222
+ .btn-group-vertical > .btn-group:before, .btn-group-vertical > .btn-group:after {
3223
+ display: table;
3224
+ content: " "
3225
+ }
3226
+
3227
+ .btn-group-vertical > .btn-group:after {
3228
+ clear: both
3229
+ }
3230
+
3231
+ .btn-group-vertical > .btn-group > .btn {
3232
+ float: none
3233
+ }
3234
+
3235
+ .btn-group-vertical > .btn + .btn, .btn-group-vertical > .btn + .btn-group, .btn-group-vertical > .btn-group + .btn, .btn-group-vertical > .btn-group + .btn-group {
3236
+ margin-top: -1px;
3237
+ margin-left: 0
3238
+ }
3239
+
3240
+ .btn-group-vertical > .btn:not(:first-child):not(:last-child) {
3241
+ border-radius: 0
3242
+ }
3243
+
3244
+ .btn-group-vertical > .btn:first-child:not(:last-child) {
3245
+ border-top-right-radius: 4px;
3246
+ border-bottom-right-radius: 0;
3247
+ border-bottom-left-radius: 0
3248
+ }
3249
+
3250
+ .btn-group-vertical > .btn:last-child:not(:first-child) {
3251
+ border-top-right-radius: 0;
3252
+ border-bottom-left-radius: 4px;
3253
+ border-top-left-radius: 0
3254
+ }
3255
+
3256
+ .btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {
3257
+ border-radius: 0
3258
+ }
3259
+
3260
+ .btn-group-vertical > .btn-group:first-child > .btn:last-child, .btn-group-vertical > .btn-group:first-child > .dropdown-toggle {
3261
+ border-bottom-right-radius: 0;
3262
+ border-bottom-left-radius: 0
3263
+ }
3264
+
3265
+ .btn-group-vertical > .btn-group:last-child > .btn:first-child {
3266
+ border-top-right-radius: 0;
3267
+ border-top-left-radius: 0
3268
+ }
3269
+
3270
+ .btn-group-justified {
3271
+ display: table;
3272
+ width: 100%;
3273
+ border-collapse: separate;
3274
+ table-layout: fixed
3275
+ }
3276
+
3277
+ .btn-group-justified .btn {
3278
+ display: table-cell;
3279
+ float: none;
3280
+ width: 1%
3281
+ }
3282
+
3283
+ [data-toggle="buttons"] > .btn > input[type="radio"], [data-toggle="buttons"] > .btn > input[type="checkbox"] {
3284
+ display: none
3285
+ }
3286
+
3287
+ .input-group {
3288
+ position: relative;
3289
+ display: table;
3290
+ border-collapse: separate
3291
+ }
3292
+
3293
+ .input-group.col {
3294
+ float: none;
3295
+ padding-right: 0;
3296
+ padding-left: 0
3297
+ }
3298
+
3299
+ .input-group .form-control {
3300
+ width: 100%;
3301
+ margin-bottom: 0
3302
+ }
3303
+
3304
+ .input-group-lg > .form-control, .input-group-lg > .input-group-addon, .input-group-lg > .input-group-btn > .btn {
3305
+ height: 45px;
3306
+ padding: 10px 16px;
3307
+ font-size: 18px;
3308
+ line-height: 1.33;
3309
+ border-radius: 6px
3310
+ }
3311
+
3312
+ select.input-group-lg > .form-control, select.input-group-lg > .input-group-addon, select.input-group-lg > .input-group-btn > .btn {
3313
+ height: 45px;
3314
+ line-height: 45px
3315
+ }
3316
+
3317
+ textarea.input-group-lg > .form-control, textarea.input-group-lg > .input-group-addon, textarea.input-group-lg > .input-group-btn > .btn {
3318
+ height: auto
3319
+ }
3320
+
3321
+ .input-group-sm > .form-control, .input-group-sm > .input-group-addon, .input-group-sm > .input-group-btn > .btn {
3322
+ height: 30px;
3323
+ padding: 5px 10px;
3324
+ font-size: 12px;
3325
+ line-height: 1.5;
3326
+ border-radius: 3px
3327
+ }
3328
+
3329
+ select.input-group-sm > .form-control, select.input-group-sm > .input-group-addon, select.input-group-sm > .input-group-btn > .btn {
3330
+ height: 30px;
3331
+ line-height: 30px
3332
+ }
3333
+
3334
+ textarea.input-group-sm > .form-control, textarea.input-group-sm > .input-group-addon, textarea.input-group-sm > .input-group-btn > .btn {
3335
+ height: auto
3336
+ }
3337
+
3338
+ .input-group-addon, .input-group-btn, .input-group .form-control {
3339
+ display: table-cell
3340
+ }
3341
+
3342
+ .input-group-addon:not(:first-child):not(:last-child), .input-group-btn:not(:first-child):not(:last-child), .input-group .form-control:not(:first-child):not(:last-child) {
3343
+ border-radius: 0
3344
+ }
3345
+
3346
+ .input-group-addon, .input-group-btn {
3347
+ width: 1%;
3348
+ white-space: nowrap;
3349
+ vertical-align: middle
3350
+ }
3351
+
3352
+ .input-group-addon {
3353
+ padding: 6px 12px;
3354
+ font-size: 14px;
3355
+ font-weight: normal;
3356
+ line-height: 1;
3357
+ text-align: center;
3358
+ background-color: #eee;
3359
+ border: 1px solid #ccc;
3360
+ border-radius: 4px
3361
+ }
3362
+
3363
+ .input-group-addon.input-sm {
3364
+ padding: 5px 10px;
3365
+ font-size: 12px;
3366
+ border-radius: 3px
3367
+ }
3368
+
3369
+ .input-group-addon.input-lg {
3370
+ padding: 10px 16px;
3371
+ font-size: 18px;
3372
+ border-radius: 6px
3373
+ }
3374
+
3375
+ .input-group-addon input[type="radio"], .input-group-addon input[type="checkbox"] {
3376
+ margin-top: 0
3377
+ }
3378
+
3379
+ .input-group .form-control:first-child, .input-group-addon:first-child, .input-group-btn:first-child > .btn, .input-group-btn:first-child > .dropdown-toggle, .input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle) {
3380
+ border-top-right-radius: 0;
3381
+ border-bottom-right-radius: 0
3382
+ }
3383
+
3384
+ .input-group-addon:first-child {
3385
+ border-right: 0
3386
+ }
3387
+
3388
+ .input-group .form-control:last-child, .input-group-addon:last-child, .input-group-btn:last-child > .btn, .input-group-btn:last-child > .dropdown-toggle, .input-group-btn:first-child > .btn:not(:first-child) {
3389
+ border-bottom-left-radius: 0;
3390
+ border-top-left-radius: 0
3391
+ }
3392
+
3393
+ .input-group-addon:last-child {
3394
+ border-left: 0
3395
+ }
3396
+
3397
+ .input-group-btn {
3398
+ position: relative;
3399
+ white-space: nowrap
3400
+ }
3401
+
3402
+ .input-group-btn > .btn {
3403
+ position: relative
3404
+ }
3405
+
3406
+ .input-group-btn > .btn + .btn {
3407
+ margin-left: -4px
3408
+ }
3409
+
3410
+ .input-group-btn > .btn:hover, .input-group-btn > .btn:active {
3411
+ z-index: 2
3412
+ }
3413
+
3414
+ .nav {
3415
+ padding-left: 0;
3416
+ margin-bottom: 0;
3417
+ list-style: none
3418
+ }
3419
+
3420
+ .nav:before, .nav:after {
3421
+ display: table;
3422
+ content: " "
3423
+ }
3424
+
3425
+ .nav:after {
3426
+ clear: both
3427
+ }
3428
+
3429
+ .nav:before, .nav:after {
3430
+ display: table;
3431
+ content: " "
3432
+ }
3433
+
3434
+ .nav:after {
3435
+ clear: both
3436
+ }
3437
+
3438
+ .nav > li {
3439
+ position: relative;
3440
+ display: block
3441
+ }
3442
+
3443
+ .nav > li > a {
3444
+ position: relative;
3445
+ display: block;
3446
+ padding: 10px 15px
3447
+ }
3448
+
3449
+ .nav > li > a:hover, .nav > li > a:focus {
3450
+ text-decoration: none;
3451
+ background-color: #eee
3452
+ }
3453
+
3454
+ .nav > li.disabled > a {
3455
+ color: #999
3456
+ }
3457
+
3458
+ .nav > li.disabled > a:hover, .nav > li.disabled > a:focus {
3459
+ color: #999;
3460
+ text-decoration: none;
3461
+ cursor: not-allowed;
3462
+ background-color: transparent
3463
+ }
3464
+
3465
+ .nav .open > a, .nav .open > a:hover, .nav .open > a:focus {
3466
+ background-color: #eee;
3467
+ border-color: #428bca
3468
+ }
3469
+
3470
+ .nav .nav-divider {
3471
+ height: 1px;
3472
+ margin: 9px 0;
3473
+ overflow: hidden;
3474
+ background-color: #e5e5e5
3475
+ }
3476
+
3477
+ .nav > li > a > img {
3478
+ max-width: none
3479
+ }
3480
+
3481
+ .nav-tabs {
3482
+ border-bottom: 1px solid #ddd
3483
+ }
3484
+
3485
+ .nav-tabs > li {
3486
+ float: left;
3487
+ margin-bottom: -1px
3488
+ }
3489
+
3490
+ .nav-tabs > li > a {
3491
+ margin-right: 2px;
3492
+ line-height: 1.428571429;
3493
+ border: 1px solid transparent;
3494
+ border-radius: 4px 4px 0 0
3495
+ }
3496
+
3497
+ .nav-tabs > li > a:hover {
3498
+ border-color: #eee #eee #ddd
3499
+ }
3500
+
3501
+ .nav-tabs > li.active > a, .nav-tabs > li.active > a:hover, .nav-tabs > li.active > a:focus {
3502
+ color: #555;
3503
+ cursor: default;
3504
+ background-color: #fff;
3505
+ border: 1px solid #ddd;
3506
+ border-bottom-color: transparent
3507
+ }
3508
+
3509
+ .nav-tabs.nav-justified {
3510
+ width: 100%;
3511
+ border-bottom: 0
3512
+ }
3513
+
3514
+ .nav-tabs.nav-justified > li {
3515
+ float: none
3516
+ }
3517
+
3518
+ .nav-tabs.nav-justified > li > a {
3519
+ text-align: center
3520
+ }
3521
+
3522
+ @media (min-width: 768px) {
3523
+ .nav-tabs.nav-justified > li {
3524
+ display: table-cell;
3525
+ width: 1%
3526
+ }
3527
+ }
3528
+
3529
+ .nav-tabs.nav-justified > li > a {
3530
+ margin-right: 0;
3531
+ border-bottom: 1px solid #ddd
3532
+ }
3533
+
3534
+ .nav-tabs.nav-justified > .active > a {
3535
+ border-bottom-color: #fff
3536
+ }
3537
+
3538
+ .nav-pills > li {
3539
+ float: left
3540
+ }
3541
+
3542
+ .nav-pills > li > a {
3543
+ border-radius: 5px
3544
+ }
3545
+
3546
+ .nav-pills > li + li {
3547
+ margin-left: 2px
3548
+ }
3549
+
3550
+ .nav-pills > li.active > a, .nav-pills > li.active > a:hover, .nav-pills > li.active > a:focus {
3551
+ color: #fff;
3552
+ background-color: #428bca
3553
+ }
3554
+
3555
+ .nav-stacked > li {
3556
+ float: none
3557
+ }
3558
+
3559
+ .nav-stacked > li + li {
3560
+ margin-top: 2px;
3561
+ margin-left: 0
3562
+ }
3563
+
3564
+ .nav-justified {
3565
+ width: 100%
3566
+ }
3567
+
3568
+ .nav-justified > li {
3569
+ float: none
3570
+ }
3571
+
3572
+ .nav-justified > li > a {
3573
+ text-align: center
3574
+ }
3575
+
3576
+ @media (min-width: 768px) {
3577
+ .nav-justified > li {
3578
+ display: table-cell;
3579
+ width: 1%
3580
+ }
3581
+ }
3582
+
3583
+ .nav-tabs-justified {
3584
+ border-bottom: 0
3585
+ }
3586
+
3587
+ .nav-tabs-justified > li > a {
3588
+ margin-right: 0;
3589
+ border-bottom: 1px solid #ddd
3590
+ }
3591
+
3592
+ .nav-tabs-justified > .active > a {
3593
+ border-bottom-color: #fff
3594
+ }
3595
+
3596
+ .tabbable:before, .tabbable:after {
3597
+ display: table;
3598
+ content: " "
3599
+ }
3600
+
3601
+ .tabbable:after {
3602
+ clear: both
3603
+ }
3604
+
3605
+ .tabbable:before, .tabbable:after {
3606
+ display: table;
3607
+ content: " "
3608
+ }
3609
+
3610
+ .tabbable:after {
3611
+ clear: both
3612
+ }
3613
+
3614
+ .tab-content > .tab-pane, .pill-content > .pill-pane {
3615
+ display: none
3616
+ }
3617
+
3618
+ .tab-content > .active, .pill-content > .active {
3619
+ display: block
3620
+ }
3621
+
3622
+ .nav .caret {
3623
+ border-top-color: #428bca;
3624
+ border-bottom-color: #428bca
3625
+ }
3626
+
3627
+ .nav a:hover .caret {
3628
+ border-top-color: #2a6496;
3629
+ border-bottom-color: #2a6496
3630
+ }
3631
+
3632
+ .nav-tabs .dropdown-menu {
3633
+ margin-top: -1px;
3634
+ border-top-right-radius: 0;
3635
+ border-top-left-radius: 0
3636
+ }
3637
+
3638
+ .navbar {
3639
+ position: relative;
3640
+ z-index: 1000;
3641
+ min-height: 50px;
3642
+ margin-bottom: 20px;
3643
+ border: 1px solid transparent
3644
+ }
3645
+
3646
+ .navbar:before, .navbar:after {
3647
+ display: table;
3648
+ content: " "
3649
+ }
3650
+
3651
+ .navbar:after {
3652
+ clear: both
3653
+ }
3654
+
3655
+ .navbar:before, .navbar:after {
3656
+ display: table;
3657
+ content: " "
3658
+ }
3659
+
3660
+ .navbar:after {
3661
+ clear: both
3662
+ }
3663
+
3664
+ @media (min-width: 768px) {
3665
+ .navbar {
3666
+ border-radius: 4px
3667
+ }
3668
+ }
3669
+
3670
+ .navbar-header:before, .navbar-header:after {
3671
+ display: table;
3672
+ content: " "
3673
+ }
3674
+
3675
+ .navbar-header:after {
3676
+ clear: both
3677
+ }
3678
+
3679
+ .navbar-header:before, .navbar-header:after {
3680
+ display: table;
3681
+ content: " "
3682
+ }
3683
+
3684
+ .navbar-header:after {
3685
+ clear: both
3686
+ }
3687
+
3688
+ @media (min-width: 768px) {
3689
+ .navbar-header {
3690
+ float: left
3691
+ }
3692
+ }
3693
+
3694
+ .navbar-collapse {
3695
+ max-height: 340px;
3696
+ padding-right: 15px;
3697
+ padding-left: 15px;
3698
+ overflow-x: visible;
3699
+ border-top: 1px solid transparent;
3700
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);
3701
+ -webkit-overflow-scrolling: touch
3702
+ }
3703
+
3704
+ .navbar-collapse:before, .navbar-collapse:after {
3705
+ display: table;
3706
+ content: " "
3707
+ }
3708
+
3709
+ .navbar-collapse:after {
3710
+ clear: both
3711
+ }
3712
+
3713
+ .navbar-collapse:before, .navbar-collapse:after {
3714
+ display: table;
3715
+ content: " "
3716
+ }
3717
+
3718
+ .navbar-collapse:after {
3719
+ clear: both
3720
+ }
3721
+
3722
+ .navbar-collapse.in {
3723
+ overflow-y: auto
3724
+ }
3725
+
3726
+ @media (min-width: 768px) {
3727
+ .navbar-collapse {
3728
+ width: auto;
3729
+ border-top: 0;
3730
+ box-shadow: none
3731
+ }
3732
+
3733
+ .navbar-collapse.collapse {
3734
+ display: block !important;
3735
+ height: auto !important;
3736
+ padding-bottom: 0;
3737
+ overflow: visible !important
3738
+ }
3739
+
3740
+ .navbar-collapse.in {
3741
+ overflow-y: visible
3742
+ }
3743
+
3744
+ .navbar-collapse .navbar-nav.navbar-left:first-child {
3745
+ margin-left: -15px
3746
+ }
3747
+
3748
+ .navbar-collapse .navbar-nav.navbar-right:last-child {
3749
+ margin-right: -15px
3750
+ }
3751
+
3752
+ .navbar-collapse .navbar-text:last-child {
3753
+ margin-right: 0
3754
+ }
3755
+ }
3756
+
3757
+ .container > .navbar-header, .container > .navbar-collapse {
3758
+ margin-right: -15px;
3759
+ margin-left: -15px
3760
+ }
3761
+
3762
+ @media (min-width: 768px) {
3763
+ .container > .navbar-header, .container > .navbar-collapse {
3764
+ margin-right: 0;
3765
+ margin-left: 0
3766
+ }
3767
+ }
3768
+
3769
+ .navbar-static-top {
3770
+ border-width: 0 0 1px
3771
+ }
3772
+
3773
+ @media (min-width: 768px) {
3774
+ .navbar-static-top {
3775
+ border-radius: 0
3776
+ }
3777
+ }
3778
+
3779
+ .navbar-fixed-top, .navbar-fixed-bottom {
3780
+ position: fixed;
3781
+ right: 0;
3782
+ left: 0;
3783
+ border-width: 0 0 1px
3784
+ }
3785
+
3786
+ @media (min-width: 768px) {
3787
+ .navbar-fixed-top, .navbar-fixed-bottom {
3788
+ border-radius: 0
3789
+ }
3790
+ }
3791
+
3792
+ .navbar-fixed-top {
3793
+ top: 0;
3794
+ z-index: 1030
3795
+ }
3796
+
3797
+ .navbar-fixed-bottom {
3798
+ bottom: 0;
3799
+ margin-bottom: 0
3800
+ }
3801
+
3802
+ .navbar-brand {
3803
+ float: left;
3804
+ padding: 15px 15px;
3805
+ font-size: 18px;
3806
+ line-height: 20px
3807
+ }
3808
+
3809
+ .navbar-brand:hover, .navbar-brand:focus {
3810
+ text-decoration: none
3811
+ }
3812
+
3813
+ @media (min-width: 768px) {
3814
+ .navbar > .container .navbar-brand {
3815
+ margin-left: -15px
3816
+ }
3817
+ }
3818
+
3819
+ .navbar-toggle {
3820
+ position: relative;
3821
+ float: right;
3822
+ padding: 9px 10px;
3823
+ margin-top: 8px;
3824
+ margin-right: 15px;
3825
+ margin-bottom: 8px;
3826
+ background-color: transparent;
3827
+ border: 1px solid transparent;
3828
+ border-radius: 4px
3829
+ }
3830
+
3831
+ .navbar-toggle .icon-bar {
3832
+ display: block;
3833
+ width: 22px;
3834
+ height: 2px;
3835
+ border-radius: 1px
3836
+ }
3837
+
3838
+ .navbar-toggle .icon-bar + .icon-bar {
3839
+ margin-top: 4px
3840
+ }
3841
+
3842
+ @media (min-width: 768px) {
3843
+ .navbar-toggle {
3844
+ display: none
3845
+ }
3846
+ }
3847
+
3848
+ .navbar-nav {
3849
+ margin: 7.5px -15px
3850
+ }
3851
+
3852
+ .navbar-nav > li > a {
3853
+ padding-top: 10px;
3854
+ padding-bottom: 10px;
3855
+ line-height: 20px
3856
+ }
3857
+
3858
+ @media (max-width: 767px) {
3859
+ .navbar-nav .open .dropdown-menu {
3860
+ position: static;
3861
+ float: none;
3862
+ width: auto;
3863
+ margin-top: 0;
3864
+ background-color: transparent;
3865
+ border: 0;
3866
+ box-shadow: none
3867
+ }
3868
+
3869
+ .navbar-nav .open .dropdown-menu > li > a, .navbar-nav .open .dropdown-menu .dropdown-header {
3870
+ padding: 5px 15px 5px 25px
3871
+ }
3872
+
3873
+ .navbar-nav .open .dropdown-menu > li > a {
3874
+ line-height: 20px
3875
+ }
3876
+
3877
+ .navbar-nav .open .dropdown-menu > li > a:hover, .navbar-nav .open .dropdown-menu > li > a:focus {
3878
+ background-image: none
3879
+ }
3880
+ }
3881
+
3882
+ @media (min-width: 768px) {
3883
+ .navbar-nav {
3884
+ float: left;
3885
+ margin: 0
3886
+ }
3887
+
3888
+ .navbar-nav > li {
3889
+ float: left
3890
+ }
3891
+
3892
+ .navbar-nav > li > a {
3893
+ padding-top: 15px;
3894
+ padding-bottom: 15px
3895
+ }
3896
+ }
3897
+
3898
+ @media (min-width: 768px) {
3899
+ .navbar-left {
3900
+ float: left !important
3901
+ }
3902
+
3903
+ .navbar-right {
3904
+ float: right !important
3905
+ }
3906
+ }
3907
+
3908
+ .navbar-form {
3909
+ padding: 10px 15px;
3910
+ margin-top: 8px;
3911
+ margin-right: -15px;
3912
+ margin-bottom: 8px;
3913
+ margin-left: -15px;
3914
+ border-top: 1px solid transparent;
3915
+ border-bottom: 1px solid transparent;
3916
+ -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
3917
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1)
3918
+ }
3919
+
3920
+ @media (min-width: 768px) {
3921
+ .navbar-form .form-group {
3922
+ display: inline-block;
3923
+ margin-bottom: 0;
3924
+ vertical-align: middle
3925
+ }
3926
+
3927
+ .navbar-form .form-control {
3928
+ display: inline-block
3929
+ }
3930
+
3931
+ .navbar-form .radio, .navbar-form .checkbox {
3932
+ display: inline-block;
3933
+ padding-left: 0;
3934
+ margin-top: 0;
3935
+ margin-bottom: 0
3936
+ }
3937
+
3938
+ .navbar-form .radio input[type="radio"], .navbar-form .checkbox input[type="checkbox"] {
3939
+ float: none;
3940
+ margin-left: 0
3941
+ }
3942
+ }
3943
+
3944
+ @media (max-width: 767px) {
3945
+ .navbar-form .form-group {
3946
+ margin-bottom: 5px
3947
+ }
3948
+ }
3949
+
3950
+ @media (min-width: 768px) {
3951
+ .navbar-form {
3952
+ width: auto;
3953
+ padding-top: 0;
3954
+ padding-bottom: 0;
3955
+ margin-right: 0;
3956
+ margin-left: 0;
3957
+ border: 0;
3958
+ -webkit-box-shadow: none;
3959
+ box-shadow: none
3960
+ }
3961
+ }
3962
+
3963
+ .navbar-nav > li > .dropdown-menu {
3964
+ margin-top: 0;
3965
+ border-top-right-radius: 0;
3966
+ border-top-left-radius: 0
3967
+ }
3968
+
3969
+ .navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {
3970
+ border-bottom-right-radius: 0;
3971
+ border-bottom-left-radius: 0
3972
+ }
3973
+
3974
+ .navbar-nav.pull-right > li > .dropdown-menu, .navbar-nav > li > .dropdown-menu.pull-right {
3975
+ right: 0;
3976
+ left: auto
3977
+ }
3978
+
3979
+ .navbar-btn {
3980
+ margin-top: 8px;
3981
+ margin-bottom: 8px
3982
+ }
3983
+
3984
+ .navbar-text {
3985
+ float: left;
3986
+ margin-top: 15px;
3987
+ margin-bottom: 15px
3988
+ }
3989
+
3990
+ @media (min-width: 768px) {
3991
+ .navbar-text {
3992
+ margin-right: 15px;
3993
+ margin-left: 15px
3994
+ }
3995
+ }
3996
+
3997
+ .navbar-default {
3998
+ background-color: #f8f8f8;
3999
+ border-color: #e7e7e7
4000
+ }
4001
+
4002
+ .navbar-default .navbar-brand {
4003
+ color: #777
4004
+ }
4005
+
4006
+ .navbar-default .navbar-brand:hover, .navbar-default .navbar-brand:focus {
4007
+ color: #5e5e5e;
4008
+ background-color: transparent
4009
+ }
4010
+
4011
+ .navbar-default .navbar-text {
4012
+ color: #777
4013
+ }
4014
+
4015
+ .navbar-default .navbar-nav > li > a {
4016
+ color: #777
4017
+ }
4018
+
4019
+ .navbar-default .navbar-nav > li > a:hover, .navbar-default .navbar-nav > li > a:focus {
4020
+ color: #333;
4021
+ background-color: transparent
4022
+ }
4023
+
4024
+ .navbar-default .navbar-nav > .active > a, .navbar-default .navbar-nav > .active > a:hover, .navbar-default .navbar-nav > .active > a:focus {
4025
+ color: #555;
4026
+ background-color: #e7e7e7
4027
+ }
4028
+
4029
+ .navbar-default .navbar-nav > .disabled > a, .navbar-default .navbar-nav > .disabled > a:hover, .navbar-default .navbar-nav > .disabled > a:focus {
4030
+ color: #ccc;
4031
+ background-color: transparent
4032
+ }
4033
+
4034
+ .navbar-default .navbar-toggle {
4035
+ border-color: #ddd
4036
+ }
4037
+
4038
+ .navbar-default .navbar-toggle:hover, .navbar-default .navbar-toggle:focus {
4039
+ background-color: #ddd
4040
+ }
4041
+
4042
+ .navbar-default .navbar-toggle .icon-bar {
4043
+ background-color: #ccc
4044
+ }
4045
+
4046
+ .navbar-default .navbar-collapse, .navbar-default .navbar-form {
4047
+ border-color: #e6e6e6
4048
+ }
4049
+
4050
+ .navbar-default .navbar-nav > .dropdown > a:hover .caret, .navbar-default .navbar-nav > .dropdown > a:focus .caret {
4051
+ border-top-color: #333;
4052
+ border-bottom-color: #333
4053
+ }
4054
+
4055
+ .navbar-default .navbar-nav > .open > a, .navbar-default .navbar-nav > .open > a:hover, .navbar-default .navbar-nav > .open > a:focus {
4056
+ color: #555;
4057
+ background-color: #e7e7e7
4058
+ }
4059
+
4060
+ .navbar-default .navbar-nav > .open > a .caret, .navbar-default .navbar-nav > .open > a:hover .caret, .navbar-default .navbar-nav > .open > a:focus .caret {
4061
+ border-top-color: #555;
4062
+ border-bottom-color: #555
4063
+ }
4064
+
4065
+ .navbar-default .navbar-nav > .dropdown > a .caret {
4066
+ border-top-color: #777;
4067
+ border-bottom-color: #777
4068
+ }
4069
+
4070
+ @media (max-width: 767px) {
4071
+ .navbar-default .navbar-nav .open .dropdown-menu > li > a {
4072
+ color: #777
4073
+ }
4074
+
4075
+ .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover, .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {
4076
+ color: #333;
4077
+ background-color: transparent
4078
+ }
4079
+
4080
+ .navbar-default .navbar-nav .open .dropdown-menu > .active > a, .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover, .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {
4081
+ color: #555;
4082
+ background-color: #e7e7e7
4083
+ }
4084
+
4085
+ .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a, .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover, .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {
4086
+ color: #ccc;
4087
+ background-color: transparent
4088
+ }
4089
+ }
4090
+
4091
+ .navbar-default .navbar-link {
4092
+ color: #777
4093
+ }
4094
+
4095
+ .navbar-default .navbar-link:hover {
4096
+ color: #333
4097
+ }
4098
+
4099
+ .navbar-inverse {
4100
+ background-color: #222;
4101
+ border-color: #080808
4102
+ }
4103
+
4104
+ .navbar-inverse .navbar-brand {
4105
+ color: #999
4106
+ }
4107
+
4108
+ .navbar-inverse .navbar-brand:hover, .navbar-inverse .navbar-brand:focus {
4109
+ color: #fff;
4110
+ background-color: transparent
4111
+ }
4112
+
4113
+ .navbar-inverse .navbar-text {
4114
+ color: #999
4115
+ }
4116
+
4117
+ .navbar-inverse .navbar-nav > li > a {
4118
+ color: #999
4119
+ }
4120
+
4121
+ .navbar-inverse .navbar-nav > li > a:hover, .navbar-inverse .navbar-nav > li > a:focus {
4122
+ color: #fff;
4123
+ background-color: transparent
4124
+ }
4125
+
4126
+ .navbar-inverse .navbar-nav > .active > a, .navbar-inverse .navbar-nav > .active > a:hover, .navbar-inverse .navbar-nav > .active > a:focus {
4127
+ color: #fff;
4128
+ background-color: #080808
4129
+ }
4130
+
4131
+ .navbar-inverse .navbar-nav > .disabled > a, .navbar-inverse .navbar-nav > .disabled > a:hover, .navbar-inverse .navbar-nav > .disabled > a:focus {
4132
+ color: #444;
4133
+ background-color: transparent
4134
+ }
4135
+
4136
+ .navbar-inverse .navbar-toggle {
4137
+ border-color: #333
4138
+ }
4139
+
4140
+ .navbar-inverse .navbar-toggle:hover, .navbar-inverse .navbar-toggle:focus {
4141
+ background-color: #333
4142
+ }
4143
+
4144
+ .navbar-inverse .navbar-toggle .icon-bar {
4145
+ background-color: #fff
4146
+ }
4147
+
4148
+ .navbar-inverse .navbar-collapse, .navbar-inverse .navbar-form {
4149
+ border-color: #101010
4150
+ }
4151
+
4152
+ .navbar-inverse .navbar-nav > .open > a, .navbar-inverse .navbar-nav > .open > a:hover, .navbar-inverse .navbar-nav > .open > a:focus {
4153
+ color: #fff;
4154
+ background-color: #080808
4155
+ }
4156
+
4157
+ .navbar-inverse .navbar-nav > .dropdown > a:hover .caret {
4158
+ border-top-color: #fff;
4159
+ border-bottom-color: #fff
4160
+ }
4161
+
4162
+ .navbar-inverse .navbar-nav > .dropdown > a .caret {
4163
+ border-top-color: #999;
4164
+ border-bottom-color: #999
4165
+ }
4166
+
4167
+ .navbar-inverse .navbar-nav > .open > a .caret, .navbar-inverse .navbar-nav > .open > a:hover .caret, .navbar-inverse .navbar-nav > .open > a:focus .caret {
4168
+ border-top-color: #fff;
4169
+ border-bottom-color: #fff
4170
+ }
4171
+
4172
+ @media (max-width: 767px) {
4173
+ .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {
4174
+ border-color: #080808
4175
+ }
4176
+
4177
+ .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {
4178
+ color: #999
4179
+ }
4180
+
4181
+ .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover, .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {
4182
+ color: #fff;
4183
+ background-color: transparent
4184
+ }
4185
+
4186
+ .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a, .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover, .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {
4187
+ color: #fff;
4188
+ background-color: #080808
4189
+ }
4190
+
4191
+ .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a, .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover, .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {
4192
+ color: #444;
4193
+ background-color: transparent
4194
+ }
4195
+ }
4196
+
4197
+ .navbar-inverse .navbar-link {
4198
+ color: #999
4199
+ }
4200
+
4201
+ .navbar-inverse .navbar-link:hover {
4202
+ color: #fff
4203
+ }
4204
+
4205
+ .breadcrumb {
4206
+ padding: 8px 15px;
4207
+ margin-bottom: 20px;
4208
+ list-style: none;
4209
+ background-color: #f5f5f5;
4210
+ border-radius: 4px
4211
+ }
4212
+
4213
+ .breadcrumb > li {
4214
+ display: inline-block
4215
+ }
4216
+
4217
+ .breadcrumb > li + li:before {
4218
+ padding: 0 5px;
4219
+ color: #ccc;
4220
+ content: "/\00a0"
4221
+ }
4222
+
4223
+ .breadcrumb > .active {
4224
+ color: #999
4225
+ }
4226
+
4227
+ .pagination {
4228
+ display: inline-block;
4229
+ padding-left: 0;
4230
+ margin: 20px 0;
4231
+ border-radius: 4px
4232
+ }
4233
+
4234
+ .pagination > li {
4235
+ display: inline
4236
+ }
4237
+
4238
+ .pagination > li > a, .pagination > li > span {
4239
+ position: relative;
4240
+ float: left;
4241
+ padding: 6px 12px;
4242
+ margin-left: -1px;
4243
+ line-height: 1.428571429;
4244
+ text-decoration: none;
4245
+ background-color: #fff;
4246
+ border: 1px solid #ddd
4247
+ }
4248
+
4249
+ .pagination > li:first-child > a, .pagination > li:first-child > span {
4250
+ margin-left: 0;
4251
+ border-bottom-left-radius: 4px;
4252
+ border-top-left-radius: 4px
4253
+ }
4254
+
4255
+ .pagination > li:last-child > a, .pagination > li:last-child > span {
4256
+ border-top-right-radius: 4px;
4257
+ border-bottom-right-radius: 4px
4258
+ }
4259
+
4260
+ .pagination > li > a:hover, .pagination > li > span:hover, .pagination > li > a:focus, .pagination > li > span:focus {
4261
+ background-color: #eee
4262
+ }
4263
+
4264
+ .pagination > .active > a, .pagination > .active > span, .pagination > .active > a:hover, .pagination > .active > span:hover, .pagination > .active > a:focus, .pagination > .active > span:focus {
4265
+ z-index: 2;
4266
+ color: #fff;
4267
+ cursor: default;
4268
+ background-color: #428bca;
4269
+ border-color: #428bca
4270
+ }
4271
+
4272
+ .pagination > .disabled > span, .pagination > .disabled > a, .pagination > .disabled > a:hover, .pagination > .disabled > a:focus {
4273
+ color: #999;
4274
+ cursor: not-allowed;
4275
+ background-color: #fff;
4276
+ border-color: #ddd
4277
+ }
4278
+
4279
+ .pagination-lg > li > a, .pagination-lg > li > span {
4280
+ padding: 10px 16px;
4281
+ font-size: 18px
4282
+ }
4283
+
4284
+ .pagination-lg > li:first-child > a, .pagination-lg > li:first-child > span {
4285
+ border-bottom-left-radius: 6px;
4286
+ border-top-left-radius: 6px
4287
+ }
4288
+
4289
+ .pagination-lg > li:last-child > a, .pagination-lg > li:last-child > span {
4290
+ border-top-right-radius: 6px;
4291
+ border-bottom-right-radius: 6px
4292
+ }
4293
+
4294
+ .pagination-sm > li > a, .pagination-sm > li > span {
4295
+ padding: 5px 10px;
4296
+ font-size: 12px
4297
+ }
4298
+
4299
+ .pagination-sm > li:first-child > a, .pagination-sm > li:first-child > span {
4300
+ border-bottom-left-radius: 3px;
4301
+ border-top-left-radius: 3px
4302
+ }
4303
+
4304
+ .pagination-sm > li:last-child > a, .pagination-sm > li:last-child > span {
4305
+ border-top-right-radius: 3px;
4306
+ border-bottom-right-radius: 3px
4307
+ }
4308
+
4309
+ .pager {
4310
+ padding-left: 0;
4311
+ margin: 20px 0;
4312
+ text-align: center;
4313
+ list-style: none
4314
+ }
4315
+
4316
+ .pager:before, .pager:after {
4317
+ display: table;
4318
+ content: " "
4319
+ }
4320
+
4321
+ .pager:after {
4322
+ clear: both
4323
+ }
4324
+
4325
+ .pager:before, .pager:after {
4326
+ display: table;
4327
+ content: " "
4328
+ }
4329
+
4330
+ .pager:after {
4331
+ clear: both
4332
+ }
4333
+
4334
+ .pager li {
4335
+ display: inline
4336
+ }
4337
+
4338
+ .pager li > a, .pager li > span {
4339
+ display: inline-block;
4340
+ padding: 5px 14px;
4341
+ background-color: #fff;
4342
+ border: 1px solid #ddd;
4343
+ border-radius: 15px
4344
+ }
4345
+
4346
+ .pager li > a:hover, .pager li > a:focus {
4347
+ text-decoration: none;
4348
+ background-color: #eee
4349
+ }
4350
+
4351
+ .pager .next > a, .pager .next > span {
4352
+ float: right
4353
+ }
4354
+
4355
+ .pager .previous > a, .pager .previous > span {
4356
+ float: left
4357
+ }
4358
+
4359
+ .pager .disabled > a, .pager .disabled > a:hover, .pager .disabled > a:focus, .pager .disabled > span {
4360
+ color: #999;
4361
+ cursor: not-allowed;
4362
+ background-color: #fff
4363
+ }
4364
+
4365
+ .label {
4366
+ display: inline;
4367
+ padding: .2em .6em .3em;
4368
+ font-size: 75%;
4369
+ font-weight: bold;
4370
+ line-height: 1;
4371
+ color: #fff;
4372
+ text-align: center;
4373
+ white-space: nowrap;
4374
+ vertical-align: baseline;
4375
+ border-radius: .25em
4376
+ }
4377
+
4378
+ .label[href]:hover, .label[href]:focus {
4379
+ color: #fff;
4380
+ text-decoration: none;
4381
+ cursor: pointer
4382
+ }
4383
+
4384
+ .label:empty {
4385
+ display: none
4386
+ }
4387
+
4388
+ .label-default {
4389
+ background-color: #999
4390
+ }
4391
+
4392
+ .label-default[href]:hover, .label-default[href]:focus {
4393
+ background-color: #808080
4394
+ }
4395
+
4396
+ .label-primary {
4397
+ background-color: #428bca
4398
+ }
4399
+
4400
+ .label-primary[href]:hover, .label-primary[href]:focus {
4401
+ background-color: #3071a9
4402
+ }
4403
+
4404
+ .label-success {
4405
+ background-color: #5cb85c
4406
+ }
4407
+
4408
+ .label-success[href]:hover, .label-success[href]:focus {
4409
+ background-color: #449d44
4410
+ }
4411
+
4412
+ .label-info {
4413
+ background-color: #5bc0de
4414
+ }
4415
+
4416
+ .label-info[href]:hover, .label-info[href]:focus {
4417
+ background-color: #31b0d5
4418
+ }
4419
+
4420
+ .label-warning {
4421
+ background-color: #f0ad4e
4422
+ }
4423
+
4424
+ .label-warning[href]:hover, .label-warning[href]:focus {
4425
+ background-color: #ec971f
4426
+ }
4427
+
4428
+ .label-danger {
4429
+ background-color: #d9534f
4430
+ }
4431
+
4432
+ .label-danger[href]:hover, .label-danger[href]:focus {
4433
+ background-color: #c9302c
4434
+ }
4435
+
4436
+ .badge {
4437
+ display: inline-block;
4438
+ min-width: 10px;
4439
+ padding: 3px 7px;
4440
+ font-size: 12px;
4441
+ font-weight: bold;
4442
+ line-height: 1;
4443
+ color: #fff;
4444
+ text-align: center;
4445
+ white-space: nowrap;
4446
+ vertical-align: baseline;
4447
+ background-color: #999;
4448
+ border-radius: 10px
4449
+ }
4450
+
4451
+ .badge:empty {
4452
+ display: none
4453
+ }
4454
+
4455
+ a.badge:hover, a.badge:focus {
4456
+ color: #fff;
4457
+ text-decoration: none;
4458
+ cursor: pointer
4459
+ }
4460
+
4461
+ .btn .badge {
4462
+ position: relative;
4463
+ top: -1px
4464
+ }
4465
+
4466
+ a.list-group-item.active > .badge, .nav-pills > .active > a > .badge {
4467
+ color: #428bca;
4468
+ background-color: #fff
4469
+ }
4470
+
4471
+ .nav-pills > li > a > .badge {
4472
+ margin-left: 3px
4473
+ }
4474
+
4475
+ .jumbotron {
4476
+ padding: 30px;
4477
+ margin-bottom: 30px;
4478
+ font-size: 21px;
4479
+ font-weight: 200;
4480
+ line-height: 2.1428571435;
4481
+ color: inherit;
4482
+ background-color: #eee
4483
+ }
4484
+
4485
+ .jumbotron h1 {
4486
+ line-height: 1;
4487
+ color: inherit
4488
+ }
4489
+
4490
+ .jumbotron p {
4491
+ line-height: 1.4
4492
+ }
4493
+
4494
+ .container .jumbotron {
4495
+ border-radius: 6px
4496
+ }
4497
+
4498
+ @media screen and (min-width: 768px) {
4499
+ .jumbotron {
4500
+ padding-top: 48px;
4501
+ padding-bottom: 48px
4502
+ }
4503
+
4504
+ .container .jumbotron {
4505
+ padding-right: 60px;
4506
+ padding-left: 60px
4507
+ }
4508
+
4509
+ .jumbotron h1 {
4510
+ font-size: 63px
4511
+ }
4512
+ }
4513
+
4514
+ .thumbnail {
4515
+ display: inline-block;
4516
+ display: block;
4517
+ height: auto;
4518
+ max-width: 100%;
4519
+ padding: 4px;
4520
+ line-height: 1.428571429;
4521
+ background-color: #fff;
4522
+ border: 1px solid #ddd;
4523
+ border-radius: 4px;
4524
+ -webkit-transition: all .2s ease-in-out;
4525
+ transition: all .2s ease-in-out
4526
+ }
4527
+
4528
+ .thumbnail > img {
4529
+ display: block;
4530
+ height: auto;
4531
+ max-width: 100%
4532
+ }
4533
+
4534
+ a.thumbnail:hover, a.thumbnail:focus {
4535
+ border-color: #428bca
4536
+ }
4537
+
4538
+ .thumbnail > img {
4539
+ margin-right: auto;
4540
+ margin-left: auto
4541
+ }
4542
+
4543
+ .thumbnail .caption {
4544
+ padding: 9px;
4545
+ color: #333
4546
+ }
4547
+
4548
+ .alert {
4549
+ padding: 15px;
4550
+ margin-bottom: 20px;
4551
+ border: 1px solid transparent;
4552
+ border-radius: 4px
4553
+ }
4554
+
4555
+ .alert h4 {
4556
+ margin-top: 0;
4557
+ color: inherit
4558
+ }
4559
+
4560
+ .alert .alert-link {
4561
+ font-weight: bold
4562
+ }
4563
+
4564
+ .alert > p, .alert > ul {
4565
+ margin-bottom: 0
4566
+ }
4567
+
4568
+ .alert > p + p {
4569
+ margin-top: 5px
4570
+ }
4571
+
4572
+ .alert-dismissable {
4573
+ padding-right: 35px
4574
+ }
4575
+
4576
+ .alert-dismissable .close {
4577
+ position: relative;
4578
+ top: -2px;
4579
+ right: -21px;
4580
+ color: inherit
4581
+ }
4582
+
4583
+ .alert-success {
4584
+ color: #468847;
4585
+ background-color: #dff0d8;
4586
+ border-color: #d6e9c6
4587
+ }
4588
+
4589
+ .alert-success hr {
4590
+ border-top-color: #c9e2b3
4591
+ }
4592
+
4593
+ .alert-success .alert-link {
4594
+ color: #356635
4595
+ }
4596
+
4597
+ .alert-info {
4598
+ color: #3a87ad;
4599
+ background-color: #d9edf7;
4600
+ border-color: #bce8f1
4601
+ }
4602
+
4603
+ .alert-info hr {
4604
+ border-top-color: #a6e1ec
4605
+ }
4606
+
4607
+ .alert-info .alert-link {
4608
+ color: #2d6987
4609
+ }
4610
+
4611
+ .alert-warning {
4612
+ color: #c09853;
4613
+ background-color: #fcf8e3;
4614
+ border-color: #fbeed5
4615
+ }
4616
+
4617
+ .alert-warning hr {
4618
+ border-top-color: #f8e5be
4619
+ }
4620
+
4621
+ .alert-warning .alert-link {
4622
+ color: #a47e3c
4623
+ }
4624
+
4625
+ .alert-danger {
4626
+ color: #b94a48;
4627
+ background-color: #f2dede;
4628
+ border-color: #eed3d7
4629
+ }
4630
+
4631
+ .alert-danger hr {
4632
+ border-top-color: #e6c1c7
4633
+ }
4634
+
4635
+ .alert-danger .alert-link {
4636
+ color: #953b39
4637
+ }
4638
+
4639
+ @-webkit-keyframes progress-bar-stripes {
4640
+ from {
4641
+ background-position: 40px 0
4642
+ }
4643
+ to {
4644
+ background-position: 0 0
4645
+ }
4646
+ }
4647
+
4648
+ @-moz-keyframes progress-bar-stripes {
4649
+ from {
4650
+ background-position: 40px 0
4651
+ }
4652
+ to {
4653
+ background-position: 0 0
4654
+ }
4655
+ }
4656
+
4657
+ @-o-keyframes progress-bar-stripes {
4658
+ from {
4659
+ background-position: 0 0
4660
+ }
4661
+ to {
4662
+ background-position: 40px 0
4663
+ }
4664
+ }
4665
+
4666
+ @keyframes progress-bar-stripes {
4667
+ from {
4668
+ background-position: 40px 0
4669
+ }
4670
+ to {
4671
+ background-position: 0 0
4672
+ }
4673
+ }
4674
+
4675
+ .progress {
4676
+ height: 20px;
4677
+ margin-bottom: 20px;
4678
+ overflow: hidden;
4679
+ background-color: #f5f5f5;
4680
+ border-radius: 4px;
4681
+ -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
4682
+ box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1)
4683
+ }
4684
+
4685
+ .progress-bar {
4686
+ float: left;
4687
+ width: 0;
4688
+ height: 100%;
4689
+ font-size: 12px;
4690
+ color: #fff;
4691
+ text-align: center;
4692
+ background-color: #428bca;
4693
+ -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
4694
+ box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
4695
+ -webkit-transition: width .6s ease;
4696
+ transition: width .6s ease
4697
+ }
4698
+
4699
+ .progress-striped .progress-bar {
4700
+ background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
4701
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
4702
+ background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
4703
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
4704
+ background-size: 40px 40px
4705
+ }
4706
+
4707
+ .progress.active .progress-bar {
4708
+ -webkit-animation: progress-bar-stripes 2s linear infinite;
4709
+ -moz-animation: progress-bar-stripes 2s linear infinite;
4710
+ -ms-animation: progress-bar-stripes 2s linear infinite;
4711
+ -o-animation: progress-bar-stripes 2s linear infinite;
4712
+ animation: progress-bar-stripes 2s linear infinite
4713
+ }
4714
+
4715
+ .progress-bar-success {
4716
+ background-color: #5cb85c
4717
+ }
4718
+
4719
+ .progress-striped .progress-bar-success {
4720
+ background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
4721
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
4722
+ background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
4723
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent)
4724
+ }
4725
+
4726
+ .progress-bar-info {
4727
+ background-color: #5bc0de
4728
+ }
4729
+
4730
+ .progress-striped .progress-bar-info {
4731
+ background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
4732
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
4733
+ background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
4734
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent)
4735
+ }
4736
+
4737
+ .progress-bar-warning {
4738
+ background-color: #f0ad4e
4739
+ }
4740
+
4741
+ .progress-striped .progress-bar-warning {
4742
+ background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
4743
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
4744
+ background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
4745
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent)
4746
+ }
4747
+
4748
+ .progress-bar-danger {
4749
+ background-color: #d9534f
4750
+ }
4751
+
4752
+ .progress-striped .progress-bar-danger {
4753
+ background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
4754
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
4755
+ background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
4756
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent)
4757
+ }
4758
+
4759
+ .media, .media-body {
4760
+ overflow: hidden;
4761
+ zoom: 1
4762
+ }
4763
+
4764
+ .media, .media .media {
4765
+ margin-top: 15px
4766
+ }
4767
+
4768
+ .media:first-child {
4769
+ margin-top: 0
4770
+ }
4771
+
4772
+ .media-object {
4773
+ display: block
4774
+ }
4775
+
4776
+ .media-heading {
4777
+ margin: 0 0 5px
4778
+ }
4779
+
4780
+ .media > .pull-left {
4781
+ margin-right: 10px
4782
+ }
4783
+
4784
+ .media > .pull-right {
4785
+ margin-left: 10px
4786
+ }
4787
+
4788
+ .media-list {
4789
+ padding-left: 0;
4790
+ list-style: none
4791
+ }
4792
+
4793
+ .list-group {
4794
+ padding-left: 0;
4795
+ margin-bottom: 20px
4796
+ }
4797
+
4798
+ .list-group-item {
4799
+ position: relative;
4800
+ display: block;
4801
+ padding: 10px 15px;
4802
+ margin-bottom: -1px;
4803
+ background-color: #fff;
4804
+ border: 1px solid #ddd
4805
+ }
4806
+
4807
+ .list-group-item:first-child {
4808
+ border-top-right-radius: 4px;
4809
+ border-top-left-radius: 4px
4810
+ }
4811
+
4812
+ .list-group-item:last-child {
4813
+ margin-bottom: 0;
4814
+ border-bottom-right-radius: 4px;
4815
+ border-bottom-left-radius: 4px
4816
+ }
4817
+
4818
+ .list-group-item > .badge {
4819
+ float: right
4820
+ }
4821
+
4822
+ .list-group-item > .badge + .badge {
4823
+ margin-right: 5px
4824
+ }
4825
+
4826
+ a.list-group-item {
4827
+ color: #555
4828
+ }
4829
+
4830
+ a.list-group-item .list-group-item-heading {
4831
+ color: #333
4832
+ }
4833
+
4834
+ a.list-group-item:hover, a.list-group-item:focus {
4835
+ text-decoration: none;
4836
+ background-color: #f5f5f5
4837
+ }
4838
+
4839
+ .list-group-item.active, .list-group-item.active:hover, .list-group-item.active:focus {
4840
+ z-index: 2;
4841
+ color: #fff;
4842
+ background-color: #428bca;
4843
+ border-color: #428bca
4844
+ }
4845
+
4846
+ .list-group-item.active .list-group-item-heading, .list-group-item.active:hover .list-group-item-heading, .list-group-item.active:focus .list-group-item-heading {
4847
+ color: inherit
4848
+ }
4849
+
4850
+ .list-group-item.active .list-group-item-text, .list-group-item.active:hover .list-group-item-text, .list-group-item.active:focus .list-group-item-text {
4851
+ color: #e1edf7
4852
+ }
4853
+
4854
+ .list-group-item-heading {
4855
+ margin-top: 0;
4856
+ margin-bottom: 5px
4857
+ }
4858
+
4859
+ .list-group-item-text {
4860
+ margin-bottom: 0;
4861
+ line-height: 1.3
4862
+ }
4863
+
4864
+ .panel {
4865
+ margin-bottom: 20px;
4866
+ background-color: #fff;
4867
+ border: 1px solid transparent;
4868
+ border-radius: 4px;
4869
+ -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
4870
+ box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05)
4871
+ }
4872
+
4873
+ .panel-body {
4874
+ padding: 15px
4875
+ }
4876
+
4877
+ .panel-body:before, .panel-body:after {
4878
+ display: table;
4879
+ content: " "
4880
+ }
4881
+
4882
+ .panel-body:after {
4883
+ clear: both
4884
+ }
4885
+
4886
+ .panel-body:before, .panel-body:after {
4887
+ display: table;
4888
+ content: " "
4889
+ }
4890
+
4891
+ .panel-body:after {
4892
+ clear: both
4893
+ }
4894
+
4895
+ .panel > .list-group {
4896
+ margin-bottom: 0
4897
+ }
4898
+
4899
+ .panel > .list-group .list-group-item {
4900
+ border-width: 1px 0
4901
+ }
4902
+
4903
+ .panel > .list-group .list-group-item:first-child {
4904
+ border-top-right-radius: 0;
4905
+ border-top-left-radius: 0
4906
+ }
4907
+
4908
+ .panel > .list-group .list-group-item:last-child {
4909
+ border-bottom: 0
4910
+ }
4911
+
4912
+ .panel-heading + .list-group .list-group-item:first-child {
4913
+ border-top-width: 0
4914
+ }
4915
+
4916
+ .panel > .table {
4917
+ margin-bottom: 0
4918
+ }
4919
+
4920
+ .panel > .panel-body + .table {
4921
+ border-top: 1px solid #ddd
4922
+ }
4923
+
4924
+ .panel-heading {
4925
+ padding: 10px 15px;
4926
+ border-bottom: 1px solid transparent;
4927
+ border-top-right-radius: 3px;
4928
+ border-top-left-radius: 3px
4929
+ }
4930
+
4931
+ .panel-title {
4932
+ margin-top: 0;
4933
+ margin-bottom: 0;
4934
+ font-size: 16px
4935
+ }
4936
+
4937
+ .panel-title > a {
4938
+ color: inherit
4939
+ }
4940
+
4941
+ .panel-footer {
4942
+ padding: 10px 15px;
4943
+ background-color: #f5f5f5;
4944
+ border-top: 1px solid #ddd;
4945
+ border-bottom-right-radius: 3px;
4946
+ border-bottom-left-radius: 3px
4947
+ }
4948
+
4949
+ .panel-group .panel {
4950
+ margin-bottom: 0;
4951
+ overflow: hidden;
4952
+ border-radius: 4px
4953
+ }
4954
+
4955
+ .panel-group .panel + .panel {
4956
+ margin-top: 5px
4957
+ }
4958
+
4959
+ .panel-group .panel-heading {
4960
+ border-bottom: 0
4961
+ }
4962
+
4963
+ .panel-group .panel-heading + .panel-collapse .panel-body {
4964
+ border-top: 1px solid #ddd
4965
+ }
4966
+
4967
+ .panel-group .panel-footer {
4968
+ border-top: 0
4969
+ }
4970
+
4971
+ .panel-group .panel-footer + .panel-collapse .panel-body {
4972
+ border-bottom: 1px solid #ddd
4973
+ }
4974
+
4975
+ .panel-default {
4976
+ border-color: #ddd
4977
+ }
4978
+
4979
+ .panel-default > .panel-heading {
4980
+ color: #333;
4981
+ background-color: #f5f5f5;
4982
+ border-color: #ddd
4983
+ }
4984
+
4985
+ .panel-default > .panel-heading + .panel-collapse .panel-body {
4986
+ border-top-color: #ddd
4987
+ }
4988
+
4989
+ .panel-default > .panel-footer + .panel-collapse .panel-body {
4990
+ border-bottom-color: #ddd
4991
+ }
4992
+
4993
+ .panel-primary {
4994
+ border-color: #428bca
4995
+ }
4996
+
4997
+ .panel-primary > .panel-heading {
4998
+ color: #fff;
4999
+ background-color: #428bca;
5000
+ border-color: #428bca
5001
+ }
5002
+
5003
+ .panel-primary > .panel-heading + .panel-collapse .panel-body {
5004
+ border-top-color: #428bca
5005
+ }
5006
+
5007
+ .panel-primary > .panel-footer + .panel-collapse .panel-body {
5008
+ border-bottom-color: #428bca
5009
+ }
5010
+
5011
+ .panel-success {
5012
+ border-color: #d6e9c6
5013
+ }
5014
+
5015
+ .panel-success > .panel-heading {
5016
+ color: #468847;
5017
+ background-color: #dff0d8;
5018
+ border-color: #d6e9c6
5019
+ }
5020
+
5021
+ .panel-success > .panel-heading + .panel-collapse .panel-body {
5022
+ border-top-color: #d6e9c6
5023
+ }
5024
+
5025
+ .panel-success > .panel-footer + .panel-collapse .panel-body {
5026
+ border-bottom-color: #d6e9c6
5027
+ }
5028
+
5029
+ .panel-warning {
5030
+ border-color: #fbeed5
5031
+ }
5032
+
5033
+ .panel-warning > .panel-heading {
5034
+ color: #c09853;
5035
+ background-color: #fcf8e3;
5036
+ border-color: #fbeed5
5037
+ }
5038
+
5039
+ .panel-warning > .panel-heading + .panel-collapse .panel-body {
5040
+ border-top-color: #fbeed5
5041
+ }
5042
+
5043
+ .panel-warning > .panel-footer + .panel-collapse .panel-body {
5044
+ border-bottom-color: #fbeed5
5045
+ }
5046
+
5047
+ .panel-danger {
5048
+ border-color: #eed3d7
5049
+ }
5050
+
5051
+ .panel-danger > .panel-heading {
5052
+ color: #b94a48;
5053
+ background-color: #f2dede;
5054
+ border-color: #eed3d7
5055
+ }
5056
+
5057
+ .panel-danger > .panel-heading + .panel-collapse .panel-body {
5058
+ border-top-color: #eed3d7
5059
+ }
5060
+
5061
+ .panel-danger > .panel-footer + .panel-collapse .panel-body {
5062
+ border-bottom-color: #eed3d7
5063
+ }
5064
+
5065
+ .panel-info {
5066
+ border-color: #bce8f1
5067
+ }
5068
+
5069
+ .panel-info > .panel-heading {
5070
+ color: #3a87ad;
5071
+ background-color: #d9edf7;
5072
+ border-color: #bce8f1
5073
+ }
5074
+
5075
+ .panel-info > .panel-heading + .panel-collapse .panel-body {
5076
+ border-top-color: #bce8f1
5077
+ }
5078
+
5079
+ .panel-info > .panel-footer + .panel-collapse .panel-body {
5080
+ border-bottom-color: #bce8f1
5081
+ }
5082
+
5083
+ .well {
5084
+ min-height: 20px;
5085
+ padding: 19px;
5086
+ margin-bottom: 20px;
5087
+ background-color: #f5f5f5;
5088
+ border: 1px solid #e3e3e3;
5089
+ border-radius: 4px;
5090
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
5091
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05)
5092
+ }
5093
+
5094
+ .well blockquote {
5095
+ border-color: #ddd;
5096
+ border-color: rgba(0, 0, 0, 0.15)
5097
+ }
5098
+
5099
+ .well-lg {
5100
+ padding: 24px;
5101
+ border-radius: 6px
5102
+ }
5103
+
5104
+ .well-sm {
5105
+ padding: 9px;
5106
+ border-radius: 3px
5107
+ }
5108
+
5109
+ .close {
5110
+ float: right;
5111
+ font-size: 21px;
5112
+ font-weight: bold;
5113
+ line-height: 1;
5114
+ color: #000;
5115
+ text-shadow: 0 1px 0 #fff;
5116
+ opacity: .2;
5117
+ filter: alpha(opacity=20)
5118
+ }
5119
+
5120
+ .close:hover, .close:focus {
5121
+ color: #000;
5122
+ text-decoration: none;
5123
+ cursor: pointer;
5124
+ opacity: .5;
5125
+ filter: alpha(opacity=50)
5126
+ }
5127
+
5128
+ button.close {
5129
+ padding: 0;
5130
+ cursor: pointer;
5131
+ background: transparent;
5132
+ border: 0;
5133
+ -webkit-appearance: none
5134
+ }
5135
+
5136
+ .modal-open {
5137
+ overflow: hidden
5138
+ }
5139
+
5140
+ body.modal-open, .modal-open .navbar-fixed-top, .modal-open .navbar-fixed-bottom {
5141
+ margin-right: 15px
5142
+ }
5143
+
5144
+ .modal {
5145
+ position: fixed;
5146
+ top: 0;
5147
+ right: 0;
5148
+ bottom: 0;
5149
+ left: 0;
5150
+ z-index: 1040;
5151
+ display: none;
5152
+ overflow: auto;
5153
+ overflow-y: scroll
5154
+ }
5155
+
5156
+ .modal.fade .modal-dialog {
5157
+ -webkit-transform: translate(0, -25%);
5158
+ -ms-transform: translate(0, -25%);
5159
+ transform: translate(0, -25%);
5160
+ -webkit-transition: -webkit-transform .3s ease-out;
5161
+ -moz-transition: -moz-transform .3s ease-out;
5162
+ -o-transition: -o-transform .3s ease-out;
5163
+ transition: transform .3s ease-out
5164
+ }
5165
+
5166
+ .modal.in .modal-dialog {
5167
+ -webkit-transform: translate(0, 0);
5168
+ -ms-transform: translate(0, 0);
5169
+ transform: translate(0, 0)
5170
+ }
5171
+
5172
+ .modal-dialog {
5173
+ z-index: 1050;
5174
+ width: auto;
5175
+ padding: 10px;
5176
+ margin-right: auto;
5177
+ margin-left: auto
5178
+ }
5179
+
5180
+ .modal-content {
5181
+ position: relative;
5182
+ background-color: #fff;
5183
+ border: 1px solid #999;
5184
+ border: 1px solid rgba(0, 0, 0, 0.2);
5185
+ border-radius: 6px;
5186
+ outline: 0;
5187
+ -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
5188
+ box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
5189
+ background-clip: padding-box
5190
+ }
5191
+
5192
+ .modal-backdrop {
5193
+ position: fixed;
5194
+ top: 0;
5195
+ right: 0;
5196
+ bottom: 0;
5197
+ left: 0;
5198
+ z-index: 1030;
5199
+ background-color: #000
5200
+ }
5201
+
5202
+ .modal-backdrop.fade {
5203
+ opacity: 0;
5204
+ filter: alpha(opacity=0)
5205
+ }
5206
+
5207
+ .modal-backdrop.in {
5208
+ opacity: .5;
5209
+ filter: alpha(opacity=50)
5210
+ }
5211
+
5212
+ .modal-header {
5213
+ min-height: 16.428571429px;
5214
+ padding: 15px;
5215
+ border-bottom: 1px solid #e5e5e5
5216
+ }
5217
+
5218
+ .modal-header .close {
5219
+ margin-top: -2px
5220
+ }
5221
+
5222
+ .modal-title {
5223
+ margin: 0;
5224
+ line-height: 1.428571429
5225
+ }
5226
+
5227
+ .modal-body {
5228
+ position: relative;
5229
+ padding: 20px
5230
+ }
5231
+
5232
+ .modal-footer {
5233
+ padding: 19px 20px 20px;
5234
+ margin-top: 15px;
5235
+ text-align: right;
5236
+ border-top: 1px solid #e5e5e5
5237
+ }
5238
+
5239
+ .modal-footer:before, .modal-footer:after {
5240
+ display: table;
5241
+ content: " "
5242
+ }
5243
+
5244
+ .modal-footer:after {
5245
+ clear: both
5246
+ }
5247
+
5248
+ .modal-footer:before, .modal-footer:after {
5249
+ display: table;
5250
+ content: " "
5251
+ }
5252
+
5253
+ .modal-footer:after {
5254
+ clear: both
5255
+ }
5256
+
5257
+ .modal-footer .btn + .btn {
5258
+ margin-bottom: 0;
5259
+ margin-left: 5px
5260
+ }
5261
+
5262
+ .modal-footer .btn-group .btn + .btn {
5263
+ margin-left: -1px
5264
+ }
5265
+
5266
+ .modal-footer .btn-block + .btn-block {
5267
+ margin-left: 0
5268
+ }
5269
+
5270
+ @media screen and (min-width: 768px) {
5271
+ .modal-dialog {
5272
+ right: auto;
5273
+ left: 50%;
5274
+ width: 600px;
5275
+ padding-top: 30px;
5276
+ padding-bottom: 30px
5277
+ }
5278
+
5279
+ .modal-content {
5280
+ -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
5281
+ box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5)
5282
+ }
5283
+ }
5284
+
5285
+ .tooltip {
5286
+ position: absolute;
5287
+ z-index: 1030;
5288
+ display: block;
5289
+ font-size: 12px;
5290
+ line-height: 1.4;
5291
+ opacity: 0;
5292
+ filter: alpha(opacity=0);
5293
+ visibility: visible
5294
+ }
5295
+
5296
+ .tooltip.in {
5297
+ opacity: .9;
5298
+ filter: alpha(opacity=90)
5299
+ }
5300
+
5301
+ .tooltip.top {
5302
+ padding: 5px 0;
5303
+ margin-top: -3px
5304
+ }
5305
+
5306
+ .tooltip.right {
5307
+ padding: 0 5px;
5308
+ margin-left: 3px
5309
+ }
5310
+
5311
+ .tooltip.bottom {
5312
+ padding: 5px 0;
5313
+ margin-top: 3px
5314
+ }
5315
+
5316
+ .tooltip.left {
5317
+ padding: 0 5px;
5318
+ margin-left: -3px
5319
+ }
5320
+
5321
+ .tooltip-inner {
5322
+ max-width: 200px;
5323
+ padding: 3px 8px;
5324
+ color: #fff;
5325
+ text-align: center;
5326
+ text-decoration: none;
5327
+ background-color: #000;
5328
+ border-radius: 4px
5329
+ }
5330
+
5331
+ .tooltip-arrow {
5332
+ position: absolute;
5333
+ width: 0;
5334
+ height: 0;
5335
+ border-color: transparent;
5336
+ border-style: solid
5337
+ }
5338
+
5339
+ .tooltip.top .tooltip-arrow {
5340
+ bottom: 0;
5341
+ left: 50%;
5342
+ margin-left: -5px;
5343
+ border-top-color: #000;
5344
+ border-width: 5px 5px 0
5345
+ }
5346
+
5347
+ .tooltip.top-left .tooltip-arrow {
5348
+ bottom: 0;
5349
+ left: 5px;
5350
+ border-top-color: #000;
5351
+ border-width: 5px 5px 0
5352
+ }
5353
+
5354
+ .tooltip.top-right .tooltip-arrow {
5355
+ right: 5px;
5356
+ bottom: 0;
5357
+ border-top-color: #000;
5358
+ border-width: 5px 5px 0
5359
+ }
5360
+
5361
+ .tooltip.right .tooltip-arrow {
5362
+ top: 50%;
5363
+ left: 0;
5364
+ margin-top: -5px;
5365
+ border-right-color: #000;
5366
+ border-width: 5px 5px 5px 0
5367
+ }
5368
+
5369
+ .tooltip.left .tooltip-arrow {
5370
+ top: 50%;
5371
+ right: 0;
5372
+ margin-top: -5px;
5373
+ border-left-color: #000;
5374
+ border-width: 5px 0 5px 5px
5375
+ }
5376
+
5377
+ .tooltip.bottom .tooltip-arrow {
5378
+ top: 0;
5379
+ left: 50%;
5380
+ margin-left: -5px;
5381
+ border-bottom-color: #000;
5382
+ border-width: 0 5px 5px
5383
+ }
5384
+
5385
+ .tooltip.bottom-left .tooltip-arrow {
5386
+ top: 0;
5387
+ left: 5px;
5388
+ border-bottom-color: #000;
5389
+ border-width: 0 5px 5px
5390
+ }
5391
+
5392
+ .tooltip.bottom-right .tooltip-arrow {
5393
+ top: 0;
5394
+ right: 5px;
5395
+ border-bottom-color: #000;
5396
+ border-width: 0 5px 5px
5397
+ }
5398
+
5399
+ .popover {
5400
+ position: absolute;
5401
+ top: 0;
5402
+ left: 0;
5403
+ z-index: 1010;
5404
+ display: none;
5405
+ max-width: 276px;
5406
+ padding: 1px;
5407
+ text-align: left;
5408
+ white-space: normal;
5409
+ background-color: #fff;
5410
+ border: 1px solid #ccc;
5411
+ border: 1px solid rgba(0, 0, 0, 0.2);
5412
+ border-radius: 6px;
5413
+ -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
5414
+ box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
5415
+ background-clip: padding-box
5416
+ }
5417
+
5418
+ .popover.top {
5419
+ margin-top: -10px
5420
+ }
5421
+
5422
+ .popover.right {
5423
+ margin-left: 10px
5424
+ }
5425
+
5426
+ .popover.bottom {
5427
+ margin-top: 10px
5428
+ }
5429
+
5430
+ .popover.left {
5431
+ margin-left: -10px
5432
+ }
5433
+
5434
+ .popover-title {
5435
+ padding: 8px 14px;
5436
+ margin: 0;
5437
+ font-size: 14px;
5438
+ font-weight: normal;
5439
+ line-height: 18px;
5440
+ background-color: #f7f7f7;
5441
+ border-bottom: 1px solid #ebebeb;
5442
+ border-radius: 5px 5px 0 0
5443
+ }
5444
+
5445
+ .popover-content {
5446
+ padding: 9px 14px
5447
+ }
5448
+
5449
+ .popover .arrow, .popover .arrow:after {
5450
+ position: absolute;
5451
+ display: block;
5452
+ width: 0;
5453
+ height: 0;
5454
+ border-color: transparent;
5455
+ border-style: solid
5456
+ }
5457
+
5458
+ .popover .arrow {
5459
+ border-width: 11px
5460
+ }
5461
+
5462
+ .popover .arrow:after {
5463
+ border-width: 10px;
5464
+ content: ""
5465
+ }
5466
+
5467
+ .popover.top .arrow {
5468
+ bottom: -11px;
5469
+ left: 50%;
5470
+ margin-left: -11px;
5471
+ border-top-color: #999;
5472
+ border-top-color: rgba(0, 0, 0, 0.25);
5473
+ border-bottom-width: 0
5474
+ }
5475
+
5476
+ .popover.top .arrow:after {
5477
+ bottom: 1px;
5478
+ margin-left: -10px;
5479
+ border-top-color: #fff;
5480
+ border-bottom-width: 0;
5481
+ content: " "
5482
+ }
5483
+
5484
+ .popover.right .arrow {
5485
+ top: 50%;
5486
+ left: -11px;
5487
+ margin-top: -11px;
5488
+ border-right-color: #999;
5489
+ border-right-color: rgba(0, 0, 0, 0.25);
5490
+ border-left-width: 0
5491
+ }
5492
+
5493
+ .popover.right .arrow:after {
5494
+ bottom: -10px;
5495
+ left: 1px;
5496
+ border-right-color: #fff;
5497
+ border-left-width: 0;
5498
+ content: " "
5499
+ }
5500
+
5501
+ .popover.bottom .arrow {
5502
+ top: -11px;
5503
+ left: 50%;
5504
+ margin-left: -11px;
5505
+ border-bottom-color: #999;
5506
+ border-bottom-color: rgba(0, 0, 0, 0.25);
5507
+ border-top-width: 0
5508
+ }
5509
+
5510
+ .popover.bottom .arrow:after {
5511
+ top: 1px;
5512
+ margin-left: -10px;
5513
+ border-bottom-color: #fff;
5514
+ border-top-width: 0;
5515
+ content: " "
5516
+ }
5517
+
5518
+ .popover.left .arrow {
5519
+ top: 50%;
5520
+ right: -11px;
5521
+ margin-top: -11px;
5522
+ border-left-color: #999;
5523
+ border-left-color: rgba(0, 0, 0, 0.25);
5524
+ border-right-width: 0
5525
+ }
5526
+
5527
+ .popover.left .arrow:after {
5528
+ right: 1px;
5529
+ bottom: -10px;
5530
+ border-left-color: #fff;
5531
+ border-right-width: 0;
5532
+ content: " "
5533
+ }
5534
+
5535
+ .carousel {
5536
+ position: relative
5537
+ }
5538
+
5539
+ .carousel-inner {
5540
+ position: relative;
5541
+ width: 100%;
5542
+ overflow: hidden
5543
+ }
5544
+
5545
+ .carousel-inner > .item {
5546
+ position: relative;
5547
+ display: none;
5548
+ -webkit-transition: .6s ease-in-out left;
5549
+ transition: .6s ease-in-out left
5550
+ }
5551
+
5552
+ .carousel-inner > .item > img, .carousel-inner > .item > a > img {
5553
+ display: block;
5554
+ height: auto;
5555
+ max-width: 100%;
5556
+ line-height: 1
5557
+ }
5558
+
5559
+ .carousel-inner > .active, .carousel-inner > .next, .carousel-inner > .prev {
5560
+ display: block
5561
+ }
5562
+
5563
+ .carousel-inner > .active {
5564
+ left: 0
5565
+ }
5566
+
5567
+ .carousel-inner > .next, .carousel-inner > .prev {
5568
+ position: absolute;
5569
+ top: 0;
5570
+ width: 100%
5571
+ }
5572
+
5573
+ .carousel-inner > .next {
5574
+ left: 100%
5575
+ }
5576
+
5577
+ .carousel-inner > .prev {
5578
+ left: -100%
5579
+ }
5580
+
5581
+ .carousel-inner > .next.left, .carousel-inner > .prev.right {
5582
+ left: 0
5583
+ }
5584
+
5585
+ .carousel-inner > .active.left {
5586
+ left: -100%
5587
+ }
5588
+
5589
+ .carousel-inner > .active.right {
5590
+ left: 100%
5591
+ }
5592
+
5593
+ .carousel-control {
5594
+ position: absolute;
5595
+ top: 0;
5596
+ bottom: 0;
5597
+ left: 0;
5598
+ width: 15%;
5599
+ font-size: 20px;
5600
+ color: #fff;
5601
+ text-align: center;
5602
+ text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
5603
+ opacity: .5;
5604
+ filter: alpha(opacity=50)
5605
+ }
5606
+
5607
+ .carousel-control.left {
5608
+ background-image: -webkit-gradient(linear, 0 top, 100% top, from(rgba(0, 0, 0, 0.5)), to(rgba(0, 0, 0, 0.0001)));
5609
+ background-image: -webkit-linear-gradient(left, color-stop(rgba(0, 0, 0, 0.5) 0), color-stop(rgba(0, 0, 0, 0.0001) 100%));
5610
+ background-image: -moz-linear-gradient(left, rgba(0, 0, 0, 0.5) 0, rgba(0, 0, 0, 0.0001) 100%);
5611
+ background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0, rgba(0, 0, 0, 0.0001) 100%);
5612
+ background-repeat: repeat-x;
5613
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)
5614
+ }
5615
+
5616
+ .carousel-control.right {
5617
+ right: 0;
5618
+ left: auto;
5619
+ background-image: -webkit-gradient(linear, 0 top, 100% top, from(rgba(0, 0, 0, 0.0001)), to(rgba(0, 0, 0, 0.5)));
5620
+ background-image: -webkit-linear-gradient(left, color-stop(rgba(0, 0, 0, 0.0001) 0), color-stop(rgba(0, 0, 0, 0.5) 100%));
5621
+ background-image: -moz-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0, rgba(0, 0, 0, 0.5) 100%);
5622
+ background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0, rgba(0, 0, 0, 0.5) 100%);
5623
+ background-repeat: repeat-x;
5624
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)
5625
+ }
5626
+
5627
+ .carousel-control:hover, .carousel-control:focus {
5628
+ color: #fff;
5629
+ text-decoration: none;
5630
+ opacity: .9;
5631
+ filter: alpha(opacity=90)
5632
+ }
5633
+
5634
+ .carousel-control .icon-prev, .carousel-control .icon-next, .carousel-control .glyphicon-chevron-left, .carousel-control .glyphicon-chevron-right {
5635
+ position: absolute;
5636
+ top: 50%;
5637
+ left: 50%;
5638
+ z-index: 5;
5639
+ display: inline-block
5640
+ }
5641
+
5642
+ .carousel-control .icon-prev, .carousel-control .icon-next {
5643
+ width: 20px;
5644
+ height: 20px;
5645
+ margin-top: -10px;
5646
+ margin-left: -10px;
5647
+ font-family: serif
5648
+ }
5649
+
5650
+ .carousel-control .icon-prev:before {
5651
+ content: '\2039'
5652
+ }
5653
+
5654
+ .carousel-control .icon-next:before {
5655
+ content: '\203a'
5656
+ }
5657
+
5658
+ .carousel-indicators {
5659
+ position: absolute;
5660
+ bottom: 10px;
5661
+ left: 50%;
5662
+ z-index: 15;
5663
+ width: 60%;
5664
+ padding-left: 0;
5665
+ margin-left: -30%;
5666
+ text-align: center;
5667
+ list-style: none
5668
+ }
5669
+
5670
+ .carousel-indicators li {
5671
+ display: inline-block;
5672
+ width: 10px;
5673
+ height: 10px;
5674
+ margin: 1px;
5675
+ text-indent: -999px;
5676
+ cursor: pointer;
5677
+ border: 1px solid #fff;
5678
+ border-radius: 10px
5679
+ }
5680
+
5681
+ .carousel-indicators .active {
5682
+ width: 12px;
5683
+ height: 12px;
5684
+ margin: 0;
5685
+ background-color: #fff
5686
+ }
5687
+
5688
+ .carousel-caption {
5689
+ position: absolute;
5690
+ right: 15%;
5691
+ bottom: 20px;
5692
+ left: 15%;
5693
+ z-index: 10;
5694
+ padding-top: 20px;
5695
+ padding-bottom: 20px;
5696
+ color: #fff;
5697
+ text-align: center;
5698
+ text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6)
5699
+ }
5700
+
5701
+ .carousel-caption .btn {
5702
+ text-shadow: none
5703
+ }
5704
+
5705
+ @media screen and (min-width: 768px) {
5706
+ .carousel-control .icon-prev, .carousel-control .icon-next {
5707
+ width: 30px;
5708
+ height: 30px;
5709
+ margin-top: -15px;
5710
+ margin-left: -15px;
5711
+ font-size: 30px
5712
+ }
5713
+
5714
+ .carousel-caption {
5715
+ right: 20%;
5716
+ left: 20%;
5717
+ padding-bottom: 30px
5718
+ }
5719
+
5720
+ .carousel-indicators {
5721
+ bottom: 20px
5722
+ }
5723
+ }
5724
+
5725
+ .clearfix:before, .clearfix:after {
5726
+ display: table;
5727
+ content: " "
5728
+ }
5729
+
5730
+ .clearfix:after {
5731
+ clear: both
5732
+ }
5733
+
5734
+ .pull-right {
5735
+ float: right !important
5736
+ }
5737
+
5738
+ .pull-left {
5739
+ float: left !important
5740
+ }
5741
+
5742
+ .hide {
5743
+ display: none !important
5744
+ }
5745
+
5746
+ .show {
5747
+ display: block !important
5748
+ }
5749
+
5750
+ .invisible {
5751
+ visibility: hidden
5752
+ }
5753
+
5754
+ .text-hide {
5755
+ font: 0/0 a;
5756
+ color: transparent;
5757
+ text-shadow: none;
5758
+ background-color: transparent;
5759
+ border: 0
5760
+ }
5761
+
5762
+ .affix {
5763
+ position: fixed
5764
+ }
5765
+
5766
+ @-ms-viewport {
5767
+ width: device-width
5768
+ }
5769
+
5770
+ @media screen and (max-width: 400px) {
5771
+ @-ms-viewport {
5772
+ width: 320px
5773
+ }
5774
+ }
5775
+
5776
+ .hidden {
5777
+ display: none !important;
5778
+ visibility: hidden !important
5779
+ }
5780
+
5781
+ .visible-xs {
5782
+ display: none !important
5783
+ }
5784
+
5785
+ tr.visible-xs {
5786
+ display: none !important
5787
+ }
5788
+
5789
+ th.visible-xs, td.visible-xs {
5790
+ display: none !important
5791
+ }
5792
+
5793
+ @media (max-width: 767px) {
5794
+ .visible-xs {
5795
+ display: block !important
5796
+ }
5797
+
5798
+ tr.visible-xs {
5799
+ display: table-row !important
5800
+ }
5801
+
5802
+ th.visible-xs, td.visible-xs {
5803
+ display: table-cell !important
5804
+ }
5805
+ }
5806
+
5807
+ @media (min-width: 768px) and (max-width: 991px) {
5808
+ .visible-xs.visible-sm {
5809
+ display: block !important
5810
+ }
5811
+
5812
+ tr.visible-xs.visible-sm {
5813
+ display: table-row !important
5814
+ }
5815
+
5816
+ th.visible-xs.visible-sm, td.visible-xs.visible-sm {
5817
+ display: table-cell !important
5818
+ }
5819
+ }
5820
+
5821
+ @media (min-width: 992px) and (max-width: 1199px) {
5822
+ .visible-xs.visible-md {
5823
+ display: block !important
5824
+ }
5825
+
5826
+ tr.visible-xs.visible-md {
5827
+ display: table-row !important
5828
+ }
5829
+
5830
+ th.visible-xs.visible-md, td.visible-xs.visible-md {
5831
+ display: table-cell !important
5832
+ }
5833
+ }
5834
+
5835
+ @media (min-width: 1200px) {
5836
+ .visible-xs.visible-lg {
5837
+ display: block !important
5838
+ }
5839
+
5840
+ tr.visible-xs.visible-lg {
5841
+ display: table-row !important
5842
+ }
5843
+
5844
+ th.visible-xs.visible-lg, td.visible-xs.visible-lg {
5845
+ display: table-cell !important
5846
+ }
5847
+ }
5848
+
5849
+ .visible-sm {
5850
+ display: none !important
5851
+ }
5852
+
5853
+ tr.visible-sm {
5854
+ display: none !important
5855
+ }
5856
+
5857
+ th.visible-sm, td.visible-sm {
5858
+ display: none !important
5859
+ }
5860
+
5861
+ @media (max-width: 767px) {
5862
+ .visible-sm.visible-xs {
5863
+ display: block !important
5864
+ }
5865
+
5866
+ tr.visible-sm.visible-xs {
5867
+ display: table-row !important
5868
+ }
5869
+
5870
+ th.visible-sm.visible-xs, td.visible-sm.visible-xs {
5871
+ display: table-cell !important
5872
+ }
5873
+ }
5874
+
5875
+ @media (min-width: 768px) and (max-width: 991px) {
5876
+ .visible-sm {
5877
+ display: block !important
5878
+ }
5879
+
5880
+ tr.visible-sm {
5881
+ display: table-row !important
5882
+ }
5883
+
5884
+ th.visible-sm, td.visible-sm {
5885
+ display: table-cell !important
5886
+ }
5887
+ }
5888
+
5889
+ @media (min-width: 992px) and (max-width: 1199px) {
5890
+ .visible-sm.visible-md {
5891
+ display: block !important
5892
+ }
5893
+
5894
+ tr.visible-sm.visible-md {
5895
+ display: table-row !important
5896
+ }
5897
+
5898
+ th.visible-sm.visible-md, td.visible-sm.visible-md {
5899
+ display: table-cell !important
5900
+ }
5901
+ }
5902
+
5903
+ @media (min-width: 1200px) {
5904
+ .visible-sm.visible-lg {
5905
+ display: block !important
5906
+ }
5907
+
5908
+ tr.visible-sm.visible-lg {
5909
+ display: table-row !important
5910
+ }
5911
+
5912
+ th.visible-sm.visible-lg, td.visible-sm.visible-lg {
5913
+ display: table-cell !important
5914
+ }
5915
+ }
5916
+
5917
+ .visible-md {
5918
+ display: none !important
5919
+ }
5920
+
5921
+ tr.visible-md {
5922
+ display: none !important
5923
+ }
5924
+
5925
+ th.visible-md, td.visible-md {
5926
+ display: none !important
5927
+ }
5928
+
5929
+ @media (max-width: 767px) {
5930
+ .visible-md.visible-xs {
5931
+ display: block !important
5932
+ }
5933
+
5934
+ tr.visible-md.visible-xs {
5935
+ display: table-row !important
5936
+ }
5937
+
5938
+ th.visible-md.visible-xs, td.visible-md.visible-xs {
5939
+ display: table-cell !important
5940
+ }
5941
+ }
5942
+
5943
+ @media (min-width: 768px) and (max-width: 991px) {
5944
+ .visible-md.visible-sm {
5945
+ display: block !important
5946
+ }
5947
+
5948
+ tr.visible-md.visible-sm {
5949
+ display: table-row !important
5950
+ }
5951
+
5952
+ th.visible-md.visible-sm, td.visible-md.visible-sm {
5953
+ display: table-cell !important
5954
+ }
5955
+ }
5956
+
5957
+ @media (min-width: 992px) and (max-width: 1199px) {
5958
+ .visible-md {
5959
+ display: block !important
5960
+ }
5961
+
5962
+ tr.visible-md {
5963
+ display: table-row !important
5964
+ }
5965
+
5966
+ th.visible-md, td.visible-md {
5967
+ display: table-cell !important
5968
+ }
5969
+ }
5970
+
5971
+ @media (min-width: 1200px) {
5972
+ .visible-md.visible-lg {
5973
+ display: block !important
5974
+ }
5975
+
5976
+ tr.visible-md.visible-lg {
5977
+ display: table-row !important
5978
+ }
5979
+
5980
+ th.visible-md.visible-lg, td.visible-md.visible-lg {
5981
+ display: table-cell !important
5982
+ }
5983
+ }
5984
+
5985
+ .visible-lg {
5986
+ display: none !important
5987
+ }
5988
+
5989
+ tr.visible-lg {
5990
+ display: none !important
5991
+ }
5992
+
5993
+ th.visible-lg, td.visible-lg {
5994
+ display: none !important
5995
+ }
5996
+
5997
+ @media (max-width: 767px) {
5998
+ .visible-lg.visible-xs {
5999
+ display: block !important
6000
+ }
6001
+
6002
+ tr.visible-lg.visible-xs {
6003
+ display: table-row !important
6004
+ }
6005
+
6006
+ th.visible-lg.visible-xs, td.visible-lg.visible-xs {
6007
+ display: table-cell !important
6008
+ }
6009
+ }
6010
+
6011
+ @media (min-width: 768px) and (max-width: 991px) {
6012
+ .visible-lg.visible-sm {
6013
+ display: block !important
6014
+ }
6015
+
6016
+ tr.visible-lg.visible-sm {
6017
+ display: table-row !important
6018
+ }
6019
+
6020
+ th.visible-lg.visible-sm, td.visible-lg.visible-sm {
6021
+ display: table-cell !important
6022
+ }
6023
+ }
6024
+
6025
+ @media (min-width: 992px) and (max-width: 1199px) {
6026
+ .visible-lg.visible-md {
6027
+ display: block !important
6028
+ }
6029
+
6030
+ tr.visible-lg.visible-md {
6031
+ display: table-row !important
6032
+ }
6033
+
6034
+ th.visible-lg.visible-md, td.visible-lg.visible-md {
6035
+ display: table-cell !important
6036
+ }
6037
+ }
6038
+
6039
+ @media (min-width: 1200px) {
6040
+ .visible-lg {
6041
+ display: block !important
6042
+ }
6043
+
6044
+ tr.visible-lg {
6045
+ display: table-row !important
6046
+ }
6047
+
6048
+ th.visible-lg, td.visible-lg {
6049
+ display: table-cell !important
6050
+ }
6051
+ }
6052
+
6053
+ .hidden-xs {
6054
+ display: block !important
6055
+ }
6056
+
6057
+ tr.hidden-xs {
6058
+ display: table-row !important
6059
+ }
6060
+
6061
+ th.hidden-xs, td.hidden-xs {
6062
+ display: table-cell !important
6063
+ }
6064
+
6065
+ @media (max-width: 767px) {
6066
+ .hidden-xs {
6067
+ display: none !important
6068
+ }
6069
+
6070
+ tr.hidden-xs {
6071
+ display: none !important
6072
+ }
6073
+
6074
+ th.hidden-xs, td.hidden-xs {
6075
+ display: none !important
6076
+ }
6077
+ }
6078
+
6079
+ @media (min-width: 768px) and (max-width: 991px) {
6080
+ .hidden-xs.hidden-sm {
6081
+ display: none !important
6082
+ }
6083
+
6084
+ tr.hidden-xs.hidden-sm {
6085
+ display: none !important
6086
+ }
6087
+
6088
+ th.hidden-xs.hidden-sm, td.hidden-xs.hidden-sm {
6089
+ display: none !important
6090
+ }
6091
+ }
6092
+
6093
+ @media (min-width: 992px) and (max-width: 1199px) {
6094
+ .hidden-xs.hidden-md {
6095
+ display: none !important
6096
+ }
6097
+
6098
+ tr.hidden-xs.hidden-md {
6099
+ display: none !important
6100
+ }
6101
+
6102
+ th.hidden-xs.hidden-md, td.hidden-xs.hidden-md {
6103
+ display: none !important
6104
+ }
6105
+ }
6106
+
6107
+ @media (min-width: 1200px) {
6108
+ .hidden-xs.hidden-lg {
6109
+ display: none !important
6110
+ }
6111
+
6112
+ tr.hidden-xs.hidden-lg {
6113
+ display: none !important
6114
+ }
6115
+
6116
+ th.hidden-xs.hidden-lg, td.hidden-xs.hidden-lg {
6117
+ display: none !important
6118
+ }
6119
+ }
6120
+
6121
+ .hidden-sm {
6122
+ display: block !important
6123
+ }
6124
+
6125
+ tr.hidden-sm {
6126
+ display: table-row !important
6127
+ }
6128
+
6129
+ th.hidden-sm, td.hidden-sm {
6130
+ display: table-cell !important
6131
+ }
6132
+
6133
+ @media (max-width: 767px) {
6134
+ .hidden-sm.hidden-xs {
6135
+ display: none !important
6136
+ }
6137
+
6138
+ tr.hidden-sm.hidden-xs {
6139
+ display: none !important
6140
+ }
6141
+
6142
+ th.hidden-sm.hidden-xs, td.hidden-sm.hidden-xs {
6143
+ display: none !important
6144
+ }
6145
+ }
6146
+
6147
+ @media (min-width: 768px) and (max-width: 991px) {
6148
+ .hidden-sm {
6149
+ display: none !important
6150
+ }
6151
+
6152
+ tr.hidden-sm {
6153
+ display: none !important
6154
+ }
6155
+
6156
+ th.hidden-sm, td.hidden-sm {
6157
+ display: none !important
6158
+ }
6159
+ }
6160
+
6161
+ @media (min-width: 992px) and (max-width: 1199px) {
6162
+ .hidden-sm.hidden-md {
6163
+ display: none !important
6164
+ }
6165
+
6166
+ tr.hidden-sm.hidden-md {
6167
+ display: none !important
6168
+ }
6169
+
6170
+ th.hidden-sm.hidden-md, td.hidden-sm.hidden-md {
6171
+ display: none !important
6172
+ }
6173
+ }
6174
+
6175
+ @media (min-width: 1200px) {
6176
+ .hidden-sm.hidden-lg {
6177
+ display: none !important
6178
+ }
6179
+
6180
+ tr.hidden-sm.hidden-lg {
6181
+ display: none !important
6182
+ }
6183
+
6184
+ th.hidden-sm.hidden-lg, td.hidden-sm.hidden-lg {
6185
+ display: none !important
6186
+ }
6187
+ }
6188
+
6189
+ .hidden-md {
6190
+ display: block !important
6191
+ }
6192
+
6193
+ tr.hidden-md {
6194
+ display: table-row !important
6195
+ }
6196
+
6197
+ th.hidden-md, td.hidden-md {
6198
+ display: table-cell !important
6199
+ }
6200
+
6201
+ @media (max-width: 767px) {
6202
+ .hidden-md.hidden-xs {
6203
+ display: none !important
6204
+ }
6205
+
6206
+ tr.hidden-md.hidden-xs {
6207
+ display: none !important
6208
+ }
6209
+
6210
+ th.hidden-md.hidden-xs, td.hidden-md.hidden-xs {
6211
+ display: none !important
6212
+ }
6213
+ }
6214
+
6215
+ @media (min-width: 768px) and (max-width: 991px) {
6216
+ .hidden-md.hidden-sm {
6217
+ display: none !important
6218
+ }
6219
+
6220
+ tr.hidden-md.hidden-sm {
6221
+ display: none !important
6222
+ }
6223
+
6224
+ th.hidden-md.hidden-sm, td.hidden-md.hidden-sm {
6225
+ display: none !important
6226
+ }
6227
+ }
6228
+
6229
+ @media (min-width: 992px) and (max-width: 1199px) {
6230
+ .hidden-md {
6231
+ display: none !important
6232
+ }
6233
+
6234
+ tr.hidden-md {
6235
+ display: none !important
6236
+ }
6237
+
6238
+ th.hidden-md, td.hidden-md {
6239
+ display: none !important
6240
+ }
6241
+ }
6242
+
6243
+ @media (min-width: 1200px) {
6244
+ .hidden-md.hidden-lg {
6245
+ display: none !important
6246
+ }
6247
+
6248
+ tr.hidden-md.hidden-lg {
6249
+ display: none !important
6250
+ }
6251
+
6252
+ th.hidden-md.hidden-lg, td.hidden-md.hidden-lg {
6253
+ display: none !important
6254
+ }
6255
+ }
6256
+
6257
+ .hidden-lg {
6258
+ display: block !important
6259
+ }
6260
+
6261
+ tr.hidden-lg {
6262
+ display: table-row !important
6263
+ }
6264
+
6265
+ th.hidden-lg, td.hidden-lg {
6266
+ display: table-cell !important
6267
+ }
6268
+
6269
+ @media (max-width: 767px) {
6270
+ .hidden-lg.hidden-xs {
6271
+ display: none !important
6272
+ }
6273
+
6274
+ tr.hidden-lg.hidden-xs {
6275
+ display: none !important
6276
+ }
6277
+
6278
+ th.hidden-lg.hidden-xs, td.hidden-lg.hidden-xs {
6279
+ display: none !important
6280
+ }
6281
+ }
6282
+
6283
+ @media (min-width: 768px) and (max-width: 991px) {
6284
+ .hidden-lg.hidden-sm {
6285
+ display: none !important
6286
+ }
6287
+
6288
+ tr.hidden-lg.hidden-sm {
6289
+ display: none !important
6290
+ }
6291
+
6292
+ th.hidden-lg.hidden-sm, td.hidden-lg.hidden-sm {
6293
+ display: none !important
6294
+ }
6295
+ }
6296
+
6297
+ @media (min-width: 992px) and (max-width: 1199px) {
6298
+ .hidden-lg.hidden-md {
6299
+ display: none !important
6300
+ }
6301
+
6302
+ tr.hidden-lg.hidden-md {
6303
+ display: none !important
6304
+ }
6305
+
6306
+ th.hidden-lg.hidden-md, td.hidden-lg.hidden-md {
6307
+ display: none !important
6308
+ }
6309
+ }
6310
+
6311
+ @media (min-width: 1200px) {
6312
+ .hidden-lg {
6313
+ display: none !important
6314
+ }
6315
+
6316
+ tr.hidden-lg {
6317
+ display: none !important
6318
+ }
6319
+
6320
+ th.hidden-lg, td.hidden-lg {
6321
+ display: none !important
6322
+ }
6323
+ }
6324
+
6325
+ .visible-print {
6326
+ display: none !important
6327
+ }
6328
+
6329
+ tr.visible-print {
6330
+ display: none !important
6331
+ }
6332
+
6333
+ th.visible-print, td.visible-print {
6334
+ display: none !important
6335
+ }
6336
+
6337
+ @media print {
6338
+ .visible-print {
6339
+ display: block !important
6340
+ }
6341
+
6342
+ tr.visible-print {
6343
+ display: table-row !important
6344
+ }
6345
+
6346
+ th.visible-print, td.visible-print {
6347
+ display: table-cell !important
6348
+ }
6349
+
6350
+ .hidden-print {
6351
+ display: none !important
6352
+ }
6353
+
6354
+ tr.hidden-print {
6355
+ display: none !important
6356
+ }
6357
+
6358
+ th.hidden-print, td.hidden-print {
6359
+ display: none !important
6360
+ }
6361
+ }
css/custom-style.css CHANGED
@@ -213,7 +213,7 @@
213
  border-bottom: 2px solid white;
214
  }
215
 
216
- @media screen and (-webkit-min-device-pixel-ratio:0) {
217
  .csv-top-navigation-wrapper {
218
  height: 26px;
219
  }
@@ -473,33 +473,84 @@ div.helpatright h4 {
473
 
474
  /* Tooltip */
475
 
476
- a.tooltip {outline:none; }
477
- a.tooltip strong {line-height:20px;}
478
- a.tooltip:hover {text-decoration:none;}
 
 
 
 
 
 
 
 
 
479
  a.tooltip span {
480
- z-index:10;display:none; padding:3px 12px;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
481
  }
482
- a.tooltip:hover span{
483
- display:inline; position:absolute; color:#111;
484
- border:1px solid #DCA; background:#fffAF0;}
485
- .callout {z-index:20;position:absolute;top:8px;border:0;left:-12px;}
486
 
487
  /*CSS3 extras*/
488
- a.tooltip span
489
- {
490
- border-radius:4px;
491
- -moz-border-radius: 4px;
492
- -webkit-border-radius: 4px;
493
-
494
- -moz-box-shadow: 5px 5px 8px #CCC;
495
- -webkit-box-shadow: 5px 5px 8px #CCC;
496
- box-shadow: 5px 5px 8px #CCC;
497
- }
498
-
499
- .tooltipOne {margin-top:-12px;margin-left:10px;width:225px; line-height:30px;}
500
- .tooltipTwo {margin-top:-37px;margin-left:160px;width:245px; line-height:20px;}
501
- .tooltipThree {margin-top:-12px;margin-left:10px;width:160px; line-height:30px;}
502
- .tooltipFour {margin-top:-35px;margin-left:360px;width:240px; line-height:30px;}
503
- .tooltipFive {margin-top:-35px;margin-left:160px;width:245px; line-height:20px;}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
504
 
505
 
213
  border-bottom: 2px solid white;
214
  }
215
 
216
+ @media screen and (-webkit-min-device-pixel-ratio: 0) {
217
  .csv-top-navigation-wrapper {
218
  height: 26px;
219
  }
473
 
474
  /* Tooltip */
475
 
476
+ a.tooltip {
477
+ outline: none;
478
+ }
479
+
480
+ a.tooltip strong {
481
+ line-height: 20px;
482
+ }
483
+
484
+ a.tooltip:hover {
485
+ text-decoration: none;
486
+ }
487
+
488
  a.tooltip span {
489
+ z-index: 10;
490
+ display: none;
491
+ padding: 3px 12px;
492
+ }
493
+
494
+ a.tooltip:hover span {
495
+ display: inline;
496
+ position: absolute;
497
+ color: #111;
498
+ border: 1px solid #DCA;
499
+ background: #fffAF0;
500
+ }
501
+
502
+ .callout {
503
+ z-index: 20;
504
+ position: absolute;
505
+ top: 8px;
506
+ border: 0;
507
+ left: -12px;
508
  }
 
 
 
 
509
 
510
  /*CSS3 extras*/
511
+ a.tooltip span {
512
+ border-radius: 4px;
513
+ -moz-border-radius: 4px;
514
+ -webkit-border-radius: 4px;
515
+
516
+ -moz-box-shadow: 5px 5px 8px #CCC;
517
+ -webkit-box-shadow: 5px 5px 8px #CCC;
518
+ box-shadow: 5px 5px 8px #CCC;
519
+ }
520
+
521
+ .tooltipOne {
522
+ margin-top: -12px;
523
+ margin-left: 10px;
524
+ width: 225px;
525
+ line-height: 30px;
526
+ }
527
+
528
+ .tooltipTwo {
529
+ margin-top: -37px;
530
+ margin-left: 160px;
531
+ width: 245px;
532
+ line-height: 20px;
533
+ }
534
+
535
+ .tooltipThree {
536
+ margin-top: -12px;
537
+ margin-left: 10px;
538
+ width: 160px;
539
+ line-height: 30px;
540
+ }
541
+
542
+ .tooltipFour {
543
+ margin-top: -35px;
544
+ margin-left: 360px;
545
+ width: 240px;
546
+ line-height: 30px;
547
+ }
548
+
549
+ .tooltipFive {
550
+ margin-top: -35px;
551
+ margin-left: 160px;
552
+ width: 245px;
553
+ line-height: 20px;
554
+ }
555
 
556
 
css/font-awesome.css CHANGED
@@ -5,1336 +5,1737 @@
5
  /* FONT PATH
6
  * -------------------------- */
7
  @font-face {
8
- font-family: 'FontAwesome';
9
- src: url('../fonts/fontawesome-webfont.eot?v=4.0.3');
10
- src: url('../fonts/fontawesome-webfont.eot?#iefix&v=4.0.3') format('embedded-opentype'), url('../fonts/fontawesome-webfont.woff?v=4.0.3') format('woff'), url('../fonts/fontawesome-webfont.ttf?v=4.0.3') format('truetype'), url('../fonts/fontawesome-webfont.svg?v=4.0.3#fontawesomeregular') format('svg');
11
- font-weight: normal;
12
- font-style: normal;
13
  }
 
14
  .fa {
15
- display: inline-block;
16
- font-family: FontAwesome;
17
- font-style: normal;
18
- font-weight: normal;
19
- line-height: 1;
20
- -webkit-font-smoothing: antialiased;
21
- -moz-osx-font-smoothing: grayscale;
22
  }
 
23
  /* makes the font 33% larger relative to the icon container */
24
  .fa-lg {
25
- font-size: 1.3333333333333333em;
26
- line-height: 0.75em;
27
- vertical-align: -15%;
28
  }
 
29
  .fa-2x {
30
- font-size: 2em;
31
  }
 
32
  .fa-3x {
33
- font-size: 3em;
34
  }
 
35
  .fa-4x {
36
- font-size: 4em;
37
  }
 
38
  .fa-5x {
39
- font-size: 5em;
40
  }
 
41
  .fa-fw {
42
- width: 1.2857142857142858em;
43
- text-align: center;
44
  }
 
45
  .fa-ul {
46
- padding-left: 0;
47
- margin-left: 2.142857142857143em;
48
- list-style-type: none;
49
  }
 
50
  .fa-ul > li {
51
- position: relative;
52
  }
 
53
  .fa-li {
54
- position: absolute;
55
- left: -2.142857142857143em;
56
- width: 2.142857142857143em;
57
- top: 0.14285714285714285em;
58
- text-align: center;
59
  }
 
60
  .fa-li.fa-lg {
61
- left: -1.8571428571428572em;
62
  }
 
63
  .fa-border {
64
- padding: .2em .25em .15em;
65
- border: solid 0.08em #eeeeee;
66
- border-radius: .1em;
67
  }
 
68
  .pull-right {
69
- float: right;
70
  }
 
71
  .pull-left {
72
- float: left;
73
  }
 
74
  .fa.pull-left {
75
- margin-right: .3em;
76
  }
 
77
  .fa.pull-right {
78
- margin-left: .3em;
79
  }
 
80
  .fa-spin {
81
- -webkit-animation: spin 2s infinite linear;
82
- -moz-animation: spin 2s infinite linear;
83
- -o-animation: spin 2s infinite linear;
84
- animation: spin 2s infinite linear;
85
  }
 
86
  @-moz-keyframes spin {
87
- 0% {
88
- -moz-transform: rotate(0deg);
89
- }
90
- 100% {
91
- -moz-transform: rotate(359deg);
92
- }
93
  }
 
94
  @-webkit-keyframes spin {
95
- 0% {
96
- -webkit-transform: rotate(0deg);
97
- }
98
- 100% {
99
- -webkit-transform: rotate(359deg);
100
- }
101
  }
 
102
  @-o-keyframes spin {
103
- 0% {
104
- -o-transform: rotate(0deg);
105
- }
106
- 100% {
107
- -o-transform: rotate(359deg);
108
- }
109
  }
 
110
  @-ms-keyframes spin {
111
- 0% {
112
- -ms-transform: rotate(0deg);
113
- }
114
- 100% {
115
- -ms-transform: rotate(359deg);
116
- }
117
  }
 
118
  @keyframes spin {
119
- 0% {
120
- transform: rotate(0deg);
121
- }
122
- 100% {
123
- transform: rotate(359deg);
124
- }
125
  }
 
126
  .fa-rotate-90 {
127
- filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
128
- -webkit-transform: rotate(90deg);
129
- -moz-transform: rotate(90deg);
130
- -ms-transform: rotate(90deg);
131
- -o-transform: rotate(90deg);
132
- transform: rotate(90deg);
133
  }
 
134
  .fa-rotate-180 {
135
- filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);
136
- -webkit-transform: rotate(180deg);
137
- -moz-transform: rotate(180deg);
138
- -ms-transform: rotate(180deg);
139
- -o-transform: rotate(180deg);
140
- transform: rotate(180deg);
141
  }
 
142
  .fa-rotate-270 {
143
- filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
144
- -webkit-transform: rotate(270deg);
145
- -moz-transform: rotate(270deg);
146
- -ms-transform: rotate(270deg);
147
- -o-transform: rotate(270deg);
148
- transform: rotate(270deg);
149
  }
 
150
  .fa-flip-horizontal {
151
- filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);
152
- -webkit-transform: scale(-1, 1);
153
- -moz-transform: scale(-1, 1);
154
- -ms-transform: scale(-1, 1);
155
- -o-transform: scale(-1, 1);
156
- transform: scale(-1, 1);
157
  }
 
158
  .fa-flip-vertical {
159
- filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);
160
- -webkit-transform: scale(1, -1);
161
- -moz-transform: scale(1, -1);
162
- -ms-transform: scale(1, -1);
163
- -o-transform: scale(1, -1);
164
- transform: scale(1, -1);
165
  }
 
166
  .fa-stack {
167
- position: relative;
168
- display: inline-block;
169
- width: 2em;
170
- height: 2em;
171
- line-height: 2em;
172
- vertical-align: middle;
173
  }
 
174
  .fa-stack-1x,
175
  .fa-stack-2x {
176
- position: absolute;
177
- left: 0;
178
- width: 100%;
179
- text-align: center;
180
  }
 
181
  .fa-stack-1x {
182
- line-height: inherit;
183
  }
 
184
  .fa-stack-2x {
185
- font-size: 2em;
186
  }
 
187
  .fa-inverse {
188
- color: #ffffff;
189
  }
 
190
  /* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
191
  readers do not read off random characters that represent icons */
192
  .fa-glass:before {
193
- content: "\f000";
194
  }
 
195
  .fa-music:before {
196
- content: "\f001";
197
  }
 
198
  .fa-search:before {
199
- content: "\f002";
200
  }
 
201
  .fa-envelope-o:before {
202
- content: "\f003";
203
  }
 
204
  .fa-heart:before {
205
- content: "\f004";
206
  }
 
207
  .fa-star:before {
208
- content: "\f005";
209
  }
 
210
  .fa-star-o:before {
211
- content: "\f006";
212
  }
 
213
  .fa-user:before {
214
- content: "\f007";
215
  }
 
216
  .fa-film:before {
217
- content: "\f008";
218
  }
 
219
  .fa-th-large:before {
220
- content: "\f009";
221
  }
 
222
  .fa-th:before {
223
- content: "\f00a";
224
  }
 
225
  .fa-th-list:before {
226
- content: "\f00b";
227
  }
 
228
  .fa-check:before {
229
- content: "\f00c";
230
  }
 
231
  .fa-times:before {
232
- content: "\f00d";
233
  }
 
234
  .fa-search-plus:before {
235
- content: "\f00e";
236
  }
 
237
  .fa-search-minus:before {
238
- content: "\f010";
239
  }
 
240
  .fa-power-off:before {
241
- content: "\f011";
242
  }
 
243
  .fa-signal:before {
244
- content: "\f012";
245
  }
 
246
  .fa-gear:before,
247
  .fa-cog:before {
248
- content: "\f013";
249
  }
 
250
  .fa-trash-o:before {
251
- content: "\f014";
252
  }
 
253
  .fa-home:before {
254
- content: "\f015";
255
  }
 
256
  .fa-file-o:before {
257
- content: "\f016";
258
  }
 
259
  .fa-clock-o:before {
260
- content: "\f017";
261
  }
 
262
  .fa-road:before {
263
- content: "\f018";
264
  }
 
265
  .fa-download:before {
266
- content: "\f019";
267
  }
 
268
  .fa-arrow-circle-o-down:before {
269
- content: "\f01a";
270
  }
 
271
  .fa-arrow-circle-o-up:before {
272
- content: "\f01b";
273
  }
 
274
  .fa-inbox:before {
275
- content: "\f01c";
276
  }
 
277
  .fa-play-circle-o:before {
278
- content: "\f01d";
279
  }
 
280
  .fa-rotate-right:before,
281
  .fa-repeat:before {
282
- content: "\f01e";
283
  }
 
284
  .fa-refresh:before {
285
- content: "\f021";
286
  }
 
287
  .fa-list-alt:before {
288
- content: "\f022";
289
  }
 
290
  .fa-lock:before {
291
- content: "\f023";
292
  }
 
293
  .fa-flag:before {
294
- content: "\f024";
295
  }
 
296
  .fa-headphones:before {
297
- content: "\f025";
298
  }
 
299
  .fa-volume-off:before {
300
- content: "\f026";
301
  }
 
302
  .fa-volume-down:before {
303
- content: "\f027";
304
  }
 
305
  .fa-volume-up:before {
306
- content: "\f028";
307
  }
 
308
  .fa-qrcode:before {
309
- content: "\f029";
310
  }
 
311
  .fa-barcode:before {
312
- content: "\f02a";
313
  }
 
314
  .fa-tag:before {
315
- content: "\f02b";
316
  }
 
317
  .fa-tags:before {
318
- content: "\f02c";
319
  }
 
320
  .fa-book:before {
321
- content: "\f02d";
322
  }
 
323
  .fa-bookmark:before {
324
- content: "\f02e";
325
  }
 
326
  .fa-print:before {
327
- content: "\f02f";
328
  }
 
329
  .fa-camera:before {
330
- content: "\f030";
331
  }
 
332
  .fa-font:before {
333
- content: "\f031";
334
  }
 
335
  .fa-bold:before {
336
- content: "\f032";
337
  }
 
338
  .fa-italic:before {
339
- content: "\f033";
340
  }
 
341
  .fa-text-height:before {
342
- content: "\f034";
343
  }
 
344
  .fa-text-width:before {
345
- content: "\f035";
346
  }
 
347
  .fa-align-left:before {
348
- content: "\f036";
349
  }
 
350
  .fa-align-center:before {
351
- content: "\f037";
352
  }
 
353
  .fa-align-right:before {
354
- content: "\f038";
355
  }
 
356
  .fa-align-justify:before {
357
- content: "\f039";
358
  }
 
359
  .fa-list:before {
360
- content: "\f03a";
361
  }
 
362
  .fa-dedent:before,
363
  .fa-outdent:before {
364
- content: "\f03b";
365
  }
 
366
  .fa-indent:before {
367
- content: "\f03c";
368
  }
 
369
  .fa-video-camera:before {
370
- content: "\f03d";
371
  }
 
372
  .fa-picture-o:before {
373
- content: "\f03e";
374
  }
 
375
  .fa-pencil:before {
376
- content: "\f040";
377
  }
 
378
  .fa-map-marker:before {
379
- content: "\f041";
380
  }
 
381
  .fa-adjust:before {
382
- content: "\f042";
383
  }
 
384
  .fa-tint:before {
385
- content: "\f043";
386
  }
 
387
  .fa-edit:before,
388
  .fa-pencil-square-o:before {
389
- content: "\f044";
390
  }
 
391
  .fa-share-square-o:before {
392
- content: "\f045";
393
  }
 
394
  .fa-check-square-o:before {
395
- content: "\f046";
396
  }
 
397
  .fa-arrows:before {
398
- content: "\f047";
399
  }
 
400
  .fa-step-backward:before {
401
- content: "\f048";
402
  }
 
403
  .fa-fast-backward:before {
404
- content: "\f049";
405
  }
 
406
  .fa-backward:before {
407
- content: "\f04a";
408
  }
 
409
  .fa-play:before {
410
- content: "\f04b";
411
  }
 
412
  .fa-pause:before {
413
- content: "\f04c";
414
  }
 
415
  .fa-stop:before {
416
- content: "\f04d";
417
  }
 
418
  .fa-forward:before {
419
- content: "\f04e";
420
  }
 
421
  .fa-fast-forward:before {
422
- content: "\f050";
423
  }
 
424
  .fa-step-forward:before {
425
- content: "\f051";
426
  }
 
427
  .fa-eject:before {
428
- content: "\f052";
429
  }
 
430
  .fa-chevron-left:before {
431
- content: "\f053";
432
  }
 
433
  .fa-chevron-right:before {
434
- content: "\f054";
435
  }
 
436
  .fa-plus-circle:before {
437
- content: "\f055";
438
  }
 
439
  .fa-minus-circle:before {
440
- content: "\f056";
441
  }
 
442
  .fa-times-circle:before {
443
- content: "\f057";
444
  }
 
445
  .fa-check-circle:before {
446
- content: "\f058";
447
  }
 
448
  .fa-question-circle:before {
449
- content: "\f059";
450
  }
 
451
  .fa-info-circle:before {
452
- content: "\f05a";
453
  }
 
454
  .fa-crosshairs:before {
455
- content: "\f05b";
456
  }
 
457
  .fa-times-circle-o:before {
458
- content: "\f05c";
459
  }
 
460
  .fa-check-circle-o:before {
461
- content: "\f05d";
462
  }
 
463
  .fa-ban:before {
464
- content: "\f05e";
465
  }
 
466
  .fa-arrow-left:before {
467
- content: "\f060";
468
  }
 
469
  .fa-arrow-right:before {
470
- content: "\f061";
471
  }
 
472
  .fa-arrow-up:before {
473
- content: "\f062";
474
  }
 
475
  .fa-arrow-down:before {
476
- content: "\f063";
477
  }
 
478
  .fa-mail-forward:before,
479
  .fa-share:before {
480
- content: "\f064";
481
  }
 
482
  .fa-expand:before {
483
- content: "\f065";
484
  }
 
485
  .fa-compress:before {
486
- content: "\f066";
487
  }
 
488
  .fa-plus:before {
489
- content: "\f067";
490
  }
 
491
  .fa-minus:before {
492
- content: "\f068";
493
  }
 
494
  .fa-asterisk:before {
495
- content: "\f069";
496
  }
 
497
  .fa-exclamation-circle:before {
498
- content: "\f06a";
499
  }
 
500
  .fa-gift:before {
501
- content: "\f06b";
502
  }
 
503
  .fa-leaf:before {
504
- content: "\f06c";
505
  }
 
506
  .fa-fire:before {
507
- content: "\f06d";
508
  }
 
509
  .fa-eye:before {
510
- content: "\f06e";
511
  }
 
512
  .fa-eye-slash:before {
513
- content: "\f070";
514
  }
 
515
  .fa-warning:before,
516
  .fa-exclamation-triangle:before {
517
- content: "\f071";
518
  }
 
519
  .fa-plane:before {
520
- content: "\f072";
521
  }
 
522
  .fa-calendar:before {
523
- content: "\f073";
524
  }
 
525
  .fa-random:before {
526
- content: "\f074";
527
  }
 
528
  .fa-comment:before {
529
- content: "\f075";
530
  }
 
531
  .fa-magnet:before {
532
- content: "\f076";
533
  }
 
534
  .fa-chevron-up:before {
535
- content: "\f077";
536
  }
 
537
  .fa-chevron-down:before {
538
- content: "\f078";
539
  }
 
540
  .fa-retweet:before {
541
- content: "\f079";
542
  }
 
543
  .fa-shopping-cart:before {
544
- content: "\f07a";
545
  }
 
546
  .fa-folder:before {
547
- content: "\f07b";
548
  }
 
549
  .fa-folder-open:before {
550
- content: "\f07c";
551
  }
 
552
  .fa-arrows-v:before {
553
- content: "\f07d";
554
  }
 
555
  .fa-arrows-h:before {
556
- content: "\f07e";
557
  }
 
558
  .fa-bar-chart-o:before {
559
- content: "\f080";
560
  }
 
561
  .fa-twitter-square:before {
562
- content: "\f081";
563
  }
 
564
  .fa-facebook-square:before {
565
- content: "\f082";
566
  }
 
567
  .fa-camera-retro:before {
568
- content: "\f083";
569
  }
 
570
  .fa-key:before {
571
- content: "\f084";
572
  }
 
573
  .fa-gears:before,
574
  .fa-cogs:before {
575
- content: "\f085";
576
  }
 
577
  .fa-comments:before {
578
- content: "\f086";
579
  }
 
580
  .fa-thumbs-o-up:before {
581
- content: "\f087";
582
  }
 
583
  .fa-thumbs-o-down:before {
584
- content: "\f088";
585
  }
 
586
  .fa-star-half:before {
587
- content: "\f089";
588
  }
 
589
  .fa-heart-o:before {
590
- content: "\f08a";
591
  }
 
592
  .fa-sign-out:before {
593
- content: "\f08b";
594
  }
 
595
  .fa-linkedin-square:before {
596
- content: "\f08c";
597
  }
 
598
  .fa-thumb-tack:before {
599
- content: "\f08d";
600
  }
 
601
  .fa-external-link:before {
602
- content: "\f08e";
603
  }
 
604
  .fa-sign-in:before {
605
- content: "\f090";
606
  }
 
607
  .fa-trophy:before {
608
- content: "\f091";
609
  }
 
610
  .fa-github-square:before {
611
- content: "\f092";
612
  }
 
613
  .fa-upload:before {
614
- content: "\f093";
615
  }
 
616
  .fa-lemon-o:before {
617
- content: "\f094";
618
  }
 
619
  .fa-phone:before {
620
- content: "\f095";
621
  }
 
622
  .fa-square-o:before {
623
- content: "\f096";
624
  }
 
625
  .fa-bookmark-o:before {
626
- content: "\f097";
627
  }
 
628
  .fa-phone-square:before {
629
- content: "\f098";
630
  }
 
631
  .fa-twitter:before {
632
- content: "\f099";
633
  }
 
634
  .fa-facebook:before {
635
- content: "\f09a";
636
  }
 
637
  .fa-github:before {
638
- content: "\f09b";
639
  }
 
640
  .fa-unlock:before {
641
- content: "\f09c";
642
  }
 
643
  .fa-credit-card:before {
644
- content: "\f09d";
645
  }
 
646
  .fa-rss:before {
647
- content: "\f09e";
648
  }
 
649
  .fa-hdd-o:before {
650
- content: "\f0a0";
651
  }
 
652
  .fa-bullhorn:before {
653
- content: "\f0a1";
654
  }
 
655
  .fa-bell:before {
656
- content: "\f0f3";
657
  }
 
658
  .fa-certificate:before {
659
- content: "\f0a3";
660
  }
 
661
  .fa-hand-o-right:before {
662
- content: "\f0a4";
663
  }
 
664
  .fa-hand-o-left:before {
665
- content: "\f0a5";
666
  }
 
667
  .fa-hand-o-up:before {
668
- content: "\f0a6";
669
  }
 
670
  .fa-hand-o-down:before {
671
- content: "\f0a7";
672
  }
 
673
  .fa-arrow-circle-left:before {
674
- content: "\f0a8";
675
  }
 
676
  .fa-arrow-circle-right:before {
677
- content: "\f0a9";
678
  }
 
679
  .fa-arrow-circle-up:before {
680
- content: "\f0aa";
681
  }
 
682
  .fa-arrow-circle-down:before {
683
- content: "\f0ab";
684
  }
 
685
  .fa-globe:before {
686
- content: "\f0ac";
687
  }
 
688
  .fa-wrench:before {
689
- content: "\f0ad";
690
  }
 
691
  .fa-tasks:before {
692
- content: "\f0ae";
693
  }
 
694
  .fa-filter:before {
695
- content: "\f0b0";
696
  }
 
697
  .fa-briefcase:before {
698
- content: "\f0b1";
699
  }
 
700
  .fa-arrows-alt:before {
701
- content: "\f0b2";
702
  }
 
703
  .fa-group:before,
704
  .fa-users:before {
705
- content: "\f0c0";
706
  }
 
707
  .fa-chain:before,
708
  .fa-link:before {
709
- content: "\f0c1";
710
  }
 
711
  .fa-cloud:before {
712
- content: "\f0c2";
713
  }
 
714
  .fa-flask:before {
715
- content: "\f0c3";
716
  }
 
717
  .fa-cut:before,
718
  .fa-scissors:before {
719
- content: "\f0c4";
720
  }
 
721
  .fa-copy:before,
722
  .fa-files-o:before {
723
- content: "\f0c5";
724
  }
 
725
  .fa-paperclip:before {
726
- content: "\f0c6";
727
  }
 
728
  .fa-save:before,
729
  .fa-floppy-o:before {
730
- content: "\f0c7";
731
  }
 
732
  .fa-square:before {
733
- content: "\f0c8";
734
  }
 
735
  .fa-bars:before {
736
- content: "\f0c9";
737
  }
 
738
  .fa-list-ul:before {
739
- content: "\f0ca";
740
  }
 
741
  .fa-list-ol:before {
742
- content: "\f0cb";
743
  }
 
744
  .fa-strikethrough:before {
745
- content: "\f0cc";
746
  }
 
747
  .fa-underline:before {
748
- content: "\f0cd";
749
  }
 
750
  .fa-table:before {
751
- content: "\f0ce";
752
  }
 
753
  .fa-magic:before {
754
- content: "\f0d0";
755
  }
 
756
  .fa-truck:before {
757
- content: "\f0d1";
758
  }
 
759
  .fa-pinterest:before {
760
- content: "\f0d2";
761
  }
 
762
  .fa-pinterest-square:before {
763
- content: "\f0d3";
764
  }
 
765
  .fa-google-plus-square:before {
766
- content: "\f0d4";
767
  }
 
768
  .fa-google-plus:before {
769
- content: "\f0d5";
770
  }
 
771
  .fa-money:before {
772
- content: "\f0d6";
773
  }
 
774
  .fa-caret-down:before {
775
- content: "\f0d7";
776
  }
 
777
  .fa-caret-up:before {
778
- content: "\f0d8";
779
  }
 
780
  .fa-caret-left:before {
781
- content: "\f0d9";
782
  }
 
783
  .fa-caret-right:before {
784
- content: "\f0da";
785
  }
 
786
  .fa-columns:before {
787
- content: "\f0db";
788
  }
 
789
  .fa-unsorted:before,
790
  .fa-sort:before {
791
- content: "\f0dc";
792
  }
 
793
  .fa-sort-down:before,
794
  .fa-sort-asc:before {
795
- content: "\f0dd";
796
  }
 
797
  .fa-sort-up:before,
798
  .fa-sort-desc:before {
799
- content: "\f0de";
800
  }
 
801
  .fa-envelope:before {
802
- content: "\f0e0";
803
  }
 
804
  .fa-linkedin:before {
805
- content: "\f0e1";
806
  }
 
807
  .fa-rotate-left:before,
808
  .fa-undo:before {
809
- content: "\f0e2";
810
  }
 
811
  .fa-legal:before,
812
  .fa-gavel:before {
813
- content: "\f0e3";
814
  }
 
815
  .fa-dashboard:before,
816
  .fa-tachometer:before {
817
- content: "\f0e4";
818
  }
 
819
  .fa-comment-o:before {
820
- content: "\f0e5";
821
  }
 
822
  .fa-comments-o:before {
823
- content: "\f0e6";
824
  }
 
825
  .fa-flash:before,
826
  .fa-bolt:before {
827
- content: "\f0e7";
828
  }
 
829
  .fa-sitemap:before {
830
- content: "\f0e8";
831
  }
 
832
  .fa-umbrella:before {
833
- content: "\f0e9";
834
  }
 
835
  .fa-paste:before,
836
  .fa-clipboard:before {
837
- content: "\f0ea";
838
  }
 
839
  .fa-lightbulb-o:before {
840
- content: "\f0eb";
841
  }
 
842
  .fa-exchange:before {
843
- content: "\f0ec";
844
  }
 
845
  .fa-cloud-download:before {
846
- content: "\f0ed";
847
  }
 
848
  .fa-cloud-upload:before {
849
- content: "\f0ee";
850
  }
 
851
  .fa-user-md:before {
852
- content: "\f0f0";
853
  }
 
854
  .fa-stethoscope:before {
855
- content: "\f0f1";
856
  }
 
857
  .fa-suitcase:before {
858
- content: "\f0f2";
859
  }
 
860
  .fa-bell-o:before {
861
- content: "\f0a2";
862
  }
 
863
  .fa-coffee:before {
864
- content: "\f0f4";
865
  }
 
866
  .fa-cutlery:before {
867
- content: "\f0f5";
868
  }
 
869
  .fa-file-text-o:before {
870
- content: "\f0f6";
871
  }
 
872
  .fa-building-o:before {
873
- content: "\f0f7";
874
  }
 
875
  .fa-hospital-o:before {
876
- content: "\f0f8";
877
  }
 
878
  .fa-ambulance:before {
879
- content: "\f0f9";
880
  }
 
881
  .fa-medkit:before {
882
- content: "\f0fa";
883
  }
 
884
  .fa-fighter-jet:before {
885
- content: "\f0fb";
886
  }
 
887
  .fa-beer:before {
888
- content: "\f0fc";
889
  }
 
890
  .fa-h-square:before {
891
- content: "\f0fd";
892
  }
 
893
  .fa-plus-square:before {
894
- content: "\f0fe";
895
  }
 
896
  .fa-angle-double-left:before {
897
- content: "\f100";
898
  }
 
899
  .fa-angle-double-right:before {
900
- content: "\f101";
901
  }
 
902
  .fa-angle-double-up:before {
903
- content: "\f102";
904
  }
 
905
  .fa-angle-double-down:before {
906
- content: "\f103";
907
  }
 
908
  .fa-angle-left:before {
909
- content: "\f104";
910
  }
 
911
  .fa-angle-right:before {
912
- content: "\f105";
913
  }
 
914
  .fa-angle-up:before {
915
- content: "\f106";
916
  }
 
917
  .fa-angle-down:before {
918
- content: "\f107";
919
  }
 
920
  .fa-desktop:before {
921
- content: "\f108";
922
  }
 
923
  .fa-laptop:before {
924
- content: "\f109";
925
  }
 
926
  .fa-tablet:before {
927
- content: "\f10a";
928
  }
 
929
  .fa-mobile-phone:before,
930
  .fa-mobile:before {
931
- content: "\f10b";
932
  }
 
933
  .fa-circle-o:before {
934
- content: "\f10c";
935
  }
 
936
  .fa-quote-left:before {
937
- content: "\f10d";
938
  }
 
939
  .fa-quote-right:before {
940
- content: "\f10e";
941
  }
 
942
  .fa-spinner:before {
943
- content: "\f110";
944
  }
 
945
  .fa-circle:before {
946
- content: "\f111";
947
  }
 
948
  .fa-mail-reply:before,
949
  .fa-reply:before {
950
- content: "\f112";
951
  }
 
952
  .fa-github-alt:before {
953
- content: "\f113";
954
  }
 
955
  .fa-folder-o:before {
956
- content: "\f114";
957
  }
 
958
  .fa-folder-open-o:before {
959
- content: "\f115";
960
  }
 
961
  .fa-smile-o:before {
962
- content: "\f118";
963
  }
 
964
  .fa-frown-o:before {
965
- content: "\f119";
966
  }
 
967
  .fa-meh-o:before {
968
- content: "\f11a";
969
  }
 
970
  .fa-gamepad:before {
971
- content: "\f11b";
972
  }
 
973
  .fa-keyboard-o:before {
974
- content: "\f11c";
975
  }
 
976
  .fa-flag-o:before {
977
- content: "\f11d";
978
  }
 
979
  .fa-flag-checkered:before {
980
- content: "\f11e";
981
  }
 
982
  .fa-terminal:before {
983
- content: "\f120";
984
  }
 
985
  .fa-code:before {
986
- content: "\f121";
987
  }
 
988
  .fa-reply-all:before {
989
- content: "\f122";
990
  }
 
991
  .fa-mail-reply-all:before {
992
- content: "\f122";
993
  }
 
994
  .fa-star-half-empty:before,
995
  .fa-star-half-full:before,
996
  .fa-star-half-o:before {
997
- content: "\f123";
998
  }
 
999
  .fa-location-arrow:before {
1000
- content: "\f124";
1001
  }
 
1002
  .fa-crop:before {
1003
- content: "\f125";
1004
  }
 
1005
  .fa-code-fork:before {
1006
- content: "\f126";
1007
  }
 
1008
  .fa-unlink:before,
1009
  .fa-chain-broken:before {
1010
- content: "\f127";
1011
  }
 
1012
  .fa-question:before {
1013
- content: "\f128";
1014
  }
 
1015
  .fa-info:before {
1016
- content: "\f129";
1017
  }
 
1018
  .fa-exclamation:before {
1019
- content: "\f12a";
1020
  }
 
1021
  .fa-superscript:before {
1022
- content: "\f12b";
1023
  }
 
1024
  .fa-subscript:before {
1025
- content: "\f12c";
1026
  }
 
1027
  .fa-eraser:before {
1028
- content: "\f12d";
1029
  }
 
1030
  .fa-puzzle-piece:before {
1031
- content: "\f12e";
1032
  }
 
1033
  .fa-microphone:before {
1034
- content: "\f130";
1035
  }
 
1036
  .fa-microphone-slash:before {
1037
- content: "\f131";
1038
  }
 
1039
  .fa-shield:before {
1040
- content: "\f132";
1041
  }
 
1042
  .fa-calendar-o:before {
1043
- content: "\f133";
1044
  }
 
1045
  .fa-fire-extinguisher:before {
1046
- content: "\f134";
1047
  }
 
1048
  .fa-rocket:before {
1049
- content: "\f135";
1050
  }
 
1051
  .fa-maxcdn:before {
1052
- content: "\f136";
1053
  }
 
1054
  .fa-chevron-circle-left:before {
1055
- content: "\f137";
1056
  }
 
1057
  .fa-chevron-circle-right:before {
1058
- content: "\f138";
1059
  }
 
1060
  .fa-chevron-circle-up:before {
1061
- content: "\f139";
1062
  }
 
1063
  .fa-chevron-circle-down:before {
1064
- content: "\f13a";
1065
  }
 
1066
  .fa-html5:before {
1067
- content: "\f13b";
1068
  }
 
1069
  .fa-css3:before {
1070
- content: "\f13c";
1071
  }
 
1072
  .fa-anchor:before {
1073
- content: "\f13d";
1074
  }
 
1075
  .fa-unlock-alt:before {
1076
- content: "\f13e";
1077
  }
 
1078
  .fa-bullseye:before {
1079
- content: "\f140";
1080
  }
 
1081
  .fa-ellipsis-h:before {
1082
- content: "\f141";
1083
  }
 
1084
  .fa-ellipsis-v:before {
1085
- content: "\f142";
1086
  }
 
1087
  .fa-rss-square:before {
1088
- content: "\f143";
1089
  }
 
1090
  .fa-play-circle:before {
1091
- content: "\f144";
1092
  }
 
1093
  .fa-ticket:before {
1094
- content: "\f145";
1095
  }
 
1096
  .fa-minus-square:before {
1097
- content: "\f146";
1098
  }
 
1099
  .fa-minus-square-o:before {
1100
- content: "\f147";
1101
  }
 
1102
  .fa-level-up:before {
1103
- content: "\f148";
1104
  }
 
1105
  .fa-level-down:before {
1106
- content: "\f149";
1107
  }
 
1108
  .fa-check-square:before {
1109
- content: "\f14a";
1110
  }
 
1111
  .fa-pencil-square:before {
1112
- content: "\f14b";
1113
  }
 
1114
  .fa-external-link-square:before {
1115
- content: "\f14c";
1116
  }
 
1117
  .fa-share-square:before {
1118
- content: "\f14d";
1119
  }
 
1120
  .fa-compass:before {
1121
- content: "\f14e";
1122
  }
 
1123
  .fa-toggle-down:before,
1124
  .fa-caret-square-o-down:before {
1125
- content: "\f150";
1126
  }
 
1127
  .fa-toggle-up:before,
1128
  .fa-caret-square-o-up:before {
1129
- content: "\f151";
1130
  }
 
1131
  .fa-toggle-right:before,
1132
  .fa-caret-square-o-right:before {
1133
- content: "\f152";
1134
  }
 
1135
  .fa-euro:before,
1136
  .fa-eur:before {
1137
- content: "\f153";
1138
  }
 
1139
  .fa-gbp:before {
1140
- content: "\f154";
1141
  }
 
1142
  .fa-dollar:before,
1143
  .fa-usd:before {
1144
- content: "\f155";
1145
  }
 
1146
  .fa-rupee:before,
1147
  .fa-inr:before {
1148
- content: "\f156";
1149
  }
 
1150
  .fa-cny:before,
1151
  .fa-rmb:before,
1152
  .fa-yen:before,
1153
  .fa-jpy:before {
1154
- content: "\f157";
1155
  }
 
1156
  .fa-ruble:before,
1157
  .fa-rouble:before,
1158
  .fa-rub:before {
1159
- content: "\f158";
1160
  }
 
1161
  .fa-won:before,
1162
  .fa-krw:before {
1163
- content: "\f159";
1164
  }
 
1165
  .fa-bitcoin:before,
1166
  .fa-btc:before {
1167
- content: "\f15a";
1168
  }
 
1169
  .fa-file:before {
1170
- content: "\f15b";
1171
  }
 
1172
  .fa-file-text:before {
1173
- content: "\f15c";
1174
  }
 
1175
  .fa-sort-alpha-asc:before {
1176
- content: "\f15d";
1177
  }
 
1178
  .fa-sort-alpha-desc:before {
1179
- content: "\f15e";
1180
  }
 
1181
  .fa-sort-amount-asc:before {
1182
- content: "\f160";
1183
  }
 
1184
  .fa-sort-amount-desc:before {
1185
- content: "\f161";
1186
  }
 
1187
  .fa-sort-numeric-asc:before {
1188
- content: "\f162";
1189
  }
 
1190
  .fa-sort-numeric-desc:before {
1191
- content: "\f163";
1192
  }
 
1193
  .fa-thumbs-up:before {
1194
- content: "\f164";
1195
  }
 
1196
  .fa-thumbs-down:before {
1197
- content: "\f165";
1198
  }
 
1199
  .fa-youtube-square:before {
1200
- content: "\f166";
1201
  }
 
1202
  .fa-youtube:before {
1203
- content: "\f167";
1204
  }
 
1205
  .fa-xing:before {
1206
- content: "\f168";
1207
  }
 
1208
  .fa-xing-square:before {
1209
- content: "\f169";
1210
  }
 
1211
  .fa-youtube-play:before {
1212
- content: "\f16a";
1213
  }
 
1214
  .fa-dropbox:before {
1215
- content: "\f16b";
1216
  }
 
1217
  .fa-stack-overflow:before {
1218
- content: "\f16c";
1219
  }
 
1220
  .fa-instagram:before {
1221
- content: "\f16d";
1222
  }
 
1223
  .fa-flickr:before {
1224
- content: "\f16e";
1225
  }
 
1226
  .fa-adn:before {
1227
- content: "\f170";
1228
  }
 
1229
  .fa-bitbucket:before {
1230
- content: "\f171";
1231
  }
 
1232
  .fa-bitbucket-square:before {
1233
- content: "\f172";
1234
  }
 
1235
  .fa-tumblr:before {
1236
- content: "\f173";
1237
  }
 
1238
  .fa-tumblr-square:before {
1239
- content: "\f174";
1240
  }
 
1241
  .fa-long-arrow-down:before {
1242
- content: "\f175";
1243
  }
 
1244
  .fa-long-arrow-up:before {
1245
- content: "\f176";
1246
  }
 
1247
  .fa-long-arrow-left:before {
1248
- content: "\f177";
1249
  }
 
1250
  .fa-long-arrow-right:before {
1251
- content: "\f178";
1252
  }
 
1253
  .fa-apple:before {
1254
- content: "\f179";
1255
  }
 
1256
  .fa-windows:before {
1257
- content: "\f17a";
1258
  }
 
1259
  .fa-android:before {
1260
- content: "\f17b";
1261
  }
 
1262
  .fa-linux:before {
1263
- content: "\f17c";
1264
  }
 
1265
  .fa-dribbble:before {
1266
- content: "\f17d";
1267
  }
 
1268
  .fa-skype:before {
1269
- content: "\f17e";
1270
  }
 
1271
  .fa-foursquare:before {
1272
- content: "\f180";
1273
  }
 
1274
  .fa-trello:before {
1275
- content: "\f181";
1276
  }
 
1277
  .fa-female:before {
1278
- content: "\f182";
1279
  }
 
1280
  .fa-male:before {
1281
- content: "\f183";
1282
  }
 
1283
  .fa-gittip:before {
1284
- content: "\f184";
1285
  }
 
1286
  .fa-sun-o:before {
1287
- content: "\f185";
1288
  }
 
1289
  .fa-moon-o:before {
1290
- content: "\f186";
1291
  }
 
1292
  .fa-archive:before {
1293
- content: "\f187";
1294
  }
 
1295
  .fa-bug:before {
1296
- content: "\f188";
1297
  }
 
1298
  .fa-vk:before {
1299
- content: "\f189";
1300
  }
 
1301
  .fa-weibo:before {
1302
- content: "\f18a";
1303
  }
 
1304
  .fa-renren:before {
1305
- content: "\f18b";
1306
  }
 
1307
  .fa-pagelines:before {
1308
- content: "\f18c";
1309
  }
 
1310
  .fa-stack-exchange:before {
1311
- content: "\f18d";
1312
  }
 
1313
  .fa-arrow-circle-o-right:before {
1314
- content: "\f18e";
1315
  }
 
1316
  .fa-arrow-circle-o-left:before {
1317
- content: "\f190";
1318
  }
 
1319
  .fa-toggle-left:before,
1320
  .fa-caret-square-o-left:before {
1321
- content: "\f191";
1322
  }
 
1323
  .fa-dot-circle-o:before {
1324
- content: "\f192";
1325
  }
 
1326
  .fa-wheelchair:before {
1327
- content: "\f193";
1328
  }
 
1329
  .fa-vimeo-square:before {
1330
- content: "\f194";
1331
  }
 
1332
  .fa-turkish-lira:before,
1333
  .fa-try:before {
1334
- content: "\f195";
1335
  }
 
1336
  .fa-plus-square-o:before {
1337
- content: "\f196";
1338
  }
1339
 
1340
 
5
  /* FONT PATH
6
  * -------------------------- */
7
  @font-face {
8
+ font-family: 'FontAwesome';
9
+ src: url('../fonts/fontawesome-webfont.eot?v=4.0.3');
10
+ src: url('../fonts/fontawesome-webfont.eot?#iefix&v=4.0.3') format('embedded-opentype'), url('../fonts/fontawesome-webfont.woff?v=4.0.3') format('woff'), url('../fonts/fontawesome-webfont.ttf?v=4.0.3') format('truetype'), url('../fonts/fontawesome-webfont.svg?v=4.0.3#fontawesomeregular') format('svg');
11
+ font-weight: normal;
12
+ font-style: normal;
13
  }
14
+
15
  .fa {
16
+ display: inline-block;
17
+ font-family: FontAwesome;
18
+ font-style: normal;
19
+ font-weight: normal;
20
+ line-height: 1;
21
+ -webkit-font-smoothing: antialiased;
22
+ -moz-osx-font-smoothing: grayscale;
23
  }
24
+
25
  /* makes the font 33% larger relative to the icon container */
26
  .fa-lg {
27
+ font-size: 1.3333333333333333em;
28
+ line-height: 0.75em;
29
+ vertical-align: -15%;
30
  }
31
+
32
  .fa-2x {
33
+ font-size: 2em;
34
  }
35
+
36
  .fa-3x {
37
+ font-size: 3em;
38
  }
39
+
40
  .fa-4x {
41
+ font-size: 4em;
42
  }
43
+
44
  .fa-5x {
45
+ font-size: 5em;
46
  }
47
+
48
  .fa-fw {
49
+ width: 1.2857142857142858em;
50
+ text-align: center;
51
  }
52
+
53
  .fa-ul {
54
+ padding-left: 0;
55
+ margin-left: 2.142857142857143em;
56
+ list-style-type: none;
57
  }
58
+
59
  .fa-ul > li {
60
+ position: relative;
61
  }
62
+
63
  .fa-li {
64
+ position: absolute;
65
+ left: -2.142857142857143em;
66
+ width: 2.142857142857143em;
67
+ top: 0.14285714285714285em;
68
+ text-align: center;
69
  }
70
+
71
  .fa-li.fa-lg {
72
+ left: -1.8571428571428572em;
73
  }
74
+
75
  .fa-border {
76
+ padding: .2em .25em .15em;
77
+ border: solid 0.08em #eeeeee;
78
+ border-radius: .1em;
79
  }
80
+
81
  .pull-right {
82
+ float: right;
83
  }
84
+
85
  .pull-left {
86
+ float: left;
87
  }
88
+
89
  .fa.pull-left {
90
+ margin-right: .3em;
91
  }
92
+
93
  .fa.pull-right {
94
+ margin-left: .3em;
95
  }
96
+
97
  .fa-spin {
98
+ -webkit-animation: spin 2s infinite linear;
99
+ -moz-animation: spin 2s infinite linear;
100
+ -o-animation: spin 2s infinite linear;
101
+ animation: spin 2s infinite linear;
102
  }
103
+
104
  @-moz-keyframes spin {
105
+ 0% {
106
+ -moz-transform: rotate(0deg);
107
+ }
108
+ 100% {
109
+ -moz-transform: rotate(359deg);
110
+ }
111
  }
112
+
113
  @-webkit-keyframes spin {
114
+ 0% {
115
+ -webkit-transform: rotate(0deg);
116
+ }
117
+ 100% {
118
+ -webkit-transform: rotate(359deg);
119
+ }
120
  }
121
+
122
  @-o-keyframes spin {
123
+ 0% {
124
+ -o-transform: rotate(0deg);
125
+ }
126
+ 100% {
127
+ -o-transform: rotate(359deg);
128
+ }
129
  }
130
+
131
  @-ms-keyframes spin {
132
+ 0% {
133
+ -ms-transform: rotate(0deg);
134
+ }
135
+ 100% {
136
+ -ms-transform: rotate(359deg);
137
+ }
138
  }
139
+
140
  @keyframes spin {
141
+ 0% {
142
+ transform: rotate(0deg);
143
+ }
144
+ 100% {
145
+ transform: rotate(359deg);
146
+ }
147
  }
148
+
149
  .fa-rotate-90 {
150
+ filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
151
+ -webkit-transform: rotate(90deg);
152
+ -moz-transform: rotate(90deg);
153
+ -ms-transform: rotate(90deg);
154
+ -o-transform: rotate(90deg);
155
+ transform: rotate(90deg);
156
  }
157
+
158
  .fa-rotate-180 {
159
+ filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);
160
+ -webkit-transform: rotate(180deg);
161
+ -moz-transform: rotate(180deg);
162
+ -ms-transform: rotate(180deg);
163
+ -o-transform: rotate(180deg);
164
+ transform: rotate(180deg);
165
  }
166
+
167
  .fa-rotate-270 {
168
+ filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
169
+ -webkit-transform: rotate(270deg);
170
+ -moz-transform: rotate(270deg);
171
+ -ms-transform: rotate(270deg);
172
+ -o-transform: rotate(270deg);
173
+ transform: rotate(270deg);
174
  }
175
+
176
  .fa-flip-horizontal {
177
+ filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);
178
+ -webkit-transform: scale(-1, 1);
179
+ -moz-transform: scale(-1, 1);
180
+ -ms-transform: scale(-1, 1);
181
+ -o-transform: scale(-1, 1);
182
+ transform: scale(-1, 1);
183
  }
184
+
185
  .fa-flip-vertical {
186
+ filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);
187
+ -webkit-transform: scale(1, -1);
188
+ -moz-transform: scale(1, -1);
189
+ -ms-transform: scale(1, -1);
190
+ -o-transform: scale(1, -1);
191
+ transform: scale(1, -1);
192
  }
193
+
194
  .fa-stack {
195
+ position: relative;
196
+ display: inline-block;
197
+ width: 2em;
198
+ height: 2em;
199
+ line-height: 2em;
200
+ vertical-align: middle;
201
  }
202
+
203
  .fa-stack-1x,
204
  .fa-stack-2x {
205
+ position: absolute;
206
+ left: 0;
207
+ width: 100%;
208
+ text-align: center;
209
  }
210
+
211
  .fa-stack-1x {
212
+ line-height: inherit;
213
  }
214
+
215
  .fa-stack-2x {
216
+ font-size: 2em;
217
  }
218
+
219
  .fa-inverse {
220
+ color: #ffffff;
221
  }
222
+
223
  /* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
224
  readers do not read off random characters that represent icons */
225
  .fa-glass:before {
226
+ content: "\f000";
227
  }
228
+
229
  .fa-music:before {
230
+ content: "\f001";
231
  }
232
+
233
  .fa-search:before {
234
+ content: "\f002";
235
  }
236
+
237
  .fa-envelope-o:before {
238
+ content: "\f003";
239
  }
240
+
241
  .fa-heart:before {
242
+ content: "\f004";
243
  }
244
+
245
  .fa-star:before {
246
+ content: "\f005";
247
  }
248
+
249
  .fa-star-o:before {
250
+ content: "\f006";
251
  }
252
+
253
  .fa-user:before {
254
+ content: "\f007";
255
  }
256
+
257
  .fa-film:before {
258
+ content: "\f008";
259
  }
260
+
261
  .fa-th-large:before {
262
+ content: "\f009";
263
  }
264
+
265
  .fa-th:before {
266
+ content: "\f00a";
267
  }
268
+
269
  .fa-th-list:before {
270
+ content: "\f00b";
271
  }
272
+
273
  .fa-check:before {
274
+ content: "\f00c";
275
  }
276
+
277
  .fa-times:before {
278
+ content: "\f00d";
279
  }
280
+
281
  .fa-search-plus:before {
282
+ content: "\f00e";
283
  }
284
+
285
  .fa-search-minus:before {
286
+ content: "\f010";
287
  }
288
+
289
  .fa-power-off:before {
290
+ content: "\f011";
291
  }
292
+
293
  .fa-signal:before {
294
+ content: "\f012";
295
  }
296
+
297
  .fa-gear:before,
298
  .fa-cog:before {
299
+ content: "\f013";
300
  }
301
+
302
  .fa-trash-o:before {
303
+ content: "\f014";
304
  }
305
+
306
  .fa-home:before {
307
+ content: "\f015";
308
  }
309
+
310
  .fa-file-o:before {
311
+ content: "\f016";
312
  }
313
+
314
  .fa-clock-o:before {
315
+ content: "\f017";
316
  }
317
+
318
  .fa-road:before {
319
+ content: "\f018";
320
  }
321
+
322
  .fa-download:before {
323
+ content: "\f019";
324
  }
325
+
326
  .fa-arrow-circle-o-down:before {
327
+ content: "\f01a";
328
  }
329
+
330
  .fa-arrow-circle-o-up:before {
331
+ content: "\f01b";
332
  }
333
+
334
  .fa-inbox:before {
335
+ content: "\f01c";
336
  }
337
+
338
  .fa-play-circle-o:before {
339
+ content: "\f01d";
340
  }
341
+
342
  .fa-rotate-right:before,
343
  .fa-repeat:before {
344
+ content: "\f01e";
345
  }
346
+
347
  .fa-refresh:before {
348
+ content: "\f021";
349
  }
350
+
351
  .fa-list-alt:before {
352
+ content: "\f022";
353
  }
354
+
355
  .fa-lock:before {
356
+ content: "\f023";
357
  }
358
+
359
  .fa-flag:before {
360
+ content: "\f024";
361
  }
362
+
363
  .fa-headphones:before {
364
+ content: "\f025";
365
  }
366
+
367
  .fa-volume-off:before {
368
+ content: "\f026";
369
  }
370
+
371
  .fa-volume-down:before {
372
+ content: "\f027";
373
  }
374
+
375
  .fa-volume-up:before {
376
+ content: "\f028";
377
  }
378
+
379
  .fa-qrcode:before {
380
+ content: "\f029";
381
  }
382
+
383
  .fa-barcode:before {
384
+ content: "\f02a";
385
  }
386
+
387
  .fa-tag:before {
388
+ content: "\f02b";
389
  }
390
+
391
  .fa-tags:before {
392
+ content: "\f02c";
393
  }
394
+
395
  .fa-book:before {
396
+ content: "\f02d";
397
  }
398
+
399
  .fa-bookmark:before {
400
+ content: "\f02e";
401
  }
402
+
403
  .fa-print:before {
404
+ content: "\f02f";
405
  }
406
+
407
  .fa-camera:before {
408
+ content: "\f030";
409
  }
410
+
411
  .fa-font:before {
412
+ content: "\f031";
413
  }
414
+
415
  .fa-bold:before {
416
+ content: "\f032";
417
  }
418
+
419
  .fa-italic:before {
420
+ content: "\f033";
421
  }
422
+
423
  .fa-text-height:before {
424
+ content: "\f034";
425
  }
426
+
427
  .fa-text-width:before {
428
+ content: "\f035";
429
  }
430
+
431
  .fa-align-left:before {
432
+ content: "\f036";
433
  }
434
+
435
  .fa-align-center:before {
436
+ content: "\f037";
437
  }
438
+
439
  .fa-align-right:before {
440
+ content: "\f038";
441
  }
442
+
443
  .fa-align-justify:before {
444
+ content: "\f039";
445
  }
446
+
447
  .fa-list:before {
448
+ content: "\f03a";
449
  }
450
+
451
  .fa-dedent:before,
452
  .fa-outdent:before {
453
+ content: "\f03b";
454
  }
455
+
456
  .fa-indent:before {
457
+ content: "\f03c";
458
  }
459
+
460
  .fa-video-camera:before {
461
+ content: "\f03d";
462
  }
463
+
464
  .fa-picture-o:before {
465
+ content: "\f03e";
466
  }
467
+
468
  .fa-pencil:before {
469
+ content: "\f040";
470
  }
471
+
472
  .fa-map-marker:before {
473
+ content: "\f041";
474
  }
475
+
476
  .fa-adjust:before {
477
+ content: "\f042";
478
  }
479
+
480
  .fa-tint:before {
481
+ content: "\f043";
482
  }
483
+
484
  .fa-edit:before,
485
  .fa-pencil-square-o:before {
486
+ content: "\f044";
487
  }
488
+
489
  .fa-share-square-o:before {
490
+ content: "\f045";
491
  }
492
+
493
  .fa-check-square-o:before {
494
+ content: "\f046";
495
  }
496
+
497
  .fa-arrows:before {
498
+ content: "\f047";
499
  }
500
+
501
  .fa-step-backward:before {
502
+ content: "\f048";
503
  }
504
+
505
  .fa-fast-backward:before {
506
+ content: "\f049";
507
  }
508
+
509
  .fa-backward:before {
510
+ content: "\f04a";
511
  }
512
+
513
  .fa-play:before {
514
+ content: "\f04b";
515
  }
516
+
517
  .fa-pause:before {
518
+ content: "\f04c";
519
  }
520
+
521
  .fa-stop:before {
522
+ content: "\f04d";
523
  }
524
+
525
  .fa-forward:before {
526
+ content: "\f04e";
527
  }
528
+
529
  .fa-fast-forward:before {
530
+ content: "\f050";
531
  }
532
+
533
  .fa-step-forward:before {
534
+ content: "\f051";
535
  }
536
+
537
  .fa-eject:before {
538
+ content: "\f052";
539
  }
540
+
541
  .fa-chevron-left:before {
542
+ content: "\f053";
543
  }
544
+
545
  .fa-chevron-right:before {
546
+ content: "\f054";
547
  }
548
+
549
  .fa-plus-circle:before {
550
+ content: "\f055";
551
  }
552
+
553
  .fa-minus-circle:before {
554
+ content: "\f056";
555
  }
556
+
557
  .fa-times-circle:before {
558
+ content: "\f057";
559
  }
560
+
561
  .fa-check-circle:before {
562
+ content: "\f058";
563
  }
564
+
565
  .fa-question-circle:before {
566
+ content: "\f059";
567
  }
568
+
569
  .fa-info-circle:before {
570
+ content: "\f05a";
571
  }
572
+
573
  .fa-crosshairs:before {
574
+ content: "\f05b";
575
  }
576
+
577
  .fa-times-circle-o:before {
578
+ content: "\f05c";
579
  }
580
+
581
  .fa-check-circle-o:before {
582
+ content: "\f05d";
583
  }
584
+
585
  .fa-ban:before {
586
+ content: "\f05e";
587
  }
588
+
589
  .fa-arrow-left:before {
590
+ content: "\f060";
591
  }
592
+
593
  .fa-arrow-right:before {
594
+ content: "\f061";
595
  }
596
+
597
  .fa-arrow-up:before {
598
+ content: "\f062";
599
  }
600
+
601
  .fa-arrow-down:before {
602
+ content: "\f063";
603
  }
604
+
605
  .fa-mail-forward:before,
606
  .fa-share:before {
607
+ content: "\f064";
608
  }
609
+
610
  .fa-expand:before {
611
+ content: "\f065";
612
  }
613
+
614
  .fa-compress:before {
615
+ content: "\f066";
616
  }
617
+
618
  .fa-plus:before {
619
+ content: "\f067";
620
  }
621
+
622
  .fa-minus:before {
623
+ content: "\f068";
624
  }
625
+
626
  .fa-asterisk:before {
627
+ content: "\f069";
628
  }
629
+
630
  .fa-exclamation-circle:before {
631
+ content: "\f06a";
632
  }
633
+
634
  .fa-gift:before {
635
+ content: "\f06b";
636
  }
637
+
638
  .fa-leaf:before {
639
+ content: "\f06c";
640
  }
641
+
642
  .fa-fire:before {
643
+ content: "\f06d";
644
  }
645
+
646
  .fa-eye:before {
647
+ content: "\f06e";
648
  }
649
+
650
  .fa-eye-slash:before {
651
+ content: "\f070";
652
  }
653
+
654
  .fa-warning:before,
655
  .fa-exclamation-triangle:before {
656
+ content: "\f071";
657
  }
658
+
659
  .fa-plane:before {
660
+ content: "\f072";
661
  }
662
+
663
  .fa-calendar:before {
664
+ content: "\f073";
665
  }
666
+
667
  .fa-random:before {
668
+ content: "\f074";
669
  }
670
+
671
  .fa-comment:before {
672
+ content: "\f075";
673
  }
674
+
675
  .fa-magnet:before {
676
+ content: "\f076";
677
  }
678
+
679
  .fa-chevron-up:before {
680
+ content: "\f077";
681
  }
682
+
683
  .fa-chevron-down:before {
684
+ content: "\f078";
685
  }
686
+
687
  .fa-retweet:before {
688
+ content: "\f079";
689
  }
690
+
691
  .fa-shopping-cart:before {
692
+ content: "\f07a";
693
  }
694
+
695
  .fa-folder:before {
696
+ content: "\f07b";
697
  }
698
+
699
  .fa-folder-open:before {
700
+ content: "\f07c";
701
  }
702
+
703
  .fa-arrows-v:before {
704
+ content: "\f07d";
705
  }
706
+
707
  .fa-arrows-h:before {
708
+ content: "\f07e";
709
  }
710
+
711
  .fa-bar-chart-o:before {
712
+ content: "\f080";
713
  }
714
+
715
  .fa-twitter-square:before {
716
+ content: "\f081";
717
  }
718
+
719
  .fa-facebook-square:before {
720
+ content: "\f082";
721
  }
722
+
723
  .fa-camera-retro:before {
724
+ content: "\f083";
725
  }
726
+
727
  .fa-key:before {
728
+ content: "\f084";
729
  }
730
+
731
  .fa-gears:before,
732
  .fa-cogs:before {
733
+ content: "\f085";
734
  }
735
+
736
  .fa-comments:before {
737
+ content: "\f086";
738
  }
739
+
740
  .fa-thumbs-o-up:before {
741
+ content: "\f087";
742
  }
743
+
744
  .fa-thumbs-o-down:before {
745
+ content: "\f088";
746
  }
747
+
748
  .fa-star-half:before {
749
+ content: "\f089";
750
  }
751
+
752
  .fa-heart-o:before {
753
+ content: "\f08a";
754
  }
755
+
756
  .fa-sign-out:before {
757
+ content: "\f08b";
758
  }
759
+
760
  .fa-linkedin-square:before {
761
+ content: "\f08c";
762
  }
763
+
764
  .fa-thumb-tack:before {
765
+ content: "\f08d";
766
  }
767
+
768
  .fa-external-link:before {
769
+ content: "\f08e";
770
  }
771
+
772
  .fa-sign-in:before {
773
+ content: "\f090";
774
  }
775
+
776
  .fa-trophy:before {
777
+ content: "\f091";
778
  }
779
+
780
  .fa-github-square:before {
781
+ content: "\f092";
782
  }
783
+
784
  .fa-upload:before {
785
+ content: "\f093";
786
  }
787
+
788
  .fa-lemon-o:before {
789
+ content: "\f094";
790
  }
791
+
792
  .fa-phone:before {
793
+ content: "\f095";
794
  }
795
+
796
  .fa-square-o:before {
797
+ content: "\f096";
798
  }
799
+
800
  .fa-bookmark-o:before {
801
+ content: "\f097";
802
  }
803
+
804
  .fa-phone-square:before {
805
+ content: "\f098";
806
  }
807
+
808
  .fa-twitter:before {
809
+ content: "\f099";
810
  }
811
+
812
  .fa-facebook:before {
813
+ content: "\f09a";
814
  }
815
+
816
  .fa-github:before {
817
+ content: "\f09b";
818
  }
819
+
820
  .fa-unlock:before {
821
+ content: "\f09c";
822
  }
823
+
824
  .fa-credit-card:before {
825
+ content: "\f09d";
826
  }
827
+
828
  .fa-rss:before {
829
+ content: "\f09e";
830
  }
831
+
832
  .fa-hdd-o:before {
833
+ content: "\f0a0";
834
  }
835
+
836
  .fa-bullhorn:before {
837
+ content: "\f0a1";
838
  }
839
+
840
  .fa-bell:before {
841
+ content: "\f0f3";
842
  }
843
+
844
  .fa-certificate:before {
845
+ content: "\f0a3";
846
  }
847
+
848
  .fa-hand-o-right:before {
849
+ content: "\f0a4";
850
  }
851
+
852
  .fa-hand-o-left:before {
853
+ content: "\f0a5";
854
  }
855
+
856
  .fa-hand-o-up:before {
857
+ content: "\f0a6";
858
  }
859
+
860
  .fa-hand-o-down:before {
861
+ content: "\f0a7";
862
  }
863
+
864
  .fa-arrow-circle-left:before {
865
+ content: "\f0a8";
866
  }
867
+
868
  .fa-arrow-circle-right:before {
869
+ content: "\f0a9";
870
  }
871
+
872
  .fa-arrow-circle-up:before {
873
+ content: "\f0aa";
874
  }
875
+
876
  .fa-arrow-circle-down:before {
877
+ content: "\f0ab";
878
  }
879
+
880
  .fa-globe:before {
881
+ content: "\f0ac";
882
  }
883
+
884
  .fa-wrench:before {
885
+ content: "\f0ad";
886
  }
887
+
888
  .fa-tasks:before {
889
+ content: "\f0ae";
890
  }
891
+
892
  .fa-filter:before {
893
+ content: "\f0b0";
894
  }
895
+
896
  .fa-briefcase:before {
897
+ content: "\f0b1";
898
  }
899
+
900
  .fa-arrows-alt:before {
901
+ content: "\f0b2";
902
  }
903
+
904
  .fa-group:before,
905
  .fa-users:before {
906
+ content: "\f0c0";
907
  }
908
+
909
  .fa-chain:before,
910
  .fa-link:before {
911
+ content: "\f0c1";
912
  }
913
+
914
  .fa-cloud:before {
915
+ content: "\f0c2";
916
  }
917
+
918
  .fa-flask:before {
919
+ content: "\f0c3";
920
  }
921
+
922
  .fa-cut:before,
923
  .fa-scissors:before {
924
+ content: "\f0c4";
925
  }
926
+
927
  .fa-copy:before,
928
  .fa-files-o:before {
929
+ content: "\f0c5";
930
  }
931
+
932
  .fa-paperclip:before {
933
+ content: "\f0c6";
934
  }
935
+
936
  .fa-save:before,
937
  .fa-floppy-o:before {
938
+ content: "\f0c7";
939
  }
940
+
941
  .fa-square:before {
942
+ content: "\f0c8";
943
  }
944
+
945
  .fa-bars:before {
946
+ content: "\f0c9";
947
  }
948
+
949
  .fa-list-ul:before {
950
+ content: "\f0ca";
951
  }
952
+
953
  .fa-list-ol:before {
954
+ content: "\f0cb";
955
  }
956
+
957
  .fa-strikethrough:before {
958
+ content: "\f0cc";
959
  }
960
+
961
  .fa-underline:before {
962
+ content: "\f0cd";
963
  }
964
+
965
  .fa-table:before {
966
+ content: "\f0ce";
967
  }
968
+
969
  .fa-magic:before {
970
+ content: "\f0d0";
971
  }
972
+
973
  .fa-truck:before {
974
+ content: "\f0d1";
975
  }
976
+
977
  .fa-pinterest:before {
978
+ content: "\f0d2";
979
  }
980
+
981
  .fa-pinterest-square:before {
982
+ content: "\f0d3";
983
  }
984
+
985
  .fa-google-plus-square:before {
986
+ content: "\f0d4";
987
  }
988
+
989
  .fa-google-plus:before {
990
+ content: "\f0d5";
991
  }
992
+
993
  .fa-money:before {
994
+ content: "\f0d6";
995
  }
996
+
997
  .fa-caret-down:before {
998
+ content: "\f0d7";
999
  }
1000
+
1001
  .fa-caret-up:before {
1002
+ content: "\f0d8";
1003
  }
1004
+
1005
  .fa-caret-left:before {
1006
+ content: "\f0d9";
1007
  }
1008
+
1009
  .fa-caret-right:before {
1010
+ content: "\f0da";
1011
  }
1012
+
1013
  .fa-columns:before {
1014
+ content: "\f0db";
1015
  }
1016
+
1017
  .fa-unsorted:before,
1018
  .fa-sort:before {
1019
+ content: "\f0dc";
1020
  }
1021
+
1022
  .fa-sort-down:before,
1023
  .fa-sort-asc:before {
1024
+ content: "\f0dd";
1025
  }
1026
+
1027
  .fa-sort-up:before,
1028
  .fa-sort-desc:before {
1029
+ content: "\f0de";
1030
  }
1031
+
1032
  .fa-envelope:before {
1033
+ content: "\f0e0";
1034
  }
1035
+
1036
  .fa-linkedin:before {
1037
+ content: "\f0e1";
1038
  }
1039
+
1040
  .fa-rotate-left:before,
1041
  .fa-undo:before {
1042
+ content: "\f0e2";
1043
  }
1044
+
1045
  .fa-legal:before,
1046
  .fa-gavel:before {
1047
+ content: "\f0e3";
1048
  }
1049
+
1050
  .fa-dashboard:before,
1051
  .fa-tachometer:before {
1052
+ content: "\f0e4";
1053
  }
1054
+
1055
  .fa-comment-o:before {
1056
+ content: "\f0e5";
1057
  }
1058
+
1059
  .fa-comments-o:before {
1060
+ content: "\f0e6";
1061
  }
1062
+
1063
  .fa-flash:before,
1064
  .fa-bolt:before {
1065
+ content: "\f0e7";
1066
  }
1067
+
1068
  .fa-sitemap:before {
1069
+ content: "\f0e8";
1070
  }
1071
+
1072
  .fa-umbrella:before {
1073
+ content: "\f0e9";
1074
  }
1075
+
1076
  .fa-paste:before,
1077
  .fa-clipboard:before {
1078
+ content: "\f0ea";
1079
  }
1080
+
1081
  .fa-lightbulb-o:before {
1082
+ content: "\f0eb";
1083
  }
1084
+
1085
  .fa-exchange:before {
1086
+ content: "\f0ec";
1087
  }
1088
+
1089
  .fa-cloud-download:before {
1090
+ content: "\f0ed";
1091
  }
1092
+
1093
  .fa-cloud-upload:before {
1094
+ content: "\f0ee";
1095
  }
1096
+
1097
  .fa-user-md:before {
1098
+ content: "\f0f0";
1099
  }
1100
+
1101
  .fa-stethoscope:before {
1102
+ content: "\f0f1";
1103
  }
1104
+
1105
  .fa-suitcase:before {
1106
+ content: "\f0f2";
1107
  }
1108
+
1109
  .fa-bell-o:before {
1110
+ content: "\f0a2";
1111
  }
1112
+
1113
  .fa-coffee:before {
1114
+ content: "\f0f4";
1115
  }
1116
+
1117
  .fa-cutlery:before {
1118
+ content: "\f0f5";
1119
  }
1120
+
1121
  .fa-file-text-o:before {
1122
+ content: "\f0f6";
1123
  }
1124
+
1125
  .fa-building-o:before {
1126
+ content: "\f0f7";
1127
  }
1128
+
1129
  .fa-hospital-o:before {
1130
+ content: "\f0f8";
1131
  }
1132
+
1133
  .fa-ambulance:before {
1134
+ content: "\f0f9";
1135
  }
1136
+
1137
  .fa-medkit:before {
1138
+ content: "\f0fa";
1139
  }
1140
+
1141
  .fa-fighter-jet:before {
1142
+ content: "\f0fb";
1143
  }
1144
+
1145
  .fa-beer:before {
1146
+ content: "\f0fc";
1147
  }
1148
+
1149
  .fa-h-square:before {
1150
+ content: "\f0fd";
1151
  }
1152
+
1153
  .fa-plus-square:before {
1154
+ content: "\f0fe";
1155
  }
1156
+
1157
  .fa-angle-double-left:before {
1158
+ content: "\f100";
1159
  }
1160
+
1161
  .fa-angle-double-right:before {
1162
+ content: "\f101";
1163
  }
1164
+
1165
  .fa-angle-double-up:before {
1166
+ content: "\f102";
1167
  }
1168
+
1169
  .fa-angle-double-down:before {
1170
+ content: "\f103";
1171
  }
1172
+
1173
  .fa-angle-left:before {
1174
+ content: "\f104";
1175
  }
1176
+
1177
  .fa-angle-right:before {
1178
+ content: "\f105";
1179
  }
1180
+
1181
  .fa-angle-up:before {
1182
+ content: "\f106";
1183
  }
1184
+
1185
  .fa-angle-down:before {
1186
+ content: "\f107";
1187
  }
1188
+
1189
  .fa-desktop:before {
1190
+ content: "\f108";
1191
  }
1192
+
1193
  .fa-laptop:before {
1194
+ content: "\f109";
1195
  }
1196
+
1197
  .fa-tablet:before {
1198
+ content: "\f10a";
1199
  }
1200
+
1201
  .fa-mobile-phone:before,
1202
  .fa-mobile:before {
1203
+ content: "\f10b";
1204
  }
1205
+
1206
  .fa-circle-o:before {
1207
+ content: "\f10c";
1208
  }
1209
+
1210
  .fa-quote-left:before {
1211
+ content: "\f10d";
1212
  }
1213
+
1214
  .fa-quote-right:before {
1215
+ content: "\f10e";
1216
  }
1217
+
1218
  .fa-spinner:before {
1219
+ content: "\f110";
1220
  }
1221
+
1222
  .fa-circle:before {
1223
+ content: "\f111";
1224
  }
1225
+
1226
  .fa-mail-reply:before,
1227
  .fa-reply:before {
1228
+ content: "\f112";
1229
  }
1230
+
1231
  .fa-github-alt:before {
1232
+ content: "\f113";
1233
  }
1234
+
1235
  .fa-folder-o:before {
1236
+ content: "\f114";
1237
  }
1238
+
1239
  .fa-folder-open-o:before {
1240
+ content: "\f115";
1241
  }
1242
+
1243
  .fa-smile-o:before {
1244
+ content: "\f118";
1245
  }
1246
+
1247
  .fa-frown-o:before {
1248
+ content: "\f119";
1249
  }
1250
+
1251
  .fa-meh-o:before {
1252
+ content: "\f11a";
1253
  }
1254
+
1255
  .fa-gamepad:before {
1256
+ content: "\f11b";
1257
  }
1258
+
1259
  .fa-keyboard-o:before {
1260
+ content: "\f11c";
1261
  }
1262
+
1263
  .fa-flag-o:before {
1264
+ content: "\f11d";
1265
  }
1266
+
1267
  .fa-flag-checkered:before {
1268
+ content: "\f11e";
1269
  }
1270
+
1271
  .fa-terminal:before {
1272
+ content: "\f120";
1273
  }
1274
+
1275
  .fa-code:before {
1276
+ content: "\f121";
1277
  }
1278
+
1279
  .fa-reply-all:before {
1280
+ content: "\f122";
1281
  }
1282
+
1283
  .fa-mail-reply-all:before {
1284
+ content: "\f122";
1285
  }
1286
+
1287
  .fa-star-half-empty:before,
1288
  .fa-star-half-full:before,
1289
  .fa-star-half-o:before {
1290
+ content: "\f123";
1291
  }
1292
+
1293
  .fa-location-arrow:before {
1294
+ content: "\f124";
1295
  }
1296
+
1297
  .fa-crop:before {
1298
+ content: "\f125";
1299
  }
1300
+
1301
  .fa-code-fork:before {
1302
+ content: "\f126";
1303
  }
1304
+
1305
  .fa-unlink:before,
1306
  .fa-chain-broken:before {
1307
+ content: "\f127";
1308
  }
1309
+
1310
  .fa-question:before {
1311
+ content: "\f128";
1312
  }
1313
+
1314
  .fa-info:before {
1315
+ content: "\f129";
1316
  }
1317
+
1318
  .fa-exclamation:before {
1319
+ content: "\f12a";
1320
  }
1321
+
1322
  .fa-superscript:before {
1323
+ content: "\f12b";
1324
  }
1325
+
1326
  .fa-subscript:before {
1327
+ content: "\f12c";
1328
  }
1329
+
1330
  .fa-eraser:before {
1331
+ content: "\f12d";
1332
  }
1333
+
1334
  .fa-puzzle-piece:before {
1335
+ content: "\f12e";
1336
  }
1337
+
1338
  .fa-microphone:before {
1339
+ content: "\f130";
1340
  }
1341
+
1342
  .fa-microphone-slash:before {
1343
+ content: "\f131";
1344
  }
1345
+
1346
  .fa-shield:before {
1347
+ content: "\f132";
1348
  }
1349
+
1350
  .fa-calendar-o:before {
1351
+ content: "\f133";
1352
  }
1353
+
1354
  .fa-fire-extinguisher:before {
1355
+ content: "\f134";
1356
  }
1357
+
1358
  .fa-rocket:before {
1359
+ content: "\f135";
1360
  }
1361
+
1362
  .fa-maxcdn:before {
1363
+ content: "\f136";
1364
  }
1365
+
1366
  .fa-chevron-circle-left:before {
1367
+ content: "\f137";
1368
  }
1369
+
1370
  .fa-chevron-circle-right:before {
1371
+ content: "\f138";
1372
  }
1373
+
1374
  .fa-chevron-circle-up:before {
1375
+ content: "\f139";
1376
  }
1377
+
1378
  .fa-chevron-circle-down:before {
1379
+ content: "\f13a";
1380
  }
1381
+
1382
  .fa-html5:before {
1383
+ content: "\f13b";
1384
  }
1385
+
1386
  .fa-css3:before {
1387
+ content: "\f13c";
1388
  }
1389
+
1390
  .fa-anchor:before {
1391
+ content: "\f13d";
1392
  }
1393
+
1394
  .fa-unlock-alt:before {
1395
+ content: "\f13e";
1396
  }
1397
+
1398
  .fa-bullseye:before {
1399
+ content: "\f140";
1400
  }
1401
+
1402
  .fa-ellipsis-h:before {
1403
+ content: "\f141";
1404
  }
1405
+
1406
  .fa-ellipsis-v:before {
1407
+ content: "\f142";
1408
  }
1409
+
1410
  .fa-rss-square:before {
1411
+ content: "\f143";
1412
  }
1413
+
1414
  .fa-play-circle:before {
1415
+ content: "\f144";
1416
  }
1417
+
1418
  .fa-ticket:before {
1419
+ content: "\f145";
1420
  }
1421
+
1422
  .fa-minus-square:before {
1423
+ content: "\f146";
1424
  }
1425
+
1426
  .fa-minus-square-o:before {
1427
+ content: "\f147";
1428
  }
1429
+
1430
  .fa-level-up:before {
1431
+ content: "\f148";
1432
  }
1433
+
1434
  .fa-level-down:before {
1435
+ content: "\f149";
1436
  }
1437
+
1438
  .fa-check-square:before {
1439
+ content: "\f14a";
1440
  }
1441
+
1442
  .fa-pencil-square:before {
1443
+ content: "\f14b";
1444
  }
1445
+
1446
  .fa-external-link-square:before {
1447
+ content: "\f14c";
1448
  }
1449
+
1450
  .fa-share-square:before {
1451
+ content: "\f14d";
1452
  }
1453
+
1454
  .fa-compass:before {
1455
+ content: "\f14e";
1456
  }
1457
+
1458
  .fa-toggle-down:before,
1459
  .fa-caret-square-o-down:before {
1460
+ content: "\f150";
1461
  }
1462
+
1463
  .fa-toggle-up:before,
1464
  .fa-caret-square-o-up:before {
1465
+ content: "\f151";
1466
  }
1467
+
1468
  .fa-toggle-right:before,
1469
  .fa-caret-square-o-right:before {
1470
+ content: "\f152";
1471
  }
1472
+
1473
  .fa-euro:before,
1474
  .fa-eur:before {
1475
+ content: "\f153";
1476
  }
1477
+
1478
  .fa-gbp:before {
1479
+ content: "\f154";
1480
  }
1481
+
1482
  .fa-dollar:before,
1483
  .fa-usd:before {
1484
+ content: "\f155";
1485
  }
1486
+
1487
  .fa-rupee:before,
1488
  .fa-inr:before {
1489
+ content: "\f156";
1490
  }
1491
+
1492
  .fa-cny:before,
1493
  .fa-rmb:before,
1494
  .fa-yen:before,
1495
  .fa-jpy:before {
1496
+ content: "\f157";
1497
  }
1498
+
1499
  .fa-ruble:before,
1500
  .fa-rouble:before,
1501
  .fa-rub:before {
1502
+ content: "\f158";
1503
  }
1504
+
1505
  .fa-won:before,
1506
  .fa-krw:before {
1507
+ content: "\f159";
1508
  }
1509
+
1510
  .fa-bitcoin:before,
1511
  .fa-btc:before {
1512
+ content: "\f15a";
1513
  }
1514
+
1515
  .fa-file:before {
1516
+ content: "\f15b";
1517
  }
1518
+
1519
  .fa-file-text:before {
1520
+ content: "\f15c";
1521
  }
1522
+
1523
  .fa-sort-alpha-asc:before {
1524
+ content: "\f15d";
1525
  }
1526
+
1527
  .fa-sort-alpha-desc:before {
1528
+ content: "\f15e";
1529
  }
1530
+
1531
  .fa-sort-amount-asc:before {
1532
+ content: "\f160";
1533
  }
1534
+
1535
  .fa-sort-amount-desc:before {
1536
+ content: "\f161";
1537
  }
1538
+
1539
  .fa-sort-numeric-asc:before {
1540
+ content: "\f162";
1541
  }
1542
+
1543
  .fa-sort-numeric-desc:before {
1544
+ content: "\f163";
1545
  }
1546
+
1547
  .fa-thumbs-up:before {
1548
+ content: "\f164";
1549
  }
1550
+
1551
  .fa-thumbs-down:before {
1552
+ content: "\f165";
1553
  }
1554
+
1555
  .fa-youtube-square:before {
1556
+ content: "\f166";
1557
  }
1558
+
1559
  .fa-youtube:before {
1560
+ content: "\f167";
1561
  }
1562
+
1563
  .fa-xing:before {
1564
+ content: "\f168";
1565
  }
1566
+
1567
  .fa-xing-square:before {
1568
+ content: "\f169";
1569
  }
1570
+
1571
  .fa-youtube-play:before {
1572
+ content: "\f16a";
1573
  }
1574
+
1575
  .fa-dropbox:before {
1576
+ content: "\f16b";
1577
  }
1578
+
1579
  .fa-stack-overflow:before {
1580
+ content: "\f16c";
1581
  }
1582
+
1583
  .fa-instagram:before {
1584
+ content: "\f16d";
1585
  }
1586
+
1587
  .fa-flickr:before {
1588
+ content: "\f16e";
1589
  }
1590
+
1591
  .fa-adn:before {
1592
+ content: "\f170";
1593
  }
1594
+
1595
  .fa-bitbucket:before {
1596
+ content: "\f171";
1597
  }
1598
+
1599
  .fa-bitbucket-square:before {
1600
+ content: "\f172";
1601
  }
1602
+
1603
  .fa-tumblr:before {
1604
+ content: "\f173";
1605
  }
1606
+
1607
  .fa-tumblr-square:before {
1608
+ content: "\f174";
1609
  }
1610
+
1611
  .fa-long-arrow-down:before {
1612
+ content: "\f175";
1613
  }
1614
+
1615
  .fa-long-arrow-up:before {
1616
+ content: "\f176";
1617
  }
1618
+
1619
  .fa-long-arrow-left:before {
1620
+ content: "\f177";
1621
  }
1622
+
1623
  .fa-long-arrow-right:before {
1624
+ content: "\f178";
1625
  }
1626
+
1627
  .fa-apple:before {
1628
+ content: "\f179";
1629
  }
1630
+
1631
  .fa-windows:before {
1632
+ content: "\f17a";
1633
  }
1634
+
1635
  .fa-android:before {
1636
+ content: "\f17b";
1637
  }
1638
+
1639
  .fa-linux:before {
1640
+ content: "\f17c";
1641
  }
1642
+
1643
  .fa-dribbble:before {
1644
+ content: "\f17d";
1645
  }
1646
+
1647
  .fa-skype:before {
1648
+ content: "\f17e";
1649
  }
1650
+
1651
  .fa-foursquare:before {
1652
+ content: "\f180";
1653
  }
1654
+
1655
  .fa-trello:before {
1656
+ content: "\f181";
1657
  }
1658
+
1659
  .fa-female:before {
1660
+ content: "\f182";
1661
  }
1662
+
1663
  .fa-male:before {
1664
+ content: "\f183";
1665
  }
1666
+
1667
  .fa-gittip:before {
1668
+ content: "\f184";
1669
  }
1670
+
1671
  .fa-sun-o:before {
1672
+ content: "\f185";
1673
  }
1674
+
1675
  .fa-moon-o:before {
1676
+ content: "\f186";
1677
  }
1678
+
1679
  .fa-archive:before {
1680
+ content: "\f187";
1681
  }
1682
+
1683
  .fa-bug:before {
1684
+ content: "\f188";
1685
  }
1686
+
1687
  .fa-vk:before {
1688
+ content: "\f189";
1689
  }
1690
+
1691
  .fa-weibo:before {
1692
+ content: "\f18a";
1693
  }
1694
+
1695
  .fa-renren:before {
1696
+ content: "\f18b";
1697
  }
1698
+
1699
  .fa-pagelines:before {
1700
+ content: "\f18c";
1701
  }
1702
+
1703
  .fa-stack-exchange:before {
1704
+ content: "\f18d";
1705
  }
1706
+
1707
  .fa-arrow-circle-o-right:before {
1708
+ content: "\f18e";
1709
  }
1710
+
1711
  .fa-arrow-circle-o-left:before {
1712
+ content: "\f190";
1713
  }
1714
+
1715
  .fa-toggle-left:before,
1716
  .fa-caret-square-o-left:before {
1717
+ content: "\f191";
1718
  }
1719
+
1720
  .fa-dot-circle-o:before {
1721
+ content: "\f192";
1722
  }
1723
+
1724
  .fa-wheelchair:before {
1725
+ content: "\f193";
1726
  }
1727
+
1728
  .fa-vimeo-square:before {
1729
+ content: "\f194";
1730
  }
1731
+
1732
  .fa-turkish-lira:before,
1733
  .fa-try:before {
1734
+ content: "\f195";
1735
  }
1736
+
1737
  .fa-plus-square-o:before {
1738
+ content: "\f196";
1739
  }
1740
 
1741
 
css/jquery-ui.css CHANGED
@@ -6,476 +6,1751 @@
6
 
7
  /* Layout helpers
8
  ----------------------------------*/
9
- .ui-helper-hidden { display: none; }
10
- .ui-helper-hidden-accessible { position: absolute; left: -99999999px; }
11
- .ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
12
- .ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
13
- .ui-helper-clearfix { display: inline-block; }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14
  /* required comment for clearfix to work in Opera \*/
15
- * html .ui-helper-clearfix { height:1%; }
16
- .ui-helper-clearfix { display:block; }
 
 
 
 
 
 
17
  /* end clearfix */
18
- .ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
19
 
 
 
 
 
 
 
 
 
20
 
21
- /* Interaction Cues
22
- ----------------------------------*/
23
- .ui-state-disabled { cursor: default !important; }
 
 
24
 
 
 
 
 
 
 
25
 
26
- /* Icons
 
 
 
 
 
 
 
 
 
 
 
27
  ----------------------------------*/
 
 
 
28
 
29
- /* states and images */
30
- .ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
 
 
 
 
31
 
 
 
 
32
 
33
- /* Misc visuals
34
- ----------------------------------*/
 
 
 
 
 
35
 
36
- /* Overlays */
37
- .ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
 
 
 
 
 
38
 
 
 
 
 
 
 
 
39
 
40
- /*
41
- * jQuery UI CSS Framework
42
- * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
43
- * Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses.
44
- * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana,Arial,sans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=03_highlight_soft.png&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=01_flat.png&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=02_glass.png&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=02_glass.png&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=02_glass.png&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
45
- */
 
46
 
 
 
 
 
 
 
 
47
 
48
- /* Component containers
49
- ----------------------------------*/
50
- .ui-widget { font-family: Verdana,Arial,sans-serif; font-size: 1.1em; }
51
- .ui-widget .ui-widget { font-size: 1em; }
52
- .ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Verdana,Arial,sans-serif; font-size: 1em; }
53
- .ui-widget-content { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x; color: #222222; }
54
- .ui-widget-content a { color: #222222; }
55
- .ui-widget-header { border: 1px solid #aaaaaa; background: #cccccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x; color: #222222; font-weight: bold; }
56
- .ui-widget-header a { color: #222222; }
57
 
58
- /* Interaction states
59
- ----------------------------------*/
60
- .ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #d3d3d3; background: #e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #555555; }
61
- .ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #555555; text-decoration: none; }
62
- .ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #999999; background: #dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; }
63
- .ui-state-hover a, .ui-state-hover a:hover { color: #212121; text-decoration: none; }
64
- .ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; }
65
- .ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #212121; text-decoration: none; }
66
- .ui-widget :active { outline: none; }
67
 
68
- /* Interaction Cues
 
 
 
 
 
 
 
 
69
  ----------------------------------*/
70
- .ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #fcefa1; background: #fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x; color: #363636; }
71
- .ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; }
72
- .ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x; color: #cd0a0a; }
73
- .ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a; }
74
- .ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a; }
75
- .ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }
76
- .ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
77
- .ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
78
 
79
- /* Icons
80
  ----------------------------------*/
 
 
 
 
 
 
81
 
82
- /* states and images */
83
- .ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); }
84
- .ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }
85
- .ui-widget-header .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }
86
- .ui-state-default .ui-icon { background-image: url(images/ui-icons_888888_256x240.png); }
87
- .ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); }
88
- .ui-state-active .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); }
89
- .ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png); }
90
- .ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cd0a0a_256x240.png); }
91
 
92
- /* positioning */
93
- .ui-icon-carat-1-n { background-position: 0 0; }
94
- .ui-icon-carat-1-ne { background-position: -16px 0; }
95
- .ui-icon-carat-1-e { background-position: -32px 0; }
96
- .ui-icon-carat-1-se { background-position: -48px 0; }
97
- .ui-icon-carat-1-s { background-position: -64px 0; }
98
- .ui-icon-carat-1-sw { background-position: -80px 0; }
99
- .ui-icon-carat-1-w { background-position: -96px 0; }
100
- .ui-icon-carat-1-nw { background-position: -112px 0; }
101
- .ui-icon-carat-2-n-s { background-position: -128px 0; }
102
- .ui-icon-carat-2-e-w { background-position: -144px 0; }
103
- .ui-icon-triangle-1-n { background-position: 0 -16px; }
104
- .ui-icon-triangle-1-ne { background-position: -16px -16px; }
105
- .ui-icon-triangle-1-e { background-position: -32px -16px; }
106
- .ui-icon-triangle-1-se { background-position: -48px -16px; }
107
- .ui-icon-triangle-1-s { background-position: -64px -16px; }
108
- .ui-icon-triangle-1-sw { background-position: -80px -16px; }
109
- .ui-icon-triangle-1-w { background-position: -96px -16px; }
110
- .ui-icon-triangle-1-nw { background-position: -112px -16px; }
111
- .ui-icon-triangle-2-n-s { background-position: -128px -16px; }
112
- .ui-icon-triangle-2-e-w { background-position: -144px -16px; }
113
- .ui-icon-arrow-1-n { background-position: 0 -32px; }
114
- .ui-icon-arrow-1-ne { background-position: -16px -32px; }
115
- .ui-icon-arrow-1-e { background-position: -32px -32px; }
116
- .ui-icon-arrow-1-se { background-position: -48px -32px; }
117
- .ui-icon-arrow-1-s { background-position: -64px -32px; }
118
- .ui-icon-arrow-1-sw { background-position: -80px -32px; }
119
- .ui-icon-arrow-1-w { background-position: -96px -32px; }
120
- .ui-icon-arrow-1-nw { background-position: -112px -32px; }
121
- .ui-icon-arrow-2-n-s { background-position: -128px -32px; }
122
- .ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
123
- .ui-icon-arrow-2-e-w { background-position: -160px -32px; }
124
- .ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
125
- .ui-icon-arrowstop-1-n { background-position: -192px -32px; }
126
- .ui-icon-arrowstop-1-e { background-position: -208px -32px; }
127
- .ui-icon-arrowstop-1-s { background-position: -224px -32px; }
128
- .ui-icon-arrowstop-1-w { background-position: -240px -32px; }
129
- .ui-icon-arrowthick-1-n { background-position: 0 -48px; }
130
- .ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
131
- .ui-icon-arrowthick-1-e { background-position: -32px -48px; }
132
- .ui-icon-arrowthick-1-se { background-position: -48px -48px; }
133
- .ui-icon-arrowthick-1-s { background-position: -64px -48px; }
134
- .ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
135
- .ui-icon-arrowthick-1-w { background-position: -96px -48px; }
136
- .ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
137
- .ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
138
- .ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
139
- .ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
140
- .ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
141
- .ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
142
- .ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
143
- .ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
144
- .ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
145
- .ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
146
- .ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
147
- .ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
148
- .ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
149
- .ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
150
- .ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
151
- .ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
152
- .ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
153
- .ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
154
- .ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
155
- .ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
156
- .ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
157
- .ui-icon-arrow-4 { background-position: 0 -80px; }
158
- .ui-icon-arrow-4-diag { background-position: -16px -80px; }
159
- .ui-icon-extlink { background-position: -32px -80px; }
160
- .ui-icon-newwin { background-position: -48px -80px; }
161
- .ui-icon-refresh { background-position: -64px -80px; }
162
- .ui-icon-shuffle { background-position: -80px -80px; }
163
- .ui-icon-transfer-e-w { background-position: -96px -80px; }
164
- .ui-icon-transferthick-e-w { background-position: -112px -80px; }
165
- .ui-icon-folder-collapsed { background-position: 0 -96px; }
166
- .ui-icon-folder-open { background-position: -16px -96px; }
167
- .ui-icon-document { background-position: -32px -96px; }
168
- .ui-icon-document-b { background-position: -48px -96px; }
169
- .ui-icon-note { background-position: -64px -96px; }
170
- .ui-icon-mail-closed { background-position: -80px -96px; }
171
- .ui-icon-mail-open { background-position: -96px -96px; }
172
- .ui-icon-suitcase { background-position: -112px -96px; }
173
- .ui-icon-comment { background-position: -128px -96px; }
174
- .ui-icon-person { background-position: -144px -96px; }
175
- .ui-icon-print { background-position: -160px -96px; }
176
- .ui-icon-trash { background-position: -176px -96px; }
177
- .ui-icon-locked { background-position: -192px -96px; }
178
- .ui-icon-unlocked { background-position: -208px -96px; }
179
- .ui-icon-bookmark { background-position: -224px -96px; }
180
- .ui-icon-tag { background-position: -240px -96px; }
181
- .ui-icon-home { background-position: 0 -112px; }
182
- .ui-icon-flag { background-position: -16px -112px; }
183
- .ui-icon-calendar { background-position: -32px -112px; }
184
- .ui-icon-cart { background-position: -48px -112px; }
185
- .ui-icon-pencil { background-position: -64px -112px; }
186
- .ui-icon-clock { background-position: -80px -112px; }
187
- .ui-icon-disk { background-position: -96px -112px; }
188
- .ui-icon-calculator { background-position: -112px -112px; }
189
- .ui-icon-zoomin { background-position: -128px -112px; }
190
- .ui-icon-zoomout { background-position: -144px -112px; }
191
- .ui-icon-search { background-position: -160px -112px; }
192
- .ui-icon-wrench { background-position: -176px -112px; }
193
- .ui-icon-gear { background-position: -192px -112px; }
194
- .ui-icon-heart { background-position: -208px -112px; }
195
- .ui-icon-star { background-position: -224px -112px; }
196
- .ui-icon-link { background-position: -240px -112px; }
197
- .ui-icon-cancel { background-position: 0 -128px; }
198
- .ui-icon-plus { background-position: -16px -128px; }
199
- .ui-icon-plusthick { background-position: -32px -128px; }
200
- .ui-icon-minus { background-position: -48px -128px; }
201
- .ui-icon-minusthick { background-position: -64px -128px; }
202
- .ui-icon-close { background-position: -80px -128px; }
203
- .ui-icon-closethick { background-position: -96px -128px; }
204
- .ui-icon-key { background-position: -112px -128px; }
205
- .ui-icon-lightbulb { background-position: -128px -128px; }
206
- .ui-icon-scissors { background-position: -144px -128px; }
207
- .ui-icon-clipboard { background-position: -160px -128px; }
208
- .ui-icon-copy { background-position: -176px -128px; }
209
- .ui-icon-contact { background-position: -192px -128px; }
210
- .ui-icon-image { background-position: -208px -128px; }
211
- .ui-icon-video { background-position: -224px -128px; }
212
- .ui-icon-script { background-position: -240px -128px; }
213
- .ui-icon-alert { background-position: 0 -144px; }
214
- .ui-icon-info { background-position: -16px -144px; }
215
- .ui-icon-notice { background-position: -32px -144px; }
216
- .ui-icon-help { background-position: -48px -144px; }
217
- .ui-icon-check { background-position: -64px -144px; }
218
- .ui-icon-bullet { background-position: -80px -144px; }
219
- .ui-icon-radio-off { background-position: -96px -144px; }
220
- .ui-icon-radio-on { background-position: -112px -144px; }
221
- .ui-icon-pin-w { background-position: -128px -144px; }
222
- .ui-icon-pin-s { background-position: -144px -144px; }
223
- .ui-icon-play { background-position: 0 -160px; }
224
- .ui-icon-pause { background-position: -16px -160px; }
225
- .ui-icon-seek-next { background-position: -32px -160px; }
226
- .ui-icon-seek-prev { background-position: -48px -160px; }
227
- .ui-icon-seek-end { background-position: -64px -160px; }
228
- .ui-icon-seek-start { background-position: -80px -160px; }
229
- /* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
230
- .ui-icon-seek-first { background-position: -80px -160px; }
231
- .ui-icon-stop { background-position: -96px -160px; }
232
- .ui-icon-eject { background-position: -112px -160px; }
233
- .ui-icon-volume-off { background-position: -128px -160px; }
234
- .ui-icon-volume-on { background-position: -144px -160px; }
235
- .ui-icon-power { background-position: 0 -176px; }
236
- .ui-icon-signal-diag { background-position: -16px -176px; }
237
- .ui-icon-signal { background-position: -32px -176px; }
238
- .ui-icon-battery-0 { background-position: -48px -176px; }
239
- .ui-icon-battery-1 { background-position: -64px -176px; }
240
- .ui-icon-battery-2 { background-position: -80px -176px; }
241
- .ui-icon-battery-3 { background-position: -96px -176px; }
242
- .ui-icon-circle-plus { background-position: 0 -192px; }
243
- .ui-icon-circle-minus { background-position: -16px -192px; }
244
- .ui-icon-circle-close { background-position: -32px -192px; }
245
- .ui-icon-circle-triangle-e { background-position: -48px -192px; }
246
- .ui-icon-circle-triangle-s { background-position: -64px -192px; }
247
- .ui-icon-circle-triangle-w { background-position: -80px -192px; }
248
- .ui-icon-circle-triangle-n { background-position: -96px -192px; }
249
- .ui-icon-circle-arrow-e { background-position: -112px -192px; }
250
- .ui-icon-circle-arrow-s { background-position: -128px -192px; }
251
- .ui-icon-circle-arrow-w { background-position: -144px -192px; }
252
- .ui-icon-circle-arrow-n { background-position: -160px -192px; }
253
- .ui-icon-circle-zoomin { background-position: -176px -192px; }
254
- .ui-icon-circle-zoomout { background-position: -192px -192px; }
255
- .ui-icon-circle-check { background-position: -208px -192px; }
256
- .ui-icon-circlesmall-plus { background-position: 0 -208px; }
257
- .ui-icon-circlesmall-minus { background-position: -16px -208px; }
258
- .ui-icon-circlesmall-close { background-position: -32px -208px; }
259
- .ui-icon-squaresmall-plus { background-position: -48px -208px; }
260
- .ui-icon-squaresmall-minus { background-position: -64px -208px; }
261
- .ui-icon-squaresmall-close { background-position: -80px -208px; }
262
- .ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
263
- .ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
264
- .ui-icon-grip-solid-vertical { background-position: -32px -224px; }
265
- .ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
266
- .ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
267
- .ui-icon-grip-diagonal-se { background-position: -80px -224px; }
268
 
 
 
 
 
 
269
 
270
- /* Misc visuals
271
- ----------------------------------*/
 
 
272
 
273
- /* Corner radius */
274
- .ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; }
275
- .ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; }
276
- .ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; }
277
- .ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }
278
- .ui-corner-top { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; }
279
- .ui-corner-bottom { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }
280
- .ui-corner-right { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }
281
- .ui-corner-left { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; }
282
- .ui-corner-all { -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; }
283
 
284
- /* Overlays */
285
- .ui-widget-overlay { background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); }
286
- .ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }/* Resizable
287
- ----------------------------------*/
288
- .ui-resizable { position: relative;}
289
- .ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block;}
290
- .ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }
291
- .ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }
292
- .ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }
293
- .ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }
294
- .ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }
295
- .ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
296
- .ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
297
- .ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
298
- .ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/* Selectable
299
- ----------------------------------*/
300
- .ui-selectable-helper { border:1px dotted black }
301
- /* Accordion
302
- ----------------------------------*/
303
- .ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; }
304
- .ui-accordion .ui-accordion-li-fix { display: inline; }
305
- .ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; }
306
- .ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em .7em; }
307
- /* IE7-/Win - Fix extra vertical space in lists */
308
- .ui-accordion a { zoom: 1; }
309
- .ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; }
310
- .ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
311
- .ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; }
312
- .ui-accordion .ui-accordion-content-active { display: block; }/* Autocomplete
313
  ----------------------------------*/
314
- .ui-autocomplete { position: absolute; cursor: default; }
315
- .ui-autocomplete-loading { background: white url('images/ui-anim_basic_16x16.gif') right center no-repeat; }
 
 
 
 
 
 
316
 
317
  /* workarounds */
318
- * html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
 
 
 
 
319
 
320
  /* Menu
321
  ----------------------------------*/
322
  .ui-menu {
323
- list-style:none;
324
- padding: 2px;
325
- margin: 0;
326
- display:block;
327
  }
 
328
  .ui-menu .ui-menu {
329
- margin-top: -3px;
330
  }
 
331
  .ui-menu .ui-menu-item {
332
- margin:0;
333
- padding: 0;
334
- zoom: 1;
335
- float: left;
336
- clear: left;
337
- width: 100%;
338
  }
 
339
  .ui-menu .ui-menu-item a {
340
- text-decoration:none;
341
- display:block;
342
- padding:.2em .4em;
343
- line-height:1.5;
344
- zoom:1;
345
  }
 
346
  .ui-menu .ui-menu-item a.ui-state-hover,
347
  .ui-menu .ui-menu-item a.ui-state-active {
348
- font-weight: normal;
349
- margin: -1px;
350
  }
 
351
  /* Button
352
  ----------------------------------*/
353
 
354
- .ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */
355
- .ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */
356
- button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */
357
- .ui-button-icons-only { width: 3.4em; }
358
- button.ui-button-icons-only { width: 3.7em; }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
359
 
360
  /*button text element */
361
- .ui-button .ui-button-text { display: block; line-height: 1.4; }
362
- .ui-button-text-only .ui-button-text { padding: .4em 1em; }
363
- .ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; }
364
- .ui-button-text-icon .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; }
365
- .ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
366
  /* no icon support for input elements, provide padding by default */
367
- input.ui-button { padding: .4em 1em; }
 
 
368
 
369
  /*button icon element(s) */
370
- .ui-button-icon-only .ui-icon, .ui-button-text-icon .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; }
371
- .ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; }
372
- .ui-button-text-icon .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; }
373
- .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
 
374
 
375
- /*button sets*/
376
- .ui-buttonset { margin-right: 7px; }
377
- .ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; }
 
378
 
379
- /* workarounds */
380
- button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */
 
 
 
 
 
381
 
 
 
 
 
382
 
 
 
 
 
383
 
 
 
 
 
 
384
 
 
385
 
386
  /* Dialog
387
  ----------------------------------*/
388
- .ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; }
389
- .ui-dialog .ui-dialog-titlebar { padding: .5em 1em .3em; position: relative; }
390
- .ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .2em 0; }
391
- .ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }
392
- .ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }
393
- .ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }
394
- .ui-dialog .ui-dialog-content { border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }
395
- .ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }
396
- .ui-dialog .ui-dialog-buttonpane button { float: right; margin: .5em .4em .5em 0; cursor: pointer; padding: .2em .6em .3em .6em; line-height: 1.4em; width:auto; overflow:visible; }
397
- .ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
398
- .ui-draggable .ui-dialog-titlebar { cursor: move; }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
399
  /* Slider
400
  ----------------------------------*/
401
- .ui-slider { position: relative; text-align: left; }
402
- .ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
403
- .ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; }
404
-
405
- .ui-slider-horizontal { height: .8em; }
406
- .ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
407
- .ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
408
- .ui-slider-horizontal .ui-slider-range-min { left: 0; }
409
- .ui-slider-horizontal .ui-slider-range-max { right: 0; }
410
-
411
- .ui-slider-vertical { width: .8em; height: 100px; }
412
- .ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
413
- .ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
414
- .ui-slider-vertical .ui-slider-range-min { bottom: 0; }
415
- .ui-slider-vertical .ui-slider-range-max { top: 0; }/* Tabs
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
416
  ----------------------------------*/
417
- .ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
418
- .ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; }
419
- .ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; }
420
- .ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; }
421
- .ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; }
422
- .ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; }
423
- .ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
424
- .ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; }
425
- .ui-tabs .ui-tabs-hide { display: none !important; }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
426
  /* Datepicker
427
  ----------------------------------*/
428
- .ui-datepicker { width: 17em; padding: .2em .2em 0; }
429
- .ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
430
- .ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
431
- .ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; }
432
- .ui-datepicker .ui-datepicker-prev { left:2px; }
433
- .ui-datepicker .ui-datepicker-next { right:2px; }
434
- .ui-datepicker .ui-datepicker-prev-hover { left:1px; }
435
- .ui-datepicker .ui-datepicker-next-hover { right:1px; }
436
- .ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; }
437
- .ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
438
- .ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }
439
- .ui-datepicker select.ui-datepicker-month-year {width: 100%;}
440
- .ui-datepicker select.ui-datepicker-month,
441
- .ui-datepicker select.ui-datepicker-year { width: 49%;}
442
- .ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
443
- .ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; }
444
- .ui-datepicker td { border: 0; padding: 1px; }
445
- .ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
446
- .ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
447
- .ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
448
- .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
449
 
450
  /* with multiple calendars */
451
- .ui-datepicker.ui-datepicker-multi { width:auto; }
452
- .ui-datepicker-multi .ui-datepicker-group { float:left; }
453
- .ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
454
- .ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
455
- .ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
456
- .ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
457
- .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
458
- .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
459
- .ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
460
- .ui-datepicker-row-break { clear:both; width:100%; }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
461
 
462
  /* RTL support */
463
- .ui-datepicker-rtl { direction: rtl; }
464
- .ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
465
- .ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
466
- .ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
467
- .ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
468
- .ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
469
- .ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
470
- .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
471
- .ui-datepicker-rtl .ui-datepicker-group { float:right; }
472
- .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
473
- .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
474
 
475
  /* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
476
  .ui-datepicker-cover {
477
  display: none; /*sorry for IE5*/
478
- display/**/: block; /*sorry for IE5*/
479
  position: absolute; /*must have*/
480
  z-index: -1; /*must have*/
481
  filter: mask(); /*must have*/
@@ -483,7 +1758,16 @@ button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra pad
483
  left: -4px; /*must have*/
484
  width: 200px; /*must have*/
485
  height: 200px; /*must have*/
486
- }/* Progressbar
 
 
487
  ----------------------------------*/
488
- .ui-progressbar { height:2em; text-align: left; }
489
- .ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }
 
 
 
 
 
 
 
6
 
7
  /* Layout helpers
8
  ----------------------------------*/
9
+ .ui-helper-hidden {
10
+ display: none;
11
+ }
12
+
13
+ .ui-helper-hidden-accessible {
14
+ position: absolute;
15
+ left: -99999999px;
16
+ }
17
+
18
+ .ui-helper-reset {
19
+ margin: 0;
20
+ padding: 0;
21
+ border: 0;
22
+ outline: 0;
23
+ line-height: 1.3;
24
+ text-decoration: none;
25
+ font-size: 100%;
26
+ list-style: none;
27
+ }
28
+
29
+ .ui-helper-clearfix:after {
30
+ content: ".";
31
+ display: block;
32
+ height: 0;
33
+ clear: both;
34
+ visibility: hidden;
35
+ }
36
+
37
+ .ui-helper-clearfix {
38
+ display: inline-block;
39
+ }
40
+
41
  /* required comment for clearfix to work in Opera \*/
42
+ * html .ui-helper-clearfix {
43
+ height: 1%;
44
+ }
45
+
46
+ .ui-helper-clearfix {
47
+ display: block;
48
+ }
49
+
50
  /* end clearfix */
51
+ .ui-helper-zfix {
52
+ width: 100%;
53
+ height: 100%;
54
+ top: 0;
55
+ left: 0;
56
+ position: absolute;
57
+ opacity: 0;
58
+ filter: Alpha(Opacity=0);
59
+ }
60
+
61
+ /* Interaction Cues
62
+ ----------------------------------*/
63
+ .ui-state-disabled {
64
+ cursor: default !important;
65
+ }
66
+
67
+ /* Icons
68
+ ----------------------------------*/
69
+
70
+ /* states and images */
71
+ .ui-icon {
72
+ display: block;
73
+ text-indent: -99999px;
74
+ overflow: hidden;
75
+ background-repeat: no-repeat;
76
+ }
77
+
78
+ /* Misc visuals
79
+ ----------------------------------*/
80
+
81
+ /* Overlays */
82
+ .ui-widget-overlay {
83
+ position: absolute;
84
+ top: 0;
85
+ left: 0;
86
+ width: 100%;
87
+ height: 100%;
88
+ }
89
+
90
+ /*
91
+ * jQuery UI CSS Framework
92
+ * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
93
+ * Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses.
94
+ * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana,Arial,sans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=03_highlight_soft.png&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=01_flat.png&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=02_glass.png&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=02_glass.png&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=02_glass.png&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
95
+ */
96
+
97
+ /* Component containers
98
+ ----------------------------------*/
99
+ .ui-widget {
100
+ font-family: Verdana, Arial, sans-serif;
101
+ font-size: 1.1em;
102
+ }
103
+
104
+ .ui-widget .ui-widget {
105
+ font-size: 1em;
106
+ }
107
+
108
+ .ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button {
109
+ font-family: Verdana, Arial, sans-serif;
110
+ font-size: 1em;
111
+ }
112
+
113
+ .ui-widget-content {
114
+ border: 1px solid #aaaaaa;
115
+ background: #ffffff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x;
116
+ color: #222222;
117
+ }
118
+
119
+ .ui-widget-content a {
120
+ color: #222222;
121
+ }
122
+
123
+ .ui-widget-header {
124
+ border: 1px solid #aaaaaa;
125
+ background: #cccccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x;
126
+ color: #222222;
127
+ font-weight: bold;
128
+ }
129
+
130
+ .ui-widget-header a {
131
+ color: #222222;
132
+ }
133
+
134
+ /* Interaction states
135
+ ----------------------------------*/
136
+ .ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default {
137
+ border: 1px solid #d3d3d3;
138
+ background: #e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x;
139
+ font-weight: normal;
140
+ color: #555555;
141
+ }
142
+
143
+ .ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited {
144
+ color: #555555;
145
+ text-decoration: none;
146
+ }
147
+
148
+ .ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus {
149
+ border: 1px solid #999999;
150
+ background: #dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x;
151
+ font-weight: normal;
152
+ color: #212121;
153
+ }
154
+
155
+ .ui-state-hover a, .ui-state-hover a:hover {
156
+ color: #212121;
157
+ text-decoration: none;
158
+ }
159
+
160
+ .ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active {
161
+ border: 1px solid #aaaaaa;
162
+ background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x;
163
+ font-weight: normal;
164
+ color: #212121;
165
+ }
166
+
167
+ .ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited {
168
+ color: #212121;
169
+ text-decoration: none;
170
+ }
171
+
172
+ .ui-widget :active {
173
+ outline: none;
174
+ }
175
+
176
+ /* Interaction Cues
177
+ ----------------------------------*/
178
+ .ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {
179
+ border: 1px solid #fcefa1;
180
+ background: #fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x;
181
+ color: #363636;
182
+ }
183
+
184
+ .ui-state-highlight a, .ui-widget-content .ui-state-highlight a, .ui-widget-header .ui-state-highlight a {
185
+ color: #363636;
186
+ }
187
+
188
+ .ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {
189
+ border: 1px solid #cd0a0a;
190
+ background: #fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x;
191
+ color: #cd0a0a;
192
+ }
193
+
194
+ .ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a {
195
+ color: #cd0a0a;
196
+ }
197
+
198
+ .ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text {
199
+ color: #cd0a0a;
200
+ }
201
+
202
+ .ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary {
203
+ font-weight: bold;
204
+ }
205
+
206
+ .ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary {
207
+ opacity: .7;
208
+ filter: Alpha(Opacity=70);
209
+ font-weight: normal;
210
+ }
211
+
212
+ .ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled {
213
+ opacity: .35;
214
+ filter: Alpha(Opacity=35);
215
+ background-image: none;
216
+ }
217
+
218
+ /* Icons
219
+ ----------------------------------*/
220
+
221
+ /* states and images */
222
+ .ui-icon {
223
+ width: 16px;
224
+ height: 16px;
225
+ background-image: url(images/ui-icons_222222_256x240.png);
226
+ }
227
+
228
+ .ui-widget-content .ui-icon {
229
+ background-image: url(images/ui-icons_222222_256x240.png);
230
+ }
231
+
232
+ .ui-widget-header .ui-icon {
233
+ background-image: url(images/ui-icons_222222_256x240.png);
234
+ }
235
+
236
+ .ui-state-default .ui-icon {
237
+ background-image: url(images/ui-icons_888888_256x240.png);
238
+ }
239
+
240
+ .ui-state-hover .ui-icon, .ui-state-focus .ui-icon {
241
+ background-image: url(images/ui-icons_454545_256x240.png);
242
+ }
243
+
244
+ .ui-state-active .ui-icon {
245
+ background-image: url(images/ui-icons_454545_256x240.png);
246
+ }
247
+
248
+ .ui-state-highlight .ui-icon {
249
+ background-image: url(images/ui-icons_2e83ff_256x240.png);
250
+ }
251
+
252
+ .ui-state-error .ui-icon, .ui-state-error-text .ui-icon {
253
+ background-image: url(images/ui-icons_cd0a0a_256x240.png);
254
+ }
255
+
256
+ /* positioning */
257
+ .ui-icon-carat-1-n {
258
+ background-position: 0 0;
259
+ }
260
+
261
+ .ui-icon-carat-1-ne {
262
+ background-position: -16px 0;
263
+ }
264
+
265
+ .ui-icon-carat-1-e {
266
+ background-position: -32px 0;
267
+ }
268
+
269
+ .ui-icon-carat-1-se {
270
+ background-position: -48px 0;
271
+ }
272
+
273
+ .ui-icon-carat-1-s {
274
+ background-position: -64px 0;
275
+ }
276
+
277
+ .ui-icon-carat-1-sw {
278
+ background-position: -80px 0;
279
+ }
280
+
281
+ .ui-icon-carat-1-w {
282
+ background-position: -96px 0;
283
+ }
284
+
285
+ .ui-icon-carat-1-nw {
286
+ background-position: -112px 0;
287
+ }
288
+
289
+ .ui-icon-carat-2-n-s {
290
+ background-position: -128px 0;
291
+ }
292
+
293
+ .ui-icon-carat-2-e-w {
294
+ background-position: -144px 0;
295
+ }
296
+
297
+ .ui-icon-triangle-1-n {
298
+ background-position: 0 -16px;
299
+ }
300
+
301
+ .ui-icon-triangle-1-ne {
302
+ background-position: -16px -16px;
303
+ }
304
+
305
+ .ui-icon-triangle-1-e {
306
+ background-position: -32px -16px;
307
+ }
308
+
309
+ .ui-icon-triangle-1-se {
310
+ background-position: -48px -16px;
311
+ }
312
+
313
+ .ui-icon-triangle-1-s {
314
+ background-position: -64px -16px;
315
+ }
316
+
317
+ .ui-icon-triangle-1-sw {
318
+ background-position: -80px -16px;
319
+ }
320
+
321
+ .ui-icon-triangle-1-w {
322
+ background-position: -96px -16px;
323
+ }
324
+
325
+ .ui-icon-triangle-1-nw {
326
+ background-position: -112px -16px;
327
+ }
328
+
329
+ .ui-icon-triangle-2-n-s {
330
+ background-position: -128px -16px;
331
+ }
332
+
333
+ .ui-icon-triangle-2-e-w {
334
+ background-position: -144px -16px;
335
+ }
336
+
337
+ .ui-icon-arrow-1-n {
338
+ background-position: 0 -32px;
339
+ }
340
+
341
+ .ui-icon-arrow-1-ne {
342
+ background-position: -16px -32px;
343
+ }
344
+
345
+ .ui-icon-arrow-1-e {
346
+ background-position: -32px -32px;
347
+ }
348
+
349
+ .ui-icon-arrow-1-se {
350
+ background-position: -48px -32px;
351
+ }
352
+
353
+ .ui-icon-arrow-1-s {
354
+ background-position: -64px -32px;
355
+ }
356
+
357
+ .ui-icon-arrow-1-sw {
358
+ background-position: -80px -32px;
359
+ }
360
+
361
+ .ui-icon-arrow-1-w {
362
+ background-position: -96px -32px;
363
+ }
364
+
365
+ .ui-icon-arrow-1-nw {
366
+ background-position: -112px -32px;
367
+ }
368
+
369
+ .ui-icon-arrow-2-n-s {
370
+ background-position: -128px -32px;
371
+ }
372
+
373
+ .ui-icon-arrow-2-ne-sw {
374
+ background-position: -144px -32px;
375
+ }
376
+
377
+ .ui-icon-arrow-2-e-w {
378
+ background-position: -160px -32px;
379
+ }
380
+
381
+ .ui-icon-arrow-2-se-nw {
382
+ background-position: -176px -32px;
383
+ }
384
+
385
+ .ui-icon-arrowstop-1-n {
386
+ background-position: -192px -32px;
387
+ }
388
+
389
+ .ui-icon-arrowstop-1-e {
390
+ background-position: -208px -32px;
391
+ }
392
+
393
+ .ui-icon-arrowstop-1-s {
394
+ background-position: -224px -32px;
395
+ }
396
+
397
+ .ui-icon-arrowstop-1-w {
398
+ background-position: -240px -32px;
399
+ }
400
+
401
+ .ui-icon-arrowthick-1-n {
402
+ background-position: 0 -48px;
403
+ }
404
+
405
+ .ui-icon-arrowthick-1-ne {
406
+ background-position: -16px -48px;
407
+ }
408
+
409
+ .ui-icon-arrowthick-1-e {
410
+ background-position: -32px -48px;
411
+ }
412
+
413
+ .ui-icon-arrowthick-1-se {
414
+ background-position: -48px -48px;
415
+ }
416
+
417
+ .ui-icon-arrowthick-1-s {
418
+ background-position: -64px -48px;
419
+ }
420
+
421
+ .ui-icon-arrowthick-1-sw {
422
+ background-position: -80px -48px;
423
+ }
424
+
425
+ .ui-icon-arrowthick-1-w {
426
+ background-position: -96px -48px;
427
+ }
428
+
429
+ .ui-icon-arrowthick-1-nw {
430
+ background-position: -112px -48px;
431
+ }
432
+
433
+ .ui-icon-arrowthick-2-n-s {
434
+ background-position: -128px -48px;
435
+ }
436
+
437
+ .ui-icon-arrowthick-2-ne-sw {
438
+ background-position: -144px -48px;
439
+ }
440
+
441
+ .ui-icon-arrowthick-2-e-w {
442
+ background-position: -160px -48px;
443
+ }
444
+
445
+ .ui-icon-arrowthick-2-se-nw {
446
+ background-position: -176px -48px;
447
+ }
448
+
449
+ .ui-icon-arrowthickstop-1-n {
450
+ background-position: -192px -48px;
451
+ }
452
+
453
+ .ui-icon-arrowthickstop-1-e {
454
+ background-position: -208px -48px;
455
+ }
456
+
457
+ .ui-icon-arrowthickstop-1-s {
458
+ background-position: -224px -48px;
459
+ }
460
+
461
+ .ui-icon-arrowthickstop-1-w {
462
+ background-position: -240px -48px;
463
+ }
464
+
465
+ .ui-icon-arrowreturnthick-1-w {
466
+ background-position: 0 -64px;
467
+ }
468
+
469
+ .ui-icon-arrowreturnthick-1-n {
470
+ background-position: -16px -64px;
471
+ }
472
+
473
+ .ui-icon-arrowreturnthick-1-e {
474
+ background-position: -32px -64px;
475
+ }
476
+
477
+ .ui-icon-arrowreturnthick-1-s {
478
+ background-position: -48px -64px;
479
+ }
480
+
481
+ .ui-icon-arrowreturn-1-w {
482
+ background-position: -64px -64px;
483
+ }
484
+
485
+ .ui-icon-arrowreturn-1-n {
486
+ background-position: -80px -64px;
487
+ }
488
+
489
+ .ui-icon-arrowreturn-1-e {
490
+ background-position: -96px -64px;
491
+ }
492
+
493
+ .ui-icon-arrowreturn-1-s {
494
+ background-position: -112px -64px;
495
+ }
496
+
497
+ .ui-icon-arrowrefresh-1-w {
498
+ background-position: -128px -64px;
499
+ }
500
+
501
+ .ui-icon-arrowrefresh-1-n {
502
+ background-position: -144px -64px;
503
+ }
504
+
505
+ .ui-icon-arrowrefresh-1-e {
506
+ background-position: -160px -64px;
507
+ }
508
+
509
+ .ui-icon-arrowrefresh-1-s {
510
+ background-position: -176px -64px;
511
+ }
512
+
513
+ .ui-icon-arrow-4 {
514
+ background-position: 0 -80px;
515
+ }
516
+
517
+ .ui-icon-arrow-4-diag {
518
+ background-position: -16px -80px;
519
+ }
520
+
521
+ .ui-icon-extlink {
522
+ background-position: -32px -80px;
523
+ }
524
+
525
+ .ui-icon-newwin {
526
+ background-position: -48px -80px;
527
+ }
528
+
529
+ .ui-icon-refresh {
530
+ background-position: -64px -80px;
531
+ }
532
+
533
+ .ui-icon-shuffle {
534
+ background-position: -80px -80px;
535
+ }
536
+
537
+ .ui-icon-transfer-e-w {
538
+ background-position: -96px -80px;
539
+ }
540
+
541
+ .ui-icon-transferthick-e-w {
542
+ background-position: -112px -80px;
543
+ }
544
+
545
+ .ui-icon-folder-collapsed {
546
+ background-position: 0 -96px;
547
+ }
548
+
549
+ .ui-icon-folder-open {
550
+ background-position: -16px -96px;
551
+ }
552
+
553
+ .ui-icon-document {
554
+ background-position: -32px -96px;
555
+ }
556
+
557
+ .ui-icon-document-b {
558
+ background-position: -48px -96px;
559
+ }
560
+
561
+ .ui-icon-note {
562
+ background-position: -64px -96px;
563
+ }
564
+
565
+ .ui-icon-mail-closed {
566
+ background-position: -80px -96px;
567
+ }
568
+
569
+ .ui-icon-mail-open {
570
+ background-position: -96px -96px;
571
+ }
572
+
573
+ .ui-icon-suitcase {
574
+ background-position: -112px -96px;
575
+ }
576
+
577
+ .ui-icon-comment {
578
+ background-position: -128px -96px;
579
+ }
580
+
581
+ .ui-icon-person {
582
+ background-position: -144px -96px;
583
+ }
584
+
585
+ .ui-icon-print {
586
+ background-position: -160px -96px;
587
+ }
588
+
589
+ .ui-icon-trash {
590
+ background-position: -176px -96px;
591
+ }
592
+
593
+ .ui-icon-locked {
594
+ background-position: -192px -96px;
595
+ }
596
+
597
+ .ui-icon-unlocked {
598
+ background-position: -208px -96px;
599
+ }
600
+
601
+ .ui-icon-bookmark {
602
+ background-position: -224px -96px;
603
+ }
604
+
605
+ .ui-icon-tag {
606
+ background-position: -240px -96px;
607
+ }
608
+
609
+ .ui-icon-home {
610
+ background-position: 0 -112px;
611
+ }
612
+
613
+ .ui-icon-flag {
614
+ background-position: -16px -112px;
615
+ }
616
+
617
+ .ui-icon-calendar {
618
+ background-position: -32px -112px;
619
+ }
620
+
621
+ .ui-icon-cart {
622
+ background-position: -48px -112px;
623
+ }
624
+
625
+ .ui-icon-pencil {
626
+ background-position: -64px -112px;
627
+ }
628
+
629
+ .ui-icon-clock {
630
+ background-position: -80px -112px;
631
+ }
632
+
633
+ .ui-icon-disk {
634
+ background-position: -96px -112px;
635
+ }
636
+
637
+ .ui-icon-calculator {
638
+ background-position: -112px -112px;
639
+ }
640
+
641
+ .ui-icon-zoomin {
642
+ background-position: -128px -112px;
643
+ }
644
+
645
+ .ui-icon-zoomout {
646
+ background-position: -144px -112px;
647
+ }
648
+
649
+ .ui-icon-search {
650
+ background-position: -160px -112px;
651
+ }
652
+
653
+ .ui-icon-wrench {
654
+ background-position: -176px -112px;
655
+ }
656
+
657
+ .ui-icon-gear {
658
+ background-position: -192px -112px;
659
+ }
660
+
661
+ .ui-icon-heart {
662
+ background-position: -208px -112px;
663
+ }
664
+
665
+ .ui-icon-star {
666
+ background-position: -224px -112px;
667
+ }
668
+
669
+ .ui-icon-link {
670
+ background-position: -240px -112px;
671
+ }
672
+
673
+ .ui-icon-cancel {
674
+ background-position: 0 -128px;
675
+ }
676
+
677
+ .ui-icon-plus {
678
+ background-position: -16px -128px;
679
+ }
680
+
681
+ .ui-icon-plusthick {
682
+ background-position: -32px -128px;
683
+ }
684
+
685
+ .ui-icon-minus {
686
+ background-position: -48px -128px;
687
+ }
688
+
689
+ .ui-icon-minusthick {
690
+ background-position: -64px -128px;
691
+ }
692
+
693
+ .ui-icon-close {
694
+ background-position: -80px -128px;
695
+ }
696
+
697
+ .ui-icon-closethick {
698
+ background-position: -96px -128px;
699
+ }
700
+
701
+ .ui-icon-key {
702
+ background-position: -112px -128px;
703
+ }
704
+
705
+ .ui-icon-lightbulb {
706
+ background-position: -128px -128px;
707
+ }
708
+
709
+ .ui-icon-scissors {
710
+ background-position: -144px -128px;
711
+ }
712
+
713
+ .ui-icon-clipboard {
714
+ background-position: -160px -128px;
715
+ }
716
+
717
+ .ui-icon-copy {
718
+ background-position: -176px -128px;
719
+ }
720
+
721
+ .ui-icon-contact {
722
+ background-position: -192px -128px;
723
+ }
724
+
725
+ .ui-icon-image {
726
+ background-position: -208px -128px;
727
+ }
728
+
729
+ .ui-icon-video {
730
+ background-position: -224px -128px;
731
+ }
732
+
733
+ .ui-icon-script {
734
+ background-position: -240px -128px;
735
+ }
736
+
737
+ .ui-icon-alert {
738
+ background-position: 0 -144px;
739
+ }
740
+
741
+ .ui-icon-info {
742
+ background-position: -16px -144px;
743
+ }
744
+
745
+ .ui-icon-notice {
746
+ background-position: -32px -144px;
747
+ }
748
+
749
+ .ui-icon-help {
750
+ background-position: -48px -144px;
751
+ }
752
+
753
+ .ui-icon-check {
754
+ background-position: -64px -144px;
755
+ }
756
+
757
+ .ui-icon-bullet {
758
+ background-position: -80px -144px;
759
+ }
760
+
761
+ .ui-icon-radio-off {
762
+ background-position: -96px -144px;
763
+ }
764
+
765
+ .ui-icon-radio-on {
766
+ background-position: -112px -144px;
767
+ }
768
+
769
+ .ui-icon-pin-w {
770
+ background-position: -128px -144px;
771
+ }
772
+
773
+ .ui-icon-pin-s {
774
+ background-position: -144px -144px;
775
+ }
776
+
777
+ .ui-icon-play {
778
+ background-position: 0 -160px;
779
+ }
780
+
781
+ .ui-icon-pause {
782
+ background-position: -16px -160px;
783
+ }
784
+
785
+ .ui-icon-seek-next {
786
+ background-position: -32px -160px;
787
+ }
788
+
789
+ .ui-icon-seek-prev {
790
+ background-position: -48px -160px;
791
+ }
792
+
793
+ .ui-icon-seek-end {
794
+ background-position: -64px -160px;
795
+ }
796
+
797
+ .ui-icon-seek-start {
798
+ background-position: -80px -160px;
799
+ }
800
+
801
+ /* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
802
+ .ui-icon-seek-first {
803
+ background-position: -80px -160px;
804
+ }
805
+
806
+ .ui-icon-stop {
807
+ background-position: -96px -160px;
808
+ }
809
+
810
+ .ui-icon-eject {
811
+ background-position: -112px -160px;
812
+ }
813
+
814
+ .ui-icon-volume-off {
815
+ background-position: -128px -160px;
816
+ }
817
+
818
+ .ui-icon-volume-on {
819
+ background-position: -144px -160px;
820
+ }
821
+
822
+ .ui-icon-power {
823
+ background-position: 0 -176px;
824
+ }
825
+
826
+ .ui-icon-signal-diag {
827
+ background-position: -16px -176px;
828
+ }
829
+
830
+ .ui-icon-signal {
831
+ background-position: -32px -176px;
832
+ }
833
+
834
+ .ui-icon-battery-0 {
835
+ background-position: -48px -176px;
836
+ }
837
+
838
+ .ui-icon-battery-1 {
839
+ background-position: -64px -176px;
840
+ }
841
+
842
+ .ui-icon-battery-2 {
843
+ background-position: -80px -176px;
844
+ }
845
+
846
+ .ui-icon-battery-3 {
847
+ background-position: -96px -176px;
848
+ }
849
+
850
+ .ui-icon-circle-plus {
851
+ background-position: 0 -192px;
852
+ }
853
+
854
+ .ui-icon-circle-minus {
855
+ background-position: -16px -192px;
856
+ }
857
+
858
+ .ui-icon-circle-close {
859
+ background-position: -32px -192px;
860
+ }
861
+
862
+ .ui-icon-circle-triangle-e {
863
+ background-position: -48px -192px;
864
+ }
865
+
866
+ .ui-icon-circle-triangle-s {
867
+ background-position: -64px -192px;
868
+ }
869
+
870
+ .ui-icon-circle-triangle-w {
871
+ background-position: -80px -192px;
872
+ }
873
+
874
+ .ui-icon-circle-triangle-n {
875
+ background-position: -96px -192px;
876
+ }
877
+
878
+ .ui-icon-circle-arrow-e {
879
+ background-position: -112px -192px;
880
+ }
881
+
882
+ .ui-icon-circle-arrow-s {
883
+ background-position: -128px -192px;
884
+ }
885
+
886
+ .ui-icon-circle-arrow-w {
887
+ background-position: -144px -192px;
888
+ }
889
+
890
+ .ui-icon-circle-arrow-n {
891
+ background-position: -160px -192px;
892
+ }
893
+
894
+ .ui-icon-circle-zoomin {
895
+ background-position: -176px -192px;
896
+ }
897
+
898
+ .ui-icon-circle-zoomout {
899
+ background-position: -192px -192px;
900
+ }
901
+
902
+ .ui-icon-circle-check {
903
+ background-position: -208px -192px;
904
+ }
905
+
906
+ .ui-icon-circlesmall-plus {
907
+ background-position: 0 -208px;
908
+ }
909
+
910
+ .ui-icon-circlesmall-minus {
911
+ background-position: -16px -208px;
912
+ }
913
+
914
+ .ui-icon-circlesmall-close {
915
+ background-position: -32px -208px;
916
+ }
917
+
918
+ .ui-icon-squaresmall-plus {
919
+ background-position: -48px -208px;
920
+ }
921
+
922
+ .ui-icon-squaresmall-minus {
923
+ background-position: -64px -208px;
924
+ }
925
+
926
+ .ui-icon-squaresmall-close {
927
+ background-position: -80px -208px;
928
+ }
929
+
930
+ .ui-icon-grip-dotted-vertical {
931
+ background-position: 0 -224px;
932
+ }
933
+
934
+ .ui-icon-grip-dotted-horizontal {
935
+ background-position: -16px -224px;
936
+ }
937
+
938
+ .ui-icon-grip-solid-vertical {
939
+ background-position: -32px -224px;
940
+ }
941
+
942
+ .ui-icon-grip-solid-horizontal {
943
+ background-position: -48px -224px;
944
+ }
945
+
946
+ .ui-icon-gripsmall-diagonal-se {
947
+ background-position: -64px -224px;
948
+ }
949
+
950
+ .ui-icon-grip-diagonal-se {
951
+ background-position: -80px -224px;
952
+ }
953
+
954
+ /* Misc visuals
955
+ ----------------------------------*/
956
+
957
+ /* Corner radius */
958
+ .ui-corner-tl {
959
+ -moz-border-radius-topleft: 4px;
960
+ -webkit-border-top-left-radius: 4px;
961
+ border-top-left-radius: 4px;
962
+ }
963
+
964
+ .ui-corner-tr {
965
+ -moz-border-radius-topright: 4px;
966
+ -webkit-border-top-right-radius: 4px;
967
+ border-top-right-radius: 4px;
968
+ }
969
+
970
+ .ui-corner-bl {
971
+ -moz-border-radius-bottomleft: 4px;
972
+ -webkit-border-bottom-left-radius: 4px;
973
+ border-bottom-left-radius: 4px;
974
+ }
975
+
976
+ .ui-corner-br {
977
+ -moz-border-radius-bottomright: 4px;
978
+ -webkit-border-bottom-right-radius: 4px;
979
+ border-bottom-right-radius: 4px;
980
+ }
981
+
982
+ .ui-corner-top {
983
+ -moz-border-radius-topleft: 4px;
984
+ -webkit-border-top-left-radius: 4px;
985
+ border-top-left-radius: 4px;
986
+ -moz-border-radius-topright: 4px;
987
+ -webkit-border-top-right-radius: 4px;
988
+ border-top-right-radius: 4px;
989
+ }
990
+
991
+ .ui-corner-bottom {
992
+ -moz-border-radius-bottomleft: 4px;
993
+ -webkit-border-bottom-left-radius: 4px;
994
+ border-bottom-left-radius: 4px;
995
+ -moz-border-radius-bottomright: 4px;
996
+ -webkit-border-bottom-right-radius: 4px;
997
+ border-bottom-right-radius: 4px;
998
+ }
999
+
1000
+ .ui-corner-right {
1001
+ -moz-border-radius-topright: 4px;
1002
+ -webkit-border-top-right-radius: 4px;
1003
+ border-top-right-radius: 4px;
1004
+ -moz-border-radius-bottomright: 4px;
1005
+ -webkit-border-bottom-right-radius: 4px;
1006
+ border-bottom-right-radius: 4px;
1007
+ }
1008
 
1009
+ .ui-corner-left {
1010
+ -moz-border-radius-topleft: 4px;
1011
+ -webkit-border-top-left-radius: 4px;
1012
+ border-top-left-radius: 4px;
1013
+ -moz-border-radius-bottomleft: 4px;
1014
+ -webkit-border-bottom-left-radius: 4px;
1015
+ border-bottom-left-radius: 4px;
1016
+ }
1017
 
1018
+ .ui-corner-all {
1019
+ -moz-border-radius: 4px;
1020
+ -webkit-border-radius: 4px;
1021
+ border-radius: 4px;
1022
+ }
1023
 
1024
+ /* Overlays */
1025
+ .ui-widget-overlay {
1026
+ background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;
1027
+ opacity: .30;
1028
+ filter: Alpha(Opacity=30);
1029
+ }
1030
 
1031
+ .ui-widget-shadow {
1032
+ margin: -8px 0 0 -8px;
1033
+ padding: 8px;
1034
+ background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;
1035
+ opacity: .30;
1036
+ filter: Alpha(Opacity=30);
1037
+ -moz-border-radius: 8px;
1038
+ -webkit-border-radius: 8px;
1039
+ border-radius: 8px;
1040
+ }
1041
+
1042
+ /* Resizable
1043
  ----------------------------------*/
1044
+ .ui-resizable {
1045
+ position: relative;
1046
+ }
1047
 
1048
+ .ui-resizable-handle {
1049
+ position: absolute;
1050
+ font-size: 0.1px;
1051
+ z-index: 99999;
1052
+ display: block;
1053
+ }
1054
 
1055
+ .ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle {
1056
+ display: none;
1057
+ }
1058
 
1059
+ .ui-resizable-n {
1060
+ cursor: n-resize;
1061
+ height: 7px;
1062
+ width: 100%;
1063
+ top: -5px;
1064
+ left: 0;
1065
+ }
1066
 
1067
+ .ui-resizable-s {
1068
+ cursor: s-resize;
1069
+ height: 7px;
1070
+ width: 100%;
1071
+ bottom: -5px;
1072
+ left: 0;
1073
+ }
1074
 
1075
+ .ui-resizable-e {
1076
+ cursor: e-resize;
1077
+ width: 7px;
1078
+ right: -5px;
1079
+ top: 0;
1080
+ height: 100%;
1081
+ }
1082
 
1083
+ .ui-resizable-w {
1084
+ cursor: w-resize;
1085
+ width: 7px;
1086
+ left: -5px;
1087
+ top: 0;
1088
+ height: 100%;
1089
+ }
1090
 
1091
+ .ui-resizable-se {
1092
+ cursor: se-resize;
1093
+ width: 12px;
1094
+ height: 12px;
1095
+ right: 1px;
1096
+ bottom: 1px;
1097
+ }
1098
 
1099
+ .ui-resizable-sw {
1100
+ cursor: sw-resize;
1101
+ width: 9px;
1102
+ height: 9px;
1103
+ left: -5px;
1104
+ bottom: -5px;
1105
+ }
 
 
1106
 
1107
+ .ui-resizable-nw {
1108
+ cursor: nw-resize;
1109
+ width: 9px;
1110
+ height: 9px;
1111
+ left: -5px;
1112
+ top: -5px;
1113
+ }
 
 
1114
 
1115
+ .ui-resizable-ne {
1116
+ cursor: ne-resize;
1117
+ width: 9px;
1118
+ height: 9px;
1119
+ right: -5px;
1120
+ top: -5px;
1121
+ }
1122
+
1123
+ /* Selectable
1124
  ----------------------------------*/
1125
+ .ui-selectable-helper {
1126
+ border: 1px dotted black
1127
+ }
 
 
 
 
 
1128
 
1129
+ /* Accordion
1130
  ----------------------------------*/
1131
+ .ui-accordion .ui-accordion-header {
1132
+ cursor: pointer;
1133
+ position: relative;
1134
+ margin-top: 1px;
1135
+ zoom: 1;
1136
+ }
1137
 
1138
+ .ui-accordion .ui-accordion-li-fix {
1139
+ display: inline;
1140
+ }
 
 
 
 
 
 
1141
 
1142
+ .ui-accordion .ui-accordion-header-active {
1143
+ border-bottom: 0 !important;
1144
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1145
 
1146
+ .ui-accordion .ui-accordion-header a {
1147
+ display: block;
1148
+ font-size: 1em;
1149
+ padding: .5em .5em .5em .7em;
1150
+ }
1151
 
1152
+ /* IE7-/Win - Fix extra vertical space in lists */
1153
+ .ui-accordion a {
1154
+ zoom: 1;
1155
+ }
1156
 
1157
+ .ui-accordion-icons .ui-accordion-header a {
1158
+ padding-left: 2.2em;
1159
+ }
 
 
 
 
 
 
 
1160
 
1161
+ .ui-accordion .ui-accordion-header .ui-icon {
1162
+ position: absolute;
1163
+ left: .5em;
1164
+ top: 50%;
1165
+ margin-top: -8px;
1166
+ }
1167
+
1168
+ .ui-accordion .ui-accordion-content {
1169
+ padding: 1em 2.2em;
1170
+ border-top: 0;
1171
+ margin-top: -2px;
1172
+ position: relative;
1173
+ top: 1px;
1174
+ margin-bottom: 2px;
1175
+ overflow: auto;
1176
+ display: none;
1177
+ zoom: 1;
1178
+ }
1179
+
1180
+ .ui-accordion .ui-accordion-content-active {
1181
+ display: block;
1182
+ }
1183
+
1184
+ /* Autocomplete
 
 
 
 
 
1185
  ----------------------------------*/
1186
+ .ui-autocomplete {
1187
+ position: absolute;
1188
+ cursor: default;
1189
+ }
1190
+
1191
+ .ui-autocomplete-loading {
1192
+ background: white url('images/ui-anim_basic_16x16.gif') right center no-repeat;
1193
+ }
1194
 
1195
  /* workarounds */
1196
+ * html .ui-autocomplete {
1197
+ width: 1px;
1198
+ }
1199
+
1200
+ /* without this, the menu expands to 100% in IE6 */
1201
 
1202
  /* Menu
1203
  ----------------------------------*/
1204
  .ui-menu {
1205
+ list-style: none;
1206
+ padding: 2px;
1207
+ margin: 0;
1208
+ display: block;
1209
  }
1210
+
1211
  .ui-menu .ui-menu {
1212
+ margin-top: -3px;
1213
  }
1214
+
1215
  .ui-menu .ui-menu-item {
1216
+ margin: 0;
1217
+ padding: 0;
1218
+ zoom: 1;
1219
+ float: left;
1220
+ clear: left;
1221
+ width: 100%;
1222
  }
1223
+
1224
  .ui-menu .ui-menu-item a {
1225
+ text-decoration: none;
1226
+ display: block;
1227
+ padding: .2em .4em;
1228
+ line-height: 1.5;
1229
+ zoom: 1;
1230
  }
1231
+
1232
  .ui-menu .ui-menu-item a.ui-state-hover,
1233
  .ui-menu .ui-menu-item a.ui-state-active {
1234
+ font-weight: normal;
1235
+ margin: -1px;
1236
  }
1237
+
1238
  /* Button
1239
  ----------------------------------*/
1240
 
1241
+ .ui-button {
1242
+ display: inline-block;
1243
+ position: relative;
1244
+ padding: 0;
1245
+ margin-right: .1em;
1246
+ text-decoration: none !important;
1247
+ cursor: pointer;
1248
+ text-align: center;
1249
+ zoom: 1;
1250
+ overflow: visible;
1251
+ }
1252
+
1253
+ /* the overflow property removes extra width in IE */
1254
+ .ui-button-icon-only {
1255
+ width: 2.2em;
1256
+ }
1257
+
1258
+ /* to make room for the icon, a width needs to be set here */
1259
+ button.ui-button-icon-only {
1260
+ width: 2.4em;
1261
+ }
1262
+
1263
+ /* button elements seem to need a little more width */
1264
+ .ui-button-icons-only {
1265
+ width: 3.4em;
1266
+ }
1267
+
1268
+ button.ui-button-icons-only {
1269
+ width: 3.7em;
1270
+ }
1271
 
1272
  /*button text element */
1273
+ .ui-button .ui-button-text {
1274
+ display: block;
1275
+ line-height: 1.4;
1276
+ }
1277
+
1278
+ .ui-button-text-only .ui-button-text {
1279
+ padding: .4em 1em;
1280
+ }
1281
+
1282
+ .ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text {
1283
+ padding: .4em;
1284
+ text-indent: -9999999px;
1285
+ }
1286
+
1287
+ .ui-button-text-icon .ui-button-text, .ui-button-text-icons .ui-button-text {
1288
+ padding: .4em 1em .4em 2.1em;
1289
+ }
1290
+
1291
+ .ui-button-text-icons .ui-button-text {
1292
+ padding-left: 2.1em;
1293
+ padding-right: 2.1em;
1294
+ }
1295
+
1296
  /* no icon support for input elements, provide padding by default */
1297
+ input.ui-button {
1298
+ padding: .4em 1em;
1299
+ }
1300
 
1301
  /*button icon element(s) */
1302
+ .ui-button-icon-only .ui-icon, .ui-button-text-icon .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon {
1303
+ position: absolute;
1304
+ top: 50%;
1305
+ margin-top: -8px;
1306
+ }
1307
 
1308
+ .ui-button-icon-only .ui-icon {
1309
+ left: 50%;
1310
+ margin-left: -8px;
1311
+ }
1312
 
1313
+ .ui-button-text-icon .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary {
1314
+ left: .5em;
1315
+ }
1316
+
1317
+ .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary {
1318
+ right: .5em;
1319
+ }
1320
 
1321
+ /*button sets*/
1322
+ .ui-buttonset {
1323
+ margin-right: 7px;
1324
+ }
1325
 
1326
+ .ui-buttonset .ui-button {
1327
+ margin-left: 0;
1328
+ margin-right: -.3em;
1329
+ }
1330
 
1331
+ /* workarounds */
1332
+ button.ui-button::-moz-focus-inner {
1333
+ border: 0;
1334
+ padding: 0;
1335
+ }
1336
 
1337
+ /* reset extra padding in Firefox */
1338
 
1339
  /* Dialog
1340
  ----------------------------------*/
1341
+ .ui-dialog {
1342
+ position: absolute;
1343
+ padding: .2em;
1344
+ width: 300px;
1345
+ overflow: hidden;
1346
+ }
1347
+
1348
+ .ui-dialog .ui-dialog-titlebar {
1349
+ padding: .5em 1em .3em;
1350
+ position: relative;
1351
+ }
1352
+
1353
+ .ui-dialog .ui-dialog-title {
1354
+ float: left;
1355
+ margin: .1em 16px .2em 0;
1356
+ }
1357
+
1358
+ .ui-dialog .ui-dialog-titlebar-close {
1359
+ position: absolute;
1360
+ right: .3em;
1361
+ top: 50%;
1362
+ width: 19px;
1363
+ margin: -10px 0 0 0;
1364
+ padding: 1px;
1365
+ height: 18px;
1366
+ }
1367
+
1368
+ .ui-dialog .ui-dialog-titlebar-close span {
1369
+ display: block;
1370
+ margin: 1px;
1371
+ }
1372
+
1373
+ .ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus {
1374
+ padding: 0;
1375
+ }
1376
+
1377
+ .ui-dialog .ui-dialog-content {
1378
+ border: 0;
1379
+ padding: .5em 1em;
1380
+ background: none;
1381
+ overflow: auto;
1382
+ zoom: 1;
1383
+ }
1384
+
1385
+ .ui-dialog .ui-dialog-buttonpane {
1386
+ text-align: left;
1387
+ border-width: 1px 0 0 0;
1388
+ background-image: none;
1389
+ margin: .5em 0 0 0;
1390
+ padding: .3em 1em .5em .4em;
1391
+ }
1392
+
1393
+ .ui-dialog .ui-dialog-buttonpane button {
1394
+ float: right;
1395
+ margin: .5em .4em .5em 0;
1396
+ cursor: pointer;
1397
+ padding: .2em .6em .3em .6em;
1398
+ line-height: 1.4em;
1399
+ width: auto;
1400
+ overflow: visible;
1401
+ }
1402
+
1403
+ .ui-dialog .ui-resizable-se {
1404
+ width: 14px;
1405
+ height: 14px;
1406
+ right: 3px;
1407
+ bottom: 3px;
1408
+ }
1409
+
1410
+ .ui-draggable .ui-dialog-titlebar {
1411
+ cursor: move;
1412
+ }
1413
+
1414
  /* Slider
1415
  ----------------------------------*/
1416
+ .ui-slider {
1417
+ position: relative;
1418
+ text-align: left;
1419
+ }
1420
+
1421
+ .ui-slider .ui-slider-handle {
1422
+ position: absolute;
1423
+ z-index: 2;
1424
+ width: 1.2em;
1425
+ height: 1.2em;
1426
+ cursor: default;
1427
+ }
1428
+
1429
+ .ui-slider .ui-slider-range {
1430
+ position: absolute;
1431
+ z-index: 1;
1432
+ font-size: .7em;
1433
+ display: block;
1434
+ border: 0;
1435
+ background-position: 0 0;
1436
+ }
1437
+
1438
+ .ui-slider-horizontal {
1439
+ height: .8em;
1440
+ }
1441
+
1442
+ .ui-slider-horizontal .ui-slider-handle {
1443
+ top: -.3em;
1444
+ margin-left: -.6em;
1445
+ }
1446
+
1447
+ .ui-slider-horizontal .ui-slider-range {
1448
+ top: 0;
1449
+ height: 100%;
1450
+ }
1451
+
1452
+ .ui-slider-horizontal .ui-slider-range-min {
1453
+ left: 0;
1454
+ }
1455
+
1456
+ .ui-slider-horizontal .ui-slider-range-max {
1457
+ right: 0;
1458
+ }
1459
+
1460
+ .ui-slider-vertical {
1461
+ width: .8em;
1462
+ height: 100px;
1463
+ }
1464
+
1465
+ .ui-slider-vertical .ui-slider-handle {
1466
+ left: -.3em;
1467
+ margin-left: 0;
1468
+ margin-bottom: -.6em;
1469
+ }
1470
+
1471
+ .ui-slider-vertical .ui-slider-range {
1472
+ left: 0;
1473
+ width: 100%;
1474
+ }
1475
+
1476
+ .ui-slider-vertical .ui-slider-range-min {
1477
+ bottom: 0;
1478
+ }
1479
+
1480
+ .ui-slider-vertical .ui-slider-range-max {
1481
+ top: 0;
1482
+ }
1483
+
1484
+ /* Tabs
1485
  ----------------------------------*/
1486
+ .ui-tabs {
1487
+ position: relative;
1488
+ padding: .2em;
1489
+ zoom: 1;
1490
+ }
1491
+
1492
+ /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
1493
+ .ui-tabs .ui-tabs-nav {
1494
+ margin: 0;
1495
+ padding: .2em .2em 0;
1496
+ }
1497
+
1498
+ .ui-tabs .ui-tabs-nav li {
1499
+ list-style: none;
1500
+ float: left;
1501
+ position: relative;
1502
+ top: 1px;
1503
+ margin: 0 .2em 1px 0;
1504
+ border-bottom: 0 !important;
1505
+ padding: 0;
1506
+ white-space: nowrap;
1507
+ }
1508
+
1509
+ .ui-tabs .ui-tabs-nav li a {
1510
+ float: left;
1511
+ padding: .5em 1em;
1512
+ text-decoration: none;
1513
+ }
1514
+
1515
+ .ui-tabs .ui-tabs-nav li.ui-tabs-selected {
1516
+ margin-bottom: 0;
1517
+ padding-bottom: 1px;
1518
+ }
1519
+
1520
+ .ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a {
1521
+ cursor: text;
1522
+ }
1523
+
1524
+ .ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a {
1525
+ cursor: pointer;
1526
+ }
1527
+
1528
+ /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
1529
+ .ui-tabs .ui-tabs-panel {
1530
+ display: block;
1531
+ border-width: 0;
1532
+ padding: 1em 1.4em;
1533
+ background: none;
1534
+ }
1535
+
1536
+ .ui-tabs .ui-tabs-hide {
1537
+ display: none !important;
1538
+ }
1539
+
1540
  /* Datepicker
1541
  ----------------------------------*/
1542
+ .ui-datepicker {
1543
+ width: 17em;
1544
+ padding: .2em .2em 0;
1545
+ }
1546
+
1547
+ .ui-datepicker .ui-datepicker-header {
1548
+ position: relative;
1549
+ padding: .2em 0;
1550
+ }
1551
+
1552
+ .ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next {
1553
+ position: absolute;
1554
+ top: 2px;
1555
+ width: 1.8em;
1556
+ height: 1.8em;
1557
+ }
1558
+
1559
+ .ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover {
1560
+ top: 1px;
1561
+ }
1562
+
1563
+ .ui-datepicker .ui-datepicker-prev {
1564
+ left: 2px;
1565
+ }
1566
+
1567
+ .ui-datepicker .ui-datepicker-next {
1568
+ right: 2px;
1569
+ }
1570
+
1571
+ .ui-datepicker .ui-datepicker-prev-hover {
1572
+ left: 1px;
1573
+ }
1574
+
1575
+ .ui-datepicker .ui-datepicker-next-hover {
1576
+ right: 1px;
1577
+ }
1578
+
1579
+ .ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span {
1580
+ display: block;
1581
+ position: absolute;
1582
+ left: 50%;
1583
+ margin-left: -8px;
1584
+ top: 50%;
1585
+ margin-top: -8px;
1586
+ }
1587
+
1588
+ .ui-datepicker .ui-datepicker-title {
1589
+ margin: 0 2.3em;
1590
+ line-height: 1.8em;
1591
+ text-align: center;
1592
+ }
1593
+
1594
+ .ui-datepicker .ui-datepicker-title select {
1595
+ font-size: 1em;
1596
+ margin: 1px 0;
1597
+ }
1598
+
1599
+ .ui-datepicker select.ui-datepicker-month-year {
1600
+ width: 100%;
1601
+ }
1602
+
1603
+ .ui-datepicker select.ui-datepicker-month,
1604
+ .ui-datepicker select.ui-datepicker-year {
1605
+ width: 49%;
1606
+ }
1607
+
1608
+ .ui-datepicker table {
1609
+ width: 100%;
1610
+ font-size: .9em;
1611
+ border-collapse: collapse;
1612
+ margin: 0 0 .4em;
1613
+ }
1614
+
1615
+ .ui-datepicker th {
1616
+ padding: .7em .3em;
1617
+ text-align: center;
1618
+ font-weight: bold;
1619
+ border: 0;
1620
+ }
1621
+
1622
+ .ui-datepicker td {
1623
+ border: 0;
1624
+ padding: 1px;
1625
+ }
1626
+
1627
+ .ui-datepicker td span, .ui-datepicker td a {
1628
+ display: block;
1629
+ padding: .2em;
1630
+ text-align: right;
1631
+ text-decoration: none;
1632
+ }
1633
+
1634
+ .ui-datepicker .ui-datepicker-buttonpane {
1635
+ background-image: none;
1636
+ margin: .7em 0 0 0;
1637
+ padding: 0 .2em;
1638
+ border-left: 0;
1639
+ border-right: 0;
1640
+ border-bottom: 0;
1641
+ }
1642
+
1643
+ .ui-datepicker .ui-datepicker-buttonpane button {
1644
+ float: right;
1645
+ margin: .5em .2em .4em;
1646
+ cursor: pointer;
1647
+ padding: .2em .6em .3em .6em;
1648
+ width: auto;
1649
+ overflow: visible;
1650
+ }
1651
+
1652
+ .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current {
1653
+ float: left;
1654
+ }
1655
 
1656
  /* with multiple calendars */
1657
+ .ui-datepicker.ui-datepicker-multi {
1658
+ width: auto;
1659
+ }
1660
+
1661
+ .ui-datepicker-multi .ui-datepicker-group {
1662
+ float: left;
1663
+ }
1664
+
1665
+ .ui-datepicker-multi .ui-datepicker-group table {
1666
+ width: 95%;
1667
+ margin: 0 auto .4em;
1668
+ }
1669
+
1670
+ .ui-datepicker-multi-2 .ui-datepicker-group {
1671
+ width: 50%;
1672
+ }
1673
+
1674
+ .ui-datepicker-multi-3 .ui-datepicker-group {
1675
+ width: 33.3%;
1676
+ }
1677
+
1678
+ .ui-datepicker-multi-4 .ui-datepicker-group {
1679
+ width: 25%;
1680
+ }
1681
+
1682
+ .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header {
1683
+ border-left-width: 0;
1684
+ }
1685
+
1686
+ .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header {
1687
+ border-left-width: 0;
1688
+ }
1689
+
1690
+ .ui-datepicker-multi .ui-datepicker-buttonpane {
1691
+ clear: left;
1692
+ }
1693
+
1694
+ .ui-datepicker-row-break {
1695
+ clear: both;
1696
+ width: 100%;
1697
+ }
1698
 
1699
  /* RTL support */
1700
+ .ui-datepicker-rtl {
1701
+ direction: rtl;
1702
+ }
1703
+
1704
+ .ui-datepicker-rtl .ui-datepicker-prev {
1705
+ right: 2px;
1706
+ left: auto;
1707
+ }
1708
+
1709
+ .ui-datepicker-rtl .ui-datepicker-next {
1710
+ left: 2px;
1711
+ right: auto;
1712
+ }
1713
+
1714
+ .ui-datepicker-rtl .ui-datepicker-prev:hover {
1715
+ right: 1px;
1716
+ left: auto;
1717
+ }
1718
+
1719
+ .ui-datepicker-rtl .ui-datepicker-next:hover {
1720
+ left: 1px;
1721
+ right: auto;
1722
+ }
1723
+
1724
+ .ui-datepicker-rtl .ui-datepicker-buttonpane {
1725
+ clear: right;
1726
+ }
1727
+
1728
+ .ui-datepicker-rtl .ui-datepicker-buttonpane button {
1729
+ float: left;
1730
+ }
1731
+
1732
+ .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current {
1733
+ float: right;
1734
+ }
1735
+
1736
+ .ui-datepicker-rtl .ui-datepicker-group {
1737
+ float: right;
1738
+ }
1739
+
1740
+ .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header {
1741
+ border-right-width: 0;
1742
+ border-left-width: 1px;
1743
+ }
1744
+
1745
+ .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header {
1746
+ border-right-width: 0;
1747
+ border-left-width: 1px;
1748
+ }
1749
 
1750
  /* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
1751
  .ui-datepicker-cover {
1752
  display: none; /*sorry for IE5*/
1753
+ display /**/: block; /*sorry for IE5*/
1754
  position: absolute; /*must have*/
1755
  z-index: -1; /*must have*/
1756
  filter: mask(); /*must have*/
1758
  left: -4px; /*must have*/
1759
  width: 200px; /*must have*/
1760
  height: 200px; /*must have*/
1761
+ }
1762
+
1763
+ /* Progressbar
1764
  ----------------------------------*/
1765
+ .ui-progressbar {
1766
+ height: 2em;
1767
+ text-align: left;
1768
+ }
1769
+
1770
+ .ui-progressbar .ui-progressbar-value {
1771
+ margin: -1px;
1772
+ height: 100%;
1773
+ }
css/jquery.fileupload.css CHANGED
@@ -11,26 +11,27 @@
11
  */
12
 
13
  .fileinput-button {
14
- position: relative;
15
- overflow: hidden;
16
  }
 
17
  .fileinput-button input {
18
- position: absolute;
19
- top: 0;
20
- right: 0;
21
- margin: 0;
22
- opacity: 0;
23
- -ms-filter: 'alpha(opacity=0)';
24
- font-size: 200px;
25
- direction: ltr;
26
- cursor: pointer;
27
  }
28
 
29
  /* Fixes for IE < 8 */
30
  @media screen\9 {
31
- .fileinput-button input {
32
- filter: alpha(opacity=0);
33
- font-size: 100%;
34
- height: 100%;
35
- }
36
  }
11
  */
12
 
13
  .fileinput-button {
14
+ position: relative;
15
+ overflow: hidden;
16
  }
17
+
18
  .fileinput-button input {
19
+ position: absolute;
20
+ top: 0;
21
+ right: 0;
22
+ margin: 0;
23
+ opacity: 0;
24
+ -ms-filter: 'alpha(opacity=0)';
25
+ font-size: 200px;
26
+ direction: ltr;
27
+ cursor: pointer;
28
  }
29
 
30
  /* Fixes for IE < 8 */
31
  @media screen\9 {
32
+ .fileinput-button input {
33
+ filter: alpha(opacity=0);
34
+ font-size: 100%;
35
+ height: 100%;
36
+ }
37
  }
css/main.css CHANGED
@@ -1,586 +1,656 @@
1
  #accordion {
2
- width:98%;
3
- margin-right:15px;
4
- margin-top: 22px;
5
- float:left;
6
- }
7
-
8
- .accordion-body {
9
- background: #fff;
10
- }
11
- .tooltip_smack { -moz-padding-start:135px; }
12
-
13
- #accordion h3{
14
- font: normal 12px Verdana;
15
- text-decoration: none;
16
- position: relative;
17
- padding: 7px 22px;
18
- color: #fff;
19
- outline:none;
20
- background: #222222;
21
- border:1px solid #333333;
22
- margin-top:-10px;
23
- /*text-transform:uppercase; */
24
  }
25
-
26
- #accordion h3:hover{
27
- top: 0px;
28
- font-weight:normal;
29
- background: #333;
30
- color: #2EA2CC;
31
- }
32
- #sec-one, #sec-two, #sec-three, #sec-four{
33
- border:1px solid #CCC;
34
- margin-top:-13px;
35
- width:100%;
36
- background: #FFF;
37
- }
38
-
39
- #sec-two{
40
- height:auto;
41
- }
42
-
43
- .csv-top-navigation-wrapper{
44
- border-bottom: 1px solid #B7B7B7;
45
- display: block;
46
- height: 28px;
47
- margin-bottom: 20px;
48
- margin-top: 20px;
49
- padding-bottom: 2px;
50
- -webkit-padding-before:0px;
51
- -webkit-padding-end:0px;
52
- -webkit-padding-after:0px;
53
- -webkit-padding-start:0px;
54
- width: 100%;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
55
  }
56
 
57
- .csv-top-navigation-wrapper li{
58
- float:left;
59
- display: inline;
60
- margin: 0;
61
- margin-right:4px;
62
- font: normal 12px Verdana;
63
- text-decoration: none;
64
- position: relative;
65
- padding: 6px 10px;
66
- -webkit-padding-before:5px;
67
- -webkit-padding-end:15px;
68
- -webkit-padding-after:5px;
69
- -webkit-padding-start:15px;
70
- border: 1px solid #333333;
71
- color: #000;
72
- /*text-transform:uppercase; */
73
- /*background: #F7F7F7 url(../images/tabbg2.gif) repeat-x 0 0;*/
74
- background: #222222;
75
- border-radius: 3px 3px 0 0;
76
- outline:none;
77
  }
78
- .csv-top-navigation-wrapper li a{
79
- text-decoration: none;
80
- color: #ffffff;
81
  }
82
- .csv-top-navigation-wrapper li a:hover{
83
- color: #2EA2CC;
 
 
84
  }
85
- .csv-top-navigation-wrapper li:hover{
86
- /*background:White url(../images/tabbg.gif) repeat-x 0 0;*/
87
- background: #333333;
 
 
 
88
  }
89
- .csv-top-navigation-wrapper li.selected{
90
- /*background:White url(../images/tabbg.gif) repeat-x 0 0;*/
91
- /*font-weight: bold;*/
92
- background: #0074A2;
93
- /*text-transform:uppercase;*/
94
  }
95
- .csv-top-navigation-wrapper li.selected a:hover{
96
- color: #FFFFFF;
 
97
  }
98
- .navigationMenu{
99
- text-decoration: none;
 
100
  }
101
 
102
- .selected{
 
 
103
 
 
 
104
  }
105
- .section-one{
106
- padding-top:15px;
 
 
107
  }
108
- .section-one input{
109
- width:65px;
 
110
  }
111
- .importer_icon img{
112
- padding-right: 5px;
113
- padding-top: 8px;
114
- }
115
-
116
- .importfile{
117
- /* height : 300px; */
118
  }
119
 
120
- .uploadlabel{
121
- float:left;
122
- width:100px;
123
- padding-top:10px;
124
  }
125
- .mandatory{
126
- color:red;
 
 
 
 
127
  }
128
- .progress{
129
- /*margin:10px 10px 0px 15px; */
130
- width:90%;
131
- float:right;
132
- margin-top:5px;
133
  }
134
- .fileinput-button{
135
- float:left;
 
 
 
 
 
 
 
 
136
  }
137
- .smackhelpswitcher{
138
- border-bottom: 1px solid #A2A29D;
139
- background-color: #E8F1F5;
140
- text-decoration:none;
141
- padding: 5px;
142
- font-size: medium;
143
- font-weight: bold;
144
- padding: 7px;
145
- min-width:600px;
146
  }
147
- .switchercontent li input[type="checkbox"], .switchercontent input[type="checkbox"], .supportedplugins input[type="radio"] {
148
- margin-top: -2px;
 
149
  }
150
- .mappingsection{
151
 
 
 
152
  }
153
- .importstatus{
154
- padding:10px 0px 35px 10px;
 
155
  }
156
- .mappingheader{
157
- margin-top:15px;
 
 
158
  }
159
- .mappingactions > span a.tooltip{
160
- -webkit-margin-start: 130px;
161
- -webkit-margin-end: 0px;
 
 
 
 
 
162
  }
 
163
  .panel {
164
- margin-bottom: 20px;
165
- background-color: #fff;
166
- border: 1px solid transparent;
167
- border-radius: 4px;
168
- -webkit-box-shadow: 0 1px 1px rgba(0,0,0,0.05);
169
- box-shadow: 0 1px 1px rgba(0,0,0,0.05);
170
- }
171
- .panel{
172
- margin-top:40px;
173
- text-align:left;
174
- padding:10px;
175
- margin-bottom:0px;
176
- }
177
- .panel h4{
178
- font-weight: bold;
179
- padding-bottom:3px;
180
  }
 
181
  .progress {
182
- height: 20px;
183
- overflow: hidden;
184
- background-color: #f5f5f5;
185
- border-radius: 4px;
186
- -webkit-box-shadow: inset 0 1px 2px rgba(0,0,0,0.1);
187
- box-shadow: inset 0 1px 2px rgba(0,0,0,0.1);
188
  }
 
189
  .btn-success {
190
- color: #fff;
191
- background-color: #5cb85c;
192
- border-color: #4cae4c;
193
  }
 
194
  .btn {
195
- display: inline-block;
196
- padding: 6px 12px;
197
- margin-bottom: 0;
198
- font-size: 14px;
199
- font-weight: normal;
200
- line-height: 1.428571429;
201
- text-align: center;
202
- white-space: nowrap;
203
- vertical-align: middle;
204
- cursor: pointer;
205
- border: 1px solid transparent;
206
- border-radius: 4px;
207
- -webkit-user-select: none;
208
- -moz-user-select: none;
209
- -ms-user-select: none;
210
- -o-user-select: none;
211
- user-select: none;
212
  }
 
213
  .glyphicon {
214
- position: relative;
215
- top: 1px;
216
- display: inline-block;
217
- font-family: 'Glyphicons Halflings';
218
- -webkit-font-smoothing: antialiased;
219
- font-style: normal;
220
- font-weight: normal;
221
- line-height: 1;
222
  }
 
223
  .glyphicon-plus:before {
224
- content: "+";
225
  }
 
226
  .progress-bar-success {
227
- background-color: #5cb85c;
228
  }
 
229
  .progress-bar {
230
- float: left;
231
- width: 0;
232
- height: 100%;
233
- font-size: 12px;
234
- color: #fff;
235
- text-align: center;
236
- -webkit-box-shadow: inset 0 -1px 0 rgba(0,0,0,0.15);
237
- box-shadow: inset 0 -1px 0 rgba(0,0,0,0.15);
238
- -webkit-transition: width .6s ease;
239
- transition: width .6s ease;
240
  }
 
241
  .container {
242
- max-width: 1170px;
243
  }
 
244
  .container {
245
- padding-right: 15px;
246
- padding-left: 15px;
247
- margin-right: auto;
248
- margin-left: auto;
249
  }
 
250
  .container:before, .container:after {
251
- display: table;
252
- content: " ";
253
  }
 
254
  .panel-default {
255
- border-color: #ddd;
256
- }
257
- .reportLog h3{
258
- font: normal 12px Verdana;
259
- text-decoration: none;
260
- position: relative;
261
- padding: 7px 22px;
262
- color: #FFF;
263
- outline: none;
264
- background: #222;
265
- border: 1px solid #CCC;
266
- margin-top: -13px;
267
- /*text-transform:uppercase; */
268
- -webkit-margin-before: 1em;
269
- -webkit-margin-after: 1em;
270
- -webkit-margin-start: 0px;
271
- -webkit-margin-end: 0px;
272
- }
273
- .reportLog h3:hover{
274
- color: #2EA2CC;
275
- background: #333;
276
- }
277
- .reportLog{
278
- width:35%;
279
- float:right;
280
- margin-right:15px;
281
- height:350px;
 
 
 
282
  }
 
283
  @-moz-document url-prefix() {
284
- .reportLog{
285
  margin-top: 26px;
286
  }
287
- }
288
- .logcontainer{
289
- height:300px;
290
- border: 1px solid #CCC;
291
- margin-top: -13px;
292
- overflow-y: scroll;
293
- background: #fff;
294
  }
295
 
296
- .delimeter
297
- {
298
- float:left;
299
- margin-left:35px;
300
- margin-top:7px;
301
- margin-bottom:7px;
302
  }
303
 
304
- .cutompostview
305
- {
306
- margin-left:10px;
 
 
 
 
 
 
 
 
 
 
307
  }
308
 
309
- #goto_element{
310
- width:85px;
 
 
 
 
 
 
 
 
311
  }
312
 
313
- a.tooltip {outline:none; }
314
- a.tooltip strong {line-height:20px;}
315
- a.tooltip:hover {text-decoration:none;}
316
  a.tooltip span {
317
- z-index:10;display:none; padding:3px 12px;
 
 
318
  }
319
 
320
- a.tooltip:hover span{
321
- display:inline; position:absolute; color:#111;
322
- border:1px solid #DCA; background:#fffAF0;}
323
- .callout {z-index:20;position:absolute;top:8px;border:0;left:-12px;}
 
 
 
324
 
325
- a.tooltip span
326
- {
327
- border-radius:4px;
328
- -moz-border-radius: 4px;
329
- -webkit-border-radius: 4px;
 
 
 
 
 
 
 
330
 
331
- -moz-box-shadow: 5px 5px 8px #CCC;
332
- -webkit-box-shadow: 5px 5px 8px #CCC;
333
- box-shadow: 5px 5px 8px #CCC;
334
  }
335
- .tooltipCustompost
336
- {
337
- margin-top:-27px;
338
- margin-left:27px;
339
- width:225px;
340
- line-height:30px;
341
  }
342
 
343
- .tooltipPostStatus
344
- {
345
- min-height:50px;
346
- margin-top:-13px;
347
- margin-left:13px;
348
- width:325px;
349
- line-height:20px;
350
- -webkit-margin-start: 28px;
351
- -webkit-margin-end: 0px;
352
- -webkit-margin-before: -28px;
353
  }
354
 
355
- .tooltipClearMapping
356
- {
357
- margin-top:-13px;
358
- margin-left:13px;
359
- width:225px;
360
- line-height:30px;
361
- -webkit-margin-start: 21px;
362
- -webkit-margin-end: 0px;
363
- -webkit-margin-before: -28px;
364
  }
365
 
366
- .goto_importer_setting
367
- {
368
- margin-left:50px;
369
- margin-bottom:50px;
370
  }
371
 
372
- .clear_mapping
373
- {
374
- /*margin-left:25px;*/
375
  }
376
 
377
  .maperror {
378
- position: fixed;
379
- z-index: 999;
380
- width: 250px;
381
- right: 200px;
382
  }
383
 
384
  .error {
385
- background-color: #FAEBE7 !important;
386
- border: 1px solid #F16048 !important;
387
- color: #DF280A !important;
388
  }
389
 
390
  .msg {
391
- font-weight: bold !important;
392
- margin: 0 auto !important;
393
- width: 60%;
394
- text-align: center;
395
- min-height: 23px !important;
396
- padding: 8px 8px 2px 32px !important;
397
- margin-top: 5px !important;
398
- }
399
- .warning
400
- {
401
- float:left;
402
- padding: 5px 5px;
403
- border: 2px solid red;
404
- border-radius:4px;
405
- -moz-border-radius: 4px;
406
- -webkit-border-radius: 4px;
407
- margin-left:100px;
408
- margin-top:20px;
409
  }
410
 
411
- .warnings
412
- {
413
- padding: 10px 10px;
414
- border: 2px solid red;
415
- border-radius:4px;
416
- -moz-border-radius: 4px;
417
- -webkit-border-radius: 4px;
418
- /* top:190px; */
419
- position:relative;
420
  }
421
 
 
 
 
 
 
 
 
 
 
422
 
423
- .secondformheader{
424
- padding-left:20px;
425
  }
426
 
427
- #settings{
428
- line-height:200%;
429
  }
430
 
431
- .left_align{
432
- /*padding-left: 15px;*/
433
  }
434
- .table-importer{
435
- width:100%;
 
436
  }
437
 
438
- .moreMenu
439
- {
440
- z-index:5 !important;
441
- background-color: #222222 !important;
442
  }
443
- .moreMenu ul
444
- {
445
- display: none;
446
  }
447
 
448
- .moreMenu:hover > ul
449
- {
450
- color: #ffffff;
451
- display: block;
452
- position:absolute;
453
- margin-top:7px;
454
- margin-left:-16px;
455
  }
 
456
  .moreMenu ul li {
457
- width:145px;
458
  }
 
459
  .moreMenu li {
460
- position:relative;
461
  }
 
462
  /*.contactus
463
  {
464
  width: 300px;
465
  } */
466
- #contactus, #usefullinks
467
- {
468
- width: 50%;
469
- padding-top : 10px;
470
- float:left;
471
- }
472
- .usefullinks{
473
- padding-top: 12px;
474
- }
475
- .promobox .accordion-inner{
476
- padding:14px;
477
- }
478
- #promobox{
479
- height:auto;
480
- width:50%;
481
- padding : 10px;
482
- }
483
- #pluginpromo{
484
- margin-top:15px;
485
- }
486
- #pluginpromo, #promobox{
487
- float:left;
488
- }
489
- .stars li{
490
- float:left;
491
- width:20px;
492
- height:20px;
493
- background-color:#fff;
494
- border:1px solid #ccc;
495
- font-size:10px;
496
- border-radius:50%;
497
- text-align:center;
498
- line-height:20px;
499
- margin-right:3px;
500
- transition:all 0.2s linear;
501
- }
502
- .stars:hover li{
503
- background-color:yellow;
504
- }
505
- .stars li:hover ~ li{
506
- background-color:#fff;
507
- }
508
- .sociallink{
509
- margin-right:12px;
510
- }
511
- .plugintags a{
512
- /*background-color: #767676;
513
- border-radius: 0 2px 2px 0;
514
- color: #fff; */
515
- display: inline-block;
516
- font-size: 11px;
517
- font-weight: 700;
518
- line-height: 1.2727272727;
519
- margin: 2px 4px 2px 10px;
520
- padding: 3px 7px;
521
- position: relative;
522
- /*text-transform: uppercase; */
523
- text-decoration: none;
524
- }
525
- .plugintags a:before{
526
- /*border-top: 10px solid transparent;
527
- border-right: 8px solid #767676;
528
- border-bottom: 10px solid transparent; */
529
- content: "";
530
- height: 0;
531
- position: absolute;
532
- top: 0;
533
- left: -8px;
534
- width: 0;
535
- }
536
- .plugintags a:after{
537
- background-color: #fff;
538
- border-radius: 50%;
539
- content: "";
540
- height: 4px;
541
- position: absolute;
542
- top: 8px;
543
- left: -2px;
544
- width: 4px;
545
- }
546
- .plugintags a:hover{
547
- /*background: #2ea2cc;
548
- color: #fff;
549
- text-shadow: none;
550
- */
551
- }
552
- .moreMenuList
553
- {
554
- border-radius: 0 !important;
555
  }
556
- .msgborder
557
- {
558
- padding:10px;
559
- border: 2px solid green;
560
- border-radius:4px;
561
- -moz-border-radius: 4px;
562
- -webkit-border-radius: 4px;
563
- margin-top:30px;
564
- margin-bottom:20px;
565
- position:relative;
566
- }
567
- #filenamedisplay{
568
- height:65px;
569
- padding-top: 30px;
570
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
571
  input[type="checkbox"], #duplicatecontent {
572
- margin-top: 0px;
573
- -webkit-margin-start: -5px;
574
- -webkit-margin-end: 0px;
575
  }
576
 
577
- #cust_post_empty
578
- {
579
- color:red;
580
- margin-left:100px;
581
- margin-top: 7px;
582
- font-size:20px;
583
  }
584
- .prolinks{
585
- padding: 0px 10px;
 
586
  }
1
  #accordion {
2
+ width: 98%;
3
+ margin-right: 15px;
4
+ margin-top: 22px;
5
+ float: left;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6
  }
7
+
8
+ .accordion-body {
9
+ background: #fff;
10
+ }
11
+
12
+ .tooltip_smack {
13
+ -moz-padding-start: 135px;
14
+ }
15
+
16
+ #accordion h3 {
17
+ font: normal 12px Verdana;
18
+ text-decoration: none;
19
+ position: relative;
20
+ padding: 7px 22px;
21
+ color: #fff;
22
+ outline: none;
23
+ background: #222222;
24
+ border: 1px solid #333333;
25
+ margin-top: -10px;
26
+ /*text-transform:uppercase; */
27
+ }
28
+
29
+ #accordion h3:hover {
30
+ top: 0px;
31
+ font-weight: normal;
32
+ background: #333;
33
+ color: #2EA2CC;
34
+ }
35
+
36
+ #sec-one, #sec-two, #sec-three, #sec-four {
37
+ border: 1px solid #CCC;
38
+ margin-top: -13px;
39
+ width: 100%;
40
+ background: #FFF;
41
+ }
42
+
43
+ #sec-two {
44
+ height: auto;
45
+ }
46
+
47
+ .csv-top-navigation-wrapper {
48
+ border-bottom: 1px solid #B7B7B7;
49
+ display: block;
50
+ height: 28px;
51
+ margin-bottom: 20px;
52
+ margin-top: 20px;
53
+ padding-bottom: 2px;
54
+ -webkit-padding-before: 0px;
55
+ -webkit-padding-end: 0px;
56
+ -webkit-padding-after: 0px;
57
+ -webkit-padding-start: 0px;
58
+ width: 100%;
59
+ }
60
+
61
+ .csv-top-navigation-wrapper li {
62
+ float: left;
63
+ display: inline;
64
+ margin: 0;
65
+ margin-right: 4px;
66
+ font: normal 12px Verdana;
67
+ text-decoration: none;
68
+ position: relative;
69
+ padding: 6px 10px;
70
+ -webkit-padding-before: 5px;
71
+ -webkit-padding-end: 15px;
72
+ -webkit-padding-after: 5px;
73
+ -webkit-padding-start: 15px;
74
+ border: 1px solid #333333;
75
+ color: #000;
76
+ /*text-transform:uppercase; */
77
+ /*background: #F7F7F7 url(../images/tabbg2.gif) repeat-x 0 0;*/
78
+ background: #222222;
79
+ border-radius: 3px 3px 0 0;
80
+ outline: none;
81
  }
82
 
83
+ .csv-top-navigation-wrapper li a {
84
+ text-decoration: none;
85
+ color: #ffffff;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
86
  }
87
+
88
+ .csv-top-navigation-wrapper li a:hover {
89
+ color: #2EA2CC;
90
  }
91
+
92
+ .csv-top-navigation-wrapper li:hover {
93
+ /*background:White url(../images/tabbg.gif) repeat-x 0 0;*/
94
+ background: #333333;
95
  }
96
+
97
+ .csv-top-navigation-wrapper li.selected {
98
+ /*background:White url(../images/tabbg.gif) repeat-x 0 0;*/
99
+ /*font-weight: bold;*/
100
+ background: #0074A2;
101
+ /*text-transform:uppercase;*/
102
  }
103
+
104
+ .csv-top-navigation-wrapper li.selected a:hover {
105
+ color: #FFFFFF;
 
 
106
  }
107
+
108
+ .navigationMenu {
109
+ text-decoration: none;
110
  }
111
+
112
+ .selected {
113
+
114
  }
115
 
116
+ .section-one {
117
+ padding-top: 15px;
118
+ }
119
 
120
+ .section-one input {
121
+ width: 65px;
122
  }
123
+
124
+ .importer_icon img {
125
+ padding-right: 5px;
126
+ padding-top: 8px;
127
  }
128
+
129
+ .importfile {
130
+ /* height : 300px; */
131
  }
132
+
133
+ .uploadlabel {
134
+ float: left;
135
+ width: 100px;
136
+ padding-top: 10px;
 
 
137
  }
138
 
139
+ .mandatory {
140
+ color: red;
 
 
141
  }
142
+
143
+ .progress {
144
+ /*margin:10px 10px 0px 15px; */
145
+ width: 90%;
146
+ float: right;
147
+ margin-top: 5px;
148
  }
149
+
150
+ .fileinput-button {
151
+ float: left;
 
 
152
  }
153
+
154
+ .smackhelpswitcher {
155
+ border-bottom: 1px solid #A2A29D;
156
+ background-color: #E8F1F5;
157
+ text-decoration: none;
158
+ padding: 5px;
159
+ font-size: medium;
160
+ font-weight: bold;
161
+ padding: 7px;
162
+ min-width: 600px;
163
  }
164
+
165
+ .switchercontent li input[type="checkbox"], .switchercontent input[type="checkbox"], .supportedplugins input[type="radio"] {
166
+ margin-top: -2px;
 
 
 
 
 
 
167
  }
168
+
169
+ .mappingsection {
170
+
171
  }
 
172
 
173
+ .importstatus {
174
+ padding: 10px 0px 35px 10px;
175
  }
176
+
177
+ .mappingheader {
178
+ margin-top: 15px;
179
  }
180
+
181
+ .mappingactions > span a.tooltip {
182
+ -webkit-margin-start: 130px;
183
+ -webkit-margin-end: 0px;
184
  }
185
+
186
+ .panel {
187
+ margin-bottom: 20px;
188
+ background-color: #fff;
189
+ border: 1px solid transparent;
190
+ border-radius: 4px;
191
+ -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
192
+ box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
193
  }
194
+
195
  .panel {
196
+ margin-top: 40px;
197
+ text-align: left;
198
+ padding: 10px;
199
+ margin-bottom: 0px;
200
+ }
201
+
202
+ .panel h4 {
203
+ font-weight: bold;
204
+ padding-bottom: 3px;
 
 
 
 
 
 
 
205
  }
206
+
207
  .progress {
208
+ height: 20px;
209
+ overflow: hidden;
210
+ background-color: #f5f5f5;
211
+ border-radius: 4px;
212
+ -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
213
+ box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
214
  }
215
+
216
  .btn-success {
217
+ color: #fff;
218
+ background-color: #5cb85c;
219
+ border-color: #4cae4c;
220
  }
221
+
222
  .btn {
223
+ display: inline-block;
224
+ padding: 6px 12px;
225
+ margin-bottom: 0;
226
+ font-size: 14px;
227
+ font-weight: normal;
228
+ line-height: 1.428571429;
229
+ text-align: center;
230
+ white-space: nowrap;
231
+ vertical-align: middle;
232
+ cursor: pointer;
233
+ border: 1px solid transparent;
234
+ border-radius: 4px;
235
+ -webkit-user-select: none;
236
+ -moz-user-select: none;
237
+ -ms-user-select: none;
238
+ -o-user-select: none;
239
+ user-select: none;
240
  }
241
+
242
  .glyphicon {
243
+ position: relative;
244
+ top: 1px;
245
+ display: inline-block;
246
+ font-family: 'Glyphicons Halflings';
247
+ -webkit-font-smoothing: antialiased;
248
+ font-style: normal;
249
+ font-weight: normal;
250
+ line-height: 1;
251
  }
252
+
253
  .glyphicon-plus:before {
254
+ content: "+";
255
  }
256
+
257
  .progress-bar-success {
258
+ background-color: #5cb85c;
259
  }
260
+
261
  .progress-bar {
262
+ float: left;
263
+ width: 0;
264
+ height: 100%;
265
+ font-size: 12px;
266
+ color: #fff;
267
+ text-align: center;
268
+ -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
269
+ box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
270
+ -webkit-transition: width .6s ease;
271
+ transition: width .6s ease;
272
  }
273
+
274
  .container {
275
+ max-width: 1170px;
276
  }
277
+
278
  .container {
279
+ padding-right: 15px;
280
+ padding-left: 15px;
281
+ margin-right: auto;
282
+ margin-left: auto;
283
  }
284
+
285
  .container:before, .container:after {
286
+ display: table;
287
+ content: " ";
288
  }
289
+
290
  .panel-default {
291
+ border-color: #ddd;
292
+ }
293
+
294
+ .reportLog h3 {
295
+ font: normal 12px Verdana;
296
+ text-decoration: none;
297
+ position: relative;
298
+ padding: 7px 22px;
299
+ color: #FFF;
300
+ outline: none;
301
+ background: #222;
302
+ border: 1px solid #CCC;
303
+ margin-top: -13px;
304
+ /*text-transform:uppercase; */
305
+ -webkit-margin-before: 1em;
306
+ -webkit-margin-after: 1em;
307
+ -webkit-margin-start: 0px;
308
+ -webkit-margin-end: 0px;
309
+ }
310
+
311
+ .reportLog h3:hover {
312
+ color: #2EA2CC;
313
+ background: #333;
314
+ }
315
+
316
+ .reportLog {
317
+ width: 35%;
318
+ float: right;
319
+ margin-right: 15px;
320
+ height: 350px;
321
  }
322
+
323
  @-moz-document url-prefix() {
324
+ .reportLog {
325
  margin-top: 26px;
326
  }
 
 
 
 
 
 
 
327
  }
328
 
329
+ .logcontainer {
330
+ height: 300px;
331
+ border: 1px solid #CCC;
332
+ margin-top: -13px;
333
+ overflow-y: scroll;
334
+ background: #fff;
335
  }
336
 
337
+ .delimeter {
338
+ float: left;
339
+ margin-left: 35px;
340
+ margin-top: 7px;
341
+ margin-bottom: 7px;
342
+ }
343
+
344
+ .cutompostview {
345
+ margin-left: 10px;
346
+ }
347
+
348
+ #goto_element {
349
+ width: 85px;
350
  }
351
 
352
+ a.tooltip {
353
+ outline: none;
354
+ }
355
+
356
+ a.tooltip strong {
357
+ line-height: 20px;
358
+ }
359
+
360
+ a.tooltip:hover {
361
+ text-decoration: none;
362
  }
363
 
 
 
 
364
  a.tooltip span {
365
+ z-index: 10;
366
+ display: none;
367
+ padding: 3px 12px;
368
  }
369
 
370
+ a.tooltip:hover span {
371
+ display: inline;
372
+ position: absolute;
373
+ color: #111;
374
+ border: 1px solid #DCA;
375
+ background: #fffAF0;
376
+ }
377
 
378
+ .callout {
379
+ z-index: 20;
380
+ position: absolute;
381
+ top: 8px;
382
+ border: 0;
383
+ left: -12px;
384
+ }
385
+
386
+ a.tooltip span {
387
+ border-radius: 4px;
388
+ -moz-border-radius: 4px;
389
+ -webkit-border-radius: 4px;
390
 
391
+ -moz-box-shadow: 5px 5px 8px #CCC;
392
+ -webkit-box-shadow: 5px 5px 8px #CCC;
393
+ box-shadow: 5px 5px 8px #CCC;
394
  }
395
+
396
+ .tooltipCustompost {
397
+ margin-top: -27px;
398
+ margin-left: 27px;
399
+ width: 225px;
400
+ line-height: 30px;
401
  }
402
 
403
+ .tooltipPostStatus {
404
+ min-height: 50px;
405
+ margin-top: -13px;
406
+ margin-left: 13px;
407
+ width: 325px;
408
+ line-height: 20px;
409
+ -webkit-margin-start: 28px;
410
+ -webkit-margin-end: 0px;
411
+ -webkit-margin-before: -28px;
 
412
  }
413
 
414
+ .tooltipClearMapping {
415
+ margin-top: -13px;
416
+ margin-left: 13px;
417
+ width: 225px;
418
+ line-height: 30px;
419
+ -webkit-margin-start: 21px;
420
+ -webkit-margin-end: 0px;
421
+ -webkit-margin-before: -28px;
 
422
  }
423
 
424
+ .goto_importer_setting {
425
+ margin-left: 50px;
426
+ margin-bottom: 50px;
 
427
  }
428
 
429
+ .clear_mapping {
430
+ /*margin-left:25px;*/
 
431
  }
432
 
433
  .maperror {
434
+ position: fixed;
435
+ z-index: 999;
436
+ width: 250px;
437
+ right: 200px;
438
  }
439
 
440
  .error {
441
+ background-color: #FAEBE7 !important;
442
+ border: 1px solid #F16048 !important;
443
+ color: #DF280A !important;
444
  }
445
 
446
  .msg {
447
+ font-weight: bold !important;
448
+ margin: 0 auto !important;
449
+ width: 60%;
450
+ text-align: center;
451
+ min-height: 23px !important;
452
+ padding: 8px 8px 2px 32px !important;
453
+ margin-top: 5px !important;
 
 
 
 
 
 
 
 
 
 
 
454
  }
455
 
456
+ .warning {
457
+ float: left;
458
+ padding: 5px 5px;
459
+ border: 2px solid red;
460
+ border-radius: 4px;
461
+ -moz-border-radius: 4px;
462
+ -webkit-border-radius: 4px;
463
+ margin-left: 100px;
464
+ margin-top: 20px;
465
  }
466
 
467
+ .warnings {
468
+ padding: 10px 10px;
469
+ border: 2px solid red;
470
+ border-radius: 4px;
471
+ -moz-border-radius: 4px;
472
+ -webkit-border-radius: 4px;
473
+ /* top:190px; */
474
+ position: relative;
475
+ }
476
 
477
+ .secondformheader {
478
+ padding-left: 20px;
479
  }
480
 
481
+ #settings {
482
+ line-height: 200%;
483
  }
484
 
485
+ .left_align {
486
+ /*padding-left: 15px;*/
487
  }
488
+
489
+ .table-importer {
490
+ width: 100%;
491
  }
492
 
493
+ .moreMenu {
494
+ z-index: 5 !important;
495
+ background-color: #222222 !important;
 
496
  }
497
+
498
+ .moreMenu ul {
499
+ display: none;
500
  }
501
 
502
+ .moreMenu:hover > ul {
503
+ color: #ffffff;
504
+ display: block;
505
+ position: absolute;
506
+ margin-top: 7px;
507
+ margin-left: -16px;
 
508
  }
509
+
510
  .moreMenu ul li {
511
+ width: 145px;
512
  }
513
+
514
  .moreMenu li {
515
+ position: relative;
516
  }
517
+
518
  /*.contactus
519
  {
520
  width: 300px;
521
  } */
522
+ #contactus, #usefullinks {
523
+ width: 50%;
524
+ padding-top: 10px;
525
+ float: left;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
526
  }
527
+
528
+ .usefullinks {
529
+ padding-top: 12px;
530
+ }
531
+
532
+ .promobox .accordion-inner {
533
+ padding: 14px;
 
 
 
 
 
 
 
534
  }
535
+
536
+ #promobox {
537
+ height: auto;
538
+ width: 50%;
539
+ padding: 10px;
540
+ }
541
+
542
+ #pluginpromo {
543
+ margin-top: 15px;
544
+ }
545
+
546
+ #pluginpromo, #promobox {
547
+ float: left;
548
+ }
549
+
550
+ .stars li {
551
+ float: left;
552
+ width: 20px;
553
+ height: 20px;
554
+ background-color: #fff;
555
+ border: 1px solid #ccc;
556
+ font-size: 10px;
557
+ border-radius: 50%;
558
+ text-align: center;
559
+ line-height: 20px;
560
+ margin-right: 3px;
561
+ transition: all 0.2s linear;
562
+ }
563
+
564
+ .stars:hover li {
565
+ background-color: yellow;
566
+ }
567
+
568
+ .stars li:hover ~ li {
569
+ background-color: #fff;
570
+ }
571
+
572
+ .sociallink {
573
+ margin-right: 12px;
574
+ }
575
+
576
+ .plugintags a {
577
+ /*background-color: #767676;
578
+ border-radius: 0 2px 2px 0;
579
+ color: #fff; */
580
+ display: inline-block;
581
+ font-size: 11px;
582
+ font-weight: 700;
583
+ line-height: 1.2727272727;
584
+ margin: 2px 4px 2px 10px;
585
+ padding: 3px 7px;
586
+ position: relative;
587
+ /*text-transform: uppercase; */
588
+ text-decoration: none;
589
+ }
590
+
591
+ .plugintags a:before {
592
+ /*border-top: 10px solid transparent;
593
+ border-right: 8px solid #767676;
594
+ border-bottom: 10px solid transparent; */
595
+ content: "";
596
+ height: 0;
597
+ position: absolute;
598
+ top: 0;
599
+ left: -8px;
600
+ width: 0;
601
+ }
602
+
603
+ .plugintags a:after {
604
+ background-color: #fff;
605
+ border-radius: 50%;
606
+ content: "";
607
+ height: 4px;
608
+ position: absolute;
609
+ top: 8px;
610
+ left: -2px;
611
+ width: 4px;
612
+ }
613
+
614
+ .plugintags a:hover {
615
+ /*background: #2ea2cc;
616
+ color: #fff;
617
+ text-shadow: none;
618
+ */
619
+ }
620
+
621
+ .moreMenuList {
622
+ border-radius: 0 !important;
623
+ }
624
+
625
+ .msgborder {
626
+ padding: 10px;
627
+ border: 2px solid green;
628
+ border-radius: 4px;
629
+ -moz-border-radius: 4px;
630
+ -webkit-border-radius: 4px;
631
+ margin-top: 30px;
632
+ margin-bottom: 20px;
633
+ position: relative;
634
+ }
635
+
636
+ #filenamedisplay {
637
+ height: 65px;
638
+ padding-top: 30px;
639
+ }
640
+
641
  input[type="checkbox"], #duplicatecontent {
642
+ margin-top: 0px;
643
+ -webkit-margin-start: -5px;
644
+ -webkit-margin-end: 0px;
645
  }
646
 
647
+ #cust_post_empty {
648
+ color: red;
649
+ margin-left: 100px;
650
+ margin-top: 7px;
651
+ font-size: 20px;
 
652
  }
653
+
654
+ .prolinks {
655
+ padding: 0px 10px;
656
  }
css/morris.css ADDED
@@ -0,0 +1,2 @@
 
 
1
+ .morris-hover{position:absolute;z-index:1000}.morris-hover.morris-default-style{border-radius:10px;padding:6px;color:#666;background:rgba(255,255,255,0.8);border:solid 2px rgba(230,230,230,0.8);font-family:sans-serif;font-size:12px;text-align:center}.morris-hover.morris-default-style .morris-hover-row-label{font-weight:bold;margin:0.25em 0}
2
+ .morris-hover.morris-default-style .morris-hover-point{white-space:nowrap;margin:0.1em 0}
css/style.css CHANGED
@@ -14,258 +14,320 @@ body {
14
  }
15
 
16
  .container-fluid {
17
- /* padding-left: 20px; */
18
- padding-right: 20px;
19
- width: 100%;
20
- *zoom: 1;
21
  }
 
22
  .container-fluid:before, .container-fluid:after {
23
- display: table;
24
- content: "";
25
  }
 
26
  .container-fluid:after {
27
- clear: both;
28
  }
 
29
  .accordion {
30
- margin-bottom: 18px;
31
  }
 
32
  .accordion-group {
33
- margin-bottom: 2px;
34
- border: 1px solid #e5e5e5;
35
- -webkit-border-radius: 4px;
36
- -moz-border-radius: 4px;
37
- border-radius: 4px;
38
  }
 
 
 
 
 
 
 
 
 
 
 
 
39
  .activate {
40
- color:#fff;
41
- background-color:#0074A2;
42
- }
43
- .deactivate {
44
 
 
45
 
46
- }
47
 
48
  .accordion-heading {
49
- border-bottom: 0;
50
  }
51
- .accordion-heading a{
52
- text-decoration: none;
53
- color:#ffffff;
 
54
  }
 
55
  .accordion-heading .accordion-toggle {
56
- display: block;
57
- padding: 8px 15px;
58
  }
59
- .accordion-heading a:hover{
60
- color:#2EA2CC;
61
- text-decoration: none;
 
62
  }
 
63
  .accordion-inner {
64
- padding: 9px 15px;
65
- background:#ffffff;
66
- border-top: 1px solid #e5e5e5;
67
  }
 
68
  .accordion-group {
69
- margin-bottom: 2px;
70
- border: 1px solid #e5e5e5;
71
- -webkit-border-radius: 4px;
72
- -moz-border-radius: 4px;
73
- border-radius: 4px;
74
  }
 
75
  .accordion-heading {
76
- border-bottom: 0;
77
- background:#222222;
78
  }
 
79
  .accordion-heading .accordion-toggle {
80
- display: block;
81
- padding: 8px 15px;
82
- font: 12px Verdana;
83
  }
 
84
  .accordion-inner {
85
- padding: 9px 10px;
86
- border-top: 1px solid #e5e5e5;
87
  }
 
88
  .collapse {
89
- -webkit-transition: height 0.35s ease;
90
- -moz-transition: height 0.35s ease;
91
- -ms-transition: height 0.35s ease;
92
- -o-transition: height 0.35s ease;
93
- transition: height 0.35s ease;
94
- position: relative;
95
- overflow: hidden;
96
- height: 0;
97
  }
 
98
  .collapse.in {
99
- height: auto;
100
  }
 
101
  .nav-collapse.collapse {
102
- height: auto;
103
  }
104
- .success{
105
- background-color:#EAF0D5;
106
- border:1px solid #008000;
 
107
  }
108
 
109
- .alert{
110
- text-align:center;
111
- padding:10px;
112
- margin:5px;
113
- border-radius:3px;
114
  }
 
115
  .alert-warning {
116
- background-color: #FAEBE7 !important;
117
- border: 1px solid #F16048 !important;
118
- color: #DF280A !important;
119
  }
120
- .pluginAbsent:hover{
121
- color:red;
 
122
  }
123
- .pluginPresent:hover{
124
- color:red;
 
125
  }
126
- .pluginActive:hover{
127
- color:green;
 
128
  }
129
- .container-fluid label{
130
- display: block;
131
- /*font-size: 1.2em;*/
132
- padding:7px 10px;
 
133
  }
134
- .typeofplugin{
135
- font-size: 1.3em;
 
136
  }
137
- .supportedplugins td{
138
- width:230px;
 
139
  }
 
140
  .typeofplugin {
141
- text-transform:uppercase;
142
  }
143
- td.plugintype{
144
- width:230px;
 
145
  }
146
- .box-one{
147
- height:350px;
148
- width:100%;
 
149
  }
150
- .top-left-box,.top-right-box{
151
- width:48%;
152
- height:350px;
153
- margin-right:20px;
 
154
  }
155
- .top-left-box{
156
- float:left;
 
157
  }
158
- .top-right-box{
159
- float: left;
160
- width: 98%;
 
161
  }
162
- .top-left-box h3,.top-right-box h3,.fileManager h3{
163
- padding:10px;
164
- background: #222222;
165
- border-color: #D2E3EB;
166
- /*border-top-left-radius: 5px;
167
- border-top-right-radius: 5px; */
168
- font-weight: normal;
169
- font-size: 1.5em;
170
- color:#ffffff;
 
171
  }
172
- .top-left-box h3:hover,.top-right-box h3:hover,.fileManager h3:hover{
173
- color:#ffffff;
 
174
  }
175
- .top-left-content,.top-right-content{
176
- border: 1px solid #dddddd;
177
- height: 275px;
178
- margin-top: -16px;
179
- background: #ffffff;
 
180
  }
181
- .fileManager{
182
- width:98%;
 
183
  }
184
- .manager-content{
185
- height:auto;
186
- margin-top: -12px;
187
- /*border: 1px solid #2e8965;*/
188
- border: 1px solid #dddddd;
189
- border-top: 1px solid #333333;
 
190
  }
191
- .manager-actions{
192
- width:200px;
 
193
  }
194
- .manageraction{
195
- margin-right:15px;
196
- cursor:pointer;
 
197
  }
198
- .file-version{
199
- width:100px;
 
200
  }
201
- .importedtime,.updatedtime{
202
- width:150px;
 
203
  }
204
- .importedtype{
205
- width:225px;
 
206
  }
207
- .importedfilename{
208
- width:250px;
 
209
  }
210
- .selectall{
211
- width:60px;
 
212
  }
213
- .center{
214
- text-align:center;
 
215
  }
216
- .header-icon{
217
- margin-right:15px;
 
218
  }
 
219
  .form-group label {
220
- /* margin-top:8px; */
221
- margin-top : 0px;
222
- -webkit-margin-start: 8px;
223
- -webkit-margin-end: 0px;
224
  }
225
- .mappingactions{
226
- width:300px;
 
227
  }
 
228
  .importstatus label {
229
- margin-top:12px
230
  }
231
- .importstatus span{
232
- /*margin-top:15px;*/
233
- padding: 0 5px;
 
234
  }
 
235
  .newmoduleicon {
236
- z-index: 1000;
237
- margin-top: -12px;
238
- margin-left: -10px;
239
- position: absolute;
240
  }
 
241
  .method-row {
242
- width:100%;
243
  }
244
 
245
  .importfileoption .header-text {
246
- font-size: 1.3em;
247
- font-weight: bold;
248
  }
249
 
250
  .method1, .method2, .method3, .method4 {
251
- padding: 15px 0;
252
  }
253
 
254
  .method1 img, .method2 img, .method3 img, .method4 img, #showmappingtemplate img, .databaseoptimization img {
255
- margin-top:-25px;
256
  }
257
 
258
  #boxmethod1, #boxmethod2, #boxmethod3, #boxmethod4 {
259
- padding: 10px;
260
  }
261
 
262
  .scheduling-config {
263
- width:80%;
264
  }
265
 
266
  .scheduling-config td {
267
- padding: 8px;
268
  }
 
269
  div#mappingheader select {
270
  width: 170px;
271
  }
@@ -282,46 +344,46 @@ div#mappingheader select {
282
  }
283
 
284
  .method-row {
285
- width:100%;
286
  }
287
 
288
  #checkallModules, #uncheckallModules {
289
- background:none!important;
290
- border:none;
291
- padding:0!important;
292
- color: #0099D5;
293
- text-decoration:none;
294
 
295
  }
296
 
297
  .left_align {
298
- width:23%;
299
  }
300
 
301
  .exportmodule > thead > tr > th, .exportmodule > tbody > tr > th, .exportmodule > tfoot > tr > th, .exportmodule > thead > tr > td, .exportmodule > tbody > tr > td, .exportmodule > tfoot > tr > td {
302
- padding: 8px;
303
- line-height: 1.428571429;
304
- vertical-align: top;
305
- border-top: 1px solid #ffffff !important;
306
  }
307
 
308
  .advancemediahandling {
309
- padding-right:15px;
310
- float:left;
311
  }
312
 
313
  .media_handling {
314
- height: 50px;
315
- padding-top: 15px;
316
- padding-left: 15px;
317
  }
318
 
319
  .inside input[type=radio] {
320
- margin-top: -2px;
321
  }
322
 
323
  .inside label {
324
- padding-right: 20px;
325
  }
326
 
327
  /*.mappingheader .table-condensed label {
@@ -332,326 +394,377 @@ margin-top:13px;
332
  }*/
333
  /*settings css*/
334
  .selected {
335
- background-color:#fcfcfc !important;
336
- color:#222222;
337
- border:0 none !important;
338
  }
 
339
  .selected:hover {
340
- background-color:#E5E5E5 !important;
341
- opacity:1;
342
- color:#222 !important;
343
  }
 
344
  .not-selected {
345
- background-color:#F2F2F2 !important;
346
- color:#777;
347
- opacity:0.7;
348
  }
 
349
  .bg-sidebar {
350
- background-color:#F2F2F2;
351
- }
352
- #sidebar ul
353
- {
354
- margin-top: -1px;
355
- margin-top: 0px;
356
- width:100%;
357
- float:left;
358
- cursor:pointer;
359
- position: relative;
360
- list-style-type: none;
361
- padding-left:5px;
362
- }
363
- #sidebar ul > li
364
- {
365
- border-right: 1px solid #e7e7e7;
366
- border-bottom: 1px solid #e7e7e7;
367
- margin-left:-5px;
368
- margin-bottom: -0px;
369
- padding:10px 23px;
370
- font-weight:700;
371
- font-size:13px;
372
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
373
  #sidebar li:hover {
374
- background-color:#E5E5E5;
375
- color:#555;
376
  }
 
377
  #contentbar {
378
- color: #444444;
379
- display:inline-block;
380
- font-family: "Open Sans",sans-serif;
381
- font-size: 13px;
382
- line-height: 1.4em;
383
- background: none repeat scroll 0 0 #FCFCFC;
384
- width: 73.5%;
385
- height:965px;
386
- border-right:1px solid #D1D1D1;
387
- position: absolute;
388
- margin-left:0%;
389
- float:right;
390
- min-height:499px;
391
  }
 
392
  #sidebar {
393
- float:left;
394
- height:965px;
395
- border-left:1px solid #D1D1D1;
396
- color:#777;
397
- background:#F2F2F2;
398
- width:25%;
399
- min-height:499px;
400
- }
401
- #settingmodule
402
- {
403
- width:100%;
404
  }
 
405
  .title {
406
- border-bottom: 1px solid #E7E7E7;
407
- margin-left:25px;
408
- margin-right:25px;
409
  }
 
410
  .title > h3 {
411
- color: #222;
412
- font-family: "Open Sans",sans-serif;
413
- font-size: 1.3em;
414
- font-weight: 600;
415
- line-height: 2em;
416
- margin-top:10px;
417
  }
 
418
  #innertitle {
419
- color: #333 !important;
420
- font-family: "Open Sans",sans-serif !important;
421
- font-size: 14px !important;
422
- font-weight: 700 !important;
423
- }
424
- #data
425
- {
426
- font-size:13px;
427
- color:#666;
428
- font-weight:400;
429
- margin-left:25px;
430
- margin-right:25px;
431
- padding-left:30px;
432
- padding-top:10px;
433
- padding-bottom: 10px;
434
  }
 
 
 
 
 
 
 
 
 
 
 
 
435
  #resetcustfield {
436
  float: right;
437
  margin-top: -33px;
438
  margin-right: 8px;
439
  }
440
- #wpusercheck,#allowimport,#schedulecheck,#dropon,#catenable,#postlabel,#debugmode_enable,
441
- #pagelabel,#userlabel,#commentslabel,#custaxlabel,#cplabel,#catlabel,#custrevlabel {
442
- border-radius:5px 0 0 5px;
 
443
  }
444
- #wpuseruncheck,#donallowimport,#scheduleuncheck,#dropoff,#catdisable,#nopostlabel, #debugmode_disable,
445
- #nopagelabel,#nouserlabel,#nocommentslabel,#nocustaxlabel,#nocplabel,#nocatlabel,#nocustrevlabel {
446
- border-radius:0 5px 5px 0;
 
447
  }
 
448
  #activemenu {
449
  margin-left: 3px;
450
  margin-top: 15px;
451
- font-family: "Open Sans",sans-serif;
452
  font-weight: normal;
453
  font-style: normal;
454
  font-size: 1.7em;
455
  }
 
456
  .tabase table {
457
- width:80%;
458
  }
 
459
  #align {
460
- padding-top:5px;
461
- padding-left:5px;
462
- color:#666;
463
- font-size:16px;
464
- font-family: "open sans";
465
  }
 
466
  #data table {
467
- width:88%;
468
  }
 
469
  .security-perfoemance {
470
- -webkit-padding-after: 26px !important;
471
  }
 
472
  .custom-fields {
473
- -webkit-padding-after: 14px !important;
474
  }
 
475
  .databorder tr {
476
- border-bottom:1px solid #E7E7E7;
477
  }
 
478
  .databorder tr:last-child {
479
- border-bottom: 0 none !important;
480
  }
 
481
  #data td {
482
- padding: 8px 0;
483
  }
 
484
  #settingheader {
485
- border:1px solid #D1D1D1;
486
- height:52px;
487
- margin-right:23px;
488
- margin-top: -17px;
489
- width:98%;
490
  }
 
491
  #bottomsave {
492
- border-bottom:1px solid #D1D1D1;
493
- border-left:1px solid #D1D1D1;
494
- border-right:1px solid #D1D1D1;
495
- height:52px;
496
- margin-right:23px;
497
- margin-top: -4px;
498
- width:98%;
499
  }
 
500
  #settingsholder {
501
- display:inline-block;
502
- height:966px;
503
- width:98%;
504
- border-bottom:1px solid #D1D1D1;
505
- min-height:500px;
506
  }
 
507
  #resetopt {
508
- color: #0099d5;
509
  }
 
510
  .settings-icon {
511
- padding-right: 7px;
512
  }
 
513
  .uifree-settings {
514
- padding-top: 10px;
515
  }
516
- #data input[type="radio"],input[type="checkbox"] {
517
- margin-top: -3px !important;
 
518
  }
 
519
  .corner-icon > img {
520
- margin-left: 11px;
521
- margin-top: 13px;
522
  }
 
523
  .enablesetting {
524
- background-color:#0074a2;
525
- color:#fff;
526
- border-color: #004f6f;
527
- box-shadow: 0 1px 0 #00abef inset, 0 1px 0 rgba(0, 0, 0, 0.15);
528
- border-style: solid;
529
- border-width: 1px;
530
- cursor: pointer;
531
- line-height: normal;
532
- margin-right: -4px;
533
- padding: 5px;
534
- border-radius:5px;
535
- text-align:center;
536
  }
 
537
  .disablesetting {
538
- background-color: #e6e6e6;
539
- background-image: linear-gradient(#fff, #fff 25%, #e6e6e6);
540
- background-repeat: no-repeat;
541
- border-color: #ccc #ccc #bbb;
542
- border-image: none;
543
- border-style: solid;
544
- border-width: 1px;
545
- box-shadow: 0 1px 0 rgba(255, 255, 255, 0.2) inset, 0 1px 2px rgba(0, 0, 0, 0.05);
546
- cursor: pointer;
547
- line-height: normal;
548
- margin-right: -4px;
549
- padding: 5px;
550
- text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
551
- border-radius:5px;
552
- text-align:center;
553
  }
 
554
  .debug-info-name {
555
- width:40%;
556
  }
 
557
  .ini-configured-values, .min-requirement-values {
558
- text-align: center;
559
  }
 
560
  .moduleavail {
561
  float: left;
562
  margin: 6px 0 0 20px !important;
563
  position: absolute;
564
  }
 
565
  #pluginavail {
566
- width: 8px;
567
- height: 9px;
568
- border-radius: 15px;
569
- float:right;
570
- margin-top: 11px;
571
  }
 
572
  #repavail {
573
- width: 8px;
574
- height: 9px;
575
- border-radius: 15px;
576
  }
 
577
  #repplugin {
578
  padding-left: 5px;
579
  padding-top: 5px;
580
  }
581
- #replabel{
582
- padding-left:5px;
583
- margin-top:-7px;
 
584
  }
 
585
  /*End of settings css*/
586
 
587
  /*Export Settings*/
588
- #exporttable input[type="radio"],input[type="checkbox"] {
589
- margin-top: -3px !important;
590
- vertical-align: middle;
591
- min-width: 16px;
592
  }
 
593
  /*End of export section*/
594
- .inside input[type="radio"],input[type="checkbox"] {
595
- margin-top: -3px !important;
596
- vertical-align: middle;
597
- min-width: 16px;
598
  }
 
599
  #renameradio input[type="radio"] {
600
- margin-top: -3px !important;
601
- vertical-align: middle;
602
- min-width: 16px;
603
  }
 
604
  #updatediv input[type="checkbox"] {
605
- margin-top: -3px !important;
606
- vertical-align: middle;
607
- min-width: 16px;
608
  }
 
609
  #savetemp input[type="radio"] {
610
- margin-top: -3px !important;
611
- vertical-align: middle;
612
- min-width: 16px;
613
  }
614
- #importopt {
615
- color: #222;
616
- font-family: "Open Sans",sans-serif;
617
- font-size: 1.3em !important;
618
- font-weight: 600 !important;
 
619
  }
620
 
621
- #importalign,#preview_of_row {
622
- padding-top:5px !important;
623
- padding-left:5px !important;
624
- color:#666 !important;
625
- font-size:14px !important;
626
- font-family: "open sans" !important;
627
  }
 
628
  #importalign > input[type="radio"], input[type="checkbox"] {
629
- margin: 0px 6px !important;
630
  }
 
631
  .importstatus, #importalign {
632
- margin-top:0px;
633
  }
 
634
  .csvheader, .csvcolumnvalue {
635
- font-size: 13px;
636
- font-style: normal;
637
- font-weight: 400;
638
- color:#666;
639
  }
 
640
  div#log {
641
- color: #666;
642
  }
 
643
  .columnheader {
644
- font-size: 1.25em;
645
  }
646
 
647
  .form-group {
648
- margin-top: 10px;
649
  }
 
650
  /*Summary log*/
651
  #logtabs {
652
- height:315px !important;
653
  }
 
654
  /*End off summary*/
655
  #noPlugin {
656
- margin: 5% 12%;
657
  }
14
  }
15
 
16
  .container-fluid {
17
+ /* padding-left: 20px; */
18
+ padding-right: 20px;
19
+ width: 100%;
20
+ *zoom: 1;
21
  }
22
+
23
  .container-fluid:before, .container-fluid:after {
24
+ display: table;
25
+ content: "";
26
  }
27
+
28
  .container-fluid:after {
29
+ clear: both;
30
  }
31
+
32
  .accordion {
33
+ margin-bottom: 18px;
34
  }
35
+
36
  .accordion-group {
37
+ margin-bottom: 2px;
38
+ border: 1px solid #e5e5e5;
39
+ -webkit-border-radius: 4px;
40
+ -moz-border-radius: 4px;
41
+ border-radius: 4px;
42
  }
43
+
44
+ .wpfields {
45
+ padding-left: 20px;
46
+ }
47
+
48
+ .samptxt {
49
+ color: #2ea2cc;
50
+ font-size: 11px;
51
+ font-family: "Open Sans", sans-serif !important;
52
+ margin-top: -8px;
53
+ }
54
+
55
  .activate {
56
+ color: #fff;
57
+ background-color: #0074A2;
58
+ }
 
59
 
60
+ .deactivate {
61
 
62
+ }
63
 
64
  .accordion-heading {
65
+ border-bottom: 0;
66
  }
67
+
68
+ .accordion-heading a {
69
+ text-decoration: none;
70
+ color: #ffffff;
71
  }
72
+
73
  .accordion-heading .accordion-toggle {
74
+ display: block;
75
+ padding: 8px 15px;
76
  }
77
+
78
+ .accordion-heading a:hover {
79
+ color: #2EA2CC;
80
+ text-decoration: none;
81
  }
82
+
83
  .accordion-inner {
84
+ padding: 9px 15px;
85
+ background: #ffffff;
86
+ border-top: 1px solid #e5e5e5;
87
  }
88
+
89
  .accordion-group {
90
+ margin-bottom: 2px;
91
+ border: 1px solid #e5e5e5;
92
+ -webkit-border-radius: 4px;
93
+ -moz-border-radius: 4px;
94
+ border-radius: 4px;
95
  }
96
+
97
  .accordion-heading {
98
+ border-bottom: 0;
99
+ background: #222222;
100
  }
101
+
102
  .accordion-heading .accordion-toggle {
103
+ display: block;
104
+ padding: 8px 15px;
105
+ font: 12px Verdana;
106
  }
107
+
108
  .accordion-inner {
109
+ padding: 9px 10px;
110
+ border-top: 1px solid #e5e5e5;
111
  }
112
+
113
  .collapse {
114
+ -webkit-transition: height 0.35s ease;
115
+ -moz-transition: height 0.35s ease;
116
+ -ms-transition: height 0.35s ease;
117
+ -o-transition: height 0.35s ease;
118
+ transition: height 0.35s ease;
119
+ position: relative;
120
+ overflow: hidden;
121
+ height: 0;
122
  }
123
+
124
  .collapse.in {
125
+ height: auto;
126
  }
127
+
128
  .nav-collapse.collapse {
129
+ height: auto;
130
  }
131
+
132
+ .success {
133
+ background-color: #EAF0D5;
134
+ border: 1px solid #008000;
135
  }
136
 
137
+ .alert {
138
+ text-align: center;
139
+ padding: 10px;
140
+ margin: 5px;
141
+ border-radius: 3px;
142
  }
143
+
144
  .alert-warning {
145
+ background-color: #FAEBE7 !important;
146
+ border: 1px solid #F16048 !important;
147
+ color: #DF280A !important;
148
  }
149
+
150
+ .pluginAbsent:hover {
151
+ color: red;
152
  }
153
+
154
+ .pluginPresent:hover {
155
+ color: red;
156
  }
157
+
158
+ .pluginActive:hover {
159
+ color: green;
160
  }
161
+
162
+ .container-fluid label {
163
+ display: block;
164
+ /*font-size: 1.2em;*/
165
+ padding: 7px 10px;
166
  }
167
+
168
+ .typeofplugin {
169
+ font-size: 1.3em;
170
  }
171
+
172
+ .supportedplugins td {
173
+ width: 230px;
174
  }
175
+
176
  .typeofplugin {
177
+ text-transform: uppercase;
178
  }
179
+
180
+ td.plugintype {
181
+ width: 230px;
182
  }
183
+
184
+ .box-one {
185
+ height: 350px;
186
+ width: 100%;
187
  }
188
+
189
+ .top-left-box, .top-right-box {
190
+ width: 48%;
191
+ height: 350px;
192
+ margin-right: 20px;
193
  }
194
+
195
+ .top-left-box {
196
+ float: left;
197
  }
198
+
199
+ .top-right-box {
200
+ float: left;
201
+ width: 98%;
202
  }
203
+
204
+ .top-left-box h3, .top-right-box h3, .fileManager h3 {
205
+ padding: 10px;
206
+ background: #222222;
207
+ border-color: #D2E3EB;
208
+ /*border-top-left-radius: 5px;
209
+ border-top-right-radius: 5px; */
210
+ font-weight: normal;
211
+ font-size: 1.5em;
212
+ color: #ffffff;
213
  }
214
+
215
+ .top-left-box h3:hover, .top-right-box h3:hover, .fileManager h3:hover {
216
+ color: #ffffff;
217
  }
218
+
219
+ .top-left-content, .top-right-content {
220
+ border: 1px solid #dddddd;
221
+ height: 275px;
222
+ margin-top: -16px;
223
+ background: #ffffff;
224
  }
225
+
226
+ .fileManager {
227
+ width: 98%;
228
  }
229
+
230
+ .manager-content {
231
+ height: auto;
232
+ margin-top: -12px;
233
+ /*border: 1px solid #2e8965;*/
234
+ border: 1px solid #dddddd;
235
+ border-top: 1px solid #333333;
236
  }
237
+
238
+ .manager-actions {
239
+ width: 200px;
240
  }
241
+
242
+ .manageraction {
243
+ margin-right: 15px;
244
+ cursor: pointer;
245
  }
246
+
247
+ .file-version {
248
+ width: 100px;
249
  }
250
+
251
+ .importedtime, .updatedtime {
252
+ width: 150px;
253
  }
254
+
255
+ .importedtype {
256
+ width: 225px;
257
  }
258
+
259
+ .importedfilename {
260
+ width: 250px;
261
  }
262
+
263
+ .selectall {
264
+ width: 60px;
265
  }
266
+
267
+ .center {
268
+ text-align: center;
269
  }
270
+
271
+ .header-icon {
272
+ margin-right: 15px;
273
  }
274
+
275
  .form-group label {
276
+ /* margin-top:8px; */
277
+ margin-top: 0px;
278
+ -webkit-margin-start: 8px;
279
+ -webkit-margin-end: 0px;
280
  }
281
+
282
+ .mappingactions {
283
+ width: 300px;
284
  }
285
+
286
  .importstatus label {
287
+ margin-top: 12px
288
  }
289
+
290
+ .importstatus span {
291
+ /*margin-top:15px;*/
292
+ padding: 0 5px;
293
  }
294
+
295
  .newmoduleicon {
296
+ z-index: 1000;
297
+ margin-top: -12px;
298
+ margin-left: -10px;
299
+ position: absolute;
300
  }
301
+
302
  .method-row {
303
+ width: 100%;
304
  }
305
 
306
  .importfileoption .header-text {
307
+ font-size: 1.3em;
308
+ font-weight: bold;
309
  }
310
 
311
  .method1, .method2, .method3, .method4 {
312
+ padding: 15px 0;
313
  }
314
 
315
  .method1 img, .method2 img, .method3 img, .method4 img, #showmappingtemplate img, .databaseoptimization img {
316
+ margin-top: -25px;
317
  }
318
 
319
  #boxmethod1, #boxmethod2, #boxmethod3, #boxmethod4 {
320
+ padding: 10px;
321
  }
322
 
323
  .scheduling-config {
324
+ width: 80%;
325
  }
326
 
327
  .scheduling-config td {
328
+ padding: 8px;
329
  }
330
+
331
  div#mappingheader select {
332
  width: 170px;
333
  }
344
  }
345
 
346
  .method-row {
347
+ width: 100%;
348
  }
349
 
350
  #checkallModules, #uncheckallModules {
351
+ background: none !important;
352
+ border: none;
353
+ padding: 0 !important;
354
+ color: #0099D5;
355
+ text-decoration: none;
356
 
357
  }
358
 
359
  .left_align {
360
+ width: 23%;
361
  }
362
 
363
  .exportmodule > thead > tr > th, .exportmodule > tbody > tr > th, .exportmodule > tfoot > tr > th, .exportmodule > thead > tr > td, .exportmodule > tbody > tr > td, .exportmodule > tfoot > tr > td {
364
+ padding: 8px;
365
+ line-height: 1.428571429;
366
+ vertical-align: top;
367
+ border-top: 1px solid #ffffff !important;
368
  }
369
 
370
  .advancemediahandling {
371
+ padding-right: 15px;
372
+ float: left;
373
  }
374
 
375
  .media_handling {
376
+ height: 50px;
377
+ padding-top: 15px;
378
+ padding-left: 15px;
379
  }
380
 
381
  .inside input[type=radio] {
382
+ margin-top: -2px;
383
  }
384
 
385
  .inside label {
386
+ padding-right: 20px;
387
  }
388
 
389
  /*.mappingheader .table-condensed label {
394
  }*/
395
  /*settings css*/
396
  .selected {
397
+ background-color: #fcfcfc !important;
398
+ color: #222222;
399
+ border: 0 none !important;
400
  }
401
+
402
  .selected:hover {
403
+ background-color: #E5E5E5 !important;
404
+ opacity: 1;
405
+ color: #222 !important;
406
  }
407
+
408
  .not-selected {
409
+ background-color: #F2F2F2 !important;
410
+ color: #777;
411
+ opacity: 0.7;
412
  }
413
+
414
  .bg-sidebar {
415
+ background-color: #F2F2F2;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
416
  }
417
+
418
+ #sidebar ul {
419
+ margin-top: -1px;
420
+ margin-top: 0px;
421
+ width: 100%;
422
+ float: left;
423
+ cursor: pointer;
424
+ position: relative;
425
+ list-style-type: none;
426
+ padding-left: 5px;
427
+ }
428
+
429
+ #sidebar ul > li {
430
+ border-right: 1px solid #e7e7e7;
431
+ border-bottom: 1px solid #e7e7e7;
432
+ margin-left: -5px;
433
+ margin-bottom: -0px;
434
+ padding: 10px 23px;
435
+ font-weight: 700;
436
+ font-size: 13px;
437
+ }
438
+
439
  #sidebar li:hover {
440
+ background-color: #E5E5E5;
441
+ color: #555;
442
  }
443
+
444
  #contentbar {
445
+ color: #444444;
446
+ display: inline-block;
447
+ font-family: "Open Sans", sans-serif;
448
+ font-size: 13px;
449
+ line-height: 1.4em;
450
+ background: none repeat scroll 0 0 #FCFCFC;
451
+ width: 73.5%;
452
+ height: 965px;
453
+ border-right: 1px solid #D1D1D1;
454
+ position: absolute;
455
+ margin-left: 0%;
456
+ float: right;
457
+ min-height: 499px;
458
  }
459
+
460
  #sidebar {
461
+ float: left;
462
+ height: 965px;
463
+ border-left: 1px solid #D1D1D1;
464
+ color: #777;
465
+ background: #F2F2F2;
466
+ width: 25%;
467
+ min-height: 499px;
468
+ }
469
+
470
+ #settingmodule {
471
+ width: 100%;
472
  }
473
+
474
  .title {
475
+ border-bottom: 1px solid #E7E7E7;
476
+ margin-left: 25px;
477
+ margin-right: 25px;
478
  }
479
+
480
  .title > h3 {
481
+ color: #222;
482
+ font-family: "Open Sans", sans-serif;
483
+ font-size: 1.3em;
484
+ font-weight: 600;
485
+ line-height: 2em;
486
+ margin-top: 10px;
487
  }
488
+
489
  #innertitle {
490
+ color: #333 !important;
491
+ font-family: "Open Sans", sans-serif !important;
492
+ font-size: 14px !important;
493
+ font-weight: 700 !important;
 
 
 
 
 
 
 
 
 
 
 
494
  }
495
+
496
+ #data {
497
+ font-size: 13px;
498
+ color: #666;
499
+ font-weight: 400;
500
+ margin-left: 25px;
501
+ margin-right: 25px;
502
+ padding-left: 30px;
503
+ padding-top: 10px;
504
+ padding-bottom: 10px;
505
+ }
506
+
507
  #resetcustfield {
508
  float: right;
509
  margin-top: -33px;
510
  margin-right: 8px;
511
  }
512
+
513
+ #wpusercheck, #allowimport, #schedulecheck, #dropon, #catenable, #postlabel, #debugmode_enable,
514
+ #pagelabel, #userlabel, #commentslabel, #custaxlabel, #cplabel, #catlabel, #custrevlabel {
515
+ border-radius: 5px 0 0 5px;
516
  }
517
+
518
+ #wpuseruncheck, #donallowimport, #scheduleuncheck, #dropoff, #catdisable, #nopostlabel, #debugmode_disable,
519
+ #nopagelabel, #nouserlabel, #nocommentslabel, #nocustaxlabel, #nocplabel, #nocatlabel, #nocustrevlabel {
520
+ border-radius: 0 5px 5px 0;
521
  }
522
+
523
  #activemenu {
524
  margin-left: 3px;
525
  margin-top: 15px;
526
+ font-family: "Open Sans", sans-serif;
527
  font-weight: normal;
528
  font-style: normal;
529
  font-size: 1.7em;
530
  }
531
+
532
  .tabase table {
533
+ width: 80%;
534
  }
535
+
536
  #align {
537
+ padding-top: 5px;
538
+ padding-left: 5px;
539
+ color: #666;
540
+ font-size: 16px;
541
+ font-family: "open sans";
542
  }
543
+
544
  #data table {
545
+ width: 88%;
546
  }
547
+
548
  .security-perfoemance {
549
+ -webkit-padding-after: 26px !important;
550
  }
551
+
552
  .custom-fields {
553
+ -webkit-padding-after: 14px !important;
554
  }
555
+
556
  .databorder tr {
557
+ border-bottom: 1px solid #E7E7E7;
558
  }
559
+
560
  .databorder tr:last-child {
561
+ border-bottom: 0 none !important;
562
  }
563
+
564
  #data td {
565
+ padding: 8px 0;
566
  }
567
+
568
  #settingheader {
569
+ border: 1px solid #D1D1D1;
570
+ height: 52px;
571
+ margin-right: 23px;
572
+ margin-top: -17px;
573
+ width: 98%;
574
  }
575
+
576
  #bottomsave {
577
+ border-bottom: 1px solid #D1D1D1;
578
+ border-left: 1px solid #D1D1D1;
579
+ border-right: 1px solid #D1D1D1;
580
+ height: 52px;
581
+ margin-right: 23px;
582
+ margin-top: -4px;
583
+ width: 98%;
584
  }
585
+
586
  #settingsholder {
587
+ display: inline-block;
588
+ height: 966px;
589
+ width: 98%;
590
+ border-bottom: 1px solid #D1D1D1;
591
+ min-height: 500px;
592
  }
593
+
594
  #resetopt {
595
+ color: #0099d5;
596
  }
597
+
598
  .settings-icon {
599
+ padding-right: 7px;
600
  }
601
+
602
  .uifree-settings {
603
+ padding-top: 10px;
604
  }
605
+
606
+ #data input[type="radio"], input[type="checkbox"] {
607
+ margin-top: -3px !important;
608
  }
609
+
610
  .corner-icon > img {
611
+ margin-left: 11px;
612
+ margin-top: 13px;
613
  }
614
+
615
  .enablesetting {
616
+ background-color: #0074a2;
617
+ color: #fff;
618
+ border-color: #004f6f;
619
+ box-shadow: 0 1px 0 #00abef inset, 0 1px 0 rgba(0, 0, 0, 0.15);
620
+ border-style: solid;
621
+ border-width: 1px;
622
+ cursor: pointer;
623
+ line-height: normal;
624
+ margin-right: -4px;
625
+ padding: 5px;
626
+ border-radius: 5px;
627
+ text-align: center;
628
  }
629
+
630
  .disablesetting {
631
+ background-color: #e6e6e6;
632
+ background-image: linear-gradient(#fff, #fff 25%, #e6e6e6);
633
+ background-repeat: no-repeat;
634
+ border-color: #ccc #ccc #bbb;
635
+ border-image: none;
636
+ border-style: solid;
637
+ border-width: 1px;
638
+ box-shadow: 0 1px 0 rgba(255, 255, 255, 0.2) inset, 0 1px 2px rgba(0, 0, 0, 0.05);
639
+ cursor: pointer;
640
+ line-height: normal;
641
+ margin-right: -4px;
642
+ padding: 5px;
643
+ text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
644
+ border-radius: 5px;
645
+ text-align: center;
646
  }
647
+
648
  .debug-info-name {
649
+ width: 40%;
650
  }
651
+
652
  .ini-configured-values, .min-requirement-values {
653
+ text-align: center;
654
  }
655
+
656
  .moduleavail {
657
  float: left;
658
  margin: 6px 0 0 20px !important;
659
  position: absolute;
660
  }
661
+
662
  #pluginavail {
663
+ width: 8px;
664
+ height: 9px;
665
+ border-radius: 15px;
666
+ float: right;
667
+ margin-top: 11px;
668
  }
669
+
670
  #repavail {
671
+ width: 8px;
672
+ height: 9px;
673
+ border-radius: 15px;
674
  }
675
+
676
  #repplugin {
677
  padding-left: 5px;
678
  padding-top: 5px;
679
  }
680
+
681
+ #replabel {
682
+ padding-left: 5px;
683
+ margin-top: -7px;
684
  }
685
+
686
  /*End of settings css*/
687
 
688
  /*Export Settings*/
689
+ #exporttable input[type="radio"], input[type="checkbox"] {
690
+ margin-top: -3px !important;
691
+ vertical-align: middle;
692
+ min-width: 16px;
693
  }
694
+
695
  /*End of export section*/
696
+ .inside input[type="radio"], input[type="checkbox"] {
697
+ margin-top: -3px !important;
698
+ vertical-align: middle;
699
+ min-width: 16px;
700
  }
701
+
702
  #renameradio input[type="radio"] {
703
+ margin-top: -3px !important;
704
+ vertical-align: middle;
705
+ min-width: 16px;
706
  }
707
+
708
  #updatediv input[type="checkbox"] {
709
+ margin-top: -3px !important;
710
+ vertical-align: middle;
711
+ min-width: 16px;
712
  }
713
+
714
  #savetemp input[type="radio"] {
715
+ margin-top: -3px !important;
716
+ vertical-align: middle;
717
+ min-width: 16px;
718
  }
719
+
720
+ #importopt {
721
+ color: #222;
722
+ font-family: "Open Sans", sans-serif;
723
+ font-size: 1.3em !important;
724
+ font-weight: 600 !important;
725
  }
726
 
727
+ #importalign, #preview_of_row {
728
+ padding-top: 5px !important;
729
+ padding-left: 5px !important;
730
+ color: #666 !important;
731
+ font-size: 14px !important;
732
+ font-family: "open sans" !important;
733
  }
734
+
735
  #importalign > input[type="radio"], input[type="checkbox"] {
736
+ margin: 0px 6px !important;
737
  }
738
+
739
  .importstatus, #importalign {
740
+ margin-top: 0px;
741
  }
742
+
743
  .csvheader, .csvcolumnvalue {
744
+ font-size: 13px;
745
+ font-style: normal;
746
+ font-weight: 400;
747
+ color: #666;
748
  }
749
+
750
  div#log {
751
+ color: #666;
752
  }
753
+
754
  .columnheader {
755
+ font-size: 1.25em;
756
  }
757
 
758
  .form-group {
759
+ margin-top: 10px;
760
  }
761
+
762
  /*Summary log*/
763
  #logtabs {
764
+ height: 315px !important;
765
  }
766
+
767
  /*End off summary*/
768
  #noPlugin {
769
+ margin: 5% 12%;
770
  }
images/Importicon_24.png CHANGED
File without changes
images/csv_importer_dashboard_v3.5.png ADDED
Binary file
images/facebook.png CHANGED
File without changes
images/googleplus.png CHANGED
File without changes
images/icon.png CHANGED
File without changes
images/linkedin.png CHANGED
File without changes
images/twitter.png CHANGED
File without changes
includes/Importer.php CHANGED
@@ -1,6 +1,43 @@
1
  <?php
2
- if ( ! defined( 'ABSPATH' ) )
3
- exit; // Exit if accessed directly
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4
 
5
  class ImporterLib {
6
  var $rzfejj_23 = true;
@@ -21,7 +58,7 @@ class ImporterLib {
21
  var $foevdt_43 = 'ISO-8859-1';
22
  var $bzcrxk_44 = "\r\n";
23
  var $huzgna_45 = ',';
24
- var $gbuviv_33 = 'data.csv';
25
  var $bhujwy_34 = false;
26
  var $iigiqu_63;
27
  var $nftvhw_20;
@@ -29,103 +66,141 @@ class ImporterLib {
29
  var $gtxpcj_22 = array();
30
  var $mpkaqs_35 = array();
31
  var $data = array();
32
-
33
-
34
- function akhrnw_2 ($dsmiub_46 = null, $rtkfzr_31 = null, $urccim_32 = null, $hhtsch_30 = null) {
35
- if ( $rtkfzr_31 !== null ) $this->rtkfzr_31 = $rtkfzr_31;
36
- if ( $urccim_32 !== null ) $this->urccim_32 = $urccim_32;
37
- if ( count($hhtsch_30) > 0 ) $this->hhtsch_30 = $hhtsch_30;
38
- if ( !empty($dsmiub_46) ) $this->ruscjv_15($dsmiub_46);
 
 
 
 
 
 
 
 
39
  }
40
-
41
-
42
- function ruscjv_15 ($dsmiub_46 = null, $rtkfzr_31 = null, $urccim_32 = null, $hhtsch_30 = null) {
43
- if ( $dsmiub_46 === null ) $dsmiub_46 = $this->iigiqu_63;
44
- if ( !empty($dsmiub_46) ) {
45
- if ( $rtkfzr_31 !== null ) $this->rtkfzr_31 = $rtkfzr_31;
46
- if ( $urccim_32 !== null ) $this->urccim_32 = $urccim_32;
47
- if ( count($hhtsch_30) > 0 ) $this->hhtsch_30 = $hhtsch_30;
48
- if ( is_readable($dsmiub_46) ) {
 
 
 
 
 
 
 
 
49
  $this->data = $this->ghloqy_7($dsmiub_46);
50
  } else {
51
  $this->nftvhw_20 = &$dsmiub_46;
52
  $this->data = $this->ytcfme_6();
53
  }
54
- if ( $this->data === false ) return false;
 
 
55
  }
56
  return true;
57
  }
58
-
59
- function vsxpii_16 ($iigiqu_63 = null, $huzgna_45 = array(), $bkarne_52 = false, $lfxszn_24 = array()) {
60
- if ( empty($iigiqu_63) ) $iigiqu_63 = &$this->iigiqu_63;
61
- $mode = ( $bkarne_52 ) ? 'at' : 'wt' ;
62
- $is_php = ( preg_match('/\.php$/i', $iigiqu_63) ) ? true : false ;
 
 
63
  return $this->jvyhik_14($iigiqu_63, $this->krlkbv_0($huzgna_45, $lfxszn_24, $bkarne_52, $is_php), $mode);
64
  }
65
-
66
- function wmyuyn_3 ($filename = null, $huzgna_45 = array(), $lfxszn_24 = array(), $delimiter = null) {
67
- if ( empty($filename) ) $filename = $this->gbuviv_33;
68
- if ( $delimiter === null ) $delimiter = $this->huzgna_45;
 
 
 
 
69
  $huzgna_45 = $this->krlkbv_0($huzgna_45, $lfxszn_24, null, null, $delimiter);
70
- if ( $filename !== null ) {
71
  header('Content-type: application/csv');
72
- header('Content-Disposition: attachment; filename="'.$filename.'"');
73
  echo $huzgna_45;
74
  }
75
  return $huzgna_45;
76
  }
77
-
78
- function fidfvc_4 ($dsmiub_46 = null, $wmrey_p8 = null) {
79
  $this->fybktu_41 = true;
80
- if ( $dsmiub_46 !== null ) $this->bmalcx_42 = $dsmiub_46;
81
- if ( $wmrey_p8 !== null ) $this->foevdt_43 = $wmrey_p8;
 
 
 
 
82
  }
83
-
84
- function delim ($iigiqu_63 = null, $parse = true, $search_depth = null, $preferred = null, $ezvruf_29 = null) {
85
-
86
- if ( $iigiqu_63 === null ) $iigiqu_63 = $this->iigiqu_63;
87
- if ( empty($search_depth) ) $search_depth = $this->ppbenb_38;
88
- if ( $ezvruf_29 === null ) $ezvruf_29 = $this->ezvruf_29;
89
-
90
- if ( $preferred === null ) $preferred = $this->qyllow_39;
91
-
92
- if ( empty($this->nftvhw_20) ) {
93
- if ( $this->totraw_9($iigiqu_63) ) {
 
 
 
 
 
 
 
 
94
  $huzgna_45 = &$this->nftvhw_20;
95
- } else return false;
 
 
96
  } else {
97
  $huzgna_45 = &$this->nftvhw_20;
98
  }
99
-
100
  $chars = array();
101
  $strlen = strlen($huzgna_45);
102
  $fqlsha_68 = false;
103
  $n = 1;
104
  $to_end = true;
105
-
106
- for ( $i=0; $i < $strlen; $i++ ) {
107
  $ch = $huzgna_45{$i};
108
- $nch = ( isset($huzgna_45{$i+1}) ) ? $huzgna_45{$i+1} : false ;
109
- $pch = ( isset($huzgna_45{$i-1}) ) ? $huzgna_45{$i-1} : false ;
110
-
111
- if ( $ch == $ezvruf_29 ) {
112
- if ( !$fqlsha_68 || $nch != $ezvruf_29 ) {
113
- $fqlsha_68 = ( $fqlsha_68 ) ? false : true ;
114
- } elseif ( $fqlsha_68 ) {
115
  $i++;
116
  }
117
-
118
- } elseif ( ($ch == "\n" && $pch != "\r" || $ch == "\r") && !$fqlsha_68 ) {
119
- if ( $n >= $search_depth ) {
120
  $strlen = 0;
121
  $to_end = false;
122
  } else {
123
  $n++;
124
  }
125
-
126
  } elseif (!$fqlsha_68) {
127
- if ( !preg_match('/['.preg_quote($this->gpxabp_40, '/').']/i', $ch) ) {
128
- if ( !isset($chars[$ch][$n]) ) {
129
  $chars[$ch][$n] = 1;
130
  } else {
131
  $chars[$ch][$n]++;
@@ -133,100 +208,94 @@ class ImporterLib {
133
  }
134
  }
135
  }
136
-
137
- $depth = ( $to_end ) ? $n-1 : $n ;
138
  $filtered = array();
139
- foreach( $chars as $char => $value ) {
140
- if ( $match = $this->klpqct_10($char, $value, $depth, $preferred) ) {
141
  $filtered[$match] = $char;
142
  }
143
  }
144
-
145
  ksort($filtered);
146
  $this->delimiter = reset($filtered);
147
-
148
- if ( $parse ) $this->data = $this->ytcfme_6();
149
-
 
 
150
  return $this->delimiter;
151
-
152
  }
153
-
154
-
155
- function vh100 ($iigiqu_63 = null) {
156
- if ( $iigiqu_63 === null ) $iigiqu_63 = $this->iigiqu_63;
157
- if ( empty($this->nftvhw_20) ) $this->fmilrp_13($iigiqu_63);
158
- return ( !empty($this->nftvhw_20) ) ? $this->ytcfme_6() : false ;
 
 
 
 
159
  }
160
-
161
- function ytcfme_6 ($huzgna_45 = null) {
162
- if ( empty($huzgna_45) ) {
163
- if ( $this->totraw_9() ) {
164
  $huzgna_45 = &$this->nftvhw_20;
165
- } else return false;
 
 
166
  }
167
-
168
  $white_spaces = str_replace($this->delimiter, '', " \t\x0B\0");
169
-
170
  $jlesjs_83 = array();
171
  $mbswxn_84 = array();
172
  $cdgpzw_85 = 0;
173
  $ewhrie_86 = '';
174
- $head = ( !empty($this->lfxszn_24) ) ? $this->lfxszn_24 : array() ;
175
  $eylwks_89 = 0;
176
  $fqlsha_68 = false;
177
  $qobixt_90 = false;
178
  $strlen = strlen($huzgna_45);
179
-
180
- for ( $i=0; $i < $strlen; $i++ ) {
181
  $ch = $huzgna_45{$i};
182
- $nch = ( isset($huzgna_45{$i+1}) ) ? $huzgna_45{$i+1} : false ;
183
- $pch = ( isset($huzgna_45{$i-1}) ) ? $huzgna_45{$i-1} : false ;
184
-
185
- if ( $ch == $this->ezvruf_29 ) {
186
- if ( !$fqlsha_68 ) {
187
- if ( ltrim($ewhrie_86, $white_spaces) == '' ) {
188
  $fqlsha_68 = true;
189
  $qobixt_90 = true;
190
  } else {
191
  $this->jybluc_21 = 2;
192
  $error_row = count($jlesjs_83) + 1;
193
  $error_col = $eylwks_89 + 1;
194
- if ( !isset($this->gtxpcj_22[$error_row.'-'.$error_col]) ) {
195
- $this->gtxpcj_22[$error_row.'-'.$error_col] = array(
196
- 'type' => 2,
197
- 'info' => 'Syntax error found on row '.$error_row.'. Non-enclosed lfxszn_24 can not contain double-quotes.',
198
- 'row' => $error_row,
199
- 'field' => $error_col,
200
- 'field_name' => (!empty($head[$eylwks_89])) ? $head[$eylwks_89] : null,
201
- );
202
  }
203
  $ewhrie_86 .= $ch;
204
  }
205
  } elseif ($nch == $this->ezvruf_29) {
206
  $ewhrie_86 .= $ch;
207
  $i++;
208
- } elseif ( $nch != $this->delimiter && $nch != "\r" && $nch != "\n" ) {
209
- for ( $x=($i+1); isset($huzgna_45{$x}) && ltrim($huzgna_45{$x}, $white_spaces) == ''; $x++ ) {}
210
- if ( $huzgna_45{$x} == $this->delimiter ) {
 
211
  $fqlsha_68 = false;
212
  $i = $x;
213
  } else {
214
- if ( $this->jybluc_21 < 1 ) {
215
  $this->jybluc_21 = 1;
216
  }
217
  $error_row = count($jlesjs_83) + 1;
218
  $error_col = $eylwks_89 + 1;
219
- if ( !isset($this->gtxpcj_22[$error_row.'-'.$error_col]) ) {
220
- $this->gtxpcj_22[$error_row.'-'.$error_col] = array(
221
- 'type' => 1,
222
- 'info' =>
223
- 'Syntax error found on row '.(count($jlesjs_83) + 1).'. '.
224
- 'A single double-quote was found within an enclosed string. '.
225
- 'Enclosed double-quotes must be escaped with a second double-quote.',
226
- 'row' => count($jlesjs_83) + 1,
227
- 'field' => $eylwks_89 + 1,
228
- 'field_name' => (!empty($head[$eylwks_89])) ? $head[$eylwks_89] : null,
229
- );
230
  }
231
  $ewhrie_86 .= $ch;
232
  $fqlsha_68 = false;
@@ -234,160 +303,170 @@ class ImporterLib {
234
  } else {
235
  $fqlsha_68 = false;
236
  }
237
-
238
- // end of field/row
239
- } elseif ( ($ch == $this->delimiter || $ch == "\n" || $ch == "\r") && !$fqlsha_68 ) {
240
- $key = ( !empty($head[$eylwks_89]) ) ? $head[$eylwks_89] : $eylwks_89 ;
241
- $mbswxn_84[$key] = ( $qobixt_90 ) ? $ewhrie_86 : trim($ewhrie_86) ;
242
  $ewhrie_86 = '';
243
  $qobixt_90 = false;
244
  $eylwks_89++;
245
-
246
  // end of row
247
- if ( $ch == "\n" || $ch == "\r" ) {
248
- if ( $this->blhlef_1($cdgpzw_85) && $this->qnoiuh_17s($mbswxn_84, $this->hhtsch_30) ) {
249
- if ( $this->rzfejj_23 && empty($head) ) {
250
  $head = $mbswxn_84;
251
- } elseif ( empty($this->lfxszn_24) || (!empty($this->lfxszn_24) && (($this->rzfejj_23 && $cdgpzw_85 > 0) || !$this->rzfejj_23)) ) {
252
- if ( !empty($this->aerjwu_25) && !empty($mbswxn_84[$this->aerjwu_25]) ) {
253
- if ( isset($jlesjs_83[$mbswxn_84[$this->aerjwu_25]]) ) {
254
- $jlesjs_83[$mbswxn_84[$this->aerjwu_25].'_0'] = &$jlesjs_83[$mbswxn_84[$this->aerjwu_25]];
255
  unset($jlesjs_83[$mbswxn_84[$this->aerjwu_25]]);
256
- for ( $sn=1; isset($jlesjs_83[$mbswxn_84[$this->aerjwu_25].'_'.$sn]); $sn++ ) {}
257
- $jlesjs_83[$mbswxn_84[$this->aerjwu_25].'_'.$sn] = $mbswxn_84;
258
- } else $jlesjs_83[$mbswxn_84[$this->aerjwu_25]] = $mbswxn_84;
259
- } else $jlesjs_83[] = $mbswxn_84;
 
 
 
 
 
260
  }
261
  }
262
  $mbswxn_84 = array();
263
  $eylwks_89 = 0;
264
  $cdgpzw_85++;
265
- if ( $this->aerjwu_25 === null && $this->urccim_32 !== null && count($jlesjs_83) == $this->urccim_32 ) {
266
  $i = $strlen;
267
  }
268
- if ( $ch == "\r" && $nch == "\n" ) $i++;
 
 
269
  }
270
-
271
  } else {
272
  $ewhrie_86 .= $ch;
273
  }
274
  }
275
  $this->mpkaqs_35 = $head;
276
- if ( !empty($this->aerjwu_25) ) {
277
  $qnghcy_27 = SORT_REGULAR;
278
- if ( $this->qnghcy_27 == 'numeric' ) {
279
  $qnghcy_27 = SORT_NUMERIC;
280
- } elseif ( $this->qnghcy_27 == 'string' ) {
281
  $qnghcy_27 = SORT_STRING;
282
  }
283
- ( $this->huepva_26 ) ? krsort($jlesjs_83, $qnghcy_27) : ksort($jlesjs_83, $qnghcy_27) ;
284
- if ( $this->rtkfzr_31 !== null || $this->urccim_32 !== null ) {
285
- $jlesjs_83 = array_slice($jlesjs_83, ($this->rtkfzr_31 === null ? 0 : $this->rtkfzr_31) , $this->urccim_32, true);
286
  }
287
  }
288
- if ( !$this->bhujwy_34 ) {
289
  $this->nftvhw_20 = null;
290
  }
291
  return $jlesjs_83;
292
  }
293
-
294
- function krlkbv_0 ( $huzgna_45 = array(), $lfxszn_24 = array(), $bkarne_52 = false , $is_php = false, $delimiter = null) {
295
- if ( !is_array($huzgna_45) || empty($huzgna_45) ) $huzgna_45 = &$this->data;
296
- if ( !is_array($lfxszn_24) || empty($lfxszn_24) ) $lfxszn_24 = &$this->mpkaqs_35;
297
- if ( $delimiter === null ) $delimiter = $this->delimiter;
298
-
299
- $string = ( $is_php ) ? "<?php header('Status: 403'); die(' '); ?>".$this->bzcrxk_44 : '' ;
 
 
 
 
 
 
300
  $entry = array();
301
-
302
- if ( $this->rzfejj_23 && !$bkarne_52 && !empty($lfxszn_24) ) {
303
- foreach( $lfxszn_24 as $key => $value ) {
304
  $entry[] = $this->sxzpwt_8($value);
305
  }
306
- $string .= implode($delimiter, $entry).$this->bzcrxk_44;
307
  $entry = array();
308
  }
309
-
310
- foreach( $huzgna_45 as $key => $mbswxn_84 ) {
311
- foreach( $mbswxn_84 as $field => $value ) {
312
  $entry[] = $this->sxzpwt_8($value);
313
  }
314
- $string .= implode($delimiter, $entry).$this->bzcrxk_44;
315
  $entry = array();
316
  }
317
-
318
  return $string;
319
  }
320
-
321
- function fmilrp_13 ($dsmiub_46 = null) {
322
  $huzgna_45 = null;
323
  $iigiqu_63 = null;
324
- if ( $dsmiub_46 === null ) {
325
  $iigiqu_63 = $this->iigiqu_63;
326
- } elseif ( file_exists($dsmiub_46) ) {
327
  $iigiqu_63 = $dsmiub_46;
328
  } else {
329
  $huzgna_45 = $dsmiub_46;
330
  }
331
- if ( !empty($huzgna_45) || $huzgna_45 = $this->rqauqn_12($iigiqu_63) ) {
332
- if ( $this->iigiqu_63 != $iigiqu_63 ) $this->iigiqu_63 = $iigiqu_63;
333
- if ( preg_match('/\.php$/i', $iigiqu_63) && preg_match('/<\?.*?\?>(.*)/ims', $huzgna_45, $strip) ) {
 
 
334
  $huzgna_45 = ltrim($strip[1]);
335
  }
336
- if ( $this->fybktu_41 ) $huzgna_45 = iconv($this->bmalcx_42, $this->foevdt_43, $huzgna_45);
337
- if ( substr($huzgna_45, -1) != "\n" ) $huzgna_45 .= "\n";
 
 
 
 
338
  $this->nftvhw_20 = &$huzgna_45;
339
  return true;
340
  }
341
  return false;
342
  }
343
-
344
-
345
- function qnoiuh_17s ($mbswxn_84 = array(), $hhtsch_30 = null) {
346
- if ( !empty($mbswxn_84) ) {
347
- if ( !empty($hhtsch_30) ) {
348
- $hhtsch_30 = (strpos($hhtsch_30, ' OR ') !== false) ? explode(' OR ', $hhtsch_30) : array($hhtsch_30);
349
  $or = '';
350
- foreach( $hhtsch_30 as $key => $value ) {
351
- if ( strpos($value, ' AND ') !== false ) {
352
  $value = explode(' AND ', $value);
353
  $and = '';
354
- foreach( $value as $k => $v ) {
355
  $and .= $this->qnoiuh_17($mbswxn_84, $v);
356
  }
357
- $or .= (strpos($and, '0') !== false) ? '0' : '1' ;
358
  } else {
359
  $or .= $this->qnoiuh_17($mbswxn_84, $value);
360
  }
361
  }
362
- return (strpos($or, '1') !== false) ? true : false ;
363
  }
364
  return true;
365
  }
366
  return false;
367
  }
368
-
369
- function qnoiuh_17 ($mbswxn_84, $condition) {
370
- $operators = array(
371
- '=', 'equals', 'is',
372
- '!=', 'is not',
373
- '<', 'is less than',
374
- '>', 'is greater than',
375
- '<=', 'is less than or equals',
376
- '>=', 'is greater than or equals',
377
- 'contains',
378
- 'does not contain',
379
- );
380
  $operators_regex = array();
381
- foreach( $operators as $value ) {
382
  $operators_regex[] = preg_quote($value, '/');
383
  }
384
  $operators_regex = implode('|', $operators_regex);
385
- if ( preg_match('/^(.+) ('.$operators_regex.') (.+)$/i', trim($condition), $capture) ) {
386
  $field = $capture[1];
387
  $op = $capture[2];
388
  $value = $capture[3];
389
- if ( preg_match('/^([\'\"]{1})(.*)([\'\"]{1})$/i', $value, $capture) ) {
390
- if ( $capture[1] == $capture[3] ) {
391
  $value = $capture[2];
392
  $value = str_replace("\\n", "\n", $value);
393
  $value = str_replace("\\r", "\r", $value);
@@ -395,22 +474,22 @@ class ImporterLib {
395
  $value = stripslashes($value);
396
  }
397
  }
398
- if ( array_key_exists($field, $mbswxn_84) ) {
399
- if ( ($op == '=' || $op == 'equals' || $op == 'is') && $mbswxn_84[$field] == $value ) {
400
  return '1';
401
- } elseif ( ($op == '!=' || $op == 'is not') && $mbswxn_84[$field] != $value ) {
402
  return '1';
403
- } elseif ( ($op == '<' || $op == 'is less than' ) && $mbswxn_84[$field] < $value ) {
404
  return '1';
405
- } elseif ( ($op == '>' || $op == 'is greater than') && $mbswxn_84[$field] > $value ) {
406
  return '1';
407
- } elseif ( ($op == '<=' || $op == 'is less than or equals' ) && $mbswxn_84[$field] <= $value ) {
408
  return '1';
409
- } elseif ( ($op == '>=' || $op == 'is greater than or equals') && $mbswxn_84[$field] >= $value ) {
410
  return '1';
411
- } elseif ( $op == 'contains' && preg_match('/'.preg_quote($value, '/').'/i', $mbswxn_84[$field]) ) {
412
  return '1';
413
- } elseif ( $op == 'does not contain' && !preg_match('/'.preg_quote($value, '/').'/i', $mbswxn_84[$field]) ) {
414
  return '1';
415
  } else {
416
  return '0';
@@ -419,62 +498,70 @@ class ImporterLib {
419
  }
420
  return '1';
421
  }
422
-
423
- function blhlef_1 ($ewhrie_86_row) {
424
- if ( $this->aerjwu_25 === null && $this->rtkfzr_31 !== null && $ewhrie_86_row < $this->rtkfzr_31 ) return false;
 
 
425
  return true;
426
  }
427
-
428
- function sxzpwt_8 ($value = null) {
429
- if ( $value !== null && $value != '' ) {
430
  $delimiter = preg_quote($this->delimiter, '/');
431
  $ezvruf_29 = preg_quote($this->ezvruf_29, '/');
432
- if ( preg_match("/".$delimiter."|".$ezvruf_29."|\n|\r/i", $value) || ($value{0} == ' ' || substr($value, -1) == ' ') ) {
433
- $value = str_replace($this->ezvruf_29, $this->ezvruf_29.$this->ezvruf_29, $value);
434
- $value = $this->ezvruf_29.$value.$this->ezvruf_29;
435
  }
436
  }
437
  return $value;
438
  }
439
-
440
- function totraw_9 ($iigiqu_63 = null) {
441
- if ( empty($this->nftvhw_20) ) {
442
- if ( $iigiqu_63 === null ) $iigiqu_63 = $this->iigiqu_63;
 
 
443
  return $this->fmilrp_13($iigiqu_63);
444
  }
445
  return true;
446
  }
447
-
448
-
449
- function klpqct_10 ($char, $array, $depth, $preferred) {
450
- if ( $depth == count($array) ) {
451
  $first = null;
452
  $equal = null;
453
  $almost = false;
454
- foreach( $array as $key => $value ) {
455
- if ( $first == null ) {
456
  $first = $value;
457
- } elseif ( $value == $first && $equal !== false) {
458
  $equal = true;
459
- } elseif ( $value == $first+1 && $equal !== false ) {
460
  $equal = true;
461
  $almost = true;
462
  } else {
463
  $equal = false;
464
  }
465
  }
466
- if ( $equal ) {
467
- $match = ( $almost ) ? 2 : 1 ;
468
  $pref = strpos($preferred, $char);
469
- $pref = ( $pref !== false ) ? str_pad($pref, 3, '0', STR_PAD_LEFT) : '999' ;
470
- return $pref.$match.'.'.(99999 - str_pad($first, 5, '0', STR_PAD_LEFT));
471
- } else return false;
 
 
472
  }
473
  }
474
-
475
- function rqauqn_12 ($iigiqu_63 = null) {
476
- if ( is_readable($iigiqu_63) ) {
477
- if ( !($fh = fopen($iigiqu_63, 'r')) ) return false;
 
 
478
  $huzgna_45 = fread($fh, filesize($iigiqu_63));
479
  fclose($fh);
480
  return $huzgna_45;
@@ -482,15 +569,16 @@ class ImporterLib {
482
  return false;
483
  }
484
 
485
- function jvyhik_14 ($iigiqu_63, $string = '', $mode = 'wb', $lock = 2) {
486
- if ( $fp = fopen($iigiqu_63, $mode) ) {
487
  flock($fp, $lock);
488
  $re = fwrite($fp, $string);
489
  $re2 = fclose($fp);
490
- if ( $re != false && $re2 != false ) return true;
 
 
491
  }
492
  return false;
493
  }
494
-
495
  }
496
- ?>
1
  <?php
2
+ /*********************************************************************************
3
+ * WP Ultimate CSV Importer is a Tool for importing CSV for the Wordpress
4
+ * plugin developed by Smackcoder. Copyright (C) 2014 Smackcoders.
5
+ *
6
+ * WP Ultimate CSV Importer is free software; you can redistribute it and/or
7
+ * modify it under the terms of the GNU Affero General Public License version 3
8
+ * as published by the Free Software Foundation with the addition of the
9
+ * following permission added to Section 15 as permitted in Section 7(a): FOR
10
+ * ANY PART OF THE COVERED WORK IN WHICH THE COPYRIGHT IS OWNED BY WP Ultimate
11
+ * CSV Importer, WP Ultimate CSV Importer DISCLAIMS THE WARRANTY OF NON
12
+ * INFRINGEMENT OF THIRD PARTY RIGHTS.
13
+ *
14
+ * WP Ultimate CSV Importer is distributed in the hope that it will be useful,
15
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
16
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public
17
+ * License for more details.
18
+ *
19
+ * You should have received a copy of the GNU Affero General Public License
20
+ * along with this program; if not, see http://www.gnu.org/licenses or write
21
+ * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
22
+ * Boston, MA 02110-1301 USA.
23
+ *
24
+ * You can contact Smackcoders at email address info@smackcoders.com.
25
+ *
26
+ * The interactive user interfaces in original and modified versions
27
+ * of this program must display Appropriate Legal Notices, as required under
28
+ * Section 5 of the GNU Affero General Public License version 3.
29
+ *
30
+ * In accordance with Section 7(b) of the GNU Affero General Public License
31
+ * version 3, these Appropriate Legal Notices must retain the display of the
32
+ * WP Ultimate CSV Importer copyright notice. If the display of the logo is
33
+ * not reasonably feasible for technical reasons, the Appropriate Legal
34
+ * Notices must display the words
35
+ * "Copyright Smackcoders. 2015. All rights reserved".
36
+ ********************************************************************************/
37
+
38
+ if (!defined('ABSPATH')) {
39
+ exit;
40
+ } // Exit if accessed directly
41
 
42
  class ImporterLib {
43
  var $rzfejj_23 = true;
58
  var $foevdt_43 = 'ISO-8859-1';
59
  var $bzcrxk_44 = "\r\n";
60
  var $huzgna_45 = ',';
61
+ var $gbuviv_33 = 'data.csv';
62
  var $bhujwy_34 = false;
63
  var $iigiqu_63;
64
  var $nftvhw_20;
66
  var $gtxpcj_22 = array();
67
  var $mpkaqs_35 = array();
68
  var $data = array();
69
+
70
+
71
+ function akhrnw_2($dsmiub_46 = null, $rtkfzr_31 = null, $urccim_32 = null, $hhtsch_30 = null) {
72
+ if ($rtkfzr_31 !== null) {
73
+ $this->rtkfzr_31 = $rtkfzr_31;
74
+ }
75
+ if ($urccim_32 !== null) {
76
+ $this->urccim_32 = $urccim_32;
77
+ }
78
+ if (count($hhtsch_30) > 0) {
79
+ $this->hhtsch_30 = $hhtsch_30;
80
+ }
81
+ if (!empty($dsmiub_46)) {
82
+ $this->ruscjv_15($dsmiub_46);
83
+ }
84
  }
85
+
86
+
87
+ function ruscjv_15($dsmiub_46 = null, $rtkfzr_31 = null, $urccim_32 = null, $hhtsch_30 = null) {
88
+ if ($dsmiub_46 === null) {
89
+ $dsmiub_46 = $this->iigiqu_63;
90
+ }
91
+ if (!empty($dsmiub_46)) {
92
+ if ($rtkfzr_31 !== null) {
93
+ $this->rtkfzr_31 = $rtkfzr_31;
94
+ }
95
+ if ($urccim_32 !== null) {
96
+ $this->urccim_32 = $urccim_32;
97
+ }
98
+ if (count($hhtsch_30) > 0) {
99
+ $this->hhtsch_30 = $hhtsch_30;
100
+ }
101
+ if (is_readable($dsmiub_46)) {
102
  $this->data = $this->ghloqy_7($dsmiub_46);
103
  } else {
104
  $this->nftvhw_20 = &$dsmiub_46;
105
  $this->data = $this->ytcfme_6();
106
  }
107
+ if ($this->data === false) {
108
+ return false;
109
+ }
110
  }
111
  return true;
112
  }
113
+
114
+ function vsxpii_16($iigiqu_63 = null, $huzgna_45 = array(), $bkarne_52 = false, $lfxszn_24 = array()) {
115
+ if (empty($iigiqu_63)) {
116
+ $iigiqu_63 = &$this->iigiqu_63;
117
+ }
118
+ $mode = ($bkarne_52) ? 'at' : 'wt';
119
+ $is_php = (preg_match('/\.php$/i', $iigiqu_63)) ? true : false;
120
  return $this->jvyhik_14($iigiqu_63, $this->krlkbv_0($huzgna_45, $lfxszn_24, $bkarne_52, $is_php), $mode);
121
  }
122
+
123
+ function wmyuyn_3($filename = null, $huzgna_45 = array(), $lfxszn_24 = array(), $delimiter = null) {
124
+ if (empty($filename)) {
125
+ $filename = $this->gbuviv_33;
126
+ }
127
+ if ($delimiter === null) {
128
+ $delimiter = $this->huzgna_45;
129
+ }
130
  $huzgna_45 = $this->krlkbv_0($huzgna_45, $lfxszn_24, null, null, $delimiter);
131
+ if ($filename !== null) {
132
  header('Content-type: application/csv');
133
+ header('Content-Disposition: attachment; filename="' . $filename . '"');
134
  echo $huzgna_45;
135
  }
136
  return $huzgna_45;
137
  }
138
+
139
+ function fidfvc_4($dsmiub_46 = null, $wmrey_p8 = null) {
140
  $this->fybktu_41 = true;
141
+ if ($dsmiub_46 !== null) {
142
+ $this->bmalcx_42 = $dsmiub_46;
143
+ }
144
+ if ($wmrey_p8 !== null) {
145
+ $this->foevdt_43 = $wmrey_p8;
146
+ }
147
  }
148
+
149
+ function delim($iigiqu_63 = null, $parse = true, $search_depth = null, $preferred = null, $ezvruf_29 = null) {
150
+
151
+ if ($iigiqu_63 === null) {
152
+ $iigiqu_63 = $this->iigiqu_63;
153
+ }
154
+ if (empty($search_depth)) {
155
+ $search_depth = $this->ppbenb_38;
156
+ }
157
+ if ($ezvruf_29 === null) {
158
+ $ezvruf_29 = $this->ezvruf_29;
159
+ }
160
+
161
+ if ($preferred === null) {
162
+ $preferred = $this->qyllow_39;
163
+ }
164
+
165
+ if (empty($this->nftvhw_20)) {
166
+ if ($this->totraw_9($iigiqu_63)) {
167
  $huzgna_45 = &$this->nftvhw_20;
168
+ } else {
169
+ return false;
170
+ }
171
  } else {
172
  $huzgna_45 = &$this->nftvhw_20;
173
  }
174
+
175
  $chars = array();
176
  $strlen = strlen($huzgna_45);
177
  $fqlsha_68 = false;
178
  $n = 1;
179
  $to_end = true;
180
+
181
+ for ($i = 0; $i < $strlen; $i++) {
182
  $ch = $huzgna_45{$i};
183
+ $nch = (isset($huzgna_45{$i + 1})) ? $huzgna_45{$i + 1} : false;
184
+ $pch = (isset($huzgna_45{$i - 1})) ? $huzgna_45{$i - 1} : false;
185
+
186
+ if ($ch == $ezvruf_29) {
187
+ if (!$fqlsha_68 || $nch != $ezvruf_29) {
188
+ $fqlsha_68 = ($fqlsha_68) ? false : true;
189
+ } elseif ($fqlsha_68) {
190
  $i++;
191
  }
192
+
193
+ } elseif (($ch == "\n" && $pch != "\r" || $ch == "\r") && !$fqlsha_68) {
194
+ if ($n >= $search_depth) {
195
  $strlen = 0;
196
  $to_end = false;
197
  } else {
198
  $n++;
199
  }
200
+
201
  } elseif (!$fqlsha_68) {
202
+ if (!preg_match('/[' . preg_quote($this->gpxabp_40, '/') . ']/i', $ch)) {
203
+ if (!isset($chars[$ch][$n])) {
204
  $chars[$ch][$n] = 1;
205
  } else {
206
  $chars[$ch][$n]++;
208
  }
209
  }
210
  }
211
+
212
+ $depth = ($to_end) ? $n - 1 : $n;
213
  $filtered = array();
214
+ foreach ($chars as $char => $value) {
215
+ if ($match = $this->klpqct_10($char, $value, $depth, $preferred)) {
216
  $filtered[$match] = $char;
217
  }
218
  }
219
+
220
  ksort($filtered);
221
  $this->delimiter = reset($filtered);
222
+
223
+ if ($parse) {
224
+ $this->data = $this->ytcfme_6();
225
+ }
226
+
227
  return $this->delimiter;
228
+
229
  }
230
+
231
+
232
+ function vh100($iigiqu_63 = null) {
233
+ if ($iigiqu_63 === null) {
234
+ $iigiqu_63 = $this->iigiqu_63;
235
+ }
236
+ if (empty($this->nftvhw_20)) {
237
+ $this->fmilrp_13($iigiqu_63);
238
+ }
239
+ return (!empty($this->nftvhw_20)) ? $this->ytcfme_6() : false;
240
  }
241
+
242
+ function ytcfme_6($huzgna_45 = null) {
243
+ if (empty($huzgna_45)) {
244
+ if ($this->totraw_9()) {
245
  $huzgna_45 = &$this->nftvhw_20;
246
+ } else {
247
+ return false;
248
+ }
249
  }
250
+
251
  $white_spaces = str_replace($this->delimiter, '', " \t\x0B\0");
252
+
253
  $jlesjs_83 = array();
254
  $mbswxn_84 = array();
255
  $cdgpzw_85 = 0;
256
  $ewhrie_86 = '';
257
+ $head = (!empty($this->lfxszn_24)) ? $this->lfxszn_24 : array();
258
  $eylwks_89 = 0;
259
  $fqlsha_68 = false;
260
  $qobixt_90 = false;
261
  $strlen = strlen($huzgna_45);
262
+
263
+ for ($i = 0; $i < $strlen; $i++) {
264
  $ch = $huzgna_45{$i};
265
+ $nch = (isset($huzgna_45{$i + 1})) ? $huzgna_45{$i + 1} : false;
266
+ $pch = (isset($huzgna_45{$i - 1})) ? $huzgna_45{$i - 1} : false;
267
+
268
+ if ($ch == $this->ezvruf_29) {
269
+ if (!$fqlsha_68) {
270
+ if (ltrim($ewhrie_86, $white_spaces) == '') {
271
  $fqlsha_68 = true;
272
  $qobixt_90 = true;
273
  } else {
274
  $this->jybluc_21 = 2;
275
  $error_row = count($jlesjs_83) + 1;
276
  $error_col = $eylwks_89 + 1;
277
+ if (!isset($this->gtxpcj_22[$error_row . '-' . $error_col])) {
278
+ $this->gtxpcj_22[$error_row . '-' . $error_col] = array('type' => 2, 'info' => 'Syntax error found on row ' . $error_row . '. Non-enclosed lfxszn_24 can not contain double-quotes.', 'row' => $error_row, 'field' => $error_col, 'field_name' => (!empty($head[$eylwks_89])) ? $head[$eylwks_89] : null,);
 
 
 
 
 
 
279
  }
280
  $ewhrie_86 .= $ch;
281
  }
282
  } elseif ($nch == $this->ezvruf_29) {
283
  $ewhrie_86 .= $ch;
284
  $i++;
285
+ } elseif ($nch != $this->delimiter && $nch != "\r" && $nch != "\n") {
286
+ for ($x = ($i + 1); isset($huzgna_45{$x}) && ltrim($huzgna_45{$x}, $white_spaces) == ''; $x++) {
287
+ }
288
+ if ($huzgna_45{$x} == $this->delimiter) {
289
  $fqlsha_68 = false;
290
  $i = $x;
291
  } else {
292
+ if ($this->jybluc_21 < 1) {
293
  $this->jybluc_21 = 1;
294
  }
295
  $error_row = count($jlesjs_83) + 1;
296
  $error_col = $eylwks_89 + 1;
297
+ if (!isset($this->gtxpcj_22[$error_row . '-' . $error_col])) {
298
+ $this->gtxpcj_22[$error_row . '-' . $error_col] = array('type' => 1, 'info' => 'Syntax error found on row ' . (count($jlesjs_83) + 1) . '. ' . 'A single double-quote was found within an enclosed string. ' . 'Enclosed double-quotes must be escaped with a second double-quote.', 'row' => count($jlesjs_83) + 1, 'field' => $eylwks_89 + 1, 'field_name' => (!empty($head[$eylwks_89])) ? $head[$eylwks_89] : null,);
 
 
 
 
 
 
 
 
 
299
  }
300
  $ewhrie_86 .= $ch;
301
  $fqlsha_68 = false;
303
  } else {
304
  $fqlsha_68 = false;
305
  }
306
+
307
+ // end of field/row
308
+ } elseif (($ch == $this->delimiter || $ch == "\n" || $ch == "\r") && !$fqlsha_68) {
309
+ $key = (!empty($head[$eylwks_89])) ? $head[$eylwks_89] : $eylwks_89;
310
+ $mbswxn_84[$key] = ($qobixt_90) ? $ewhrie_86 : trim($ewhrie_86);
311
  $ewhrie_86 = '';
312
  $qobixt_90 = false;
313
  $eylwks_89++;
314
+
315
  // end of row
316
+ if ($ch == "\n" || $ch == "\r") {
317
+ if ($this->blhlef_1($cdgpzw_85) && $this->qnoiuh_17s($mbswxn_84, $this->hhtsch_30)) {
318
+ if ($this->rzfejj_23 && empty($head)) {
319
  $head = $mbswxn_84;
320
+ } elseif (empty($this->lfxszn_24) || (!empty($this->lfxszn_24) && (($this->rzfejj_23 && $cdgpzw_85 > 0) || !$this->rzfejj_23))) {
321
+ if (!empty($this->aerjwu_25) && !empty($mbswxn_84[$this->aerjwu_25])) {
322
+ if (isset($jlesjs_83[$mbswxn_84[$this->aerjwu_25]])) {
323
+ $jlesjs_83[$mbswxn_84[$this->aerjwu_25] . '_0'] = &$jlesjs_83[$mbswxn_84[$this->aerjwu_25]];
324
  unset($jlesjs_83[$mbswxn_84[$this->aerjwu_25]]);
325
+ for ($sn = 1; isset($jlesjs_83[$mbswxn_84[$this->aerjwu_25] . '_' . $sn]); $sn++) {
326
+ }
327
+ $jlesjs_83[$mbswxn_84[$this->aerjwu_25] . '_' . $sn] = $mbswxn_84;
328
+ } else {
329
+ $jlesjs_83[$mbswxn_84[$this->aerjwu_25]] = $mbswxn_84;
330
+ }
331
+ } else {
332
+ $jlesjs_83[] = $mbswxn_84;
333
+ }
334
  }
335
  }
336
  $mbswxn_84 = array();
337
  $eylwks_89 = 0;
338
  $cdgpzw_85++;
339
+ if ($this->aerjwu_25 === null && $this->urccim_32 !== null && count($jlesjs_83) == $this->urccim_32) {
340
  $i = $strlen;
341
  }
342
+ if ($ch == "\r" && $nch == "\n") {
343
+ $i++;
344
+ }
345
  }
346
+
347
  } else {
348
  $ewhrie_86 .= $ch;
349
  }
350
  }
351
  $this->mpkaqs_35 = $head;
352
+ if (!empty($this->aerjwu_25)) {
353
  $qnghcy_27 = SORT_REGULAR;
354
+ if ($this->qnghcy_27 == 'numeric') {
355
  $qnghcy_27 = SORT_NUMERIC;
356
+ } elseif ($this->qnghcy_27 == 'string') {
357
  $qnghcy_27 = SORT_STRING;
358
  }
359
+ ($this->huepva_26) ? krsort($jlesjs_83, $qnghcy_27) : ksort($jlesjs_83, $qnghcy_27);
360
+ if ($this->rtkfzr_31 !== null || $this->urccim_32 !== null) {
361
+ $jlesjs_83 = array_slice($jlesjs_83, ($this->rtkfzr_31 === null ? 0 : $this->rtkfzr_31), $this->urccim_32, true);
362
  }
363
  }
364
+ if (!$this->bhujwy_34) {
365
  $this->nftvhw_20 = null;
366
  }
367
  return $jlesjs_83;
368
  }
369
+
370
+ function krlkbv_0($huzgna_45 = array(), $lfxszn_24 = array(), $bkarne_52 = false, $is_php = false, $delimiter = null) {
371
+ if (!is_array($huzgna_45) || empty($huzgna_45)) {
372
+ $huzgna_45 = &$this->data;
373
+ }
374
+ if (!is_array($lfxszn_24) || empty($lfxszn_24)) {
375
+ $lfxszn_24 = &$this->mpkaqs_35;
376
+ }
377
+ if ($delimiter === null) {
378
+ $delimiter = $this->delimiter;
379
+ }
380
+
381
+ $string = ($is_php) ? "<?php header('Status: 403'); die(' '); ?>" . $this->bzcrxk_44 : '';
382
  $entry = array();
383
+
384
+ if ($this->rzfejj_23 && !$bkarne_52 && !empty($lfxszn_24)) {
385
+ foreach ($lfxszn_24 as $key => $value) {
386
  $entry[] = $this->sxzpwt_8($value);
387
  }
388
+ $string .= implode($delimiter, $entry) . $this->bzcrxk_44;
389
  $entry = array();
390
  }
391
+
392
+ foreach ($huzgna_45 as $key => $mbswxn_84) {
393
+ foreach ($mbswxn_84 as $field => $value) {
394
  $entry[] = $this->sxzpwt_8($value);
395
  }
396
+ $string .= implode($delimiter, $entry) . $this->bzcrxk_44;
397
  $entry = array();
398
  }
399
+
400
  return $string;
401
  }
402
+
403
+ function fmilrp_13($dsmiub_46 = null) {
404
  $huzgna_45 = null;
405
  $iigiqu_63 = null;
406
+ if ($dsmiub_46 === null) {
407
  $iigiqu_63 = $this->iigiqu_63;
408
+ } elseif (file_exists($dsmiub_46)) {
409
  $iigiqu_63 = $dsmiub_46;
410
  } else {
411
  $huzgna_45 = $dsmiub_46;
412
  }
413
+ if (!empty($huzgna_45) || $huzgna_45 = $this->rqauqn_12($iigiqu_63)) {
414
+ if ($this->iigiqu_63 != $iigiqu_63) {
415
+ $this->iigiqu_63 = $iigiqu_63;
416
+ }
417
+ if (preg_match('/\.php$/i', $iigiqu_63) && preg_match('/<\?.*?\?>(.*)/ims', $huzgna_45, $strip)) {
418
  $huzgna_45 = ltrim($strip[1]);
419
  }
420
+ if ($this->fybktu_41) {
421
+ $huzgna_45 = iconv($this->bmalcx_42, $this->foevdt_43, $huzgna_45);
422
+ }
423
+ if (substr($huzgna_45, -1) != "\n") {
424
+ $huzgna_45 .= "\n";
425
+ }
426
  $this->nftvhw_20 = &$huzgna_45;
427
  return true;
428
  }
429
  return false;
430
  }
431
+
432
+
433
+ function qnoiuh_17s($mbswxn_84 = array(), $hhtsch_30 = null) {
434
+ if (!empty($mbswxn_84)) {
435
+ if (!empty($hhtsch_30)) {
436
+ $hhtsch_30 = (strpos($hhtsch_30, ' OR ') !== false) ? explode(' OR ', $hhtsch_30) : array($hhtsch_30);
437
  $or = '';
438
+ foreach ($hhtsch_30 as $key => $value) {
439
+ if (strpos($value, ' AND ') !== false) {
440
  $value = explode(' AND ', $value);
441
  $and = '';
442
+ foreach ($value as $k => $v) {
443
  $and .= $this->qnoiuh_17($mbswxn_84, $v);
444
  }
445
+ $or .= (strpos($and, '0') !== false) ? '0' : '1';
446
  } else {
447
  $or .= $this->qnoiuh_17($mbswxn_84, $value);
448
  }
449
  }
450
+ return (strpos($or, '1') !== false) ? true : false;
451
  }
452
  return true;
453
  }
454
  return false;
455
  }
456
+
457
+ function qnoiuh_17($mbswxn_84, $condition) {
458
+ $operators = array('=', 'equals', 'is', '!=', 'is not', '<', 'is less than', '>', 'is greater than', '<=', 'is less than or equals', '>=', 'is greater than or equals', 'contains', 'does not contain',);
 
 
 
 
 
 
 
 
 
459
  $operators_regex = array();
460
+ foreach ($operators as $value) {
461
  $operators_regex[] = preg_quote($value, '/');
462
  }
463
  $operators_regex = implode('|', $operators_regex);
464
+ if (preg_match('/^(.+) (' . $operators_regex . ') (.+)$/i', trim($condition), $capture)) {
465
  $field = $capture[1];
466
  $op = $capture[2];
467
  $value = $capture[3];
468
+ if (preg_match('/^([\'\"]{1})(.*)([\'\"]{1})$/i', $value, $capture)) {
469
+ if ($capture[1] == $capture[3]) {
470
  $value = $capture[2];
471
  $value = str_replace("\\n", "\n", $value);
472
  $value = str_replace("\\r", "\r", $value);
474
  $value = stripslashes($value);
475
  }
476
  }
477
+ if (array_key_exists($field, $mbswxn_84)) {
478
+ if (($op == '=' || $op == 'equals' || $op == 'is') && $mbswxn_84[$field] == $value) {
479
  return '1';
480
+ } elseif (($op == '!=' || $op == 'is not') && $mbswxn_84[$field] != $value) {
481
  return '1';
482
+ } elseif (($op == '<' || $op == 'is less than') && $mbswxn_84[$field] < $value) {
483
  return '1';
484
+ } elseif (($op == '>' || $op == 'is greater than') && $mbswxn_84[$field] > $value) {
485
  return '1';
486
+ } elseif (($op == '<=' || $op == 'is less than or equals') && $mbswxn_84[$field] <= $value) {
487
  return '1';
488
+ } elseif (($op == '>=' || $op == 'is greater than or equals') && $mbswxn_84[$field] >= $value) {
489
  return '1';
490
+ } elseif ($op == 'contains' && preg_match('/' . preg_quote($value, '/') . '/i', $mbswxn_84[$field])) {
491
  return '1';
492
+ } elseif ($op == 'does not contain' && !preg_match('/' . preg_quote($value, '/') . '/i', $mbswxn_84[$field])) {
493
  return '1';
494
  } else {
495
  return '0';
498
  }
499
  return '1';
500
  }
501
+
502
+ function blhlef_1($ewhrie_86_row) {
503
+ if ($this->aerjwu_25 === null && $this->rtkfzr_31 !== null && $ewhrie_86_row < $this->rtkfzr_31) {
504
+ return false;
505
+ }
506
  return true;
507
  }
508
+
509
+ function sxzpwt_8($value = null) {
510
+ if ($value !== null && $value != '') {
511
  $delimiter = preg_quote($this->delimiter, '/');
512
  $ezvruf_29 = preg_quote($this->ezvruf_29, '/');
513
+ if (preg_match("/" . $delimiter . "|" . $ezvruf_29 . "|\n|\r/i", $value) || ($value{0} == ' ' || substr($value, -1) == ' ')) {
514
+ $value = str_replace($this->ezvruf_29, $this->ezvruf_29 . $this->ezvruf_29, $value);
515
+ $value = $this->ezvruf_29 . $value . $this->ezvruf_29;
516
  }
517
  }
518
  return $value;
519
  }
520
+
521
+ function totraw_9($iigiqu_63 = null) {
522
+ if (empty($this->nftvhw_20)) {
523
+ if ($iigiqu_63 === null) {
524
+ $iigiqu_63 = $this->iigiqu_63;
525
+ }
526
  return $this->fmilrp_13($iigiqu_63);
527
  }
528
  return true;
529
  }
530
+
531
+
532
+ function klpqct_10($char, $array, $depth, $preferred) {
533
+ if ($depth == count($array)) {
534
  $first = null;
535
  $equal = null;
536
  $almost = false;
537
+ foreach ($array as $key => $value) {
538
+ if ($first == null) {
539
  $first = $value;
540
+ } elseif ($value == $first && $equal !== false) {
541
  $equal = true;
542
+ } elseif ($value == $first + 1 && $equal !== false) {
543
  $equal = true;
544
  $almost = true;
545
  } else {
546
  $equal = false;
547
  }
548
  }
549
+ if ($equal) {
550
+ $match = ($almost) ? 2 : 1;
551
  $pref = strpos($preferred, $char);
552
+ $pref = ($pref !== false) ? str_pad($pref, 3, '0', STR_PAD_LEFT) : '999';
553
+ return $pref . $match . '.' . (99999 - str_pad($first, 5, '0', STR_PAD_LEFT));
554
+ } else {
555
+ return false;
556
+ }
557
  }
558
  }
559
+
560
+ function rqauqn_12($iigiqu_63 = null) {
561
+ if (is_readable($iigiqu_63)) {
562
+ if (!($fh = fopen($iigiqu_63, 'r'))) {
563
+ return false;
564
+ }
565
  $huzgna_45 = fread($fh, filesize($iigiqu_63));
566
  fclose($fh);
567
  return $huzgna_45;
569
  return false;
570
  }
571
 
572
+ function jvyhik_14($iigiqu_63, $string = '', $mode = 'wb', $lock = 2) {
573
+ if ($fp = fopen($iigiqu_63, $mode)) {
574
  flock($fp, $lock);
575
  $re = fwrite($fp, $string);
576
  $re2 = fclose($fp);
577
+ if ($re != false && $re2 != false) {
578
+ return true;
579
+ }
580
  }
581
  return false;
582
  }
583
+
584
  }
 
includes/WPImporter_includes_helper.php CHANGED
@@ -32,15 +32,16 @@
32
  * WP Ultimate CSV Importer copyright notice. If the display of the logo is
33
  * not reasonably feasible for technical reasons, the Appropriate Legal
34
  * Notices must display the words
35
- * "Copyright Smackcoders. 2014. All rights reserved".
36
  ********************************************************************************/
37
- if ( ! defined( 'ABSPATH' ) )
38
- exit; // Exit if accessed directly
 
 
39
 
40
  class WPImporter_includes_helper {
41
 
42
- public function __construct()
43
- {
44
  $this->getKeyVals();
45
  }
46
 
@@ -66,16 +67,13 @@ class WPImporter_includes_helper {
66
  public $noPostAuthCount = 0;
67
 
68
  // @var int updated post count
69
- public $updatedPostCount=0;
70
 
71
  // @var string delimiter
72
  public $delim = ",";
73
 
74
  // @var array delilimters supported by CSV importer
75
- public $delim_avail = array(
76
- ',',
77
- ';'
78
- );
79
 
80
  // @var array wp field keys
81
  public $keys = array();
@@ -84,35 +82,20 @@ class WPImporter_includes_helper {
84
  public $MultiImages = false;
85
 
86
  // @var array for default columns
87
- public $defCols = array(
88
- 'post_title' => null,
89
- 'post_content' => null,
90
- 'post_excerpt' => null,
91
- 'post_date' => null,
92
- 'post_name' => null,
93
- 'post_tag' => null,
94
- 'post_category' => null,
95
- 'post_author' => null,
96
- 'featured_image' => null,
97
- 'post_parent' => 0,
98
- 'post_status' => 0,
99
- 'menu_order' => 0,
100
- 'post_format' => 0,
101
- 'wp_page_template' => null,
102
- );
103
 
104
  // @var array CSV headers
105
  public $headers = array();
106
 
107
- public $capturedId=0;
108
 
109
  public $detailedLog = array();
110
 
111
  /* getImportDataConfiguration */
112
- public function getImportDataConfiguration(){
113
  $importDataConfig = "<div class='importstatus'id='importallwithps_div'>
114
  <table><tr><td>
115
- <label id='importalign'>". __('Import with post status','wp-ultimate-csv-importer') ."</label><span class='mandatory'> *</span></td><td>
116
  <div style='float:left;margin-right:10px;'>
117
  <select name='importallwithps' id='importallwithps' onChange='selectpoststatus();' >
118
  <option value='0'>Status as in CSV</option>
@@ -125,15 +108,15 @@ class WPImporter_includes_helper {
125
  </select></div>
126
  <div style='float:right;'>
127
  <a href='#' class='tooltip'>
128
- <img src='".WP_CONST_ULTIMATE_CSV_IMP_DIR."images/help.png' />
129
  <span class='tooltipPostStatus'>
130
- <img class='callout' src='".WP_CONST_ULTIMATE_CSV_IMP_DIR."images/callout.gif' />
131
- ". __('Select the status for the post imported, if not defined within your csv .E.g.publish','wp-ultimate-csv-importer')."
132
- <img src='". WP_CONST_ULTIMATE_CSV_IMP_DIR."images/help.png' style='margin-top: 6px;float:right;' />
133
  </span></a> </div>
134
  </td></tr><tr><td>
135
- <div id='globalpassword_label' class='globalpassword' style='display:none;'><label>". __('Password','wp-ultimate-csv-importer')."</label><span class='mandatory'> *</span></div></td><td>
136
- <div id='globalpassword_text' class='globalpassword' style='display:none;'><input type = 'text' id='globalpassword_txt' name='globalpassword_txt' placeholder=".__('Password for all post','wp-ultimate-csv-importer')."></div></td></tr></table>
137
  </div>";
138
  return $importDataConfig;
139
  }
@@ -141,84 +124,79 @@ class WPImporter_includes_helper {
141
  /**
142
  * Get upload directory
143
  */
144
- public function getUploadDirectory($check = 'plugin_uploads')
145
- {
146
  $upload_dir = wp_upload_dir();
147
- if($check == 'plugin_uploads'){
148
  return $upload_dir ['basedir'] . "/" . $this->uploadDir;
149
- }else{
150
  return $upload_dir ['basedir'];
151
  }
152
  }
153
 
154
  /**
155
- * generate help tooltip
156
- * @param string $content ** content to show on tooltip **
157
- * @return string $html ** generated HTML **
158
  **/
159
- public function generatehelp($content, $mapping_style = NULL)
160
- {
161
- $html = '<div style = "'.$mapping_style.'"> <a href="#" class="tooltip">
162
- <img src="'.WP_CONST_ULTIMATE_CSV_IMP_DIR.'images/help.png" />
163
  <span class="tooltipPostStatus">
164
- <img class="callout" src="'.WP_CONST_ULTIMATE_CSV_IMP_DIR.'images/callout.gif" />
165
- '.$content.'
166
- <img src="'.WP_CONST_ULTIMATE_CSV_IMP_DIR.'images/help.png" style="margin-top: 6px;float:right;" />
167
  </span> </a> </div>';
168
  return $html;
169
  }
170
 
171
- public static function output_fd_page()
172
- {
173
  $get_pluginData = get_plugin_data(plugin_dir_path(__FILE__) . '../index.php');
174
  $plugin_version = get_option('ULTIMATE_CSV_IMPORTER_UPGRADE_FREE_VERSION');
175
- if(!$plugin_version) {
176
  $plugin_version = get_option('ULTIMATE_CSV_IMP_FREE_VERSION');
177
  }
178
  if ($get_pluginData['Version'] == '3.6' && $plugin_version == '') {
179
  if (file_exists(WP_CONST_ULTIMATE_CSV_IMP_DIRECTORY . '/upgrade/migrationfreev3.6.php')) {
180
  require_once(WP_CONST_ULTIMATE_CSV_IMP_DIRECTORY . '/upgrade/migrationfreev3.6.php');
181
- die();
182
  }
183
- }
184
- else if (!isset($_REQUEST['__module']))
185
- {
186
  if (!isset($_REQUEST['__module'])) {
187
- wp_redirect(get_admin_url() . 'admin.php?page=' . WP_CONST_ULTIMATE_CSV_IMP_SLUG . '/index.php&__module=dashboard');
 
188
 
 
189
  }
190
  }
191
- require_once(WP_CONST_ULTIMATE_CSV_IMP_DIRECTORY.'config/settings.php');
192
- require_once(WP_CONST_ULTIMATE_CSV_IMP_DIRECTORY.'lib/skinnymvc/controller/SkinnyController.php');
193
 
194
  $c = new SkinnyControllerWPCsvFree;
195
  $c->main();
196
  }
197
 
198
- public function getSettings(){
199
  return get_option('wpcsvfreesettings');
200
  }
201
 
202
- public function renderMenu()
203
- {
204
  include(plugin_dir_path(__FILE__) . '../templates/menu.php');
205
  }
206
 
207
- public function requestedAction($action,$step){
208
- $actions = array('dashboard','settings','help','users','comments','eshop','wpcommerce','woocommerce','categories','customtaxonomy','export', 'mappingtemplate');
209
- if(!in_array($action,$actions)){
210
  include(plugin_dir_path(__FILE__) . '../templates/view.php');
211
- }else{
212
- include(plugin_dir_path(__FILE__) . '../modules/'.$action.'/actions/actions.php');
213
- include(plugin_dir_path(__FILE__) . '../modules/'.$action.'/templates/view.php');
214
  }
215
  }
216
 
217
  /**
218
  * Move CSV to the upload directory
219
  */
220
- public function move_file()
221
- {
222
  if ($_FILES ["csv_import"] ["error"] == 0) {
223
  $tmp_name = $_FILES ["csv_import"] ["tmp_name"];
224
  $this->csvFileName = $_FILES ["csv_import"] ["name"];
@@ -229,8 +207,7 @@ class WPImporter_includes_helper {
229
  /**
230
  * Check upload dirctory permission
231
  */
232
- function checkUploadDirPermission()
233
- {
234
  $this->getUploadDirectory();
235
  $upload_dir = wp_upload_dir();
236
  if (!is_dir($upload_dir ['basedir'])) {
@@ -253,10 +230,9 @@ class WPImporter_includes_helper {
253
  /**
254
  * Get field colum keys
255
  */
256
- function getKeyVals()
257
- {
258
- $cust_fields='';
259
- $acf_field=array();
260
  $wpcsvfreesettings = array();
261
  global $wpdb;
262
  $active_plugins = get_option('active_plugins');
@@ -271,14 +247,16 @@ class WPImporter_includes_helper {
271
  $this->defCols ["CF: " . $val] = $val;
272
  }
273
  $wpcsvfreesettings = get_option('wpcsvfreesettings');
274
- if($wpcsvfreesettings)
275
- if(in_array('aioseo',$wpcsvfreesettings)){
276
- if(in_array('all-in-one-seo-pack/all_in_one_seo_pack.php', $active_plugins)){
277
- $seo_custoFields =array('SEO: keywords','SEO: description','SEO: title','SEO: noindex','SEO: nofollow','SEO: titleatr','SEO: menulabel','SEO: disable','SEO: disable_analytics','SEO: noodp','SEO: noydir');
278
- foreach($seo_custoFields as $val)
279
- $this->defCols[$val]=$val;
 
280
  }
281
  }
 
282
  }
283
 
284
  /**
@@ -287,35 +265,33 @@ class WPImporter_includes_helper {
287
  * @param $delim delimiter for the CSV
288
  * @return array formatted CSV output as array
289
  */
290
- function csv_file_data($file)
291
- {
292
- $file = $this->getUploadDirectory().'/'.$file;
293
- require_once(WP_CONST_ULTIMATE_CSV_IMP_DIRECTORY.'includes/Importer.php');
294
  $csv = new ImporterLib();
295
  $csv->delim($file);
296
- foreach($csv->data as $hkey => $hval) {
297
- foreach($hval as $hk => $hv) {
298
  $this->headers[] = $hk;
299
  }
300
  break;
301
  }
302
- return $csv->data;
303
  }
304
 
305
- function csv_file_readdata($file, $obj)
306
- {
307
- $file = $obj->getUploadDirectory().'/'.$file;
308
- require_once(WP_CONST_ULTIMATE_CSV_IMP_DIRECTORY.'includes/Importer.php');
309
- $csv = new ImporterLib();
310
- $csv->delim($file);
311
- foreach($csv->data as $hkey => $hval) {
312
- foreach($hval as $hk => $hv) {
313
- $this->headers[] = $hk;
314
- }
315
- break;
316
- }
317
- return $csv->data;
318
- }
319
 
320
  /**
321
  * Manage duplicates
@@ -323,8 +299,7 @@ class WPImporter_includes_helper {
323
  * @param string type = (title|content), string content
324
  * @return boolean
325
  */
326
- function duplicateChecks($type = 'title', $text, $gettype, $currentLimit, $postTitle)
327
- {
328
  global $wpdb;
329
  if ($type == 'content') {
330
  $htmlDecode = html_entity_decode($text);
@@ -344,24 +319,28 @@ class WPImporter_includes_helper {
344
  }
345
  }
346
  return true;
347
- } else if ($type == 'title') {
348
- $post_exist = $wpdb->get_results("select ID from " . $wpdb->posts . " where post_title = \"{$text}\" and post_type = \"{$gettype}\" and post_status in('publish','future','draft','pending','private')");
349
- if (!(count($post_exist) == 0 && ($text != null || $text != ''))) {
350
- $this->dupPostCount++;
351
- $this->detailedLog[$currentLimit]['verify_here'] = "Post-title Already Exists. It can't be imported.";
352
- return false;
353
- }
354
- return true;
355
- } else if ($type == 'title && content') {
356
- $post_exist = $wpdb->get_results("select ID from " . $wpdb->posts . " where post_title = \"{$postTitle}\" and post_content = \"{$text}\" and post_status IN('publish','future','draft','pending','private')");
357
- if (!(count($post_exist) == 0 && ($text != null || $text != ''))) {
358
- $this->dupPostCount++;
359
- $this->detailedLog[$currentLimit]['verify_here'] = "Post-title and post-content Already Exists. It can't be imported.";
360
- return false;
361
- }
362
- return true;
363
- }
364
- }
 
 
 
 
365
 
366
 
367
  /**
@@ -373,25 +352,25 @@ class WPImporter_includes_helper {
373
  * @param $currentLimit
374
  * @param string $logObj
375
  */
376
- public static function get_fimg_from_URL($f_img, $fimg_path, $fimg_name, $post_slug_value, $currentLimit = null, $logObj = ""){
377
- $f_img = str_replace( " ","%20", $f_img );
378
- if($fimg_path!="" && $fimg_path){
379
  $fimg_path = $fimg_path . "/" . $fimg_name;
380
  }
381
- $ch = curl_init ($f_img);
382
  curl_setopt($ch, CURLOPT_HEADER, 0);
383
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
384
- curl_setopt($ch, CURLOPT_BINARYTRANSFER,1);
385
  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
386
  $rawdata = curl_exec($ch);
387
- if(strpos($rawdata, 'Not Found') != 0) {
388
  $rawdata = false;
389
  }
390
  if ($rawdata == false) {
391
  if ($logObj == '') {
392
- $this->detailedLog[$currentLimit]['image'] = "<b>" .__('Image','wp-ultimate-csv-importer')." -</b> " .__('host not resolved','wp-ultimate-csv-importer');
393
  } else {
394
- $logObj->detailedLog[$currentLimit]['image'] = "<b>" . __('Image','wp-ultimate-csv-importer')." -</b>" .__('host not resolved','wp-ultimate-csv-importer');
395
  }
396
  } else {
397
  if (file_exists($fimg_path)) {
@@ -400,7 +379,7 @@ class WPImporter_includes_helper {
400
  $fp = fopen($fimg_path, 'x');
401
  fwrite($fp, $rawdata);
402
  fclose($fp);
403
- $logObj->detailedLog[$currentLimit]['image'] = "<b>". __('Image','wp-ultimate-csv-importer')." -</b>" . $fimg_name;
404
  }
405
  curl_close($ch);
406
  return $fimg_name;
@@ -411,59 +390,53 @@ class WPImporter_includes_helper {
411
  *
412
  * @return boolean
413
  */
414
- function processDataInWP($data_rows,$ret_array,$session_arr,$currentLimit,$extractedimagelocation,$importinlineimageoption,$sample_inlineimage_url = null) {
415
  global $wpdb;
416
  $post_id = '';
417
  $new_post = array();
418
  $smack_taxo = array();
419
  $custom_array = array();
420
- $seo_custom_array= array();
421
  $imported_feature_img = array();
422
  $headr_count = $ret_array['h2'];
423
- //for ($i = 0; $i < count($data_rows); $i++) {
424
- for ($i = 0; $i <= $ret_array['basic_count']; $i++) {
425
- if(array_key_exists('coremapping' . $i,$ret_array)){
426
- if($ret_array['coretextbox' . $i] != '-- Select --' && $ret_array['coremapping'.$i] != ''){
427
- $mappedindex = str_replace('textbox','',$ret_array['coretextbox'.$i]);
428
- $new_post[$ret_array['coremapping'.$i]] = $data_rows[$mappedindex];
429
- $custom_array[$ret_array['coremapping'.$i]] = $data_rows[$mappedindex];
 
430
  }
431
- }
432
-
433
- else if (array_key_exists('mapping' . $i, $ret_array)) {
434
- if($ret_array ['mapping' . $i] != '-- Select --'){
435
- if ($ret_array ['mapping' . $i] != 'add_custom' . $i) {
436
- $strip_CF = strpos($ret_array['mapping' . $i], 'CF: ');
437
- $strip_SEO = strpos($ret_array['mapping'.$i],'SEO: ');
438
- if ($strip_CF === 0) {
439
- $custom_key = substr($ret_array['mapping' . $i], 4);
440
- $custom_array[$custom_key] = $data_rows[$i];
441
- }
442
- elseif($strip_SEO === 0){
443
- $seo_key = substr($ret_array['mapping'.$i], 5);
444
- $seo_custom_array[$seo_key] = $data_rows[$i];
445
  }
446
- else {
447
- $new_post[$ret_array['mapping' . $i]] = $data_rows[$i];
 
 
 
 
 
448
  }
 
449
  } else {
450
- $new_post [$ret_array ['textbox' . $i]] = $data_rows [$i];
451
- $custom_array [$ret_array ['textbox' . $i]] = $data_rows [$i];
 
 
 
 
 
452
  }
453
  }
454
  }
455
  }
456
- /* for($j = 0; $j< $ret_array['corecustomcount'];j++){
457
- if(array_key_exists('coremapping' . $i,$ret_array)){
458
- echo '<pre>';print_r($ret_array['coretextbox' . $i]);echo '</pre>';
459
- if($ret_array['coretextbox' . $i] != '-- Select --'){
460
- $mappedindex = str_replace('textbox','',$ret_array['coretextbox'.$i]);
461
- echo '<pre>';print_r($mappedindex);echo '</pre>';die;
462
- //$new_post[$ret_array['coretextbox'.$i]] = $data_rows[];
463
- //$custom_array[$ret_array['coremapping'.$i]] = $data_rows[$i];
464
- }
465
- }
466
- }*/
467
  for ($inc = 0; $inc < count($data_rows); $inc++) {
468
  foreach ($this->keys as $k => $v) {
469
  if (array_key_exists($v, $new_post)) {
@@ -471,7 +444,7 @@ class WPImporter_includes_helper {
471
  }
472
  }
473
  }
474
- if(is_array( $new_post )){
475
  foreach ($new_post as $ckey => $cval) {
476
  $this->postFlag = true;
477
  $taxo = get_taxonomies();
@@ -488,7 +461,7 @@ class WPImporter_includes_helper {
488
  $smack_taxo [$ckey] = null;
489
  $taxo_check = 1;
490
  }
491
- if ($ckey != 'post_category' && $ckey != 'post_tag' && $ckey != 'featured_image' && $ckey != $smack_taxo [$ckey] && $ckey != 'wp_page_template') {
492
  if ($taxo_check == 1) {
493
  unset($smack_taxo[$ckey]);
494
  $taxo_check = 0;
@@ -518,11 +491,11 @@ class WPImporter_includes_helper {
518
  require_once(ABSPATH . 'wp-admin/includes/image.php');
519
  $dir = wp_upload_dir();
520
  $get_media_settings = get_option('uploads_use_yearmonth_folders');
521
- if($get_media_settings == 1){
522
  $dirname = date('Y') . '/' . date('m');
523
  $full_path = $dir ['basedir'] . '/' . $dirname;
524
  $baseurl = $dir ['baseurl'] . '/' . $dirname;
525
- }else{
526
  $full_path = $dir ['basedir'];
527
  $baseurl = $dir ['baseurl'];
528
  }
@@ -532,49 +505,36 @@ class WPImporter_includes_helper {
532
 
533
  $fimg_name = @basename($f_img);
534
  $featured_image = $fimg_name;
535
- $fimg_name = strtolower(str_replace(' ','-',$fimg_name));
536
- $fimg_name = preg_replace('/[^a-zA-Z0-9._\s]/', '', $fimg_name);
537
  $fimg_name = urlencode($fimg_name);
538
 
539
  $parseURL = parse_url($f_img);
540
  $path_parts = pathinfo($f_img);
541
- if(!isset($path_parts['extension']))
542
  $fimg_name = $fimg_name . '.jpg';
 
543
  //else
544
  // $fimg_name = $fimg_name.'.'.$path_parts['extension'];
545
-
546
  $f_img_slug = '';
547
- $f_img_slug = strtolower(str_replace('','-',$f_img_slug));
548
- $f_img_slug = preg_replace('/[^a-zA-Z0-9._\s]/', '',$f_img_slug);
549
 
550
  $post_slug_value = strtolower($f_img_slug);
551
- if(array_key_exists('extension',$path_parts)){
552
- //$fimg_name = wp_unique_filename($fimg_path, $fimg_name, $path_parts['extension']);
553
  }
554
  $this->get_fimg_from_URL($f_img, $fimg_path, $fimg_name, $post_slug_value, $currentLimit, $this);
555
- $filepath = $fimg_path ."/" . $fimg_name;
556
 
557
- if(@getimagesize($filepath)){
558
  $img = wp_get_image_editor($filepath);
559
- /*if (!is_wp_error($img)) {
560
- $sizes_array = array(
561
- // #1 - resizes to 1024x768 pixel, square-cropped image
562
- array('width' => 1024, 'height' => 768, 'crop' => true),
563
- // #2 - resizes to 100px max width/height, non-cropped image
564
- array('width' => 100, 'height' => 100, 'crop' => false),
565
- // #3 - resizes to 100 pixel max height, non-cropped image
566
- array('width' => 300, 'height' => 100, 'crop' => false),
567
- // #3 - resizes to 624x468 pixel max width, non-cropped image
568
- array('width' => 624, 'height' => 468, 'crop' => false)
569
- );
570
- $resize = $img->multi_resize($sizes_array);
571
- }*/
572
- $file ['guid'] = $baseurl."/".$fimg_name;
573
  $file ['post_title'] = $fimg_name;
574
  $file ['post_content'] = '';
575
  $file ['post_status'] = 'attachment';
576
- }
577
- else {
578
  $file = false;
579
  }
580
  break;
@@ -583,91 +543,118 @@ class WPImporter_includes_helper {
583
  }
584
  }
585
 
586
- if($_SESSION['SMACK_MAPPING_SETTINGS_VALUES']['selectedImporter'] != 'custompost'){
587
  $data_array['post_type'] = $_SESSION['SMACK_MAPPING_SETTINGS_VALUES']['selectedImporter'];
588
- }else{
589
  $data_array['post_type'] = $_SESSION['SMACK_MAPPING_SETTINGS_VALUES']['custompostlist'];
590
  }
591
- if ($this->titleDupCheck == 'true')
592
  $this->postFlag = $this->duplicateChecks('title', $data_array ['post_title'], $data_array ['post_type'], $currentLimit, $data_array ['post_title']);
 
593
 
594
- if ($this->conDupCheck == 'true' && $this->postFlag)
595
  $this->postFlag = $this->duplicateChecks('content', $data_array ['post_content'], $data_array ['post_type'], $currentLimit, $data_array ['post_title']);
 
596
 
597
- if ($this->titleDupCheck == 'true' && $this->conDupCheck == 'true')
598
- $this->postFlag = $this->duplicateChecks('title && content', $data_array ['post_content'], $data_array ['post_type'], $currentLimit, $data_array ['post_title']);
599
-
600
 
601
 
602
  if ($this->postFlag) {
603
  unset ($sticky);
604
- if (empty($data_array['post_status']))
605
  $data_array['post_status'] = null;
 
606
 
607
- if ($_SESSION['SMACK_MAPPING_SETTINGS_VALUES']['importallwithps'] != 0)
608
  $data_array['post_status'] = $_SESSION['SMACK_MAPPING_SETTINGS_VALUES']['importallwithps'];
 
609
 
610
  switch ($data_array ['post_status']) {
611
  case 1 :
612
  $data_array['post_status'] = 'publish';
613
- $this->detailedLog[$currentLimit]['poststatus'] = "<b>". __('Status','wp-ultimate-csv-importer')." - </b>".__('publish','wp-ultimate-csv-importer');
614
  break;
615
  case 2 :
616
- $data_array['post_status'] = 'publish';
617
- $sticky = true;
618
- $this->detailedLog[$currentLimit]['poststatus'] = "<b>". __('Status','wp-ultimate-csv-importer')." - </b>".__('sticky','wp-ultimate-csv-importer');
 
 
 
 
 
619
  break;
620
  case 3 :
621
- $data_array['post_status'] = 'publish';
622
- $data_array ['post_password'] = $_POST ['postsPassword'];
623
- $this->detailedLog[$currentLimit]['poststatus'] = "<b>". __('Status','wp-ultimate-csv-importer')." - </b>".__('protected with password','wp-ultimate-csv-importer'). $data_array['post_password'];
624
- break;
625
- case 4 :
626
  $data_array ['post_status'] = 'private';
627
- $this->detailedLog[$currentLimit]['poststatus'] = "<b>". __('Status','wp-ultimate-csv-importer')." - </b>".__('private','wp-ultimate-csv-importer');
628
  break;
629
- case 5 :
630
  $data_array ['post_status'] = 'draft';
631
- $this->detailedLog[$currentLimit]['poststatus'] = "<b>". __('Status','wp-ultimate-csv-importer')." - </b>".__('draft','wp-ultimate-csv-importer');
632
  break;
633
- case 6 :
634
  $data_array ['post_status'] = 'pending';
635
- $this->detailedLog[$currentLimit]['poststatus'] = "<b>". __('Status','wp-ultimate-csv-importer')." - </b>".__('pending','wp-ultimate-csv-importer');
636
  break;
637
  default :
 
638
  $poststatus = $data_array['post_status'] = strtolower($data_array['post_status']);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
639
  if ($data_array['post_status'] != 'publish' && $data_array['post_status'] != 'private' && $data_array['post_status'] != 'draft' && $data_array['post_status'] != 'pending' && $data_array['post_status'] != 'sticky') {
640
  $stripPSF = strpos($data_array['post_status'], '{');
641
  if ($stripPSF === 0) {
642
- $poststatus = substr($data_array['post_status'], 1);
643
  $stripPSL = substr($poststatus, -1);
644
  if ($stripPSL == '}') {
645
- $postpwd = substr($poststatus, 0, -1);
646
  $data_array['post_status'] = 'publish';
647
  $data_array ['post_password'] = $postpwd;
648
- $this->detailedLog[$currentLimit]['poststatus'] = "<b>".__('Status','wp-ultimate-csv-importer')." - </b>".__('protected with password','wp-ultimate-csv-importer') . $data_array['post_password'];
649
  } else {
650
  $data_array['post_status'] = 'publish';
651
- $data_array ['post_password'] = $poststatus;
652
- $this->detailedLog[$currentLimit]['poststatus'] = "<b>". __('Status','wp-ultimate-csv-importer')." - </b>".__('protected with password','wp-ultimate-csv-importer') . $data_array['post_password'];
653
  }
654
  } else {
655
  $data_array['post_status'] = 'publish';
656
- $this->detailedLog[$currentLimit]['poststatus'] = "<b>". __('Status','wp-ultimate-csv-importer')." - </b>".__('publish','wp-ultimate-csv-importer');
657
  }
658
  }
659
  if ($data_array['post_status'] == 'sticky') {
660
- $data_array['post_status'] = 'publish';
661
- $sticky = true;
662
- $this->detailedLog[$currentLimit]['poststatus'] = "<b>".__('Status','wp-ultimate-csv-importer')." - </b>".__('sticky','wp-ultimate-csv-importer');
663
- }
664
- else {
665
- $this->detailedLog[$currentLimit]['poststatus'] = "<b>".__('Status','wp-ultimate-csv-importer')." - </b>" . $data_array['post_status'];
 
 
 
666
  }
 
 
 
667
  }
668
  // Post Format Options
669
 
670
- if(isset($data_array ['post_format'])) {
671
  $post_format = 0;
672
  switch ($data_array ['post_format']) {
673
  case 1 :
@@ -692,34 +679,34 @@ class WPImporter_includes_helper {
692
  $post_format = 'post-format-gallery';
693
  break;
694
  default :
695
- if($data_array['post_format']=='post-format-aside'){
696
- $post_format='post-format-aside';
697
- break;
698
- }
699
- if($data_array['post_format']=='post-format-image'){
700
- $post_format='post-format-image';
701
- break;
702
- }
703
- if($data_array['post_format']=='post-format-video'){
704
- $post_format='post-format-video';
705
- break;
706
- }
707
- if($data_array['post_format']=='post-format-audio'){
708
- $post_format='post-format-audio';
709
- break;
710
- }
711
- if($data_array['post_format']=='post-format-quote'){
712
- $post_format='post-format-quote';
713
- break;
714
- }
715
- if($data_array['post_format']=='post-format-link'){
716
- $post_format='post-format-link';
717
- break;
718
- }
719
- if($data_array['post_format']=='post-format-gallery'){
720
- $post_format='post-format-gallery';
721
- break;
722
- }
723
  $post_format = 0;
724
 
725
  }
@@ -727,7 +714,7 @@ class WPImporter_includes_helper {
727
 
728
 
729
  // Author name/id update
730
- if(isset($data_array ['post_author'])){
731
  $authorLen = strlen($data_array ['post_author']);
732
  $postuserid = $data_array ['post_author'];
733
  $checkpostuserid = intval($data_array ['post_author']);
@@ -736,7 +723,7 @@ class WPImporter_includes_helper {
736
 
737
  if ($authorLen == $postAuthorLen) {
738
  $postauthor = $wpdb->get_results("select ID,user_login from $wpdb->users where ID = \"{$postuserid}\"");
739
- if(empty($postauthor) || !$postauthor[0]->ID) { // If user name are numeric Ex: 1300001
740
  $postauthor = $wpdb->get_results("select ID,user_login from $wpdb->users where user_login = \"{$postuserid}\"");
741
  }
742
  } else {
@@ -746,54 +733,57 @@ class WPImporter_includes_helper {
746
  if (empty($postauthor) || !$postauthor[0]->ID) {
747
  $data_array ['post_author'] = 1;
748
  $admindet = $wpdb->get_results("select ID,user_login from $wpdb->users where ID = 1");
749
- $this->detailedLog[$currentLimit]['assigned_author'] = "<b>" .__('Author - not found (assigned to','wp-ultimate-csv-importer')." </b>" . $admindet[0]->user_login . ")";
750
  $this->noPostAuthCount++;
751
  } else {
752
  $data_array ['post_author'] = $postauthor [0]->ID;
753
- $this->detailedLog[$currentLimit]['assigned_author'] = "<b>".__('Author','wp-ultimate-csv-importer')." - </b>" . $postauthor[0]->user_login;
754
  }
755
- }
756
- else{
757
  $data_array ['post_author'] = 1;
758
  $admindet = $wpdb->get_results("select ID,user_login from $wpdb->users where ID = 1");
759
- $this->detailedLog[$currentLimit]['assigned_author'] = "<b>".__('Author - not found (assigned to','wp-ultimate-csv-importer')." </b>" . $admindet[0]->user_login . ")";
760
  $this->noPostAuthCount++;
761
  }
762
 
763
  // Date format post
764
- $data_array ['post_date'] = str_replace('/', '-', $data_array ['post_date']);
765
- if (!isset($data_array ['post_date'])){
766
- $data_array ['post_date'] = date('Y-m-d H:i:s');
767
- $this->detailedLog[$currentLimit]['postdate'] = "<b>".__('Date','wp-ultimate-csv-importer')." - </b>" . $data_array ['post_date'];
768
- }else{
 
 
 
 
769
  $data_array ['post_date'] = date('Y-m-d H:i:s', strtotime($data_array ['post_date']));
770
- $this->detailedLog[$currentLimit]['postdate'] = "<b>".__('Date','wp-ultimate-csv-importer')." - </b>" . $data_array ['post_date'];
771
  }
772
- if(isset($data_array ['post_slug'])){
773
  $data_array ['post_name'] = $data_array ['post_slug'];
774
  }
775
 
776
  //add global password
777
- if($data_array){
778
- if($ret_array['importallwithps'] == 3){
779
  $data_array['post_password'] = $ret_array['globalpassword_txt'];
780
- $this->detailedLog[$currentLimit]['poststatus'] = "<b>".__('Status','wp-ultimate-csv-importer')." - </b>".__('protected with password','wp-ultimate-csv-importer') . $ret_array['globalpassword_txt'];
781
  }
782
  }
783
  if ($data_array) {
784
- if($this->MultiImages == 'true') { // Inline image import feature by fredrick marks
785
  $inlineImagesObj = new WPImporter_inlineImages();
786
  $postid = wp_insert_post($data_array);
787
  $post_id = $inlineImagesObj->importwithInlineImages($postid, $currentLimit, $data_array, $this, $importinlineimageoption, $extractedimagelocation, $sample_inlineimage_url);
788
- // $inline_shortcode = $inlineImagesObj->capture_all_shortcodes($data_array['post_content']);
789
  } else {
790
  $post_id = wp_insert_post($data_array);
791
- $this->detailedLog[$currentLimit]['post_id'] = "<b>".__('Created Post_ID','wp-ultimate-csv-importer')." - </b>" . $post_id . " - success";
792
  }
793
  }
794
  unset($postauthor);
795
  if ($post_id) {
796
- $uploaded_file_name=$session_arr['uploadedFile'];
797
  $real_file_name = $session_arr['uploaded_csv_name'];
798
  // $version = $session_arr['currentfileversion'];
799
  $action = $data_array['post_type'];
@@ -803,27 +793,27 @@ class WPImporter_includes_helper {
803
  $version=$version_arr[0]; */
804
  $get_imported_feature_image = array();
805
  $get_imported_feature_image = get_option('IMPORTED_FEATURE_IMAGES');
806
- if(is_array($get_imported_feature_image)){
807
  $imported_feature_img = array_merge($get_imported_feature_image, $imported_feature_img);
808
- }
809
- else{
810
  $imported_feature_img = $imported_feature_img;
811
  }
812
  update_option('IMPORTED_FEATURE_IMAGES', $imported_feature_img);
813
  $created_records[$action][] = $post_id;
814
- if($action == 'post'){
815
  $imported_as = 'Post';
816
  }
817
- if($action == 'page'){
818
  $imported_as = 'Page';
819
  }
820
- if($action != 'post' && $action != 'page'){
821
  $imported_as = 'Custom Post';
822
  }
823
  $keyword = $action;
824
  $this->insPostCount++;
825
- if (isset($sticky) && $sticky)
826
  stick_post($post_id);
 
827
 
828
  if (!empty ($custom_array)) {
829
  foreach ($custom_array as $custom_key => $custom_value) {
@@ -833,13 +823,13 @@ class WPImporter_includes_helper {
833
 
834
 
835
  // Import post formats added by fredrick marks
836
- if(isset($post_format)) {
837
  wp_set_object_terms($post_id, $post_format, 'post_format');
838
 
839
- }
840
  //Import SEO Values
841
- if(!empty($seo_custom_array)){
842
- $this->importSEOfields($seo_custom_array,$post_id);
843
  }
844
 
845
  // Create custom taxonomy to post
@@ -859,7 +849,7 @@ class WPImporter_includes_helper {
859
  $this->detailedLog[$currentLimit]['tags'] .= $tag_value . "|";
860
  wp_set_post_tags($post_id, $tag_value);
861
  }
862
- $this->detailedLog[$currentLimit]['tags'] = "<b>".__('Tags','wp-ultimate-csv-importer')." - </b>" .substr($this->detailedLog[$currentLimit]['tags'], 0, -1);
863
  }
864
 
865
  // Create/Add category to post
@@ -874,26 +864,20 @@ class WPImporter_includes_helper {
874
  }
875
  $assigned_categories[$val] = $val;
876
  }
877
- foreach($assigned_categories as $cateKey => $cateVal) {
878
  $this->detailedLog[$currentLimit]['category'] .= $cateKey . "|";
879
  }
880
- $this->detailedLog[$currentLimit]['category'] = "<b>".__('Category','wp-ultimate-csv-importer')." - </b>" .substr($this->detailedLog[$currentLimit]['category'], 0, -1);
881
  wp_set_object_terms($post_id, $split_cate, 'category');
882
  }
883
  // Add featured image
884
  if (!empty ($file)) {
885
  //$wp_filetype = wp_check_filetype(@basename($file ['guid']), null);
886
  $wp_upload_dir = wp_upload_dir();
887
- $attachment = array(
888
- 'guid' => $file ['guid'],
889
- 'post_mime_type' => 'image/jpeg',
890
- 'post_title' => preg_replace('/[^a-zA-Z0-9._\s]/', '', @basename($file ['guid'])),
891
- 'post_content' => '',
892
- 'post_status' => 'inherit'
893
- );
894
- if($get_media_settings == 1){
895
- $generate_attachment = $dirname . '/' . $fimg_name;
896
- }else{
897
  $generate_attachment = $fimg_name;
898
  }
899
  $uploadedImage = $wp_upload_dir['path'] . '/' . $fimg_name;
@@ -901,28 +885,27 @@ class WPImporter_includes_helper {
901
  $attach_data = wp_generate_attachment_metadata($attach_id, $uploadedImage);
902
  wp_update_attachment_metadata($attach_id, $attach_data);*/
903
  $existing_attachment = array();
904
- $query = $wpdb->get_results("select post_title from $wpdb->posts where post_type = 'attachment' and post_mime_type = 'image/jpeg'");
905
- foreach($query as $key){
906
- $existing_attachment[] = $key->post_title;
907
- }
908
- if(!in_array($fimg_name ,$existing_attachment)){
909
- $attach_id = wp_insert_attachment($attachment, $generate_attachment, $post_id);
910
- $attach_data = wp_generate_attachment_metadata($attach_id, $uploadedImage);
911
- wp_update_attachment_metadata($attach_id, $attach_data);
912
- }else{
913
- $query2 = $wpdb->get_results("select ID from $wpdb->posts where post_title = '$fimg_name' and post_type = 'attachment'");
914
- foreach($query2 as $key2){
915
- $attach_id = $key2->ID;
916
- }
917
- }
918
  set_post_thumbnail($post_id, $attach_id);
919
  }
920
- }
921
- else{
922
  $skippedRecords[] = $_SESSION['SMACK_SKIPPED_RECORDS'];
923
  }
924
-
925
- $this->detailedLog[$currentLimit]['verify_here'] = "<b>Verify Here -</b> <a href='" . get_permalink( $post_id ) . "' title='" . esc_attr( sprintf( __( 'View &#8220;%s&#8221;' ), $data_array['post_title'] ) ) . "' rel='permalink' target='_blank'>" . __( 'Web View','wp-ultimate-csv-importer' ) . "</a> | <a href='" . get_edit_post_link( $post_id, true ) . "' title='" . esc_attr( __( 'Edit this item','wp-ultimate-csv-importer' ) ) . "' target='_blank'>" . __( 'Admin View','wp-ultimate-csv-importer' ) . "</a>";
926
  }
927
  unset($data_array);
928
  }
@@ -930,18 +913,18 @@ class WPImporter_includes_helper {
930
  // Create Data base for Statistic chart
931
  public static function activate() {
932
  if (!defined('PDO::ATTR_DRIVER_NAME')) {
933
- echo __("Make sure you have enable the PDO extensions in your environment before activate the plugin!",'wp-ultimate-csv-importer');
934
  die;
935
  }
936
  global $wpdb;
937
- $sql1="CREATE TABLE `smackcsv_pie_log` (
938
  `id` int(11) NOT NULL AUTO_INCREMENT,
939
  `type` varchar(255) DEFAULT NULL,
940
  `value` int(11) DEFAULT NULL,
941
  PRIMARY KEY (`id`)
942
  ) ENGINE=InnoDB;";
943
 
944
- $sql2="CREATE TABLE `smackcsv_line_log` (
945
  `id` int(11) NOT NULL AUTO_INCREMENT,
946
  `month` varchar(60) DEFAULT NULL,
947
  `year` varchar(60) DEFAULT NULL,
@@ -952,11 +935,11 @@ class WPImporter_includes_helper {
952
  PRIMARY KEY (`id`)
953
  ) ENGINE=InnoDB;";
954
  $wpdb->query($sql1);
955
- $wpdb->query($sql2);
956
- $importedTypes = array('Post','Page','Custom Post','Comments','Users','Eshop');
957
- foreach($importedTypes as $importedType){
958
  $querycheck = $wpdb->get_results("select *from smackcsv_pie_log where type = \"{$importedType}\"");
959
- if (count($querycheck) == 0){
960
  $sql4 = "insert into smackcsv_pie_log (type,value) values(\"$importedType\",0)";
961
  $wpdb->query($sql4);
962
  }
@@ -974,48 +957,72 @@ class WPImporter_includes_helper {
974
  $sql2 = "DROP TABLE smackcsv_line_log;";
975
  $wpdb->query($sql2);
976
 
977
- update_option('wpcsvfreesettings','');
978
  }
 
979
  public function addPieChartEntry($imported_as, $count) {
980
  //add total counts
981
  global $wpdb;
982
  $getTypeID = $wpdb->get_results("select * from smackcsv_pie_log where type = '$imported_as'");
983
- if(count($getTypeID) == 0)
984
- $wpdb->insert('smackcsv_pie_log',array('type'=>$imported_as,'value'=>$count));
985
- else
986
- $wpdb->update('smackcsv_pie_log', array('value' =>$getTypeID[0]->value+$count), array('id'=>$getTypeID[0]->id));
 
987
  }
988
- function addStatusLog($inserted,$imported_as){
 
989
  global $wpdb;
990
  $today = date('Y-m-d h:i:s');
991
- $mon = date("M",strtotime($today));
992
- $year = date("Y",strtotime($today));
993
- $wpdb->insert('smackcsv_line_log', array('month'=>$mon,'year'=>$year,'imported_type'=>$imported_as,'imported_on'=>date('Y-m-d h:i:s'), 'inserted'=>$inserted ));
994
  }
995
 
996
  /**
997
- * Function for importing the all in seo data
998
  * Feature added by Fredrick on version3.5.4
999
  */
1000
- function importSEOfields($array,$postId)
1001
- {
1002
  $seo_opt = get_option('wpcsvfreesettings');
1003
- if(in_array('aioseo',$seo_opt)){
1004
- if(isset($array['keywords'])) { $custom_array['_aioseop_keywords'] = $array['keywords']; }
1005
- if(isset($array['description'])) { $custom_array['_aioseop_description'] = $array['description']; }
1006
- if(isset($array['title'])) { $custom_array['_aioseop_title'] = $array['title']; }
1007
- if(isset($array['noindex'])) { $custom_array['_aioseop_noindex'] = $array['noindex']; }
1008
- if(isset($array['nofollow'])) { $custom_array['_aioseop_nofollow'] = $array['nofollow']; }
1009
- if(isset($array['titleatr'])) { $custom_array['_aioseop_titleatr'] = $array['titleatr']; }
1010
- if(isset($array['menulabel'])) { $custom_array['_aioseop_menulabel'] = $array['menulabel']; }
1011
- if(isset($array['disable'])) { $custom_array['_aioseop_disable'] = $array['disable']; }
1012
- if(isset($array['disable_analytics'])) { $custom_array['_aioseop_disable_analytics'] = $array['disable_analytics']; }
1013
- if(isset($array['noodp'])) { $custom_array['_aioseop_noodp'] = $array['noodp']; }
1014
- if(isset($array['noydir'])) { $custom_array['_aioseop_noydir'] = $array['noydir']; }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1015
  }
1016
- if (! empty ( $custom_array )) {
1017
- foreach ( $custom_array as $custom_key => $custom_value ) {
1018
- update_post_meta ( $postId, $custom_key, $custom_value );
1019
  }
1020
  }
1021
 
@@ -1026,10 +1033,10 @@ class WPImporter_includes_helper {
1026
  */
1027
  function deletefileafterprocesscomplete($uploadDir) {
1028
  //array_map('unlink', glob("$uploadDir/*"));
1029
- $files = array_diff(scandir($uploadDir), array('.','..'));
1030
- foreach ($files as $file) {
1031
- (is_dir("$uploadDir/$file")) ? rmdir("$uploadDir/$file") : unlink("$uploadDir/$file");
1032
- }
1033
  }
1034
 
1035
  // Function convert string to hash_key
@@ -1040,11 +1047,11 @@ class WPImporter_includes_helper {
1040
 
1041
  // Function to show common notice for PRO Feature
1042
  public function common_notice_for_pro_feature() {
1043
- return "<p align='center'> <label style='color:red;'> ".__('This feature is only available in Pro!','wp-ultimate-csv-importer')." </label> <a href='http://www.smackcoders.com/wp-ultimate-csv-importer-pro.html' target='_blank'>". __('Go Pro Now','wp-ultimate-csv-importer')."</a> </p>";
1044
  }
1045
 
1046
  // Function for common footer
1047
- public function common_footer_for_other_plugin_promotions(){
1048
  $content = '<div class="accordion-inner">
1049
  <label class="plugintags"><a href="http://blog.smackcoders.com/category/free-wordpress-plugins/?utm_source=WpPlugin&utm_medium=Free&utm_campaign=SupportTraffic" target="_blank">Social All in One Bot</a></label>
1050
  <label class="plugintags"><a href="http://blog.smackcoders.com/category/free-wordpress-plugins/google-seo-author-snippet-plugin/?utm_source=WpPlugin&utm_medium=Free&utm_campaign=SupportTraffic" target="_blank">Google SEO Author Snippet</a></label>
@@ -1071,21 +1078,21 @@ class WPImporter_includes_helper {
1071
 
1072
  //Facebook
1073
  $htmlShareButtons = '<span class="sociallink">';
1074
- $htmlShareButtons .= '<a id="wpcsv_facebook_share" href="http://www.facebook.com/sharer.php?u=' . $urlCurrentPage . '" target="_blank">';
1075
  $htmlShareButtons .= '<img title="Facebook" class="wpcsv" src="' . $fbimgsrc . '" alt="Facebook" />';
1076
  $htmlShareButtons .= '</a>';
1077
  $htmlShareButtons .= '</span>';
1078
 
1079
  //Google Plus
1080
  $htmlShareButtons .= '<span class="sociallink">';
1081
- $htmlShareButtons .= '<a id="wpcsv_google_share" href="https://plus.google.com/share?url=' . $urlCurrentPage . '" target="_blank" >';
1082
  $htmlShareButtons .= '<img title="Google+" class="wpcsv" src="' . $googleimgsrc . '" alt="Google+" />';
1083
  $htmlShareButtons .= '</a>';
1084
  $htmlShareButtons .= '</span>';
1085
 
1086
  //Linked in
1087
  $htmlShareButtons .= '<span class="sociallink">';
1088
- $htmlShareButtons .= '<a id="wpcsv_linkedin_share" class="wpcsv_share_link" href="http://www.linkedin.com/shareArticle?mini=true&url=' . urlencode($urlCurrentPage) . '&title='.urlencode($strPageTitle).'&source='.$linked_in_username.'" target="_blank" >';
1089
  $htmlShareButtons .= '<img title="LinkedIn" class="wpcsv" src="' . $linkedimgsrc . '" alt="LinkedIn" />';
1090
  $htmlShareButtons .= '</a>';
1091
  $htmlShareButtons .= '</span>';
@@ -1096,7 +1103,7 @@ class WPImporter_includes_helper {
1096
  $twitterShareText = urlencode(html_entity_decode($strPageTitle . ' ', ENT_COMPAT, 'UTF-8'));
1097
  // twitter share link
1098
  $htmlShareButtons .= '<span class="sociallink">';
1099
- $htmlShareButtons .= '<a id="wpcsv_twitter_share" href="http://twitter.com/share?url=' . $urlCurrentPage .'&via='.$username.'&related='.$username.'&text=' . $twitterShareText . '" target="_blank">';
1100
  $htmlShareButtons .= '<img title="Twitter" class="wpcsv" src="' . $twitimgsrc . '" alt="Twitter" />';
1101
  $htmlShareButtons .= '</a>';
1102
  $htmlShareButtons .= '</span>';
@@ -1104,26 +1111,27 @@ class WPImporter_includes_helper {
1104
  }
1105
 
1106
  public function common_footer() {
1107
- $get_pluginData = get_plugin_data(plugin_dir_path( __FILE__ ).'../index.php');
1108
  $footer = '';
1109
  $footer .= '<div style="padding:10px;">';
1110
- $footer .= '<label class="plugintags"><a href="http://www.wpultimatecsvimporter.com" target="_blank">'.__("Home",'wp-ultimate-csv-importer').'</a></label><label class="plugintags"><a href="http://wiki.smackcoders.com/WP_Ultimate_CSV_Importer?utm_source=WpPlugin&utm_medium=Free&utm_campaign=SupportTraffic" target="_blank">'. __("Wiki",'wp-ultimate-csv-importer').'</a></label>
1111
- <label class="plugintags"><a href="http://www.wpultimatecsvimporter.com" target="_blank">' .__('Tutorials','wp-ultimate-csv-importer').'</a></label> <label class="plugintags"><a href="http://wiki.smackcoders.com/WP_Ultimate_CSV_Importer_Videos?utm_source=WpPlugin&utm_medium=Free&utm_campaign=SupportTraffic" target="_blank">'. __("Videos",'wp-ultimate-csv-importer').'</a></label>
1112
- <label class="plugintags"><a href="http://blog.smackcoders.com/wordpress-ultimate-csv-importer-csv-sample-files-and-updates.html?utm_source=WpPlugin&utm_medium=Free&utm_campaign=SupportTraffic" target="_blank">'. __("Sample Files",'wp-ultimate-csv-importer').'</a></label>';
1113
  $footer .= '</div>';
1114
  $footer .= '<div style="padding:10px;margin-bottom:20px;">';
1115
- if(isset ($_REQUEST['__module']) && $_REQUEST['__module'] != 'settings')
1116
- $footer .= "<div style='float:right;margin-top:-49px;'><a class='label label-info' href='".get_admin_url()."admin.php?page=".WP_CONST_ULTIMATE_CSV_IMP_SLUG."/index.php&__module=settings'>". __('Click here to Enable any disabled module','wp-ultimate-csv-importer')."</a></div>";
1117
- if(isset ($_REQUEST['__module']) && $_REQUEST['__module'] == 'settings') {
1118
- $footer .= "<div style='float:right;margin-top:-48px;'><span style='margin-right:20px;'><a class='label label-info' href='http://wordpress.org/plugins/wp-ultimate-csv-importer/developers/'>".__('Get Old Versions','wp-ultimate-csv-importer')."</a></span><a class='label label-info' href='".get_admin_url()."admin.php?page=".WP_CONST_ULTIMATE_CSV_IMP_SLUG."/index.php&__module=support'>".__('Click here to Get some useful links')."</a></div>";
1119
- $footer .= "<div style='float:right;margin-right:15px;'> </span> ".__('Current Version','wp-ultimate-csv-importer').":".$get_pluginData['Version']." </div>";
1120
  }
1121
- if(isset ($_REQUEST['__module']) && $_REQUEST['__module'] != 'support' && $_REQUEST['__module'] != 'settings') {
1122
- $footer .= "<div style='float:right;margin-right:225px;margin-top:-48px;'><span style='margin-right:20px;'> <a class='label label-info' href='http://wordpress.org/plugins/wp-ultimate-csv-importer/developers/'>". __('Get Old Versions','wp-ultimate-csv-importer')."</a></span><a class='label label-info' href='".get_admin_url()."admin.php?page=".WP_CONST_ULTIMATE_CSV_IMP_SLUG."/index.php&__module=support'>". __('Click here to Get some useful links','wp-ultimate-csv-importer')."</a></div>";
1123
- $footer .= "<div style='float:right;margin-right:15px;'> ".'Current Version'.": ".$get_pluginData['Version']." </div>";
1124
  }
1125
- if(isset ($_REQUEST['__module']) && $_REQUEST['__module'] == 'support'){
1126
- $footer .= "<div style='float:right;margin-right:15px;'><span style='margin-right:20px;'>".__('Current Version','wp-ultimate-csv-importer').": ".$get_pluginData['Version']." </span><span style='margin-right:10px;'><a class='label label-info' href='http://wordpress.org/plugins/wp-ultimate-csv-importer/developers/'>". __('Get Old Versions','wp-ultimate-csv-importer')."</a></span></div>";
 
 
 
 
1127
  }
1128
  $footer .= '</div>';
1129
  $footer .= '<div style="float:right;margin-right:15px;margin-top:-10px;"> <label>Plugin By <a href="http://www.smackcoders.com"> Smackcoders</a></label> </div>';
@@ -1136,11 +1144,11 @@ class WPImporter_includes_helper {
1136
 
1137
  <div align="center" style="text-align:left;margin-top:-33px;">
1138
  <div id="boxmethod1" class="method1">
1139
- <label><span class="radio-icon"><input type="radio" name="importmethod" id="uploadfilefromcomputer" onclick="choose_import_method(this.id);" checked/></span> <span class="header-text" id="importopt">' . __('From Computer','wp-ultimate-csv-importer') . '</span> </label> <br>
1140
  <!-- The fileinput-button span is used to style the file input field as button -->
1141
  <div id="method1" style="display:block;height:40px;">
1142
  <span class="btn btn-success fileinput-button">
1143
- <span>' . __('Browse','wp-ultimate-csv-importer') . '</span>
1144
  <input id="fileupload" type="file" name="files[]" multiple>
1145
  <a href="#" id="zip_process" style = "display:none"> Click Here To Process Zip </a>
1146
  </span>';
@@ -1148,269 +1156,292 @@ class WPImporter_includes_helper {
1148
  $smack_csv_import_method .= '<span style="padding-top:10px;">
1149
  <div id="progress" class="progress">
1150
  <div class="progress-bar progress-bar-success"></div>
1151
- <div align="center" id="helpnotify" style="width:100%;"><p class="msgborder" style="color:green;">' . __('You can also drag and drop files here','wp-ultimate-csv-importer') . '</div>
1152
  </div>
1153
  </span>
1154
  </div>
1155
  </div>
1156
  <div style = "opacity: 0.3;background-color: ghostwhite;">
1157
  <div id="boxmethod2" class="method2">
1158
- <label><span class="radio-icon"><input type="radio" name="importmethod" id="dwnldftpfile" /></span> <span class="header-text" id="importopt">' . __('From FTP','wp-ultimate-csv-importer') . '</span> </label> <img src="' . WP_CONTENT_URL . '/plugins/' . WP_CONST_ULTIMATE_CSV_IMP_SLUG . '/images/pro_icon.gif" title="PRO Feature" /> <br>
1159
  </div>
1160
  <div id="boxmethod3" class="method3">
1161
- <label> <span class="radio-icon"><input type="radio" name="importmethod" id="dwnldextrfile" /></span> <span class="header-text" id="importopt">' . __('From URL','wp-ultimate-csv-importer') . '</span></label> <img src="' . WP_CONTENT_URL . '/plugins/' . WP_CONST_ULTIMATE_CSV_IMP_SLUG . '/images/pro_icon.gif" title="PRO Feature" /> <br>
1162
  </div>
1163
  <div id="boxmethod4" class="method4">
1164
- <label><span class="radio-icon"><input type="radio" name="importmethod" id="useuploadedfile" /></span> <span class="header-text" id="importopt">' . __('From Already Uploaded','wp-ultimate-csv-importer') . '</span></label> <img src="' . WP_CONTENT_URL . '/plugins/' . WP_CONST_ULTIMATE_CSV_IMP_SLUG . '/images/pro_icon.gif" title="PRO Feature" /> <br>
1165
  </div>
1166
  </div>
1167
 
1168
  </div>
1169
  </div>';
1170
- $curr_module = $_REQUEST['__module'];
1171
- if($curr_module == 'post' || $curr_module == 'page' || $curr_module == 'custompost' || $curr_module == 'eshop') {
1172
  $smack_csv_import_method .= '<div class="media_handling" align="left">
1173
- <span class="advancemediahandling"> <label id="importalign"> <input type="checkbox" name="advance_media_handling" id="advance_media_handling" onclick = "filezipopen();" /> '.__("Advance Media Handling",'wp-ultimate-csv-importer').' </label> </span>
1174
  <span id = "filezipup" style ="display:none;">
1175
  <span class="advancemediahandling" style="padding-left:30px;"> <input type="file" name="inlineimages" id="inlineimages" onchange ="checkextension(this.value);" /> </span>
1176
  </span>
1177
  </div>';
1178
- }
1179
 
1180
  return $smack_csv_import_method;
1181
  }
1182
- function helpnotes()
1183
- {
1184
  $smackhelpnotes = '<span style="position:absolute;margin-top:6px;margin-left:15px;">
1185
  <a href="" class="tooltip">
1186
- <img src="'. WP_CONST_ULTIMATE_CSV_IMP_DIR .'images/help.png" />
1187
  <span class="tooltipPostStatus">
1188
- <img class="callout" src="'. WP_CONST_ULTIMATE_CSV_IMP_DIR . 'images/callout.gif" />
1189
  Default value is 1. You can give any value based on your environment configuration.
1190
- <img src="'. WP_CONST_ULTIMATE_CSV_IMP_DIR .'images/help.png" style="margin-top: 6px;float:right;" />
1191
  </span>
1192
  </a>
1193
  </span>';
1194
  return $smackhelpnotes;
1195
  }
1196
- function create_nonce_key(){
 
1197
  return wp_create_nonce('smack_nonce');
1198
  }
1199
- function reduceStringLength($convert_str,$checktext){
1200
- if ($checktext == 'Enable' || $checktext == 'Disable' || $checktext == 'Mapping'){
1201
- if( strlen($convert_str) > 7)
1202
- $convert_str = substr($convert_str, 0, 5) . '..';
1203
- }
1204
- else if ($checktext == 'caticonEnable' || $checktext == 'caticonDisable') {
1205
- if( strlen($convert_str) > 7)
1206
- $convert_str = substr($convert_str,0,4) . '..';
1207
- }
1208
- else if ($checktext == 'Enabled' || $checktext == 'Disabled'){
1209
- if( strlen($convert_str) > 8)
1210
- $convert_str = substr($convert_str,0,3) . '..';
1211
- }
1212
- else if ($checktext == 'Check All' || $checktext == 'Uncheck All'){
1213
- if(strlen($convert_str) > 12)
1214
- $convert_str = substr($convert_str,0,10) . '..';
1215
- }
1216
- else if($checktext == 'Yes' || $checktext == 'No' ){
1217
- if( strlen($convert_str) > 4)
1218
- $convert_str = substr($convert_str,0,2) . '..';
1219
- }
1220
- else if ($checktext == 'Next' && strlen($convert_str) > 5)
1221
- $convert_str = substr($convert_str,0,4) . '..';
1222
- return $convert_str;
1223
- }
1224
- function customfieldui($count){
1225
- $result = "<div style='background-color: #E5E4E2; border: 1px solid #d6e9c6;padding: 10px; width:100%;'>
1226
- <div id = 'custfield_core'><b>New Custom Fields</b>
 
 
 
 
 
 
 
 
 
 
 
 
 
1227
  </div>
1228
  </div>";
1229
  $result .= "<table style='font-size: 12px;' class = 'table table-striped' id='CORECUST'><tr>
1230
  <td class='left_align columnheader'><b>CUSTOM FIELD</b></td>
1231
  <td class='columnheader'><b>CSV HEADER</b></td><td></td><td></td></tr></table>
1232
- <input type='button' class='btn btn-primary' name='addcustomfd' value='Add Custom Field' style='margin-left:20px;margin-bottom:15px;margin-top:20px;' onclick = 'addcorecustomfield(CORECUST,".$count.");'>";
1233
  return $result;
1234
 
1235
  }
1236
  }
1237
 
1238
- class CallWPImporterObj extends WPImporter_includes_helper
1239
- {
1240
  private static $_instance = null;
1241
- public static function getInstance()
1242
- {
1243
- if( !is_object(self::$_instance) ) //or if( is_null(self::$_instance) ) or if( self::$_instance == null )
 
1244
  self::$_instance = new WPImporter_includes_helper();
 
1245
  return self::$_instance;
1246
  }
1247
- public static function checkSecurity(){
1248
- $msg = 'You are not allowed to do this operation! Please contact your admin';
1249
- if(!function_exists('session_status')){
1250
- if(session_id() == '')
1251
- return $msg;
1252
- else
 
1253
  return 'true';
1254
- }
1255
- else if(session_status() != PHP_SESSION_ACTIVE)
1256
- return $msg;
1257
- else if(!defined('ABSPATH'))
1258
- return $msg;
1259
- else if (php_sapi_name() == "cli")
1260
- return $msg;
1261
- else
1262
- return 'true';
1263
- }
 
 
 
 
 
 
 
1264
  }
1265
 
1266
  class WPImpCSVParserLib {
1267
-
1268
- /*
1269
-
1270
- Class: parseCSV v0.4.3 beta
1271
- http://code.google.com/p/parsecsv-for-php/
1272
-
1273
-
1274
- Fully conforms to the specifications lined out on wikipedia:
1275
- - http://en.wikipedia.org/wiki/Comma-separated_values
1276
-
1277
- Based on the concept of Ming Hong Ng's CsvFileParser class:
1278
- - http://minghong.blogspot.com/2006/07/csv-parser-for-php.html
1279
-
1280
-
1281
-
1282
- Copyright (c) 2007 Jim Myhrberg (jim@zydev.info).
1283
-
1284
- Permission is hereby granted, free of charge, to any person obtaining a copy
1285
- of this software and associated documentation files (the "Software"), to deal
1286
- in the Software without restriction, including without limitation the rights
1287
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
1288
- copies of the Software, and to permit persons to whom the Software is
1289
- furnished to do so, subject to the following conditions:
1290
-
1291
- The above copyright notice and this permission notice shall be included in
1292
- all copies or substantial portions of the Software.
1293
-
1294
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1295
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1296
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
1297
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
1298
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
1299
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
1300
- THE SOFTWARE.
1301
-
1302
-
1303
-
1304
- Code Examples
1305
- ----------------
1306
- # general usage
1307
- $csv = new parseCSV('data.csv');
1308
- print_r($csv->data);
1309
- ----------------
1310
- # tab delimited, and encoding conversion
1311
- $csv = new parseCSV();
1312
- $csv->encoding('UTF-16', 'UTF-8');
1313
- $csv->delimiter = "\t";
1314
- $csv->parse('data.tsv');
1315
- print_r($csv->data);
1316
- ----------------
1317
- # auto-detect delimiter character
1318
- $csv = new parseCSV();
1319
- $csv->auto('data.csv');
1320
- print_r($csv->data);
1321
- ----------------
1322
- # modify data in a csv file
1323
- $csv = new parseCSV();
1324
- $csv->sort_by = 'id';
1325
- $csv->parse('data.csv');
1326
- # "4" is the value of the "id" column of the CSV row
1327
- $csv->data[4] = array('firstname' => 'John', 'lastname' => 'Doe', 'email' => 'john@doe.com');
1328
- $csv->save();
1329
- ----------------
1330
- # add row/entry to end of CSV file
1331
- # - only recommended when you know the extact sctructure of the file
1332
- $csv = new parseCSV();
1333
- $csv->save('data.csv', array(array('1986', 'Home', 'Nowhere', '')), true);
1334
- ----------------
1335
- # convert 2D array to csv data and send headers
1336
- # to browser to treat output as a file and download it
1337
- $csv = new parseCSV();
1338
- $csv->output (true, 'movies.csv', $array);
1339
- ----------------
1340
-
1341
-
1342
- */
1343
 
1344
 
1345
  /**
1346
  * Configuration
1347
  * - set these options with $object->var_name = 'value';
1348
  */
1349
-
1350
  # use first line/entry as field names
1351
  var $heading = true;
1352
-
1353
  # override field names
1354
  var $fields = array();
1355
-
1356
  # sort entries by this field
1357
  var $sort_by = null;
1358
  var $sort_reverse = false;
1359
-
1360
  # sort behavior passed to ksort/krsort functions
1361
  # regular = SORT_REGULAR
1362
  # numeric = SORT_NUMERIC
1363
  # string = SORT_STRING
1364
  var $sort_type = null;
1365
-
1366
  # delimiter (comma) and enclosure (double quote)
1367
  var $delimiter = ',';
1368
  var $enclosure = '"';
1369
-
1370
  # basic SQL-like conditions for row matching
1371
  var $conditions = null;
1372
-
1373
  # number of rows to ignore from beginning of data
1374
  var $offset = null;
1375
-
1376
  # limits the number of returned rows to specified amount
1377
  var $limit = null;
1378
-
1379
  # number of rows to analyze when attempting to auto-detect delimiter
1380
  var $auto_depth = 15;
1381
-
1382
  # characters to ignore when attempting to auto-detect delimiter
1383
  var $auto_non_chars = "a-zA-Z0-9\n\r";
1384
-
1385
  # preferred delimiter characters, only used when all filtering method
1386
  # returns multiple possible delimiters (happens very rarely)
1387
  var $auto_preferred = ",;\t.:|";
1388
-
1389
  # character encoding options
1390
  var $convert_encoding = false;
1391
  var $input_encoding = 'ISO-8859-1';
1392
  var $output_encoding = 'ISO-8859-1';
1393
-
1394
  # used by unparse(), save(), and output() functions
1395
  var $linefeed = "\r\n";
1396
-
1397
  # only used by output() function
1398
  var $output_delimiter = ',';
1399
  var $output_filename = 'data.csv';
1400
-
1401
  # keep raw file data in memory after successful parsing (useful for debugging)
1402
  var $keep_file_data = false;
1403
-
1404
  /**
1405
  * Internal variables
1406
  */
1407
-
1408
  # current file
1409
  var $file;
1410
-
1411
  # loaded file contents
1412
  var $file_data;
1413
-
1414
  # error while parsing input data
1415
  # 0 = No errors found. Everything should be fine :)
1416
  # 1 = Hopefully correctable syntax error was found.
@@ -1420,103 +1451,131 @@ class WPImpCSVParserLib {
1420
  # standard CSV formatting. Please validate
1421
  # the parsed data yourself.
1422
  var $error = 0;
1423
-
1424
  # detailed error info
1425
  var $error_info = array();
1426
-
1427
  # array of field values in data parsed
1428
  var $titles = array();
1429
-
1430
  # two dimentional array of CSV data
1431
  var $data = array();
1432
-
1433
-
1434
  /**
1435
  * Constructor
1436
  * @param input CSV file or string
1437
  * @return nothing
1438
  */
1439
- function parseCSV ($input = null, $offset = null, $limit = null, $conditions = null) {
1440
- if ( $offset !== null ) $this->offset = $offset;
1441
- if ( $limit !== null ) $this->limit = $limit;
1442
- if ( count($conditions) > 0 ) $this->conditions = $conditions;
1443
- if ( !empty($input) ) $this->parse($input);
 
 
 
 
 
 
 
 
1444
  }
1445
-
1446
-
1447
  // ==============================================
1448
  // ----- [ Main Functions ] ---------------------
1449
  // ==============================================
1450
-
1451
  /**
1452
  * Parse CSV file or string
1453
  * @param input CSV file or string
1454
  * @return nothing
1455
  */
1456
- function parse ($input = null, $offset = null, $limit = null, $conditions = null) {
1457
- if ( $input === null ) $input = $this->file;
1458
- if ( !empty($input) ) {
1459
- if ( $offset !== null ) $this->offset = $offset;
1460
- if ( $limit !== null ) $this->limit = $limit;
1461
- if ( count($conditions) > 0 ) $this->conditions = $conditions;
1462
- if ( is_readable($input) ) {
 
 
 
 
 
 
 
 
1463
  $this->data = $this->parse_file($input);
1464
  } else {
1465
  $this->file_data = &$input;
1466
  $this->data = $this->parse_string();
1467
  }
1468
- if ( $this->data === false ) return false;
 
 
1469
  }
1470
  return true;
1471
  }
1472
-
1473
  /**
1474
  * Save changes, or new file and/or data
1475
  * @param file file to save to
1476
- * @param data 2D array with data
1477
  * @param append append current data to end of target CSV if exists
1478
  * @param fields field names
1479
  * @return true or false
1480
  */
1481
- function save ($file = null, $data = array(), $append = false, $fields = array()) {
1482
- if ( empty($file) ) $file = &$this->file;
1483
- $mode = ( $append ) ? 'at' : 'wt' ;
1484
- $is_php = ( preg_match('/\.php$/i', $file) ) ? true : false ;
 
 
1485
  return $this->_wfile($file, $this->unparse($data, $fields, $append, $is_php), $mode);
1486
  }
1487
-
1488
  /**
1489
  * Generate CSV based string for output
1490
  * @param filename if specified, headers and data will be output directly to browser as a downloable file
1491
- * @param data 2D array with data
1492
  * @param fields field names
1493
  * @param delimiter delimiter used to separate data
1494
  * @return CSV data using delimiter of choice, or default
1495
  */
1496
- function output ($filename = null, $data = array(), $fields = array(), $delimiter = null) {
1497
- if ( empty($filename) ) $filename = $this->output_filename;
1498
- if ( $delimiter === null ) $delimiter = $this->output_delimiter;
 
 
 
 
1499
  $data = $this->unparse($data, $fields, null, null, $delimiter);
1500
- if ( $filename !== null ) {
1501
  header('Content-type: application/csv');
1502
- header('Content-Disposition: attachment; filename="'.$filename.'"');
1503
  echo $data;
1504
  }
1505
  return $data;
1506
  }
1507
-
1508
  /**
1509
  * Convert character encoding
1510
  * @param input input character encoding, uses default if left blank
1511
  * @param output output character encoding, uses default if left blank
1512
  * @return nothing
1513
  */
1514
- function encoding ($input = null, $output = null) {
1515
  $this->convert_encoding = true;
1516
- if ( $input !== null ) $this->input_encoding = $input;
1517
- if ( $output !== null ) $this->output_encoding = $output;
 
 
 
 
1518
  }
1519
-
1520
  /**
1521
  * Auto-Detect Delimiter: Find delimiter by analyzing a specific number of
1522
  * rows to determine most probable delimiter character
@@ -1527,55 +1586,65 @@ class WPImpCSVParserLib {
1527
  * @param enclosure enclosure character, default is double quote (").
1528
  * @return delimiter character
1529
  */
1530
- function auto ($file = null, $parse = true, $search_depth = null, $preferred = null, $enclosure = null) {
1531
-
1532
- if ( $file === null ) $file = $this->file;
1533
- if ( empty($search_depth) ) $search_depth = $this->auto_depth;
1534
- if ( $enclosure === null ) $enclosure = $this->enclosure;
1535
-
1536
- if ( $preferred === null ) $preferred = $this->auto_preferred;
1537
-
1538
- if ( empty($this->file_data) ) {
1539
- if ( $this->_check_data($file) ) {
 
 
 
 
 
 
 
 
1540
  $data = &$this->file_data;
1541
- } else return false;
 
 
1542
  } else {
1543
  $data = &$this->file_data;
1544
  }
1545
-
1546
  $chars = array();
1547
  $strlen = strlen($data);
1548
  $enclosed = false;
1549
  $n = 1;
1550
  $to_end = true;
1551
-
1552
  // walk specific depth finding posssible delimiter characters
1553
- for ( $i=0; $i < $strlen; $i++ ) {
1554
  $ch = $data{$i};
1555
- $nch = ( isset($data{$i+1}) ) ? $data{$i+1} : false ;
1556
- $pch = ( isset($data{$i-1}) ) ? $data{$i-1} : false ;
1557
-
1558
  // open and closing quotes
1559
- if ( $ch == $enclosure ) {
1560
- if ( !$enclosed || $nch != $enclosure ) {
1561
- $enclosed = ( $enclosed ) ? false : true ;
1562
- } elseif ( $enclosed ) {
1563
  $i++;
1564
  }
1565
-
1566
- // end of row
1567
- } elseif ( ($ch == "\n" && $pch != "\r" || $ch == "\r") && !$enclosed ) {
1568
- if ( $n >= $search_depth ) {
1569
  $strlen = 0;
1570
  $to_end = false;
1571
  } else {
1572
  $n++;
1573
  }
1574
-
1575
- // count character
1576
  } elseif (!$enclosed) {
1577
- if ( !preg_match('/['.preg_quote($this->auto_non_chars, '/').']/i', $ch) ) {
1578
- if ( !isset($chars[$ch][$n]) ) {
1579
  $chars[$ch][$n] = 1;
1580
  } else {
1581
  $chars[$ch][$n]++;
@@ -1583,119 +1652,113 @@ class WPImpCSVParserLib {
1583
  }
1584
  }
1585
  }
1586
-
1587
  // filtering
1588
- $depth = ( $to_end ) ? $n-1 : $n ;
1589
  $filtered = array();
1590
- foreach( $chars as $char => $value ) {
1591
- if ( $match = $this->_check_count($char, $value, $depth, $preferred) ) {
1592
  $filtered[$match] = $char;
1593
  }
1594
  }
1595
-
1596
  // capture most probable delimiter
1597
  ksort($filtered);
1598
  $this->delimiter = reset($filtered);
1599
-
1600
  // parse data
1601
- if ( $parse ) $this->data = $this->parse_string();
1602
-
 
 
1603
  return $this->delimiter;
1604
-
1605
  }
1606
-
1607
-
1608
  // ==============================================
1609
  // ----- [ Core Functions ] ---------------------
1610
  // ==============================================
1611
-
1612
  /**
1613
  * Read file to string and call parse_string()
1614
  * @param file local CSV file
1615
  * @return 2D array with CSV data, or false on failure
1616
  */
1617
- function parse_file ($file = null) {
1618
- if ( $file === null ) $file = $this->file;
1619
- if ( empty($this->file_data) ) $this->load_data($file);
1620
- return ( !empty($this->file_data) ) ? $this->parse_string() : false ;
 
 
 
 
1621
  }
1622
-
1623
  /**
1624
  * Parse CSV strings to arrays
1625
  * @param data CSV string
1626
  * @return 2D array with CSV data, or false on failure
1627
  */
1628
- function parse_string ($data = null) {
1629
- if ( empty($data) ) {
1630
- if ( $this->_check_data() ) {
1631
  $data = &$this->file_data;
1632
- } else return false;
 
 
1633
  }
1634
-
1635
  $white_spaces = str_replace($this->delimiter, '', " \t\x0B\0");
1636
-
1637
  $rows = array();
1638
  $row = array();
1639
  $row_count = 0;
1640
  $current = '';
1641
- $head = ( !empty($this->fields) ) ? $this->fields : array() ;
1642
  $col = 0;
1643
  $enclosed = false;
1644
  $was_enclosed = false;
1645
  $strlen = strlen($data);
1646
-
1647
  // walk through each character
1648
- for ( $i=0; $i < $strlen; $i++ ) {
1649
  $ch = $data{$i};
1650
- $nch = ( isset($data{$i+1}) ) ? $data{$i+1} : false ;
1651
- $pch = ( isset($data{$i-1}) ) ? $data{$i-1} : false ;
1652
-
1653
  // open/close quotes, and inline quotes
1654
- if ( $ch == $this->enclosure ) {
1655
- if ( !$enclosed ) {
1656
- if ( ltrim($current, $white_spaces) == '' ) {
1657
  $enclosed = true;
1658
  $was_enclosed = true;
1659
  } else {
1660
  $this->error = 2;
1661
  $error_row = count($rows) + 1;
1662
  $error_col = $col + 1;
1663
- if ( !isset($this->error_info[$error_row.'-'.$error_col]) ) {
1664
- $this->error_info[$error_row.'-'.$error_col] = array(
1665
- 'type' => 2,
1666
- 'info' => 'Syntax error found on row '.$error_row.'. Non-enclosed fields can not contain double-quotes.',
1667
- 'row' => $error_row,
1668
- 'field' => $error_col,
1669
- 'field_name' => (!empty($head[$col])) ? $head[$col] : null,
1670
- );
1671
  }
1672
  $current .= $ch;
1673
  }
1674
  } elseif ($nch == $this->enclosure) {
1675
  $current .= $ch;
1676
  $i++;
1677
- } elseif ( $nch != $this->delimiter && $nch != "\r" && $nch != "\n" ) {
1678
- for ( $x=($i+1); isset($data{$x}) && ltrim($data{$x}, $white_spaces) == ''; $x++ ) {}
1679
- if ( $data{$x} == $this->delimiter ) {
 
1680
  $enclosed = false;
1681
  $i = $x;
1682
  } else {
1683
- if ( $this->error < 1 ) {
1684
  $this->error = 1;
1685
  }
1686
  $error_row = count($rows) + 1;
1687
  $error_col = $col + 1;
1688
- if ( !isset($this->error_info[$error_row.'-'.$error_col]) ) {
1689
- $this->error_info[$error_row.'-'.$error_col] = array(
1690
- 'type' => 1,
1691
- 'info' =>
1692
- 'Syntax error found on row '.(count($rows) + 1).'. '.
1693
- 'A single double-quote was found within an enclosed string. '.
1694
- 'Enclosed double-quotes must be escaped with a second double-quote.',
1695
- 'row' => count($rows) + 1,
1696
- 'field' => $col + 1,
1697
- 'field_name' => (!empty($head[$col])) ? $head[$col] : null,
1698
- );
1699
  }
1700
  $current .= $ch;
1701
  $enclosed = false;
@@ -1703,67 +1766,74 @@ class WPImpCSVParserLib {
1703
  } else {
1704
  $enclosed = false;
1705
  }
1706
-
1707
- // end of field/row
1708
- } elseif ( ($ch == $this->delimiter || $ch == "\n" || $ch == "\r") && !$enclosed ) {
1709
- $key = ( !empty($head[$col]) ) ? $head[$col] : $col ;
1710
- $row[$key] = ( $was_enclosed ) ? $current : trim($current) ;
1711
  $current = '';
1712
  $was_enclosed = false;
1713
  $col++;
1714
-
1715
  // end of row
1716
- if ( $ch == "\n" || $ch == "\r" ) {
1717
- if ( $this->_validate_offset($row_count) && $this->_validate_row_conditions($row, $this->conditions) ) {
1718
- if ( $this->heading && empty($head) ) {
1719
  $head = $row;
1720
- } elseif ( empty($this->fields) || (!empty($this->fields) && (($this->heading && $row_count > 0) || !$this->heading)) ) {
1721
- if ( !empty($this->sort_by) && !empty($row[$this->sort_by]) ) {
1722
- if ( isset($rows[$row[$this->sort_by]]) ) {
1723
- $rows[$row[$this->sort_by].'_0'] = &$rows[$row[$this->sort_by]];
1724
  unset($rows[$row[$this->sort_by]]);
1725
- for ( $sn=1; isset($rows[$row[$this->sort_by].'_'.$sn]); $sn++ ) {}
1726
- $rows[$row[$this->sort_by].'_'.$sn] = $row;
1727
- } else $rows[$row[$this->sort_by]] = $row;
1728
- } else $rows[] = $row;
 
 
 
 
 
1729
  }
1730
  }
1731
  $row = array();
1732
  $col = 0;
1733
  $row_count++;
1734
- if ( $this->sort_by === null && $this->limit !== null && count($rows) == $this->limit ) {
1735
  $i = $strlen;
1736
  }
1737
- if ( $ch == "\r" && $nch == "\n" ) $i++;
 
 
1738
  }
1739
-
1740
- // append character to current field
1741
  } else {
1742
  $current .= $ch;
1743
  }
1744
  }
1745
  $this->titles = $head;
1746
- if ( !empty($this->sort_by) ) {
1747
  $sort_type = SORT_REGULAR;
1748
- if ( $this->sort_type == 'numeric' ) {
1749
  $sort_type = SORT_NUMERIC;
1750
- } elseif ( $this->sort_type == 'string' ) {
1751
  $sort_type = SORT_STRING;
1752
  }
1753
- ( $this->sort_reverse ) ? krsort($rows, $sort_type) : ksort($rows, $sort_type) ;
1754
- if ( $this->offset !== null || $this->limit !== null ) {
1755
- $rows = array_slice($rows, ($this->offset === null ? 0 : $this->offset) , $this->limit, true);
1756
  }
1757
  }
1758
- if ( !$this->keep_file_data ) {
1759
  $this->file_data = null;
1760
  }
1761
  return $rows;
1762
  }
1763
-
1764
  /**
1765
  * Create CSV data from array
1766
- * @param data 2D array with data
1767
  * @param fields field names
1768
  * @param append if true, field names will not be output
1769
  * @param is_php if a php die() call should be put on the first
@@ -1771,126 +1841,129 @@ class WPImpCSVParserLib {
1771
  * @param delimiter field delimiter to use
1772
  * @return CSV data (text string)
1773
  */
1774
- function unparse ( $data = array(), $fields = array(), $append = false , $is_php = false, $delimiter = null) {
1775
- if ( !is_array($data) || empty($data) ) $data = &$this->data;
1776
- if ( !is_array($fields) || empty($fields) ) $fields = &$this->titles;
1777
- if ( $delimiter === null ) $delimiter = $this->delimiter;
1778
-
1779
- $string = ( $is_php ) ? "<?php header('Status: 403'); die(' '); ?>".$this->linefeed : '' ;
 
 
 
 
 
 
1780
  $entry = array();
1781
-
1782
  // create heading
1783
- if ( $this->heading && !$append && !empty($fields) ) {
1784
- foreach( $fields as $key => $value ) {
1785
  $entry[] = $this->_enclose_value($value);
1786
  }
1787
- $string .= implode($delimiter, $entry).$this->linefeed;
1788
  $entry = array();
1789
  }
1790
-
1791
  // create data
1792
- foreach( $data as $key => $row ) {
1793
- foreach( $row as $field => $value ) {
1794
  $entry[] = $this->_enclose_value($value);
1795
  }
1796
- $string .= implode($delimiter, $entry).$this->linefeed;
1797
  $entry = array();
1798
  }
1799
-
1800
  return $string;
1801
  }
1802
-
1803
  /**
1804
  * Load local file or string
1805
  * @param input local CSV file
1806
  * @return true or false
1807
  */
1808
- function load_data ($input = null) {
1809
  $data = null;
1810
  $file = null;
1811
- if ( $input === null ) {
1812
  $file = $this->file;
1813
- } elseif ( file_exists($input) ) {
1814
  $file = $input;
1815
  } else {
1816
  $data = $input;
1817
  }
1818
- if ( !empty($data) || $data = $this->_rfile($file) ) {
1819
- if ( $this->file != $file ) $this->file = $file;
1820
- if ( preg_match('/\.php$/i', $file) && preg_match('/<\?.*?\?>(.*)/ims', $data, $strip) ) {
 
 
1821
  $data = ltrim($strip[1]);
1822
  }
1823
- if ( $this->convert_encoding ) $data = iconv($this->input_encoding, $this->output_encoding, $data);
1824
- if ( substr($data, -1) != "\n" ) $data .= "\n";
 
 
 
 
1825
  $this->file_data = &$data;
1826
  return true;
1827
  }
1828
  return false;
1829
  }
1830
-
1831
-
1832
  // ==============================================
1833
  // ----- [ Internal Functions ] -----------------
1834
  // ==============================================
1835
-
1836
  /**
1837
  * Validate a row against specified conditions
1838
  * @param row array with values from a row
1839
- * @param conditions specified conditions that the row must match
1840
  * @return true of false
1841
  */
1842
- function _validate_row_conditions ($row = array(), $conditions = null) {
1843
- if ( !empty($row) ) {
1844
- if ( !empty($conditions) ) {
1845
- $conditions = (strpos($conditions, ' OR ') !== false) ? explode(' OR ', $conditions) : array($conditions) ;
1846
  $or = '';
1847
- foreach( $conditions as $key => $value ) {
1848
- if ( strpos($value, ' AND ') !== false ) {
1849
  $value = explode(' AND ', $value);
1850
  $and = '';
1851
- foreach( $value as $k => $v ) {
1852
  $and .= $this->_validate_row_condition($row, $v);
1853
  }
1854
- $or .= (strpos($and, '0') !== false) ? '0' : '1' ;
1855
  } else {
1856
  $or .= $this->_validate_row_condition($row, $value);
1857
  }
1858
  }
1859
- return (strpos($or, '1') !== false) ? true : false ;
1860
  }
1861
  return true;
1862
  }
1863
  return false;
1864
  }
1865
-
1866
  /**
1867
  * Validate a row against a single condition
1868
  * @param row array with values from a row
1869
- * @param condition specified condition that the row must match
1870
  * @return true of false
1871
  */
1872
- function _validate_row_condition ($row, $condition) {
1873
- $operators = array(
1874
- '=', 'equals', 'is',
1875
- '!=', 'is not',
1876
- '<', 'is less than',
1877
- '>', 'is greater than',
1878
- '<=', 'is less than or equals',
1879
- '>=', 'is greater than or equals',
1880
- 'contains',
1881
- 'does not contain',
1882
- );
1883
  $operators_regex = array();
1884
- foreach( $operators as $value ) {
1885
  $operators_regex[] = preg_quote($value, '/');
1886
  }
1887
  $operators_regex = implode('|', $operators_regex);
1888
- if ( preg_match('/^(.+) ('.$operators_regex.') (.+)$/i', trim($condition), $capture) ) {
1889
  $field = $capture[1];
1890
  $op = $capture[2];
1891
  $value = $capture[3];
1892
- if ( preg_match('/^([\'\"]{1})(.*)([\'\"]{1})$/i', $value, $capture) ) {
1893
- if ( $capture[1] == $capture[3] ) {
1894
  $value = $capture[2];
1895
  $value = str_replace("\\n", "\n", $value);
1896
  $value = str_replace("\\r", "\r", $value);
@@ -1898,22 +1971,22 @@ class WPImpCSVParserLib {
1898
  $value = stripslashes($value);
1899
  }
1900
  }
1901
- if ( array_key_exists($field, $row) ) {
1902
- if ( ($op == '=' || $op == 'equals' || $op == 'is') && $row[$field] == $value ) {
1903
  return '1';
1904
- } elseif ( ($op == '!=' || $op == 'is not') && $row[$field] != $value ) {
1905
  return '1';
1906
- } elseif ( ($op == '<' || $op == 'is less than' ) && $row[$field] < $value ) {
1907
  return '1';
1908
- } elseif ( ($op == '>' || $op == 'is greater than') && $row[$field] > $value ) {
1909
  return '1';
1910
- } elseif ( ($op == '<=' || $op == 'is less than or equals' ) && $row[$field] <= $value ) {
1911
  return '1';
1912
- } elseif ( ($op == '>=' || $op == 'is greater than or equals') && $row[$field] >= $value ) {
1913
  return '1';
1914
- } elseif ( $op == 'contains' && preg_match('/'.preg_quote($value, '/').'/i', $row[$field]) ) {
1915
  return '1';
1916
- } elseif ( $op == 'does not contain' && !preg_match('/'.preg_quote($value, '/').'/i', $row[$field]) ) {
1917
  return '1';
1918
  } else {
1919
  return '0';
@@ -1922,88 +1995,96 @@ class WPImpCSVParserLib {
1922
  }
1923
  return '1';
1924
  }
1925
-
1926
  /**
1927
  * Validates if the row is within the offset or not if sorting is disabled
1928
  * @param current_row the current row number being processed
1929
  * @return true of false
1930
  */
1931
- function _validate_offset ($current_row) {
1932
- if ( $this->sort_by === null && $this->offset !== null && $current_row < $this->offset ) return false;
 
 
1933
  return true;
1934
  }
1935
-
1936
  /**
1937
  * Enclose values if needed
1938
  * - only used by unparse()
1939
  * @param value string to process
1940
  * @return Processed value
1941
  */
1942
- function _enclose_value ($value = null) {
1943
- if ( $value !== null && $value != '' ) {
1944
  $delimiter = preg_quote($this->delimiter, '/');
1945
  $enclosure = preg_quote($this->enclosure, '/');
1946
- if ( preg_match("/".$delimiter."|".$enclosure."|\n|\r/i", $value) || ($value{0} == ' ' || substr($value, -1) == ' ') ) {
1947
- $value = str_replace($this->enclosure, $this->enclosure.$this->enclosure, $value);
1948
- $value = $this->enclosure.$value.$this->enclosure;
1949
  }
1950
  }
1951
  return $value;
1952
  }
1953
-
1954
  /**
1955
  * Check file data
1956
  * @param file local filename
1957
  * @return true or false
1958
  */
1959
- function _check_data ($file = null) {
1960
- if ( empty($this->file_data) ) {
1961
- if ( $file === null ) $file = $this->file;
 
 
1962
  return $this->load_data($file);
1963
  }
1964
  return true;
1965
  }
1966
-
1967
-
1968
  /**
1969
  * Check if passed info might be delimiter
1970
  * - only used by find_delimiter()
1971
  * @return special string used for delimiter selection, or false
1972
  */
1973
- function _check_count ($char, $array, $depth, $preferred) {
1974
- if ( $depth == count($array) ) {
1975
  $first = null;
1976
  $equal = null;
1977
  $almost = false;
1978
- foreach( $array as $key => $value ) {
1979
- if ( $first == null ) {
1980
  $first = $value;
1981
- } elseif ( $value == $first && $equal !== false) {
1982
  $equal = true;
1983
- } elseif ( $value == $first+1 && $equal !== false ) {
1984
  $equal = true;
1985
  $almost = true;
1986
  } else {
1987
  $equal = false;
1988
  }
1989
  }
1990
- if ( $equal ) {
1991
- $match = ( $almost ) ? 2 : 1 ;
1992
  $pref = strpos($preferred, $char);
1993
- $pref = ( $pref !== false ) ? str_pad($pref, 3, '0', STR_PAD_LEFT) : '999' ;
1994
- return $pref.$match.'.'.(99999 - str_pad($first, 5, '0', STR_PAD_LEFT));
1995
- } else return false;
 
 
1996
  }
1997
  }
1998
-
1999
  /**
2000
  * Read local file
2001
  * @param file local filename
2002
  * @return Data from file, or false on failure
2003
  */
2004
- function _rfile ($file = null) {
2005
- if ( is_readable($file) ) {
2006
- if ( !($fh = fopen($file, 'r')) ) return false;
 
 
2007
  $data = fread($fh, filesize($file));
2008
  fclose($fh);
2009
  return $data;
@@ -2019,15 +2100,17 @@ class WPImpCSVParserLib {
2019
  * @param lock flock() mode
2020
  * @return true or false
2021
  */
2022
- function _wfile ($file, $string = '', $mode = 'wb', $lock = 2) {
2023
- if ( $fp = fopen($file, $mode) ) {
2024
  flock($fp, $lock);
2025
  $re = fwrite($fp, $string);
2026
  $re2 = fclose($fp);
2027
- if ( $re != false && $re2 != false ) return true;
 
 
2028
  }
2029
  return false;
2030
  }
2031
-
2032
  }
2033
 
32
  * WP Ultimate CSV Importer copyright notice. If the display of the logo is
33
  * not reasonably feasible for technical reasons, the Appropriate Legal
34
  * Notices must display the words
35
+ * "Copyright Smackcoders. 2015. All rights reserved".
36
  ********************************************************************************/
37
+
38
+ if (!defined('ABSPATH')) {
39
+ exit;
40
+ } // Exit if accessed directly
41
 
42
  class WPImporter_includes_helper {
43
 
44
+ public function __construct() {
 
45
  $this->getKeyVals();
46
  }
47
 
67
  public $noPostAuthCount = 0;
68
 
69
  // @var int updated post count
70
+ public $updatedPostCount = 0;
71
 
72
  // @var string delimiter
73
  public $delim = ",";
74
 
75
  // @var array delilimters supported by CSV importer
76
+ public $delim_avail = array(',', ';');
 
 
 
77
 
78
  // @var array wp field keys
79
  public $keys = array();
82
  public $MultiImages = false;
83
 
84
  // @var array for default columns
85
+ public $defCols = array('post_title' => null, 'post_content' => null, 'post_excerpt' => null, 'post_date' => null, 'post_name' => null, 'post_tag' => null, 'post_category' => null, 'post_author' => null, 'featured_image' => null, 'post_parent' => 0, 'post_status' => 0, 'menu_order' => 0, 'post_format' => 0, 'wp_page_template' => null,);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
86
 
87
  // @var array CSV headers
88
  public $headers = array();
89
 
90
+ public $capturedId = 0;
91
 
92
  public $detailedLog = array();
93
 
94
  /* getImportDataConfiguration */
95
+ public function getImportDataConfiguration() {
96
  $importDataConfig = "<div class='importstatus'id='importallwithps_div'>
97
  <table><tr><td>
98
+ <label id='importalign'>" . __('Import with post status', 'wp-ultimate-csv-importer') . "</label><span class='mandatory'> *</span></td><td>
99
  <div style='float:left;margin-right:10px;'>
100
  <select name='importallwithps' id='importallwithps' onChange='selectpoststatus();' >
101
  <option value='0'>Status as in CSV</option>
108
  </select></div>
109
  <div style='float:right;'>
110
  <a href='#' class='tooltip'>
111
+ <img src='" . WP_CONST_ULTIMATE_CSV_IMP_DIR . "images/help.png' />
112
  <span class='tooltipPostStatus'>
113
+ <img class='callout' src='" . WP_CONST_ULTIMATE_CSV_IMP_DIR . "images/callout.gif' />
114
+ " . __('Select the status for the post imported, if not defined within your csv .E.g.publish', 'wp-ultimate-csv-importer') . "
115
+ <img src='" . WP_CONST_ULTIMATE_CSV_IMP_DIR . "images/help.png' style='margin-top: 6px;float:right;' />
116
  </span></a> </div>
117
  </td></tr><tr><td>
118
+ <div id='globalpassword_label' class='globalpassword' style='display:none;'><label>" . __('Password', 'wp-ultimate-csv-importer') . "</label><span class='mandatory'> *</span></div></td><td>
119
+ <div id='globalpassword_text' class='globalpassword' style='display:none;'><input type = 'text' id='globalpassword_txt' name='globalpassword_txt' placeholder=" . __('Password for all post', 'wp-ultimate-csv-importer') . "></div></td></tr></table>
120
  </div>";
121
  return $importDataConfig;
122
  }
124
  /**
125
  * Get upload directory
126
  */
127
+ public function getUploadDirectory($check = 'plugin_uploads') {
 
128
  $upload_dir = wp_upload_dir();
129
+ if ($check == 'plugin_uploads') {
130
  return $upload_dir ['basedir'] . "/" . $this->uploadDir;
131
+ } else {
132
  return $upload_dir ['basedir'];
133
  }
134
  }
135
 
136
  /**
137
+ * generate help tooltip
138
+ * @param string $content ** content to show on tooltip **
139
+ * @return string $html ** generated HTML **
140
  **/
141
+ public function generatehelp($content, $mapping_style = NULL) {
142
+ $html = '<div style = "' . $mapping_style . '"> <a href="#" class="tooltip">
143
+ <img src="' . WP_CONST_ULTIMATE_CSV_IMP_DIR . 'images/help.png" />
 
144
  <span class="tooltipPostStatus">
145
+ <img class="callout" src="' . WP_CONST_ULTIMATE_CSV_IMP_DIR . 'images/callout.gif" />
146
+ ' . $content . '
147
+ <img src="' . WP_CONST_ULTIMATE_CSV_IMP_DIR . 'images/help.png" style="margin-top: 6px;float:right;" />
148
  </span> </a> </div>';
149
  return $html;
150
  }
151
 
152
+ public static function output_fd_page() {
 
153
  $get_pluginData = get_plugin_data(plugin_dir_path(__FILE__) . '../index.php');
154
  $plugin_version = get_option('ULTIMATE_CSV_IMPORTER_UPGRADE_FREE_VERSION');
155
+ if (!$plugin_version) {
156
  $plugin_version = get_option('ULTIMATE_CSV_IMP_FREE_VERSION');
157
  }
158
  if ($get_pluginData['Version'] == '3.6' && $plugin_version == '') {
159
  if (file_exists(WP_CONST_ULTIMATE_CSV_IMP_DIRECTORY . '/upgrade/migrationfreev3.6.php')) {
160
  require_once(WP_CONST_ULTIMATE_CSV_IMP_DIRECTORY . '/upgrade/migrationfreev3.6.php');
161
+ die();
162
  }
163
+ } else {
 
 
164
  if (!isset($_REQUEST['__module'])) {
165
+ if (!isset($_REQUEST['__module'])) {
166
+ wp_redirect(get_admin_url() . 'admin.php?page=' . WP_CONST_ULTIMATE_CSV_IMP_SLUG . '/index.php&__module=dashboard');
167
 
168
+ }
169
  }
170
  }
171
+ require_once(WP_CONST_ULTIMATE_CSV_IMP_DIRECTORY . 'config/settings.php');
172
+ require_once(WP_CONST_ULTIMATE_CSV_IMP_DIRECTORY . 'lib/skinnymvc/controller/SkinnyController.php');
173
 
174
  $c = new SkinnyControllerWPCsvFree;
175
  $c->main();
176
  }
177
 
178
+ public function getSettings() {
179
  return get_option('wpcsvfreesettings');
180
  }
181
 
182
+ public function renderMenu() {
 
183
  include(plugin_dir_path(__FILE__) . '../templates/menu.php');
184
  }
185
 
186
+ public function requestedAction($action, $step) {
187
+ $actions = array('dashboard', 'settings', 'help', 'users', 'comments', 'eshop', 'wpcommerce', 'woocommerce', 'categories', 'customtaxonomy', 'export', 'mappingtemplate');
188
+ if (!in_array($action, $actions)) {
189
  include(plugin_dir_path(__FILE__) . '../templates/view.php');
190
+ } else {
191
+ include(plugin_dir_path(__FILE__) . '../modules/' . $action . '/actions/actions.php');
192
+ include(plugin_dir_path(__FILE__) . '../modules/' . $action . '/templates/view.php');
193
  }
194
  }
195
 
196
  /**
197
  * Move CSV to the upload directory
198
  */
199
+ public function move_file() {
 
200
  if ($_FILES ["csv_import"] ["error"] == 0) {
201
  $tmp_name = $_FILES ["csv_import"] ["tmp_name"];
202
  $this->csvFileName = $_FILES ["csv_import"] ["name"];
207
  /**
208
  * Check upload dirctory permission
209
  */
210
+ function checkUploadDirPermission() {
 
211
  $this->getUploadDirectory();
212
  $upload_dir = wp_upload_dir();
213
  if (!is_dir($upload_dir ['basedir'])) {
230
  /**
231
  * Get field colum keys
232
  */
233
+ function getKeyVals() {
234
+ $cust_fields = '';
235
+ $acf_field = array();
 
236
  $wpcsvfreesettings = array();
237
  global $wpdb;
238
  $active_plugins = get_option('active_plugins');
247
  $this->defCols ["CF: " . $val] = $val;
248
  }
249
  $wpcsvfreesettings = get_option('wpcsvfreesettings');
250
+ if ($wpcsvfreesettings) {
251
+ if (in_array('aioseo', $wpcsvfreesettings)) {
252
+ if (in_array('all-in-one-seo-pack/all_in_one_seo_pack.php', $active_plugins)) {
253
+ $seo_custoFields = array('SEO: keywords', 'SEO: description', 'SEO: title', 'SEO: noindex', 'SEO: nofollow', 'SEO: titleatr', 'SEO: menulabel', 'SEO: disable', 'SEO: disable_analytics', 'SEO: noodp', 'SEO: noydir');
254
+ foreach ($seo_custoFields as $val) {
255
+ $this->defCols[$val] = $val;
256
+ }
257
  }
258
  }
259
+ }
260
  }
261
 
262
  /**
265
  * @param $delim delimiter for the CSV
266
  * @return array formatted CSV output as array
267
  */
268
+ function csv_file_data($file) {
269
+ $file = $this->getUploadDirectory() . '/' . $file;
270
+ require_once(WP_CONST_ULTIMATE_CSV_IMP_DIRECTORY . 'includes/Importer.php');
 
271
  $csv = new ImporterLib();
272
  $csv->delim($file);
273
+ foreach ($csv->data as $hkey => $hval) {
274
+ foreach ($hval as $hk => $hv) {
275
  $this->headers[] = $hk;
276
  }
277
  break;
278
  }
279
+ return $csv->data;
280
  }
281
 
282
+ function csv_file_readdata($file, $obj) {
283
+ $file = $obj->getUploadDirectory() . '/' . $file;
284
+ require_once(WP_CONST_ULTIMATE_CSV_IMP_DIRECTORY . 'includes/Importer.php');
285
+ $csv = new ImporterLib();
286
+ $csv->delim($file);
287
+ foreach ($csv->data as $hkey => $hval) {
288
+ foreach ($hval as $hk => $hv) {
289
+ $this->headers[] = $hk;
290
+ }
291
+ break;
292
+ }
293
+ return $csv->data;
294
+ }
 
295
 
296
  /**
297
  * Manage duplicates
299
  * @param string type = (title|content), string content
300
  * @return boolean
301
  */
302
+ function duplicateChecks($type = 'title', $text, $gettype, $currentLimit, $postTitle) {
 
303
  global $wpdb;
304
  if ($type == 'content') {
305
  $htmlDecode = html_entity_decode($text);
319
  }
320
  }
321
  return true;
322
+ } else {
323
+ if ($type == 'title') {
324
+ $post_exist = $wpdb->get_results("select ID from " . $wpdb->posts . " where post_title = \"{$text}\" and post_type = \"{$gettype}\" and post_status in('publish','future','draft','pending','private')");
325
+ if (!(count($post_exist) == 0 && ($text != null || $text != ''))) {
326
+ $this->dupPostCount++;
327
+ $this->detailedLog[$currentLimit]['verify_here'] = "Post-title Already Exists. It can't be imported.";
328
+ return false;
329
+ }
330
+ return true;
331
+ } else {
332
+ if ($type == 'title && content') {
333
+ $post_exist = $wpdb->get_results("select ID from " . $wpdb->posts . " where post_title = \"{$postTitle}\" and post_content = \"{$text}\" and post_status IN('publish','future','draft','pending','private')");
334
+ if (!(count($post_exist) == 0 && ($text != null || $text != ''))) {
335
+ $this->dupPostCount++;
336
+ $this->detailedLog[$currentLimit]['verify_here'] = "Post-title and post-content Already Exists. It can't be imported.";
337
+ return false;
338
+ }
339
+ return true;
340
+ }
341
+ }
342
+ }
343
+ }
344
 
345
 
346
  /**
352
  * @param $currentLimit
353
  * @param string $logObj
354
  */
355
+ public static function get_fimg_from_URL($f_img, $fimg_path, $fimg_name, $post_slug_value, $currentLimit = null, $logObj = "") {
356
+ $f_img = str_replace(" ", "%20", $f_img);
357
+ if ($fimg_path != "" && $fimg_path) {
358
  $fimg_path = $fimg_path . "/" . $fimg_name;
359
  }
360
+ $ch = curl_init($f_img);
361
  curl_setopt($ch, CURLOPT_HEADER, 0);
362
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
363
+ curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
364
  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
365
  $rawdata = curl_exec($ch);
366
+ if (strpos($rawdata, 'Not Found') != 0) {
367
  $rawdata = false;
368
  }
369
  if ($rawdata == false) {
370
  if ($logObj == '') {
371
+ $logObj->detailedLog[$currentLimit]['image'] = "<b>" . __('Image', 'wp-ultimate-csv-importer') . " -</b> " . __('host not resolved', 'wp-ultimate-csv-importer');
372
  } else {
373
+ $logObj->detailedLog[$currentLimit]['image'] = "<b>" . __('Image', 'wp-ultimate-csv-importer') . " -</b>" . __('host not resolved', 'wp-ultimate-csv-importer');
374
  }
375
  } else {
376
  if (file_exists($fimg_path)) {
379
  $fp = fopen($fimg_path, 'x');
380
  fwrite($fp, $rawdata);
381
  fclose($fp);
382
+ $logObj->detailedLog[$currentLimit]['image'] = "<b>" . __('Image', 'wp-ultimate-csv-importer') . " -</b>" . $fimg_name;
383
  }
384
  curl_close($ch);
385
  return $fimg_name;
390
  *
391
  * @return boolean
392
  */
393
+ function processDataInWP($data_rows, $ret_array, $session_arr, $currentLimit, $extractedimagelocation, $importinlineimageoption, $sample_inlineimage_url = null) {
394
  global $wpdb;
395
  $post_id = '';
396
  $new_post = array();
397
  $smack_taxo = array();
398
  $custom_array = array();
399
+ $seo_custom_array = array();
400
  $imported_feature_img = array();
401
  $headr_count = $ret_array['h2'];
402
+ for ($i = 0; $i <= $ret_array['basic_count']; $i++) {
403
+ if (array_key_exists('corefieldname' . $i, $ret_array)) {
404
+ if ($ret_array['coremapping' . $i] != '-- Select --' && $ret_array['coremapping' . $i] != '') {
405
+ $mappedindex = str_replace('CF: ', '', $ret_array['corefieldname' . $i]);
406
+ if (array_key_exists($ret_array['coremapping' . $i], $data_rows)) {
407
+ $new_post[$mappedindex] = $data_rows[$ret_array['coremapping' . $i]];
408
+ //$custom_array[$ret_array['coremapping'.$i]] = $data_rows[$mappedindex];
409
+ }
410
  }
411
+ } else {
412
+ if (array_key_exists('seofieldname' . $i, $ret_array)) {
413
+ if ($ret_array['seomapping' . $i] != '-- Select --' && $ret_array['seomapping' . $i] != '') {
414
+ $mappedindex = str_replace('SEO: ', '', $ret_array['seofieldname' . $i]);
415
+ if (array_key_exists($ret_array['seomapping' . $i], $data_rows)) {
416
+ //$new_post[$mappedindex] = $data_rows[$ret_array['seomapping'.$i]];
417
+ $seo_custom_array[$mappedindex] = $data_rows[$ret_array['seomapping' . $i]];
 
 
 
 
 
 
 
418
  }
419
+ }
420
+ } else {
421
+ if (array_key_exists('addcorefieldname' . $i, $ret_array)) {
422
+ if ($ret_array['addcoremapping' . $i] != '-- Select --' && $ret_array['addcoremapping' . $i] != '') {
423
+ if (array_key_exists($ret_array['addcoremapping' . $i], $data_rows)) {
424
+ $custom_array[$ret_array['addcorefieldname' . $i]] = $data_rows[$ret_array['addcoremapping' . $i]];
425
+ }
426
  }
427
+
428
  } else {
429
+ if (array_key_exists('mapping' . $i, $ret_array)) {
430
+ if ($ret_array ['mapping' . $i] != '-- Select --') {
431
+ if (array_key_exists($ret_array['mapping' . $i], $data_rows)) {
432
+ $new_post[$ret_array['fieldname' . $i]] = $data_rows[$ret_array['mapping' . $i]];
433
+ }
434
+ }
435
+ }
436
  }
437
  }
438
  }
439
  }
 
 
 
 
 
 
 
 
 
 
 
440
  for ($inc = 0; $inc < count($data_rows); $inc++) {
441
  foreach ($this->keys as $k => $v) {
442
  if (array_key_exists($v, $new_post)) {
444
  }
445
  }
446
  }
447
+ if (is_array($new_post)) {
448
  foreach ($new_post as $ckey => $cval) {
449
  $this->postFlag = true;
450
  $taxo = get_taxonomies();
461
  $smack_taxo [$ckey] = null;
462
  $taxo_check = 1;
463
  }
464
+ if ($ckey != 'post_category' && $ckey != 'post_tag' && $ckey != 'featured_image' && $ckey != $smack_taxo [$ckey] && $ckey != 'wp_page_template') {
465
  if ($taxo_check == 1) {
466
  unset($smack_taxo[$ckey]);
467
  $taxo_check = 0;
491
  require_once(ABSPATH . 'wp-admin/includes/image.php');
492
  $dir = wp_upload_dir();
493
  $get_media_settings = get_option('uploads_use_yearmonth_folders');
494
+ if ($get_media_settings == 1) {
495
  $dirname = date('Y') . '/' . date('m');
496
  $full_path = $dir ['basedir'] . '/' . $dirname;
497
  $baseurl = $dir ['baseurl'] . '/' . $dirname;
498
+ } else {
499
  $full_path = $dir ['basedir'];
500
  $baseurl = $dir ['baseurl'];
501
  }
505
 
506
  $fimg_name = @basename($f_img);
507
  $featured_image = $fimg_name;
508
+ $fimg_name = strtolower(str_replace(' ', '-', $fimg_name));
509
+ $fimg_name = preg_replace('/[^a-zA-Z0-9._\s]/', '', $fimg_name);
510
  $fimg_name = urlencode($fimg_name);
511
 
512
  $parseURL = parse_url($f_img);
513
  $path_parts = pathinfo($f_img);
514
+ if (!isset($path_parts['extension'])) {
515
  $fimg_name = $fimg_name . '.jpg';
516
+ }
517
  //else
518
  // $fimg_name = $fimg_name.'.'.$path_parts['extension'];
519
+
520
  $f_img_slug = '';
521
+ $f_img_slug = strtolower(str_replace('', '-', $f_img_slug));
522
+ $f_img_slug = preg_replace('/[^a-zA-Z0-9._\s]/', '', $f_img_slug);
523
 
524
  $post_slug_value = strtolower($f_img_slug);
525
+ if (array_key_exists('extension', $path_parts)) {
526
+ //$fimg_name = wp_unique_filename($fimg_path, $fimg_name, $path_parts['extension']);
527
  }
528
  $this->get_fimg_from_URL($f_img, $fimg_path, $fimg_name, $post_slug_value, $currentLimit, $this);
529
+ $filepath = $fimg_path . "/" . $fimg_name;
530
 
531
+ if (@getimagesize($filepath)) {
532
  $img = wp_get_image_editor($filepath);
533
+ $file ['guid'] = $baseurl . "/" . $fimg_name;
 
 
 
 
 
 
 
 
 
 
 
 
 
534
  $file ['post_title'] = $fimg_name;
535
  $file ['post_content'] = '';
536
  $file ['post_status'] = 'attachment';
537
+ } else {
 
538
  $file = false;
539
  }
540
  break;
543
  }
544
  }
545
 
546
+ if ($_SESSION['SMACK_MAPPING_SETTINGS_VALUES']['selectedImporter'] != 'custompost') {
547
  $data_array['post_type'] = $_SESSION['SMACK_MAPPING_SETTINGS_VALUES']['selectedImporter'];
548
+ } else {
549
  $data_array['post_type'] = $_SESSION['SMACK_MAPPING_SETTINGS_VALUES']['custompostlist'];
550
  }
551
+ if ($this->titleDupCheck == 'true') {
552
  $this->postFlag = $this->duplicateChecks('title', $data_array ['post_title'], $data_array ['post_type'], $currentLimit, $data_array ['post_title']);
553
+ }
554
 
555
+ if ($this->conDupCheck == 'true' && $this->postFlag) {
556
  $this->postFlag = $this->duplicateChecks('content', $data_array ['post_content'], $data_array ['post_type'], $currentLimit, $data_array ['post_title']);
557
+ }
558
 
559
+ if ($this->titleDupCheck == 'true' && $this->conDupCheck == 'true') {
560
+ $this->postFlag = $this->duplicateChecks('title && content', $data_array ['post_content'], $data_array ['post_type'], $currentLimit, $data_array ['post_title']);
561
+ }
562
 
563
 
564
  if ($this->postFlag) {
565
  unset ($sticky);
566
+ if (empty($data_array['post_status'])) {
567
  $data_array['post_status'] = null;
568
+ }
569
 
570
+ if ($_SESSION['SMACK_MAPPING_SETTINGS_VALUES']['importallwithps'] != 0) {
571
  $data_array['post_status'] = $_SESSION['SMACK_MAPPING_SETTINGS_VALUES']['importallwithps'];
572
+ }
573
 
574
  switch ($data_array ['post_status']) {
575
  case 1 :
576
  $data_array['post_status'] = 'publish';
577
+ $this->detailedLog[$currentLimit]['poststatus'] = "<b>" . __('Status', 'wp-ultimate-csv-importer') . " - </b>" . __('publish', 'wp-ultimate-csv-importer');
578
  break;
579
  case 2 :
580
+ if ($_SESSION['SMACK_MAPPING_SETTINGS_VALUES']['selectedImporter'] == 'post') {
581
+ $data_array['post_status'] = 'publish';
582
+ $sticky = true;
583
+ $this->detailedLog[$currentLimit]['poststatus'] = "<b>" . __('Status', 'wp-ultimate-csv-importer') . " - </b>" . __('sticky', 'wp-ultimate-csv-importer');
584
+ } else {
585
+ $data_array['post_status'] = 'publish';
586
+ $this->detailedLog[$currentLimit]['poststatus'] = "<b>" . __('Status', 'wp-ultimate-csv-importer') . " - </b>" . __('publish', 'wp-ultimate-csv-importer');
587
+ }
588
  break;
589
  case 3 :
 
 
 
 
 
590
  $data_array ['post_status'] = 'private';
591
+ $this->detailedLog[$currentLimit]['poststatus'] = "<b>" . __('Status', 'wp-ultimate-csv-importer') . " - </b>" . __('private', 'wp-ultimate-csv-importer');
592
  break;
593
+ case 4 :
594
  $data_array ['post_status'] = 'draft';
595
+ $this->detailedLog[$currentLimit]['poststatus'] = "<b>" . __('Status', 'wp-ultimate-csv-importer') . " - </b>" . __('draft', 'wp-ultimate-csv-importer');
596
  break;
597
+ case 5 :
598
  $data_array ['post_status'] = 'pending';
599
+ $this->detailedLog[$currentLimit]['poststatus'] = "<b>" . __('Status', 'wp-ultimate-csv-importer') . " - </b>" . __('pending', 'wp-ultimate-csv-importer');
600
  break;
601
  default :
602
+ $poststatus_pwd = $data_array['post_status'];
603
  $poststatus = $data_array['post_status'] = strtolower($data_array['post_status']);
604
+ if ($data_array['post_status'] == 'pending') {
605
+ $data_array['post_status'] = 'pending';
606
+ $this->detailedLog[$currentLimit]['poststatus'] = "<b>" . __('Status', 'wp-ultimate-csv-importer') . " - </b>" . __('pending', 'wp-ultimate-csv-importer');
607
+ }
608
+ if ($data_array['post_status'] == 'draft') {
609
+ $data_array['post_status'] = 'draft';
610
+ $this->detailedLog[$currentLimit]['poststatus'] = "<b>" . __('Status', 'wp-ultimate-csv-importer') . " - </b>" . __('draft', 'wp-ultimate-csv-importer');
611
+ }
612
+ if ($data_array['post_status'] == 'publish') {
613
+ $data_array['post_status'] = 'publish';
614
+ $this->detailedLog[$currentLimit]['poststatus'] = "<b>" . __('Status', 'wp-ultimate-csv-importer') . " - </b>" . __('publish', 'wp-ultimate-csv-importer');
615
+ }
616
+ if ($data_array['post_status'] == 'private') {
617
+ $data_array['post_status'] = 'private';
618
+ $this->detailedLog[$currentLimit]['poststatus'] = "<b>" . __('Status', 'wp-ultimate-csv-importer') . " - </b>" . __('private', 'wp-ultimate-csv-importer');
619
+ }
620
+
621
  if ($data_array['post_status'] != 'publish' && $data_array['post_status'] != 'private' && $data_array['post_status'] != 'draft' && $data_array['post_status'] != 'pending' && $data_array['post_status'] != 'sticky') {
622
  $stripPSF = strpos($data_array['post_status'], '{');
623
  if ($stripPSF === 0) {
624
+ $poststatus = substr($poststatus_pwd, 1);
625
  $stripPSL = substr($poststatus, -1);
626
  if ($stripPSL == '}') {
627
+ $postpwd = substr($poststatus, 1, -1);
628
  $data_array['post_status'] = 'publish';
629
  $data_array ['post_password'] = $postpwd;
630
+ $this->detailedLog[$currentLimit]['poststatus'] = "<b>" . __('Status', 'wp-ultimate-csv-importer') . " - </b>" . __('protected with password', 'wp-ultimate-csv-importer');
631
  } else {
632
  $data_array['post_status'] = 'publish';
633
+ $this->detailedLog[$currentLimit]['poststatus'] = "<b>" . __('Status', 'wp-ultimate-csv-importer') . " - </b>" . __('publish', 'wp-ultimate-csv-importer');
 
634
  }
635
  } else {
636
  $data_array['post_status'] = 'publish';
637
+ $this->detailedLog[$currentLimit]['poststatus'] = "<b>" . __('Status', 'wp-ultimate-csv-importer') . " - </b>" . __('publish', 'wp-ultimate-csv-importer');
638
  }
639
  }
640
  if ($data_array['post_status'] == 'sticky') {
641
+ if ($_SESSION['SMACK_MAPPING_SETTINGS_VALUES']['selectedImporter'] == 'post') {
642
+ $data_array['post_status'] = 'publish';
643
+ $sticky = true;
644
+ $this->detailedLog[$currentLimit]['poststatus'] = "<b>" . __('Status', 'wp-ultimate-csv-importer') . " - </b>" . __('sticky', 'wp-ultimate-csv-importer');
645
+ } else {
646
+ $data_array['post_status'] = 'publish';
647
+ $this->detailedLog[$currentLimit]['poststatus'] = "<b>" . __('Status', 'wp-ultimate-csv-importer') . " - </b>" . __('publish', 'wp-ultimate-csv-importer');
648
+ }
649
+
650
  }
651
+ /*else {
652
+ $this->detailedLog[$currentLimit]['poststatus'] = "<b>".__('Status','wp-ultimate-csv-importer')." - </b>" . $data_array['post_status'];
653
+ }*/
654
  }
655
  // Post Format Options
656
 
657
+ if (isset($data_array ['post_format'])) {
658
  $post_format = 0;
659
  switch ($data_array ['post_format']) {
660
  case 1 :
679
  $post_format = 'post-format-gallery';
680
  break;
681
  default :
682
+ if ($data_array['post_format'] == 'post-format-aside') {
683
+ $post_format = 'post-format-aside';
684
+ break;
685
+ }
686
+ if ($data_array['post_format'] == 'post-format-image') {
687
+ $post_format = 'post-format-image';
688
+ break;
689
+ }
690
+ if ($data_array['post_format'] == 'post-format-video') {
691
+ $post_format = 'post-format-video';
692
+ break;
693
+ }
694
+ if ($data_array['post_format'] == 'post-format-audio') {
695
+ $post_format = 'post-format-audio';
696
+ break;
697
+ }
698
+ if ($data_array['post_format'] == 'post-format-quote') {
699
+ $post_format = 'post-format-quote';
700
+ break;
701
+ }
702
+ if ($data_array['post_format'] == 'post-format-link') {
703
+ $post_format = 'post-format-link';
704
+ break;
705
+ }
706
+ if ($data_array['post_format'] == 'post-format-gallery') {
707
+ $post_format = 'post-format-gallery';
708
+ break;
709
+ }
710
  $post_format = 0;
711
 
712
  }
714
 
715
 
716
  // Author name/id update
717
+ if (isset($data_array ['post_author'])) {
718
  $authorLen = strlen($data_array ['post_author']);
719
  $postuserid = $data_array ['post_author'];
720
  $checkpostuserid = intval($data_array ['post_author']);
723
 
724
  if ($authorLen == $postAuthorLen) {
725
  $postauthor = $wpdb->get_results("select ID,user_login from $wpdb->users where ID = \"{$postuserid}\"");
726
+ if (empty($postauthor) || !$postauthor[0]->ID) { // If user name are numeric Ex: 1300001
727
  $postauthor = $wpdb->get_results("select ID,user_login from $wpdb->users where user_login = \"{$postuserid}\"");
728
  }
729
  } else {
733
  if (empty($postauthor) || !$postauthor[0]->ID) {
734
  $data_array ['post_author'] = 1;
735
  $admindet = $wpdb->get_results("select ID,user_login from $wpdb->users where ID = 1");
736
+ $this->detailedLog[$currentLimit]['assigned_author'] = "<b>" . __('Author - not found (assigned to', 'wp-ultimate-csv-importer') . " </b>" . $admindet[0]->user_login . ")";
737
  $this->noPostAuthCount++;
738
  } else {
739
  $data_array ['post_author'] = $postauthor [0]->ID;
740
+ $this->detailedLog[$currentLimit]['assigned_author'] = "<b>" . __('Author', 'wp-ultimate-csv-importer') . " - </b>" . $postauthor[0]->user_login;
741
  }
742
+ } else {
 
743
  $data_array ['post_author'] = 1;
744
  $admindet = $wpdb->get_results("select ID,user_login from $wpdb->users where ID = 1");
745
+ $this->detailedLog[$currentLimit]['assigned_author'] = "<b>" . __('Author - not found (assigned to', 'wp-ultimate-csv-importer') . " </b>" . $admindet[0]->user_login . ")";
746
  $this->noPostAuthCount++;
747
  }
748
 
749
  // Date format post
750
+ if (isset($data_array['post_date'])) {
751
+ $data_array ['post_date'] = str_replace('/', '-', $data_array ['post_date']);
752
+ } else {
753
+ $data_array['post_date'] = date('Y-m-d');
754
+ }
755
+ if ($data_array ['post_date'] == null) {
756
+ $data_array ['post_date'] = date('Y-m-d');
757
+ $this->detailedLog[$currentLimit]['postdate'] = "<b>" . __('Date', 'wp-ultimate-csv-importer') . " - </b>" . $data_array ['post_date'];
758
+ } else {
759
  $data_array ['post_date'] = date('Y-m-d H:i:s', strtotime($data_array ['post_date']));
760
+ $this->detailedLog[$currentLimit]['postdate'] = "<b>" . __('Date', 'wp-ultimate-csv-importer') . " - </b>" . $data_array ['post_date'];
761
  }
762
+ if (isset($data_array ['post_slug'])) {
763
  $data_array ['post_name'] = $data_array ['post_slug'];
764
  }
765
 
766
  //add global password
767
+ if ($data_array) {
768
+ if ($ret_array['importallwithps'] == 3) {
769
  $data_array['post_password'] = $ret_array['globalpassword_txt'];
770
+ $this->detailedLog[$currentLimit]['poststatus'] = "<b>" . __('Status', 'wp-ultimate-csv-importer') . " - </b>" . __('protected with password', 'wp-ultimate-csv-importer') . $ret_array['globalpassword_txt'];
771
  }
772
  }
773
  if ($data_array) {
774
+ if ($this->MultiImages == 'true') { // Inline image import feature by fredrick marks
775
  $inlineImagesObj = new WPImporter_inlineImages();
776
  $postid = wp_insert_post($data_array);
777
  $post_id = $inlineImagesObj->importwithInlineImages($postid, $currentLimit, $data_array, $this, $importinlineimageoption, $extractedimagelocation, $sample_inlineimage_url);
778
+ // $inline_shortcode = $inlineImagesObj->capture_all_shortcodes($data_array['post_content']);
779
  } else {
780
  $post_id = wp_insert_post($data_array);
781
+ $this->detailedLog[$currentLimit]['post_id'] = "<b>" . __('Created Post_ID', 'wp-ultimate-csv-importer') . " - </b>" . $post_id . " - success";
782
  }
783
  }
784
  unset($postauthor);
785
  if ($post_id) {
786
+ $uploaded_file_name = $session_arr['uploadedFile'];
787
  $real_file_name = $session_arr['uploaded_csv_name'];
788
  // $version = $session_arr['currentfileversion'];
789
  $action = $data_array['post_type'];
793
  $version=$version_arr[0]; */
794
  $get_imported_feature_image = array();
795
  $get_imported_feature_image = get_option('IMPORTED_FEATURE_IMAGES');
796
+ if (is_array($get_imported_feature_image)) {
797
  $imported_feature_img = array_merge($get_imported_feature_image, $imported_feature_img);
798
+ } else {
 
799
  $imported_feature_img = $imported_feature_img;
800
  }
801
  update_option('IMPORTED_FEATURE_IMAGES', $imported_feature_img);
802
  $created_records[$action][] = $post_id;
803
+ if ($action == 'post') {
804
  $imported_as = 'Post';
805
  }
806
+ if ($action == 'page') {
807
  $imported_as = 'Page';
808
  }
809
+ if ($action != 'post' && $action != 'page') {
810
  $imported_as = 'Custom Post';
811
  }
812
  $keyword = $action;
813
  $this->insPostCount++;
814
+ if (isset($sticky) && $sticky) {
815
  stick_post($post_id);
816
+ }
817
 
818
  if (!empty ($custom_array)) {
819
  foreach ($custom_array as $custom_key => $custom_value) {
823
 
824
 
825
  // Import post formats added by fredrick marks
826
+ if (isset($post_format)) {
827
  wp_set_object_terms($post_id, $post_format, 'post_format');
828
 
829
+ }
830
  //Import SEO Values
831
+ if (!empty($seo_custom_array)) {
832
+ $this->importSEOfields($seo_custom_array, $post_id);
833
  }
834
 
835
  // Create custom taxonomy to post
849
  $this->detailedLog[$currentLimit]['tags'] .= $tag_value . "|";
850
  wp_set_post_tags($post_id, $tag_value);
851
  }
852
+ $this->detailedLog[$currentLimit]['tags'] = "<b>" . __('Tags', 'wp-ultimate-csv-importer') . " - </b>" . substr($this->detailedLog[$currentLimit]['tags'], 0, -1);
853
  }
854
 
855
  // Create/Add category to post
864
  }
865
  $assigned_categories[$val] = $val;
866
  }
867
+ foreach ($assigned_categories as $cateKey => $cateVal) {
868
  $this->detailedLog[$currentLimit]['category'] .= $cateKey . "|";
869
  }
870
+ $this->detailedLog[$currentLimit]['category'] = "<b>" . __('Category', 'wp-ultimate-csv-importer') . " - </b>" . substr($this->detailedLog[$currentLimit]['category'], 0, -1);
871
  wp_set_object_terms($post_id, $split_cate, 'category');
872
  }
873
  // Add featured image
874
  if (!empty ($file)) {
875
  //$wp_filetype = wp_check_filetype(@basename($file ['guid']), null);
876
  $wp_upload_dir = wp_upload_dir();
877
+ $attachment = array('guid' => $file ['guid'], 'post_mime_type' => 'image/jpeg', 'post_title' => preg_replace('/[^a-zA-Z0-9._\s]/', '', @basename($file ['guid'])), 'post_content' => '', 'post_status' => 'inherit');
878
+ if ($get_media_settings == 1) {
879
+ $generate_attachment = $dirname . '/' . $fimg_name;
880
+ } else {
 
 
 
 
 
 
881
  $generate_attachment = $fimg_name;
882
  }
883
  $uploadedImage = $wp_upload_dir['path'] . '/' . $fimg_name;
885
  $attach_data = wp_generate_attachment_metadata($attach_id, $uploadedImage);
886
  wp_update_attachment_metadata($attach_id, $attach_data);*/
887
  $existing_attachment = array();
888
+ $query = $wpdb->get_results("select post_title from $wpdb->posts where post_type = 'attachment' and post_mime_type = 'image/jpeg'");
889
+ foreach ($query as $key) {
890
+ $existing_attachment[] = $key->post_title;
891
+ }
892
+ if (!in_array($fimg_name, $existing_attachment)) {
893
+ $attach_id = wp_insert_attachment($attachment, $generate_attachment, $post_id);
894
+ $attach_data = wp_generate_attachment_metadata($attach_id, $uploadedImage);
895
+ wp_update_attachment_metadata($attach_id, $attach_data);
896
+ } else {
897
+ $query2 = $wpdb->get_results("select ID from $wpdb->posts where post_title = '$fimg_name' and post_type = 'attachment'");
898
+ foreach ($query2 as $key2) {
899
+ $attach_id = $key2->ID;
900
+ }
901
+ }
902
  set_post_thumbnail($post_id, $attach_id);
903
  }
904
+ } else {
 
905
  $skippedRecords[] = $_SESSION['SMACK_SKIPPED_RECORDS'];
906
  }
907
+
908
+ $this->detailedLog[$currentLimit]['verify_here'] = "<b>Verify Here -</b> <a href='" . get_permalink($post_id) . "' title='" . esc_attr(sprintf(__('View &#8220;%s&#8221;'), $data_array['post_title'])) . "' rel='permalink' target='_blank'>" . __('Web View', 'wp-ultimate-csv-importer') . "</a> | <a href='" . get_edit_post_link($post_id, true) . "' title='" . esc_attr(__('Edit this item', 'wp-ultimate-csv-importer')) . "' target='_blank'>" . __('Admin View', 'wp-ultimate-csv-importer') . "</a>";
909
  }
910
  unset($data_array);
911
  }
913
  // Create Data base for Statistic chart
914
  public static function activate() {
915
  if (!defined('PDO::ATTR_DRIVER_NAME')) {
916
+ echo __("Make sure you have enable the PDO extensions in your environment before activate the plugin!", 'wp-ultimate-csv-importer');
917
  die;
918
  }
919
  global $wpdb;
920
+ $sql1 = "CREATE TABLE `smackcsv_pie_log` (
921
  `id` int(11) NOT NULL AUTO_INCREMENT,
922
  `type` varchar(255) DEFAULT NULL,
923
  `value` int(11) DEFAULT NULL,
924
  PRIMARY KEY (`id`)
925
  ) ENGINE=InnoDB;";
926
 
927
+ $sql2 = "CREATE TABLE `smackcsv_line_log` (
928
  `id` int(11) NOT NULL AUTO_INCREMENT,
929
  `month` varchar(60) DEFAULT NULL,
930
  `year` varchar(60) DEFAULT NULL,
935
  PRIMARY KEY (`id`)
936
  ) ENGINE=InnoDB;";
937
  $wpdb->query($sql1);
938
+ $wpdb->query($sql2);
939
+ $importedTypes = array('Post', 'Page', 'Custom Post', 'Comments', 'Users', 'Eshop');
940
+ foreach ($importedTypes as $importedType) {
941
  $querycheck = $wpdb->get_results("select *from smackcsv_pie_log where type = \"{$importedType}\"");
942
+ if (count($querycheck) == 0) {
943
  $sql4 = "insert into smackcsv_pie_log (type,value) values(\"$importedType\",0)";
944
  $wpdb->query($sql4);
945
  }
957
  $sql2 = "DROP TABLE smackcsv_line_log;";
958
  $wpdb->query($sql2);
959
 
960
+ update_option('wpcsvfreesettings', '');
961
  }
962
+
963
  public function addPieChartEntry($imported_as, $count) {
964
  //add total counts
965
  global $wpdb;
966
  $getTypeID = $wpdb->get_results("select * from smackcsv_pie_log where type = '$imported_as'");
967
+ if (count($getTypeID) == 0) {
968
+ $wpdb->insert('smackcsv_pie_log', array('type' => $imported_as, 'value' => $count));
969
+ } else {
970
+ $wpdb->update('smackcsv_pie_log', array('value' => $getTypeID[0]->value + $count), array('id' => $getTypeID[0]->id));
971
+ }
972
  }
973
+
974
+ function addStatusLog($inserted, $imported_as) {
975
  global $wpdb;
976
  $today = date('Y-m-d h:i:s');
977
+ $mon = date("M", strtotime($today));
978
+ $year = date("Y", strtotime($today));
979
+ $wpdb->insert('smackcsv_line_log', array('month' => $mon, 'year' => $year, 'imported_type' => $imported_as, 'imported_on' => date('Y-m-d h:i:s'), 'inserted' => $inserted));
980
  }
981
 
982
  /**
983
+ * Function for importing the all in seo data
984
  * Feature added by Fredrick on version3.5.4
985
  */
986
+ function importSEOfields($array, $postId) {
 
987
  $seo_opt = get_option('wpcsvfreesettings');
988
+ if (in_array('aioseo', $seo_opt)) {
989
+ if (isset($array['keywords'])) {
990
+ $custom_array['_aioseop_keywords'] = $array['keywords'];
991
+ }
992
+ if (isset($array['description'])) {
993
+ $custom_array['_aioseop_description'] = $array['description'];
994
+ }
995
+ if (isset($array['title'])) {
996
+ $custom_array['_aioseop_title'] = $array['title'];
997
+ }
998
+ if (isset($array['noindex'])) {
999
+ $custom_array['_aioseop_noindex'] = $array['noindex'];
1000
+ }
1001
+ if (isset($array['nofollow'])) {
1002
+ $custom_array['_aioseop_nofollow'] = $array['nofollow'];
1003
+ }
1004
+ if (isset($array['titleatr'])) {
1005
+ $custom_array['_aioseop_titleatr'] = $array['titleatr'];
1006
+ }
1007
+ if (isset($array['menulabel'])) {
1008
+ $custom_array['_aioseop_menulabel'] = $array['menulabel'];
1009
+ }
1010
+ if (isset($array['disable'])) {
1011
+ $custom_array['_aioseop_disable'] = $array['disable'];
1012
+ }
1013
+ if (isset($array['disable_analytics'])) {
1014
+ $custom_array['_aioseop_disable_analytics'] = $array['disable_analytics'];
1015
+ }
1016
+ if (isset($array['noodp'])) {
1017
+ $custom_array['_aioseop_noodp'] = $array['noodp'];
1018
+ }
1019
+ if (isset($array['noydir'])) {
1020
+ $custom_array['_aioseop_noydir'] = $array['noydir'];
1021
+ }
1022
  }
1023
+ if (!empty ($custom_array)) {
1024
+ foreach ($custom_array as $custom_key => $custom_value) {
1025
+ update_post_meta($postId, $custom_key, $custom_value);
1026
  }
1027
  }
1028
 
1033
  */
1034
  function deletefileafterprocesscomplete($uploadDir) {
1035
  //array_map('unlink', glob("$uploadDir/*"));
1036
+ $files = array_diff(scandir($uploadDir), array('.', '..'));
1037
+ foreach ($files as $file) {
1038
+ (is_dir("$uploadDir/$file")) ? rmdir("$uploadDir/$file") : unlink("$uploadDir/$file");
1039
+ }
1040
  }
1041
 
1042
  // Function convert string to hash_key
1047
 
1048
  // Function to show common notice for PRO Feature
1049
  public function common_notice_for_pro_feature() {
1050
+ return "<p align='center'> <label style='color:red;'> " . __('This feature is only available in Pro!', 'wp-ultimate-csv-importer') . " </label> <a href='http://www.smackcoders.com/wp-ultimate-csv-importer-pro.html' target='_blank'>" . __('Go Pro Now', 'wp-ultimate-csv-importer') . "</a> </p>";
1051
  }
1052
 
1053
  // Function for common footer
1054
+ public function common_footer_for_other_plugin_promotions() {
1055
  $content = '<div class="accordion-inner">
1056
  <label class="plugintags"><a href="http://blog.smackcoders.com/category/free-wordpress-plugins/?utm_source=WpPlugin&utm_medium=Free&utm_campaign=SupportTraffic" target="_blank">Social All in One Bot</a></label>
1057
  <label class="plugintags"><a href="http://blog.smackcoders.com/category/free-wordpress-plugins/google-seo-author-snippet-plugin/?utm_source=WpPlugin&utm_medium=Free&utm_campaign=SupportTraffic" target="_blank">Google SEO Author Snippet</a></label>
1078
 
1079
  //Facebook
1080
  $htmlShareButtons = '<span class="sociallink">';
1081
+ $htmlShareButtons .= '<a id="wpcsv_facebook_share" href="http://www.facebook.com/sharer.php?u=' . $urlCurrentPage . '" target="_blank">';
1082
  $htmlShareButtons .= '<img title="Facebook" class="wpcsv" src="' . $fbimgsrc . '" alt="Facebook" />';
1083
  $htmlShareButtons .= '</a>';
1084
  $htmlShareButtons .= '</span>';
1085
 
1086
  //Google Plus
1087
  $htmlShareButtons .= '<span class="sociallink">';
1088
+ $htmlShareButtons .= '<a id="wpcsv_google_share" href="https://plus.google.com/share?url=' . $urlCurrentPage . '" target="_blank" >';
1089
  $htmlShareButtons .= '<img title="Google+" class="wpcsv" src="' . $googleimgsrc . '" alt="Google+" />';
1090
  $htmlShareButtons .= '</a>';
1091
  $htmlShareButtons .= '</span>';
1092
 
1093
  //Linked in
1094
  $htmlShareButtons .= '<span class="sociallink">';
1095
+ $htmlShareButtons .= '<a id="wpcsv_linkedin_share" class="wpcsv_share_link" href="http://www.linkedin.com/shareArticle?mini=true&url=' . urlencode($urlCurrentPage) . '&title=' . urlencode($strPageTitle) . '&source=' . $linked_in_username . '" target="_blank" >';
1096
  $htmlShareButtons .= '<img title="LinkedIn" class="wpcsv" src="' . $linkedimgsrc . '" alt="LinkedIn" />';
1097
  $htmlShareButtons .= '</a>';
1098
  $htmlShareButtons .= '</span>';
1103
  $twitterShareText = urlencode(html_entity_decode($strPageTitle . ' ', ENT_COMPAT, 'UTF-8'));
1104
  // twitter share link
1105
  $htmlShareButtons .= '<span class="sociallink">';
1106
+ $htmlShareButtons .= '<a id="wpcsv_twitter_share" href="http://twitter.com/share?url=' . $urlCurrentPage . '&via=' . $username . '&related=' . $username . '&text=' . $twitterShareText . '" target="_blank">';
1107
  $htmlShareButtons .= '<img title="Twitter" class="wpcsv" src="' . $twitimgsrc . '" alt="Twitter" />';
1108
  $htmlShareButtons .= '</a>';
1109
  $htmlShareButtons .= '</span>';
1111
  }
1112
 
1113
  public function common_footer() {
1114
+ $get_pluginData = get_plugin_data(plugin_dir_path(__FILE__) . '../index.php');
1115
  $footer = '';
1116
  $footer .= '<div style="padding:10px;">';
1117
+ $footer .= '<label class="plugintags"><a href="http://www.wpultimatecsvimporter.com" target="_blank">' . __("Home", 'wp-ultimate-csv-importer') . '</a></label><label class="plugintags"><a href="http://wiki.smackcoders.com/WP_Ultimate_CSV_Importer?utm_source=WpPlugin&utm_medium=Free&utm_campaign=SupportTraffic" target="_blank">' . __("Wiki", 'wp-ultimate-csv-importer') . '</a></label>
1118
+ <label class="plugintags"><a href="http://www.wpultimatecsvimporter.com" target="_blank">' . __('Tutorials', 'wp-ultimate-csv-importer') . '</a></label> <label class="plugintags"><a href="http://wiki.smackcoders.com/WP_Ultimate_CSV_Importer_Videos?utm_source=WpPlugin&utm_medium=Free&utm_campaign=SupportTraffic" target="_blank">' . __("Videos", 'wp-ultimate-csv-importer') . '</a></label>
1119
+ <label class="plugintags"><a href="http://blog.smackcoders.com/wordpress-ultimate-csv-importer-csv-sample-files-and-updates.html?utm_source=WpPlugin&utm_medium=Free&utm_campaign=SupportTraffic" target="_blank">' . __("Sample Files", 'wp-ultimate-csv-importer') . '</a></label>';
1120
  $footer .= '</div>';
1121
  $footer .= '<div style="padding:10px;margin-bottom:20px;">';
1122
+ if (isset ($_REQUEST['__module']) && $_REQUEST['__module'] != 'settings') {
1123
+ $footer .= "<div style='float:right;margin-top:-49px;'><a class='label label-info' href='" . get_admin_url() . "admin.php?page=" . WP_CONST_ULTIMATE_CSV_IMP_SLUG . "/index.php&__module=settings'>" . __('Click here to Enable any disabled module', 'wp-ultimate-csv-importer') . "</a></div>";
 
 
 
1124
  }
1125
+ if (isset ($_REQUEST['__module']) && $_REQUEST['__module'] == 'settings') {
1126
+ $footer .= "<div style='float:right;margin-top:-48px;'><span style='margin-right:20px;'><a class='label label-info' href='http://wordpress.org/plugins/wp-ultimate-csv-importer/developers/'>" . __('Get Old Versions', 'wp-ultimate-csv-importer') . "</a></span><a class='label label-info' href='" . get_admin_url() . "admin.php?page=" . WP_CONST_ULTIMATE_CSV_IMP_SLUG . "/index.php&__module=support'>" . __('Click here to Get some useful links') . "</a></div>";
1127
+ $footer .= "<div style='float:right;margin-right:15px;'> </span> " . __('Current Version', 'wp-ultimate-csv-importer') . ":" . $get_pluginData['Version'] . " </div>";
1128
  }
1129
+ if (isset ($_REQUEST['__module']) && $_REQUEST['__module'] != 'support' && $_REQUEST['__module'] != 'settings') {
1130
+ $footer .= "<div style='float:right;margin-right:225px;margin-top:-48px;'><span style='margin-right:20px;'> <a class='label label-info' href='http://wordpress.org/plugins/wp-ultimate-csv-importer/developers/'>" . __('Get Old Versions', 'wp-ultimate-csv-importer') . "</a></span><a class='label label-info' href='" . get_admin_url() . "admin.php?page=" . WP_CONST_ULTIMATE_CSV_IMP_SLUG . "/index.php&__module=support'>" . __('Click here to Get some useful links', 'wp-ultimate-csv-importer') . "</a></div>";
1131
+ $footer .= "<div style='float:right;margin-right:15px;'> " . 'Current Version' . ": " . $get_pluginData['Version'] . " </div>";
1132
+ }
1133
+ if (isset ($_REQUEST['__module']) && $_REQUEST['__module'] == 'support') {
1134
+ $footer .= "<div style='float:right;margin-right:15px;'><span style='margin-right:20px;'>" . __('Current Version', 'wp-ultimate-csv-importer') . ": " . $get_pluginData['Version'] . " </span><span style='margin-right:10px;'><a class='label label-info' href='http://wordpress.org/plugins/wp-ultimate-csv-importer/developers/'>" . __('Get Old Versions', 'wp-ultimate-csv-importer') . "</a></span></div>";
1135
  }
1136
  $footer .= '</div>';
1137
  $footer .= '<div style="float:right;margin-right:15px;margin-top:-10px;"> <label>Plugin By <a href="http://www.smackcoders.com"> Smackcoders</a></label> </div>';
1144
 
1145
  <div align="center" style="text-align:left;margin-top:-33px;">
1146
  <div id="boxmethod1" class="method1">
1147
+ <label><span class="radio-icon"><input type="radio" name="importmethod" id="uploadfilefromcomputer" onclick="choose_import_method(this.id);" checked/></span> <span class="header-text" id="importopt">' . __('From Computer', 'wp-ultimate-csv-importer') . '</span> </label> <br>
1148
  <!-- The fileinput-button span is used to style the file input field as button -->
1149
  <div id="method1" style="display:block;height:40px;">
1150
  <span class="btn btn-success fileinput-button">
1151
+ <span>' . __('Browse', 'wp-ultimate-csv-importer') . '</span>
1152
  <input id="fileupload" type="file" name="files[]" multiple>
1153
  <a href="#" id="zip_process" style = "display:none"> Click Here To Process Zip </a>
1154
  </span>';
1156
  $smack_csv_import_method .= '<span style="padding-top:10px;">
1157
  <div id="progress" class="progress">
1158
  <div class="progress-bar progress-bar-success"></div>
1159
+ <div align="center" id="helpnotify" style="width:100%;"><p class="msgborder" style="color:green;">' . __('You can also drag and drop files here', 'wp-ultimate-csv-importer') . '</div>
1160
  </div>
1161
  </span>
1162
  </div>
1163
  </div>
1164
  <div style = "opacity: 0.3;background-color: ghostwhite;">
1165
  <div id="boxmethod2" class="method2">
1166
+ <label><span class="radio-icon"><input type="radio" name="importmethod" id="dwnldftpfile" /></span> <span class="header-text" id="importopt">' . __('From FTP', 'wp-ultimate-csv-importer') . '</span> </label> <img src="' . WP_CONTENT_URL . '/plugins/' . WP_CONST_ULTIMATE_CSV_IMP_SLUG . '/images/pro_icon.gif" title="PRO Feature" /> <br>
1167
  </div>
1168
  <div id="boxmethod3" class="method3">
1169
+ <label> <span class="radio-icon"><input type="radio" name="importmethod" id="dwnldextrfile" /></span> <span class="header-text" id="importopt">' . __('From URL', 'wp-ultimate-csv-importer') . '</span></label> <img src="' . WP_CONTENT_URL . '/plugins/' . WP_CONST_ULTIMATE_CSV_IMP_SLUG . '/images/pro_icon.gif" title="PRO Feature" /> <br>
1170
  </div>
1171
  <div id="boxmethod4" class="method4">
1172
+ <label><span class="radio-icon"><input type="radio" name="importmethod" id="useuploadedfile" /></span> <span class="header-text" id="importopt">' . __('From Already Uploaded', 'wp-ultimate-csv-importer') . '</span></label> <img src="' . WP_CONTENT_URL . '/plugins/' . WP_CONST_ULTIMATE_CSV_IMP_SLUG . '/images/pro_icon.gif" title="PRO Feature" /> <br>
1173
  </div>
1174
  </div>
1175
 
1176
  </div>
1177
  </div>';
1178
+ $curr_module = $_REQUEST['__module'];
1179
+ if ($curr_module == 'post' || $curr_module == 'page' || $curr_module == 'custompost' || $curr_module == 'eshop') {
1180
  $smack_csv_import_method .= '<div class="media_handling" align="left">
1181
+ <span class="advancemediahandling"> <label id="importalign"> <input type="checkbox" name="advance_media_handling" id="advance_media_handling" onclick = "filezipopen();" /> ' . __("Advance Media Handling", 'wp-ultimate-csv-importer') . ' </label> </span>
1182
  <span id = "filezipup" style ="display:none;">
1183
  <span class="advancemediahandling" style="padding-left:30px;"> <input type="file" name="inlineimages" id="inlineimages" onchange ="checkextension(this.value);" /> </span>
1184
  </span>
1185
  </div>';
1186
+ }
1187
 
1188
  return $smack_csv_import_method;
1189
  }
1190
+
1191
+ function helpnotes() {
1192
  $smackhelpnotes = '<span style="position:absolute;margin-top:6px;margin-left:15px;">
1193
  <a href="" class="tooltip">
1194
+ <img src="' . WP_CONST_ULTIMATE_CSV_IMP_DIR . 'images/help.png" />
1195
  <span class="tooltipPostStatus">
1196
+ <img class="callout" src="' . WP_CONST_ULTIMATE_CSV_IMP_DIR . 'images/callout.gif" />
1197
  Default value is 1. You can give any value based on your environment configuration.
1198
+ <img src="' . WP_CONST_ULTIMATE_CSV_IMP_DIR . 'images/help.png" style="margin-top: 6px;float:right;" />
1199
  </span>
1200
  </a>
1201
  </span>';
1202
  return $smackhelpnotes;
1203
  }
1204
+
1205
+ function create_nonce_key() {
1206
  return wp_create_nonce('smack_nonce');
1207
  }
1208
+
1209
+ function reduceStringLength($convert_str, $checktext) {
1210
+ if ($checktext == 'Enable' || $checktext == 'Disable' || $checktext == 'Mapping') {
1211
+ if (strlen($convert_str) > 7) {
1212
+ $convert_str = substr($convert_str, 0, 5) . '..';
1213
+ }
1214
+ } else {
1215
+ if ($checktext == 'caticonEnable' || $checktext == 'caticonDisable') {
1216
+ if (strlen($convert_str) > 7) {
1217
+ $convert_str = substr($convert_str, 0, 4) . '..';
1218
+ }
1219
+ } else {
1220
+ if ($checktext == 'Enabled' || $checktext == 'Disabled') {
1221
+ if (strlen($convert_str) > 8) {
1222
+ $convert_str = substr($convert_str, 0, 3) . '..';
1223
+ }
1224
+ } else {
1225
+ if ($checktext == 'Check All' || $checktext == 'Uncheck All') {
1226
+ if (strlen($convert_str) > 12) {
1227
+ $convert_str = substr($convert_str, 0, 10) . '..';
1228
+ }
1229
+ } else {
1230
+ if ($checktext == 'Yes' || $checktext == 'No') {
1231
+ if (strlen($convert_str) > 4) {
1232
+ $convert_str = substr($convert_str, 0, 2) . '..';
1233
+ }
1234
+ } else {
1235
+ if ($checktext == 'Next' && strlen($convert_str) > 5) {
1236
+ $convert_str = substr($convert_str, 0, 4) . '..';
1237
+ }
1238
+ }
1239
+ }
1240
+ }
1241
+ }
1242
+ }
1243
+ return $convert_str;
1244
+ }
1245
+
1246
+ function customfieldui($count) {
1247
+ $result = "<div class='left_align columnheader' style='background-color: #E5E4E2; border: 1px solid #d6e9c6;padding: 10px; width:100%;'>
1248
+ <div id = 'custfield_core'><b>Custom Fields:</b>
1249
  </div>
1250
  </div>";
1251
  $result .= "<table style='font-size: 12px;' class = 'table table-striped' id='CORECUST'><tr>
1252
  <td class='left_align columnheader'><b>CUSTOM FIELD</b></td>
1253
  <td class='columnheader'><b>CSV HEADER</b></td><td></td><td></td></tr></table>
1254
+ <input type='button' class='btn btn-primary' name='addcustomfd' value='Add Custom Field' style='margin-left:20px;margin-bottom:15px;margin-top:20px;' onclick = 'addcorecustomfield(CORECUST," . $count . ");'>";
1255
  return $result;
1256
 
1257
  }
1258
  }
1259
 
1260
+ class CallWPImporterObj extends WPImporter_includes_helper {
 
1261
  private static $_instance = null;
1262
+
1263
+ public static function getInstance() {
1264
+ if (!is_object(self::$_instance)) //or if( is_null(self::$_instance) ) or if( self::$_instance == null )
1265
+ {
1266
  self::$_instance = new WPImporter_includes_helper();
1267
+ }
1268
  return self::$_instance;
1269
  }
1270
+
1271
+ public static function checkSecurity() {
1272
+ $msg = 'You are not allowed to do this operation! Please contact your admin';
1273
+ if (!function_exists('session_status')) {
1274
+ if (session_id() == '') {
1275
+ return $msg;
1276
+ } else {
1277
  return 'true';
1278
+ }
1279
+ } else {
1280
+ if (session_status() != PHP_SESSION_ACTIVE) {
1281
+ return $msg;
1282
+ } else {
1283
+ if (!defined('ABSPATH')) {
1284
+ return $msg;
1285
+ } else {
1286
+ if (php_sapi_name() == "cli") {
1287
+ return $msg;
1288
+ } else {
1289
+ return 'true';
1290
+ }
1291
+ }
1292
+ }
1293
+ }
1294
+ }
1295
  }
1296
 
1297
  class WPImpCSVParserLib {
1298
+
1299
+ /*
1300
+
1301
+ Class: parseCSV v0.4.3 beta
1302
+ http://code.google.com/p/parsecsv-for-php/
1303
+
1304
+
1305
+ Fully conforms to the specifications lined out on wikipedia:
1306
+ - http://en.wikipedia.org/wiki/Comma-separated_values
1307
+
1308
+ Based on the concept of Ming Hong Ng's CsvFileParser class:
1309
+ - http://minghong.blogspot.com/2006/07/csv-parser-for-php.html
1310
+
1311
+
1312
+
1313
+ Copyright (c) 2007 Jim Myhrberg (jim@zydev.info).
1314
+
1315
+ Permission is hereby granted, free of charge, to any person obtaining a copy
1316
+ of this software and associated documentation files (the "Software"), to deal
1317
+ in the Software without restriction, including without limitation the rights
1318
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
1319
+ copies of the Software, and to permit persons to whom the Software is
1320
+ furnished to do so, subject to the following conditions:
1321
+
1322
+ The above copyright notice and this permission notice shall be included in
1323
+ all copies or substantial portions of the Software.
1324
+
1325
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1326
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1327
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
1328
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
1329
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
1330
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
1331
+ THE SOFTWARE.
1332
+
1333
+
1334
+
1335
+ Code Examples
1336
+ ----------------
1337
+ # general usage
1338
+ $csv = new parseCSV('data.csv');
1339
+ print_r($csv->data);
1340
+ ----------------
1341
+ # tab delimited, and encoding conversion
1342
+ $csv = new parseCSV();
1343
+ $csv->encoding('UTF-16', 'UTF-8');
1344
+ $csv->delimiter = "\t";
1345
+ $csv->parse('data.tsv');
1346
+ print_r($csv->data);
1347
+ ----------------
1348
+ # auto-detect delimiter character
1349
+ $csv = new parseCSV();
1350
+ $csv->auto('data.csv');
1351
+ print_r($csv->data);
1352
+ ----------------
1353
+ # modify data in a csv file
1354
+ $csv = new parseCSV();
1355
+ $csv->sort_by = 'id';
1356
+ $csv->parse('data.csv');
1357
+ # "4" is the value of the "id" column of the CSV row
1358
+ $csv->data[4] = array('firstname' => 'John', 'lastname' => 'Doe', 'email' => 'john@doe.com');
1359
+ $csv->save();
1360
+ ----------------
1361
+ # add row/entry to end of CSV file
1362
+ # - only recommended when you know the extact sctructure of the file
1363
+ $csv = new parseCSV();
1364
+ $csv->save('data.csv', array(array('1986', 'Home', 'Nowhere', '')), true);
1365
+ ----------------
1366
+ # convert 2D array to csv data and send headers
1367
+ # to browser to treat output as a file and download it
1368
+ $csv = new parseCSV();
1369
+ $csv->output (true, 'movies.csv', $array);
1370
+ ----------------
1371
+
1372
+
1373
+ */
1374
 
1375
 
1376
  /**
1377
  * Configuration
1378
  * - set these options with $object->var_name = 'value';
1379
  */
1380
+
1381
  # use first line/entry as field names
1382
  var $heading = true;
1383
+
1384
  # override field names
1385
  var $fields = array();
1386
+
1387
  # sort entries by this field
1388
  var $sort_by = null;
1389
  var $sort_reverse = false;
1390
+
1391
  # sort behavior passed to ksort/krsort functions
1392
  # regular = SORT_REGULAR
1393
  # numeric = SORT_NUMERIC
1394
  # string = SORT_STRING
1395
  var $sort_type = null;
1396
+
1397
  # delimiter (comma) and enclosure (double quote)
1398
  var $delimiter = ',';
1399
  var $enclosure = '"';
1400
+
1401
  # basic SQL-like conditions for row matching
1402
  var $conditions = null;
1403
+
1404
  # number of rows to ignore from beginning of data
1405
  var $offset = null;
1406
+
1407
  # limits the number of returned rows to specified amount
1408
  var $limit = null;
1409
+
1410
  # number of rows to analyze when attempting to auto-detect delimiter
1411
  var $auto_depth = 15;
1412
+
1413
  # characters to ignore when attempting to auto-detect delimiter
1414
  var $auto_non_chars = "a-zA-Z0-9\n\r";
1415
+
1416
  # preferred delimiter characters, only used when all filtering method
1417
  # returns multiple possible delimiters (happens very rarely)
1418
  var $auto_preferred = ",;\t.:|";
1419
+
1420
  # character encoding options
1421
  var $convert_encoding = false;
1422
  var $input_encoding = 'ISO-8859-1';
1423
  var $output_encoding = 'ISO-8859-1';
1424
+
1425
  # used by unparse(), save(), and output() functions
1426
  var $linefeed = "\r\n";
1427
+
1428
  # only used by output() function
1429
  var $output_delimiter = ',';
1430
  var $output_filename = 'data.csv';
1431
+
1432
  # keep raw file data in memory after successful parsing (useful for debugging)
1433
  var $keep_file_data = false;
1434
+
1435
  /**
1436
  * Internal variables
1437
  */
1438
+
1439
  # current file
1440
  var $file;
1441
+
1442
  # loaded file contents
1443
  var $file_data;
1444
+
1445
  # error while parsing input data
1446
  # 0 = No errors found. Everything should be fine :)
1447
  # 1 = Hopefully correctable syntax error was found.
1451
  # standard CSV formatting. Please validate
1452
  # the parsed data yourself.
1453
  var $error = 0;
1454
+
1455
  # detailed error info
1456
  var $error_info = array();
1457
+
1458
  # array of field values in data parsed
1459
  var $titles = array();
1460
+
1461
  # two dimentional array of CSV data
1462
  var $data = array();
1463
+
1464
+
1465
  /**
1466
  * Constructor
1467
  * @param input CSV file or string
1468
  * @return nothing
1469
  */
1470
+ function parseCSV($input = null, $offset = null, $limit = null, $conditions = null) {
1471
+ if ($offset !== null) {
1472
+ $this->offset = $offset;
1473
+ }
1474
+ if ($limit !== null) {
1475
+ $this->limit = $limit;
1476
+ }
1477
+ if (count($conditions) > 0) {
1478
+ $this->conditions = $conditions;
1479
+ }
1480
+ if (!empty($input)) {
1481
+ $this->parse($input);
1482
+ }
1483
  }
1484
+
1485
+
1486
  // ==============================================
1487
  // ----- [ Main Functions ] ---------------------
1488
  // ==============================================
1489
+
1490
  /**
1491
  * Parse CSV file or string
1492
  * @param input CSV file or string
1493
  * @return nothing
1494
  */
1495
+ function parse($input = null, $offset = null, $limit = null, $conditions = null) {
1496
+ if ($input === null) {
1497
+ $input = $this->file;
1498
+ }
1499
+ if (!empty($input)) {
1500
+ if ($offset !== null) {
1501
+ $this->offset = $offset;
1502
+ }
1503
+ if ($limit !== null) {
1504
+ $this->limit = $limit;
1505
+ }
1506
+ if (count($conditions) > 0) {
1507
+ $this->conditions = $conditions;
1508
+ }
1509
+ if (is_readable($input)) {
1510
  $this->data = $this->parse_file($input);
1511
  } else {
1512
  $this->file_data = &$input;
1513
  $this->data = $this->parse_string();
1514
  }
1515
+ if ($this->data === false) {
1516
+ return false;
1517
+ }
1518
  }
1519
  return true;
1520
  }
1521
+
1522
  /**
1523
  * Save changes, or new file and/or data
1524
  * @param file file to save to
1525
+ * @param data 2D array with data
1526
  * @param append append current data to end of target CSV if exists
1527
  * @param fields field names
1528
  * @return true or false
1529
  */
1530
+ function save($file = null, $data = array(), $append = false, $fields = array()) {
1531
+ if (empty($file)) {
1532
+ $file = &$this->file;
1533
+ }
1534
+ $mode = ($append) ? 'at' : 'wt';
1535
+ $is_php = (preg_match('/\.php$/i', $file)) ? true : false;
1536
  return $this->_wfile($file, $this->unparse($data, $fields, $append, $is_php), $mode);
1537
  }
1538
+
1539
  /**
1540
  * Generate CSV based string for output
1541
  * @param filename if specified, headers and data will be output directly to browser as a downloable file
1542
+ * @param data 2D array with data
1543
  * @param fields field names
1544
  * @param delimiter delimiter used to separate data
1545
  * @return CSV data using delimiter of choice, or default
1546
  */
1547
+ function output($filename = null, $data = array(), $fields = array(), $delimiter = null) {
1548
+ if (empty($filename)) {
1549
+ $filename = $this->output_filename;
1550
+ }
1551
+ if ($delimiter === null) {
1552
+ $delimiter = $this->output_delimiter;
1553
+ }
1554
  $data = $this->unparse($data, $fields, null, null, $delimiter);
1555
+ if ($filename !== null) {
1556
  header('Content-type: application/csv');
1557
+ header('Content-Disposition: attachment; filename="' . $filename . '"');
1558
  echo $data;
1559
  }
1560
  return $data;
1561
  }
1562
+
1563
  /**
1564
  * Convert character encoding
1565
  * @param input input character encoding, uses default if left blank
1566
  * @param output output character encoding, uses default if left blank
1567
  * @return nothing
1568
  */
1569
+ function encoding($input = null, $output = null) {
1570
  $this->convert_encoding = true;
1571
+ if ($input !== null) {
1572
+ $this->input_encoding = $input;
1573
+ }
1574
+ if ($output !== null) {
1575
+ $this->output_encoding = $output;
1576
+ }
1577
  }
1578
+
1579
  /**
1580
  * Auto-Detect Delimiter: Find delimiter by analyzing a specific number of
1581
  * rows to determine most probable delimiter character
1586
  * @param enclosure enclosure character, default is double quote (").
1587
  * @return delimiter character
1588
  */
1589
+ function auto($file = null, $parse = true, $search_depth = null, $preferred = null, $enclosure = null) {
1590
+
1591
+ if ($file === null) {
1592
+ $file = $this->file;
1593
+ }
1594
+ if (empty($search_depth)) {
1595
+ $search_depth = $this->auto_depth;
1596
+ }
1597
+ if ($enclosure === null) {
1598
+ $enclosure = $this->enclosure;
1599
+ }
1600
+
1601
+ if ($preferred === null) {
1602
+ $preferred = $this->auto_preferred;
1603
+ }
1604
+
1605
+ if (empty($this->file_data)) {
1606
+ if ($this->_check_data($file)) {
1607
  $data = &$this->file_data;
1608
+ } else {
1609
+ return false;
1610
+ }
1611
  } else {
1612
  $data = &$this->file_data;
1613
  }
1614
+
1615
  $chars = array();
1616
  $strlen = strlen($data);
1617
  $enclosed = false;
1618
  $n = 1;
1619
  $to_end = true;
1620
+
1621
  // walk specific depth finding posssible delimiter characters
1622
+ for ($i = 0; $i < $strlen; $i++) {
1623
  $ch = $data{$i};
1624
+ $nch = (isset($data{$i + 1})) ? $data{$i + 1} : false;
1625
+ $pch = (isset($data{$i - 1})) ? $data{$i - 1} : false;
1626
+
1627
  // open and closing quotes
1628
+ if ($ch == $enclosure) {
1629
+ if (!$enclosed || $nch != $enclosure) {
1630
+ $enclosed = ($enclosed) ? false : true;
1631
+ } elseif ($enclosed) {
1632
  $i++;
1633
  }
1634
+
1635
+ // end of row
1636
+ } elseif (($ch == "\n" && $pch != "\r" || $ch == "\r") && !$enclosed) {
1637
+ if ($n >= $search_depth) {
1638
  $strlen = 0;
1639
  $to_end = false;
1640
  } else {
1641
  $n++;
1642
  }
1643
+
1644
+ // count character
1645
  } elseif (!$enclosed) {
1646
+ if (!preg_match('/[' . preg_quote($this->auto_non_chars, '/') . ']/i', $ch)) {
1647
+ if (!isset($chars[$ch][$n])) {
1648
  $chars[$ch][$n] = 1;
1649
  } else {
1650
  $chars[$ch][$n]++;
1652
  }
1653
  }
1654
  }
1655
+
1656
  // filtering
1657
+ $depth = ($to_end) ? $n - 1 : $n;
1658
  $filtered = array();
1659
+ foreach ($chars as $char => $value) {
1660
+ if ($match = $this->_check_count($char, $value, $depth, $preferred)) {
1661
  $filtered[$match] = $char;
1662
  }
1663
  }
1664
+
1665
  // capture most probable delimiter
1666
  ksort($filtered);
1667
  $this->delimiter = reset($filtered);
1668
+
1669
  // parse data
1670
+ if ($parse) {
1671
+ $this->data = $this->parse_string();
1672
+ }
1673
+
1674
  return $this->delimiter;
1675
+
1676
  }
1677
+
1678
+
1679
  // ==============================================
1680
  // ----- [ Core Functions ] ---------------------
1681
  // ==============================================
1682
+
1683
  /**
1684
  * Read file to string and call parse_string()
1685
  * @param file local CSV file
1686
  * @return 2D array with CSV data, or false on failure
1687
  */
1688
+ function parse_file($file = null) {
1689
+ if ($file === null) {
1690
+ $file = $this->file;
1691
+ }
1692
+ if (empty($this->file_data)) {
1693
+ $this->load_data($file);
1694
+ }
1695
+ return (!empty($this->file_data)) ? $this->parse_string() : false;
1696
  }
1697
+
1698
  /**
1699
  * Parse CSV strings to arrays
1700
  * @param data CSV string
1701
  * @return 2D array with CSV data, or false on failure
1702
  */
1703
+ function parse_string($data = null) {
1704
+ if (empty($data)) {
1705
+ if ($this->_check_data()) {
1706
  $data = &$this->file_data;
1707
+ } else {
1708
+ return false;
1709
+ }
1710
  }
1711
+
1712
  $white_spaces = str_replace($this->delimiter, '', " \t\x0B\0");
1713
+
1714
  $rows = array();
1715
  $row = array();
1716
  $row_count = 0;
1717
  $current = '';
1718
+ $head = (!empty($this->fields)) ? $this->fields : array();
1719
  $col = 0;
1720
  $enclosed = false;
1721
  $was_enclosed = false;
1722
  $strlen = strlen($data);
1723
+
1724
  // walk through each character
1725
+ for ($i = 0; $i < $strlen; $i++) {
1726
  $ch = $data{$i};
1727
+ $nch = (isset($data{$i + 1})) ? $data{$i + 1} : false;
1728
+ $pch = (isset($data{$i - 1})) ? $data{$i - 1} : false;
1729
+
1730
  // open/close quotes, and inline quotes
1731
+ if ($ch == $this->enclosure) {
1732
+ if (!$enclosed) {
1733
+ if (ltrim($current, $white_spaces) == '') {
1734
  $enclosed = true;
1735
  $was_enclosed = true;
1736
  } else {
1737
  $this->error = 2;
1738
  $error_row = count($rows) + 1;
1739
  $error_col = $col + 1;
1740
+ if (!isset($this->error_info[$error_row . '-' . $error_col])) {
1741
+ $this->error_info[$error_row . '-' . $error_col] = array('type' => 2, 'info' => 'Syntax error found on row ' . $error_row . '. Non-enclosed fields can not contain double-quotes.', 'row' => $error_row, 'field' => $error_col, 'field_name' => (!empty($head[$col])) ? $head[$col] : null,);
 
 
 
 
 
 
1742
  }
1743
  $current .= $ch;
1744
  }
1745
  } elseif ($nch == $this->enclosure) {
1746
  $current .= $ch;
1747
  $i++;
1748
+ } elseif ($nch != $this->delimiter && $nch != "\r" && $nch != "\n") {
1749
+ for ($x = ($i + 1); isset($data{$x}) && ltrim($data{$x}, $white_spaces) == ''; $x++) {
1750
+ }
1751
+ if ($data{$x} == $this->delimiter) {
1752
  $enclosed = false;
1753
  $i = $x;
1754
  } else {
1755
+ if ($this->error < 1) {
1756
  $this->error = 1;
1757
  }
1758
  $error_row = count($rows) + 1;
1759
  $error_col = $col + 1;
1760
+ if (!isset($this->error_info[$error_row . '-' . $error_col])) {
1761
+ $this->error_info[$error_row . '-' . $error_col] = array('type' => 1, 'info' => 'Syntax error found on row ' . (count($rows) + 1) . '. ' . 'A single double-quote was found within an enclosed string. ' . 'Enclosed double-quotes must be escaped with a second double-quote.', 'row' => count($rows) + 1, 'field' => $col + 1, 'field_name' => (!empty($head[$col])) ? $head[$col] : null,);
 
 
 
 
 
 
 
 
 
1762
  }
1763
  $current .= $ch;
1764
  $enclosed = false;
1766
  } else {
1767
  $enclosed = false;
1768
  }
1769
+
1770
+ // end of field/row
1771
+ } elseif (($ch == $this->delimiter || $ch == "\n" || $ch == "\r") && !$enclosed) {
1772
+ $key = (!empty($head[$col])) ? $head[$col] : $col;
1773
+ $row[$key] = ($was_enclosed) ? $current : trim($current);
1774
  $current = '';
1775
  $was_enclosed = false;
1776
  $col++;
1777
+
1778
  // end of row
1779
+ if ($ch == "\n" || $ch == "\r") {
1780
+ if ($this->_validate_offset($row_count) && $this->_validate_row_conditions($row, $this->conditions)) {
1781
+ if ($this->heading && empty($head)) {
1782
  $head = $row;
1783
+ } elseif (empty($this->fields) || (!empty($this->fields) && (($this->heading && $row_count > 0) || !$this->heading))) {
1784
+ if (!empty($this->sort_by) && !empty($row[$this->sort_by])) {
1785
+ if (isset($rows[$row[$this->sort_by]])) {
1786
+ $rows[$row[$this->sort_by] . '_0'] = &$rows[$row[$this->sort_by]];
1787
  unset($rows[$row[$this->sort_by]]);
1788
+ for ($sn = 1; isset($rows[$row[$this->sort_by] . '_' . $sn]); $sn++) {
1789
+ }
1790
+ $rows[$row[$this->sort_by] . '_' . $sn] = $row;
1791
+ } else {
1792
+ $rows[$row[$this->sort_by]] = $row;
1793
+ }
1794
+ } else {
1795
+ $rows[] = $row;
1796
+ }
1797
  }
1798
  }
1799
  $row = array();
1800
  $col = 0;
1801
  $row_count++;
1802
+ if ($this->sort_by === null && $this->limit !== null && count($rows) == $this->limit) {
1803
  $i = $strlen;
1804
  }
1805
+ if ($ch == "\r" && $nch == "\n") {
1806
+ $i++;
1807
+ }
1808
  }
1809
+
1810
+ // append character to current field
1811
  } else {
1812
  $current .= $ch;
1813
  }
1814
  }
1815
  $this->titles = $head;
1816
+ if (!empty($this->sort_by)) {
1817
  $sort_type = SORT_REGULAR;
1818
+ if ($this->sort_type == 'numeric') {
1819
  $sort_type = SORT_NUMERIC;
1820
+ } elseif ($this->sort_type == 'string') {
1821
  $sort_type = SORT_STRING;
1822
  }
1823
+ ($this->sort_reverse) ? krsort($rows, $sort_type) : ksort($rows, $sort_type);
1824
+ if ($this->offset !== null || $this->limit !== null) {
1825
+ $rows = array_slice($rows, ($this->offset === null ? 0 : $this->offset), $this->limit, true);
1826
  }
1827
  }
1828
+ if (!$this->keep_file_data) {
1829
  $this->file_data = null;
1830
  }
1831
  return $rows;
1832
  }
1833
+
1834
  /**
1835
  * Create CSV data from array
1836
+ * @param data 2D array with data
1837
  * @param fields field names
1838
  * @param append if true, field names will not be output
1839
  * @param is_php if a php die() call should be put on the first
1841
  * @param delimiter field delimiter to use
1842
  * @return CSV data (text string)
1843
  */
1844
+ function unparse($data = array(), $fields = array(), $append = false, $is_php = false, $delimiter = null) {
1845
+ if (!is_array($data) || empty($data)) {
1846
+ $data = &$this->data;
1847
+ }
1848
+ if (!is_array($fields) || empty($fields)) {
1849
+ $fields = &$this->titles;
1850
+ }
1851
+ if ($delimiter === null) {
1852
+ $delimiter = $this->delimiter;
1853
+ }
1854
+
1855
+ $string = ($is_php) ? "<?php header('Status: 403'); die(' '); ?>" . $this->linefeed : '';
1856
  $entry = array();
1857
+
1858
  // create heading
1859
+ if ($this->heading && !$append && !empty($fields)) {
1860
+ foreach ($fields as $key => $value) {
1861
  $entry[] = $this->_enclose_value($value);
1862
  }
1863
+ $string .= implode($delimiter, $entry) . $this->linefeed;
1864
  $entry = array();
1865
  }
1866
+
1867
  // create data
1868
+ foreach ($data as $key => $row) {
1869
+ foreach ($row as $field => $value) {
1870
  $entry[] = $this->_enclose_value($value);
1871
  }
1872
+ $string .= implode($delimiter, $entry) . $this->linefeed;
1873
  $entry = array();
1874
  }
1875
+
1876
  return $string;
1877
  }
1878
+
1879
  /**
1880
  * Load local file or string
1881
  * @param input local CSV file
1882
  * @return true or false
1883
  */
1884
+ function load_data($input = null) {
1885
  $data = null;
1886
  $file = null;
1887
+ if ($input === null) {
1888
  $file = $this->file;
1889
+ } elseif (file_exists($input)) {
1890
  $file = $input;
1891
  } else {
1892
  $data = $input;
1893
  }
1894
+ if (!empty($data) || $data = $this->_rfile($file)) {
1895
+ if ($this->file != $file) {
1896
+ $this->file = $file;
1897
+ }
1898
+ if (preg_match('/\.php$/i', $file) && preg_match('/<\?.*?\?>(.*)/ims', $data, $strip)) {
1899
  $data = ltrim($strip[1]);
1900
  }
1901
+ if ($this->convert_encoding) {
1902
+ $data = iconv($this->input_encoding, $this->output_encoding, $data);
1903
+ }
1904
+ if (substr($data, -1) != "\n") {
1905
+ $data .= "\n";
1906
+ }
1907
  $this->file_data = &$data;
1908
  return true;
1909
  }
1910
  return false;
1911
  }
1912
+
1913
+
1914
  // ==============================================
1915
  // ----- [ Internal Functions ] -----------------
1916
  // ==============================================
1917
+
1918
  /**
1919
  * Validate a row against specified conditions
1920
  * @param row array with values from a row
1921
+ * @param conditions specified conditions that the row must match
1922
  * @return true of false
1923
  */
1924
+ function _validate_row_conditions($row = array(), $conditions = null) {
1925
+ if (!empty($row)) {
1926
+ if (!empty($conditions)) {
1927
+ $conditions = (strpos($conditions, ' OR ') !== false) ? explode(' OR ', $conditions) : array($conditions);
1928
  $or = '';
1929
+ foreach ($conditions as $key => $value) {
1930
+ if (strpos($value, ' AND ') !== false) {
1931
  $value = explode(' AND ', $value);
1932
  $and = '';
1933
+ foreach ($value as $k => $v) {
1934
  $and .= $this->_validate_row_condition($row, $v);
1935
  }
1936
+ $or .= (strpos($and, '0') !== false) ? '0' : '1';
1937
  } else {
1938
  $or .= $this->_validate_row_condition($row, $value);
1939
  }
1940
  }
1941
+ return (strpos($or, '1') !== false) ? true : false;
1942
  }
1943
  return true;
1944
  }
1945
  return false;
1946
  }
1947
+
1948
  /**
1949
  * Validate a row against a single condition
1950
  * @param row array with values from a row
1951
+ * @param condition specified condition that the row must match
1952
  * @return true of false
1953
  */
1954
+ function _validate_row_condition($row, $condition) {
1955
+ $operators = array('=', 'equals', 'is', '!=', 'is not', '<', 'is less than', '>', 'is greater than', '<=', 'is less than or equals', '>=', 'is greater than or equals', 'contains', 'does not contain',);
 
 
 
 
 
 
 
 
 
1956
  $operators_regex = array();
1957
+ foreach ($operators as $value) {
1958
  $operators_regex[] = preg_quote($value, '/');
1959
  }
1960
  $operators_regex = implode('|', $operators_regex);
1961
+ if (preg_match('/^(.+) (' . $operators_regex . ') (.+)$/i', trim($condition), $capture)) {
1962
  $field = $capture[1];
1963
  $op = $capture[2];
1964
  $value = $capture[3];
1965
+ if (preg_match('/^([\'\"]{1})(.*)([\'\"]{1})$/i', $value, $capture)) {
1966
+ if ($capture[1] == $capture[3]) {
1967
  $value = $capture[2];
1968
  $value = str_replace("\\n", "\n", $value);
1969
  $value = str_replace("\\r", "\r", $value);
1971
  $value = stripslashes($value);
1972
  }
1973
  }
1974
+ if (array_key_exists($field, $row)) {
1975
+ if (($op == '=' || $op == 'equals' || $op == 'is') && $row[$field] == $value) {
1976
  return '1';
1977
+ } elseif (($op == '!=' || $op == 'is not') && $row[$field] != $value) {
1978
  return '1';
1979
+ } elseif (($op == '<' || $op == 'is less than') && $row[$field] < $value) {
1980
  return '1';
1981
+ } elseif (($op == '>' || $op == 'is greater than') && $row[$field] > $value) {
1982
  return '1';
1983
+ } elseif (($op == '<=' || $op == 'is less than or equals') && $row[$field] <= $value) {
1984
  return '1';
1985
+ } elseif (($op == '>=' || $op == 'is greater than or equals') && $row[$field] >= $value) {
1986
  return '1';
1987
+ } elseif ($op == 'contains' && preg_match('/' . preg_quote($value, '/') . '/i', $row[$field])) {
1988
  return '1';
1989
+ } elseif ($op == 'does not contain' && !preg_match('/' . preg_quote($value, '/') . '/i', $row[$field])) {
1990
  return '1';
1991
  } else {
1992
  return '0';
1995
  }
1996
  return '1';
1997
  }
1998
+
1999
  /**
2000
  * Validates if the row is within the offset or not if sorting is disabled
2001
  * @param current_row the current row number being processed
2002
  * @return true of false
2003
  */
2004
+ function _validate_offset($current_row) {
2005
+ if ($this->sort_by === null && $this->offset !== null && $current_row < $this->offset) {
2006
+ return false;
2007
+ }
2008
  return true;
2009
  }
2010
+
2011
  /**
2012
  * Enclose values if needed
2013
  * - only used by unparse()
2014
  * @param value string to process
2015
  * @return Processed value
2016
  */
2017
+ function _enclose_value($value = null) {
2018
+ if ($value !== null && $value != '') {
2019
  $delimiter = preg_quote($this->delimiter, '/');
2020
  $enclosure = preg_quote($this->enclosure, '/');
2021
+ if (preg_match("/" . $delimiter . "|" . $enclosure . "|\n|\r/i", $value) || ($value{0} == ' ' || substr($value, -1) == ' ')) {
2022
+ $value = str_replace($this->enclosure, $this->enclosure . $this->enclosure, $value);
2023
+ $value = $this->enclosure . $value . $this->enclosure;
2024
  }
2025
  }
2026
  return $value;
2027
  }
2028
+
2029
  /**
2030
  * Check file data
2031
  * @param file local filename
2032
  * @return true or false
2033
  */
2034
+ function _check_data($file = null) {
2035
+ if (empty($this->file_data)) {
2036
+ if ($file === null) {
2037
+ $file = $this->file;
2038
+ }
2039
  return $this->load_data($file);
2040
  }
2041
  return true;
2042
  }
2043
+
2044
+
2045
  /**
2046
  * Check if passed info might be delimiter
2047
  * - only used by find_delimiter()
2048
  * @return special string used for delimiter selection, or false
2049
  */
2050
+ function _check_count($char, $array, $depth, $preferred) {
2051
+ if ($depth == count($array)) {
2052
  $first = null;
2053
  $equal = null;
2054
  $almost = false;
2055
+ foreach ($array as $key => $value) {
2056
+ if ($first == null) {
2057
  $first = $value;
2058
+ } elseif ($value == $first && $equal !== false) {
2059
  $equal = true;
2060
+ } elseif ($value == $first + 1 && $equal !== false) {
2061
  $equal = true;
2062
  $almost = true;
2063
  } else {
2064
  $equal = false;
2065
  }
2066
  }
2067
+ if ($equal) {
2068
+ $match = ($almost) ? 2 : 1;
2069
  $pref = strpos($preferred, $char);
2070
+ $pref = ($pref !== false) ? str_pad($pref, 3, '0', STR_PAD_LEFT) : '999';
2071
+ return $pref . $match . '.' . (99999 - str_pad($first, 5, '0', STR_PAD_LEFT));
2072
+ } else {
2073
+ return false;
2074
+ }
2075
  }
2076
  }
2077
+
2078
  /**
2079
  * Read local file
2080
  * @param file local filename
2081
  * @return Data from file, or false on failure
2082
  */
2083
+ function _rfile($file = null) {
2084
+ if (is_readable($file)) {
2085
+ if (!($fh = fopen($file, 'r'))) {
2086
+ return false;
2087
+ }
2088
  $data = fread($fh, filesize($file));
2089
  fclose($fh);
2090
  return $data;
2100
  * @param lock flock() mode
2101
  * @return true or false
2102
  */
2103
+ function _wfile($file, $string = '', $mode = 'wb', $lock = 2) {
2104
+ if ($fp = fopen($file, $mode)) {
2105
  flock($fp, $lock);
2106
  $re = fwrite($fp, $string);
2107
  $re2 = fclose($fp);
2108
+ if ($re != false && $re2 != false) {
2109
+ return true;
2110
+ }
2111
  }
2112
  return false;
2113
  }
2114
+
2115
  }
2116
 
index.php CHANGED
@@ -2,7 +2,7 @@
2
  /******************************
3
  * Plugin Name: WP Ultimate CSV Importer
4
  * Description: A plugin that helps to import the data's from a CSV file.
5
- * Version: 3.8.3
6
  * Author: smackcoders.com
7
  * Text Domain: wp-ultimate-csv-importer
8
  * Domain Path: /languages
@@ -167,13 +167,16 @@ function action_csv_imp_admin_init() {
167
  wp_enqueue_style('jquery-fileupload', plugins_url('css/jquery.fileupload.css', __FILE__));
168
  wp_enqueue_style('bootstrap-css', plugins_url('css/bootstrap.css', __FILE__));
169
  wp_enqueue_style('ultimate-importer-css', plugins_url('css/main.css', __FILE__));
 
170
  // For chart js
171
  wp_enqueue_script('high_chart', plugins_url('js/highcharts.js', __FILE__));
172
  wp_enqueue_script('export_module', plugins_url('js/exporting.js', __FILE__));
173
  wp_enqueue_script('pie_chart', plugins_url('js/highcharts-3d.js', __FILE__));
174
  wp_enqueue_script('dropdown', plugins_url('js/dropdown.js', __FILE__));
175
-
 
176
  wp_enqueue_script('data', plugins_url('js/dashchart.js', __FILE__));
 
177
 
178
  }
179
  }
@@ -268,6 +271,8 @@ function wpcsvimporter_add_dashboard_widgets() {
268
  wp_enqueue_script('high_chart', plugins_url('js/highcharts.js', __FILE__));
269
  wp_enqueue_script('export_module', plugins_url('js/exporting.js', __FILE__));
270
  wp_enqueue_script('pie_chart', plugins_url('js/highcharts-3d.js', __FILE__));
 
 
271
  wp_add_dashboard_widget('wpcsvimporter_dashboard_piehart', 'Ultimate-CSV-Importer-Statistics', 'roundchart',$screen = get_current_screen() , 'advanced' ,'high' );
272
  wp_add_dashboard_widget('wpcsvimporter_dashboard_linechart', 'Ultimate-CSV-Importer-Activity', 'linetwoStats',$screen = get_current_screen(),'advanced','high');
273
  }
2
  /******************************
3
  * Plugin Name: WP Ultimate CSV Importer
4
  * Description: A plugin that helps to import the data's from a CSV file.
5
+ * Version: 3.8.4
6
  * Author: smackcoders.com
7
  * Text Domain: wp-ultimate-csv-importer
8
  * Domain Path: /languages
167
  wp_enqueue_style('jquery-fileupload', plugins_url('css/jquery.fileupload.css', __FILE__));
168
  wp_enqueue_style('bootstrap-css', plugins_url('css/bootstrap.css', __FILE__));
169
  wp_enqueue_style('ultimate-importer-css', plugins_url('css/main.css', __FILE__));
170
+ wp_enqueue_style('morris-css', plugins_url('css/morris.css', __FILE__));
171
  // For chart js
172
  wp_enqueue_script('high_chart', plugins_url('js/highcharts.js', __FILE__));
173
  wp_enqueue_script('export_module', plugins_url('js/exporting.js', __FILE__));
174
  wp_enqueue_script('pie_chart', plugins_url('js/highcharts-3d.js', __FILE__));
175
  wp_enqueue_script('dropdown', plugins_url('js/dropdown.js', __FILE__));
176
+ wp_enqueue_script('raphael-min-js', plugins_url('js/raphael-min.js', __FILE__));
177
+ wp_enqueue_script('morris-min-js', plugins_url('js/morris.min.js', __FILE__));
178
  wp_enqueue_script('data', plugins_url('js/dashchart.js', __FILE__));
179
+ //wp_enqueue_script('jquery-min-js', plugins_url('js/jquery.min.js', __FILE__));
180
 
181
  }
182
  }
271
  wp_enqueue_script('high_chart', plugins_url('js/highcharts.js', __FILE__));
272
  wp_enqueue_script('export_module', plugins_url('js/exporting.js', __FILE__));
273
  wp_enqueue_script('pie_chart', plugins_url('js/highcharts-3d.js', __FILE__));
274
+ wp_enqueue_script('raphael-min-js', plugins_url('js/raphael-min.js', __FILE__));
275
+ wp_enqueue_script('morris-min-js', plugins_url('js/morris.min.js', __FILE__));
276
  wp_add_dashboard_widget('wpcsvimporter_dashboard_piehart', 'Ultimate-CSV-Importer-Statistics', 'roundchart',$screen = get_current_screen() , 'advanced' ,'high' );
277
  wp_add_dashboard_widget('wpcsvimporter_dashboard_linechart', 'Ultimate-CSV-Importer-Activity', 'linetwoStats',$screen = get_current_screen(),'advanced','high');
278
  }
js/bootstrap-collapse.js CHANGED
@@ -17,120 +17,120 @@
17
  * limitations under the License.
18
  * ============================================================ */
19
 
20
- !function( $ ){
21
 
22
- "use strict"
23
 
24
- var Collapse = function ( element, options ) {
25
- this.$element = $(element)
26
- this.options = $.extend({}, $.fn.collapse.defaults, options)
27
 
28
- if (this.options["parent"]) {
29
- this.$parent = $(this.options["parent"])
 
 
 
30
  }
31
 
32
- this.options.toggle && this.toggle()
33
- }
34
 
35
- Collapse.prototype = {
36
 
37
- constructor: Collapse
 
 
 
38
 
39
- , dimension: function () {
40
- var hasWidth = this.$element.hasClass('width')
41
- return hasWidth ? 'width' : 'height'
42
- }
 
43
 
44
- , show: function () {
45
- var dimension = this.dimension()
46
- , scroll = $.camelCase(['scroll', dimension].join('-'))
47
- , actives = this.$parent && this.$parent.find('.in')
48
- , hasData
49
 
50
- if (actives && actives.length) {
51
- hasData = actives.data('collapse')
52
- actives.collapse('hide')
53
- hasData || actives.data('collapse', null)
54
- }
55
 
56
- this.$element[dimension](0)
57
- this.transition('addClass', 'show', 'shown')
58
- this.$element[dimension](this.$element[0][scroll])
59
 
60
- }
 
 
 
 
 
61
 
62
- , hide: function () {
63
- var dimension = this.dimension()
64
- this.reset(this.$element[dimension]())
65
- this.transition('removeClass', 'hide', 'hidden')
66
- this.$element[dimension](0)
67
- }
 
 
 
 
68
 
69
- , reset: function ( size ) {
70
- var dimension = this.dimension()
 
 
 
 
71
 
72
- this.$element
73
- .removeClass('collapse')
74
- [dimension](size || 'auto')
75
- [0].offsetWidth
 
 
 
 
 
 
 
 
76
 
77
- this.$element.addClass('collapse')
78
  }
79
 
80
- , transition: function ( method, startEvent, completeEvent ) {
81
- var that = this
82
- , complete = function () {
83
- if (startEvent == 'show') that.reset()
84
- that.$element.trigger(completeEvent)
85
- }
86
-
87
- this.$element
88
- .trigger(startEvent)
89
- [method]('in')
90
-
91
- $.support.transition && this.$element.hasClass('collapse') ?
92
- this.$element.one($.support.transition.end, complete) :
93
- complete()
94
- }
95
-
96
- , toggle: function () {
97
- this[this.$element.hasClass('in') ? 'hide' : 'show']()
98
- }
99
-
100
- }
101
-
102
- /* COLLAPSIBLE PLUGIN DEFINITION
103
- * ============================== */
104
-
105
- $.fn.collapse = function ( option ) {
106
- return this.each(function () {
107
- var $this = $(this)
108
- , data = $this.data('collapse')
109
- , options = typeof option == 'object' && option
110
- if (!data) $this.data('collapse', (data = new Collapse(this, options)))
111
- if (typeof option == 'string') data[option]()
112
- })
113
- }
114
 
115
- $.fn.collapse.defaults = {
116
- toggle: true
117
- }
118
 
119
- $.fn.collapse.Constructor = Collapse
120
 
121
 
122
- /* COLLAPSIBLE DATA-API
123
- * ==================== */
124
 
125
- $(function () {
126
- $('body').on('click.collapse.data-api', '[data-toggle=collapse]', function ( e ) {
127
- var $this = $(this), href
128
- , target = $this.attr('data-target')
129
- || e.preventDefault()
130
- || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7
131
- , option = $(target).data('collapse') ? 'toggle' : $this.data()
132
- $(target).collapse(option)
 
133
  })
134
- })
135
 
136
- }( window.jQuery );
17
  * limitations under the License.
18
  * ============================================================ */
19
 
20
+ !function ($) {
21
 
22
+ "use strict"
23
 
24
+ var Collapse = function (element, options) {
25
+ this.$element = $(element)
26
+ this.options = $.extend({}, $.fn.collapse.defaults, options)
27
 
28
+ if (this.options["parent"]) {
29
+ this.$parent = $(this.options["parent"])
30
+ }
31
+
32
+ this.options.toggle && this.toggle()
33
  }
34
 
35
+ Collapse.prototype = {
 
36
 
37
+ constructor: Collapse
38
 
39
+ , dimension: function () {
40
+ var hasWidth = this.$element.hasClass('width')
41
+ return hasWidth ? 'width' : 'height'
42
+ }
43
 
44
+ , show: function () {
45
+ var dimension = this.dimension()
46
+ , scroll = $.camelCase(['scroll', dimension].join('-'))
47
+ , actives = this.$parent && this.$parent.find('.in')
48
+ , hasData
49
 
50
+ if (actives && actives.length) {
51
+ hasData = actives.data('collapse')
52
+ actives.collapse('hide')
53
+ hasData || actives.data('collapse', null)
54
+ }
55
 
56
+ this.$element[dimension](0)
57
+ this.transition('addClass', 'show', 'shown')
58
+ this.$element[dimension](this.$element[0][scroll])
 
 
59
 
60
+ }
 
 
61
 
62
+ , hide: function () {
63
+ var dimension = this.dimension()
64
+ this.reset(this.$element[dimension]())
65
+ this.transition('removeClass', 'hide', 'hidden')
66
+ this.$element[dimension](0)
67
+ }
68
 
69
+ , reset: function (size) {
70
+ var dimension = this.dimension()
71
+
72
+ this.$element
73
+ .removeClass('collapse')
74
+ [dimension](size || 'auto')
75
+ [0].offsetWidth
76
+
77
+ this.$element.addClass('collapse')
78
+ }
79
 
80
+ , transition: function (method, startEvent, completeEvent) {
81
+ var that = this
82
+ , complete = function () {
83
+ if (startEvent == 'show') that.reset()
84
+ that.$element.trigger(completeEvent)
85
+ }
86
 
87
+ this.$element
88
+ .trigger(startEvent)
89
+ [method]('in')
90
+
91
+ $.support.transition && this.$element.hasClass('collapse') ?
92
+ this.$element.one($.support.transition.end, complete) :
93
+ complete()
94
+ }
95
+
96
+ , toggle: function () {
97
+ this[this.$element.hasClass('in') ? 'hide' : 'show']()
98
+ }
99
 
 
100
  }
101
 
102
+ /* COLLAPSIBLE PLUGIN DEFINITION
103
+ * ============================== */
104
+
105
+ $.fn.collapse = function (option) {
106
+ return this.each(function () {
107
+ var $this = $(this)
108
+ , data = $this.data('collapse')
109
+ , options = typeof option == 'object' && option
110
+ if (!data) $this.data('collapse', (data = new Collapse(this, options)))
111
+ if (typeof option == 'string') data[option]()
112
+ })
113
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
114
 
115
+ $.fn.collapse.defaults = {
116
+ toggle: true
117
+ }
118
 
119
+ $.fn.collapse.Constructor = Collapse
120
 
121
 
122
+ /* COLLAPSIBLE DATA-API
123
+ * ==================== */
124
 
125
+ $(function () {
126
+ $('body').on('click.collapse.data-api', '[data-toggle=collapse]', function (e) {
127
+ var $this = $(this), href
128
+ , target = $this.attr('data-target')
129
+ || e.preventDefault()
130
+ || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7
131
+ , option = $(target).data('collapse') ? 'toggle' : $this.data()
132
+ $(target).collapse(option)
133
+ })
134
  })
 
135
 
136
+ }(window.jQuery);
js/bootstrap.min.js CHANGED
@@ -1,6 +1,603 @@
1
  /**
2
- * bootstrap.js v3.0.0 by @fat and @mdo
3
- * Copyright 2013 Twitter Inc.
4
- * http://www.apache.org/licenses/LICENSE-2.0
5
- */
6
- if(!jQuery)throw new Error("Bootstrap requires jQuery");+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]}}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one(a.support.transition.end,function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b()})}(window.jQuery),+function(a){"use strict";var b='[data-dismiss="alert"]',c=function(c){a(c).on("click",b,this.close)};c.prototype.close=function(b){function c(){f.trigger("closed.bs.alert").remove()}var d=a(this),e=d.attr("data-target");e||(e=d.attr("href"),e=e&&e.replace(/.*(?=#[^\s]*$)/,""));var f=a(e);b&&b.preventDefault(),f.length||(f=d.hasClass("alert")?d:d.parent()),f.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(f.removeClass("in"),a.support.transition&&f.hasClass("fade")?f.one(a.support.transition.end,c).emulateTransitionEnd(150):c())};var d=a.fn.alert;a.fn.alert=function(b){return this.each(function(){var d=a(this),e=d.data("bs.alert");e||d.data("bs.alert",e=new c(this)),"string"==typeof b&&e[b].call(d)})},a.fn.alert.Constructor=c,a.fn.alert.noConflict=function(){return a.fn.alert=d,this},a(document).on("click.bs.alert.data-api",b,c.prototype.close)}(window.jQuery),+function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d)};b.DEFAULTS={loadingText:"loading..."},b.prototype.setState=function(a){var b="disabled",c=this.$element,d=c.is("input")?"val":"html",e=c.data();a+="Text",e.resetText||c.data("resetText",c[d]()),c[d](e[a]||this.options[a]),setTimeout(function(){"loadingText"==a?c.addClass(b).attr(b,b):c.removeClass(b).removeAttr(b)},0)},b.prototype.toggle=function(){var a=this.$element.closest('[data-toggle="buttons"]');if(a.length){var b=this.$element.find("input").prop("checked",!this.$element.hasClass("active")).trigger("change");"radio"===b.prop("type")&&a.find(".active").removeClass("active")}this.$element.toggleClass("active")};var c=a.fn.button;a.fn.button=function(c){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof c&&c;e||d.data("bs.button",e=new b(this,f)),"toggle"==c?e.toggle():c&&e.setState(c)})},a.fn.button.Constructor=b,a.fn.button.noConflict=function(){return a.fn.button=c,this},a(document).on("click.bs.button.data-api","[data-toggle^=button]",function(b){var c=a(b.target);c.hasClass("btn")||(c=c.closest(".btn")),c.button("toggle"),b.preventDefault()})}(window.jQuery),+function(a){"use strict";var b=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=this.sliding=this.interval=this.$active=this.$items=null,"hover"==this.options.pause&&this.$element.on("mouseenter",a.proxy(this.pause,this)).on("mouseleave",a.proxy(this.cycle,this))};b.DEFAULTS={interval:5e3,pause:"hover",wrap:!0},b.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},b.prototype.getActiveIndex=function(){return this.$active=this.$element.find(".item.active"),this.$items=this.$active.parent().children(),this.$items.index(this.$active)},b.prototype.to=function(b){var c=this,d=this.getActiveIndex();return b>this.$items.length-1||0>b?void 0:this.sliding?this.$element.one("slid",function(){c.to(b)}):d==b?this.pause().cycle():this.slide(b>d?"next":"prev",a(this.$items[b]))},b.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition.end&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},b.prototype.next=function(){return this.sliding?void 0:this.slide("next")},b.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},b.prototype.slide=function(b,c){var d=this.$element.find(".item.active"),e=c||d[b](),f=this.interval,g="next"==b?"left":"right",h="next"==b?"first":"last",i=this;if(!e.length){if(!this.options.wrap)return;e=this.$element.find(".item")[h]()}this.sliding=!0,f&&this.pause();var j=a.Event("slide.bs.carousel",{relatedTarget:e[0],direction:g});if(!e.hasClass("active")){if(this.$indicators.length&&(this.$indicators.find(".active").removeClass("active"),this.$element.one("slid",function(){var b=a(i.$indicators.children()[i.getActiveIndex()]);b&&b.addClass("active")})),a.support.transition&&this.$element.hasClass("slide")){if(this.$element.trigger(j),j.isDefaultPrevented())return;e.addClass(b),e[0].offsetWidth,d.addClass(g),e.addClass(g),d.one(a.support.transition.end,function(){e.removeClass([b,g].join(" ")).addClass("active"),d.removeClass(["active",g].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger("slid")},0)}).emulateTransitionEnd(600)}else{if(this.$element.trigger(j),j.isDefaultPrevented())return;d.removeClass("active"),e.addClass("active"),this.sliding=!1,this.$element.trigger("slid")}return f&&this.cycle(),this}};var c=a.fn.carousel;a.fn.carousel=function(c){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},b.DEFAULTS,d.data(),"object"==typeof c&&c),g="string"==typeof c?c:f.slide;e||d.data("bs.carousel",e=new b(this,f)),"number"==typeof c?e.to(c):g?e[g]():f.interval&&e.pause().cycle()})},a.fn.carousel.Constructor=b,a.fn.carousel.noConflict=function(){return a.fn.carousel=c,this},a(document).on("click.bs.carousel.data-api","[data-slide], [data-slide-to]",function(b){var c,d=a(this),e=a(d.attr("data-target")||(c=d.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"")),f=a.extend({},e.data(),d.data()),g=d.attr("data-slide-to");g&&(f.interval=!1),e.carousel(f),(g=d.attr("data-slide-to"))&&e.data("bs.carousel").to(g),b.preventDefault()}),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var b=a(this);b.carousel(b.data())})})}(window.jQuery),+function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d),this.transitioning=null,this.options.parent&&(this.$parent=a(this.options.parent)),this.options.toggle&&this.toggle()};b.DEFAULTS={toggle:!0},b.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},b.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b=a.Event("show.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.$parent&&this.$parent.find("> .panel > .in");if(c&&c.length){var d=c.data("bs.collapse");if(d&&d.transitioning)return;c.collapse("hide"),d||c.data("bs.collapse",null)}var e=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[e](0),this.transitioning=1;var f=function(){this.$element.removeClass("collapsing").addClass("in")[e]("auto"),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return f.call(this);var g=a.camelCase(["scroll",e].join("-"));this.$element.one(a.support.transition.end,a.proxy(f,this)).emulateTransitionEnd(350)[e](this.$element[0][g])}}},b.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse").removeClass("in"),this.transitioning=1;var d=function(){this.transitioning=0,this.$element.trigger("hidden.bs.collapse").removeClass("collapsing").addClass("collapse")};return a.support.transition?(this.$element[c](0).one(a.support.transition.end,a.proxy(d,this)).emulateTransitionEnd(350),void 0):d.call(this)}}},b.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()};var c=a.fn.collapse;a.fn.collapse=function(c){return this.each(function(){var d=a(this),e=d.data("bs.collapse"),f=a.extend({},b.DEFAULTS,d.data(),"object"==typeof c&&c);e||d.data("bs.collapse",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.collapse.Constructor=b,a.fn.collapse.noConflict=function(){return a.fn.collapse=c,this},a(document).on("click.bs.collapse.data-api","[data-toggle=collapse]",function(b){var c,d=a(this),e=d.attr("data-target")||b.preventDefault()||(c=d.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,""),f=a(e),g=f.data("bs.collapse"),h=g?"toggle":d.data(),i=d.attr("data-parent"),j=i&&a(i);g&&g.transitioning||(j&&j.find('[data-toggle=collapse][data-parent="'+i+'"]').not(d).addClass("collapsed"),d[f.hasClass("in")?"addClass":"removeClass"]("collapsed")),f.collapse(h)})}(window.jQuery),+function(a){"use strict";function b(){a(d).remove(),a(e).each(function(b){var d=c(a(this));d.hasClass("open")&&(d.trigger(b=a.Event("hide.bs.dropdown")),b.isDefaultPrevented()||d.removeClass("open").trigger("hidden.bs.dropdown"))})}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}var d=".dropdown-backdrop",e="[data-toggle=dropdown]",f=function(b){a(b).on("click.bs.dropdown",this.toggle)};f.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){if("ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a('<div class="dropdown-backdrop"/>').insertAfter(a(this)).on("click",b),f.trigger(d=a.Event("show.bs.dropdown")),d.isDefaultPrevented())return;f.toggleClass("open").trigger("shown.bs.dropdown"),e.focus()}return!1}},f.prototype.keydown=function(b){if(/(38|40|27)/.test(b.keyCode)){var d=a(this);if(b.preventDefault(),b.stopPropagation(),!d.is(".disabled, :disabled")){var f=c(d),g=f.hasClass("open");if(!g||g&&27==b.keyCode)return 27==b.which&&f.find(e).focus(),d.click();var h=a("[role=menu] li:not(.divider):visible a",f);if(h.length){var i=h.index(h.filter(":focus"));38==b.keyCode&&i>0&&i--,40==b.keyCode&&i<h.length-1&&i++,~i||(i=0),h.eq(i).focus()}}}};var g=a.fn.dropdown;a.fn.dropdown=function(b){return this.each(function(){var c=a(this),d=c.data("dropdown");d||c.data("dropdown",d=new f(this)),"string"==typeof b&&d[b].call(c)})},a.fn.dropdown.Constructor=f,a.fn.dropdown.noConflict=function(){return a.fn.dropdown=g,this},a(document).on("click.bs.dropdown.data-api",b).on("click.bs.dropdown.data-api",".dropdown form",function(a){a.stopPropagation()}).on("click.bs.dropdown.data-api",e,f.prototype.toggle).on("keydown.bs.dropdown.data-api",e+", [role=menu]",f.prototype.keydown)}(window.jQuery),+function(a){"use strict";var b=function(b,c){this.options=c,this.$element=a(b),this.$backdrop=this.isShown=null,this.options.remote&&this.$element.load(this.options.remote)};b.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},b.prototype.toggle=function(a){return this[this.isShown?"hide":"show"](a)},b.prototype.show=function(b){var c=this,d=a.Event("show.bs.modal",{relatedTarget:b});this.$element.trigger(d),this.isShown||d.isDefaultPrevented()||(this.isShown=!0,this.escape(),this.$element.on("click.dismiss.modal",'[data-dismiss="modal"]',a.proxy(this.hide,this)),this.backdrop(function(){var d=a.support.transition&&c.$element.hasClass("fade");c.$element.parent().length||c.$element.appendTo(document.body),c.$element.show(),d&&c.$element[0].offsetWidth,c.$element.addClass("in").attr("aria-hidden",!1),c.enforceFocus();var e=a.Event("shown.bs.modal",{relatedTarget:b});d?c.$element.find(".modal-dialog").one(a.support.transition.end,function(){c.$element.focus().trigger(e)}).emulateTransitionEnd(300):c.$element.focus().trigger(e)}))},b.prototype.hide=function(b){b&&b.preventDefault(),b=a.Event("hide.bs.modal"),this.$element.trigger(b),this.isShown&&!b.isDefaultPrevented()&&(this.isShown=!1,this.escape(),a(document).off("focusin.bs.modal"),this.$element.removeClass("in").attr("aria-hidden",!0).off("click.dismiss.modal"),a.support.transition&&this.$element.hasClass("fade")?this.$element.one(a.support.transition.end,a.proxy(this.hideModal,this)).emulateTransitionEnd(300):this.hideModal())},b.prototype.enforceFocus=function(){a(document).off("focusin.bs.modal").on("focusin.bs.modal",a.proxy(function(a){this.$element[0]===a.target||this.$element.has(a.target).length||this.$element.focus()},this))},b.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keyup.dismiss.bs.modal",a.proxy(function(a){27==a.which&&this.hide()},this)):this.isShown||this.$element.off("keyup.dismiss.bs.modal")},b.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.removeBackdrop(),a.$element.trigger("hidden.bs.modal")})},b.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},b.prototype.backdrop=function(b){var c=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var d=a.support.transition&&c;if(this.$backdrop=a('<div class="modal-backdrop '+c+'" />').appendTo(document.body),this.$element.on("click.dismiss.modal",a.proxy(function(a){a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus.call(this.$element[0]):this.hide.call(this))},this)),d&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!b)return;d?this.$backdrop.one(a.support.transition.end,b).emulateTransitionEnd(150):b()}else!this.isShown&&this.$backdrop?(this.$backdrop.removeClass("in"),a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one(a.support.transition.end,b).emulateTransitionEnd(150):b()):b&&b()};var c=a.fn.modal;a.fn.modal=function(c,d){return this.each(function(){var e=a(this),f=e.data("bs.modal"),g=a.extend({},b.DEFAULTS,e.data(),"object"==typeof c&&c);f||e.data("bs.modal",f=new b(this,g)),"string"==typeof c?f[c](d):g.show&&f.show(d)})},a.fn.modal.Constructor=b,a.fn.modal.noConflict=function(){return a.fn.modal=c,this},a(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(b){var c=a(this),d=c.attr("href"),e=a(c.attr("data-target")||d&&d.replace(/.*(?=#[^\s]+$)/,"")),f=e.data("modal")?"toggle":a.extend({remote:!/#/.test(d)&&d},e.data(),c.data());b.preventDefault(),e.modal(f,this).one("hide",function(){c.is(":visible")&&c.focus()})}),a(document).on("show.bs.modal",".modal",function(){a(document.body).addClass("modal-open")}).on("hidden.bs.modal",".modal",function(){a(document.body).removeClass("modal-open")})}(window.jQuery),+function(a){"use strict";var b=function(a,b){this.type=this.options=this.enabled=this.timeout=this.hoverState=this.$element=null,this.init("tooltip",a,b)};b.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1},b.prototype.init=function(b,c,d){this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d);for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focus",i="hover"==g?"mouseleave":"blur";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},b.prototype.getDefaults=function(){return b.DEFAULTS},b.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},b.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},b.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs."+this.type);return clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show),void 0):c.show()},b.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs."+this.type);return clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide),void 0):c.hide()},b.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){if(this.$element.trigger(b),b.isDefaultPrevented())return;var c=this.tip();this.setContent(),this.options.animation&&c.addClass("fade");var d="function"==typeof this.options.placement?this.options.placement.call(this,c[0],this.$element[0]):this.options.placement,e=/\s?auto?\s?/i,f=e.test(d);f&&(d=d.replace(e,"")||"top"),c.detach().css({top:0,left:0,display:"block"}).addClass(d),this.options.container?c.appendTo(this.options.container):c.insertAfter(this.$element);var g=this.getPosition(),h=c[0].offsetWidth,i=c[0].offsetHeight;if(f){var j=this.$element.parent(),k=d,l=document.documentElement.scrollTop||document.body.scrollTop,m="body"==this.options.container?window.innerWidth:j.outerWidth(),n="body"==this.options.container?window.innerHeight:j.outerHeight(),o="body"==this.options.container?0:j.offset().left;d="bottom"==d&&g.top+g.height+i-l>n?"top":"top"==d&&g.top-l-i<0?"bottom":"right"==d&&g.right+h>m?"left":"left"==d&&g.left-h<o?"right":d,c.removeClass(k).addClass(d)}var p=this.getCalculatedOffset(d,g,h,i);this.applyPlacement(p,d),this.$element.trigger("shown.bs."+this.type)}},b.prototype.applyPlacement=function(a,b){var c,d=this.tip(),e=d[0].offsetWidth,f=d[0].offsetHeight,g=parseInt(d.css("margin-top"),10),h=parseInt(d.css("margin-left"),10);isNaN(g)&&(g=0),isNaN(h)&&(h=0),a.top=a.top+g,a.left=a.left+h,d.offset(a).addClass("in");var i=d[0].offsetWidth,j=d[0].offsetHeight;if("top"==b&&j!=f&&(c=!0,a.top=a.top+f-j),/bottom|top/.test(b)){var k=0;a.left<0&&(k=-2*a.left,a.left=0,d.offset(a),i=d[0].offsetWidth,j=d[0].offsetHeight),this.replaceArrow(k-e+i,i,"left")}else this.replaceArrow(j-f,j,"top");c&&d.offset(a)},b.prototype.replaceArrow=function(a,b,c){this.arrow().css(c,a?50*(1-a/b)+"%":"")},b.prototype.setContent=function(){var a=this.tip(),b=this.getTitle();a.find(".tooltip-inner")[this.options.html?"html":"text"](b),a.removeClass("fade in top bottom left right")},b.prototype.hide=function(){function b(){"in"!=c.hoverState&&d.detach()}var c=this,d=this.tip(),e=a.Event("hide.bs."+this.type);return this.$element.trigger(e),e.isDefaultPrevented()?void 0:(d.removeClass("in"),a.support.transition&&this.$tip.hasClass("fade")?d.one(a.support.transition.end,b).emulateTransitionEnd(150):b(),this.$element.trigger("hidden.bs."+this.type),this)},b.prototype.fixTitle=function(){var a=this.$element;(a.attr("title")||"string"!=typeof a.attr("data-original-title"))&&a.attr("data-original-title",a.attr("title")||"").attr("title","")},b.prototype.hasContent=function(){return this.getTitle()},b.prototype.getPosition=function(){var b=this.$element[0];return a.extend({},"function"==typeof b.getBoundingClientRect?b.getBoundingClientRect():{width:b.offsetWidth,height:b.offsetHeight},this.$element.offset())},b.prototype.getCalculatedOffset=function(a,b,c,d){return"bottom"==a?{top:b.top+b.height,left:b.left+b.width/2-c/2}:"top"==a?{top:b.top-d,left:b.left+b.width/2-c/2}:"left"==a?{top:b.top+b.height/2-d/2,left:b.left-c}:{top:b.top+b.height/2-d/2,left:b.left+b.width}},b.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},b.prototype.tip=function(){return this.$tip=this.$tip||a(this.options.template)},b.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},b.prototype.validate=function(){this.$element[0].parentNode||(this.hide(),this.$element=null,this.options=null)},b.prototype.enable=function(){this.enabled=!0},b.prototype.disable=function(){this.enabled=!1},b.prototype.toggleEnabled=function(){this.enabled=!this.enabled},b.prototype.toggle=function(b){var c=b?a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs."+this.type):this;c.tip().hasClass("in")?c.leave(c):c.enter(c)},b.prototype.destroy=function(){this.hide().$element.off("."+this.type).removeData("bs."+this.type)};var c=a.fn.tooltip;a.fn.tooltip=function(c){return this.each(function(){var d=a(this),e=d.data("bs.tooltip"),f="object"==typeof c&&c;e||d.data("bs.tooltip",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.tooltip.Constructor=b,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=c,this}}(window.jQuery),+function(a){"use strict";var b=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");b.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:'<div class="popover"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),b.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),b.prototype.constructor=b,b.prototype.getDefaults=function(){return b.DEFAULTS},b.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content")[this.options.html?"html":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},b.prototype.hasContent=function(){return this.getTitle()||this.getContent()},b.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},b.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")},b.prototype.tip=function(){return this.$tip||(this.$tip=a(this.options.template)),this.$tip};var c=a.fn.popover;a.fn.popover=function(c){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof c&&c;e||d.data("bs.popover",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.popover.Constructor=b,a.fn.popover.noConflict=function(){return a.fn.popover=c,this}}(window.jQuery),+function(a){"use strict";function b(c,d){var e,f=a.proxy(this.process,this);this.$element=a(c).is("body")?a(window):a(c),this.$body=a("body"),this.$scrollElement=this.$element.on("scroll.bs.scroll-spy.data-api",f),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||(e=a(c).attr("href"))&&e.replace(/.*(?=#[^\s]+$)/,"")||"")+" .nav li > a",this.offsets=a([]),this.targets=a([]),this.activeTarget=null,this.refresh(),this.process()}b.DEFAULTS={offset:10},b.prototype.refresh=function(){var b=this.$element[0]==window?"offset":"position";this.offsets=a([]),this.targets=a([]);var c=this;this.$body.find(this.selector).map(function(){var d=a(this),e=d.data("target")||d.attr("href"),f=/^#\w/.test(e)&&a(e);return f&&f.length&&[[f[b]().top+(!a.isWindow(c.$scrollElement.get(0))&&c.$scrollElement.scrollTop()),e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){c.offsets.push(this[0]),c.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.$scrollElement[0].scrollHeight||this.$body[0].scrollHeight,d=c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(b>=d)return g!=(a=f.last()[0])&&this.activate(a);for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(!e[a+1]||b<=e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){this.activeTarget=b,a(this.selector).parents(".active").removeClass("active");var c=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),d.trigger("activate")};var c=a.fn.scrollspy;a.fn.scrollspy=function(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=c,this},a(window).on("load",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);b.scrollspy(b.data())})})}(window.jQuery),+function(a){"use strict";var b=function(b){this.element=a(b)};b.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.attr("data-target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){var e=c.find(".active:last a")[0],f=a.Event("show.bs.tab",{relatedTarget:e});if(b.trigger(f),!f.isDefaultPrevented()){var g=a(d);this.activate(b.parent("li"),c),this.activate(g,g.parent(),function(){b.trigger({type:"shown.bs.tab",relatedTarget:e})})}}},b.prototype.activate=function(b,c,d){function e(){f.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),b.addClass("active"),g?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active"),d&&d()}var f=c.find("> .active"),g=d&&a.support.transition&&f.hasClass("fade");g?f.one(a.support.transition.end,e).emulateTransitionEnd(150):e(),f.removeClass("in")};var c=a.fn.tab;a.fn.tab=function(c){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new b(this)),"string"==typeof c&&e[c]()})},a.fn.tab.Constructor=b,a.fn.tab.noConflict=function(){return a.fn.tab=c,this},a(document).on("click.bs.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(b){b.preventDefault(),a(this).tab("show")})}(window.jQuery),+function(a){"use strict";var b=function(c,d){this.options=a.extend({},b.DEFAULTS,d),this.$window=a(window).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(c),this.affixed=this.unpin=null,this.checkPosition()};b.RESET="affix affix-top affix-bottom",b.DEFAULTS={offset:0},b.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},b.prototype.checkPosition=function(){if(this.$element.is(":visible")){var c=a(document).height(),d=this.$window.scrollTop(),e=this.$element.offset(),f=this.options.offset,g=f.top,h=f.bottom;"object"!=typeof f&&(h=g=f),"function"==typeof g&&(g=f.top()),"function"==typeof h&&(h=f.bottom());var i=null!=this.unpin&&d+this.unpin<=e.top?!1:null!=h&&e.top+this.$element.height()>=c-h?"bottom":null!=g&&g>=d?"top":!1;this.affixed!==i&&(this.unpin&&this.$element.css("top",""),this.affixed=i,this.unpin="bottom"==i?e.top-d:null,this.$element.removeClass(b.RESET).addClass("affix"+(i?"-"+i:"")),"bottom"==i&&this.$element.offset({top:document.body.offsetHeight-h-this.$element.height()}))}};var c=a.fn.affix;a.fn.affix=function(c){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof c&&c;e||d.data("bs.affix",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.affix.Constructor=b,a.fn.affix.noConflict=function(){return a.fn.affix=c,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var b=a(this),c=b.data();c.offset=c.offset||{},c.offsetBottom&&(c.offset.bottom=c.offsetBottom),c.offsetTop&&(c.offset.top=c.offsetTop),b.affix(c)})})}(window.jQuery);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  /**
2
+ * bootstrap.js v3.0.0 by @fat and @mdo
3
+ * Copyright 2013 Twitter Inc.
4
+ * http://www.apache.org/licenses/LICENSE-2.0
5
+ */
6
+ if (!jQuery)throw new Error("Bootstrap requires jQuery");
7
+ +function (a) {
8
+ "use strict";
9
+ function b() {
10
+ var a = document.createElement("bootstrap"), b = {
11
+ WebkitTransition: "webkitTransitionEnd",
12
+ MozTransition: "transitionend",
13
+ OTransition: "oTransitionEnd otransitionend",
14
+ transition: "transitionend"
15
+ };
16
+ for (var c in b)if (void 0 !== a.style[c])return {end: b[c]}
17
+ }
18
+
19
+ a.fn.emulateTransitionEnd = function (b) {
20
+ var c = !1, d = this;
21
+ a(this).one(a.support.transition.end, function () {
22
+ c = !0
23
+ });
24
+ var e = function () {
25
+ c || a(d).trigger(a.support.transition.end)
26
+ };
27
+ return setTimeout(e, b), this
28
+ }, a(function () {
29
+ a.support.transition = b()
30
+ })
31
+ }(window.jQuery), +function (a) {
32
+ "use strict";
33
+ var b = '[data-dismiss="alert"]', c = function (c) {
34
+ a(c).on("click", b, this.close)
35
+ };
36
+ c.prototype.close = function (b) {
37
+ function c() {
38
+ f.trigger("closed.bs.alert").remove()
39
+ }
40
+
41
+ var d = a(this), e = d.attr("data-target");
42
+ e || (e = d.attr("href"), e = e && e.replace(/.*(?=#[^\s]*$)/, ""));
43
+ var f = a(e);
44
+ b && b.preventDefault(), f.length || (f = d.hasClass("alert") ? d : d.parent()), f.trigger(b = a.Event("close.bs.alert")), b.isDefaultPrevented() || (f.removeClass("in"), a.support.transition && f.hasClass("fade") ? f.one(a.support.transition.end, c).emulateTransitionEnd(150) : c())
45
+ };
46
+ var d = a.fn.alert;
47
+ a.fn.alert = function (b) {
48
+ return this.each(function () {
49
+ var d = a(this), e = d.data("bs.alert");
50
+ e || d.data("bs.alert", e = new c(this)), "string" == typeof b && e[b].call(d)
51
+ })
52
+ }, a.fn.alert.Constructor = c, a.fn.alert.noConflict = function () {
53
+ return a.fn.alert = d, this
54
+ }, a(document).on("click.bs.alert.data-api", b, c.prototype.close)
55
+ }(window.jQuery), +function (a) {
56
+ "use strict";
57
+ var b = function (c, d) {
58
+ this.$element = a(c), this.options = a.extend({}, b.DEFAULTS, d)
59
+ };
60
+ b.DEFAULTS = {loadingText: "loading..."}, b.prototype.setState = function (a) {
61
+ var b = "disabled", c = this.$element, d = c.is("input") ? "val" : "html", e = c.data();
62
+ a += "Text", e.resetText || c.data("resetText", c[d]()), c[d](e[a] || this.options[a]), setTimeout(function () {
63
+ "loadingText" == a ? c.addClass(b).attr(b, b) : c.removeClass(b).removeAttr(b)
64
+ }, 0)
65
+ }, b.prototype.toggle = function () {
66
+ var a = this.$element.closest('[data-toggle="buttons"]');
67
+ if (a.length) {
68
+ var b = this.$element.find("input").prop("checked", !this.$element.hasClass("active")).trigger("change");
69
+ "radio" === b.prop("type") && a.find(".active").removeClass("active")
70
+ }
71
+ this.$element.toggleClass("active")
72
+ };
73
+ var c = a.fn.button;
74
+ a.fn.button = function (c) {
75
+ return this.each(function () {
76
+ var d = a(this), e = d.data("bs.button"), f = "object" == typeof c && c;
77
+ e || d.data("bs.button", e = new b(this, f)), "toggle" == c ? e.toggle() : c && e.setState(c)
78
+ })
79
+ }, a.fn.button.Constructor = b, a.fn.button.noConflict = function () {
80
+ return a.fn.button = c, this
81
+ }, a(document).on("click.bs.button.data-api", "[data-toggle^=button]", function (b) {
82
+ var c = a(b.target);
83
+ c.hasClass("btn") || (c = c.closest(".btn")), c.button("toggle"), b.preventDefault()
84
+ })
85
+ }(window.jQuery), +function (a) {
86
+ "use strict";
87
+ var b = function (b, c) {
88
+ this.$element = a(b), this.$indicators = this.$element.find(".carousel-indicators"), this.options = c, this.paused = this.sliding = this.interval = this.$active = this.$items = null, "hover" == this.options.pause && this.$element.on("mouseenter", a.proxy(this.pause, this)).on("mouseleave", a.proxy(this.cycle, this))
89
+ };
90
+ b.DEFAULTS = {interval: 5e3, pause: "hover", wrap: !0}, b.prototype.cycle = function (b) {
91
+ return b || (this.paused = !1), this.interval && clearInterval(this.interval), this.options.interval && !this.paused && (this.interval = setInterval(a.proxy(this.next, this), this.options.interval)), this
92
+ }, b.prototype.getActiveIndex = function () {
93
+ return this.$active = this.$element.find(".item.active"), this.$items = this.$active.parent().children(), this.$items.index(this.$active)
94
+ }, b.prototype.to = function (b) {
95
+ var c = this, d = this.getActiveIndex();
96
+ return b > this.$items.length - 1 || 0 > b ? void 0 : this.sliding ? this.$element.one("slid", function () {
97
+ c.to(b)
98
+ }) : d == b ? this.pause().cycle() : this.slide(b > d ? "next" : "prev", a(this.$items[b]))
99
+ }, b.prototype.pause = function (b) {
100
+ return b || (this.paused = !0), this.$element.find(".next, .prev").length && a.support.transition.end && (this.$element.trigger(a.support.transition.end), this.cycle(!0)), this.interval = clearInterval(this.interval), this
101
+ }, b.prototype.next = function () {
102
+ return this.sliding ? void 0 : this.slide("next")
103
+ }, b.prototype.prev = function () {
104
+ return this.sliding ? void 0 : this.slide("prev")
105
+ }, b.prototype.slide = function (b, c) {
106
+ var d = this.$element.find(".item.active"), e = c || d[b](), f = this.interval, g = "next" == b ? "left" : "right", h = "next" == b ? "first" : "last", i = this;
107
+ if (!e.length) {
108
+ if (!this.options.wrap)return;
109
+ e = this.$element.find(".item")[h]()
110
+ }
111
+ this.sliding = !0, f && this.pause();
112
+ var j = a.Event("slide.bs.carousel", {relatedTarget: e[0], direction: g});
113
+ if (!e.hasClass("active")) {
114
+ if (this.$indicators.length && (this.$indicators.find(".active").removeClass("active"), this.$element.one("slid", function () {
115
+ var b = a(i.$indicators.children()[i.getActiveIndex()]);
116
+ b && b.addClass("active")
117
+ })), a.support.transition && this.$element.hasClass("slide")) {
118
+ if (this.$element.trigger(j), j.isDefaultPrevented())return;
119
+ e.addClass(b), e[0].offsetWidth, d.addClass(g), e.addClass(g), d.one(a.support.transition.end, function () {
120
+ e.removeClass([b, g].join(" ")).addClass("active"), d.removeClass(["active", g].join(" ")), i.sliding = !1, setTimeout(function () {
121
+ i.$element.trigger("slid")
122
+ }, 0)
123
+ }).emulateTransitionEnd(600)
124
+ } else {
125
+ if (this.$element.trigger(j), j.isDefaultPrevented())return;
126
+ d.removeClass("active"), e.addClass("active"), this.sliding = !1, this.$element.trigger("slid")
127
+ }
128
+ return f && this.cycle(), this
129
+ }
130
+ };
131
+ var c = a.fn.carousel;
132
+ a.fn.carousel = function (c) {
133
+ return this.each(function () {
134
+ var d = a(this), e = d.data("bs.carousel"), f = a.extend({}, b.DEFAULTS, d.data(), "object" == typeof c && c), g = "string" == typeof c ? c : f.slide;
135
+ e || d.data("bs.carousel", e = new b(this, f)), "number" == typeof c ? e.to(c) : g ? e[g]() : f.interval && e.pause().cycle()
136
+ })
137
+ }, a.fn.carousel.Constructor = b, a.fn.carousel.noConflict = function () {
138
+ return a.fn.carousel = c, this
139
+ }, a(document).on("click.bs.carousel.data-api", "[data-slide], [data-slide-to]", function (b) {
140
+ var c, d = a(this), e = a(d.attr("data-target") || (c = d.attr("href")) && c.replace(/.*(?=#[^\s]+$)/, "")), f = a.extend({}, e.data(), d.data()), g = d.attr("data-slide-to");
141
+ g && (f.interval = !1), e.carousel(f), (g = d.attr("data-slide-to")) && e.data("bs.carousel").to(g), b.preventDefault()
142
+ }), a(window).on("load", function () {
143
+ a('[data-ride="carousel"]').each(function () {
144
+ var b = a(this);
145
+ b.carousel(b.data())
146
+ })
147
+ })
148
+ }(window.jQuery), +function (a) {
149
+ "use strict";
150
+ var b = function (c, d) {
151
+ this.$element = a(c), this.options = a.extend({}, b.DEFAULTS, d), this.transitioning = null, this.options.parent && (this.$parent = a(this.options.parent)), this.options.toggle && this.toggle()
152
+ };
153
+ b.DEFAULTS = {toggle: !0}, b.prototype.dimension = function () {
154
+ var a = this.$element.hasClass("width");
155
+ return a ? "width" : "height"
156
+ }, b.prototype.show = function () {
157
+ if (!this.transitioning && !this.$element.hasClass("in")) {
158
+ var b = a.Event("show.bs.collapse");
159
+ if (this.$element.trigger(b), !b.isDefaultPrevented()) {
160
+ var c = this.$parent && this.$parent.find("> .panel > .in");
161
+ if (c && c.length) {
162
+ var d = c.data("bs.collapse");
163
+ if (d && d.transitioning)return;
164
+ c.collapse("hide"), d || c.data("bs.collapse", null)
165
+ }
166
+ var e = this.dimension();
167
+ this.$element.removeClass("collapse").addClass("collapsing")[e](0), this.transitioning = 1;
168
+ var f = function () {
169
+ this.$element.removeClass("collapsing").addClass("in")[e]("auto"), this.transitioning = 0, this.$element.trigger("shown.bs.collapse")
170
+ };
171
+ if (!a.support.transition)return f.call(this);
172
+ var g = a.camelCase(["scroll", e].join("-"));
173
+ this.$element.one(a.support.transition.end, a.proxy(f, this)).emulateTransitionEnd(350)[e](this.$element[0][g])
174
+ }
175
+ }
176
+ }, b.prototype.hide = function () {
177
+ if (!this.transitioning && this.$element.hasClass("in")) {
178
+ var b = a.Event("hide.bs.collapse");
179
+ if (this.$element.trigger(b), !b.isDefaultPrevented()) {
180
+ var c = this.dimension();
181
+ this.$element[c](this.$element[c]())[0].offsetHeight, this.$element.addClass("collapsing").removeClass("collapse").removeClass("in"), this.transitioning = 1;
182
+ var d = function () {
183
+ this.transitioning = 0, this.$element.trigger("hidden.bs.collapse").removeClass("collapsing").addClass("collapse")
184
+ };
185
+ return a.support.transition ? (this.$element[c](0).one(a.support.transition.end, a.proxy(d, this)).emulateTransitionEnd(350), void 0) : d.call(this)
186
+ }
187
+ }
188
+ }, b.prototype.toggle = function () {
189
+ this[this.$element.hasClass("in") ? "hide" : "show"]()
190
+ };
191
+ var c = a.fn.collapse;
192
+ a.fn.collapse = function (c) {
193
+ return this.each(function () {
194
+ var d = a(this), e = d.data("bs.collapse"), f = a.extend({}, b.DEFAULTS, d.data(), "object" == typeof c && c);
195
+ e || d.data("bs.collapse", e = new b(this, f)), "string" == typeof c && e[c]()
196
+ })
197
+ }, a.fn.collapse.Constructor = b, a.fn.collapse.noConflict = function () {
198
+ return a.fn.collapse = c, this
199
+ }, a(document).on("click.bs.collapse.data-api", "[data-toggle=collapse]", function (b) {
200
+ var c, d = a(this), e = d.attr("data-target") || b.preventDefault() || (c = d.attr("href")) && c.replace(/.*(?=#[^\s]+$)/, ""), f = a(e), g = f.data("bs.collapse"), h = g ? "toggle" : d.data(), i = d.attr("data-parent"), j = i && a(i);
201
+ g && g.transitioning || (j && j.find('[data-toggle=collapse][data-parent="' + i + '"]').not(d).addClass("collapsed"), d[f.hasClass("in") ? "addClass" : "removeClass"]("collapsed")), f.collapse(h)
202
+ })
203
+ }(window.jQuery), +function (a) {
204
+ "use strict";
205
+ function b() {
206
+ a(d).remove(), a(e).each(function (b) {
207
+ var d = c(a(this));
208
+ d.hasClass("open") && (d.trigger(b = a.Event("hide.bs.dropdown")), b.isDefaultPrevented() || d.removeClass("open").trigger("hidden.bs.dropdown"))
209
+ })
210
+ }
211
+
212
+ function c(b) {
213
+ var c = b.attr("data-target");
214
+ c || (c = b.attr("href"), c = c && /#/.test(c) && c.replace(/.*(?=#[^\s]*$)/, ""));
215
+ var d = c && a(c);
216
+ return d && d.length ? d : b.parent()
217
+ }
218
+
219
+ var d = ".dropdown-backdrop", e = "[data-toggle=dropdown]", f = function (b) {
220
+ a(b).on("click.bs.dropdown", this.toggle)
221
+ };
222
+ f.prototype.toggle = function (d) {
223
+ var e = a(this);
224
+ if (!e.is(".disabled, :disabled")) {
225
+ var f = c(e), g = f.hasClass("open");
226
+ if (b(), !g) {
227
+ if ("ontouchstart" in document.documentElement && !f.closest(".navbar-nav").length && a('<div class="dropdown-backdrop"/>').insertAfter(a(this)).on("click", b), f.trigger(d = a.Event("show.bs.dropdown")), d.isDefaultPrevented())return;
228
+ f.toggleClass("open").trigger("shown.bs.dropdown"), e.focus()
229
+ }
230
+ return !1
231
+ }
232
+ }, f.prototype.keydown = function (b) {
233
+ if (/(38|40|27)/.test(b.keyCode)) {
234
+ var d = a(this);
235
+ if (b.preventDefault(), b.stopPropagation(), !d.is(".disabled, :disabled")) {
236
+ var f = c(d), g = f.hasClass("open");
237
+ if (!g || g && 27 == b.keyCode)return 27 == b.which && f.find(e).focus(), d.click();
238
+ var h = a("[role=menu] li:not(.divider):visible a", f);
239
+ if (h.length) {
240
+ var i = h.index(h.filter(":focus"));
241
+ 38 == b.keyCode && i > 0 && i--, 40 == b.keyCode && i < h.length - 1 && i++, ~i || (i = 0), h.eq(i).focus()
242
+ }
243
+ }
244
+ }
245
+ };
246
+ var g = a.fn.dropdown;
247
+ a.fn.dropdown = function (b) {
248
+ return this.each(function () {
249
+ var c = a(this), d = c.data("dropdown");
250
+ d || c.data("dropdown", d = new f(this)), "string" == typeof b && d[b].call(c)
251
+ })
252
+ }, a.fn.dropdown.Constructor = f, a.fn.dropdown.noConflict = function () {
253
+ return a.fn.dropdown = g, this
254
+ }, a(document).on("click.bs.dropdown.data-api", b).on("click.bs.dropdown.data-api", ".dropdown form", function (a) {
255
+ a.stopPropagation()
256
+ }).on("click.bs.dropdown.data-api", e, f.prototype.toggle).on("keydown.bs.dropdown.data-api", e + ", [role=menu]", f.prototype.keydown)
257
+ }(window.jQuery), +function (a) {
258
+ "use strict";
259
+ var b = function (b, c) {
260
+ this.options = c, this.$element = a(b), this.$backdrop = this.isShown = null, this.options.remote && this.$element.load(this.options.remote)
261
+ };
262
+ b.DEFAULTS = {backdrop: !0, keyboard: !0, show: !0}, b.prototype.toggle = function (a) {
263
+ return this[this.isShown ? "hide" : "show"](a)
264
+ }, b.prototype.show = function (b) {
265
+ var c = this, d = a.Event("show.bs.modal", {relatedTarget: b});
266
+ this.$element.trigger(d), this.isShown || d.isDefaultPrevented() || (this.isShown = !0, this.escape(), this.$element.on("click.dismiss.modal", '[data-dismiss="modal"]', a.proxy(this.hide, this)), this.backdrop(function () {
267
+ var d = a.support.transition && c.$element.hasClass("fade");
268
+ c.$element.parent().length || c.$element.appendTo(document.body), c.$element.show(), d && c.$element[0].offsetWidth, c.$element.addClass("in").attr("aria-hidden", !1), c.enforceFocus();
269
+ var e = a.Event("shown.bs.modal", {relatedTarget: b});
270
+ d ? c.$element.find(".modal-dialog").one(a.support.transition.end, function () {
271
+ c.$element.focus().trigger(e)
272
+ }).emulateTransitionEnd(300) : c.$element.focus().trigger(e)
273
+ }))
274
+ }, b.prototype.hide = function (b) {
275
+ b && b.preventDefault(), b = a.Event("hide.bs.modal"), this.$element.trigger(b), this.isShown && !b.isDefaultPrevented() && (this.isShown = !1, this.escape(), a(document).off("focusin.bs.modal"), this.$element.removeClass("in").attr("aria-hidden", !0).off("click.dismiss.modal"), a.support.transition && this.$element.hasClass("fade") ? this.$element.one(a.support.transition.end, a.proxy(this.hideModal, this)).emulateTransitionEnd(300) : this.hideModal())
276
+ }, b.prototype.enforceFocus = function () {
277
+ a(document).off("focusin.bs.modal").on("focusin.bs.modal", a.proxy(function (a) {
278
+ this.$element[0] === a.target || this.$element.has(a.target).length || this.$element.focus()
279
+ }, this))
280
+ }, b.prototype.escape = function () {
281
+ this.isShown && this.options.keyboard ? this.$element.on("keyup.dismiss.bs.modal", a.proxy(function (a) {
282
+ 27 == a.which && this.hide()
283
+ }, this)) : this.isShown || this.$element.off("keyup.dismiss.bs.modal")
284
+ }, b.prototype.hideModal = function () {
285
+ var a = this;
286
+ this.$element.hide(), this.backdrop(function () {
287
+ a.removeBackdrop(), a.$element.trigger("hidden.bs.modal")
288
+ })
289
+ }, b.prototype.removeBackdrop = function () {
290
+ this.$backdrop && this.$backdrop.remove(), this.$backdrop = null
291
+ }, b.prototype.backdrop = function (b) {
292
+ var c = this.$element.hasClass("fade") ? "fade" : "";
293
+ if (this.isShown && this.options.backdrop) {
294
+ var d = a.support.transition && c;
295
+ if (this.$backdrop = a('<div class="modal-backdrop ' + c + '" />').appendTo(document.body), this.$element.on("click.dismiss.modal", a.proxy(function (a) {
296
+ a.target === a.currentTarget && ("static" == this.options.backdrop ? this.$element[0].focus.call(this.$element[0]) : this.hide.call(this))
297
+ }, this)), d && this.$backdrop[0].offsetWidth, this.$backdrop.addClass("in"), !b)return;
298
+ d ? this.$backdrop.one(a.support.transition.end, b).emulateTransitionEnd(150) : b()
299
+ } else!this.isShown && this.$backdrop ? (this.$backdrop.removeClass("in"), a.support.transition && this.$element.hasClass("fade") ? this.$backdrop.one(a.support.transition.end, b).emulateTransitionEnd(150) : b()) : b && b()
300
+ };
301
+ var c = a.fn.modal;
302
+ a.fn.modal = function (c, d) {
303
+ return this.each(function () {
304
+ var e = a(this), f = e.data("bs.modal"), g = a.extend({}, b.DEFAULTS, e.data(), "object" == typeof c && c);
305
+ f || e.data("bs.modal", f = new b(this, g)), "string" == typeof c ? f[c](d) : g.show && f.show(d)
306
+ })
307
+ }, a.fn.modal.Constructor = b, a.fn.modal.noConflict = function () {
308
+ return a.fn.modal = c, this
309
+ }, a(document).on("click.bs.modal.data-api", '[data-toggle="modal"]', function (b) {
310
+ var c = a(this), d = c.attr("href"), e = a(c.attr("data-target") || d && d.replace(/.*(?=#[^\s]+$)/, "")), f = e.data("modal") ? "toggle" : a.extend({remote: !/#/.test(d) && d}, e.data(), c.data());
311
+ b.preventDefault(), e.modal(f, this).one("hide", function () {
312
+ c.is(":visible") && c.focus()
313
+ })
314
+ }), a(document).on("show.bs.modal", ".modal", function () {
315
+ a(document.body).addClass("modal-open")
316
+ }).on("hidden.bs.modal", ".modal", function () {
317
+ a(document.body).removeClass("modal-open")
318
+ })
319
+ }(window.jQuery), +function (a) {
320
+ "use strict";
321
+ var b = function (a, b) {
322
+ this.type = this.options = this.enabled = this.timeout = this.hoverState = this.$element = null, this.init("tooltip", a, b)
323
+ };
324
+ b.DEFAULTS = {
325
+ animation: !0,
326
+ placement: "top",
327
+ selector: !1,
328
+ template: '<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',
329
+ trigger: "hover focus",
330
+ title: "",
331
+ delay: 0,
332
+ html: !1,
333
+ container: !1
334
+ }, b.prototype.init = function (b, c, d) {
335
+ this.enabled = !0, this.type = b, this.$element = a(c), this.options = this.getOptions(d);
336
+ for (var e = this.options.trigger.split(" "), f = e.length; f--;) {
337
+ var g = e[f];
338
+ if ("click" == g)this.$element.on("click." + this.type, this.options.selector, a.proxy(this.toggle, this)); else if ("manual" != g) {
339
+ var h = "hover" == g ? "mouseenter" : "focus", i = "hover" == g ? "mouseleave" : "blur";
340
+ this.$element.on(h + "." + this.type, this.options.selector, a.proxy(this.enter, this)), this.$element.on(i + "." + this.type, this.options.selector, a.proxy(this.leave, this))
341
+ }
342
+ }
343
+ this.options.selector ? this._options = a.extend({}, this.options, {
344
+ trigger: "manual",
345
+ selector: ""
346
+ }) : this.fixTitle()
347
+ }, b.prototype.getDefaults = function () {
348
+ return b.DEFAULTS
349
+ }, b.prototype.getOptions = function (b) {
350
+ return b = a.extend({}, this.getDefaults(), this.$element.data(), b), b.delay && "number" == typeof b.delay && (b.delay = {
351
+ show: b.delay,
352
+ hide: b.delay
353
+ }), b
354
+ }, b.prototype.getDelegateOptions = function () {
355
+ var b = {}, c = this.getDefaults();
356
+ return this._options && a.each(this._options, function (a, d) {
357
+ c[a] != d && (b[a] = d)
358
+ }), b
359
+ }, b.prototype.enter = function (b) {
360
+ var c = b instanceof this.constructor ? b : a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs." + this.type);
361
+ return clearTimeout(c.timeout), c.hoverState = "in", c.options.delay && c.options.delay.show ? (c.timeout = setTimeout(function () {
362
+ "in" == c.hoverState && c.show()
363
+ }, c.options.delay.show), void 0) : c.show()
364
+ }, b.prototype.leave = function (b) {
365
+ var c = b instanceof this.constructor ? b : a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs." + this.type);
366
+ return clearTimeout(c.timeout), c.hoverState = "out", c.options.delay && c.options.delay.hide ? (c.timeout = setTimeout(function () {
367
+ "out" == c.hoverState && c.hide()
368
+ }, c.options.delay.hide), void 0) : c.hide()
369
+ }, b.prototype.show = function () {
370
+ var b = a.Event("show.bs." + this.type);
371
+ if (this.hasContent() && this.enabled) {
372
+ if (this.$element.trigger(b), b.isDefaultPrevented())return;
373
+ var c = this.tip();
374
+ this.setContent(), this.options.animation && c.addClass("fade");
375
+ var d = "function" == typeof this.options.placement ? this.options.placement.call(this, c[0], this.$element[0]) : this.options.placement, e = /\s?auto?\s?/i, f = e.test(d);
376
+ f && (d = d.replace(e, "") || "top"), c.detach().css({
377
+ top: 0,
378
+ left: 0,
379
+ display: "block"
380
+ }).addClass(d), this.options.container ? c.appendTo(this.options.container) : c.insertAfter(this.$element);
381
+ var g = this.getPosition(), h = c[0].offsetWidth, i = c[0].offsetHeight;
382
+ if (f) {
383
+ var j = this.$element.parent(), k = d, l = document.documentElement.scrollTop || document.body.scrollTop, m = "body" == this.options.container ? window.innerWidth : j.outerWidth(), n = "body" == this.options.container ? window.innerHeight : j.outerHeight(), o = "body" == this.options.container ? 0 : j.offset().left;
384
+ d = "bottom" == d && g.top + g.height + i - l > n ? "top" : "top" == d && g.top - l - i < 0 ? "bottom" : "right" == d && g.right + h > m ? "left" : "left" == d && g.left - h < o ? "right" : d, c.removeClass(k).addClass(d)
385
+ }
386
+ var p = this.getCalculatedOffset(d, g, h, i);
387
+ this.applyPlacement(p, d), this.$element.trigger("shown.bs." + this.type)
388
+ }
389
+ }, b.prototype.applyPlacement = function (a, b) {
390
+ var c, d = this.tip(), e = d[0].offsetWidth, f = d[0].offsetHeight, g = parseInt(d.css("margin-top"), 10), h = parseInt(d.css("margin-left"), 10);
391
+ isNaN(g) && (g = 0), isNaN(h) && (h = 0), a.top = a.top + g, a.left = a.left + h, d.offset(a).addClass("in");
392
+ var i = d[0].offsetWidth, j = d[0].offsetHeight;
393
+ if ("top" == b && j != f && (c = !0, a.top = a.top + f - j), /bottom|top/.test(b)) {
394
+ var k = 0;
395
+ a.left < 0 && (k = -2 * a.left, a.left = 0, d.offset(a), i = d[0].offsetWidth, j = d[0].offsetHeight), this.replaceArrow(k - e + i, i, "left")
396
+ } else this.replaceArrow(j - f, j, "top");
397
+ c && d.offset(a)
398
+ }, b.prototype.replaceArrow = function (a, b, c) {
399
+ this.arrow().css(c, a ? 50 * (1 - a / b) + "%" : "")
400
+ }, b.prototype.setContent = function () {
401
+ var a = this.tip(), b = this.getTitle();
402
+ a.find(".tooltip-inner")[this.options.html ? "html" : "text"](b), a.removeClass("fade in top bottom left right")
403
+ }, b.prototype.hide = function () {
404
+ function b() {
405
+ "in" != c.hoverState && d.detach()
406
+ }
407
+
408
+ var c = this, d = this.tip(), e = a.Event("hide.bs." + this.type);
409
+ return this.$element.trigger(e), e.isDefaultPrevented() ? void 0 : (d.removeClass("in"), a.support.transition && this.$tip.hasClass("fade") ? d.one(a.support.transition.end, b).emulateTransitionEnd(150) : b(), this.$element.trigger("hidden.bs." + this.type), this)
410
+ }, b.prototype.fixTitle = function () {
411
+ var a = this.$element;
412
+ (a.attr("title") || "string" != typeof a.attr("data-original-title")) && a.attr("data-original-title", a.attr("title") || "").attr("title", "")
413
+ }, b.prototype.hasContent = function () {
414
+ return this.getTitle()
415
+ }, b.prototype.getPosition = function () {
416
+ var b = this.$element[0];
417
+ return a.extend({}, "function" == typeof b.getBoundingClientRect ? b.getBoundingClientRect() : {
418
+ width: b.offsetWidth,
419
+ height: b.offsetHeight
420
+ }, this.$element.offset())
421
+ }, b.prototype.getCalculatedOffset = function (a, b, c, d) {
422
+ return "bottom" == a ? {
423
+ top: b.top + b.height,
424
+ left: b.left + b.width / 2 - c / 2
425
+ } : "top" == a ? {
426
+ top: b.top - d,
427
+ left: b.left + b.width / 2 - c / 2
428
+ } : "left" == a ? {top: b.top + b.height / 2 - d / 2, left: b.left - c} : {
429
+ top: b.top + b.height / 2 - d / 2,
430
+ left: b.left + b.width
431
+ }
432
+ }, b.prototype.getTitle = function () {
433
+ var a, b = this.$element, c = this.options;
434
+ return a = b.attr("data-original-title") || ("function" == typeof c.title ? c.title.call(b[0]) : c.title)
435
+ }, b.prototype.tip = function () {
436
+ return this.$tip = this.$tip || a(this.options.template)
437
+ }, b.prototype.arrow = function () {
438
+ return this.$arrow = this.$arrow || this.tip().find(".tooltip-arrow")
439
+ }, b.prototype.validate = function () {
440
+ this.$element[0].parentNode || (this.hide(), this.$element = null, this.options = null)
441
+ }, b.prototype.enable = function () {
442
+ this.enabled = !0
443
+ }, b.prototype.disable = function () {
444
+ this.enabled = !1
445
+ }, b.prototype.toggleEnabled = function () {
446
+ this.enabled = !this.enabled
447
+ }, b.prototype.toggle = function (b) {
448
+ var c = b ? a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs." + this.type) : this;
449
+ c.tip().hasClass("in") ? c.leave(c) : c.enter(c)
450
+ }, b.prototype.destroy = function () {
451
+ this.hide().$element.off("." + this.type).removeData("bs." + this.type)
452
+ };
453
+ var c = a.fn.tooltip;
454
+ a.fn.tooltip = function (c) {
455
+ return this.each(function () {
456
+ var d = a(this), e = d.data("bs.tooltip"), f = "object" == typeof c && c;
457
+ e || d.data("bs.tooltip", e = new b(this, f)), "string" == typeof c && e[c]()
458
+ })
459
+ }, a.fn.tooltip.Constructor = b, a.fn.tooltip.noConflict = function () {
460
+ return a.fn.tooltip = c, this
461
+ }
462
+ }(window.jQuery), +function (a) {
463
+ "use strict";
464
+ var b = function (a, b) {
465
+ this.init("popover", a, b)
466
+ };
467
+ if (!a.fn.tooltip)throw new Error("Popover requires tooltip.js");
468
+ b.DEFAULTS = a.extend({}, a.fn.tooltip.Constructor.DEFAULTS, {
469
+ placement: "right",
470
+ trigger: "click",
471
+ content: "",
472
+ template: '<div class="popover"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'
473
+ }), b.prototype = a.extend({}, a.fn.tooltip.Constructor.prototype), b.prototype.constructor = b, b.prototype.getDefaults = function () {
474
+ return b.DEFAULTS
475
+ }, b.prototype.setContent = function () {
476
+ var a = this.tip(), b = this.getTitle(), c = this.getContent();
477
+ a.find(".popover-title")[this.options.html ? "html" : "text"](b), a.find(".popover-content")[this.options.html ? "html" : "text"](c), a.removeClass("fade top bottom left right in"), a.find(".popover-title").html() || a.find(".popover-title").hide()
478
+ }, b.prototype.hasContent = function () {
479
+ return this.getTitle() || this.getContent()
480
+ }, b.prototype.getContent = function () {
481
+ var a = this.$element, b = this.options;
482
+ return a.attr("data-content") || ("function" == typeof b.content ? b.content.call(a[0]) : b.content)
483
+ }, b.prototype.arrow = function () {
484
+ return this.$arrow = this.$arrow || this.tip().find(".arrow")
485
+ }, b.prototype.tip = function () {
486
+ return this.$tip || (this.$tip = a(this.options.template)), this.$tip
487
+ };
488
+ var c = a.fn.popover;
489
+ a.fn.popover = function (c) {
490
+ return this.each(function () {
491
+ var d = a(this), e = d.data("bs.popover"), f = "object" == typeof c && c;
492
+ e || d.data("bs.popover", e = new b(this, f)), "string" == typeof c && e[c]()
493
+ })
494
+ }, a.fn.popover.Constructor = b, a.fn.popover.noConflict = function () {
495
+ return a.fn.popover = c, this
496
+ }
497
+ }(window.jQuery), +function (a) {
498
+ "use strict";
499
+ function b(c, d) {
500
+ var e, f = a.proxy(this.process, this);
501
+ this.$element = a(c).is("body") ? a(window) : a(c), this.$body = a("body"), this.$scrollElement = this.$element.on("scroll.bs.scroll-spy.data-api", f), this.options = a.extend({}, b.DEFAULTS, d), this.selector = (this.options.target || (e = a(c).attr("href")) && e.replace(/.*(?=#[^\s]+$)/, "") || "") + " .nav li > a", this.offsets = a([]), this.targets = a([]), this.activeTarget = null, this.refresh(), this.process()
502
+ }
503
+
504
+ b.DEFAULTS = {offset: 10}, b.prototype.refresh = function () {
505
+ var b = this.$element[0] == window ? "offset" : "position";
506
+ this.offsets = a([]), this.targets = a([]);
507
+ var c = this;
508
+ this.$body.find(this.selector).map(function () {
509
+ var d = a(this), e = d.data("target") || d.attr("href"), f = /^#\w/.test(e) && a(e);
510
+ return f && f.length && [[f[b]().top + (!a.isWindow(c.$scrollElement.get(0)) && c.$scrollElement.scrollTop()), e]] || null
511
+ }).sort(function (a, b) {
512
+ return a[0] - b[0]
513
+ }).each(function () {
514
+ c.offsets.push(this[0]), c.targets.push(this[1])
515
+ })
516
+ }, b.prototype.process = function () {
517
+ var a, b = this.$scrollElement.scrollTop() + this.options.offset, c = this.$scrollElement[0].scrollHeight || this.$body[0].scrollHeight, d = c - this.$scrollElement.height(), e = this.offsets, f = this.targets, g = this.activeTarget;
518
+ if (b >= d)return g != (a = f.last()[0]) && this.activate(a);
519
+ for (a = e.length; a--;)g != f[a] && b >= e[a] && (!e[a + 1] || b <= e[a + 1]) && this.activate(f[a])
520
+ }, b.prototype.activate = function (b) {
521
+ this.activeTarget = b, a(this.selector).parents(".active").removeClass("active");
522
+ var c = this.selector + '[data-target="' + b + '"],' + this.selector + '[href="' + b + '"]', d = a(c).parents("li").addClass("active");
523
+ d.parent(".dropdown-menu").length && (d = d.closest("li.dropdown").addClass("active")), d.trigger("activate")
524
+ };
525
+ var c = a.fn.scrollspy;
526
+ a.fn.scrollspy = function (c) {
527
+ return this.each(function () {
528
+ var d = a(this), e = d.data("bs.scrollspy"), f = "object" == typeof c && c;
529
+ e || d.data("bs.scrollspy", e = new b(this, f)), "string" == typeof c && e[c]()
530
+ })
531
+ }, a.fn.scrollspy.Constructor = b, a.fn.scrollspy.noConflict = function () {
532
+ return a.fn.scrollspy = c, this
533
+ }, a(window).on("load", function () {
534
+ a('[data-spy="scroll"]').each(function () {
535
+ var b = a(this);
536
+ b.scrollspy(b.data())
537
+ })
538
+ })
539
+ }(window.jQuery), +function (a) {
540
+ "use strict";
541
+ var b = function (b) {
542
+ this.element = a(b)
543
+ };
544
+ b.prototype.show = function () {
545
+ var b = this.element, c = b.closest("ul:not(.dropdown-menu)"), d = b.attr("data-target");
546
+ if (d || (d = b.attr("href"), d = d && d.replace(/.*(?=#[^\s]*$)/, "")), !b.parent("li").hasClass("active")) {
547
+ var e = c.find(".active:last a")[0], f = a.Event("show.bs.tab", {relatedTarget: e});
548
+ if (b.trigger(f), !f.isDefaultPrevented()) {
549
+ var g = a(d);
550
+ this.activate(b.parent("li"), c), this.activate(g, g.parent(), function () {
551
+ b.trigger({type: "shown.bs.tab", relatedTarget: e})
552
+ })
553
+ }
554
+ }
555
+ }, b.prototype.activate = function (b, c, d) {
556
+ function e() {
557
+ f.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"), b.addClass("active"), g ? (b[0].offsetWidth, b.addClass("in")) : b.removeClass("fade"), b.parent(".dropdown-menu") && b.closest("li.dropdown").addClass("active"), d && d()
558
+ }
559
+
560
+ var f = c.find("> .active"), g = d && a.support.transition && f.hasClass("fade");
561
+ g ? f.one(a.support.transition.end, e).emulateTransitionEnd(150) : e(), f.removeClass("in")
562
+ };
563
+ var c = a.fn.tab;
564
+ a.fn.tab = function (c) {
565
+ return this.each(function () {
566
+ var d = a(this), e = d.data("bs.tab");
567
+ e || d.data("bs.tab", e = new b(this)), "string" == typeof c && e[c]()
568
+ })
569
+ }, a.fn.tab.Constructor = b, a.fn.tab.noConflict = function () {
570
+ return a.fn.tab = c, this
571
+ }, a(document).on("click.bs.tab.data-api", '[data-toggle="tab"], [data-toggle="pill"]', function (b) {
572
+ b.preventDefault(), a(this).tab("show")
573
+ })
574
+ }(window.jQuery), +function (a) {
575
+ "use strict";
576
+ var b = function (c, d) {
577
+ this.options = a.extend({}, b.DEFAULTS, d), this.$window = a(window).on("scroll.bs.affix.data-api", a.proxy(this.checkPosition, this)).on("click.bs.affix.data-api", a.proxy(this.checkPositionWithEventLoop, this)), this.$element = a(c), this.affixed = this.unpin = null, this.checkPosition()
578
+ };
579
+ b.RESET = "affix affix-top affix-bottom", b.DEFAULTS = {offset: 0}, b.prototype.checkPositionWithEventLoop = function () {
580
+ setTimeout(a.proxy(this.checkPosition, this), 1)
581
+ }, b.prototype.checkPosition = function () {
582
+ if (this.$element.is(":visible")) {
583
+ var c = a(document).height(), d = this.$window.scrollTop(), e = this.$element.offset(), f = this.options.offset, g = f.top, h = f.bottom;
584
+ "object" != typeof f && (h = g = f), "function" == typeof g && (g = f.top()), "function" == typeof h && (h = f.bottom());
585
+ var i = null != this.unpin && d + this.unpin <= e.top ? !1 : null != h && e.top + this.$element.height() >= c - h ? "bottom" : null != g && g >= d ? "top" : !1;
586
+ this.affixed !== i && (this.unpin && this.$element.css("top", ""), this.affixed = i, this.unpin = "bottom" == i ? e.top - d : null, this.$element.removeClass(b.RESET).addClass("affix" + (i ? "-" + i : "")), "bottom" == i && this.$element.offset({top: document.body.offsetHeight - h - this.$element.height()}))
587
+ }
588
+ };
589
+ var c = a.fn.affix;
590
+ a.fn.affix = function (c) {
591
+ return this.each(function () {
592
+ var d = a(this), e = d.data("bs.affix"), f = "object" == typeof c && c;
593
+ e || d.data("bs.affix", e = new b(this, f)), "string" == typeof c && e[c]()
594
+ })
595
+ }, a.fn.affix.Constructor = b, a.fn.affix.noConflict = function () {
596
+ return a.fn.affix = c, this
597
+ }, a(window).on("load", function () {
598
+ a('[data-spy="affix"]').each(function () {
599
+ var b = a(this), c = b.data();
600
+ c.offset = c.offset || {}, c.offsetBottom && (c.offset.bottom = c.offsetBottom), c.offsetTop && (c.offset.top = c.offsetTop), b.affix(c)
601
+ })
602
+ })
603
+ }(window.jQuery);
js/buttons.js CHANGED
@@ -18,98 +18,99 @@
18
  * ======================================================================== */
19
 
20
 
21
- +function ($) { "use strict";
22
-
23
- // BUTTON PUBLIC CLASS DEFINITION
24
- // ==============================
25
-
26
- var Button = function (element, options) {
27
- this.$element = $(element)
28
- this.options = $.extend({}, Button.DEFAULTS, options)
29
- }
30
-
31
- Button.DEFAULTS = {
32
- loadingText: 'loading...'
33
- }
34
-
35
- Button.prototype.setState = function (state) {
36
- var d = 'disabled'
37
- var $el = this.$element
38
- var val = $el.is('input') ? 'val' : 'html'
39
- var data = $el.data()
40
-
41
- state = state + 'Text'
42
-
43
- if (!data.resetText) $el.data('resetText', $el[val]())
44
-
45
- $el[val](data[state] || this.options[state])
46
-
47
- // push to event loop to allow forms to submit
48
- setTimeout(function () {
49
- state == 'loadingText' ?
50
- $el.addClass(d).attr(d, d) :
51
- $el.removeClass(d).removeAttr(d);
52
- }, 0)
53
- }
54
-
55
- Button.prototype.toggle = function () {
56
- var $parent = this.$element.closest('[data-toggle="buttons"]')
57
- var changed = true
58
-
59
- if ($parent.length) {
60
- var $input = this.$element.find('input')
61
- if ($input.prop('type') === 'radio') {
62
- // see if clicking on current one
63
- if ($input.prop('checked') && this.$element.hasClass('active'))
64
- changed = false
65
- else
66
- $parent.find('.active').removeClass('active')
67
- }
68
- if (changed) $input.prop('checked', !this.$element.hasClass('active')).trigger('change')
69
  }
70
 
71
- if (changed) this.$element.toggleClass('active')
72
- }
 
 
 
73
 
 
74
 
75
- // BUTTON PLUGIN DEFINITION
76
- // ========================
77
 
78
- var old = $.fn.button
79
 
80
- $.fn.button = function (option) {
81
- return this.each(function () {
82
- var $this = $(this)
83
- var data = $this.data('bs.button')
84
- var options = typeof option == 'object' && option
 
 
85
 
86
- if (!data) $this.data('bs.button', (data = new Button(this, options)))
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
87
 
88
- if (option == 'toggle') data.toggle()
89
- else if (option) data.setState(option)
90
- })
91
- }
92
 
93
- $.fn.button.Constructor = Button
 
94
 
 
95
 
96
- // BUTTON NO CONFLICT
97
- // ==================
 
 
 
98
 
99
- $.fn.button.noConflict = function () {
100
- $.fn.button = old
101
- return this
102
- }
103
 
 
 
 
 
104
 
105
- // BUTTON DATA-API
106
- // ===============
107
 
108
- $(document).on('click.bs.button.data-api', '[data-toggle^=button]', function (e) {
109
- var $btn = $(e.target)
110
- if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')
111
- $btn.button('toggle')
112
- e.preventDefault()
113
- })
 
 
 
 
 
 
 
 
 
 
 
 
 
114
 
115
  }(jQuery);
18
  * ======================================================================== */
19
 
20
 
21
+ +function ($) {
22
+ "use strict";
23
+
24
+ // BUTTON PUBLIC CLASS DEFINITION
25
+ // ==============================
26
+
27
+ var Button = function (element, options) {
28
+ this.$element = $(element)
29
+ this.options = $.extend({}, Button.DEFAULTS, options)
30
+ }
31
+
32
+ Button.DEFAULTS = {
33
+ loadingText: 'loading...'
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
34
  }
35
 
36
+ Button.prototype.setState = function (state) {
37
+ var d = 'disabled'
38
+ var $el = this.$element
39
+ var val = $el.is('input') ? 'val' : 'html'
40
+ var data = $el.data()
41
 
42
+ state = state + 'Text'
43
 
44
+ if (!data.resetText) $el.data('resetText', $el[val]())
 
45
 
46
+ $el[val](data[state] || this.options[state])
47
 
48
+ // push to event loop to allow forms to submit
49
+ setTimeout(function () {
50
+ state == 'loadingText' ?
51
+ $el.addClass(d).attr(d, d) :
52
+ $el.removeClass(d).removeAttr(d);
53
+ }, 0)
54
+ }
55
 
56
+ Button.prototype.toggle = function () {
57
+ var $parent = this.$element.closest('[data-toggle="buttons"]')
58
+ var changed = true
59
+
60
+ if ($parent.length) {
61
+ var $input = this.$element.find('input')
62
+ if ($input.prop('type') === 'radio') {
63
+ // see if clicking on current one
64
+ if ($input.prop('checked') && this.$element.hasClass('active'))
65
+ changed = false
66
+ else
67
+ $parent.find('.active').removeClass('active')
68
+ }
69
+ if (changed) $input.prop('checked', !this.$element.hasClass('active')).trigger('change')
70
+ }
71
+
72
+ if (changed) this.$element.toggleClass('active')
73
+ }
74
 
 
 
 
 
75
 
76
+ // BUTTON PLUGIN DEFINITION
77
+ // ========================
78
 
79
+ var old = $.fn.button
80
 
81
+ $.fn.button = function (option) {
82
+ return this.each(function () {
83
+ var $this = $(this)
84
+ var data = $this.data('bs.button')
85
+ var options = typeof option == 'object' && option
86
 
87
+ if (!data) $this.data('bs.button', (data = new Button(this, options)))
 
 
 
88
 
89
+ if (option == 'toggle') data.toggle()
90
+ else if (option) data.setState(option)
91
+ })
92
+ }
93
 
94
+ $.fn.button.Constructor = Button
 
95
 
96
+
97
+ // BUTTON NO CONFLICT
98
+ // ==================
99
+
100
+ $.fn.button.noConflict = function () {
101
+ $.fn.button = old
102
+ return this
103
+ }
104
+
105
+
106
+ // BUTTON DATA-API
107
+ // ===============
108
+
109
+ $(document).on('click.bs.button.data-api', '[data-toggle^=button]', function (e) {
110
+ var $btn = $(e.target)
111
+ if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')
112
+ $btn.button('toggle')
113
+ e.preventDefault()
114
+ })
115
 
116
  }(jQuery);
js/dashchart-widget.js CHANGED
@@ -1,8 +1,73 @@
1
  jQuery( document ).ready(function() {
2
- pieStats();
3
- lineStats();
4
  });
5
- function pieStats()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6
  {
7
  jQuery.ajax({
8
  type: 'POST',
@@ -105,5 +170,5 @@ jQuery.ajax({
105
  }
106
  });
107
  }
108
-
109
 
1
  jQuery( document ).ready(function() {
2
+ piechart();
3
+ linechart();
4
  });
5
+
6
+ function piechart()
7
+ {
8
+ jQuery.ajax({
9
+ type: 'POST',
10
+ url: ajaxurl,
11
+ data: {
12
+ 'action' : 'firstchart',
13
+ 'postdata' : 'firstchartdata',
14
+ },
15
+ dataType: 'json',
16
+ cache: false,
17
+ success: function(data) {
18
+ var val = JSON.parse(data);
19
+ if (val['label'] == 'No Imports Yet') {
20
+ document.getElementById('pieStats').innerHTML = "<h2 style='color: red;text-align: center;padding-top: 100px;' >No Imports Yet</h2>";
21
+ return false;
22
+ }
23
+ Morris.Donut({
24
+ element: 'pieStats',
25
+ data: val//[
26
+ //{label: val[0][0], value: value[0][1]}
27
+ //{label: "page", value: 30},
28
+ //{label: "custompost", value: 20}
29
+ //]
30
+ });
31
+ }
32
+ });
33
+ }
34
+
35
+ function linechart() {
36
+ jQuery.ajax({
37
+ type: 'POST',
38
+ url: ajaxurl,
39
+ data: {
40
+ 'action' : 'secondchart',
41
+ 'postdata' : 'secondchartdata',
42
+ },
43
+ dataType: 'json',
44
+ cache: false,
45
+ success: function(result) {
46
+ console.log(result);
47
+ var val = JSON.parse(result);
48
+ var months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
49
+ Morris.Line({
50
+ element: 'lineStats',
51
+ data : val,
52
+ xkey: 'year',
53
+ ykeys: ['post', 'page','custompost','users','eshop'],
54
+ labels: ['post', 'page','custompost','users','eshop'],
55
+ lineColors:['gray','red','blue','black','orange'],
56
+ xLabelFormat: function(x) { // <--- x.getMonth() returns valid index
57
+ var month = months[x.getMonth()];
58
+ return month;
59
+ },
60
+ dateFormat: function(x) {
61
+ var month = months[new Date(x).getMonth()];
62
+ return month;
63
+ },
64
+
65
+ });
66
+ }
67
+ });
68
+ }
69
+
70
+ /*function pieStats()
71
  {
72
  jQuery.ajax({
73
  type: 'POST',
170
  }
171
  });
172
  }
173
+ */
174
 
js/dashchart.js CHANGED
@@ -1,10 +1,153 @@
1
  jQuery( document ).ready(function() {
2
  var get_module = document.getElementById('checkmodule').value;
3
  if(get_module == 'dashboard') {
4
- pieStats();
5
- lineStats();
6
  }
7
  });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8
  function pieStats()
9
  {
10
  jQuery.ajax({
@@ -110,4 +253,4 @@ jQuery.ajax({
110
  });
111
  }
112
 
113
-
1
  jQuery( document ).ready(function() {
2
  var get_module = document.getElementById('checkmodule').value;
3
  if(get_module == 'dashboard') {
4
+ piechart();
5
+ linechart();
6
  }
7
  });
8
+ function piechart()
9
+ {
10
+ jQuery.ajax({
11
+ type: 'POST',
12
+ url: ajaxurl,
13
+ data: {
14
+ 'action' : 'firstchart',
15
+ 'postdata' : 'firstchartdata',
16
+ },
17
+ dataType: 'json',
18
+ cache: false,
19
+ success: function(data) {
20
+ var val = JSON.parse(data);
21
+ if (val['label'] == 'No Imports Yet') {
22
+ document.getElementById('pieStats').innerHTML = "<h2 style='color: red;text-align: center;padding-top: 100px;' >No Imports Yet</h2>";
23
+ return false;
24
+ }
25
+ Morris.Donut({
26
+ element: 'pieStats',
27
+ data: val//[
28
+ //{label: val[0][0], value: value[0][1]}
29
+ //{label: "page", value: 30},
30
+ //{label: "custompost", value: 20}
31
+ //]
32
+ });
33
+ }
34
+ });
35
+ }
36
+
37
+ function linechart() {
38
+ jQuery.ajax({
39
+ type: 'POST',
40
+ url: ajaxurl,
41
+ data: {
42
+ 'action' : 'secondchart',
43
+ 'postdata' : 'secondchartdata',
44
+ },
45
+ dataType: 'json',
46
+ cache: false,
47
+ success: function(result) {
48
+ console.log(result);
49
+ var val = JSON.parse(result);
50
+ var months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
51
+ Morris.Line({
52
+ element: 'lineStats',
53
+ data : val,
54
+ xkey: 'year',
55
+ ykeys: ['post', 'page','custompost','users','eshop'],
56
+ labels: ['post', 'page','custompost','users','eshop'],
57
+ lineColors:['gray','red','blue','black','orange'],
58
+ xLabelFormat: function(x) { // <--- x.getMonth() returns valid index
59
+ var month = months[x.getMonth()];
60
+ return month;
61
+ },
62
+ dateFormat: function(x) {
63
+ var month = months[new Date(x).getMonth()];
64
+ return month;
65
+ },
66
+
67
+ });
68
+ }
69
+ });
70
+ }
71
+
72
+ /*
73
+ function linechart()
74
+ {
75
+ jQuery.ajax({
76
+ type: 'POST',
77
+ url: ajaxurl,
78
+ data: {
79
+ 'action' : 'secondchart',
80
+ 'postdata' : 'secondchartdata',
81
+ },
82
+ dataType: 'json',
83
+ cache: false,
84
+ success: function(data) {
85
+ var val = JSON.parse(data);
86
+ /* var line = new Morris.Line({
87
+ // ID of the element in which to draw the chart.
88
+ element: 'lineStats',
89
+ // Chart data records -- each entry in this array corresponds to a point on
90
+ // the chart.
91
+ data: [
92
+ { year: '2015-02 post', No: 20 },
93
+ { year: '2010-03 users', No: 10 },
94
+ { year: '2012-04 page', No: 25 },
95
+ { year: '2013-05 custompost', No: 45 },
96
+ { year: '2011-06 eshop', No: 50 }
97
+ ],
98
+ // The name of the data record attribute that contains x-values.
99
+ xkey: 'year',
100
+ xLabels: "month",
101
+ // A list of names of data record attributes that contain y-values.
102
+ ykeys: ['No'],
103
+ // Labels for the ykeys -- will be displayed when you hover over the
104
+ // chart.
105
+ labels: ['No']
106
+ });
107
+ function formatDate(myDate){
108
+ var m_names = new Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec");
109
+
110
+ var d = new Date(myDate);
111
+
112
+ var curr_month = d.getMonth();
113
+ //var curr_year = d.getFullYear();
114
+ //return (m_names[curr_month] + "-" + curr_year);
115
+ return (m_names[curr_month]);
116
+ }
117
+
118
+ new Morris.Line({
119
+ element: 'financial-year-sales-graph',
120
+ data: [
121
+ { month: '2013-07', sales: 52325 },
122
+ { month: '2013-08', sales: 65432 },
123
+ { month: '2013-09', sales: 52125 },
124
+ { month: '2013-10', sales: 23265 },
125
+ { month: '2013-11', sales: 25125 },
126
+ { month: '2013-12', sales: 63256 },
127
+ { month: '2014-01', sales: 52365 },
128
+ { month: '2014-02', sales: 65954 },
129
+ { month: '2014-03', sales: 55255 },
130
+ { month: '2014-04', sales: 66236 },
131
+ { month: '2014-05', sales: 52369 },
132
+ { month: '2014-06', sales: 85214 }
133
+ ],
134
+ // The name of the data record attribute that contains x-values.
135
+ xkey: 'month',
136
+ // A list of names of data record attributes that contain y-values.
137
+ ykeys: ['sales'],
138
+ // Labels for the ykeys -- will be displayed when you hover over the
139
+ // chart.
140
+ labels: ['Sales'],
141
+ xLabelFormat: function(str){
142
+ return formatDate(str);
143
+ },
144
+ preUnits: '$'
145
+ });
146
+
147
+ }
148
+ });
149
+ }
150
+
151
  function pieStats()
152
  {
153
  jQuery.ajax({
253
  });
254
  }
255
 
256
+ */
js/dropdown.js CHANGED
@@ -8,7 +8,9 @@
8
  * Generated using the Bootstrap Customizer (http://getbootstrap.com/customize/?id=8fcd7d337a57dc98835b)
9
  * Config saved to config.json and https://gist.github.com/8fcd7d337a57dc98835b
10
  */
11
- if (typeof jQuery === "undefined") { throw new Error("Bootstrap's JavaScript requires jQuery") }
 
 
12
 
13
  /* ========================================================================
14
  * Bootstrap: dropdown.js v3.2.0
@@ -20,144 +22,146 @@ if (typeof jQuery === "undefined") { throw new Error("Bootstrap's JavaScript req
20
 
21
 
22
  +function ($) {
23
- 'use strict';
24
 
25
- // DROPDOWN CLASS DEFINITION
26
- // =========================
27
 
28
- var backdrop = '.dropdown-backdrop'
29
- var toggle = '[data-toggle="dropdown"]'
30
- var Dropdown = function (element) {
31
- $(element).on('click.bs.dropdown', this.toggle)
32
- }
 
 
33
 
34
- Dropdown.VERSION = '3.2.0'
 
35
 
36
- Dropdown.prototype.toggle = function (e) {
37
- var $this = $(this)
38
 
39
- if ($this.is('.disabled, :disabled')) return
 
40
 
41
- var $parent = getParent($this)
42
- var isActive = $parent.hasClass('open')
43
 
44
- clearMenus()
 
 
 
 
45
 
46
- if (!isActive) {
47
- if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {
48
- // if mobile we use a backdrop because click events don't delegate
49
- $('<div class="dropdown-backdrop"/>').insertAfter($(this)).on('click', clearMenus)
50
- }
51
 
52
- var relatedTarget = { relatedTarget: this }
53
- $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))
54
 
55
- if (e.isDefaultPrevented()) return
56
 
57
- $this.trigger('focus')
 
 
 
58
 
59
- $parent
60
- .toggleClass('open')
61
- .trigger('shown.bs.dropdown', relatedTarget)
62
  }
63
 
64
- return false
65
- }
66
 
67
- Dropdown.prototype.keydown = function (e) {
68
- if (!/(38|40|27)/.test(e.keyCode)) return
69
 
70
- var $this = $(this)
 
71
 
72
- e.preventDefault()
73
- e.stopPropagation()
74
 
75
- if ($this.is('.disabled, :disabled')) return
 
76
 
77
- var $parent = getParent($this)
78
- var isActive = $parent.hasClass('open')
 
 
79
 
80
- if (!isActive || (isActive && e.keyCode == 27)) {
81
- if (e.which == 27) $parent.find(toggle).trigger('focus')
82
- return $this.trigger('click')
83
- }
84
 
85
- var desc = ' li:not(.divider):visible a'
86
- var $items = $parent.find('[role="menu"]' + desc + ', [role="listbox"]' + desc)
87
 
88
- if (!$items.length) return
89
 
90
- var index = $items.index($items.filter(':focus'))
 
 
91
 
92
- if (e.keyCode == 38 && index > 0) index-- // up
93
- if (e.keyCode == 40 && index < $items.length - 1) index++ // down
94
- if (!~index) index = 0
95
-
96
- $items.eq(index).trigger('focus')
97
- }
98
 
99
- function clearMenus(e) {
100
- if (e && e.which === 3) return
101
- $(backdrop).remove()
102
- $(toggle).each(function () {
103
- var $parent = getParent($(this))
104
- var relatedTarget = { relatedTarget: this }
105
- if (!$parent.hasClass('open')) return
106
- $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))
107
- if (e.isDefaultPrevented()) return
108
- $parent.removeClass('open').trigger('hidden.bs.dropdown', relatedTarget)
109
- })
110
- }
111
 
112
- function getParent($this) {
113
- var selector = $this.attr('data-target')
114
 
115
- if (!selector) {
116
- selector = $this.attr('href')
117
- selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
118
- }
119
 
120
- var $parent = selector && $(selector)
121
 
122
- return $parent && $parent.length ? $parent : $this.parent()
123
- }
124
 
125
 
126
- // DROPDOWN PLUGIN DEFINITION
127
- // ==========================
128
 
129
- function Plugin(option) {
130
- return this.each(function () {
131
- var $this = $(this)
132
- var data = $this.data('bs.dropdown')
133
 
134
- if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))
135
- if (typeof option == 'string') data[option].call($this)
136
- })
137
- }
138
 
139
- var old = $.fn.dropdown
140
 
141
- $.fn.dropdown = Plugin
142
- $.fn.dropdown.Constructor = Dropdown
143
 
144
 
145
- // DROPDOWN NO CONFLICT
146
- // ====================
147
 
148
- $.fn.dropdown.noConflict = function () {
149
- $.fn.dropdown = old
150
- return this
151
- }
152
 
153
 
154
- // APPLY TO STANDARD DROPDOWN ELEMENTS
155
- // ===================================
156
 
157
- $(document)
158
- .on('click.bs.dropdown.data-api', clearMenus)
159
- .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
160
- .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)
161
- .on('keydown.bs.dropdown.data-api', toggle + ', [role="menu"], [role="listbox"]', Dropdown.prototype.keydown)
 
 
162
 
163
  }(jQuery);
8
  * Generated using the Bootstrap Customizer (http://getbootstrap.com/customize/?id=8fcd7d337a57dc98835b)
9
  * Config saved to config.json and https://gist.github.com/8fcd7d337a57dc98835b
10
  */
11
+ if (typeof jQuery === "undefined") {
12
+ throw new Error("Bootstrap's JavaScript requires jQuery")
13
+ }
14
 
15
  /* ========================================================================
16
  * Bootstrap: dropdown.js v3.2.0
22
 
23
 
24
  +function ($) {
25
+ 'use strict';
26
 
27
+ // DROPDOWN CLASS DEFINITION
28
+ // =========================
29
 
30
+ var backdrop = '.dropdown-backdrop'
31
+ var toggle = '[data-toggle="dropdown"]'
32
+ var Dropdown = function (element) {
33
+ $(element).on('click.bs.dropdown', this.toggle)
34
+ }
35
+
36
+ Dropdown.VERSION = '3.2.0'
37
 
38
+ Dropdown.prototype.toggle = function (e) {
39
+ var $this = $(this)
40
 
41
+ if ($this.is('.disabled, :disabled')) return
 
42
 
43
+ var $parent = getParent($this)
44
+ var isActive = $parent.hasClass('open')
45
 
46
+ clearMenus()
 
47
 
48
+ if (!isActive) {
49
+ if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {
50
+ // if mobile we use a backdrop because click events don't delegate
51
+ $('<div class="dropdown-backdrop"/>').insertAfter($(this)).on('click', clearMenus)
52
+ }
53
 
54
+ var relatedTarget = {relatedTarget: this}
55
+ $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))
 
 
 
56
 
57
+ if (e.isDefaultPrevented()) return
 
58
 
59
+ $this.trigger('focus')
60
 
61
+ $parent
62
+ .toggleClass('open')
63
+ .trigger('shown.bs.dropdown', relatedTarget)
64
+ }
65
 
66
+ return false
 
 
67
  }
68
 
69
+ Dropdown.prototype.keydown = function (e) {
70
+ if (!/(38|40|27)/.test(e.keyCode)) return
71
 
72
+ var $this = $(this)
 
73
 
74
+ e.preventDefault()
75
+ e.stopPropagation()
76
 
77
+ if ($this.is('.disabled, :disabled')) return
 
78
 
79
+ var $parent = getParent($this)
80
+ var isActive = $parent.hasClass('open')
81
 
82
+ if (!isActive || (isActive && e.keyCode == 27)) {
83
+ if (e.which == 27) $parent.find(toggle).trigger('focus')
84
+ return $this.trigger('click')
85
+ }
86
 
87
+ var desc = ' li:not(.divider):visible a'
88
+ var $items = $parent.find('[role="menu"]' + desc + ', [role="listbox"]' + desc)
 
 
89
 
90
+ if (!$items.length) return
 
91
 
92
+ var index = $items.index($items.filter(':focus'))
93
 
94
+ if (e.keyCode == 38 && index > 0) index-- // up
95
+ if (e.keyCode == 40 && index < $items.length - 1) index++ // down
96
+ if (!~index) index = 0
97
 
98
+ $items.eq(index).trigger('focus')
99
+ }
 
 
 
 
100
 
101
+ function clearMenus(e) {
102
+ if (e && e.which === 3) return
103
+ $(backdrop).remove()
104
+ $(toggle).each(function () {
105
+ var $parent = getParent($(this))
106
+ var relatedTarget = {relatedTarget: this}
107
+ if (!$parent.hasClass('open')) return
108
+ $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))
109
+ if (e.isDefaultPrevented()) return
110
+ $parent.removeClass('open').trigger('hidden.bs.dropdown', relatedTarget)
111
+ })
112
+ }
113
 
114
+ function getParent($this) {
115
+ var selector = $this.attr('data-target')
116
 
117
+ if (!selector) {
118
+ selector = $this.attr('href')
119
+ selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
120
+ }
121
 
122
+ var $parent = selector && $(selector)
123
 
124
+ return $parent && $parent.length ? $parent : $this.parent()
125
+ }
126
 
127
 
128
+ // DROPDOWN PLUGIN DEFINITION
129
+ // ==========================
130
 
131
+ function Plugin(option) {
132
+ return this.each(function () {
133
+ var $this = $(this)
134
+ var data = $this.data('bs.dropdown')
135
 
136
+ if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))
137
+ if (typeof option == 'string') data[option].call($this)
138
+ })
139
+ }
140
 
141
+ var old = $.fn.dropdown
142
 
143
+ $.fn.dropdown = Plugin
144
+ $.fn.dropdown.Constructor = Dropdown
145
 
146
 
147
+ // DROPDOWN NO CONFLICT
148
+ // ====================
149
 
150
+ $.fn.dropdown.noConflict = function () {
151
+ $.fn.dropdown = old
152
+ return this
153
+ }
154
 
155
 
156
+ // APPLY TO STANDARD DROPDOWN ELEMENTS
157
+ // ===================================
158
 
159
+ $(document)
160
+ .on('click.bs.dropdown.data-api', clearMenus)
161
+ .on('click.bs.dropdown.data-api', '.dropdown form', function (e) {
162
+ e.stopPropagation()
163
+ })
164
+ .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)
165
+ .on('keydown.bs.dropdown.data-api', toggle + ', [role="menu"], [role="listbox"]', Dropdown.prototype.keydown)
166
 
167
  }(jQuery);
js/exporting.js CHANGED
@@ -5,18 +5,239 @@
5
  (c) 2010-2014 Torstein Honsi
6
 
7
  License: www.highcharts.com/license
8
- */
9
- (function(f){var A=f.Chart,t=f.addEvent,B=f.removeEvent,l=f.createElement,o=f.discardElement,v=f.css,k=f.merge,r=f.each,p=f.extend,D=Math.max,j=document,C=window,E=f.isTouchDevice,F=f.Renderer.prototype.symbols,s=f.getOptions(),y;p(s.lang,{printChart:"Print chart",downloadPNG:"Download PNG image",downloadJPEG:"Download JPEG image",downloadPDF:"Download PDF document",downloadSVG:"Download SVG vector image",contextButtonTitle:"Chart context menu"});s.navigation={menuStyle:{border:"1px solid #A0A0A0",
10
- background:"#FFFFFF",padding:"5px 0"},menuItemStyle:{padding:"0 10px",background:"none",color:"#303030",fontSize:E?"14px":"11px"},menuItemHoverStyle:{background:"#4572A5",color:"#FFFFFF"},buttonOptions:{symbolFill:"#E0E0E0",symbolSize:14,symbolStroke:"#666",symbolStrokeWidth:3,symbolX:12.5,symbolY:10.5,align:"right",buttonSpacing:3,height:22,theme:{fill:"white",stroke:"none"},verticalAlign:"top",width:24}};s.exporting={type:"image/png",url:"http://export.highcharts.com/",buttons:{contextButton:{menuClassName:"highcharts-contextmenu",
11
- symbol:"menu",_titleKey:"contextButtonTitle",menuItems:[{textKey:"printChart",onclick:function(){this.print()}},{separator:!0},{textKey:"downloadPNG",onclick:function(){this.exportChart()}},{textKey:"downloadJPEG",onclick:function(){this.exportChart({type:"image/jpeg"})}},{textKey:"downloadPDF",onclick:function(){this.exportChart({type:"application/pdf"})}},{textKey:"downloadSVG",onclick:function(){this.exportChart({type:"image/svg+xml"})}}]}}};f.post=function(b,a,d){var c,b=l("form",k({method:"post",
12
- action:b,enctype:"multipart/form-data"},d),{display:"none"},j.body);for(c in a)l("input",{type:"hidden",name:c,value:a[c]},null,b);b.submit();o(b)};p(A.prototype,{getSVG:function(b){var a=this,d,c,z,h,g=k(a.options,b);if(!j.createElementNS)j.createElementNS=function(a,b){return j.createElement(b)};b=l("div",null,{position:"absolute",top:"-9999em",width:a.chartWidth+"px",height:a.chartHeight+"px"},j.body);c=a.renderTo.style.width;h=a.renderTo.style.height;c=g.exporting.sourceWidth||g.chart.width||
13
- /px$/.test(c)&&parseInt(c,10)||600;h=g.exporting.sourceHeight||g.chart.height||/px$/.test(h)&&parseInt(h,10)||400;p(g.chart,{animation:!1,renderTo:b,forExport:!0,width:c,height:h});g.exporting.enabled=!1;g.series=[];r(a.series,function(a){z=k(a.options,{animation:!1,showCheckbox:!1,visible:a.visible});z.isInternal||g.series.push(z)});d=new f.Chart(g,a.callback);r(["xAxis","yAxis"],function(b){r(a[b],function(a,c){var g=d[b][c],f=a.getExtremes(),h=f.userMin,f=f.userMax;g&&(h!==void 0||f!==void 0)&&
14
- g.setExtremes(h,f,!0,!1)})});c=d.container.innerHTML;g=null;d.destroy();o(b);c=c.replace(/zIndex="[^"]+"/g,"").replace(/isShadow="[^"]+"/g,"").replace(/symbolName="[^"]+"/g,"").replace(/jQuery[0-9]+="[^"]+"/g,"").replace(/url\([^#]+#/g,"url(#").replace(/<svg /,'<svg xmlns:xlink="http://www.w3.org/1999/xlink" ').replace(/ href=/g," xlink:href=").replace(/\n/," ").replace(/<\/svg>.*?$/,"</svg>").replace(/&nbsp;/g," ").replace(/&shy;/g,"­").replace(/<IMG /g,"<image ").replace(/height=([^" ]+)/g,'height="$1"').replace(/width=([^" ]+)/g,
15
- 'width="$1"').replace(/hc-svg-href="([^"]+)">/g,'xlink:href="$1"/>').replace(/id=([^" >]+)/g,'id="$1"').replace(/class=([^" >]+)/g,'class="$1"').replace(/ transform /g," ").replace(/:(path|rect)/g,"$1").replace(/style="([^"]+)"/g,function(a){return a.toLowerCase()});return c=c.replace(/(url\(#highcharts-[0-9]+)&quot;/g,"$1").replace(/&quot;/g,"'")},exportChart:function(b,a){var b=b||{},d=this.options.exporting,d=this.getSVG(k({chart:{borderRadius:0}},d.chartOptions,a,{exporting:{sourceWidth:b.sourceWidth||
16
- d.sourceWidth,sourceHeight:b.sourceHeight||d.sourceHeight}})),b=k(this.options.exporting,b);f.post(b.url,{filename:b.filename||"chart",type:b.type,width:b.width||0,scale:b.scale||2,svg:d},b.formAttributes)},print:function(){var b=this,a=b.container,d=[],c=a.parentNode,f=j.body,h=f.childNodes;if(!b.isPrinting)b.isPrinting=!0,r(h,function(a,b){if(a.nodeType===1)d[b]=a.style.display,a.style.display="none"}),f.appendChild(a),C.focus(),C.print(),setTimeout(function(){c.appendChild(a);r(h,function(a,b){if(a.nodeType===
17
- 1)a.style.display=d[b]});b.isPrinting=!1},1E3)},contextMenu:function(b,a,d,c,f,h,g){var e=this,k=e.options.navigation,q=k.menuItemStyle,m=e.chartWidth,n=e.chartHeight,j="cache-"+b,i=e[j],u=D(f,h),w,x,o,s=function(a){e.pointer.inClass(a.target,b)||x()};if(!i)e[j]=i=l("div",{className:b},{position:"absolute",zIndex:1E3,padding:u+"px"},e.container),w=l("div",null,p({MozBoxShadow:"3px 3px 10px #888",WebkitBoxShadow:"3px 3px 10px #888",boxShadow:"3px 3px 10px #888"},k.menuStyle),i),x=function(){v(i,{display:"none"});
18
- g&&g.setState(0);e.openMenu=!1},t(i,"mouseleave",function(){o=setTimeout(x,500)}),t(i,"mouseenter",function(){clearTimeout(o)}),t(document,"mouseup",s),t(e,"destroy",function(){B(document,"mouseup",s)}),r(a,function(a){if(a){var b=a.separator?l("hr",null,null,w):l("div",{onmouseover:function(){v(this,k.menuItemHoverStyle)},onmouseout:function(){v(this,q)},onclick:function(){x();a.onclick.apply(e,arguments)},innerHTML:a.text||e.options.lang[a.textKey]},p({cursor:"pointer"},q),w);e.exportDivElements.push(b)}}),
19
- e.exportDivElements.push(w,i),e.exportMenuWidth=i.offsetWidth,e.exportMenuHeight=i.offsetHeight;a={display:"block"};d+e.exportMenuWidth>m?a.right=m-d-f-u+"px":a.left=d-u+"px";c+h+e.exportMenuHeight>n&&g.alignOptions.verticalAlign!=="top"?a.bottom=n-c-u+"px":a.top=c+h-u+"px";v(i,a);e.openMenu=!0},addButton:function(b){var a=this,d=a.renderer,c=k(a.options.navigation.buttonOptions,b),j=c.onclick,h=c.menuItems,g,e,l={stroke:c.symbolStroke,fill:c.symbolFill},q=c.symbolSize||12;if(!a.btnCount)a.btnCount=
20
- 0;if(!a.exportDivElements)a.exportDivElements=[],a.exportSVGElements=[];if(c.enabled!==!1){var m=c.theme,n=m.states,o=n&&n.hover,n=n&&n.select,i;delete m.states;j?i=function(){j.apply(a,arguments)}:h&&(i=function(){a.contextMenu(e.menuClassName,h,e.translateX,e.translateY,e.width,e.height,e);e.setState(2)});c.text&&c.symbol?m.paddingLeft=f.pick(m.paddingLeft,25):c.text||p(m,{width:c.width,height:c.height,padding:0});e=d.button(c.text,0,0,i,m,o,n).attr({title:a.options.lang[c._titleKey],"stroke-linecap":"round"});
21
- e.menuClassName=b.menuClassName||"highcharts-menu-"+a.btnCount++;c.symbol&&(g=d.symbol(c.symbol,c.symbolX-q/2,c.symbolY-q/2,q,q).attr(p(l,{"stroke-width":c.symbolStrokeWidth||1,zIndex:1})).add(e));e.add().align(p(c,{width:e.width,x:f.pick(c.x,y)}),!0,"spacingBox");y+=(e.width+c.buttonSpacing)*(c.align==="right"?-1:1);a.exportSVGElements.push(e,g)}},destroyExport:function(b){var b=b.target,a,d;for(a=0;a<b.exportSVGElements.length;a++)if(d=b.exportSVGElements[a])d.onclick=d.ontouchstart=null,b.exportSVGElements[a]=
22
- d.destroy();for(a=0;a<b.exportDivElements.length;a++)d=b.exportDivElements[a],B(d,"mouseleave"),b.exportDivElements[a]=d.onmouseout=d.onmouseover=d.ontouchstart=d.onclick=null,o(d)}});F.menu=function(b,a,d,c){return["M",b,a+2.5,"L",b+d,a+2.5,"M",b,a+c/2+0.5,"L",b+d,a+c/2+0.5,"M",b,a+c-1.5,"L",b+d,a+c-1.5]};A.prototype.callbacks.push(function(b){var a,d=b.options.exporting,c=d.buttons;y=0;if(d.enabled!==!1){for(a in c)b.addButton(c[a]);t(b,"destroy",b.destroyExport)}})})(Highcharts);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5
  (c) 2010-2014 Torstein Honsi
6
 
7
  License: www.highcharts.com/license
8
+ */
9
+ (function (f) {
10
+ var A = f.Chart, t = f.addEvent, B = f.removeEvent, l = f.createElement, o = f.discardElement, v = f.css, k = f.merge, r = f.each, p = f.extend, D = Math.max, j = document, C = window, E = f.isTouchDevice, F = f.Renderer.prototype.symbols, s = f.getOptions(), y;
11
+ p(s.lang, {
12
+ printChart: "Print chart",
13
+ downloadPNG: "Download PNG image",
14
+ downloadJPEG: "Download JPEG image",
15
+ downloadPDF: "Download PDF document",
16
+ downloadSVG: "Download SVG vector image",
17
+ contextButtonTitle: "Chart context menu"
18
+ });
19
+ s.navigation = {
20
+ menuStyle: {
21
+ border: "1px solid #A0A0A0",
22
+ background: "#FFFFFF", padding: "5px 0"
23
+ },
24
+ menuItemStyle: {padding: "0 10px", background: "none", color: "#303030", fontSize: E ? "14px" : "11px"},
25
+ menuItemHoverStyle: {background: "#4572A5", color: "#FFFFFF"},
26
+ buttonOptions: {
27
+ symbolFill: "#E0E0E0",
28
+ symbolSize: 14,
29
+ symbolStroke: "#666",
30
+ symbolStrokeWidth: 3,
31
+ symbolX: 12.5,
32
+ symbolY: 10.5,
33
+ align: "right",
34
+ buttonSpacing: 3,
35
+ height: 22,
36
+ theme: {fill: "white", stroke: "none"},
37
+ verticalAlign: "top",
38
+ width: 24
39
+ }
40
+ };
41
+ s.exporting = {
42
+ type: "image/png", url: "http://export.highcharts.com/", buttons: {
43
+ contextButton: {
44
+ menuClassName: "highcharts-contextmenu",
45
+ symbol: "menu",
46
+ _titleKey: "contextButtonTitle",
47
+ menuItems: [{
48
+ textKey: "printChart", onclick: function () {
49
+ this.print()
50
+ }
51
+ }, {separator: !0}, {
52
+ textKey: "downloadPNG", onclick: function () {
53
+ this.exportChart()
54
+ }
55
+ }, {
56
+ textKey: "downloadJPEG", onclick: function () {
57
+ this.exportChart({type: "image/jpeg"})
58
+ }
59
+ }, {
60
+ textKey: "downloadPDF", onclick: function () {
61
+ this.exportChart({type: "application/pdf"})
62
+ }
63
+ }, {
64
+ textKey: "downloadSVG", onclick: function () {
65
+ this.exportChart({type: "image/svg+xml"})
66
+ }
67
+ }]
68
+ }
69
+ }
70
+ };
71
+ f.post = function (b, a, d) {
72
+ var c, b = l("form", k({
73
+ method: "post",
74
+ action: b, enctype: "multipart/form-data"
75
+ }, d), {display: "none"}, j.body);
76
+ for (c in a)l("input", {type: "hidden", name: c, value: a[c]}, null, b);
77
+ b.submit();
78
+ o(b)
79
+ };
80
+ p(A.prototype, {
81
+ getSVG: function (b) {
82
+ var a = this, d, c, z, h, g = k(a.options, b);
83
+ if (!j.createElementNS)j.createElementNS = function (a, b) {
84
+ return j.createElement(b)
85
+ };
86
+ b = l("div", null, {
87
+ position: "absolute",
88
+ top: "-9999em",
89
+ width: a.chartWidth + "px",
90
+ height: a.chartHeight + "px"
91
+ }, j.body);
92
+ c = a.renderTo.style.width;
93
+ h = a.renderTo.style.height;
94
+ c = g.exporting.sourceWidth || g.chart.width ||
95
+ /px$/.test(c) && parseInt(c, 10) || 600;
96
+ h = g.exporting.sourceHeight || g.chart.height || /px$/.test(h) && parseInt(h, 10) || 400;
97
+ p(g.chart, {animation: !1, renderTo: b, forExport: !0, width: c, height: h});
98
+ g.exporting.enabled = !1;
99
+ g.series = [];
100
+ r(a.series, function (a) {
101
+ z = k(a.options, {animation: !1, showCheckbox: !1, visible: a.visible});
102
+ z.isInternal || g.series.push(z)
103
+ });
104
+ d = new f.Chart(g, a.callback);
105
+ r(["xAxis", "yAxis"], function (b) {
106
+ r(a[b], function (a, c) {
107
+ var g = d[b][c], f = a.getExtremes(), h = f.userMin, f = f.userMax;
108
+ g && (h !== void 0 || f !== void 0) &&
109
+ g.setExtremes(h, f, !0, !1)
110
+ })
111
+ });
112
+ c = d.container.innerHTML;
113
+ g = null;
114
+ d.destroy();
115
+ o(b);
116
+ c = c.replace(/zIndex="[^"]+"/g, "").replace(/isShadow="[^"]+"/g, "").replace(/symbolName="[^"]+"/g, "").replace(/jQuery[0-9]+="[^"]+"/g, "").replace(/url\([^#]+#/g, "url(#").replace(/<svg /, '<svg xmlns:xlink="http://www.w3.org/1999/xlink" ').replace(/ href=/g, " xlink:href=").replace(/\n/, " ").replace(/<\/svg>.*?$/, "</svg>").replace(/&nbsp;/g, " ").replace(/&shy;/g, "­").replace(/<IMG /g, "<image ").replace(/height=([^" ]+)/g, 'height="$1"').replace(/width=([^" ]+)/g,
117
+ 'width="$1"').replace(/hc-svg-href="([^"]+)">/g, 'xlink:href="$1"/>').replace(/id=([^" >]+)/g, 'id="$1"').replace(/class=([^" >]+)/g, 'class="$1"').replace(/ transform /g, " ").replace(/:(path|rect)/g, "$1").replace(/style="([^"]+)"/g, function (a) {
118
+ return a.toLowerCase()
119
+ });
120
+ return c = c.replace(/(url\(#highcharts-[0-9]+)&quot;/g, "$1").replace(/&quot;/g, "'")
121
+ }, exportChart: function (b, a) {
122
+ var b = b || {}, d = this.options.exporting, d = this.getSVG(k({chart: {borderRadius: 0}}, d.chartOptions, a, {
123
+ exporting: {
124
+ sourceWidth: b.sourceWidth ||
125
+ d.sourceWidth, sourceHeight: b.sourceHeight || d.sourceHeight
126
+ }
127
+ })), b = k(this.options.exporting, b);
128
+ f.post(b.url, {
129
+ filename: b.filename || "chart",
130
+ type: b.type,
131
+ width: b.width || 0,
132
+ scale: b.scale || 2,
133
+ svg: d
134
+ }, b.formAttributes)
135
+ }, print: function () {
136
+ var b = this, a = b.container, d = [], c = a.parentNode, f = j.body, h = f.childNodes;
137
+ if (!b.isPrinting)b.isPrinting = !0, r(h, function (a, b) {
138
+ if (a.nodeType === 1)d[b] = a.style.display, a.style.display = "none"
139
+ }), f.appendChild(a), C.focus(), C.print(), setTimeout(function () {
140
+ c.appendChild(a);
141
+ r(h, function (a, b) {
142
+ if (a.nodeType ===
143
+ 1)a.style.display = d[b]
144
+ });
145
+ b.isPrinting = !1
146
+ }, 1E3)
147
+ }, contextMenu: function (b, a, d, c, f, h, g) {
148
+ var e = this, k = e.options.navigation, q = k.menuItemStyle, m = e.chartWidth, n = e.chartHeight, j = "cache-" + b, i = e[j], u = D(f, h), w, x, o, s = function (a) {
149
+ e.pointer.inClass(a.target, b) || x()
150
+ };
151
+ if (!i)e[j] = i = l("div", {className: b}, {
152
+ position: "absolute",
153
+ zIndex: 1E3,
154
+ padding: u + "px"
155
+ }, e.container), w = l("div", null, p({
156
+ MozBoxShadow: "3px 3px 10px #888",
157
+ WebkitBoxShadow: "3px 3px 10px #888",
158
+ boxShadow: "3px 3px 10px #888"
159
+ }, k.menuStyle), i), x = function () {
160
+ v(i, {display: "none"});
161
+ g && g.setState(0);
162
+ e.openMenu = !1
163
+ }, t(i, "mouseleave", function () {
164
+ o = setTimeout(x, 500)
165
+ }), t(i, "mouseenter", function () {
166
+ clearTimeout(o)
167
+ }), t(document, "mouseup", s), t(e, "destroy", function () {
168
+ B(document, "mouseup", s)
169
+ }), r(a, function (a) {
170
+ if (a) {
171
+ var b = a.separator ? l("hr", null, null, w) : l("div", {
172
+ onmouseover: function () {
173
+ v(this, k.menuItemHoverStyle)
174
+ }, onmouseout: function () {
175
+ v(this, q)
176
+ }, onclick: function () {
177
+ x();
178
+ a.onclick.apply(e, arguments)
179
+ }, innerHTML: a.text || e.options.lang[a.textKey]
180
+ }, p({cursor: "pointer"}, q), w);
181
+ e.exportDivElements.push(b)
182
+ }
183
+ }),
184
+ e.exportDivElements.push(w, i), e.exportMenuWidth = i.offsetWidth, e.exportMenuHeight = i.offsetHeight;
185
+ a = {display: "block"};
186
+ d + e.exportMenuWidth > m ? a.right = m - d - f - u + "px" : a.left = d - u + "px";
187
+ c + h + e.exportMenuHeight > n && g.alignOptions.verticalAlign !== "top" ? a.bottom = n - c - u + "px" : a.top = c + h - u + "px";
188
+ v(i, a);
189
+ e.openMenu = !0
190
+ }, addButton: function (b) {
191
+ var a = this, d = a.renderer, c = k(a.options.navigation.buttonOptions, b), j = c.onclick, h = c.menuItems, g, e, l = {
192
+ stroke: c.symbolStroke,
193
+ fill: c.symbolFill
194
+ }, q = c.symbolSize || 12;
195
+ if (!a.btnCount)a.btnCount =
196
+ 0;
197
+ if (!a.exportDivElements)a.exportDivElements = [], a.exportSVGElements = [];
198
+ if (c.enabled !== !1) {
199
+ var m = c.theme, n = m.states, o = n && n.hover, n = n && n.select, i;
200
+ delete m.states;
201
+ j ? i = function () {
202
+ j.apply(a, arguments)
203
+ } : h && (i = function () {
204
+ a.contextMenu(e.menuClassName, h, e.translateX, e.translateY, e.width, e.height, e);
205
+ e.setState(2)
206
+ });
207
+ c.text && c.symbol ? m.paddingLeft = f.pick(m.paddingLeft, 25) : c.text || p(m, {
208
+ width: c.width,
209
+ height: c.height,
210
+ padding: 0
211
+ });
212
+ e = d.button(c.text, 0, 0, i, m, o, n).attr({
213
+ title: a.options.lang[c._titleKey],
214
+ "stroke-linecap": "round"
215
+ });
216
+ e.menuClassName = b.menuClassName || "highcharts-menu-" + a.btnCount++;
217
+ c.symbol && (g = d.symbol(c.symbol, c.symbolX - q / 2, c.symbolY - q / 2, q, q).attr(p(l, {
218
+ "stroke-width": c.symbolStrokeWidth || 1,
219
+ zIndex: 1
220
+ })).add(e));
221
+ e.add().align(p(c, {width: e.width, x: f.pick(c.x, y)}), !0, "spacingBox");
222
+ y += (e.width + c.buttonSpacing) * (c.align === "right" ? -1 : 1);
223
+ a.exportSVGElements.push(e, g)
224
+ }
225
+ }, destroyExport: function (b) {
226
+ var b = b.target, a, d;
227
+ for (a = 0; a < b.exportSVGElements.length; a++)if (d = b.exportSVGElements[a])d.onclick = d.ontouchstart = null, b.exportSVGElements[a] =
228
+ d.destroy();
229
+ for (a = 0; a < b.exportDivElements.length; a++)d = b.exportDivElements[a], B(d, "mouseleave"), b.exportDivElements[a] = d.onmouseout = d.onmouseover = d.ontouchstart = d.onclick = null, o(d)
230
+ }
231
+ });
232
+ F.menu = function (b, a, d, c) {
233
+ return ["M", b, a + 2.5, "L", b + d, a + 2.5, "M", b, a + c / 2 + 0.5, "L", b + d, a + c / 2 + 0.5, "M", b, a + c - 1.5, "L", b + d, a + c - 1.5]
234
+ };
235
+ A.prototype.callbacks.push(function (b) {
236
+ var a, d = b.options.exporting, c = d.buttons;
237
+ y = 0;
238
+ if (d.enabled !== !1) {
239
+ for (a in c)b.addButton(c[a]);
240
+ t(b, "destroy", b.destroyExport)
241
+ }
242
+ })
243
+ })(Highcharts);
js/highcharts-3d.js CHANGED
@@ -4,38 +4,562 @@
4
  (c) 2009-2013 Torstein Hønsi
5
 
6
  License: www.highcharts.com/license
7
- */
8
- (function(c){function x(e,a,b,d){var f,g,h;b*=n;a*=n;var i=[],j,o,t;b*=-1;j=d.x;o=d.y;t=(d.z===0?1.0E-4:d.z)*(d.vd||25);var y=k(b),v=l(b),m=k(a),q=l(a),r,u,s;c.each(e,function(a){r=a.x-j;u=a.y-o;s=a.z||0;f=v*r-y*s;g=-y*m*r-v*m*s+q*u;h=y*q*r+v*q*s+m*u;f=f*((t-h)/t)+j;g=g*((t-h)/t)+o;i.push({x:C(f),y:C(g),z:C(h)})});return i}function z(e,a,b,d,f,c,h,i){var j=[];return c>f&&c-f>m/2+1.0E-4?(j=j.concat(z(e,a,b,d,f,f+m/2,h,i)),j=j.concat(z(e,a,b,d,f+m/2,c,h,i))):c<f&&f-c>m/2+1.0E-4?(j=j.concat(z(e,a,b,
9
- d,f,f-m/2,h,i)),j=j.concat(z(e,a,b,d,f-m/2,c,h,i))):(j=c-f,["C",e+b*l(f)-b*D*j*k(f)+h,a+d*k(f)+d*D*j*l(f)+i,e+b*l(c)+b*D*j*k(c)+h,a+d*k(c)-d*D*j*l(c)+i,e+b*l(c)+h,a+d*k(c)+i])}function F(e){if(this.chart.is3d()){var a=this.chart.options.plotOptions.column.grouping;a!==void 0&&!a&&this.group.zIndex!==void 0&&this.group.attr({zIndex:this.group.zIndex*10});if(this.userOptions.borderColor===void 0)this.options.borderColor=this.color;c.each(this.data,function(a){var d=a.options.borderColor||a.color||a.series.userOptions.borderColor;
10
- a.options.borderColor=d;a.borderColor=d;a.pointAttr[""].stroke=d;a.pointAttr.hover.stroke=d;a.pointAttr.select.stroke=d})}e.apply(this,[].slice.call(arguments,1))}var m=Math.PI,n=m/180,k=Math.sin,l=Math.cos,C=Math.round,D=4*(Math.sqrt(2)-1)/3/(m/2);c.SVGRenderer.prototype.toLinePath=function(e,a){var b=[];c.each(e,function(a){b.push("L",a.x,a.y)});b[0]="M";a&&b.push("Z");return b};c.SVGRenderer.prototype.cuboid=function(e){var a=this.g(),e=this.cuboidPath(e);a.front=this.path(e[0]).attr({zIndex:e[3],
11
- "stroke-linejoin":"round"}).add(a);a.top=this.path(e[1]).attr({zIndex:e[4],"stroke-linejoin":"round"}).add(a);a.side=this.path(e[2]).attr({zIndex:e[5],"stroke-linejoin":"round"}).add(a);a.fillSetter=function(a){var d=c.Color(a).brighten(0.1).get(),e=c.Color(a).brighten(-0.1).get();this.front.attr({fill:a});this.top.attr({fill:d});this.side.attr({fill:e});this.color=a;return this};a.opacitySetter=function(a){this.front.attr({opacity:a});this.top.attr({opacity:a});this.side.attr({opacity:a});return this};
12
- a.attr=function(a){a.shapeArgs||a.x?(a=this.renderer.cuboidPath(a.shapeArgs||a),this.front.attr({d:a[0],zIndex:a[3]}),this.top.attr({d:a[1],zIndex:a[4]}),this.side.attr({d:a[2],zIndex:a[5]})):c.SVGElement.prototype.attr.call(this,a);return this};a.animate=function(a,d,e){a.x&&a.y?(a=this.renderer.cuboidPath(a),this.front.attr({zIndex:a[3]}).animate({d:a[0]},d,e),this.top.attr({zIndex:a[4]}).animate({d:a[1]},d,e),this.side.attr({zIndex:a[5]}).animate({d:a[2]},d,e)):a.opacity?(this.front.animate(a,
13
- d,e),this.top.animate(a,d,e),this.side.animate(a,d,e)):c.SVGElement.prototype.animate.call(this,a,d,e);return this};a.destroy=function(){this.front.destroy();this.top.destroy();this.side.destroy();return null};a.attr({zIndex:-e[3]});return a};c.SVGRenderer.prototype.cuboidPath=function(e){var a=e.x,b=e.y,d=e.z,c=e.height,g=e.width,h=e.depth,i=e.alpha,j=e.beta,a=[{x:a,y:b,z:d},{x:a+g,y:b,z:d},{x:a+g,y:b+c,z:d},{x:a,y:b+c,z:d},{x:a,y:b+c,z:d+h},{x:a+g,y:b+c,z:d+h},{x:a+g,y:b,z:d+h},{x:a,y:b,z:d+h}],
14
- a=x(a,i,j,e.origin),e=["M",a[0].x,a[0].y,"L",a[7].x,a[7].y,"L",a[6].x,a[6].y,"L",a[1].x,a[1].y,"Z"],b=["M",a[3].x,a[3].y,"L",a[2].x,a[2].y,"L",a[5].x,a[5].y,"L",a[4].x,a[4].y,"Z"],d=["M",a[1].x,a[1].y,"L",a[2].x,a[2].y,"L",a[5].x,a[5].y,"L",a[6].x,a[6].y,"Z"],c=["M",a[0].x,a[0].y,"L",a[7].x,a[7].y,"L",a[4].x,a[4].y,"L",a[3].x,a[3].y,"Z"];return[["M",a[0].x,a[0].y,"L",a[1].x,a[1].y,"L",a[2].x,a[2].y,"L",a[3].x,a[3].y,"Z"],a[7].y<a[1].y?e:a[4].y>a[2].y?b:[],a[6].x>a[1].x?d:a[7].x<a[0].x?c:[],(a[0].z+
15
- a[1].z+a[2].z+a[3].z)/4,j>0?(a[0].z+a[7].z+a[6].z+a[1].z)/4:(a[3].z+a[2].z+a[5].z+a[4].z)/4,i>0?(a[1].z+a[2].z+a[5].z+a[6].z)/4:(a[0].z+a[7].z+a[4].z+a[3].z)/4]};c.SVGRenderer.prototype.arc3d=function(e){e.alpha*=n;e.beta*=n;var a=this.g(),b=this.arc3dPath(e),d=a.renderer,f=b.zAll*100;a.shapeArgs=e;a.side1=d.path(b.side2).attr({zIndex:b.zSide2}).add(a);a.side2=d.path(b.side1).attr({zIndex:b.zSide1}).add(a);a.inn=d.path(b.inn).attr({zIndex:b.zInn}).add(a);a.out=d.path(b.out).attr({zIndex:b.zOut}).add(a);
16
- a.top=d.path(b.top).attr({zIndex:b.zTop}).add(a);a.fillSetter=function(a){this.color=a;var b=c.Color(a).brighten(-0.1).get();this.side1.attr({fill:b});this.side2.attr({fill:b});this.inn.attr({fill:b});this.out.attr({fill:b});this.top.attr({fill:a});return this};a.animate=function(a,b,d){c.SVGElement.prototype.animate.call(this,a,b,d);if(a.x&&a.y)b=this.renderer,a=c.splat(a)[0],a.alpha*=n,a.beta*=n,b=b.arc3dPath(a),this.shapeArgs=a,this.inn.attr({d:b.inn,zIndex:b.zInn}),this.out.attr({d:b.out,zIndex:b.zOut}),
17
- this.side1.attr({d:b.side1,zIndex:b.zSide2}),this.side2.attr({d:b.side2,zIndex:b.zSide1}),this.top.attr({d:b.top,zIndex:b.zTop}),this.attr({fill:this.color}),this.attr({zIndex:b.zAll*100});return this};a.zIndex=f;a.attr({zIndex:f});return a};c.SVGRenderer.prototype.arc3dPath=function(e){var a=e.x,b=e.y,d=e.start,c=e.end-1.0E-5,g=e.r,h=e.innerR,i=e.depth,j=e.alpha,o=e.beta,t=l(d),y=k(d),v=l(c),n=k(c),q=g*l(o),r=g*l(j),u=h*l(o),s=h*l(j),A=i*k(o),B=i*k(j),i=["M",a+q*t,b+r*y],i=i.concat(z(a,b,q,r,d,c,
18
- 0,0)),i=i.concat(["L",a+u*v,b+s*n]),i=i.concat(z(a,b,u,s,c,d,0,0)),i=i.concat(["Z"]),e=(e.start+e.end)/2,e=k(o)*l(e)+k(-j)*k(-e),p=o>0?m/2:0,w=j>0?0:m/2,p=d>-p?d:c>-p?-p:d,x=c<m-w?c:d<m-w?m-w:c,w=["M",a+q*l(p),b+r*k(p)],w=w.concat(z(a,b,q,r,p,x,0,0)),w=w.concat(["L",a+q*l(x)+A,b+r*k(x)+B]),w=w.concat(z(a,b,q,r,x,p,A,B)),w=w.concat(["Z"]),p=["M",a+u*t,b+s*y],p=p.concat(z(a,b,u,s,d,c,0,0)),p=p.concat(["L",a+u*l(c)+A,b+s*k(c)+B]),p=p.concat(z(a,b,u,s,c,d,A,B)),p=p.concat(["Z"]),t=["M",a+q*t,b+r*y,"L",
19
- a+q*t+A,b+r*y+B,"L",a+u*t+A,b+s*y+B,"L",a+u*t,b+s*y,"Z"],a=["M",a+q*v,b+r*n,"L",a+q*v+A,b+r*n+B,"L",a+u*v+A,b+s*n+B,"L",a+u*v,b+s*n,"Z"],v=h+(g-h)/2,b=Math.abs(e*2*v);g*=e;h*=e;d=(k(o)*l(d)+k(-j)*k(-d))*v;c=(k(o)*l(c)+k(-j)*k(-c))*v;return{top:i,zTop:b*100,out:w,zOut:g*100,inn:p,zInn:h*100,side1:t,zSide1:d*100,side2:a,zSide2:c*100,zAll:e}};c.Chart.prototype.is3d=function(){return this.options.chart.options3d&&this.options.chart.options3d.enabled};c.wrap(c.Chart.prototype,"isInsidePlot",function(c){return this.is3d()?
20
- !0:c.apply(this,[].slice.call(arguments,1))});c.wrap(c.Chart.prototype,"init",function(e){var a=arguments;a[1]=c.merge({chart:{options3d:{enabled:!1,alpha:0,beta:0,depth:100,viewDistance:25,frame:{bottom:{size:1,color:"rgba(255,255,255,0)"},side:{size:1,color:"rgba(255,255,255,0)"},back:{size:1,color:"rgba(255,255,255,0)"}}}}},a[1]);e.apply(this,[].slice.call(a,1))});c.wrap(c.Chart.prototype,"setChartSize",function(c){c.apply(this,[].slice.call(arguments,1));if(this.is3d()){var a=this.inverted,b=
21
- this.clipBox,d=this.margin;b[a?"y":"x"]=-(d[3]||0);b[a?"x":"y"]=-(d[0]||0);b[a?"height":"width"]=this.chartWidth+(d[3]||0)+(d[1]||0);b[a?"width":"height"]=this.chartHeight+(d[0]||0)+(d[2]||0)}});c.wrap(c.Chart.prototype,"redraw",function(c){if(this.is3d())this.isDirtyBox=!0;c.apply(this,[].slice.call(arguments,1))});c.Chart.prototype.retrieveStacks=function(){var e={},a=this.options.plotOptions[this.options.chart.type],b=a.stacking,d=1;if(a.grouping||!b)return this.series;c.each(this.series,function(a){e[a.options.stack||
22
- 0]?e[a.options.stack||0].series.push(a):(e[a.options.stack||0]={series:[a],position:d},d++)});e.totalStacks=d+1;return e};c.wrap(c.Axis.prototype,"init",function(e){var a=arguments;if(a[1].is3d())a[2].tickWidth=c.pick(a[2].tickWidth,0),a[2].gridLineWidth=c.pick(a[2].gridLineWidth,1);e.apply(this,[].slice.call(arguments,1))});c.wrap(c.Axis.prototype,"render",function(c){c.apply(this,[].slice.call(arguments,1));if(this.chart.is3d()){var a=this.chart,b=a.renderer,d=a.options.chart.options3d,f=d.alpha,
23
- g=d.beta*(a.yAxis[0].opposite?-1:1),h=d.frame,i=h.bottom,j=h.back,h=h.side,o=d.depth,k=this.height,l=this.width,m=this.left,n=this.top,d={x:a.plotLeft+a.plotWidth/2,y:a.plotTop+a.plotHeight/2,z:o,vd:d.viewDistance};if(this.horiz)this.axisLine&&this.axisLine.hide(),g={x:m,y:n+(a.yAxis[0].reversed?-i.size:k),z:0,width:l,height:i.size,depth:o,alpha:f,beta:g,origin:d},this.bottomFrame?this.bottomFrame.animate(g):this.bottomFrame=b.cuboid(g).attr({fill:i.color,zIndex:a.yAxis[0].reversed&&f>0?4:-1}).css({stroke:i.color}).add();
24
- else{var q={x:m,y:n,z:o+1,width:l,height:k+i.size,depth:j.size,alpha:f,beta:g,origin:d};this.backFrame?this.backFrame.animate(q):this.backFrame=b.cuboid(q).attr({fill:j.color,zIndex:-3}).css({stroke:j.color}).add();this.axisLine&&this.axisLine.hide();a={x:(a.yAxis[0].opposite?l:0)+m-h.size,y:n,z:0,width:h.size,height:k+i.size,depth:o+j.size,alpha:f,beta:g,origin:d};this.sideFrame?this.sideFrame.animate(a):this.sideFrame=b.cuboid(a).attr({fill:h.color,zIndex:-2}).css({stroke:h.color}).add()}}});c.wrap(c.Axis.prototype,
25
- "getPlotLinePath",function(c){var a=c.apply(this,[].slice.call(arguments,1));if(!this.chart.is3d())return a;if(a===null)return a;var b=this.chart,d=b.options.chart.options3d,f=d.depth;d.origin={x:b.plotLeft+b.plotWidth/2,y:b.plotTop+b.plotHeight/2,z:f,vd:d.viewDistance};var a=[{x:a[1],y:a[2],z:this.horiz||this.opposite?f:0},{x:a[1],y:a[2],z:f},{x:a[4],y:a[5],z:f},{x:a[4],y:a[5],z:this.horiz||this.opposite?0:f}],f=b.options.inverted?d.beta:d.alpha,g=b.options.inverted?d.alpha:d.beta;g*=b.yAxis[0].opposite?
26
- -1:1;a=x(a,f,g,d.origin);return a=this.chart.renderer.toLinePath(a,!1)});c.wrap(c.Tick.prototype,"getMarkPath",function(c){var a=c.apply(this,[].slice.call(arguments,1));if(!this.axis.chart.is3d())return a;var b=this.axis.chart,d=b.options.chart.options3d,f={x:b.plotLeft+b.plotWidth/2,y:b.plotTop+b.plotHeight/2,z:d.depth,vd:d.viewDistance},a=[{x:a[1],y:a[2],z:0},{x:a[4],y:a[5],z:0}],g=b.inverted?d.beta:d.alpha,d=b.inverted?d.alpha:d.beta;d*=b.yAxis[0].opposite?-1:1;a=x(a,g,d,f);return a=["M",a[0].x,
27
- a[0].y,"L",a[1].x,a[1].y]});c.wrap(c.Tick.prototype,"getLabelPosition",function(c){var a=c.apply(this,[].slice.call(arguments,1));if(!this.axis.chart.is3d())return a;var b=this.axis.chart,d=b.options.chart.options3d,f={x:b.plotLeft+b.plotWidth/2,y:b.plotTop+b.plotHeight/2,z:d.depth,vd:d.viewDistance},g=b.inverted?d.beta:d.alpha,d=b.inverted?d.alpha:d.beta;d*=b.yAxis[0].opposite?-1:1;return a=x([{x:a.x,y:a.y,z:0}],g,d,f)[0]});c.wrap(c.Axis.prototype,"drawCrosshair",function(c){var a=arguments;this.chart.is3d()&&
28
- a[2]&&(a[2]={plotX:a[2].plotXold||a[2].plotX,plotY:a[2].plotYold||a[2].plotY});c.apply(this,[].slice.call(a,1))});c.wrap(c.seriesTypes.column.prototype,"translate",function(e){e.apply(this,[].slice.call(arguments,1));if(this.chart.is3d()){var a=this.chart,b=a.options,d=b.plotOptions[this.chart.options.chart.type],b=b.chart.options3d,f=d.depth||25,g={x:a.plotWidth/2,y:a.plotHeight/2,z:b.depth,vd:b.viewDistance},h=b.alpha,i=b.beta*(a.yAxis[0].opposite?-1:1),j=(d.stacking?this.options.stack||0:this._i)*
29
- (f+(d.groupZPadding||1));d.grouping!==!1&&(j=0);j+=d.groupZPadding||1;c.each(this.data,function(a){var b=a.shapeArgs,c=a.tooltipPos;a.shapeType="cuboid";b.alpha=h;b.beta=i;b.z=j;b.origin=g;b.depth=f;c=x([{x:c[0],y:c[1],z:j}],h,i,g)[0];a.tooltipPos=[c.x,c.y]})}});c.wrap(c.seriesTypes.column.prototype,"animate",function(e){if(this.chart.is3d()){var a=arguments[1],b=this.yAxis,d=this,f=this.yAxis.reversed;if(c.svg)a?c.each(d.data,function(a){a.height=a.shapeArgs.height;a.shapeArgs.height=1;if(!f)a.shapeArgs.y=
30
- a.stackY?a.plotY+b.translate(a.stackY):a.plotY+(a.negative?-a.height:a.height)}):(c.each(d.data,function(a){a.shapeArgs.height=a.height;if(!f)a.shapeArgs.y=a.plotY-(a.negative?a.height:0);a.graphic&&a.graphic.animate(a.shapeArgs,d.options.animation)}),d.animate=null)}else e.apply(this,[].slice.call(arguments,1))});c.wrap(c.seriesTypes.column.prototype,"init",function(c){c.apply(this,[].slice.call(arguments,1));if(this.chart.is3d()){var a=this.chart.options.plotOptions.column.grouping,b=this.chart.options.plotOptions.column.stacking,
31
- d=this.options.zIndex;if(!d&&(a===void 0||a)&&b){a=this.chart.retrieveStacks();b=this.options.stack||0;for(d=0;d<a[b].series.length;d++)if(a[b].series[d]===this)break;d=a.totalStacks*10-10*(a.totalStacks-a[b].position)-d;this.options.zIndex=d}}});c.seriesTypes.columnrange&&c.wrap(c.seriesTypes.columnrange.prototype,"drawPoints",F);c.wrap(c.seriesTypes.column.prototype,"drawPoints",F);var E=c.getOptions();E.plotOptions.cylinder=c.merge(E.plotOptions.column);E=c.extendClass(c.seriesTypes.column,{type:"cylinder"});
32
- c.seriesTypes.cylinder=E;c.wrap(c.seriesTypes.cylinder.prototype,"translate",function(e){e.apply(this,[].slice.call(arguments,1));if(this.chart.is3d()){var a=this.chart,b=a.options,d=b.plotOptions.cylinder,b=b.chart.options3d,f=d.depth||0,g={x:a.inverted?a.plotHeight/2:a.plotWidth/2,y:a.inverted?a.plotWidth/2:a.plotHeight/2,z:b.depth,vd:b.viewDistance},h=b.alpha,i=d.stacking?(this.options.stack||0)*f:this._i*f;i+=f/2;d.grouping!==!1&&(i=0);c.each(this.data,function(a){var b=a.shapeArgs;a.shapeType=
33
- "arc3d";b.x+=f/2;b.z=i;b.start=0;b.end=2*m;b.r=f*0.95;b.innerR=0;b.depth=b.height*(1/k((90-h)*n))-i;b.alpha=90-h;b.beta=0;b.origin=g})}});c.wrap(c.seriesTypes.pie.prototype,"translate",function(e){e.apply(this,[].slice.call(arguments,1));if(this.chart.is3d()){var a=this,b=a.chart,d=b.options,f=d.plotOptions.pie,g=f.depth||0,d=d.chart.options3d,h={x:b.plotWidth/2,y:b.plotHeight/2,z:d.depth},i=d.alpha,j=d.beta,o=f.stacking?(this.options.stack||0)*g:a._i*g;o+=g/2;f.grouping!==!1&&(o=0);c.each(a.data,
34
- function(b){b.shapeType="arc3d";var c=b.shapeArgs;c.z=o;c.depth=g*0.75;c.origin=h;c.alpha=i;c.beta=j;c=(c.end+c.start)/2;b.slicedTranslation={translateX:C(l(c)*a.options.slicedOffset*l(i*n)),translateY:C(k(c)*a.options.slicedOffset*l(i*n))}})}});c.wrap(c.seriesTypes.pie.prototype.pointClass.prototype,"haloPath",function(c){return this.series.chart.is3d()?[]:c.call(this)});c.wrap(c.seriesTypes.pie.prototype,"drawPoints",function(e){this.chart.is3d()&&c.each(this.data,function(a){var b=a.options.borderColor||
35
- a.color||a.series.userOptions.borderColor||a.series.color;a.options.borderColor=b;a.borderColor=b;a.pointAttr[""].stroke=b;a.pointAttr.hover.stroke=b;a.pointAttr.select.stroke=b});e.apply(this,[].slice.call(arguments,1))});c.wrap(c.seriesTypes.pie.prototype,"drawDataLabels",function(e){e.apply(this,[].slice.call(arguments,1));this.chart.is3d()&&c.each(this.data,function(a){var b=a.shapeArgs,c=b.r,e=b.depth,g=b.alpha*n,h=b.beta*n,b=(b.start+b.end)/2;a.connector&&a.connector.translate(-c*(1-l(h))*l(b)+
36
- (l(b)>0?k(h)*e:0),-c*(1-l(g))*k(b)+(k(b)>0?k(g)*e:0));a.dataLabel&&a.dataLabel.attr({x:a.dataLabel.connX+-c*(1-l(h))*l(b)+(l(b)>0?l(h)*e:0)-a.dataLabel.width/2,y:a.dataLabel.connY+-c*(1-l(g))*k(b)+(k(b)>0?k(g)*e:0)-a.dataLabel.height/2})})});c.wrap(c.seriesTypes.pie.prototype,"addPoint",function(c){c.apply(this,[].slice.call(arguments,1));this.chart.is3d()&&this.update()});c.wrap(c.seriesTypes.pie.prototype,"animate",function(e){if(this.chart.is3d()){var a=arguments[1],b=this.options.animation,d=
37
- this.center,f=this.group,g=this.markerGroup;if(c.svg)if(b===!0&&(b={}),a){if(this.oldtranslateX=f.translateX,this.oldtranslateY=f.translateY,a={translateX:d[0],translateY:d[1],scaleX:0.001,scaleY:0.001},f.attr(a),g)g.attrSetters=f.attrSetters,g.attr(a)}else a={translateX:this.oldtranslateX,translateY:this.oldtranslateY,scaleX:1,scaleY:1},f.animate(a,b),g&&g.animate(a,b),this.animate=null}else e.apply(this,[].slice.call(arguments,1))});c.wrap(c.seriesTypes.scatter.prototype,"translate",function(e){e.apply(this,
38
- [].slice.call(arguments,1));if(this.chart.is3d()){var a=this.chart,b=this.chart.options.chart.options3d,d=b.alpha,f=b.beta,g={x:a.inverted?a.plotHeight/2:a.plotWidth/2,y:a.inverted?a.plotWidth/2:a.plotHeight/2,z:b.depth,vd:b.viewDistance},b=b.depth,h=a.options.zAxis||{min:0,max:b},i=b/(h.max-h.min);c.each(this.data,function(a){var b={x:a.plotX,y:a.plotY,z:(a.z-h.min)*i},b=x([b],d,f,g)[0];a.plotXold=a.plotX;a.plotYold=a.plotY;a.plotX=b.x;a.plotY=b.y;a.plotZ=b.z})}});c.wrap(c.seriesTypes.scatter.prototype,
39
- "init",function(c){var a=c.apply(this,[].slice.call(arguments,1));if(this.chart.is3d())this.pointArrayMap=["x","y","z"],this.tooltipOptions.pointFormat=this.userOptions.tooltip?this.userOptions.tooltip.pointFormat||"x: <b>{point.x}</b><br/>y: <b>{point.y}</b><br/>z: <b>{point.z}</b><br/>":"x: <b>{point.x}</b><br/>y: <b>{point.y}</b><br/>z: <b>{point.z}</b><br/>";return a});if(c.VMLRenderer)c.setOptions({animate:!1}),c.VMLRenderer.prototype.cuboid=c.SVGRenderer.prototype.cuboid,c.VMLRenderer.prototype.cuboidPath=
40
- c.SVGRenderer.prototype.cuboidPath,c.VMLRenderer.prototype.toLinePath=c.SVGRenderer.prototype.toLinePath,c.VMLRenderer.prototype.createElement3D=c.SVGRenderer.prototype.createElement3D,c.VMLRenderer.prototype.arc3d=function(e){e=c.SVGRenderer.prototype.arc3d.call(this,e);e.css({zIndex:e.zIndex});return e},c.VMLRenderer.prototype.arc3dPath=c.SVGRenderer.prototype.arc3dPath,c.Chart.prototype.renderSeries=function(){for(var c,a=this.series.length;a--;)c=this.series[a],c.translate(),c.setTooltipPoints&&
41
- c.setTooltipPoints(),c.render()},c.wrap(c.Axis.prototype,"render",function(c){c.apply(this,[].slice.call(arguments,1));this.sideFrame&&(this.sideFrame.css({zIndex:0}),this.sideFrame.front.attr({fill:this.sideFrame.color}));this.bottomFrame&&(this.bottomFrame.css({zIndex:1}),this.bottomFrame.front.attr({fill:this.bottomFrame.color}));this.backFrame&&(this.backFrame.css({zIndex:0}),this.backFrame.front.attr({fill:this.backFrame.color}))})})(Highcharts);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4
  (c) 2009-2013 Torstein Hønsi
5
 
6
  License: www.highcharts.com/license
7
+ */
8
+ (function (c) {
9
+ function x(e, a, b, d) {
10
+ var f, g, h;
11
+ b *= n;
12
+ a *= n;
13
+ var i = [], j, o, t;
14
+ b *= -1;
15
+ j = d.x;
16
+ o = d.y;
17
+ t = (d.z === 0 ? 1.0E-4 : d.z) * (d.vd || 25);
18
+ var y = k(b), v = l(b), m = k(a), q = l(a), r, u, s;
19
+ c.each(e, function (a) {
20
+ r = a.x - j;
21
+ u = a.y - o;
22
+ s = a.z || 0;
23
+ f = v * r - y * s;
24
+ g = -y * m * r - v * m * s + q * u;
25
+ h = y * q * r + v * q * s + m * u;
26
+ f = f * ((t - h) / t) + j;
27
+ g = g * ((t - h) / t) + o;
28
+ i.push({x: C(f), y: C(g), z: C(h)})
29
+ });
30
+ return i
31
+ }
32
+
33
+ function z(e, a, b, d, f, c, h, i) {
34
+ var j = [];
35
+ return c > f && c - f > m / 2 + 1.0E-4 ? (j = j.concat(z(e, a, b, d, f, f + m / 2, h, i)), j = j.concat(z(e, a, b, d, f + m / 2, c, h, i))) : c < f && f - c > m / 2 + 1.0E-4 ? (j = j.concat(z(e, a, b,
36
+ d, f, f - m / 2, h, i)), j = j.concat(z(e, a, b, d, f - m / 2, c, h, i))) : (j = c - f, ["C", e + b * l(f) - b * D * j * k(f) + h, a + d * k(f) + d * D * j * l(f) + i, e + b * l(c) + b * D * j * k(c) + h, a + d * k(c) - d * D * j * l(c) + i, e + b * l(c) + h, a + d * k(c) + i])
37
+ }
38
+
39
+ function F(e) {
40
+ if (this.chart.is3d()) {
41
+ var a = this.chart.options.plotOptions.column.grouping;
42
+ a !== void 0 && !a && this.group.zIndex !== void 0 && this.group.attr({zIndex: this.group.zIndex * 10});
43
+ if (this.userOptions.borderColor === void 0)this.options.borderColor = this.color;
44
+ c.each(this.data, function (a) {
45
+ var d = a.options.borderColor || a.color || a.series.userOptions.borderColor;
46
+ a.options.borderColor = d;
47
+ a.borderColor = d;
48
+ a.pointAttr[""].stroke = d;
49
+ a.pointAttr.hover.stroke = d;
50
+ a.pointAttr.select.stroke = d
51
+ })
52
+ }
53
+ e.apply(this, [].slice.call(arguments, 1))
54
+ }
55
+
56
+ var m = Math.PI, n = m / 180, k = Math.sin, l = Math.cos, C = Math.round, D = 4 * (Math.sqrt(2) - 1) / 3 / (m / 2);
57
+ c.SVGRenderer.prototype.toLinePath = function (e, a) {
58
+ var b = [];
59
+ c.each(e, function (a) {
60
+ b.push("L", a.x, a.y)
61
+ });
62
+ b[0] = "M";
63
+ a && b.push("Z");
64
+ return b
65
+ };
66
+ c.SVGRenderer.prototype.cuboid = function (e) {
67
+ var a = this.g(), e = this.cuboidPath(e);
68
+ a.front = this.path(e[0]).attr({
69
+ zIndex: e[3],
70
+ "stroke-linejoin": "round"
71
+ }).add(a);
72
+ a.top = this.path(e[1]).attr({zIndex: e[4], "stroke-linejoin": "round"}).add(a);
73
+ a.side = this.path(e[2]).attr({zIndex: e[5], "stroke-linejoin": "round"}).add(a);
74
+ a.fillSetter = function (a) {
75
+ var d = c.Color(a).brighten(0.1).get(), e = c.Color(a).brighten(-0.1).get();
76
+ this.front.attr({fill: a});
77
+ this.top.attr({fill: d});
78
+ this.side.attr({fill: e});
79
+ this.color = a;
80
+ return this
81
+ };
82
+ a.opacitySetter = function (a) {
83
+ this.front.attr({opacity: a});
84
+ this.top.attr({opacity: a});
85
+ this.side.attr({opacity: a});
86
+ return this
87
+ };
88
+ a.attr = function (a) {
89
+ a.shapeArgs || a.x ? (a = this.renderer.cuboidPath(a.shapeArgs || a), this.front.attr({
90
+ d: a[0],
91
+ zIndex: a[3]
92
+ }), this.top.attr({d: a[1], zIndex: a[4]}), this.side.attr({
93
+ d: a[2],
94
+ zIndex: a[5]
95
+ })) : c.SVGElement.prototype.attr.call(this, a);
96
+ return this
97
+ };
98
+ a.animate = function (a, d, e) {
99
+ a.x && a.y ? (a = this.renderer.cuboidPath(a), this.front.attr({zIndex: a[3]}).animate({d: a[0]}, d, e), this.top.attr({zIndex: a[4]}).animate({d: a[1]}, d, e), this.side.attr({zIndex: a[5]}).animate({d: a[2]}, d, e)) : a.opacity ? (this.front.animate(a,
100
+ d, e), this.top.animate(a, d, e), this.side.animate(a, d, e)) : c.SVGElement.prototype.animate.call(this, a, d, e);
101
+ return this
102
+ };
103
+ a.destroy = function () {
104
+ this.front.destroy();
105
+ this.top.destroy();
106
+ this.side.destroy();
107
+ return null
108
+ };
109
+ a.attr({zIndex: -e[3]});
110
+ return a
111
+ };
112
+ c.SVGRenderer.prototype.cuboidPath = function (e) {
113
+ var a = e.x, b = e.y, d = e.z, c = e.height, g = e.width, h = e.depth, i = e.alpha, j = e.beta, a = [{
114
+ x: a,
115
+ y: b,
116
+ z: d
117
+ }, {x: a + g, y: b, z: d}, {x: a + g, y: b + c, z: d}, {x: a, y: b + c, z: d}, {
118
+ x: a,
119
+ y: b + c,
120
+ z: d + h
121
+ }, {x: a + g, y: b + c, z: d + h}, {x: a + g, y: b, z: d + h}, {x: a, y: b, z: d + h}],
122
+ a = x(a, i, j, e.origin), e = ["M", a[0].x, a[0].y, "L", a[7].x, a[7].y, "L", a[6].x, a[6].y, "L", a[1].x, a[1].y, "Z"], b = ["M", a[3].x, a[3].y, "L", a[2].x, a[2].y, "L", a[5].x, a[5].y, "L", a[4].x, a[4].y, "Z"], d = ["M", a[1].x, a[1].y, "L", a[2].x, a[2].y, "L", a[5].x, a[5].y, "L", a[6].x, a[6].y, "Z"], c = ["M", a[0].x, a[0].y, "L", a[7].x, a[7].y, "L", a[4].x, a[4].y, "L", a[3].x, a[3].y, "Z"];
123
+ return [["M", a[0].x, a[0].y, "L", a[1].x, a[1].y, "L", a[2].x, a[2].y, "L", a[3].x, a[3].y, "Z"], a[7].y < a[1].y ? e : a[4].y > a[2].y ? b : [], a[6].x > a[1].x ? d : a[7].x < a[0].x ? c : [], (a[0].z +
124
+ a[1].z + a[2].z + a[3].z) / 4, j > 0 ? (a[0].z + a[7].z + a[6].z + a[1].z) / 4 : (a[3].z + a[2].z + a[5].z + a[4].z) / 4, i > 0 ? (a[1].z + a[2].z + a[5].z + a[6].z) / 4 : (a[0].z + a[7].z + a[4].z + a[3].z) / 4]
125
+ };
126
+ c.SVGRenderer.prototype.arc3d = function (e) {
127
+ e.alpha *= n;
128
+ e.beta *= n;
129
+ var a = this.g(), b = this.arc3dPath(e), d = a.renderer, f = b.zAll * 100;
130
+ a.shapeArgs = e;
131
+ a.side1 = d.path(b.side2).attr({zIndex: b.zSide2}).add(a);
132
+ a.side2 = d.path(b.side1).attr({zIndex: b.zSide1}).add(a);
133
+ a.inn = d.path(b.inn).attr({zIndex: b.zInn}).add(a);
134
+ a.out = d.path(b.out).attr({zIndex: b.zOut}).add(a);
135
+ a.top = d.path(b.top).attr({zIndex: b.zTop}).add(a);
136
+ a.fillSetter = function (a) {
137
+ this.color = a;
138
+ var b = c.Color(a).brighten(-0.1).get();
139
+ this.side1.attr({fill: b});
140
+ this.side2.attr({fill: b});
141
+ this.inn.attr({fill: b});
142
+ this.out.attr({fill: b});
143
+ this.top.attr({fill: a});
144
+ return this
145
+ };
146
+ a.animate = function (a, b, d) {
147
+ c.SVGElement.prototype.animate.call(this, a, b, d);
148
+ if (a.x && a.y)b = this.renderer, a = c.splat(a)[0], a.alpha *= n, a.beta *= n, b = b.arc3dPath(a), this.shapeArgs = a, this.inn.attr({
149
+ d: b.inn,
150
+ zIndex: b.zInn
151
+ }), this.out.attr({d: b.out, zIndex: b.zOut}),
152
+ this.side1.attr({d: b.side1, zIndex: b.zSide2}), this.side2.attr({
153
+ d: b.side2,
154
+ zIndex: b.zSide1
155
+ }), this.top.attr({
156
+ d: b.top,
157
+ zIndex: b.zTop
158
+ }), this.attr({fill: this.color}), this.attr({zIndex: b.zAll * 100});
159
+ return this
160
+ };
161
+ a.zIndex = f;
162
+ a.attr({zIndex: f});
163
+ return a
164
+ };
165
+ c.SVGRenderer.prototype.arc3dPath = function (e) {
166
+ var a = e.x, b = e.y, d = e.start, c = e.end - 1.0E-5, g = e.r, h = e.innerR, i = e.depth, j = e.alpha, o = e.beta, t = l(d), y = k(d), v = l(c), n = k(c), q = g * l(o), r = g * l(j), u = h * l(o), s = h * l(j), A = i * k(o), B = i * k(j), i = ["M", a + q * t, b + r * y], i = i.concat(z(a, b, q, r, d, c,
167
+ 0, 0)), i = i.concat(["L", a + u * v, b + s * n]), i = i.concat(z(a, b, u, s, c, d, 0, 0)), i = i.concat(["Z"]), e = (e.start + e.end) / 2, e = k(o) * l(e) + k(-j) * k(-e), p = o > 0 ? m / 2 : 0, w = j > 0 ? 0 : m / 2, p = d > -p ? d : c > -p ? -p : d, x = c < m - w ? c : d < m - w ? m - w : c, w = ["M", a + q * l(p), b + r * k(p)], w = w.concat(z(a, b, q, r, p, x, 0, 0)), w = w.concat(["L", a + q * l(x) + A, b + r * k(x) + B]), w = w.concat(z(a, b, q, r, x, p, A, B)), w = w.concat(["Z"]), p = ["M", a + u * t, b + s * y], p = p.concat(z(a, b, u, s, d, c, 0, 0)), p = p.concat(["L", a + u * l(c) + A, b + s * k(c) + B]), p = p.concat(z(a, b, u, s, c, d, A, B)), p = p.concat(["Z"]), t = ["M", a + q * t, b + r * y, "L",
168
+ a + q * t + A, b + r * y + B, "L", a + u * t + A, b + s * y + B, "L", a + u * t, b + s * y, "Z"], a = ["M", a + q * v, b + r * n, "L", a + q * v + A, b + r * n + B, "L", a + u * v + A, b + s * n + B, "L", a + u * v, b + s * n, "Z"], v = h + (g - h) / 2, b = Math.abs(e * 2 * v);
169
+ g *= e;
170
+ h *= e;
171
+ d = (k(o) * l(d) + k(-j) * k(-d)) * v;
172
+ c = (k(o) * l(c) + k(-j) * k(-c)) * v;
173
+ return {
174
+ top: i,
175
+ zTop: b * 100,
176
+ out: w,
177
+ zOut: g * 100,
178
+ inn: p,
179
+ zInn: h * 100,
180
+ side1: t,
181
+ zSide1: d * 100,
182
+ side2: a,
183
+ zSide2: c * 100,
184
+ zAll: e
185
+ }
186
+ };
187
+ c.Chart.prototype.is3d = function () {
188
+ return this.options.chart.options3d && this.options.chart.options3d.enabled
189
+ };
190
+ c.wrap(c.Chart.prototype, "isInsidePlot", function (c) {
191
+ return this.is3d() ?
192
+ !0 : c.apply(this, [].slice.call(arguments, 1))
193
+ });
194
+ c.wrap(c.Chart.prototype, "init", function (e) {
195
+ var a = arguments;
196
+ a[1] = c.merge({
197
+ chart: {
198
+ options3d: {
199
+ enabled: !1,
200
+ alpha: 0,
201
+ beta: 0,
202
+ depth: 100,
203
+ viewDistance: 25,
204
+ frame: {
205
+ bottom: {size: 1, color: "rgba(255,255,255,0)"},
206
+ side: {size: 1, color: "rgba(255,255,255,0)"},
207
+ back: {size: 1, color: "rgba(255,255,255,0)"}
208
+ }
209
+ }
210
+ }
211
+ }, a[1]);
212
+ e.apply(this, [].slice.call(a, 1))
213
+ });
214
+ c.wrap(c.Chart.prototype, "setChartSize", function (c) {
215
+ c.apply(this, [].slice.call(arguments, 1));
216
+ if (this.is3d()) {
217
+ var a = this.inverted, b =
218
+ this.clipBox, d = this.margin;
219
+ b[a ? "y" : "x"] = -(d[3] || 0);
220
+ b[a ? "x" : "y"] = -(d[0] || 0);
221
+ b[a ? "height" : "width"] = this.chartWidth + (d[3] || 0) + (d[1] || 0);
222
+ b[a ? "width" : "height"] = this.chartHeight + (d[0] || 0) + (d[2] || 0)
223
+ }
224
+ });
225
+ c.wrap(c.Chart.prototype, "redraw", function (c) {
226
+ if (this.is3d())this.isDirtyBox = !0;
227
+ c.apply(this, [].slice.call(arguments, 1))
228
+ });
229
+ c.Chart.prototype.retrieveStacks = function () {
230
+ var e = {}, a = this.options.plotOptions[this.options.chart.type], b = a.stacking, d = 1;
231
+ if (a.grouping || !b)return this.series;
232
+ c.each(this.series, function (a) {
233
+ e[a.options.stack ||
234
+ 0] ? e[a.options.stack || 0].series.push(a) : (e[a.options.stack || 0] = {series: [a], position: d}, d++)
235
+ });
236
+ e.totalStacks = d + 1;
237
+ return e
238
+ };
239
+ c.wrap(c.Axis.prototype, "init", function (e) {
240
+ var a = arguments;
241
+ if (a[1].is3d())a[2].tickWidth = c.pick(a[2].tickWidth, 0), a[2].gridLineWidth = c.pick(a[2].gridLineWidth, 1);
242
+ e.apply(this, [].slice.call(arguments, 1))
243
+ });
244
+ c.wrap(c.Axis.prototype, "render", function (c) {
245
+ c.apply(this, [].slice.call(arguments, 1));
246
+ if (this.chart.is3d()) {
247
+ var a = this.chart, b = a.renderer, d = a.options.chart.options3d, f = d.alpha,
248
+ g = d.beta * (a.yAxis[0].opposite ? -1 : 1), h = d.frame, i = h.bottom, j = h.back, h = h.side, o = d.depth, k = this.height, l = this.width, m = this.left, n = this.top, d = {
249
+ x: a.plotLeft + a.plotWidth / 2,
250
+ y: a.plotTop + a.plotHeight / 2,
251
+ z: o,
252
+ vd: d.viewDistance
253
+ };
254
+ if (this.horiz)this.axisLine && this.axisLine.hide(), g = {
255
+ x: m,
256
+ y: n + (a.yAxis[0].reversed ? -i.size : k),
257
+ z: 0,
258
+ width: l,
259
+ height: i.size,
260
+ depth: o,
261
+ alpha: f,
262
+ beta: g,
263
+ origin: d
264
+ }, this.bottomFrame ? this.bottomFrame.animate(g) : this.bottomFrame = b.cuboid(g).attr({
265
+ fill: i.color,
266
+ zIndex: a.yAxis[0].reversed && f > 0 ? 4 : -1
267
+ }).css({stroke: i.color}).add();
268
+ else {
269
+ var q = {
270
+ x: m,
271
+ y: n,
272
+ z: o + 1,
273
+ width: l,
274
+ height: k + i.size,
275
+ depth: j.size,
276
+ alpha: f,
277
+ beta: g,
278
+ origin: d
279
+ };
280
+ this.backFrame ? this.backFrame.animate(q) : this.backFrame = b.cuboid(q).attr({
281
+ fill: j.color,
282
+ zIndex: -3
283
+ }).css({stroke: j.color}).add();
284
+ this.axisLine && this.axisLine.hide();
285
+ a = {
286
+ x: (a.yAxis[0].opposite ? l : 0) + m - h.size,
287
+ y: n,
288
+ z: 0,
289
+ width: h.size,
290
+ height: k + i.size,
291
+ depth: o + j.size,
292
+ alpha: f,
293
+ beta: g,
294
+ origin: d
295
+ };
296
+ this.sideFrame ? this.sideFrame.animate(a) : this.sideFrame = b.cuboid(a).attr({
297
+ fill: h.color,
298
+ zIndex: -2
299
+ }).css({stroke: h.color}).add()
300
+ }
301
+ }
302
+ });
303
+ c.wrap(c.Axis.prototype,
304
+ "getPlotLinePath", function (c) {
305
+ var a = c.apply(this, [].slice.call(arguments, 1));
306
+ if (!this.chart.is3d())return a;
307
+ if (a === null)return a;
308
+ var b = this.chart, d = b.options.chart.options3d, f = d.depth;
309
+ d.origin = {x: b.plotLeft + b.plotWidth / 2, y: b.plotTop + b.plotHeight / 2, z: f, vd: d.viewDistance};
310
+ var a = [{x: a[1], y: a[2], z: this.horiz || this.opposite ? f : 0}, {x: a[1], y: a[2], z: f}, {
311
+ x: a[4],
312
+ y: a[5],
313
+ z: f
314
+ }, {
315
+ x: a[4],
316
+ y: a[5],
317
+ z: this.horiz || this.opposite ? 0 : f
318
+ }], f = b.options.inverted ? d.beta : d.alpha, g = b.options.inverted ? d.alpha : d.beta;
319
+ g *= b.yAxis[0].opposite ?
320
+ -1 : 1;
321
+ a = x(a, f, g, d.origin);
322
+ return a = this.chart.renderer.toLinePath(a, !1)
323
+ });
324
+ c.wrap(c.Tick.prototype, "getMarkPath", function (c) {
325
+ var a = c.apply(this, [].slice.call(arguments, 1));
326
+ if (!this.axis.chart.is3d())return a;
327
+ var b = this.axis.chart, d = b.options.chart.options3d, f = {
328
+ x: b.plotLeft + b.plotWidth / 2,
329
+ y: b.plotTop + b.plotHeight / 2,
330
+ z: d.depth,
331
+ vd: d.viewDistance
332
+ }, a = [{x: a[1], y: a[2], z: 0}, {
333
+ x: a[4],
334
+ y: a[5],
335
+ z: 0
336
+ }], g = b.inverted ? d.beta : d.alpha, d = b.inverted ? d.alpha : d.beta;
337
+ d *= b.yAxis[0].opposite ? -1 : 1;
338
+ a = x(a, g, d, f);
339
+ return a = ["M", a[0].x,
340
+ a[0].y, "L", a[1].x, a[1].y]
341
+ });
342
+ c.wrap(c.Tick.prototype, "getLabelPosition", function (c) {
343
+ var a = c.apply(this, [].slice.call(arguments, 1));
344
+ if (!this.axis.chart.is3d())return a;
345
+ var b = this.axis.chart, d = b.options.chart.options3d, f = {
346
+ x: b.plotLeft + b.plotWidth / 2,
347
+ y: b.plotTop + b.plotHeight / 2,
348
+ z: d.depth,
349
+ vd: d.viewDistance
350
+ }, g = b.inverted ? d.beta : d.alpha, d = b.inverted ? d.alpha : d.beta;
351
+ d *= b.yAxis[0].opposite ? -1 : 1;
352
+ return a = x([{x: a.x, y: a.y, z: 0}], g, d, f)[0]
353
+ });
354
+ c.wrap(c.Axis.prototype, "drawCrosshair", function (c) {
355
+ var a = arguments;
356
+ this.chart.is3d() &&
357
+ a[2] && (a[2] = {plotX: a[2].plotXold || a[2].plotX, plotY: a[2].plotYold || a[2].plotY});
358
+ c.apply(this, [].slice.call(a, 1))
359
+ });
360
+ c.wrap(c.seriesTypes.column.prototype, "translate", function (e) {
361
+ e.apply(this, [].slice.call(arguments, 1));
362
+ if (this.chart.is3d()) {
363
+ var a = this.chart, b = a.options, d = b.plotOptions[this.chart.options.chart.type], b = b.chart.options3d, f = d.depth || 25, g = {
364
+ x: a.plotWidth / 2,
365
+ y: a.plotHeight / 2,
366
+ z: b.depth,
367
+ vd: b.viewDistance
368
+ }, h = b.alpha, i = b.beta * (a.yAxis[0].opposite ? -1 : 1), j = (d.stacking ? this.options.stack || 0 : this._i) *
369
+ (f + (d.groupZPadding || 1));
370
+ d.grouping !== !1 && (j = 0);
371
+ j += d.groupZPadding || 1;
372
+ c.each(this.data, function (a) {
373
+ var b = a.shapeArgs, c = a.tooltipPos;
374
+ a.shapeType = "cuboid";
375
+ b.alpha = h;
376
+ b.beta = i;
377
+ b.z = j;
378
+ b.origin = g;
379
+ b.depth = f;
380
+ c = x([{x: c[0], y: c[1], z: j}], h, i, g)[0];
381
+ a.tooltipPos = [c.x, c.y]
382
+ })
383
+ }
384
+ });
385
+ c.wrap(c.seriesTypes.column.prototype, "animate", function (e) {
386
+ if (this.chart.is3d()) {
387
+ var a = arguments[1], b = this.yAxis, d = this, f = this.yAxis.reversed;
388
+ if (c.svg)a ? c.each(d.data, function (a) {
389
+ a.height = a.shapeArgs.height;
390
+ a.shapeArgs.height = 1;
391
+ if (!f)a.shapeArgs.y =
392
+ a.stackY ? a.plotY + b.translate(a.stackY) : a.plotY + (a.negative ? -a.height : a.height)
393
+ }) : (c.each(d.data, function (a) {
394
+ a.shapeArgs.height = a.height;
395
+ if (!f)a.shapeArgs.y = a.plotY - (a.negative ? a.height : 0);
396
+ a.graphic && a.graphic.animate(a.shapeArgs, d.options.animation)
397
+ }), d.animate = null)
398
+ } else e.apply(this, [].slice.call(arguments, 1))
399
+ });
400
+ c.wrap(c.seriesTypes.column.prototype, "init", function (c) {
401
+ c.apply(this, [].slice.call(arguments, 1));
402
+ if (this.chart.is3d()) {
403
+ var a = this.chart.options.plotOptions.column.grouping, b = this.chart.options.plotOptions.column.stacking,
404
+ d = this.options.zIndex;
405
+ if (!d && (a === void 0 || a) && b) {
406
+ a = this.chart.retrieveStacks();
407
+ b = this.options.stack || 0;
408
+ for (d = 0; d < a[b].series.length; d++)if (a[b].series[d] === this)break;
409
+ d = a.totalStacks * 10 - 10 * (a.totalStacks - a[b].position) - d;
410
+ this.options.zIndex = d
411
+ }
412
+ }
413
+ });
414
+ c.seriesTypes.columnrange && c.wrap(c.seriesTypes.columnrange.prototype, "drawPoints", F);
415
+ c.wrap(c.seriesTypes.column.prototype, "drawPoints", F);
416
+ var E = c.getOptions();
417
+ E.plotOptions.cylinder = c.merge(E.plotOptions.column);
418
+ E = c.extendClass(c.seriesTypes.column, {type: "cylinder"});
419
+ c.seriesTypes.cylinder = E;
420
+ c.wrap(c.seriesTypes.cylinder.prototype, "translate", function (e) {
421
+ e.apply(this, [].slice.call(arguments, 1));
422
+ if (this.chart.is3d()) {
423
+ var a = this.chart, b = a.options, d = b.plotOptions.cylinder, b = b.chart.options3d, f = d.depth || 0, g = {
424
+ x: a.inverted ? a.plotHeight / 2 : a.plotWidth / 2,
425
+ y: a.inverted ? a.plotWidth / 2 : a.plotHeight / 2,
426
+ z: b.depth,
427
+ vd: b.viewDistance
428
+ }, h = b.alpha, i = d.stacking ? (this.options.stack || 0) * f : this._i * f;
429
+ i += f / 2;
430
+ d.grouping !== !1 && (i = 0);
431
+ c.each(this.data, function (a) {
432
+ var b = a.shapeArgs;
433
+ a.shapeType =
434
+ "arc3d";
435
+ b.x += f / 2;
436
+ b.z = i;
437
+ b.start = 0;
438
+ b.end = 2 * m;
439
+ b.r = f * 0.95;
440
+ b.innerR = 0;
441
+ b.depth = b.height * (1 / k((90 - h) * n)) - i;
442
+ b.alpha = 90 - h;
443
+ b.beta = 0;
444
+ b.origin = g
445
+ })
446
+ }
447
+ });
448
+ c.wrap(c.seriesTypes.pie.prototype, "translate", function (e) {
449
+ e.apply(this, [].slice.call(arguments, 1));
450
+ if (this.chart.is3d()) {
451
+ var a = this, b = a.chart, d = b.options, f = d.plotOptions.pie, g = f.depth || 0, d = d.chart.options3d, h = {
452
+ x: b.plotWidth / 2,
453
+ y: b.plotHeight / 2,
454
+ z: d.depth
455
+ }, i = d.alpha, j = d.beta, o = f.stacking ? (this.options.stack || 0) * g : a._i * g;
456
+ o += g / 2;
457
+ f.grouping !== !1 && (o = 0);
458
+ c.each(a.data,
459
+ function (b) {
460
+ b.shapeType = "arc3d";
461
+ var c = b.shapeArgs;
462
+ c.z = o;
463
+ c.depth = g * 0.75;
464
+ c.origin = h;
465
+ c.alpha = i;
466
+ c.beta = j;
467
+ c = (c.end + c.start) / 2;
468
+ b.slicedTranslation = {
469
+ translateX: C(l(c) * a.options.slicedOffset * l(i * n)),
470
+ translateY: C(k(c) * a.options.slicedOffset * l(i * n))
471
+ }
472
+ })
473
+ }
474
+ });
475
+ c.wrap(c.seriesTypes.pie.prototype.pointClass.prototype, "haloPath", function (c) {
476
+ return this.series.chart.is3d() ? [] : c.call(this)
477
+ });
478
+ c.wrap(c.seriesTypes.pie.prototype, "drawPoints", function (e) {
479
+ this.chart.is3d() && c.each(this.data, function (a) {
480
+ var b = a.options.borderColor ||
481
+ a.color || a.series.userOptions.borderColor || a.series.color;
482
+ a.options.borderColor = b;
483
+ a.borderColor = b;
484
+ a.pointAttr[""].stroke = b;
485
+ a.pointAttr.hover.stroke = b;
486
+ a.pointAttr.select.stroke = b
487
+ });
488
+ e.apply(this, [].slice.call(arguments, 1))
489
+ });
490
+ c.wrap(c.seriesTypes.pie.prototype, "drawDataLabels", function (e) {
491
+ e.apply(this, [].slice.call(arguments, 1));
492
+ this.chart.is3d() && c.each(this.data, function (a) {
493
+ var b = a.shapeArgs, c = b.r, e = b.depth, g = b.alpha * n, h = b.beta * n, b = (b.start + b.end) / 2;
494
+ a.connector && a.connector.translate(-c * (1 - l(h)) * l(b) +
495
+ (l(b) > 0 ? k(h) * e : 0), -c * (1 - l(g)) * k(b) + (k(b) > 0 ? k(g) * e : 0));
496
+ a.dataLabel && a.dataLabel.attr({
497
+ x: a.dataLabel.connX + -c * (1 - l(h)) * l(b) + (l(b) > 0 ? l(h) * e : 0) - a.dataLabel.width / 2,
498
+ y: a.dataLabel.connY + -c * (1 - l(g)) * k(b) + (k(b) > 0 ? k(g) * e : 0) - a.dataLabel.height / 2
499
+ })
500
+ })
501
+ });
502
+ c.wrap(c.seriesTypes.pie.prototype, "addPoint", function (c) {
503
+ c.apply(this, [].slice.call(arguments, 1));
504
+ this.chart.is3d() && this.update()
505
+ });
506
+ c.wrap(c.seriesTypes.pie.prototype, "animate", function (e) {
507
+ if (this.chart.is3d()) {
508
+ var a = arguments[1], b = this.options.animation, d =
509
+ this.center, f = this.group, g = this.markerGroup;
510
+ if (c.svg)if (b === !0 && (b = {}), a) {
511
+ if (this.oldtranslateX = f.translateX, this.oldtranslateY = f.translateY, a = {
512
+ translateX: d[0],
513
+ translateY: d[1],
514
+ scaleX: 0.001,
515
+ scaleY: 0.001
516
+ }, f.attr(a), g)g.attrSetters = f.attrSetters, g.attr(a)
517
+ } else a = {
518
+ translateX: this.oldtranslateX,
519
+ translateY: this.oldtranslateY,
520
+ scaleX: 1,
521
+ scaleY: 1
522
+ }, f.animate(a, b), g && g.animate(a, b), this.animate = null
523
+ } else e.apply(this, [].slice.call(arguments, 1))
524
+ });
525
+ c.wrap(c.seriesTypes.scatter.prototype, "translate", function (e) {
526
+ e.apply(this,
527
+ [].slice.call(arguments, 1));
528
+ if (this.chart.is3d()) {
529
+ var a = this.chart, b = this.chart.options.chart.options3d, d = b.alpha, f = b.beta, g = {
530
+ x: a.inverted ? a.plotHeight / 2 : a.plotWidth / 2,
531
+ y: a.inverted ? a.plotWidth / 2 : a.plotHeight / 2,
532
+ z: b.depth,
533
+ vd: b.viewDistance
534
+ }, b = b.depth, h = a.options.zAxis || {min: 0, max: b}, i = b / (h.max - h.min);
535
+ c.each(this.data, function (a) {
536
+ var b = {x: a.plotX, y: a.plotY, z: (a.z - h.min) * i}, b = x([b], d, f, g)[0];
537
+ a.plotXold = a.plotX;
538
+ a.plotYold = a.plotY;
539
+ a.plotX = b.x;
540
+ a.plotY = b.y;
541
+ a.plotZ = b.z
542
+ })
543
+ }
544
+ });
545
+ c.wrap(c.seriesTypes.scatter.prototype,
546
+ "init", function (c) {
547
+ var a = c.apply(this, [].slice.call(arguments, 1));
548
+ if (this.chart.is3d())this.pointArrayMap = ["x", "y", "z"], this.tooltipOptions.pointFormat = this.userOptions.tooltip ? this.userOptions.tooltip.pointFormat || "x: <b>{point.x}</b><br/>y: <b>{point.y}</b><br/>z: <b>{point.z}</b><br/>" : "x: <b>{point.x}</b><br/>y: <b>{point.y}</b><br/>z: <b>{point.z}</b><br/>";
549
+ return a
550
+ });
551
+ if (c.VMLRenderer)c.setOptions({animate: !1}), c.VMLRenderer.prototype.cuboid = c.SVGRenderer.prototype.cuboid, c.VMLRenderer.prototype.cuboidPath =
552
+ c.SVGRenderer.prototype.cuboidPath, c.VMLRenderer.prototype.toLinePath = c.SVGRenderer.prototype.toLinePath, c.VMLRenderer.prototype.createElement3D = c.SVGRenderer.prototype.createElement3D, c.VMLRenderer.prototype.arc3d = function (e) {
553
+ e = c.SVGRenderer.prototype.arc3d.call(this, e);
554
+ e.css({zIndex: e.zIndex});
555
+ return e
556
+ }, c.VMLRenderer.prototype.arc3dPath = c.SVGRenderer.prototype.arc3dPath, c.Chart.prototype.renderSeries = function () {
557
+ for (var c, a = this.series.length; a--;)c = this.series[a], c.translate(), c.setTooltipPoints &&
558
+ c.setTooltipPoints(), c.render()
559
+ }, c.wrap(c.Axis.prototype, "render", function (c) {
560
+ c.apply(this, [].slice.call(arguments, 1));
561
+ this.sideFrame && (this.sideFrame.css({zIndex: 0}), this.sideFrame.front.attr({fill: this.sideFrame.color}));
562
+ this.bottomFrame && (this.bottomFrame.css({zIndex: 1}), this.bottomFrame.front.attr({fill: this.bottomFrame.color}));
563
+ this.backFrame && (this.backFrame.css({zIndex: 0}), this.backFrame.front.attr({fill: this.backFrame.color}))
564
+ })
565
+ })(Highcharts);
js/highcharts.js CHANGED
@@ -4,302 +4,4915 @@
4
  (c) 2009-2014 Torstein Honsi
5
 
6
  License: www.highcharts.com/license
7
- */
8
- (function(){function q(a,b){var c;a||(a={});for(c in b)a[c]=b[c];return a}function w(){var a,b=arguments,c,d={},e=function(a,b){var c,d;typeof a!=="object"&&(a={});for(d in b)b.hasOwnProperty(d)&&(c=b[d],a[d]=c&&typeof c==="object"&&Object.prototype.toString.call(c)!=="[object Array]"&&d!=="renderTo"&&typeof c.nodeType!=="number"?e(a[d]||{},c):b[d]);return a};b[0]===!0&&(d=b[1],b=Array.prototype.slice.call(b,2));c=b.length;for(a=0;a<c;a++)d=e(d,b[a]);return d}function z(a,b){return parseInt(a,b||
9
- 10)}function Fa(a){return typeof a==="string"}function ca(a){return typeof a==="object"}function La(a){return Object.prototype.toString.call(a)==="[object Array]"}function ha(a){return typeof a==="number"}function za(a){return U.log(a)/U.LN10}function ia(a){return U.pow(10,a)}function ja(a,b){for(var c=a.length;c--;)if(a[c]===b){a.splice(c,1);break}}function r(a){return a!==t&&a!==null}function H(a,b,c){var d,e;if(Fa(b))r(c)?a.setAttribute(b,c):a&&a.getAttribute&&(e=a.getAttribute(b));else if(r(b)&&
10
- ca(b))for(d in b)a.setAttribute(d,b[d]);return e}function qa(a){return La(a)?a:[a]}function m(){var a=arguments,b,c,d=a.length;for(b=0;b<d;b++)if(c=a[b],typeof c!=="undefined"&&c!==null)return c}function G(a,b){if(Aa&&!aa&&b&&b.opacity!==t)b.filter="alpha(opacity="+b.opacity*100+")";q(a.style,b)}function Y(a,b,c,d,e){a=y.createElement(a);b&&q(a,b);e&&G(a,{padding:0,border:Q,margin:0});c&&G(a,c);d&&d.appendChild(a);return a}function ka(a,b){var c=function(){};c.prototype=new a;q(c.prototype,b);return c}
11
- function Ga(a,b,c,d){var e=E.lang,a=+a||0,f=b===-1?(a.toString().split(".")[1]||"").length:isNaN(b=M(b))?2:b,b=c===void 0?e.decimalPoint:c,d=d===void 0?e.thousandsSep:d,e=a<0?"-":"",c=String(z(a=M(a).toFixed(f))),g=c.length>3?c.length%3:0;return e+(g?c.substr(0,g)+d:"")+c.substr(g).replace(/(\d{3})(?=\d)/g,"$1"+d)+(f?b+M(a-c).toFixed(f).slice(2):"")}function Ha(a,b){return Array((b||2)+1-String(a).length).join(0)+a}function Ma(a,b,c){var d=a[b];a[b]=function(){var a=Array.prototype.slice.call(arguments);
12
- a.unshift(d);return c.apply(this,a)}}function Ia(a,b){for(var c="{",d=!1,e,f,g,h,i,j=[];(c=a.indexOf(c))!==-1;){e=a.slice(0,c);if(d){f=e.split(":");g=f.shift().split(".");i=g.length;e=b;for(h=0;h<i;h++)e=e[g[h]];if(f.length)f=f.join(":"),g=/\.([0-9])/,h=E.lang,i=void 0,/f$/.test(f)?(i=(i=f.match(g))?i[1]:-1,e!==null&&(e=Ga(e,i,h.decimalPoint,f.indexOf(",")>-1?h.thousandsSep:""))):e=cb(f,e)}j.push(e);a=a.slice(c+1);c=(d=!d)?"}":"{"}j.push(a);return j.join("")}function mb(a){return U.pow(10,T(U.log(a)/
13
- U.LN10))}function nb(a,b,c,d){var e,c=m(c,1);e=a/c;b||(b=[1,2,2.5,5,10],d&&d.allowDecimals===!1&&(c===1?b=[1,2,5,10]:c<=0.1&&(b=[1/c])));for(d=0;d<b.length;d++)if(a=b[d],e<=(b[d]+(b[d+1]||b[d]))/2)break;a*=c;return a}function Bb(){this.symbol=this.color=0}function ob(a,b){var c=a.length,d,e;for(e=0;e<c;e++)a[e].ss_i=e;a.sort(function(a,c){d=b(a,c);return d===0?a.ss_i-c.ss_i:d});for(e=0;e<c;e++)delete a[e].ss_i}function Na(a){for(var b=a.length,c=a[0];b--;)a[b]<c&&(c=a[b]);return c}function Ba(a){for(var b=
14
- a.length,c=a[0];b--;)a[b]>c&&(c=a[b]);return c}function Oa(a,b){for(var c in a)a[c]&&a[c]!==b&&a[c].destroy&&a[c].destroy(),delete a[c]}function Pa(a){db||(db=Y(Ja));a&&db.appendChild(a);db.innerHTML=""}function ra(a,b){var c="Highcharts error #"+a+": www.highcharts.com/errors/"+a;if(b)throw c;else I.console&&console.log(c)}function da(a){return parseFloat(a.toPrecision(14))}function Qa(a,b){va=m(a,b.animation)}function Cb(){var a=E.global.useUTC,b=a?"getUTC":"get",c=a?"setUTC":"set";Ra=(a&&E.global.timezoneOffset||
15
- 0)*6E4;eb=a?Date.UTC:function(a,b,c,g,h,i){return(new Date(a,b,m(c,1),m(g,0),m(h,0),m(i,0))).getTime()};pb=b+"Minutes";qb=b+"Hours";rb=b+"Day";Xa=b+"Date";fb=b+"Month";gb=b+"FullYear";Db=c+"Minutes";Eb=c+"Hours";sb=c+"Date";Fb=c+"Month";Gb=c+"FullYear"}function P(){}function Sa(a,b,c,d){this.axis=a;this.pos=b;this.type=c||"";this.isNew=!0;!c&&!d&&this.addLabel()}function la(){this.init.apply(this,arguments)}function Ya(){this.init.apply(this,arguments)}function Hb(a,b,c,d,e){var f=a.chart.inverted;
16
- this.axis=a;this.isNegative=c;this.options=b;this.x=d;this.total=null;this.points={};this.stack=e;this.alignOptions={align:b.align||(f?c?"left":"right":"center"),verticalAlign:b.verticalAlign||(f?"middle":c?"bottom":"top"),y:m(b.y,f?4:c?14:-6),x:m(b.x,f?c?-6:6:0)};this.textAlign=b.textAlign||(f?c?"right":"left":"center")}var t,y=document,I=window,U=Math,u=U.round,T=U.floor,Ka=U.ceil,v=U.max,C=U.min,M=U.abs,Z=U.cos,ea=U.sin,ma=U.PI,Ca=ma*2/360,wa=navigator.userAgent,Ib=I.opera,Aa=/msie/i.test(wa)&&
17
- !Ib,hb=y.documentMode===8,ib=/AppleWebKit/.test(wa),Ta=/Firefox/.test(wa),Jb=/(Mobile|Android|Windows Phone)/.test(wa),xa="http://www.w3.org/2000/svg",aa=!!y.createElementNS&&!!y.createElementNS(xa,"svg").createSVGRect,Nb=Ta&&parseInt(wa.split("Firefox/")[1],10)<4,fa=!aa&&!Aa&&!!y.createElement("canvas").getContext,Za,$a,Kb={},tb=0,db,E,cb,va,ub,A,sa=function(){},V=[],ab=0,Ja="div",Q="none",Ob=/^[0-9]+$/,Pb="stroke-width",eb,Ra,pb,qb,rb,Xa,fb,gb,Db,Eb,sb,Fb,Gb,F={},R=I.Highcharts=I.Highcharts?ra(16,
18
- !0):{};cb=function(a,b,c){if(!r(b)||isNaN(b))return"Invalid date";var a=m(a,"%Y-%m-%d %H:%M:%S"),d=new Date(b-Ra),e,f=d[qb](),g=d[rb](),h=d[Xa](),i=d[fb](),j=d[gb](),k=E.lang,l=k.weekdays,d=q({a:l[g].substr(0,3),A:l[g],d:Ha(h),e:h,b:k.shortMonths[i],B:k.months[i],m:Ha(i+1),y:j.toString().substr(2,2),Y:j,H:Ha(f),I:Ha(f%12||12),l:f%12||12,M:Ha(d[pb]()),p:f<12?"AM":"PM",P:f<12?"am":"pm",S:Ha(d.getSeconds()),L:Ha(u(b%1E3),3)},R.dateFormats);for(e in d)for(;a.indexOf("%"+e)!==-1;)a=a.replace("%"+e,typeof d[e]===
19
- "function"?d[e](b):d[e]);return c?a.substr(0,1).toUpperCase()+a.substr(1):a};Bb.prototype={wrapColor:function(a){if(this.color>=a)this.color=0},wrapSymbol:function(a){if(this.symbol>=a)this.symbol=0}};A=function(){for(var a=0,b=arguments,c=b.length,d={};a<c;a++)d[b[a++]]=b[a];return d}("millisecond",1,"second",1E3,"minute",6E4,"hour",36E5,"day",864E5,"week",6048E5,"month",26784E5,"year",31556952E3);ub={init:function(a,b,c){var b=b||"",d=a.shift,e=b.indexOf("C")>-1,f=e?7:3,g,b=b.split(" "),c=[].concat(c),
20
- h,i,j=function(a){for(g=a.length;g--;)a[g]==="M"&&a.splice(g+1,0,a[g+1],a[g+2],a[g+1],a[g+2])};e&&(j(b),j(c));a.isArea&&(h=b.splice(b.length-6,6),i=c.splice(c.length-6,6));if(d<=c.length/f&&b.length===c.length)for(;d--;)c=[].concat(c).splice(0,f).concat(c);a.shift=0;if(b.length)for(a=c.length;b.length<a;)d=[].concat(b).splice(b.length-f,f),e&&(d[f-6]=d[f-2],d[f-5]=d[f-1]),b=b.concat(d);h&&(b=b.concat(h),c=c.concat(i));return[b,c]},step:function(a,b,c,d){var e=[],f=a.length;if(c===1)e=d;else if(f===
21
- b.length&&c<1)for(;f--;)d=parseFloat(a[f]),e[f]=isNaN(d)?a[f]:c*parseFloat(b[f]-d)+d;else e=b;return e}};(function(a){I.HighchartsAdapter=I.HighchartsAdapter||a&&{init:function(b){var c=a.fx,d=c.step,e,f=a.Tween,g=f&&f.propHooks;e=a.cssHooks.opacity;a.extend(a.easing,{easeOutQuad:function(a,b,c,d,e){return-d*(b/=e)*(b-2)+c}});a.each(["cur","_default","width","height","opacity"],function(a,b){var e=d,k;b==="cur"?e=c.prototype:b==="_default"&&f&&(e=g[b],b="set");(k=e[b])&&(e[b]=function(c){var d,c=
22
- a?c:this;if(c.prop!=="align")return d=c.elem,d.attr?d.attr(c.prop,b==="cur"?t:c.now):k.apply(this,arguments)})});Ma(e,"get",function(a,b,c){return b.attr?b.opacity||0:a.call(this,b,c)});e=function(a){var c=a.elem,d;if(!a.started)d=b.init(c,c.d,c.toD),a.start=d[0],a.end=d[1],a.started=!0;c.attr("d",b.step(a.start,a.end,a.pos,c.toD))};f?g.d={set:e}:d.d=e;this.each=Array.prototype.forEach?function(a,b){return Array.prototype.forEach.call(a,b)}:function(a,b){for(var c=0,d=a.length;c<d;c++)if(b.call(a[c],
23
- a[c],c,a)===!1)return c};a.fn.highcharts=function(){var a="Chart",b=arguments,c,d;if(this[0]){Fa(b[0])&&(a=b[0],b=Array.prototype.slice.call(b,1));c=b[0];if(c!==t)c.chart=c.chart||{},c.chart.renderTo=this[0],new R[a](c,b[1]),d=this;c===t&&(d=V[H(this[0],"data-highcharts-chart")])}return d}},getScript:a.getScript,inArray:a.inArray,adapterRun:function(b,c){return a(b)[c]()},grep:a.grep,map:function(a,c){for(var d=[],e=0,f=a.length;e<f;e++)d[e]=c.call(a[e],a[e],e,a);return d},offset:function(b){return a(b).offset()},
24
- addEvent:function(b,c,d){a(b).bind(c,d)},removeEvent:function(b,c,d){var e=y.removeEventListener?"removeEventListener":"detachEvent";y[e]&&b&&!b[e]&&(b[e]=function(){});a(b).unbind(c,d)},fireEvent:function(b,c,d,e){var f=a.Event(c),g="detached"+c,h;!Aa&&d&&(delete d.layerX,delete d.layerY,delete d.returnValue);q(f,d);b[c]&&(b[g]=b[c],b[c]=null);a.each(["preventDefault","stopPropagation"],function(a,b){var c=f[b];f[b]=function(){try{c.call(f)}catch(a){b==="preventDefault"&&(h=!0)}}});a(b).trigger(f);
25
- b[g]&&(b[c]=b[g],b[g]=null);e&&!f.isDefaultPrevented()&&!h&&e(f)},washMouseEvent:function(a){var c=a.originalEvent||a;if(c.pageX===t)c.pageX=a.pageX,c.pageY=a.pageY;return c},animate:function(b,c,d){var e=a(b);if(!b.style)b.style={};if(c.d)b.toD=c.d,c.d=1;e.stop();c.opacity!==t&&b.attr&&(c.opacity+="px");e.animate(c,d)},stop:function(b){a(b).stop()}}})(I.jQuery);var S=I.HighchartsAdapter,N=S||{};S&&S.init.call(S,ub);var jb=N.adapterRun,Qb=N.getScript,Da=N.inArray,p=N.each,vb=N.grep,Rb=N.offset,Ua=
26
- N.map,K=N.addEvent,W=N.removeEvent,D=N.fireEvent,Sb=N.washMouseEvent,kb=N.animate,bb=N.stop,N={enabled:!0,x:0,y:15,style:{color:"#606060",cursor:"default",fontSize:"11px"}};E={colors:"#7cb5ec,#434348,#90ed7d,#f7a35c,#8085e9,#f15c80,#e4d354,#8085e8,#8d4653,#91e8e1".split(","),symbols:["circle","diamond","square","triangle","triangle-down"],lang:{loading:"Loading...",months:"January,February,March,April,May,June,July,August,September,October,November,December".split(","),shortMonths:"Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec".split(","),
27
- weekdays:"Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday".split(","),decimalPoint:".",numericSymbols:"k,M,G,T,P,E".split(","),resetZoom:"Reset zoom",resetZoomTitle:"Reset zoom level 1:1",thousandsSep:","},global:{useUTC:!0,canvasToolsURL:"http://code.highcharts.com/4.0.1/modules/canvas-tools.js",VMLRadialGradientURL:"http://code.highcharts.com/4.0.1/gfx/vml-radial-gradient.png"},chart:{borderColor:"#4572A7",borderRadius:0,defaultSeriesType:"line",ignoreHiddenSeries:!0,spacing:[10,10,15,
28
- 10],backgroundColor:"#FFFFFF",plotBorderColor:"#C0C0C0",resetZoomButton:{theme:{zIndex:20},position:{align:"right",x:-10,y:10}}},title:{text:"Chart title",align:"center",margin:15,style:{color:"#333333",fontSize:"18px"}},subtitle:{text:"",align:"center",style:{color:"#555555"}},plotOptions:{line:{allowPointSelect:!1,showCheckbox:!1,animation:{duration:1E3},events:{},lineWidth:2,marker:{lineWidth:0,radius:4,lineColor:"#FFFFFF",states:{hover:{enabled:!0},select:{fillColor:"#FFFFFF",lineColor:"#000000",
29
- lineWidth:2}}},point:{events:{}},dataLabels:w(N,{align:"center",enabled:!1,formatter:function(){return this.y===null?"":Ga(this.y,-1)},verticalAlign:"bottom",y:0}),cropThreshold:300,pointRange:0,states:{hover:{marker:{},halo:{size:10,opacity:0.25}},select:{marker:{}}},stickyTracking:!0,turboThreshold:1E3}},labels:{style:{position:"absolute",color:"#3E576F"}},legend:{enabled:!0,align:"center",layout:"horizontal",labelFormatter:function(){return this.name},borderColor:"#909090",borderRadius:0,navigation:{activeColor:"#274b6d",
30
- inactiveColor:"#CCC"},shadow:!1,itemStyle:{color:"#333333",fontSize:"12px",fontWeight:"bold"},itemHoverStyle:{color:"#000"},itemHiddenStyle:{color:"#CCC"},itemCheckboxStyle:{position:"absolute",width:"13px",height:"13px"},symbolPadding:5,verticalAlign:"bottom",x:0,y:0,title:{style:{fontWeight:"bold"}}},loading:{labelStyle:{fontWeight:"bold",position:"relative",top:"1em"},style:{position:"absolute",backgroundColor:"white",opacity:0.5,textAlign:"center"}},tooltip:{enabled:!0,animation:aa,backgroundColor:"rgba(249, 249, 249, .85)",
31
- borderWidth:1,borderRadius:3,dateTimeLabelFormats:{millisecond:"%A, %b %e, %H:%M:%S.%L",second:"%A, %b %e, %H:%M:%S",minute:"%A, %b %e, %H:%M",hour:"%A, %b %e, %H:%M",day:"%A, %b %e, %Y",week:"Week from %A, %b %e, %Y",month:"%B %Y",year:"%Y"},headerFormat:'<span style="font-size: 10px">{point.key}</span><br/>',pointFormat:'<span style="color:{series.color}">●</span> {series.name}: <b>{point.y}</b><br/>',shadow:!0,snap:Jb?25:10,style:{color:"#333333",cursor:"default",fontSize:"12px",padding:"8px",
32
- whiteSpace:"nowrap"}},credits:{enabled:!0,text:"Highcharts.com",href:"http://www.highcharts.com",position:{align:"right",x:-10,verticalAlign:"bottom",y:-5},style:{cursor:"pointer",color:"#909090",fontSize:"9px"}}};var ba=E.plotOptions,S=ba.line;Cb();var Tb=/rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]?(?:\.[0-9]+)?)\s*\)/,Ub=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/,Vb=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/,ya=function(a){var b=[],c,
33
- d;(function(a){a&&a.stops?d=Ua(a.stops,function(a){return ya(a[1])}):(c=Tb.exec(a))?b=[z(c[1]),z(c[2]),z(c[3]),parseFloat(c[4],10)]:(c=Ub.exec(a))?b=[z(c[1],16),z(c[2],16),z(c[3],16),1]:(c=Vb.exec(a))&&(b=[z(c[1]),z(c[2]),z(c[3]),1])})(a);return{get:function(c){var f;d?(f=w(a),f.stops=[].concat(f.stops),p(d,function(a,b){f.stops[b]=[f.stops[b][0],a.get(c)]})):f=b&&!isNaN(b[0])?c==="rgb"?"rgb("+b[0]+","+b[1]+","+b[2]+")":c==="a"?b[3]:"rgba("+b.join(",")+")":a;return f},brighten:function(a){if(d)p(d,
34
- function(b){b.brighten(a)});else if(ha(a)&&a!==0){var c;for(c=0;c<3;c++)b[c]+=z(a*255),b[c]<0&&(b[c]=0),b[c]>255&&(b[c]=255)}return this},rgba:b,setOpacity:function(a){b[3]=a;return this}}};P.prototype={init:function(a,b){this.element=b==="span"?Y(b):y.createElementNS(xa,b);this.renderer=a},opacity:1,animate:function(a,b,c){b=m(b,va,!0);bb(this);if(b){b=w(b,{});if(c)b.complete=c;kb(this,a,b)}else this.attr(a),c&&c()},colorGradient:function(a,b,c){var d=this.renderer,e,f,g,h,i,j,k,l,o,n,s=[];a.linearGradient?
35
- f="linearGradient":a.radialGradient&&(f="radialGradient");if(f){g=a[f];h=d.gradients;j=a.stops;o=c.radialReference;La(g)&&(a[f]=g={x1:g[0],y1:g[1],x2:g[2],y2:g[3],gradientUnits:"userSpaceOnUse"});f==="radialGradient"&&o&&!r(g.gradientUnits)&&(g=w(g,{cx:o[0]-o[2]/2+g.cx*o[2],cy:o[1]-o[2]/2+g.cy*o[2],r:g.r*o[2],gradientUnits:"userSpaceOnUse"}));for(n in g)n!=="id"&&s.push(n,g[n]);for(n in j)s.push(j[n]);s=s.join(",");h[s]?a=h[s].attr("id"):(g.id=a="highcharts-"+tb++,h[s]=i=d.createElement(f).attr(g).add(d.defs),
36
- i.stops=[],p(j,function(a){a[1].indexOf("rgba")===0?(e=ya(a[1]),k=e.get("rgb"),l=e.get("a")):(k=a[1],l=1);a=d.createElement("stop").attr({offset:a[0],"stop-color":k,"stop-opacity":l}).add(i);i.stops.push(a)}));c.setAttribute(b,"url("+d.url+"#"+a+")")}},attr:function(a,b){var c,d,e=this.element,f,g=this,h;typeof a==="string"&&b!==t&&(c=a,a={},a[c]=b);if(typeof a==="string")g=(this[a+"Getter"]||this._defaultGetter).call(this,a,e);else{for(c in a){d=a[c];h=!1;this.symbolName&&/^(x|y|width|height|r|start|end|innerR|anchorX|anchorY)/.test(c)&&
37
- (f||(this.symbolAttr(a),f=!0),h=!0);if(this.rotation&&(c==="x"||c==="y"))this.doTransform=!0;h||(this[c+"Setter"]||this._defaultSetter).call(this,d,c,e);this.shadows&&/^(width|height|visibility|x|y|d|transform|cx|cy|r)$/.test(c)&&this.updateShadows(c,d)}if(this.doTransform)this.updateTransform(),this.doTransform=!1}return g},updateShadows:function(a,b){for(var c=this.shadows,d=c.length;d--;)c[d].setAttribute(a,a==="height"?v(b-(c[d].cutHeight||0),0):a==="d"?this.d:b)},addClass:function(a){var b=this.element,
38
- c=H(b,"class")||"";c.indexOf(a)===-1&&H(b,"class",c+" "+a);return this},symbolAttr:function(a){var b=this;p("x,y,r,start,end,width,height,innerR,anchorX,anchorY".split(","),function(c){b[c]=m(a[c],b[c])});b.attr({d:b.renderer.symbols[b.symbolName](b.x,b.y,b.width,b.height,b)})},clip:function(a){return this.attr("clip-path",a?"url("+this.renderer.url+"#"+a.id+")":Q)},crisp:function(a){var b,c={},d,e=a.strokeWidth||this.strokeWidth||this.attr&&this.attr("stroke-width")||0;d=u(e)%2/2;a.x=T(a.x||this.x||
39
- 0)+d;a.y=T(a.y||this.y||0)+d;a.width=T((a.width||this.width||0)-2*d);a.height=T((a.height||this.height||0)-2*d);a.strokeWidth=e;for(b in a)this[b]!==a[b]&&(this[b]=c[b]=a[b]);return c},css:function(a){var b=this.styles,c={},d=this.element,e,f,g="";e=!b;if(a&&a.color)a.fill=a.color;if(b)for(f in a)a[f]!==b[f]&&(c[f]=a[f],e=!0);if(e){e=this.textWidth=a&&a.width&&d.nodeName.toLowerCase()==="text"&&z(a.width);b&&(a=q(b,c));this.styles=a;e&&(fa||!aa&&this.renderer.forExport)&&delete a.width;if(Aa&&!aa)G(this.element,
40
- a);else{b=function(a,b){return"-"+b.toLowerCase()};for(f in a)g+=f.replace(/([A-Z])/g,b)+":"+a[f]+";";H(d,"style",g)}e&&this.added&&this.renderer.buildText(this)}return this},on:function(a,b){var c=this,d=c.element;$a&&a==="click"?(d.ontouchstart=function(a){c.touchEventFired=Date.now();a.preventDefault();b.call(d,a)},d.onclick=function(a){(wa.indexOf("Android")===-1||Date.now()-(c.touchEventFired||0)>1100)&&b.call(d,a)}):d["on"+a]=b;return this},setRadialReference:function(a){this.element.radialReference=
41
- a;return this},translate:function(a,b){return this.attr({translateX:a,translateY:b})},invert:function(){this.inverted=!0;this.updateTransform();return this},updateTransform:function(){var a=this.translateX||0,b=this.translateY||0,c=this.scaleX,d=this.scaleY,e=this.inverted,f=this.rotation,g=this.element;e&&(a+=this.attr("width"),b+=this.attr("height"));a=["translate("+a+","+b+")"];e?a.push("rotate(90) scale(-1,1)"):f&&a.push("rotate("+f+" "+(g.getAttribute("x")||0)+" "+(g.getAttribute("y")||0)+")");
42
- (r(c)||r(d))&&a.push("scale("+m(c,1)+" "+m(d,1)+")");a.length&&g.setAttribute("transform",a.join(" "))},toFront:function(){var a=this.element;a.parentNode.appendChild(a);return this},align:function(a,b,c){var d,e,f,g,h={};e=this.renderer;f=e.alignedObjects;if(a){if(this.alignOptions=a,this.alignByTranslate=b,!c||Fa(c))this.alignTo=d=c||"renderer",ja(f,this),f.push(this),c=null}else a=this.alignOptions,b=this.alignByTranslate,d=this.alignTo;c=m(c,e[d],e);d=a.align;e=a.verticalAlign;f=(c.x||0)+(a.x||
43
- 0);g=(c.y||0)+(a.y||0);if(d==="right"||d==="center")f+=(c.width-(a.width||0))/{right:1,center:2}[d];h[b?"translateX":"x"]=u(f);if(e==="bottom"||e==="middle")g+=(c.height-(a.height||0))/({bottom:1,middle:2}[e]||1);h[b?"translateY":"y"]=u(g);this[this.placed?"animate":"attr"](h);this.placed=!0;this.alignAttr=h;return this},getBBox:function(){var a=this.bBox,b=this.renderer,c,d,e=this.rotation;c=this.element;var f=this.styles,g=e*Ca;d=this.textStr;var h;if(d===""||Ob.test(d))h="num."+d.toString().length+
44
- (f?"|"+f.fontSize+"|"+f.fontFamily:"");h&&(a=b.cache[h]);if(!a){if(c.namespaceURI===xa||b.forExport){try{a=c.getBBox?q({},c.getBBox()):{width:c.offsetWidth,height:c.offsetHeight}}catch(i){}if(!a||a.width<0)a={width:0,height:0}}else a=this.htmlGetBBox();if(b.isSVG){c=a.width;d=a.height;if(Aa&&f&&f.fontSize==="11px"&&d.toPrecision(3)==="16.9")a.height=d=14;if(e)a.width=M(d*ea(g))+M(c*Z(g)),a.height=M(d*Z(g))+M(c*ea(g))}this.bBox=a;h&&(b.cache[h]=a)}return a},show:function(a){return a&&this.element.namespaceURI===
45
- xa?(this.element.removeAttribute("visibility"),this):this.attr({visibility:a?"inherit":"visible"})},hide:function(){return this.attr({visibility:"hidden"})},fadeOut:function(a){var b=this;b.animate({opacity:0},{duration:a||150,complete:function(){b.hide()}})},add:function(a){var b=this.renderer,c=a||b,d=c.element||b.box,e=this.element,f=this.zIndex,g,h;if(a)this.parentGroup=a;this.parentInverted=a&&a.inverted;this.textStr!==void 0&&b.buildText(this);if(f)c.handleZ=!0,f=z(f);if(c.handleZ){a=d.childNodes;
46
- for(g=0;g<a.length;g++)if(b=a[g],c=H(b,"zIndex"),b!==e&&(z(c)>f||!r(f)&&r(c))){d.insertBefore(e,b);h=!0;break}}h||d.appendChild(e);this.added=!0;if(this.onAdd)this.onAdd();return this},safeRemoveChild:function(a){var b=a.parentNode;b&&b.removeChild(a)},destroy:function(){var a=this,b=a.element||{},c=a.shadows,d=a.renderer.isSVG&&b.nodeName==="SPAN"&&a.parentGroup,e,f;b.onclick=b.onmouseout=b.onmouseover=b.onmousemove=b.point=null;bb(a);if(a.clipPath)a.clipPath=a.clipPath.destroy();if(a.stops){for(f=
47
- 0;f<a.stops.length;f++)a.stops[f]=a.stops[f].destroy();a.stops=null}a.safeRemoveChild(b);for(c&&p(c,function(b){a.safeRemoveChild(b)});d&&d.div.childNodes.length===0;)b=d.parentGroup,a.safeRemoveChild(d.div),delete d.div,d=b;a.alignTo&&ja(a.renderer.alignedObjects,a);for(e in a)delete a[e];return null},shadow:function(a,b,c){var d=[],e,f,g=this.element,h,i,j,k;if(a){i=m(a.width,3);j=(a.opacity||0.15)/i;k=this.parentInverted?"(-1,-1)":"("+m(a.offsetX,1)+", "+m(a.offsetY,1)+")";for(e=1;e<=i;e++){f=
48
- g.cloneNode(0);h=i*2+1-2*e;H(f,{isShadow:"true",stroke:a.color||"black","stroke-opacity":j*e,"stroke-width":h,transform:"translate"+k,fill:Q});if(c)H(f,"height",v(H(f,"height")-h,0)),f.cutHeight=h;b?b.element.appendChild(f):g.parentNode.insertBefore(f,g);d.push(f)}this.shadows=d}return this},xGetter:function(a){this.element.nodeName==="circle"&&(a={x:"cx",y:"cy"}[a]||a);return this._defaultGetter(a)},_defaultGetter:function(a){a=m(this[a],this.element?this.element.getAttribute(a):null,0);/^[0-9\.]+$/.test(a)&&
49
- (a=parseFloat(a));return a},dSetter:function(a,b,c){a&&a.join&&(a=a.join(" "));/(NaN| {2}|^$)/.test(a)&&(a="M 0 0");c.setAttribute(b,a);this[b]=a},dashstyleSetter:function(a){var b;if(a=a&&a.toLowerCase()){a=a.replace("shortdashdotdot","3,1,1,1,1,1,").replace("shortdashdot","3,1,1,1").replace("shortdot","1,1,").replace("shortdash","3,1,").replace("longdash","8,3,").replace(/dot/g,"1,3,").replace("dash","4,3,").replace(/,$/,"").split(",");for(b=a.length;b--;)a[b]=z(a[b])*this.element.getAttribute("stroke-width");
50
- a=a.join(",");this.element.setAttribute("stroke-dasharray",a)}},alignSetter:function(a){this.element.setAttribute("text-anchor",{left:"start",center:"middle",right:"end"}[a])},opacitySetter:function(a,b,c){this[b]=a;c.setAttribute(b,a)},"stroke-widthSetter":function(a,b,c){a===0&&(a=1.0E-5);this.strokeWidth=a;c.setAttribute(b,a)},titleSetter:function(a){var b=this.element.getElementsByTagName("title")[0];b||(b=y.createElementNS(xa,"title"),this.element.appendChild(b));b.textContent=a},textSetter:function(a){if(a!==
51
- this.textStr)delete this.bBox,this.textStr=a,this.added&&this.renderer.buildText(this)},fillSetter:function(a,b,c){typeof a==="string"?c.setAttribute(b,a):a&&this.colorGradient(a,b,c)},zIndexSetter:function(a,b,c){c.setAttribute(b,a);this[b]=a},_defaultSetter:function(a,b,c){c.setAttribute(b,a)}};P.prototype.yGetter=P.prototype.xGetter;P.prototype.translateXSetter=P.prototype.translateYSetter=P.prototype.rotationSetter=P.prototype.verticalAlignSetter=P.prototype.scaleXSetter=P.prototype.scaleYSetter=
52
- function(a,b){this[b]=a;this.doTransform=!0};P.prototype.strokeSetter=P.prototype.fillSetter;var ta=function(){this.init.apply(this,arguments)};ta.prototype={Element:P,init:function(a,b,c,d,e){var f=location,g,d=this.createElement("svg").attr({version:"1.1"}).css(this.getStyle(d));g=d.element;a.appendChild(g);a.innerHTML.indexOf("xmlns")===-1&&H(g,"xmlns",xa);this.isSVG=!0;this.box=g;this.boxWrapper=d;this.alignedObjects=[];this.url=(Ta||ib)&&y.getElementsByTagName("base").length?f.href.replace(/#.*?$/,
53
- "").replace(/([\('\)])/g,"\\$1").replace(/ /g,"%20"):"";this.createElement("desc").add().element.appendChild(y.createTextNode("Created with Highcharts 4.0.1"));this.defs=this.createElement("defs").add();this.forExport=e;this.gradients={};this.cache={};this.setSize(b,c,!1);var h;if(Ta&&a.getBoundingClientRect)this.subPixelFix=b=function(){G(a,{left:0,top:0});h=a.getBoundingClientRect();G(a,{left:Ka(h.left)-h.left+"px",top:Ka(h.top)-h.top+"px"})},b(),K(I,"resize",b)},getStyle:function(a){return this.style=
54
- q({fontFamily:'"Lucida Grande", "Lucida Sans Unicode", Arial, Helvetica, sans-serif',fontSize:"12px"},a)},isHidden:function(){return!this.boxWrapper.getBBox().width},destroy:function(){var a=this.defs;this.box=null;this.boxWrapper=this.boxWrapper.destroy();Oa(this.gradients||{});this.gradients=null;if(a)this.defs=a.destroy();this.subPixelFix&&W(I,"resize",this.subPixelFix);return this.alignedObjects=null},createElement:function(a){var b=new this.Element;b.init(this,a);return b},draw:function(){},
55
- buildText:function(a){for(var b=a.element,c=this,d=c.forExport,e=m(a.textStr,"").toString(),f=e.indexOf("<")!==-1,g=b.childNodes,h,i,j=H(b,"x"),k=a.styles,l=a.textWidth,o=k&&k.lineHeight,n=g.length,s=function(a){return o?z(o):c.fontMetrics(/(px|em)$/.test(a&&a.style.fontSize)?a.style.fontSize:k&&k.fontSize||c.style.fontSize||12).h};n--;)b.removeChild(g[n]);!f&&e.indexOf(" ")===-1?b.appendChild(y.createTextNode(e)):(h=/<.*style="([^"]+)".*>/,i=/<.*href="(http[^"]+)".*>/,l&&!a.added&&this.box.appendChild(b),
56
- e=f?e.replace(/<(b|strong)>/g,'<span style="font-weight:bold">').replace(/<(i|em)>/g,'<span style="font-style:italic">').replace(/<a/g,"<span").replace(/<\/(b|strong|i|em|a)>/g,"</span>").split(/<br.*?>/g):[e],e[e.length-1]===""&&e.pop(),p(e,function(e,f){var g,n=0,e=e.replace(/<span/g,"|||<span").replace(/<\/span>/g,"</span>|||");g=e.split("|||");p(g,function(e){if(e!==""||g.length===1){var o={},m=y.createElementNS(xa,"tspan"),p;h.test(e)&&(p=e.match(h)[1].replace(/(;| |^)color([ :])/,"$1fill$2"),
57
- H(m,"style",p));i.test(e)&&!d&&(H(m,"onclick",'location.href="'+e.match(i)[1]+'"'),G(m,{cursor:"pointer"}));e=(e.replace(/<(.|\n)*?>/g,"")||" ").replace(/&lt;/g,"<").replace(/&gt;/g,">");if(e!==" "){m.appendChild(y.createTextNode(e));if(n)o.dx=0;else if(f&&j!==null)o.x=j;H(m,o);!n&&f&&(!aa&&d&&G(m,{display:"block"}),H(m,"dy",s(m),ib&&m.offsetHeight));b.appendChild(m);n++;if(l)for(var e=e.replace(/([^\^])-/g,"$1- ").split(" "),o=e.length>1&&k.whiteSpace!=="nowrap",$,r,B=a._clipHeight,q=[],v=s(),t=
58
- 1;o&&(e.length||q.length);)delete a.bBox,$=a.getBBox(),r=$.width,!aa&&c.forExport&&(r=c.measureSpanWidth(m.firstChild.data,a.styles)),$=r>l,!$||e.length===1?(e=q,q=[],e.length&&(t++,B&&t*v>B?(e=["..."],a.attr("title",a.textStr)):(m=y.createElementNS(xa,"tspan"),H(m,{dy:v,x:j}),p&&H(m,"style",p),b.appendChild(m),r>l&&(l=r)))):(m.removeChild(m.firstChild),q.unshift(e.pop())),e.length&&m.appendChild(y.createTextNode(e.join(" ").replace(/- /g,"-")))}}})}))},button:function(a,b,c,d,e,f,g,h,i){var j=this.label(a,
59
- b,c,i,null,null,null,null,"button"),k=0,l,o,n,s,m,p,a={x1:0,y1:0,x2:0,y2:1},e=w({"stroke-width":1,stroke:"#CCCCCC",fill:{linearGradient:a,stops:[[0,"#FEFEFE"],[1,"#F6F6F6"]]},r:2,padding:5,style:{color:"black"}},e);n=e.style;delete e.style;f=w(e,{stroke:"#68A",fill:{linearGradient:a,stops:[[0,"#FFF"],[1,"#ACF"]]}},f);s=f.style;delete f.style;g=w(e,{stroke:"#68A",fill:{linearGradient:a,stops:[[0,"#9BD"],[1,"#CDF"]]}},g);m=g.style;delete g.style;h=w(e,{style:{color:"#CCC"}},h);p=h.style;delete h.style;
60
- K(j.element,Aa?"mouseover":"mouseenter",function(){k!==3&&j.attr(f).css(s)});K(j.element,Aa?"mouseout":"mouseleave",function(){k!==3&&(l=[e,f,g][k],o=[n,s,m][k],j.attr(l).css(o))});j.setState=function(a){(j.state=k=a)?a===2?j.attr(g).css(m):a===3&&j.attr(h).css(p):j.attr(e).css(n)};return j.on("click",function(){k!==3&&d.call(j)}).attr(e).css(q({cursor:"default"},n))},crispLine:function(a,b){a[1]===a[4]&&(a[1]=a[4]=u(a[1])-b%2/2);a[2]===a[5]&&(a[2]=a[5]=u(a[2])+b%2/2);return a},path:function(a){var b=
61
- {fill:Q};La(a)?b.d=a:ca(a)&&q(b,a);return this.createElement("path").attr(b)},circle:function(a,b,c){a=ca(a)?a:{x:a,y:b,r:c};b=this.createElement("circle");b.xSetter=function(a){this.element.setAttribute("cx",a)};b.ySetter=function(a){this.element.setAttribute("cy",a)};return b.attr(a)},arc:function(a,b,c,d,e,f){if(ca(a))b=a.y,c=a.r,d=a.innerR,e=a.start,f=a.end,a=a.x;a=this.symbol("arc",a||0,b||0,c||0,c||0,{innerR:d||0,start:e||0,end:f||0});a.r=c;return a},rect:function(a,b,c,d,e,f){var e=ca(a)?a.r:
62
- e,g=this.createElement("rect"),a=ca(a)?a:a===t?{}:{x:a,y:b,width:v(c,0),height:v(d,0)};if(f!==t)a.strokeWidth=f,a=g.crisp(a);if(e)a.r=e;g.rSetter=function(a){H(this.element,{rx:a,ry:a})};return g.attr(a)},setSize:function(a,b,c){var d=this.alignedObjects,e=d.length;this.width=a;this.height=b;for(this.boxWrapper[m(c,!0)?"animate":"attr"]({width:a,height:b});e--;)d[e].align()},g:function(a){var b=this.createElement("g");return r(a)?b.attr({"class":"highcharts-"+a}):b},image:function(a,b,c,d,e){var f=
63
- {preserveAspectRatio:Q};arguments.length>1&&q(f,{x:b,y:c,width:d,height:e});f=this.createElement("image").attr(f);f.element.setAttributeNS?f.element.setAttributeNS("http://www.w3.org/1999/xlink","href",a):f.element.setAttribute("hc-svg-href",a);return f},symbol:function(a,b,c,d,e,f){var g,h=this.symbols[a],h=h&&h(u(b),u(c),d,e,f),i=/^url\((.*?)\)$/,j,k;if(h)g=this.path(h),q(g,{symbolName:a,x:b,y:c,width:d,height:e}),f&&q(g,f);else if(i.test(a))k=function(a,b){a.element&&(a.attr({width:b[0],height:b[1]}),
64
- a.alignByTranslate||a.translate(u((d-b[0])/2),u((e-b[1])/2)))},j=a.match(i)[1],a=Kb[j],g=this.image(j).attr({x:b,y:c}),g.isImg=!0,a?k(g,a):(g.attr({width:0,height:0}),Y("img",{onload:function(){k(g,Kb[j]=[this.width,this.height])},src:j}));return g},symbols:{circle:function(a,b,c,d){var e=0.166*c;return["M",a+c/2,b,"C",a+c+e,b,a+c+e,b+d,a+c/2,b+d,"C",a-e,b+d,a-e,b,a+c/2,b,"Z"]},square:function(a,b,c,d){return["M",a,b,"L",a+c,b,a+c,b+d,a,b+d,"Z"]},triangle:function(a,b,c,d){return["M",a+c/2,b,"L",
65
- a+c,b+d,a,b+d,"Z"]},"triangle-down":function(a,b,c,d){return["M",a,b,"L",a+c,b,a+c/2,b+d,"Z"]},diamond:function(a,b,c,d){return["M",a+c/2,b,"L",a+c,b+d/2,a+c/2,b+d,a,b+d/2,"Z"]},arc:function(a,b,c,d,e){var f=e.start,c=e.r||c||d,g=e.end-0.001,d=e.innerR,h=e.open,i=Z(f),j=ea(f),k=Z(g),g=ea(g),e=e.end-f<ma?0:1;return["M",a+c*i,b+c*j,"A",c,c,0,e,1,a+c*k,b+c*g,h?"M":"L",a+d*k,b+d*g,"A",d,d,0,e,0,a+d*i,b+d*j,h?"":"Z"]},callout:function(a,b,c,d,e){var f=C(e&&e.r||0,c,d),g=f+6,h=e&&e.anchorX,i=e&&e.anchorY,
66
- e=u(e.strokeWidth||0)%2/2;a+=e;b+=e;e=["M",a+f,b,"L",a+c-f,b,"C",a+c,b,a+c,b,a+c,b+f,"L",a+c,b+d-f,"C",a+c,b+d,a+c,b+d,a+c-f,b+d,"L",a+f,b+d,"C",a,b+d,a,b+d,a,b+d-f,"L",a,b+f,"C",a,b,a,b,a+f,b];h&&h>c&&i>b+g&&i<b+d-g?e.splice(13,3,"L",a+c,i-6,a+c+6,i,a+c,i+6,a+c,b+d-f):h&&h<0&&i>b+g&&i<b+d-g?e.splice(33,3,"L",a,i+6,a-6,i,a,i-6,a,b+f):i&&i>d&&h>a+g&&h<a+c-g?e.splice(23,3,"L",h+6,b+d,h,b+d+6,h-6,b+d,a+f,b+d):i&&i<0&&h>a+g&&h<a+c-g&&e.splice(3,3,"L",h-6,b,h,b-6,h+6,b,c-f,b);return e}},clipRect:function(a,
67
- b,c,d){var e="highcharts-"+tb++,f=this.createElement("clipPath").attr({id:e}).add(this.defs),a=this.rect(a,b,c,d,0).add(f);a.id=e;a.clipPath=f;return a},text:function(a,b,c,d){var e=fa||!aa&&this.forExport,f={};if(d&&!this.forExport)return this.html(a,b,c);f.x=Math.round(b||0);if(c)f.y=Math.round(c);if(a||a===0)f.text=a;a=this.createElement("text").attr(f);e&&a.css({position:"absolute"});if(!d)a.xSetter=function(a,b,c){var d=c.childNodes,e,f;for(f=1;f<d.length;f++)e=d[f],e.getAttribute("x")===c.getAttribute("x")&&
68
- e.setAttribute("x",a);c.setAttribute(b,a)};return a},fontMetrics:function(a){var a=a||this.style.fontSize,a=/px/.test(a)?z(a):/em/.test(a)?parseFloat(a)*12:12,a=a<24?a+4:u(a*1.2),b=u(a*0.8);return{h:a,b:b}},label:function(a,b,c,d,e,f,g,h,i){function j(){var a,b;a=s.element.style;J=(Va===void 0||wb===void 0||n.styles.textAlign)&&s.textStr&&s.getBBox();n.width=(Va||J.width||0)+2*x+v;n.height=(wb||J.height||0)+2*x;na=x+o.fontMetrics(a&&a.fontSize).b;if(z){if(!m)a=u(-L*x),b=h?-na:0,n.box=m=d?o.symbol(d,
69
- a,b,n.width,n.height,B):o.rect(a,b,n.width,n.height,0,B[Pb]),m.attr("fill",Q).add(n);m.isImg||m.attr(q({width:u(n.width),height:u(n.height)},B));B=null}}function k(){var a=n.styles,a=a&&a.textAlign,b=v+x*(1-L),c;c=h?0:na;if(r(Va)&&J&&(a==="center"||a==="right"))b+={center:0.5,right:1}[a]*(Va-J.width);if(b!==s.x||c!==s.y)s.attr("x",b),c!==t&&s.attr("y",c);s.x=b;s.y=c}function l(a,b){m?m.attr(a,b):B[a]=b}var o=this,n=o.g(i),s=o.text("",0,0,g).attr({zIndex:1}),m,J,L=0,x=3,v=0,Va,wb,xb,yb,y=0,B={},na,
70
- z;n.onAdd=function(){s.add(n);n.attr({text:a||"",x:b,y:c});m&&r(e)&&n.attr({anchorX:e,anchorY:f})};n.widthSetter=function(a){Va=a};n.heightSetter=function(a){wb=a};n.paddingSetter=function(a){r(a)&&a!==x&&(x=a,k())};n.paddingLeftSetter=function(a){r(a)&&a!==v&&(v=a,k())};n.alignSetter=function(a){L={left:0,center:0.5,right:1}[a]};n.textSetter=function(a){a!==t&&s.textSetter(a);j();k()};n["stroke-widthSetter"]=function(a,b){a&&(z=!0);y=a%2/2;l(b,a)};n.strokeSetter=n.fillSetter=n.rSetter=function(a,
71
- b){b==="fill"&&a&&(z=!0);l(b,a)};n.anchorXSetter=function(a,b){e=a;l(b,a+y-xb)};n.anchorYSetter=function(a,b){f=a;l(b,a-yb)};n.xSetter=function(a){n.x=a;L&&(a-=L*((Va||J.width)+x));xb=u(a);n.attr("translateX",xb)};n.ySetter=function(a){yb=n.y=u(a);n.attr("translateY",yb)};var A=n.css;return q(n,{css:function(a){if(a){var b={},a=w(a);p("fontSize,fontWeight,fontFamily,color,lineHeight,width,textDecoration,textShadow".split(","),function(c){a[c]!==t&&(b[c]=a[c],delete a[c])});s.css(b)}return A.call(n,
72
- a)},getBBox:function(){return{width:J.width+2*x,height:J.height+2*x,x:J.x-x,y:J.y-x}},shadow:function(a){m&&m.shadow(a);return n},destroy:function(){W(n.element,"mouseenter");W(n.element,"mouseleave");s&&(s=s.destroy());m&&(m=m.destroy());P.prototype.destroy.call(n);n=o=j=k=l=null}})}};Za=ta;q(P.prototype,{htmlCss:function(a){var b=this.element;if(b=a&&b.tagName==="SPAN"&&a.width)delete a.width,this.textWidth=b,this.updateTransform();this.styles=q(this.styles,a);G(this.element,a);return this},htmlGetBBox:function(){var a=
73
- this.element,b=this.bBox;if(!b){if(a.nodeName==="text")a.style.position="absolute";b=this.bBox={x:a.offsetLeft,y:a.offsetTop,width:a.offsetWidth,height:a.offsetHeight}}return b},htmlUpdateTransform:function(){if(this.added){var a=this.renderer,b=this.element,c=this.translateX||0,d=this.translateY||0,e=this.x||0,f=this.y||0,g=this.textAlign||"left",h={left:0,center:0.5,right:1}[g],i=this.shadows;G(b,{marginLeft:c,marginTop:d});i&&p(i,function(a){G(a,{marginLeft:c+1,marginTop:d+1})});this.inverted&&
74
- p(b.childNodes,function(c){a.invertChild(c,b)});if(b.tagName==="SPAN"){var j=this.rotation,k,l=z(this.textWidth),o=[j,g,b.innerHTML,this.textWidth].join(",");if(o!==this.cTT){k=a.fontMetrics(b.style.fontSize).b;r(j)&&this.setSpanRotation(j,h,k);i=m(this.elemWidth,b.offsetWidth);if(i>l&&/[ \-]/.test(b.textContent||b.innerText))G(b,{width:l+"px",display:"block",whiteSpace:"normal"}),i=l;this.getSpanCorrection(i,k,h,j,g)}G(b,{left:e+(this.xCorr||0)+"px",top:f+(this.yCorr||0)+"px"});if(ib)k=b.offsetHeight;
75
- this.cTT=o}}else this.alignOnAdd=!0},setSpanRotation:function(a,b,c){var d={},e=Aa?"-ms-transform":ib?"-webkit-transform":Ta?"MozTransform":Ib?"-o-transform":"";d[e]=d.transform="rotate("+a+"deg)";d[e+(Ta?"Origin":"-origin")]=d.transformOrigin=b*100+"% "+c+"px";G(this.element,d)},getSpanCorrection:function(a,b,c){this.xCorr=-a*c;this.yCorr=-b}});q(ta.prototype,{html:function(a,b,c){var d=this.createElement("span"),e=d.element,f=d.renderer;d.textSetter=function(a){a!==e.innerHTML&&delete this.bBox;
76
- e.innerHTML=this.textStr=a};d.xSetter=d.ySetter=d.alignSetter=d.rotationSetter=function(a,b){b==="align"&&(b="textAlign");d[b]=a;d.htmlUpdateTransform()};d.attr({text:a,x:u(b),y:u(c)}).css({position:"absolute",whiteSpace:"nowrap",fontFamily:this.style.fontFamily,fontSize:this.style.fontSize});d.css=d.htmlCss;if(f.isSVG)d.add=function(a){var b,c=f.box.parentNode,j=[];if(this.parentGroup=a){if(b=a.div,!b){for(;a;)j.push(a),a=a.parentGroup;p(j.reverse(),function(a){var d;b=a.div=a.div||Y(Ja,{className:H(a.element,
77
- "class")},{position:"absolute",left:(a.translateX||0)+"px",top:(a.translateY||0)+"px"},b||c);d=b.style;q(a,{translateXSetter:function(b,c){d.left=b+"px";a[c]=b;a.doTransform=!0},translateYSetter:function(b,c){d.top=b+"px";a[c]=b;a.doTransform=!0},visibilitySetter:function(a,b){d[b]=a}})})}}else b=c;b.appendChild(e);d.added=!0;d.alignOnAdd&&d.htmlUpdateTransform();return d};return d}});var X;if(!aa&&!fa){R.VMLElement=X={init:function(a,b){var c=["<",b,' filled="f" stroked="f"'],d=["position: ","absolute",
78
- ";"],e=b===Ja;(b==="shape"||e)&&d.push("left:0;top:0;width:1px;height:1px;");d.push("visibility: ",e?"hidden":"visible");c.push(' style="',d.join(""),'"/>');if(b)c=e||b==="span"||b==="img"?c.join(""):a.prepVML(c),this.element=Y(c);this.renderer=a},add:function(a){var b=this.renderer,c=this.element,d=b.box,d=a?a.element||a:d;a&&a.inverted&&b.invertChild(c,d);d.appendChild(c);this.added=!0;this.alignOnAdd&&!this.deferUpdateTransform&&this.updateTransform();if(this.onAdd)this.onAdd();return this},updateTransform:P.prototype.htmlUpdateTransform,
79
- setSpanRotation:function(){var a=this.rotation,b=Z(a*Ca),c=ea(a*Ca);G(this.element,{filter:a?["progid:DXImageTransform.Microsoft.Matrix(M11=",b,", M12=",-c,", M21=",c,", M22=",b,", sizingMethod='auto expand')"].join(""):Q})},getSpanCorrection:function(a,b,c,d,e){var f=d?Z(d*Ca):1,g=d?ea(d*Ca):0,h=m(this.elemHeight,this.element.offsetHeight),i;this.xCorr=f<0&&-a;this.yCorr=g<0&&-h;i=f*g<0;this.xCorr+=g*b*(i?1-c:c);this.yCorr-=f*b*(d?i?c:1-c:1);e&&e!=="left"&&(this.xCorr-=a*c*(f<0?-1:1),d&&(this.yCorr-=
80
- h*c*(g<0?-1:1)),G(this.element,{textAlign:e}))},pathToVML:function(a){for(var b=a.length,c=[];b--;)if(ha(a[b]))c[b]=u(a[b]*10)-5;else if(a[b]==="Z")c[b]="x";else if(c[b]=a[b],a.isArc&&(a[b]==="wa"||a[b]==="at"))c[b+5]===c[b+7]&&(c[b+7]+=a[b+7]>a[b+5]?1:-1),c[b+6]===c[b+8]&&(c[b+8]+=a[b+8]>a[b+6]?1:-1);return c.join(" ")||"x"},clip:function(a){var b=this,c;a?(c=a.members,ja(c,b),c.push(b),b.destroyClip=function(){ja(c,b)},a=a.getCSS(b)):(b.destroyClip&&b.destroyClip(),a={clip:hb?"inherit":"rect(auto)"});
81
- return b.css(a)},css:P.prototype.htmlCss,safeRemoveChild:function(a){a.parentNode&&Pa(a)},destroy:function(){this.destroyClip&&this.destroyClip();return P.prototype.destroy.apply(this)},on:function(a,b){this.element["on"+a]=function(){var a=I.event;a.target=a.srcElement;b(a)};return this},cutOffPath:function(a,b){var c,a=a.split(/[ ,]/);c=a.length;if(c===9||c===11)a[c-4]=a[c-2]=z(a[c-2])-10*b;return a.join(" ")},shadow:function(a,b,c){var d=[],e,f=this.element,g=this.renderer,h,i=f.style,j,k=f.path,
82
- l,o,n,s;k&&typeof k.value!=="string"&&(k="x");o=k;if(a){n=m(a.width,3);s=(a.opacity||0.15)/n;for(e=1;e<=3;e++){l=n*2+1-2*e;c&&(o=this.cutOffPath(k.value,l+0.5));j=['<shape isShadow="true" strokeweight="',l,'" filled="false" path="',o,'" coordsize="10 10" style="',f.style.cssText,'" />'];h=Y(g.prepVML(j),null,{left:z(i.left)+m(a.offsetX,1),top:z(i.top)+m(a.offsetY,1)});if(c)h.cutOff=l+1;j=['<stroke color="',a.color||"black",'" opacity="',s*e,'"/>'];Y(g.prepVML(j),null,null,h);b?b.element.appendChild(h):
83
- f.parentNode.insertBefore(h,f);d.push(h)}this.shadows=d}return this},updateShadows:sa,setAttr:function(a,b){hb?this.element[a]=b:this.element.setAttribute(a,b)},classSetter:function(a){this.element.className=a},dashstyleSetter:function(a,b,c){(c.getElementsByTagName("stroke")[0]||Y(this.renderer.prepVML(["<stroke/>"]),null,null,c))[b]=a||"solid";this[b]=a},dSetter:function(a,b,c){var d=this.shadows,a=a||[];this.d=a.join(" ");c.path=a=this.pathToVML(a);if(d)for(c=d.length;c--;)d[c].path=d[c].cutOff?
84
- this.cutOffPath(a,d[c].cutOff):a;this.setAttr(b,a)},fillSetter:function(a,b,c){var d=c.nodeName;if(d==="SPAN")c.style.color=a;else if(d!=="IMG")c.filled=a!==Q,this.setAttr("fillcolor",this.renderer.color(a,c,b,this))},opacitySetter:sa,rotationSetter:function(a,b,c){c=c.style;this[b]=c[b]=a;c.left=-u(ea(a*Ca)+1)+"px";c.top=u(Z(a*Ca))+"px"},strokeSetter:function(a,b,c){this.setAttr("strokecolor",this.renderer.color(a,c,b))},"stroke-widthSetter":function(a,b,c){c.stroked=!!a;this[b]=a;ha(a)&&(a+="px");
85
- this.setAttr("strokeweight",a)},titleSetter:function(a,b){this.setAttr(b,a)},visibilitySetter:function(a,b,c){a==="inherit"&&(a="visible");this.shadows&&p(this.shadows,function(c){c.style[b]=a});c.nodeName==="DIV"&&(a=a==="hidden"?"-999em":0,hb||(c.style[b]=a?"visible":"hidden"),b="top");c.style[b]=a},xSetter:function(a,b,c){this[b]=a;b==="x"?b="left":b==="y"&&(b="top");this.updateClipping?(this[b]=a,this.updateClipping()):c.style[b]=a},zIndexSetter:function(a,b,c){c.style[b]=a}};X=ka(P,X);X.prototype.ySetter=
86
- X.prototype.widthSetter=X.prototype.heightSetter=X.prototype.xSetter;var ga={Element:X,isIE8:wa.indexOf("MSIE 8.0")>-1,init:function(a,b,c,d){var e;this.alignedObjects=[];d=this.createElement(Ja).css(q(this.getStyle(d),{position:"relative"}));e=d.element;a.appendChild(d.element);this.isVML=!0;this.box=e;this.boxWrapper=d;this.cache={};this.setSize(b,c,!1);if(!y.namespaces.hcv){y.namespaces.add("hcv","urn:schemas-microsoft-com:vml");try{y.createStyleSheet().cssText="hcv\\:fill, hcv\\:path, hcv\\:shape, hcv\\:stroke{ behavior:url(#default#VML); display: inline-block; } "}catch(f){y.styleSheets[0].cssText+=
87
- "hcv\\:fill, hcv\\:path, hcv\\:shape, hcv\\:stroke{ behavior:url(#default#VML); display: inline-block; } "}}},isHidden:function(){return!this.box.offsetWidth},clipRect:function(a,b,c,d){var e=this.createElement(),f=ca(a);return q(e,{members:[],left:(f?a.x:a)+1,top:(f?a.y:b)+1,width:(f?a.width:c)-1,height:(f?a.height:d)-1,getCSS:function(a){var b=a.element,c=b.nodeName,a=a.inverted,d=this.top-(c==="shape"?b.offsetTop:0),e=this.left,b=e+this.width,f=d+this.height,d={clip:"rect("+u(a?e:d)+"px,"+u(a?
88
- f:b)+"px,"+u(a?b:f)+"px,"+u(a?d:e)+"px)"};!a&&hb&&c==="DIV"&&q(d,{width:b+"px",height:f+"px"});return d},updateClipping:function(){p(e.members,function(a){a.element&&a.css(e.getCSS(a))})}})},color:function(a,b,c,d){var e=this,f,g=/^rgba/,h,i,j=Q;a&&a.linearGradient?i="gradient":a&&a.radialGradient&&(i="pattern");if(i){var k,l,o=a.linearGradient||a.radialGradient,n,s,m,J,L,x="",a=a.stops,r,v=[],q=function(){h=['<fill colors="'+v.join(",")+'" opacity="',m,'" o:opacity2="',s,'" type="',i,'" ',x,'focus="100%" method="any" />'];
89
- Y(e.prepVML(h),null,null,b)};n=a[0];r=a[a.length-1];n[0]>0&&a.unshift([0,n[1]]);r[0]<1&&a.push([1,r[1]]);p(a,function(a,b){g.test(a[1])?(f=ya(a[1]),k=f.get("rgb"),l=f.get("a")):(k=a[1],l=1);v.push(a[0]*100+"% "+k);b?(m=l,J=k):(s=l,L=k)});if(c==="fill")if(i==="gradient")c=o.x1||o[0]||0,a=o.y1||o[1]||0,n=o.x2||o[2]||0,o=o.y2||o[3]||0,x='angle="'+(90-U.atan((o-a)/(n-c))*180/ma)+'"',q();else{var j=o.r,t=j*2,u=j*2,y=o.cx,B=o.cy,na=b.radialReference,w,j=function(){na&&(w=d.getBBox(),y+=(na[0]-w.x)/w.width-
90
- 0.5,B+=(na[1]-w.y)/w.height-0.5,t*=na[2]/w.width,u*=na[2]/w.height);x='src="'+E.global.VMLRadialGradientURL+'" size="'+t+","+u+'" origin="0.5,0.5" position="'+y+","+B+'" color2="'+L+'" ';q()};d.added?j():d.onAdd=j;j=J}else j=k}else if(g.test(a)&&b.tagName!=="IMG")f=ya(a),h=["<",c,' opacity="',f.get("a"),'"/>'],Y(this.prepVML(h),null,null,b),j=f.get("rgb");else{j=b.getElementsByTagName(c);if(j.length)j[0].opacity=1,j[0].type="solid";j=a}return j},prepVML:function(a){var b=this.isIE8,a=a.join("");b?
91
- (a=a.replace("/>",' xmlns="urn:schemas-microsoft-com:vml" />'),a=a.indexOf('style="')===-1?a.replace("/>",' style="display:inline-block;behavior:url(#default#VML);" />'):a.replace('style="','style="display:inline-block;behavior:url(#default#VML);')):a=a.replace("<","<hcv:");return a},text:ta.prototype.html,path:function(a){var b={coordsize:"10 10"};La(a)?b.d=a:ca(a)&&q(b,a);return this.createElement("shape").attr(b)},circle:function(a,b,c){var d=this.symbol("circle");if(ca(a))c=a.r,b=a.y,a=a.x;d.isCircle=
92
- !0;d.r=c;return d.attr({x:a,y:b})},g:function(a){var b;a&&(b={className:"highcharts-"+a,"class":"highcharts-"+a});return this.createElement(Ja).attr(b)},image:function(a,b,c,d,e){var f=this.createElement("img").attr({src:a});arguments.length>1&&f.attr({x:b,y:c,width:d,height:e});return f},createElement:function(a){return a==="rect"?this.symbol(a):ta.prototype.createElement.call(this,a)},invertChild:function(a,b){var c=this,d=b.style,e=a.tagName==="IMG"&&a.style;G(a,{flip:"x",left:z(d.width)-(e?z(e.top):
93
- 1),top:z(d.height)-(e?z(e.left):1),rotation:-90});p(a.childNodes,function(b){c.invertChild(b,a)})},symbols:{arc:function(a,b,c,d,e){var f=e.start,g=e.end,h=e.r||c||d,c=e.innerR,d=Z(f),i=ea(f),j=Z(g),k=ea(g);if(g-f===0)return["x"];f=["wa",a-h,b-h,a+h,b+h,a+h*d,b+h*i,a+h*j,b+h*k];e.open&&!c&&f.push("e","M",a,b);f.push("at",a-c,b-c,a+c,b+c,a+c*j,b+c*k,a+c*d,b+c*i,"x","e");f.isArc=!0;return f},circle:function(a,b,c,d,e){e&&(c=d=2*e.r);e&&e.isCircle&&(a-=c/2,b-=d/2);return["wa",a,b,a+c,b+d,a+c,b+d/2,a+
94
- c,b+d/2,"e"]},rect:function(a,b,c,d,e){return ta.prototype.symbols[!r(e)||!e.r?"square":"callout"].call(0,a,b,c,d,e)}}};R.VMLRenderer=X=function(){this.init.apply(this,arguments)};X.prototype=w(ta.prototype,ga);Za=X}ta.prototype.measureSpanWidth=function(a,b){var c=y.createElement("span"),d;d=y.createTextNode(a);c.appendChild(d);G(c,b);this.box.appendChild(c);d=c.offsetWidth;Pa(c);return d};var Lb;if(fa)R.CanVGRenderer=X=function(){xa="http://www.w3.org/1999/xhtml"},X.prototype.symbols={},Lb=function(){function a(){var a=
95
- b.length,d;for(d=0;d<a;d++)b[d]();b=[]}var b=[];return{push:function(c,d){b.length===0&&Qb(d,a);b.push(c)}}}(),Za=X;Sa.prototype={addLabel:function(){var a=this.axis,b=a.options,c=a.chart,d=a.horiz,e=a.categories,f=a.names,g=this.pos,h=b.labels,i=a.tickPositions,d=d&&e&&!h.step&&!h.staggerLines&&!h.rotation&&c.plotWidth/i.length||!d&&(c.margin[3]||c.chartWidth*0.33),j=g===i[0],k=g===i[i.length-1],l,f=e?m(e[g],f[g],g):g,e=this.label,o=i.info;a.isDatetimeAxis&&o&&(l=b.dateTimeLabelFormats[o.higherRanks[g]||
96
- o.unitName]);this.isFirst=j;this.isLast=k;b=a.labelFormatter.call({axis:a,chart:c,isFirst:j,isLast:k,dateTimeLabelFormat:l,value:a.isLog?da(ia(f)):f});g=d&&{width:v(1,u(d-2*(h.padding||10)))+"px"};g=q(g,h.style);if(r(e))e&&e.attr({text:b}).css(g);else{l={align:a.labelAlign};if(ha(h.rotation))l.rotation=h.rotation;if(d&&h.ellipsis)l._clipHeight=a.len/i.length;this.label=r(b)&&h.enabled?c.renderer.text(b,0,0,h.useHTML).attr(l).css(g).add(a.labelGroup):null}},getLabelSize:function(){var a=this.label,
97
- b=this.axis;return a?a.getBBox()[b.horiz?"height":"width"]:0},getLabelSides:function(){var a=this.label.getBBox(),b=this.axis,c=b.horiz,d=b.options.labels,a=c?a.width:a.height,b=c?d.x-a*{left:0,center:0.5,right:1}[b.labelAlign]:0;return[b,c?a+b:a]},handleOverflow:function(a,b){var c=!0,d=this.axis,e=this.isFirst,f=this.isLast,g=d.horiz?b.x:b.y,h=d.reversed,i=d.tickPositions,j=this.getLabelSides(),k=j[0],j=j[1],l,o,n,s=this.label.line||0;l=d.labelEdge;o=d.justifyLabels&&(e||f);l[s]===t||g+k>l[s]?l[s]=
98
- g+j:o||(c=!1);if(o){l=(o=d.justifyToPlot)?d.pos:0;o=o?l+d.len:d.chart.chartWidth;do a+=e?1:-1,n=d.ticks[i[a]];while(i[a]&&(!n||n.label.line!==s));d=n&&n.label.xy&&n.label.xy.x+n.getLabelSides()[e?0:1];e&&!h||f&&h?g+k<l&&(g=l-k,n&&g+j>d&&(c=!1)):g+j>o&&(g=o-j,n&&g+k<d&&(c=!1));b.x=g}return c},getPosition:function(a,b,c,d){var e=this.axis,f=e.chart,g=d&&f.oldChartHeight||f.chartHeight;return{x:a?e.translate(b+c,null,null,d)+e.transB:e.left+e.offset+(e.opposite?(d&&f.oldChartWidth||f.chartWidth)-e.right-
99
- e.left:0),y:a?g-e.bottom+e.offset-(e.opposite?e.height:0):g-e.translate(b+c,null,null,d)-e.transB}},getLabelPosition:function(a,b,c,d,e,f,g,h){var i=this.axis,j=i.transA,k=i.reversed,l=i.staggerLines,o=i.chart.renderer.fontMetrics(e.style.fontSize).b,n=e.rotation,a=a+e.x-(f&&d?f*j*(k?-1:1):0),b=b+e.y-(f&&!d?f*j*(k?1:-1):0);n&&i.side===2&&(b-=o-o*Z(n*Ca));!r(e.y)&&!n&&(b+=o-c.getBBox().height/2);if(l)c.line=g/(h||1)%l,b+=c.line*(i.labelOffset/l);return{x:a,y:b}},getMarkPath:function(a,b,c,d,e,f){return f.crispLine(["M",
100
- a,b,"L",a+(e?0:-c),b+(e?c:0)],d)},render:function(a,b,c){var d=this.axis,e=d.options,f=d.chart.renderer,g=d.horiz,h=this.type,i=this.label,j=this.pos,k=e.labels,l=this.gridLine,o=h?h+"Grid":"grid",n=h?h+"Tick":"tick",s=e[o+"LineWidth"],p=e[o+"LineColor"],J=e[o+"LineDashStyle"],L=e[n+"Length"],o=e[n+"Width"]||0,x=e[n+"Color"],r=e[n+"Position"],n=this.mark,v=k.step,q=!0,u=d.tickmarkOffset,w=this.getPosition(g,j,u,b),y=w.x,w=w.y,B=g&&y===d.pos+d.len||!g&&w===d.pos?-1:1;this.isActive=!0;if(s){j=d.getPlotLinePath(j+
101
- u,s*B,b,!0);if(l===t){l={stroke:p,"stroke-width":s};if(J)l.dashstyle=J;if(!h)l.zIndex=1;if(b)l.opacity=0;this.gridLine=l=s?f.path(j).attr(l).add(d.gridGroup):null}if(!b&&l&&j)l[this.isNew?"attr":"animate"]({d:j,opacity:c})}if(o&&L)r==="inside"&&(L=-L),d.opposite&&(L=-L),h=this.getMarkPath(y,w,L,o*B,g,f),n?n.animate({d:h,opacity:c}):this.mark=f.path(h).attr({stroke:x,"stroke-width":o,opacity:c}).add(d.axisGroup);if(i&&!isNaN(y))i.xy=w=this.getLabelPosition(y,w,i,g,k,u,a,v),this.isFirst&&!this.isLast&&
102
- !m(e.showFirstLabel,1)||this.isLast&&!this.isFirst&&!m(e.showLastLabel,1)?q=!1:!d.isRadial&&!k.step&&!k.rotation&&!b&&c!==0&&(q=this.handleOverflow(a,w)),v&&a%v&&(q=!1),q&&!isNaN(w.y)?(w.opacity=c,i[this.isNew?"attr":"animate"](w),this.isNew=!1):i.attr("y",-9999)},destroy:function(){Oa(this,this.axis)}};R.PlotLineOrBand=function(a,b){this.axis=a;if(b)this.options=b,this.id=b.id};R.PlotLineOrBand.prototype={render:function(){var a=this,b=a.axis,c=b.horiz,d=(b.pointRange||0)/2,e=a.options,f=e.label,
103
- g=a.label,h=e.width,i=e.to,j=e.from,k=r(j)&&r(i),l=e.value,o=e.dashStyle,n=a.svgElem,s=[],p,J=e.color,L=e.zIndex,x=e.events,q={},t=b.chart.renderer;b.isLog&&(j=za(j),i=za(i),l=za(l));if(h){if(s=b.getPlotLinePath(l,h),q={stroke:J,"stroke-width":h},o)q.dashstyle=o}else if(k){j=v(j,b.min-d);i=C(i,b.max+d);s=b.getPlotBandPath(j,i,e);if(J)q.fill=J;if(e.borderWidth)q.stroke=e.borderColor,q["stroke-width"]=e.borderWidth}else return;if(r(L))q.zIndex=L;if(n)if(s)n.animate({d:s},null,n.onGetPath);else{if(n.hide(),
104
- n.onGetPath=function(){n.show()},g)a.label=g=g.destroy()}else if(s&&s.length&&(a.svgElem=n=t.path(s).attr(q).add(),x))for(p in d=function(b){n.on(b,function(c){x[b].apply(a,[c])})},x)d(p);if(f&&r(f.text)&&s&&s.length&&b.width>0&&b.height>0){f=w({align:c&&k&&"center",x:c?!k&&4:10,verticalAlign:!c&&k&&"middle",y:c?k?16:10:k?6:-4,rotation:c&&!k&&90},f);if(!g){q={align:f.textAlign||f.align,rotation:f.rotation};if(r(L))q.zIndex=L;a.label=g=t.text(f.text,0,0,f.useHTML).attr(q).css(f.style).add()}b=[s[1],
105
- s[4],m(s[6],s[1])];s=[s[2],s[5],m(s[7],s[2])];c=Na(b);k=Na(s);g.align(f,!1,{x:c,y:k,width:Ba(b)-c,height:Ba(s)-k});g.show()}else g&&g.hide();return a},destroy:function(){ja(this.axis.plotLinesAndBands,this);delete this.axis;Oa(this)}};la.prototype={defaultOptions:{dateTimeLabelFormats:{millisecond:"%H:%M:%S.%L",second:"%H:%M:%S",minute:"%H:%M",hour:"%H:%M",day:"%e. %b",week:"%e. %b",month:"%b '%y",year:"%Y"},endOnTick:!1,gridLineColor:"#C0C0C0",labels:N,lineColor:"#C0D0E0",lineWidth:1,minPadding:0.01,
106
- maxPadding:0.01,minorGridLineColor:"#E0E0E0",minorGridLineWidth:1,minorTickColor:"#A0A0A0",minorTickLength:2,minorTickPosition:"outside",startOfWeek:1,startOnTick:!1,tickColor:"#C0D0E0",tickLength:10,tickmarkPlacement:"between",tickPixelInterval:100,tickPosition:"outside",tickWidth:1,title:{align:"middle",style:{color:"#707070"}},type:"linear"},defaultYAxisOptions:{endOnTick:!0,gridLineWidth:1,tickPixelInterval:72,showLastLabel:!0,labels:{x:-8,y:3},lineWidth:0,maxPadding:0.05,minPadding:0.05,startOnTick:!0,
107
- tickWidth:0,title:{rotation:270,text:"Values"},stackLabels:{enabled:!1,formatter:function(){return Ga(this.total,-1)},style:N.style}},defaultLeftAxisOptions:{labels:{x:-15,y:null},title:{rotation:270}},defaultRightAxisOptions:{labels:{x:15,y:null},title:{rotation:90}},defaultBottomAxisOptions:{labels:{x:0,y:20},title:{rotation:0}},defaultTopAxisOptions:{labels:{x:0,y:-15},title:{rotation:0}},init:function(a,b){var c=b.isX;this.horiz=a.inverted?!c:c;this.coll=(this.isXAxis=c)?"xAxis":"yAxis";this.opposite=
108
- b.opposite;this.side=b.side||(this.horiz?this.opposite?0:2:this.opposite?1:3);this.setOptions(b);var d=this.options,e=d.type;this.labelFormatter=d.labels.formatter||this.defaultLabelFormatter;this.userOptions=b;this.minPixelPadding=0;this.chart=a;this.reversed=d.reversed;this.zoomEnabled=d.zoomEnabled!==!1;this.categories=d.categories||e==="category";this.names=[];this.isLog=e==="logarithmic";this.isDatetimeAxis=e==="datetime";this.isLinked=r(d.linkedTo);this.tickmarkOffset=this.categories&&d.tickmarkPlacement===
109
- "between"?0.5:0;this.ticks={};this.labelEdge=[];this.minorTicks={};this.plotLinesAndBands=[];this.alternateBands={};this.len=0;this.minRange=this.userMinRange=d.minRange||d.maxZoom;this.range=d.range;this.offset=d.offset||0;this.stacks={};this.oldStacks={};this.min=this.max=null;this.crosshair=m(d.crosshair,qa(a.options.tooltip.crosshairs)[c?0:1],!1);var f,d=this.options.events;Da(this,a.axes)===-1&&(c&&!this.isColorAxis?a.axes.splice(a.xAxis.length,0,this):a.axes.push(this),a[this.coll].push(this));
110
- this.series=this.series||[];if(a.inverted&&c&&this.reversed===t)this.reversed=!0;this.removePlotLine=this.removePlotBand=this.removePlotBandOrLine;for(f in d)K(this,f,d[f]);if(this.isLog)this.val2lin=za,this.lin2val=ia},setOptions:function(a){this.options=w(this.defaultOptions,this.isXAxis?{}:this.defaultYAxisOptions,[this.defaultTopAxisOptions,this.defaultRightAxisOptions,this.defaultBottomAxisOptions,this.defaultLeftAxisOptions][this.side],w(E[this.coll],a))},defaultLabelFormatter:function(){var a=
111
- this.axis,b=this.value,c=a.categories,d=this.dateTimeLabelFormat,e=E.lang.numericSymbols,f=e&&e.length,g,h=a.options.labels.format,a=a.isLog?b:a.tickInterval;if(h)g=Ia(h,this);else if(c)g=b;else if(d)g=cb(d,b);else if(f&&a>=1E3)for(;f--&&g===t;)c=Math.pow(1E3,f+1),a>=c&&e[f]!==null&&(g=Ga(b/c,-1)+e[f]);g===t&&(g=M(b)>=1E4?Ga(b,0):Ga(b,-1,t,""));return g},getSeriesExtremes:function(){var a=this,b=a.chart;a.hasVisibleSeries=!1;a.dataMin=a.dataMax=null;a.buildStacks&&a.buildStacks();p(a.series,function(c){if(c.visible||
112
- !b.options.chart.ignoreHiddenSeries){var d;d=c.options.threshold;var e;a.hasVisibleSeries=!0;a.isLog&&d<=0&&(d=null);if(a.isXAxis){if(d=c.xData,d.length)a.dataMin=C(m(a.dataMin,d[0]),Na(d)),a.dataMax=v(m(a.dataMax,d[0]),Ba(d))}else{c.getExtremes();e=c.dataMax;c=c.dataMin;if(r(c)&&r(e))a.dataMin=C(m(a.dataMin,c),c),a.dataMax=v(m(a.dataMax,e),e);if(r(d))if(a.dataMin>=d)a.dataMin=d,a.ignoreMinPadding=!0;else if(a.dataMax<d)a.dataMax=d,a.ignoreMaxPadding=!0}}})},translate:function(a,b,c,d,e,f){var g=
113
- 1,h=0,i=d?this.oldTransA:this.transA,d=d?this.oldMin:this.min,j=this.minPixelPadding,e=(this.options.ordinal||this.isLog&&e)&&this.lin2val;if(!i)i=this.transA;if(c)g*=-1,h=this.len;this.reversed&&(g*=-1,h-=g*(this.sector||this.len));b?(a=a*g+h,a-=j,a=a/i+d,e&&(a=this.lin2val(a))):(e&&(a=this.val2lin(a)),f==="between"&&(f=0.5),a=g*(a-d)*i+h+g*j+(ha(f)?i*f*this.pointRange:0));return a},toPixels:function(a,b){return this.translate(a,!1,!this.horiz,null,!0)+(b?0:this.pos)},toValue:function(a,b){return this.translate(a-
114
- (b?0:this.pos),!0,!this.horiz,null,!0)},getPlotLinePath:function(a,b,c,d,e){var f=this.chart,g=this.left,h=this.top,i,j,k=c&&f.oldChartHeight||f.chartHeight,l=c&&f.oldChartWidth||f.chartWidth,o;i=this.transB;e=m(e,this.translate(a,null,null,c));a=c=u(e+i);i=j=u(k-e-i);if(isNaN(e))o=!0;else if(this.horiz){if(i=h,j=k-this.bottom,a<g||a>g+this.width)o=!0}else if(a=g,c=l-this.right,i<h||i>h+this.height)o=!0;return o&&!d?null:f.renderer.crispLine(["M",a,i,"L",c,j],b||1)},getLinearTickPositions:function(a,
115
- b,c){var d,e=da(T(b/a)*a),f=da(Ka(c/a)*a),g=[];if(b===c&&ha(b))return[b];for(b=e;b<=f;){g.push(b);b=da(b+a);if(b===d)break;d=b}return g},getMinorTickPositions:function(){var a=this.options,b=this.tickPositions,c=this.minorTickInterval,d=[],e;if(this.isLog){e=b.length;for(a=1;a<e;a++)d=d.concat(this.getLogTickPositions(c,b[a-1],b[a],!0))}else if(this.isDatetimeAxis&&a.minorTickInterval==="auto")d=d.concat(this.getTimeTicks(this.normalizeTimeTickInterval(c),this.min,this.max,a.startOfWeek)),d[0]<this.min&&
116
- d.shift();else for(b=this.min+(b[0]-this.min)%c;b<=this.max;b+=c)d.push(b);return d},adjustForMinRange:function(){var a=this.options,b=this.min,c=this.max,d,e=this.dataMax-this.dataMin>=this.minRange,f,g,h,i,j;if(this.isXAxis&&this.minRange===t&&!this.isLog)r(a.min)||r(a.max)?this.minRange=null:(p(this.series,function(a){i=a.xData;for(g=j=a.xIncrement?1:i.length-1;g>0;g--)if(h=i[g]-i[g-1],f===t||h<f)f=h}),this.minRange=C(f*5,this.dataMax-this.dataMin));if(c-b<this.minRange){var k=this.minRange;d=
117
- (k-c+b)/2;d=[b-d,m(a.min,b-d)];if(e)d[2]=this.dataMin;b=Ba(d);c=[b+k,m(a.max,b+k)];if(e)c[2]=this.dataMax;c=Na(c);c-b<k&&(d[0]=c-k,d[1]=m(a.min,c-k),b=Ba(d))}this.min=b;this.max=c},setAxisTranslation:function(a){var b=this,c=b.max-b.min,d=b.axisPointRange||0,e,f=0,g=0,h=b.linkedParent,i=!!b.categories,j=b.transA;if(b.isXAxis||i||d)h?(f=h.minPointOffset,g=h.pointRangePadding):p(b.series,function(a){var h=i?1:b.isXAxis?a.pointRange:b.axisPointRange||0,j=a.options.pointPlacement,n=a.closestPointRange;
118
- h>c&&(h=0);d=v(d,h);f=v(f,Fa(j)?0:h/2);g=v(g,j==="on"?0:h);!a.noSharedTooltip&&r(n)&&(e=r(e)?C(e,n):n)}),h=b.ordinalSlope&&e?b.ordinalSlope/e:1,b.minPointOffset=f*=h,b.pointRangePadding=g*=h,b.pointRange=C(d,c),b.closestPointRange=e;if(a)b.oldTransA=j;b.translationSlope=b.transA=j=b.len/(c+g||1);b.transB=b.horiz?b.left:b.bottom;b.minPixelPadding=j*f},setTickPositions:function(a){var b=this,c=b.chart,d=b.options,e=b.isLog,f=b.isDatetimeAxis,g=b.isXAxis,h=b.isLinked,i=b.options.tickPositioner,j=d.maxPadding,
119
- k=d.minPadding,l=d.tickInterval,o=d.minTickInterval,n=d.tickPixelInterval,s,$=b.categories;h?(b.linkedParent=c[b.coll][d.linkedTo],c=b.linkedParent.getExtremes(),b.min=m(c.min,c.dataMin),b.max=m(c.max,c.dataMax),d.type!==b.linkedParent.options.type&&ra(11,1)):(b.min=m(b.userMin,d.min,b.dataMin),b.max=m(b.userMax,d.max,b.dataMax));if(e)!a&&C(b.min,m(b.dataMin,b.min))<=0&&ra(10,1),b.min=da(za(b.min)),b.max=da(za(b.max));if(b.range&&r(b.max))b.userMin=b.min=v(b.min,b.max-b.range),b.userMax=b.max,b.range=
120
- null;b.beforePadding&&b.beforePadding();b.adjustForMinRange();if(!$&&!b.axisPointRange&&!b.usePercentage&&!h&&r(b.min)&&r(b.max)&&(c=b.max-b.min)){if(!r(d.min)&&!r(b.userMin)&&k&&(b.dataMin<0||!b.ignoreMinPadding))b.min-=c*k;if(!r(d.max)&&!r(b.userMax)&&j&&(b.dataMax>0||!b.ignoreMaxPadding))b.max+=c*j}if(ha(d.floor))b.min=v(b.min,d.floor);if(ha(d.ceiling))b.max=C(b.max,d.ceiling);b.min===b.max||b.min===void 0||b.max===void 0?b.tickInterval=1:h&&!l&&n===b.linkedParent.options.tickPixelInterval?b.tickInterval=
121
- b.linkedParent.tickInterval:(b.tickInterval=m(l,$?1:(b.max-b.min)*n/v(b.len,n)),!r(l)&&b.len<n&&!this.isRadial&&!this.isLog&&!$&&d.startOnTick&&d.endOnTick&&(s=!0,b.tickInterval/=4));g&&!a&&p(b.series,function(a){a.processData(b.min!==b.oldMin||b.max!==b.oldMax)});b.setAxisTranslation(!0);b.beforeSetTickPositions&&b.beforeSetTickPositions();if(b.postProcessTickInterval)b.tickInterval=b.postProcessTickInterval(b.tickInterval);if(b.pointRange)b.tickInterval=v(b.pointRange,b.tickInterval);if(!l&&b.tickInterval<
122
- o)b.tickInterval=o;if(!f&&!e&&!l)b.tickInterval=nb(b.tickInterval,null,mb(b.tickInterval),d);b.minorTickInterval=d.minorTickInterval==="auto"&&b.tickInterval?b.tickInterval/5:d.minorTickInterval;b.tickPositions=a=d.tickPositions?[].concat(d.tickPositions):i&&i.apply(b,[b.min,b.max]);if(!a)!b.ordinalPositions&&(b.max-b.min)/b.tickInterval>v(2*b.len,200)&&ra(19,!0),a=f?b.getTimeTicks(b.normalizeTimeTickInterval(b.tickInterval,d.units),b.min,b.max,d.startOfWeek,b.ordinalPositions,b.closestPointRange,
123
- !0):e?b.getLogTickPositions(b.tickInterval,b.min,b.max):b.getLinearTickPositions(b.tickInterval,b.min,b.max),s&&a.splice(1,a.length-2),b.tickPositions=a;if(!h)e=a[0],f=a[a.length-1],h=b.minPointOffset||0,d.startOnTick?b.min=e:b.min-h>e&&a.shift(),d.endOnTick?b.max=f:b.max+h<f&&a.pop(),a.length===1&&(d=M(b.max)>1E13?1:0.001,b.min-=d,b.max+=d)},setMaxTicks:function(){var a=this.chart,b=a.maxTicks||{},c=this.tickPositions,d=this._maxTicksKey=[this.coll,this.pos,this.len].join("-");if(!this.isLinked&&
124
- !this.isDatetimeAxis&&c&&c.length>(b[d]||0)&&this.options.alignTicks!==!1)b[d]=c.length;a.maxTicks=b},adjustTickAmount:function(){var a=this._maxTicksKey,b=this.tickPositions,c=this.chart.maxTicks;if(c&&c[a]&&!this.isDatetimeAxis&&!this.categories&&!this.isLinked&&this.options.alignTicks!==!1&&this.min!==t){var d=this.tickAmount,e=b.length;this.tickAmount=a=c[a];if(e<a){for(;b.length<a;)b.push(da(b[b.length-1]+this.tickInterval));this.transA*=(e-1)/(a-1);this.max=b[b.length-1]}if(r(d)&&a!==d)this.isDirty=
125
- !0}},setScale:function(){var a=this.stacks,b,c,d,e;this.oldMin=this.min;this.oldMax=this.max;this.oldAxisLength=this.len;this.setAxisSize();e=this.len!==this.oldAxisLength;p(this.series,function(a){if(a.isDirtyData||a.isDirty||a.xAxis.isDirty)d=!0});if(e||d||this.isLinked||this.forceRedraw||this.userMin!==this.oldUserMin||this.userMax!==this.oldUserMax){if(!this.isXAxis)for(b in a)for(c in a[b])a[b][c].total=null,a[b][c].cum=0;this.forceRedraw=!1;this.getSeriesExtremes();this.setTickPositions();this.oldUserMin=
126
- this.userMin;this.oldUserMax=this.userMax;if(!this.isDirty)this.isDirty=e||this.min!==this.oldMin||this.max!==this.oldMax}else if(!this.isXAxis){if(this.oldStacks)a=this.stacks=this.oldStacks;for(b in a)for(c in a[b])a[b][c].cum=a[b][c].total}this.setMaxTicks()},setExtremes:function(a,b,c,d,e){var f=this,g=f.chart,c=m(c,!0),e=q(e,{min:a,max:b});D(f,"setExtremes",e,function(){f.userMin=a;f.userMax=b;f.eventArgs=e;f.isDirtyExtremes=!0;c&&g.redraw(d)})},zoom:function(a,b){var c=this.dataMin,d=this.dataMax,
127
- e=this.options;this.allowZoomOutside||(r(c)&&a<=C(c,m(e.min,c))&&(a=t),r(d)&&b>=v(d,m(e.max,d))&&(b=t));this.displayBtn=a!==t||b!==t;this.setExtremes(a,b,!1,t,{trigger:"zoom"});return!0},setAxisSize:function(){var a=this.chart,b=this.options,c=b.offsetLeft||0,d=this.horiz,e=m(b.width,a.plotWidth-c+(b.offsetRight||0)),f=m(b.height,a.plotHeight),g=m(b.top,a.plotTop),b=m(b.left,a.plotLeft+c),c=/%$/;c.test(f)&&(f=parseInt(f,10)/100*a.plotHeight);c.test(g)&&(g=parseInt(g,10)/100*a.plotHeight+a.plotTop);
128
- this.left=b;this.top=g;this.width=e;this.height=f;this.bottom=a.chartHeight-f-g;this.right=a.chartWidth-e-b;this.len=v(d?e:f,0);this.pos=d?b:g},getExtremes:function(){var a=this.isLog;return{min:a?da(ia(this.min)):this.min,max:a?da(ia(this.max)):this.max,dataMin:this.dataMin,dataMax:this.dataMax,userMin:this.userMin,userMax:this.userMax}},getThreshold:function(a){var b=this.isLog,c=b?ia(this.min):this.min,b=b?ia(this.max):this.max;c>a||a===null?a=c:b<a&&(a=b);return this.translate(a,0,1,0,1)},autoLabelAlign:function(a){a=
129
- (m(a,0)-this.side*90+720)%360;return a>15&&a<165?"right":a>195&&a<345?"left":"center"},getOffset:function(){var a=this,b=a.chart,c=b.renderer,d=a.options,e=a.tickPositions,f=a.ticks,g=a.horiz,h=a.side,i=b.inverted?[1,0,3,2][h]:h,j,k=0,l,o=0,n=d.title,s=d.labels,$=0,J=b.axisOffset,L=b.clipOffset,x=[-1,1,1,-1][h],q,u=1,w=m(s.maxStaggerLines,5),y,z,A,B,na=h===2?c.fontMetrics(s.style.fontSize).b:0;a.hasData=j=a.hasVisibleSeries||r(a.min)&&r(a.max)&&!!e;a.showAxis=b=j||m(d.showEmpty,!0);a.staggerLines=
130
- a.horiz&&s.staggerLines;if(!a.axisGroup)a.gridGroup=c.g("grid").attr({zIndex:d.gridZIndex||1}).add(),a.axisGroup=c.g("axis").attr({zIndex:d.zIndex||2}).add(),a.labelGroup=c.g("axis-labels").attr({zIndex:s.zIndex||7}).addClass("highcharts-"+a.coll.toLowerCase()+"-labels").add();if(j||a.isLinked){a.labelAlign=m(s.align||a.autoLabelAlign(s.rotation));p(e,function(b){f[b]?f[b].addLabel():f[b]=new Sa(a,b)});if(a.horiz&&!a.staggerLines&&w&&!s.rotation){for(q=a.reversed?[].concat(e).reverse():e;u<w;){j=
131
- [];y=!1;for(s=0;s<q.length;s++)z=q[s],A=(A=f[z].label&&f[z].label.getBBox())?A.width:0,B=s%u,A&&(z=a.translate(z),j[B]!==t&&z<j[B]&&(y=!0),j[B]=z+A);if(y)u++;else break}if(u>1)a.staggerLines=u}p(e,function(b){if(h===0||h===2||{1:"left",3:"right"}[h]===a.labelAlign)$=v(f[b].getLabelSize(),$)});if(a.staggerLines)$*=a.staggerLines,a.labelOffset=$}else for(q in f)f[q].destroy(),delete f[q];if(n&&n.text&&n.enabled!==!1){if(!a.axisTitle)a.axisTitle=c.text(n.text,0,0,n.useHTML).attr({zIndex:7,rotation:n.rotation||
132
- 0,align:n.textAlign||{low:"left",middle:"center",high:"right"}[n.align]}).addClass("highcharts-"+this.coll.toLowerCase()+"-title").css(n.style).add(a.axisGroup),a.axisTitle.isNew=!0;if(b)k=a.axisTitle.getBBox()[g?"height":"width"],o=m(n.margin,g?5:10),l=n.offset;a.axisTitle[b?"show":"hide"]()}a.offset=x*m(d.offset,J[h]);a.axisTitleMargin=m(l,$+o+($&&x*d.labels[g?"y":"x"]-na));J[h]=v(J[h],a.axisTitleMargin+k+x*a.offset);L[i]=v(L[i],T(d.lineWidth/2)*2)},getLinePath:function(a){var b=this.chart,c=this.opposite,
133
- d=this.offset,e=this.horiz,f=this.left+(c?this.width:0)+d,d=b.chartHeight-this.bottom-(c?this.height:0)+d;c&&(a*=-1);return b.renderer.crispLine(["M",e?this.left:f,e?d:this.top,"L",e?b.chartWidth-this.right:f,e?d:b.chartHeight-this.bottom],a)},getTitlePosition:function(){var a=this.horiz,b=this.left,c=this.top,d=this.len,e=this.options.title,f=a?b:c,g=this.opposite,h=this.offset,i=z(e.style.fontSize||12),d={low:f+(a?0:d),middle:f+d/2,high:f+(a?d:0)}[e.align],b=(a?c+this.height:b)+(a?1:-1)*(g?-1:1)*
134
- this.axisTitleMargin+(this.side===2?i:0);return{x:a?d:b+(g?this.width:0)+h+(e.x||0),y:a?b-(g?this.height:0)+h:d+(e.y||0)}},render:function(){var a=this,b=a.horiz,c=a.reversed,d=a.chart,e=d.renderer,f=a.options,g=a.isLog,h=a.isLinked,i=a.tickPositions,j,k=a.axisTitle,l=a.ticks,o=a.minorTicks,n=a.alternateBands,s=f.stackLabels,m=f.alternateGridColor,J=a.tickmarkOffset,L=f.lineWidth,x=d.hasRendered&&r(a.oldMin)&&!isNaN(a.oldMin),q=a.hasData,v=a.showAxis,u,w=f.labels.overflow,y=a.justifyLabels=b&&w!==
135
- !1,z;a.labelEdge.length=0;a.justifyToPlot=w==="justify";p([l,o,n],function(a){for(var b in a)a[b].isActive=!1});if(q||h)if(a.minorTickInterval&&!a.categories&&p(a.getMinorTickPositions(),function(b){o[b]||(o[b]=new Sa(a,b,"minor"));x&&o[b].isNew&&o[b].render(null,!0);o[b].render(null,!1,1)}),i.length&&(j=i.slice(),(b&&c||!b&&!c)&&j.reverse(),y&&(j=j.slice(1).concat([j[0]])),p(j,function(b,c){y&&(c=c===j.length-1?0:c+1);if(!h||b>=a.min&&b<=a.max)l[b]||(l[b]=new Sa(a,b)),x&&l[b].isNew&&l[b].render(c,
136
- !0,0.1),l[b].render(c,!1,1)}),J&&a.min===0&&(l[-1]||(l[-1]=new Sa(a,-1,null,!0)),l[-1].render(-1))),m&&p(i,function(b,c){if(c%2===0&&b<a.max)n[b]||(n[b]=new R.PlotLineOrBand(a)),u=b+J,z=i[c+1]!==t?i[c+1]+J:a.max,n[b].options={from:g?ia(u):u,to:g?ia(z):z,color:m},n[b].render(),n[b].isActive=!0}),!a._addedPlotLB)p((f.plotLines||[]).concat(f.plotBands||[]),function(b){a.addPlotBandOrLine(b)}),a._addedPlotLB=!0;p([l,o,n],function(a){var b,c,e=[],f=va?va.duration||500:0,g=function(){for(c=e.length;c--;)a[e[c]]&&
137
- !a[e[c]].isActive&&(a[e[c]].destroy(),delete a[e[c]])};for(b in a)if(!a[b].isActive)a[b].render(b,!1,0),a[b].isActive=!1,e.push(b);a===n||!d.hasRendered||!f?g():f&&setTimeout(g,f)});if(L)b=a.getLinePath(L),a.axisLine?a.axisLine.animate({d:b}):a.axisLine=e.path(b).attr({stroke:f.lineColor,"stroke-width":L,zIndex:7}).add(a.axisGroup),a.axisLine[v?"show":"hide"]();if(k&&v)k[k.isNew?"attr":"animate"](a.getTitlePosition()),k.isNew=!1;s&&s.enabled&&a.renderStackTotals();a.isDirty=!1},redraw:function(){var a=
138
- this.chart.pointer;a&&a.reset(!0);this.render();p(this.plotLinesAndBands,function(a){a.render()});p(this.series,function(a){a.isDirty=!0})},destroy:function(a){var b=this,c=b.stacks,d,e=b.plotLinesAndBands;a||W(b);for(d in c)Oa(c[d]),c[d]=null;p([b.ticks,b.minorTicks,b.alternateBands],function(a){Oa(a)});for(a=e.length;a--;)e[a].destroy();p("stackTotalGroup,axisLine,axisTitle,axisGroup,cross,gridGroup,labelGroup".split(","),function(a){b[a]&&(b[a]=b[a].destroy())});this.cross&&this.cross.destroy()},
139
- drawCrosshair:function(a,b){if(this.crosshair)if((r(b)||!m(this.crosshair.snap,!0))===!1)this.hideCrosshair();else{var c,d=this.crosshair,e=d.animation;m(d.snap,!0)?r(b)&&(c=this.chart.inverted!=this.horiz?b.plotX:this.len-b.plotY):c=this.horiz?a.chartX-this.pos:this.len-a.chartY+this.pos;c=this.isRadial?this.getPlotLinePath(this.isXAxis?b.x:m(b.stackY,b.y)):this.getPlotLinePath(null,null,null,null,c);if(c===null)this.hideCrosshair();else if(this.cross)this.cross.attr({visibility:"visible"})[e?"animate":
140
- "attr"]({d:c},e);else{e={"stroke-width":d.width||1,stroke:d.color||"#C0C0C0",zIndex:d.zIndex||2};if(d.dashStyle)e.dashstyle=d.dashStyle;this.cross=this.chart.renderer.path(c).attr(e).add()}}},hideCrosshair:function(){this.cross&&this.cross.hide()}};q(la.prototype,{getPlotBandPath:function(a,b){var c=this.getPlotLinePath(b),d=this.getPlotLinePath(a);d&&c?d.push(c[4],c[5],c[1],c[2]):d=null;return d},addPlotBand:function(a){this.addPlotBandOrLine(a,"plotBands")},addPlotLine:function(a){this.addPlotBandOrLine(a,
141
- "plotLines")},addPlotBandOrLine:function(a,b){var c=(new R.PlotLineOrBand(this,a)).render(),d=this.userOptions;c&&(b&&(d[b]=d[b]||[],d[b].push(a)),this.plotLinesAndBands.push(c));return c},removePlotBandOrLine:function(a){for(var b=this.plotLinesAndBands,c=this.options,d=this.userOptions,e=b.length;e--;)b[e].id===a&&b[e].destroy();p([c.plotLines||[],d.plotLines||[],c.plotBands||[],d.plotBands||[]],function(b){for(e=b.length;e--;)b[e].id===a&&ja(b,b[e])})}});la.prototype.getTimeTicks=function(a,b,
142
- c,d){var e=[],f={},g=E.global.useUTC,h,i=new Date(b-Ra),j=a.unitRange,k=a.count;if(r(b)){j>=A.second&&(i.setMilliseconds(0),i.setSeconds(j>=A.minute?0:k*T(i.getSeconds()/k)));if(j>=A.minute)i[Db](j>=A.hour?0:k*T(i[pb]()/k));if(j>=A.hour)i[Eb](j>=A.day?0:k*T(i[qb]()/k));if(j>=A.day)i[sb](j>=A.month?1:k*T(i[Xa]()/k));j>=A.month&&(i[Fb](j>=A.year?0:k*T(i[fb]()/k)),h=i[gb]());j>=A.year&&(h-=h%k,i[Gb](h));if(j===A.week)i[sb](i[Xa]()-i[rb]()+m(d,1));b=1;Ra&&(i=new Date(i.getTime()+Ra));h=i[gb]();for(var d=
143
- i.getTime(),l=i[fb](),o=i[Xa](),n=g?Ra:(864E5+i.getTimezoneOffset()*6E4)%864E5;d<c;)e.push(d),j===A.year?d=eb(h+b*k,0):j===A.month?d=eb(h,l+b*k):!g&&(j===A.day||j===A.week)?d=eb(h,l,o+b*k*(j===A.day?1:7)):d+=j*k,b++;e.push(d);p(vb(e,function(a){return j<=A.hour&&a%A.day===n}),function(a){f[a]="day"})}e.info=q(a,{higherRanks:f,totalRange:j*k});return e};la.prototype.normalizeTimeTickInterval=function(a,b){var c=b||[["millisecond",[1,2,5,10,20,25,50,100,200,500]],["second",[1,2,5,10,15,30]],["minute",
144
- [1,2,5,10,15,30]],["hour",[1,2,3,4,6,8,12]],["day",[1,2]],["week",[1,2]],["month",[1,2,3,4,6]],["year",null]],d=c[c.length-1],e=A[d[0]],f=d[1],g;for(g=0;g<c.length;g++)if(d=c[g],e=A[d[0]],f=d[1],c[g+1]&&a<=(e*f[f.length-1]+A[c[g+1][0]])/2)break;e===A.year&&a<5*e&&(f=[1,2,5]);c=nb(a/e,f,d[0]==="year"?v(mb(a/e),1):1);return{unitRange:e,count:c,unitName:d[0]}};la.prototype.getLogTickPositions=function(a,b,c,d){var e=this.options,f=this.len,g=[];if(!d)this._minorAutoInterval=null;if(a>=0.5)a=u(a),g=this.getLinearTickPositions(a,
145
- b,c);else if(a>=0.08)for(var f=T(b),h,i,j,k,l,e=a>0.3?[1,2,4]:a>0.15?[1,2,4,6,8]:[1,2,3,4,5,6,7,8,9];f<c+1&&!l;f++){i=e.length;for(h=0;h<i&&!l;h++)j=za(ia(f)*e[h]),j>b&&(!d||k<=c)&&g.push(k),k>c&&(l=!0),k=j}else if(b=ia(b),c=ia(c),a=e[d?"minorTickInterval":"tickInterval"],a=m(a==="auto"?null:a,this._minorAutoInterval,(c-b)*(e.tickPixelInterval/(d?5:1))/((d?f/this.tickPositions.length:f)||1)),a=nb(a,null,mb(a)),g=Ua(this.getLinearTickPositions(a,b,c),za),!d)this._minorAutoInterval=a/5;if(!d)this.tickInterval=
146
- a;return g};var Mb=R.Tooltip=function(){this.init.apply(this,arguments)};Mb.prototype={init:function(a,b){var c=b.borderWidth,d=b.style,e=z(d.padding);this.chart=a;this.options=b;this.crosshairs=[];this.now={x:0,y:0};this.isHidden=!0;this.label=a.renderer.label("",0,0,b.shape||"callout",null,null,b.useHTML,null,"tooltip").attr({padding:e,fill:b.backgroundColor,"stroke-width":c,r:b.borderRadius,zIndex:8}).css(d).css({padding:0}).add().attr({y:-9999});fa||this.label.shadow(b.shadow);this.shared=b.shared},
147
- destroy:function(){if(this.label)this.label=this.label.destroy();clearTimeout(this.hideTimer);clearTimeout(this.tooltipTimeout)},move:function(a,b,c,d){var e=this,f=e.now,g=e.options.animation!==!1&&!e.isHidden,h=e.followPointer||e.len>1;q(f,{x:g?(2*f.x+a)/3:a,y:g?(f.y+b)/2:b,anchorX:h?t:g?(2*f.anchorX+c)/3:c,anchorY:h?t:g?(f.anchorY+d)/2:d});e.label.attr(f);if(g&&(M(a-f.x)>1||M(b-f.y)>1))clearTimeout(this.tooltipTimeout),this.tooltipTimeout=setTimeout(function(){e&&e.move(a,b,c,d)},32)},hide:function(){var a=
148
- this,b;clearTimeout(this.hideTimer);if(!this.isHidden)b=this.chart.hoverPoints,this.hideTimer=setTimeout(function(){a.label.fadeOut();a.isHidden=!0},m(this.options.hideDelay,500)),b&&p(b,function(a){a.setState()}),this.chart.hoverPoints=null},getAnchor:function(a,b){var c,d=this.chart,e=d.inverted,f=d.plotTop,g=0,h=0,i,a=qa(a);c=a[0].tooltipPos;this.followPointer&&b&&(b.chartX===t&&(b=d.pointer.normalize(b)),c=[b.chartX-d.plotLeft,b.chartY-f]);c||(p(a,function(a){i=a.series.yAxis;g+=a.plotX;h+=(a.plotLow?
149
- (a.plotLow+a.plotHigh)/2:a.plotY)+(!e&&i?i.top-f:0)}),g/=a.length,h/=a.length,c=[e?d.plotWidth-h:g,this.shared&&!e&&a.length>1&&b?b.chartY-f:e?d.plotHeight-g:h]);return Ua(c,u)},getPosition:function(a,b,c){var d=this.chart,e=this.distance,f={},g,h=["y",d.chartHeight,b,c.plotY+d.plotTop],i=["x",d.chartWidth,a,c.plotX+d.plotLeft],j=c.ttBelow||d.inverted&&!c.negative||!d.inverted&&c.negative,k=function(a,b,c,d){var g=c<d-e,b=d+e+c<b,c=d-e-c;d+=e;if(j&&b)f[a]=d;else if(!j&&g)f[a]=c;else if(g)f[a]=c;else if(b)f[a]=
150
- d;else return!1},l=function(a,b,c,d){if(d<e||d>b-e)return!1;else f[a]=d<c/2?1:d>b-c/2?b-c-2:d-c/2},o=function(a){var b=h;h=i;i=b;g=a},n=function(){k.apply(0,h)!==!1?l.apply(0,i)===!1&&!g&&(o(!0),n()):g?f.x=f.y=0:(o(!0),n())};(d.inverted||this.len>1)&&o();n();return f},defaultFormatter:function(a){var b=this.points||qa(this),c=b[0].series,d;d=[a.tooltipHeaderFormatter(b[0])];p(b,function(a){c=a.series;d.push(c.tooltipFormatter&&c.tooltipFormatter(a)||a.point.tooltipFormatter(c.tooltipOptions.pointFormat))});
151
- d.push(a.options.footerFormat||"");return d.join("")},refresh:function(a,b){var c=this.chart,d=this.label,e=this.options,f,g,h={},i,j=[];i=e.formatter||this.defaultFormatter;var h=c.hoverPoints,k,l=this.shared;clearTimeout(this.hideTimer);this.followPointer=qa(a)[0].series.tooltipOptions.followPointer;g=this.getAnchor(a,b);f=g[0];g=g[1];l&&(!a.series||!a.series.noSharedTooltip)?(c.hoverPoints=a,h&&p(h,function(a){a.setState()}),p(a,function(a){a.setState("hover");j.push(a.getLabelConfig())}),h={x:a[0].category,
152
- y:a[0].y},h.points=j,this.len=j.length,a=a[0]):h=a.getLabelConfig();i=i.call(h,this);h=a.series;this.distance=m(h.tooltipOptions.distance,16);i===!1?this.hide():(this.isHidden&&(bb(d),d.attr("opacity",1).show()),d.attr({text:i}),k=e.borderColor||a.color||h.color||"#606060",d.attr({stroke:k}),this.updatePosition({plotX:f,plotY:g,negative:a.negative,ttBelow:a.ttBelow}),this.isHidden=!1);D(c,"tooltipRefresh",{text:i,x:f+c.plotLeft,y:g+c.plotTop,borderColor:k})},updatePosition:function(a){var b=this.chart,
153
- c=this.label,c=(this.options.positioner||this.getPosition).call(this,c.width,c.height,a);this.move(u(c.x),u(c.y),a.plotX+b.plotLeft,a.plotY+b.plotTop)},tooltipHeaderFormatter:function(a){var b=a.series,c=b.tooltipOptions,d=c.dateTimeLabelFormats,e=c.xDateFormat,f=b.xAxis,g=f&&f.options.type==="datetime"&&ha(a.key),c=c.headerFormat,f=f&&f.closestPointRange,h;if(g&&!e){if(f)for(h in A){if(A[h]>=f||A[h]<=A.day&&a.key%A[h]>0){e=d[h];break}}else e=d.day;e=e||d.year}g&&e&&(c=c.replace("{point.key}","{point.key:"+
154
- e+"}"));return Ia(c,{point:a,series:b})}};var oa;$a=y.documentElement.ontouchstart!==t;var Wa=R.Pointer=function(a,b){this.init(a,b)};Wa.prototype={init:function(a,b){var c=b.chart,d=c.events,e=fa?"":c.zoomType,c=a.inverted,f;this.options=b;this.chart=a;this.zoomX=f=/x/.test(e);this.zoomY=e=/y/.test(e);this.zoomHor=f&&!c||e&&c;this.zoomVert=e&&!c||f&&c;this.hasZoom=f||e;this.runChartClick=d&&!!d.click;this.pinchDown=[];this.lastValidTouch={};if(R.Tooltip&&b.tooltip.enabled)a.tooltip=new Mb(a,b.tooltip),
155
- this.followTouchMove=b.tooltip.followTouchMove;this.setDOMEvents()},normalize:function(a,b){var c,d,a=a||window.event,a=Sb(a);if(!a.target)a.target=a.srcElement;d=a.touches?a.touches.length?a.touches.item(0):a.changedTouches[0]:a;if(!b)this.chartPosition=b=Rb(this.chart.container);d.pageX===t?(c=v(a.x,a.clientX-b.left),d=a.y):(c=d.pageX-b.left,d=d.pageY-b.top);return q(a,{chartX:u(c),chartY:u(d)})},getCoordinates:function(a){var b={xAxis:[],yAxis:[]};p(this.chart.axes,function(c){b[c.isXAxis?"xAxis":
156
- "yAxis"].push({axis:c,value:c.toValue(a[c.horiz?"chartX":"chartY"])})});return b},getIndex:function(a){var b=this.chart;return b.inverted?b.plotHeight+b.plotTop-a.chartY:a.chartX-b.plotLeft},runPointActions:function(a){var b=this.chart,c=b.series,d=b.tooltip,e,f,g=b.hoverPoint,h=b.hoverSeries,i,j,k=b.chartWidth,l=this.getIndex(a);if(d&&this.options.tooltip.shared&&(!h||!h.noSharedTooltip)){f=[];i=c.length;for(j=0;j<i;j++)if(c[j].visible&&c[j].options.enableMouseTracking!==!1&&!c[j].noSharedTooltip&&
157
- c[j].singularTooltips!==!0&&c[j].tooltipPoints.length&&(e=c[j].tooltipPoints[l])&&e.series)e._dist=M(l-e.clientX),k=C(k,e._dist),f.push(e);for(i=f.length;i--;)f[i]._dist>k&&f.splice(i,1);if(f.length&&f[0].clientX!==this.hoverX)d.refresh(f,a),this.hoverX=f[0].clientX}c=h&&h.tooltipOptions.followPointer;if(h&&h.tracker&&!c){if((e=h.tooltipPoints[l])&&e!==g)e.onMouseOver(a)}else d&&c&&!d.isHidden&&(h=d.getAnchor([{}],a),d.updatePosition({plotX:h[0],plotY:h[1]}));if(d&&!this._onDocumentMouseMove)this._onDocumentMouseMove=
158
- function(a){if(V[oa])V[oa].pointer.onDocumentMouseMove(a)},K(y,"mousemove",this._onDocumentMouseMove);p(b.axes,function(b){b.drawCrosshair(a,m(e,g))})},reset:function(a){var b=this.chart,c=b.hoverSeries,d=b.hoverPoint,e=b.tooltip,f=e&&e.shared?b.hoverPoints:d;(a=a&&e&&f)&&qa(f)[0].plotX===t&&(a=!1);if(a)e.refresh(f),d&&d.setState(d.state,!0);else{if(d)d.onMouseOut();if(c)c.onMouseOut();e&&e.hide();if(this._onDocumentMouseMove)W(y,"mousemove",this._onDocumentMouseMove),this._onDocumentMouseMove=null;
159
- p(b.axes,function(a){a.hideCrosshair()});this.hoverX=null}},scaleGroups:function(a,b){var c=this.chart,d;p(c.series,function(e){d=a||e.getPlotBox();e.xAxis&&e.xAxis.zoomEnabled&&(e.group.attr(d),e.markerGroup&&(e.markerGroup.attr(d),e.markerGroup.clip(b?c.clipRect:null)),e.dataLabelsGroup&&e.dataLabelsGroup.attr(d))});c.clipRect.attr(b||c.clipBox)},dragStart:function(a){var b=this.chart;b.mouseIsDown=a.type;b.cancelClick=!1;b.mouseDownX=this.mouseDownX=a.chartX;b.mouseDownY=this.mouseDownY=a.chartY},
160
- drag:function(a){var b=this.chart,c=b.options.chart,d=a.chartX,e=a.chartY,f=this.zoomHor,g=this.zoomVert,h=b.plotLeft,i=b.plotTop,j=b.plotWidth,k=b.plotHeight,l,o=this.mouseDownX,n=this.mouseDownY;d<h?d=h:d>h+j&&(d=h+j);e<i?e=i:e>i+k&&(e=i+k);this.hasDragged=Math.sqrt(Math.pow(o-d,2)+Math.pow(n-e,2));if(this.hasDragged>10){l=b.isInsidePlot(o-h,n-i);if(b.hasCartesianSeries&&(this.zoomX||this.zoomY)&&l&&!this.selectionMarker)this.selectionMarker=b.renderer.rect(h,i,f?1:j,g?1:k,0).attr({fill:c.selectionMarkerFill||
161
- "rgba(69,114,167,0.25)",zIndex:7}).add();this.selectionMarker&&f&&(d-=o,this.selectionMarker.attr({width:M(d),x:(d>0?0:d)+o}));this.selectionMarker&&g&&(d=e-n,this.selectionMarker.attr({height:M(d),y:(d>0?0:d)+n}));l&&!this.selectionMarker&&c.panning&&b.pan(a,c.panning)}},drop:function(a){var b=this.chart,c=this.hasPinched;if(this.selectionMarker){var d={xAxis:[],yAxis:[],originalEvent:a.originalEvent||a},a=this.selectionMarker,e=a.attr?a.attr("x"):a.x,f=a.attr?a.attr("y"):a.y,g=a.attr?a.attr("width"):
162
- a.width,h=a.attr?a.attr("height"):a.height,i;if(this.hasDragged||c)p(b.axes,function(a){if(a.zoomEnabled){var b=a.horiz,c=a.toValue(b?e:f),b=a.toValue(b?e+g:f+h);!isNaN(c)&&!isNaN(b)&&(d[a.coll].push({axis:a,min:C(c,b),max:v(c,b)}),i=!0)}}),i&&D(b,"selection",d,function(a){b.zoom(q(a,c?{animation:!1}:null))});this.selectionMarker=this.selectionMarker.destroy();c&&this.scaleGroups()}if(b)G(b.container,{cursor:b._cursor}),b.cancelClick=this.hasDragged>10,b.mouseIsDown=this.hasDragged=this.hasPinched=
163
- !1,this.pinchDown=[]},onContainerMouseDown:function(a){a=this.normalize(a);a.preventDefault&&a.preventDefault();this.dragStart(a)},onDocumentMouseUp:function(a){V[oa]&&V[oa].pointer.drop(a)},onDocumentMouseMove:function(a){var b=this.chart,c=this.chartPosition,d=b.hoverSeries,a=this.normalize(a,c);c&&d&&!this.inClass(a.target,"highcharts-tracker")&&!b.isInsidePlot(a.chartX-b.plotLeft,a.chartY-b.plotTop)&&this.reset()},onContainerMouseLeave:function(){var a=V[oa];if(a)a.pointer.reset(),a.pointer.chartPosition=
164
- null},onContainerMouseMove:function(a){var b=this.chart;oa=b.index;a=this.normalize(a);b.mouseIsDown==="mousedown"&&this.drag(a);(this.inClass(a.target,"highcharts-tracker")||b.isInsidePlot(a.chartX-b.plotLeft,a.chartY-b.plotTop))&&!b.openMenu&&this.runPointActions(a)},inClass:function(a,b){for(var c;a;){if(c=H(a,"class"))if(c.indexOf(b)!==-1)return!0;else if(c.indexOf("highcharts-container")!==-1)return!1;a=a.parentNode}},onTrackerMouseOut:function(a){var b=this.chart.hoverSeries,c=(a=a.relatedTarget||
165
- a.toElement)&&a.point&&a.point.series;if(b&&!b.options.stickyTracking&&!this.inClass(a,"highcharts-tooltip")&&c!==b)b.onMouseOut()},onContainerClick:function(a){var b=this.chart,c=b.hoverPoint,d=b.plotLeft,e=b.plotTop,a=this.normalize(a);a.cancelBubble=!0;b.cancelClick||(c&&this.inClass(a.target,"highcharts-tracker")?(D(c.series,"click",q(a,{point:c})),b.hoverPoint&&c.firePointEvent("click",a)):(q(a,this.getCoordinates(a)),b.isInsidePlot(a.chartX-d,a.chartY-e)&&D(b,"click",a)))},setDOMEvents:function(){var a=
166
- this,b=a.chart.container;b.onmousedown=function(b){a.onContainerMouseDown(b)};b.onmousemove=function(b){a.onContainerMouseMove(b)};b.onclick=function(b){a.onContainerClick(b)};K(b,"mouseleave",a.onContainerMouseLeave);ab===1&&K(y,"mouseup",a.onDocumentMouseUp);if($a)b.ontouchstart=function(b){a.onContainerTouchStart(b)},b.ontouchmove=function(b){a.onContainerTouchMove(b)},ab===1&&K(y,"touchend",a.onDocumentTouchEnd)},destroy:function(){var a;W(this.chart.container,"mouseleave",this.onContainerMouseLeave);
167
- ab||(W(y,"mouseup",this.onDocumentMouseUp),W(y,"touchend",this.onDocumentTouchEnd));clearInterval(this.tooltipTimeout);for(a in this)this[a]=null}};q(R.Pointer.prototype,{pinchTranslate:function(a,b,c,d,e,f){(this.zoomHor||this.pinchHor)&&this.pinchTranslateDirection(!0,a,b,c,d,e,f);(this.zoomVert||this.pinchVert)&&this.pinchTranslateDirection(!1,a,b,c,d,e,f)},pinchTranslateDirection:function(a,b,c,d,e,f,g,h){var i=this.chart,j=a?"x":"y",k=a?"X":"Y",l="chart"+k,o=a?"width":"height",n=i["plot"+(a?
168
- "Left":"Top")],s,m,p=h||1,q=i.inverted,x=i.bounds[a?"h":"v"],r=b.length===1,v=b[0][l],u=c[0][l],t=!r&&b[1][l],w=!r&&c[1][l],y,c=function(){!r&&M(v-t)>20&&(p=h||M(u-w)/M(v-t));m=(n-u)/p+v;s=i["plot"+(a?"Width":"Height")]/p};c();b=m;b<x.min?(b=x.min,y=!0):b+s>x.max&&(b=x.max-s,y=!0);y?(u-=0.8*(u-g[j][0]),r||(w-=0.8*(w-g[j][1])),c()):g[j]=[u,w];q||(f[j]=m-n,f[o]=s);f=q?1/p:p;e[o]=s;e[j]=b;d[q?a?"scaleY":"scaleX":"scale"+k]=p;d["translate"+k]=f*n+(u-f*v)},pinch:function(a){var b=this,c=b.chart,d=b.pinchDown,
169
- e=b.followTouchMove,f=a.touches,g=f.length,h=b.lastValidTouch,i=b.hasZoom,j=b.selectionMarker,k={},l=g===1&&(b.inClass(a.target,"highcharts-tracker")&&c.runTrackerClick||c.runChartClick),o={};(i||e)&&!l&&a.preventDefault();Ua(f,function(a){return b.normalize(a)});if(a.type==="touchstart")p(f,function(a,b){d[b]={chartX:a.chartX,chartY:a.chartY}}),h.x=[d[0].chartX,d[1]&&d[1].chartX],h.y=[d[0].chartY,d[1]&&d[1].chartY],p(c.axes,function(a){if(a.zoomEnabled){var b=c.bounds[a.horiz?"h":"v"],d=a.minPixelPadding,
170
- e=a.toPixels(a.dataMin),f=a.toPixels(a.dataMax),g=C(e,f),e=v(e,f);b.min=C(a.pos,g-d);b.max=v(a.pos+a.len,e+d)}});else if(d.length){if(!j)b.selectionMarker=j=q({destroy:sa},c.plotBox);b.pinchTranslate(d,f,k,j,o,h);b.hasPinched=i;b.scaleGroups(k,o);!i&&e&&g===1&&this.runPointActions(b.normalize(a))}},onContainerTouchStart:function(a){var b=this.chart;oa=b.index;a.touches.length===1?(a=this.normalize(a),b.isInsidePlot(a.chartX-b.plotLeft,a.chartY-b.plotTop)?(this.runPointActions(a),this.pinch(a)):this.reset()):
171
- a.touches.length===2&&this.pinch(a)},onContainerTouchMove:function(a){(a.touches.length===1||a.touches.length===2)&&this.pinch(a)},onDocumentTouchEnd:function(a){V[oa]&&V[oa].pointer.drop(a)}});if(I.PointerEvent||I.MSPointerEvent){var ua={},zb=!!I.PointerEvent,Wb=function(){var a,b=[];b.item=function(a){return this[a]};for(a in ua)ua.hasOwnProperty(a)&&b.push({pageX:ua[a].pageX,pageY:ua[a].pageY,target:ua[a].target});return b},Ab=function(a,b,c,d){a=a.originalEvent||a;if((a.pointerType==="touch"||
172
- a.pointerType===a.MSPOINTER_TYPE_TOUCH)&&V[oa])d(a),d=V[oa].pointer,d[b]({type:c,target:a.currentTarget,preventDefault:sa,touches:Wb()})};q(Wa.prototype,{onContainerPointerDown:function(a){Ab(a,"onContainerTouchStart","touchstart",function(a){ua[a.pointerId]={pageX:a.pageX,pageY:a.pageY,target:a.currentTarget}})},onContainerPointerMove:function(a){Ab(a,"onContainerTouchMove","touchmove",function(a){ua[a.pointerId]={pageX:a.pageX,pageY:a.pageY};if(!ua[a.pointerId].target)ua[a.pointerId].target=a.currentTarget})},
173
- onDocumentPointerUp:function(a){Ab(a,"onContainerTouchEnd","touchend",function(a){delete ua[a.pointerId]})},batchMSEvents:function(a){a(this.chart.container,zb?"pointerdown":"MSPointerDown",this.onContainerPointerDown);a(this.chart.container,zb?"pointermove":"MSPointerMove",this.onContainerPointerMove);a(y,zb?"pointerup":"MSPointerUp",this.onDocumentPointerUp)}});Ma(Wa.prototype,"init",function(a,b,c){a.call(this,b,c);(this.hasZoom||this.followTouchMove)&&G(b.container,{"-ms-touch-action":Q,"touch-action":Q})});
174
- Ma(Wa.prototype,"setDOMEvents",function(a){a.apply(this);(this.hasZoom||this.followTouchMove)&&this.batchMSEvents(K)});Ma(Wa.prototype,"destroy",function(a){this.batchMSEvents(W);a.call(this)})}var lb=R.Legend=function(a,b){this.init(a,b)};lb.prototype={init:function(a,b){var c=this,d=b.itemStyle,e=m(b.padding,8),f=b.itemMarginTop||0;this.options=b;if(b.enabled)c.baseline=z(d.fontSize)+3+f,c.itemStyle=d,c.itemHiddenStyle=w(d,b.itemHiddenStyle),c.itemMarginTop=f,c.padding=e,c.initialItemX=e,c.initialItemY=
175
- e-5,c.maxItemWidth=0,c.chart=a,c.itemHeight=0,c.lastLineHeight=0,c.symbolWidth=m(b.symbolWidth,16),c.pages=[],c.render(),K(c.chart,"endResize",function(){c.positionCheckboxes()})},colorizeItem:function(a,b){var c=this.options,d=a.legendItem,e=a.legendLine,f=a.legendSymbol,g=this.itemHiddenStyle.color,c=b?c.itemStyle.color:g,h=b?a.legendColor||a.color||"#CCC":g,g=a.options&&a.options.marker,i={fill:h},j;d&&d.css({fill:c,color:c});e&&e.attr({stroke:h});if(f){if(g&&f.isMarker)for(j in i.stroke=h,g=a.convertAttribs(g),
176
- g)d=g[j],d!==t&&(i[j]=d);f.attr(i)}},positionItem:function(a){var b=this.options,c=b.symbolPadding,b=!b.rtl,d=a._legendItemPos,e=d[0],d=d[1],f=a.checkbox;a.legendGroup&&a.legendGroup.translate(b?e:this.legendWidth-e-2*c-4,d);if(f)f.x=e,f.y=d},destroyItem:function(a){var b=a.checkbox;p(["legendItem","legendLine","legendSymbol","legendGroup"],function(b){a[b]&&(a[b]=a[b].destroy())});b&&Pa(a.checkbox)},destroy:function(){var a=this.group,b=this.box;if(b)this.box=b.destroy();if(a)this.group=a.destroy()},
177
- positionCheckboxes:function(a){var b=this.group.alignAttr,c,d=this.clipHeight||this.legendHeight;if(b)c=b.translateY,p(this.allItems,function(e){var f=e.checkbox,g;f&&(g=c+f.y+(a||0)+3,G(f,{left:b.translateX+e.checkboxOffset+f.x-20+"px",top:g+"px",display:g>c-6&&g<c+d-6?"":Q}))})},renderTitle:function(){var a=this.padding,b=this.options.title,c=0;if(b.text){if(!this.title)this.title=this.chart.renderer.label(b.text,a-3,a-4,null,null,null,null,null,"legend-title").attr({zIndex:1}).css(b.style).add(this.group);
178
- a=this.title.getBBox();c=a.height;this.offsetWidth=a.width;this.contentGroup.attr({translateY:c})}this.titleHeight=c},renderItem:function(a){var b=this.chart,c=b.renderer,d=this.options,e=d.layout==="horizontal",f=this.symbolWidth,g=d.symbolPadding,h=this.itemStyle,i=this.itemHiddenStyle,j=this.padding,k=e?m(d.itemDistance,20):0,l=!d.rtl,o=d.width,n=d.itemMarginBottom||0,s=this.itemMarginTop,p=this.initialItemX,q=a.legendItem,r=a.series&&a.series.drawLegendSymbol?a.series:a,x=r.options,x=this.createCheckboxForItem&&
179
- x&&x.showCheckbox,t=d.useHTML;if(!q)a.legendGroup=c.g("legend-item").attr({zIndex:1}).add(this.scrollGroup),r.drawLegendSymbol(this,a),a.legendItem=q=c.text(d.labelFormat?Ia(d.labelFormat,a):d.labelFormatter.call(a),l?f+g:-g,this.baseline,t).css(w(a.visible?h:i)).attr({align:l?"left":"right",zIndex:2}).add(a.legendGroup),this.setItemEvents&&this.setItemEvents(a,q,t,h,i),this.colorizeItem(a,a.visible),x&&this.createCheckboxForItem(a);c=q.getBBox();f=a.checkboxOffset=d.itemWidth||a.legendItemWidth||
180
- f+g+c.width+k+(x?20:0);this.itemHeight=g=u(a.legendItemHeight||c.height);if(e&&this.itemX-p+f>(o||b.chartWidth-2*j-p-d.x))this.itemX=p,this.itemY+=s+this.lastLineHeight+n,this.lastLineHeight=0;this.maxItemWidth=v(this.maxItemWidth,f);this.lastItemY=s+this.itemY+n;this.lastLineHeight=v(g,this.lastLineHeight);a._legendItemPos=[this.itemX,this.itemY];e?this.itemX+=f:(this.itemY+=s+g+n,this.lastLineHeight=g);this.offsetWidth=o||v((e?this.itemX-p-k:f)+j,this.offsetWidth)},getAllItems:function(){var a=
181
- [];p(this.chart.series,function(b){var c=b.options;if(m(c.showInLegend,!r(c.linkedTo)?t:!1,!0))a=a.concat(b.legendItems||(c.legendType==="point"?b.data:b))});return a},render:function(){var a=this,b=a.chart,c=b.renderer,d=a.group,e,f,g,h,i=a.box,j=a.options,k=a.padding,l=j.borderWidth,o=j.backgroundColor;a.itemX=a.initialItemX;a.itemY=a.initialItemY;a.offsetWidth=0;a.lastItemY=0;if(!d)a.group=d=c.g("legend").attr({zIndex:7}).add(),a.contentGroup=c.g().attr({zIndex:1}).add(d),a.scrollGroup=c.g().add(a.contentGroup);
182
- a.renderTitle();e=a.getAllItems();ob(e,function(a,b){return(a.options&&a.options.legendIndex||0)-(b.options&&b.options.legendIndex||0)});j.reversed&&e.reverse();a.allItems=e;a.display=f=!!e.length;p(e,function(b){a.renderItem(b)});g=j.width||a.offsetWidth;h=a.lastItemY+a.lastLineHeight+a.titleHeight;h=a.handleOverflow(h);if(l||o){g+=k;h+=k;if(i){if(g>0&&h>0)i[i.isNew?"attr":"animate"](i.crisp({width:g,height:h})),i.isNew=!1}else a.box=i=c.rect(0,0,g,h,j.borderRadius,l||0).attr({stroke:j.borderColor,
183
- "stroke-width":l||0,fill:o||Q}).add(d).shadow(j.shadow),i.isNew=!0;i[f?"show":"hide"]()}a.legendWidth=g;a.legendHeight=h;p(e,function(b){a.positionItem(b)});f&&d.align(q({width:g,height:h},j),!0,"spacingBox");b.isResizing||this.positionCheckboxes()},handleOverflow:function(a){var b=this,c=this.chart,d=c.renderer,e=this.options,f=e.y,f=c.spacingBox.height+(e.verticalAlign==="top"?-f:f)-this.padding,g=e.maxHeight,h,i=this.clipRect,j=e.navigation,k=m(j.animation,!0),l=j.arrowSize||12,o=this.nav,n=this.pages,
184
- s,q=this.allItems;e.layout==="horizontal"&&(f/=2);g&&(f=C(f,g));n.length=0;if(a>f&&!e.useHTML){this.clipHeight=h=f-20-this.titleHeight-this.padding;this.currentPage=m(this.currentPage,1);this.fullHeight=a;p(q,function(a,b){var c=a._legendItemPos[1],d=u(a.legendItem.getBBox().height),e=n.length;if(!e||c-n[e-1]>h&&(s||c)!==n[e-1])n.push(s||c),e++;b===q.length-1&&c+d-n[e-1]>h&&n.push(c);c!==s&&(s=c)});if(!i)i=b.clipRect=d.clipRect(0,this.padding,9999,0),b.contentGroup.clip(i);i.attr({height:h});if(!o)this.nav=
185
- o=d.g().attr({zIndex:1}).add(this.group),this.up=d.symbol("triangle",0,0,l,l).on("click",function(){b.scroll(-1,k)}).add(o),this.pager=d.text("",15,10).css(j.style).add(o),this.down=d.symbol("triangle-down",0,0,l,l).on("click",function(){b.scroll(1,k)}).add(o);b.scroll(0);a=f}else if(o)i.attr({height:c.chartHeight}),o.hide(),this.scrollGroup.attr({translateY:1}),this.clipHeight=0;return a},scroll:function(a,b){var c=this.pages,d=c.length,e=this.currentPage+a,f=this.clipHeight,g=this.options.navigation,
186
- h=g.activeColor,g=g.inactiveColor,i=this.pager,j=this.padding;e>d&&(e=d);if(e>0)b!==t&&Qa(b,this.chart),this.nav.attr({translateX:j,translateY:f+this.padding+7+this.titleHeight,visibility:"visible"}),this.up.attr({fill:e===1?g:h}).css({cursor:e===1?"default":"pointer"}),i.attr({text:e+"/"+d}),this.down.attr({x:18+this.pager.getBBox().width,fill:e===d?g:h}).css({cursor:e===d?"default":"pointer"}),c=-c[e-1]+this.initialItemY,this.scrollGroup.animate({translateY:c}),this.currentPage=e,this.positionCheckboxes(c)}};
187
- N=R.LegendSymbolMixin={drawRectangle:function(a,b){var c=a.options.symbolHeight||12;b.legendSymbol=this.chart.renderer.rect(0,a.baseline-5-c/2,a.symbolWidth,c,a.options.symbolRadius||0).attr({zIndex:3}).add(b.legendGroup)},drawLineMarker:function(a){var b=this.options,c=b.marker,d;d=a.symbolWidth;var e=this.chart.renderer,f=this.legendGroup,a=a.baseline-u(e.fontMetrics(a.options.itemStyle.fontSize).b*0.3),g;if(b.lineWidth){g={"stroke-width":b.lineWidth};if(b.dashStyle)g.dashstyle=b.dashStyle;this.legendLine=
188
- e.path(["M",0,a,"L",d,a]).attr(g).add(f)}if(c&&c.enabled!==!1)b=c.radius,this.legendSymbol=d=e.symbol(this.symbol,d/2-b,a-b,2*b,2*b).add(f),d.isMarker=!0}};(/Trident\/7\.0/.test(wa)||Ta)&&Ma(lb.prototype,"positionItem",function(a,b){var c=this,d=function(){b._legendItemPos&&a.call(c,b)};d();setTimeout(d)});Ya.prototype={init:function(a,b){var c,d=a.series;a.series=null;c=w(E,a);c.series=a.series=d;this.userOptions=a;d=c.chart;this.margin=this.splashArray("margin",d);this.spacing=this.splashArray("spacing",
189
- d);var e=d.events;this.bounds={h:{},v:{}};this.callback=b;this.isResizing=0;this.options=c;this.axes=[];this.series=[];this.hasCartesianSeries=d.showAxes;var f=this,g;f.index=V.length;V.push(f);ab++;d.reflow!==!1&&K(f,"load",function(){f.initReflow()});if(e)for(g in e)K(f,g,e[g]);f.xAxis=[];f.yAxis=[];f.animation=fa?!1:m(d.animation,!0);f.pointCount=0;f.counters=new Bb;f.firstRender()},initSeries:function(a){var b=this.options.chart;(b=F[a.type||b.type||b.defaultSeriesType])||ra(17,!0);b=new b;b.init(this,
190
- a);return b},isInsidePlot:function(a,b,c){var d=c?b:a,a=c?a:b;return d>=0&&d<=this.plotWidth&&a>=0&&a<=this.plotHeight},adjustTickAmounts:function(){this.options.chart.alignTicks!==!1&&p(this.axes,function(a){a.adjustTickAmount()});this.maxTicks=null},redraw:function(a){var b=this.axes,c=this.series,d=this.pointer,e=this.legend,f=this.isDirtyLegend,g,h,i=this.isDirtyBox,j=c.length,k=j,l=this.renderer,o=l.isHidden(),n=[];Qa(a,this);o&&this.cloneRenderTo();for(this.layOutTitles();k--;)if(a=c[k],a.options.stacking&&
191
- (g=!0,a.isDirty)){h=!0;break}if(h)for(k=j;k--;)if(a=c[k],a.options.stacking)a.isDirty=!0;p(c,function(a){a.isDirty&&a.options.legendType==="point"&&(f=!0)});if(f&&e.options.enabled)e.render(),this.isDirtyLegend=!1;g&&this.getStacks();if(this.hasCartesianSeries){if(!this.isResizing)this.maxTicks=null,p(b,function(a){a.setScale()});this.adjustTickAmounts();this.getMargins();p(b,function(a){a.isDirty&&(i=!0)});p(b,function(a){if(a.isDirtyExtremes)a.isDirtyExtremes=!1,n.push(function(){D(a,"afterSetExtremes",
192
- q(a.eventArgs,a.getExtremes()));delete a.eventArgs});(i||g)&&a.redraw()})}i&&this.drawChartBox();p(c,function(a){a.isDirty&&a.visible&&(!a.isCartesian||a.xAxis)&&a.redraw()});d&&d.reset(!0);l.draw();D(this,"redraw");o&&this.cloneRenderTo(!0);p(n,function(a){a.call()})},get:function(a){var b=this.axes,c=this.series,d,e;for(d=0;d<b.length;d++)if(b[d].options.id===a)return b[d];for(d=0;d<c.length;d++)if(c[d].options.id===a)return c[d];for(d=0;d<c.length;d++){e=c[d].points||[];for(b=0;b<e.length;b++)if(e[b].id===
193
- a)return e[b]}return null},getAxes:function(){var a=this,b=this.options,c=b.xAxis=qa(b.xAxis||{}),b=b.yAxis=qa(b.yAxis||{});p(c,function(a,b){a.index=b;a.isX=!0});p(b,function(a,b){a.index=b});c=c.concat(b);p(c,function(b){new la(a,b)});a.adjustTickAmounts()},getSelectedPoints:function(){var a=[];p(this.series,function(b){a=a.concat(vb(b.points||[],function(a){return a.selected}))});return a},getSelectedSeries:function(){return vb(this.series,function(a){return a.selected})},getStacks:function(){var a=
194
- this;p(a.yAxis,function(a){if(a.stacks&&a.hasVisibleSeries)a.oldStacks=a.stacks});p(a.series,function(b){if(b.options.stacking&&(b.visible===!0||a.options.chart.ignoreHiddenSeries===!1))b.stackKey=b.type+m(b.options.stack,"")})},setTitle:function(a,b,c){var g;var d=this,e=d.options,f;f=e.title=w(e.title,a);g=e.subtitle=w(e.subtitle,b),e=g;p([["title",a,f],["subtitle",b,e]],function(a){var b=a[0],c=d[b],e=a[1],a=a[2];c&&e&&(d[b]=c=c.destroy());a&&a.text&&!c&&(d[b]=d.renderer.text(a.text,0,0,a.useHTML).attr({align:a.align,
195
- "class":"highcharts-"+b,zIndex:a.zIndex||4}).css(a.style).add())});d.layOutTitles(c)},layOutTitles:function(a){var b=0,c=this.title,d=this.subtitle,e=this.options,f=e.title,e=e.subtitle,g=this.spacingBox.width-44;if(c&&(c.css({width:(f.width||g)+"px"}).align(q({y:15},f),!1,"spacingBox"),!f.floating&&!f.verticalAlign))b=c.getBBox().height;d&&(d.css({width:(e.width||g)+"px"}).align(q({y:b+f.margin},e),!1,"spacingBox"),!e.floating&&!e.verticalAlign&&(b=Ka(b+d.getBBox().height)));c=this.titleOffset!==
196
- b;this.titleOffset=b;if(!this.isDirtyBox&&c)this.isDirtyBox=c,this.hasRendered&&m(a,!0)&&this.isDirtyBox&&this.redraw()},getChartSize:function(){var a=this.options.chart,b=a.width,a=a.height,c=this.renderToClone||this.renderTo;if(!r(b))this.containerWidth=jb(c,"width");if(!r(a))this.containerHeight=jb(c,"height");this.chartWidth=v(0,b||this.containerWidth||600);this.chartHeight=v(0,m(a,this.containerHeight>19?this.containerHeight:400))},cloneRenderTo:function(a){var b=this.renderToClone,c=this.container;
197
- a?b&&(this.renderTo.appendChild(c),Pa(b),delete this.renderToClone):(c&&c.parentNode===this.renderTo&&this.renderTo.removeChild(c),this.renderToClone=b=this.renderTo.cloneNode(0),G(b,{position:"absolute",top:"-9999px",display:"block"}),b.style.setProperty&&b.style.setProperty("display","block","important"),y.body.appendChild(b),c&&b.appendChild(c))},getContainer:function(){var a,b=this.options.chart,c,d,e;this.renderTo=a=b.renderTo;e="highcharts-"+tb++;if(Fa(a))this.renderTo=a=y.getElementById(a);
198
- a||ra(13,!0);c=z(H(a,"data-highcharts-chart"));!isNaN(c)&&V[c]&&V[c].hasRendered&&V[c].destroy();H(a,"data-highcharts-chart",this.index);a.innerHTML="";!b.skipClone&&!a.offsetWidth&&this.cloneRenderTo();this.getChartSize();c=this.chartWidth;d=this.chartHeight;this.container=a=Y(Ja,{className:"highcharts-container"+(b.className?" "+b.className:""),id:e},q({position:"relative",overflow:"hidden",width:c+"px",height:d+"px",textAlign:"left",lineHeight:"normal",zIndex:0,"-webkit-tap-highlight-color":"rgba(0,0,0,0)"},
199
- b.style),this.renderToClone||a);this._cursor=a.style.cursor;this.renderer=b.forExport?new ta(a,c,d,b.style,!0):new Za(a,c,d,b.style);fa&&this.renderer.create(this,a,c,d)},getMargins:function(){var a=this.spacing,b,c=this.legend,d=this.margin,e=this.options.legend,f=m(e.margin,20),g=e.x,h=e.y,i=e.align,j=e.verticalAlign,k=this.titleOffset;this.resetMargins();b=this.axisOffset;if(k&&!r(d[0]))this.plotTop=v(this.plotTop,k+this.options.title.margin+a[0]);if(c.display&&!e.floating)if(i==="right"){if(!r(d[1]))this.marginRight=
200
- v(this.marginRight,c.legendWidth-g+f+a[1])}else if(i==="left"){if(!r(d[3]))this.plotLeft=v(this.plotLeft,c.legendWidth+g+f+a[3])}else if(j==="top"){if(!r(d[0]))this.plotTop=v(this.plotTop,c.legendHeight+h+f+a[0])}else if(j==="bottom"&&!r(d[2]))this.marginBottom=v(this.marginBottom,c.legendHeight-h+f+a[2]);this.extraBottomMargin&&(this.marginBottom+=this.extraBottomMargin);this.extraTopMargin&&(this.plotTop+=this.extraTopMargin);this.hasCartesianSeries&&p(this.axes,function(a){a.getOffset()});r(d[3])||
201
- (this.plotLeft+=b[3]);r(d[0])||(this.plotTop+=b[0]);r(d[2])||(this.marginBottom+=b[2]);r(d[1])||(this.marginRight+=b[1]);this.setChartSize()},reflow:function(a){var b=this,c=b.options.chart,d=b.renderTo,e=c.width||jb(d,"width"),f=c.height||jb(d,"height"),c=a?a.target:I,d=function(){if(b.container)b.setSize(e,f,!1),b.hasUserSize=null};if(!b.hasUserSize&&e&&f&&(c===I||c===y)){if(e!==b.containerWidth||f!==b.containerHeight)clearTimeout(b.reflowTimeout),a?b.reflowTimeout=setTimeout(d,100):d();b.containerWidth=
202
- e;b.containerHeight=f}},initReflow:function(){var a=this,b=function(b){a.reflow(b)};K(I,"resize",b);K(a,"destroy",function(){W(I,"resize",b)})},setSize:function(a,b,c){var d=this,e,f,g;d.isResizing+=1;g=function(){d&&D(d,"endResize",null,function(){d.isResizing-=1})};Qa(c,d);d.oldChartHeight=d.chartHeight;d.oldChartWidth=d.chartWidth;if(r(a))d.chartWidth=e=v(0,u(a)),d.hasUserSize=!!e;if(r(b))d.chartHeight=f=v(0,u(b));(va?kb:G)(d.container,{width:e+"px",height:f+"px"},va);d.setChartSize(!0);d.renderer.setSize(e,
203
- f,c);d.maxTicks=null;p(d.axes,function(a){a.isDirty=!0;a.setScale()});p(d.series,function(a){a.isDirty=!0});d.isDirtyLegend=!0;d.isDirtyBox=!0;d.layOutTitles();d.getMargins();d.redraw(c);d.oldChartHeight=null;D(d,"resize");va===!1?g():setTimeout(g,va&&va.duration||500)},setChartSize:function(a){var b=this.inverted,c=this.renderer,d=this.chartWidth,e=this.chartHeight,f=this.options.chart,g=this.spacing,h=this.clipOffset,i,j,k,l;this.plotLeft=i=u(this.plotLeft);this.plotTop=j=u(this.plotTop);this.plotWidth=
204
- k=v(0,u(d-i-this.marginRight));this.plotHeight=l=v(0,u(e-j-this.marginBottom));this.plotSizeX=b?l:k;this.plotSizeY=b?k:l;this.plotBorderWidth=f.plotBorderWidth||0;this.spacingBox=c.spacingBox={x:g[3],y:g[0],width:d-g[3]-g[1],height:e-g[0]-g[2]};this.plotBox=c.plotBox={x:i,y:j,width:k,height:l};d=2*T(this.plotBorderWidth/2);b=Ka(v(d,h[3])/2);c=Ka(v(d,h[0])/2);this.clipBox={x:b,y:c,width:T(this.plotSizeX-v(d,h[1])/2-b),height:T(this.plotSizeY-v(d,h[2])/2-c)};a||p(this.axes,function(a){a.setAxisSize();
205
- a.setAxisTranslation()})},resetMargins:function(){var a=this.spacing,b=this.margin;this.plotTop=m(b[0],a[0]);this.marginRight=m(b[1],a[1]);this.marginBottom=m(b[2],a[2]);this.plotLeft=m(b[3],a[3]);this.axisOffset=[0,0,0,0];this.clipOffset=[0,0,0,0]},drawChartBox:function(){var a=this.options.chart,b=this.renderer,c=this.chartWidth,d=this.chartHeight,e=this.chartBackground,f=this.plotBackground,g=this.plotBorder,h=this.plotBGImage,i=a.borderWidth||0,j=a.backgroundColor,k=a.plotBackgroundColor,l=a.plotBackgroundImage,
206
- o=a.plotBorderWidth||0,n,s=this.plotLeft,m=this.plotTop,p=this.plotWidth,q=this.plotHeight,r=this.plotBox,v=this.clipRect,u=this.clipBox;n=i+(a.shadow?8:0);if(i||j)if(e)e.animate(e.crisp({width:c-n,height:d-n}));else{e={fill:j||Q};if(i)e.stroke=a.borderColor,e["stroke-width"]=i;this.chartBackground=b.rect(n/2,n/2,c-n,d-n,a.borderRadius,i).attr(e).addClass("highcharts-background").add().shadow(a.shadow)}if(k)f?f.animate(r):this.plotBackground=b.rect(s,m,p,q,0).attr({fill:k}).add().shadow(a.plotShadow);
207
- if(l)h?h.animate(r):this.plotBGImage=b.image(l,s,m,p,q).add();v?v.animate({width:u.width,height:u.height}):this.clipRect=b.clipRect(u);if(o)g?g.animate(g.crisp({x:s,y:m,width:p,height:q})):this.plotBorder=b.rect(s,m,p,q,0,-o).attr({stroke:a.plotBorderColor,"stroke-width":o,fill:Q,zIndex:1}).add();this.isDirtyBox=!1},propFromSeries:function(){var a=this,b=a.options.chart,c,d=a.options.series,e,f;p(["inverted","angular","polar"],function(g){c=F[b.type||b.defaultSeriesType];f=a[g]||b[g]||c&&c.prototype[g];
208
- for(e=d&&d.length;!f&&e--;)(c=F[d[e].type])&&c.prototype[g]&&(f=!0);a[g]=f})},linkSeries:function(){var a=this,b=a.series;p(b,function(a){a.linkedSeries.length=0});p(b,function(b){var d=b.options.linkedTo;if(Fa(d)&&(d=d===":previous"?a.series[b.index-1]:a.get(d)))d.linkedSeries.push(b),b.linkedParent=d})},renderSeries:function(){p(this.series,function(a){a.translate();a.setTooltipPoints&&a.setTooltipPoints();a.render()})},render:function(){var a=this,b=a.axes,c=a.renderer,d=a.options,e=d.labels,f=
209
- d.credits,g;a.setTitle();a.legend=new lb(a,d.legend);a.getStacks();p(b,function(a){a.setScale()});a.getMargins();a.maxTicks=null;p(b,function(a){a.setTickPositions(!0);a.setMaxTicks()});a.adjustTickAmounts();a.getMargins();a.drawChartBox();a.hasCartesianSeries&&p(b,function(a){a.render()});if(!a.seriesGroup)a.seriesGroup=c.g("series-group").attr({zIndex:3}).add();a.renderSeries();e.items&&p(e.items,function(b){var d=q(e.style,b.style),f=z(d.left)+a.plotLeft,g=z(d.top)+a.plotTop+12;delete d.left;delete d.top;
210
- c.text(b.html,f,g).attr({zIndex:2}).css(d).add()});if(f.enabled&&!a.credits)g=f.href,a.credits=c.text(f.text,0,0).on("click",function(){if(g)location.href=g}).attr({align:f.position.align,zIndex:8}).css(f.style).add().align(f.position);a.hasRendered=!0},destroy:function(){var a=this,b=a.axes,c=a.series,d=a.container,e,f=d&&d.parentNode;D(a,"destroy");V[a.index]=t;ab--;a.renderTo.removeAttribute("data-highcharts-chart");W(a);for(e=b.length;e--;)b[e]=b[e].destroy();for(e=c.length;e--;)c[e]=c[e].destroy();
211
- p("title,subtitle,chartBackground,plotBackground,plotBGImage,plotBorder,seriesGroup,clipRect,credits,pointer,scroller,rangeSelector,legend,resetZoomButton,tooltip,renderer".split(","),function(b){var c=a[b];c&&c.destroy&&(a[b]=c.destroy())});if(d)d.innerHTML="",W(d),f&&Pa(d);for(e in a)delete a[e]},isReadyToRender:function(){var a=this;return!aa&&I==I.top&&y.readyState!=="complete"||fa&&!I.canvg?(fa?Lb.push(function(){a.firstRender()},a.options.global.canvasToolsURL):y.attachEvent("onreadystatechange",
212
- function(){y.detachEvent("onreadystatechange",a.firstRender);y.readyState==="complete"&&a.firstRender()}),!1):!0},firstRender:function(){var a=this,b=a.options,c=a.callback;if(a.isReadyToRender()){a.getContainer();D(a,"init");a.resetMargins();a.setChartSize();a.propFromSeries();a.getAxes();p(b.series||[],function(b){a.initSeries(b)});a.linkSeries();D(a,"beforeRender");if(R.Pointer)a.pointer=new Wa(a,b);a.render();a.renderer.draw();c&&c.apply(a,[a]);p(a.callbacks,function(b){b.apply(a,[a])});a.cloneRenderTo(!0);
213
- D(a,"load")}},splashArray:function(a,b){var c=b[a],c=ca(c)?c:[c,c,c,c];return[m(b[a+"Top"],c[0]),m(b[a+"Right"],c[1]),m(b[a+"Bottom"],c[2]),m(b[a+"Left"],c[3])]}};Ya.prototype.callbacks=[];X=R.CenteredSeriesMixin={getCenter:function(){var a=this.options,b=this.chart,c=2*(a.slicedOffset||0),d,e=b.plotWidth-2*c,f=b.plotHeight-2*c,b=a.center,a=[m(b[0],"50%"),m(b[1],"50%"),a.size||"100%",a.innerSize||0],g=C(e,f),h;return Ua(a,function(a,b){h=/%$/.test(a);d=b<2||b===2&&h;return(h?[e,f,g,g][b]*z(a)/100:
214
- a)+(d?c:0)})}};var Ea=function(){};Ea.prototype={init:function(a,b,c){this.series=a;this.applyOptions(b,c);this.pointAttr={};if(a.options.colorByPoint&&(b=a.options.colors||a.chart.options.colors,this.color=this.color||b[a.colorCounter++],a.colorCounter===b.length))a.colorCounter=0;a.chart.pointCount++;return this},applyOptions:function(a,b){var c=this.series,d=c.pointValKey,a=Ea.prototype.optionsToObject.call(this,a);q(this,a);this.options=this.options?q(this.options,a):a;if(d)this.y=this[d];if(this.x===
215
- t&&c)this.x=b===t?c.autoIncrement():b;return this},optionsToObject:function(a){var b={},c=this.series,d=c.pointArrayMap||["y"],e=d.length,f=0,g=0;if(typeof a==="number"||a===null)b[d[0]]=a;else if(La(a)){if(a.length>e){c=typeof a[0];if(c==="string")b.name=a[0];else if(c==="number")b.x=a[0];f++}for(;g<e;)b[d[g++]]=a[f++]}else if(typeof a==="object"){b=a;if(a.dataLabels)c._hasPointLabels=!0;if(a.marker)c._hasPointMarkers=!0}return b},destroy:function(){var a=this.series.chart,b=a.hoverPoints,c;a.pointCount--;
216
- if(b&&(this.setState(),ja(b,this),!b.length))a.hoverPoints=null;if(this===a.hoverPoint)this.onMouseOut();if(this.graphic||this.dataLabel)W(this),this.destroyElements();this.legendItem&&a.legend.destroyItem(this);for(c in this)this[c]=null},destroyElements:function(){for(var a="graphic,dataLabel,dataLabelUpper,group,connector,shadowGroup".split(","),b,c=6;c--;)b=a[c],this[b]&&(this[b]=this[b].destroy())},getLabelConfig:function(){return{x:this.category,y:this.y,key:this.name||this.category,series:this.series,
217
- point:this,percentage:this.percentage,total:this.total||this.stackTotal}},tooltipFormatter:function(a){var b=this.series,c=b.tooltipOptions,d=m(c.valueDecimals,""),e=c.valuePrefix||"",f=c.valueSuffix||"";p(b.pointArrayMap||["y"],function(b){b="{point."+b;if(e||f)a=a.replace(b+"}",e+b+"}"+f);a=a.replace(b+"}",b+":,."+d+"f}")});return Ia(a,{point:this,series:this.series})},firePointEvent:function(a,b,c){var d=this,e=this.series.options;(e.point.events[a]||d.options&&d.options.events&&d.options.events[a])&&
218
- this.importEvents();a==="click"&&e.allowPointSelect&&(c=function(a){d.select(null,a.ctrlKey||a.metaKey||a.shiftKey)});D(this,a,b,c)}};var O=function(){};O.prototype={isCartesian:!0,type:"line",pointClass:Ea,sorted:!0,requireSorting:!0,pointAttrToOptions:{stroke:"lineColor","stroke-width":"lineWidth",fill:"fillColor",r:"radius"},axisTypes:["xAxis","yAxis"],colorCounter:0,parallelArrays:["x","y"],init:function(a,b){var c=this,d,e,f=a.series,g=function(a,b){return m(a.options.index,a._i)-m(b.options.index,
219
- b._i)};c.chart=a;c.options=b=c.setOptions(b);c.linkedSeries=[];c.bindAxes();q(c,{name:b.name,state:"",pointAttr:{},visible:b.visible!==!1,selected:b.selected===!0});if(fa)b.animation=!1;e=b.events;for(d in e)K(c,d,e[d]);if(e&&e.click||b.point&&b.point.events&&b.point.events.click||b.allowPointSelect)a.runTrackerClick=!0;c.getColor();c.getSymbol();p(c.parallelArrays,function(a){c[a+"Data"]=[]});c.setData(b.data,!1);if(c.isCartesian)a.hasCartesianSeries=!0;f.push(c);c._i=f.length-1;ob(f,g);this.yAxis&&
220
- ob(this.yAxis.series,g);p(f,function(a,b){a.index=b;a.name=a.name||"Series "+(b+1)})},bindAxes:function(){var a=this,b=a.options,c=a.chart,d;p(a.axisTypes||[],function(e){p(c[e],function(c){d=c.options;if(b[e]===d.index||b[e]!==t&&b[e]===d.id||b[e]===t&&d.index===0)c.series.push(a),a[e]=c,c.isDirty=!0});!a[e]&&a.optionalAxis!==e&&ra(18,!0)})},updateParallelArrays:function(a,b){var c=a.series,d=arguments;p(c.parallelArrays,typeof b==="number"?function(d){var f=d==="y"&&c.toYData?c.toYData(a):a[d];
221
- c[d+"Data"][b]=f}:function(a){Array.prototype[b].apply(c[a+"Data"],Array.prototype.slice.call(d,2))})},autoIncrement:function(){var a=this.options,b=this.xIncrement,b=m(b,a.pointStart,0);this.pointInterval=m(this.pointInterval,a.pointInterval,1);this.xIncrement=b+this.pointInterval;return b},getSegments:function(){var a=-1,b=[],c,d=this.points,e=d.length;if(e)if(this.options.connectNulls){for(c=e;c--;)d[c].y===null&&d.splice(c,1);d.length&&(b=[d])}else p(d,function(c,g){c.y===null?(g>a+1&&b.push(d.slice(a+
222
- 1,g)),a=g):g===e-1&&b.push(d.slice(a+1,g+1))});this.segments=b},setOptions:function(a){var b=this.chart,c=b.options.plotOptions,b=b.userOptions||{},d=b.plotOptions||{},e=c[this.type];this.userOptions=a;c=w(e,c.series,a);this.tooltipOptions=w(E.tooltip,E.plotOptions[this.type].tooltip,b.tooltip,d.series&&d.series.tooltip,d[this.type]&&d[this.type].tooltip,a.tooltip);e.marker===null&&delete c.marker;return c},getColor:function(){var a=this.options,b=this.userOptions,c=this.chart.options.colors,d=this.chart.counters,
223
- e;e=a.color||ba[this.type].color;if(!e&&!a.colorByPoint)r(b._colorIndex)?a=b._colorIndex:(b._colorIndex=d.color,a=d.color++),e=c[a];this.color=e;d.wrapColor(c.length)},getSymbol:function(){var a=this.userOptions,b=this.options.marker,c=this.chart,d=c.options.symbols,c=c.counters;this.symbol=b.symbol;if(!this.symbol)r(a._symbolIndex)?a=a._symbolIndex:(a._symbolIndex=c.symbol,a=c.symbol++),this.symbol=d[a];if(/^url/.test(this.symbol))b.radius=0;c.wrapSymbol(d.length)},drawLegendSymbol:N.drawLineMarker,
224
- setData:function(a,b,c,d){var e=this,f=e.points,g=f&&f.length||0,h,i=e.options,j=e.chart,k=null,l=e.xAxis,o=l&&!!l.categories,n=e.tooltipPoints,s=i.turboThreshold,q=this.xData,r=this.yData,v=(h=e.pointArrayMap)&&h.length,a=a||[];h=a.length;b=m(b,!0);if(d!==!1&&h&&g===h&&!e.cropped&&!e.hasGroupedData)p(a,function(a,b){f[b].update(a,!1)});else{e.xIncrement=null;e.pointRange=o?1:i.pointRange;e.colorCounter=0;p(this.parallelArrays,function(a){e[a+"Data"].length=0});if(s&&h>s){for(c=0;k===null&&c<h;)k=
225
- a[c],c++;if(ha(k)){o=m(i.pointStart,0);i=m(i.pointInterval,1);for(c=0;c<h;c++)q[c]=o,r[c]=a[c],o+=i;e.xIncrement=o}else if(La(k))if(v)for(c=0;c<h;c++)i=a[c],q[c]=i[0],r[c]=i.slice(1,v+1);else for(c=0;c<h;c++)i=a[c],q[c]=i[0],r[c]=i[1];else ra(12)}else for(c=0;c<h;c++)if(a[c]!==t&&(i={series:e},e.pointClass.prototype.applyOptions.apply(i,[a[c]]),e.updateParallelArrays(i,c),o&&i.name))l.names[i.x]=i.name;Fa(r[0])&&ra(14,!0);e.data=[];e.options.data=a;for(c=g;c--;)f[c]&&f[c].destroy&&f[c].destroy();
226
- if(n)n.length=0;if(l)l.minRange=l.userMinRange;e.isDirty=e.isDirtyData=j.isDirtyBox=!0;c=!1}b&&j.redraw(c)},processData:function(a){var b=this.xData,c=this.yData,d=b.length,e;e=0;var f,g,h=this.xAxis,i=this.options,j=i.cropThreshold,k=0,l=this.isCartesian,o,n;if(l&&!this.isDirty&&!h.isDirty&&!this.yAxis.isDirty&&!a)return!1;if(l&&this.sorted&&(!j||d>j||this.forceCrop))if(o=h.min,n=h.max,b[d-1]<o||b[0]>n)b=[],c=[];else if(b[0]<o||b[d-1]>n)e=this.cropData(this.xData,this.yData,o,n),b=e.xData,c=e.yData,
227
- e=e.start,f=!0,k=b.length;for(d=b.length-1;d>=0;d--)a=b[d]-b[d-1],!f&&b[d]>o&&b[d]<n&&k++,a>0&&(g===t||a<g)?g=a:a<0&&this.requireSorting&&ra(15);this.cropped=f;this.cropStart=e;this.processedXData=b;this.processedYData=c;this.activePointCount=k;if(i.pointRange===null)this.pointRange=g||1;this.closestPointRange=g},cropData:function(a,b,c,d){var e=a.length,f=0,g=e,h=m(this.cropShoulder,1),i;for(i=0;i<e;i++)if(a[i]>=c){f=v(0,i-h);break}for(;i<e;i++)if(a[i]>d){g=i+h;break}return{xData:a.slice(f,g),yData:b.slice(f,
228
- g),start:f,end:g}},generatePoints:function(){var a=this.options.data,b=this.data,c,d=this.processedXData,e=this.processedYData,f=this.pointClass,g=d.length,h=this.cropStart||0,i,j=this.hasGroupedData,k,l=[],o;if(!b&&!j)b=[],b.length=a.length,b=this.data=b;for(o=0;o<g;o++)i=h+o,j?l[o]=(new f).init(this,[d[o]].concat(qa(e[o]))):(b[i]?k=b[i]:a[i]!==t&&(b[i]=k=(new f).init(this,a[i],d[o])),l[o]=k);if(b&&(g!==(c=b.length)||j))for(o=0;o<c;o++)if(o===h&&!j&&(o+=g),b[o])b[o].destroyElements(),b[o].plotX=
229
- t;this.data=b;this.points=l},getExtremes:function(a){var b=this.yAxis,c=this.processedXData,d,e=[],f=0;d=this.xAxis.getExtremes();var g=d.min,h=d.max,i,j,k,l,a=a||this.stackedYData||this.processedYData;d=a.length;for(l=0;l<d;l++)if(j=c[l],k=a[l],i=k!==null&&k!==t&&(!b.isLog||k.length||k>0),j=this.getExtremesFromAll||this.cropped||(c[l+1]||j)>=g&&(c[l-1]||j)<=h,i&&j)if(i=k.length)for(;i--;)k[i]!==null&&(e[f++]=k[i]);else e[f++]=k;this.dataMin=m(void 0,Na(e));this.dataMax=m(void 0,Ba(e))},translate:function(){this.processedXData||
230
- this.processData();this.generatePoints();for(var a=this.options,b=a.stacking,c=this.xAxis,d=c.categories,e=this.yAxis,f=this.points,g=f.length,h=!!this.modifyValue,i=a.pointPlacement,j=i==="between"||ha(i),k=a.threshold,a=0;a<g;a++){var l=f[a],o=l.x,n=l.y,s=l.low,p=b&&e.stacks[(this.negStacks&&n<k?"-":"")+this.stackKey];if(e.isLog&&n<=0)l.y=n=null;l.plotX=c.translate(o,0,0,0,1,i,this.type==="flags");if(b&&this.visible&&p&&p[o])p=p[o],n=p.points[this.index+","+a],s=n[0],n=n[1],s===0&&(s=m(k,e.min)),
231
- e.isLog&&s<=0&&(s=null),l.total=l.stackTotal=p.total,l.percentage=p.total&&l.y/p.total*100,l.stackY=n,p.setOffset(this.pointXOffset||0,this.barW||0);l.yBottom=r(s)?e.translate(s,0,1,0,1):null;h&&(n=this.modifyValue(n,l));l.plotY=typeof n==="number"&&n!==Infinity?e.translate(n,0,1,0,1):t;l.clientX=j?c.translate(o,0,0,0,1):l.plotX;l.negative=l.y<(k||0);l.category=d&&d[l.x]!==t?d[l.x]:l.x}this.getSegments()},animate:function(a){var b=this.chart,c=b.renderer,d;d=this.options.animation;var e=this.clipBox||
232
- b.clipBox,f=b.inverted,g;if(d&&!ca(d))d=ba[this.type].animation;g=["_sharedClip",d.duration,d.easing,e.height].join(",");a?(a=b[g],d=b[g+"m"],a||(b[g]=a=c.clipRect(q(e,{width:0})),b[g+"m"]=d=c.clipRect(-99,f?-b.plotLeft:-b.plotTop,99,f?b.chartWidth:b.chartHeight)),this.group.clip(a),this.markerGroup.clip(d),this.sharedClipKey=g):((a=b[g])&&a.animate({width:b.plotSizeX},d),b[g+"m"]&&b[g+"m"].animate({width:b.plotSizeX+99},d),this.animate=null)},afterAnimate:function(){var a=this.chart,b=this.sharedClipKey,
233
- c=this.group,d=this.clipBox;if(c&&this.options.clip!==!1){if(!b||!d)c.clip(d?a.renderer.clipRect(d):a.clipRect);this.markerGroup.clip()}D(this,"afterAnimate");setTimeout(function(){b&&a[b]&&(d||(a[b]=a[b].destroy()),a[b+"m"]&&(a[b+"m"]=a[b+"m"].destroy()))},100)},drawPoints:function(){var a,b=this.points,c=this.chart,d,e,f,g,h,i,j,k;d=this.options.marker;var l=this.pointAttr[""],o,n=this.markerGroup,s=m(d.enabled,this.activePointCount<0.5*this.xAxis.len/d.radius);if(d.enabled!==!1||this._hasPointMarkers)for(f=
234
- b.length;f--;)if(g=b[f],d=T(g.plotX),e=g.plotY,k=g.graphic,i=g.marker||{},a=s&&i.enabled===t||i.enabled,o=c.isInsidePlot(u(d),e,c.inverted),a&&e!==t&&!isNaN(e)&&g.y!==null)if(a=g.pointAttr[g.selected?"select":""]||l,h=a.r,i=m(i.symbol,this.symbol),j=i.indexOf("url")===0,k)k[o?"show":"hide"](!0).animate(q({x:d-h,y:e-h},k.symbolName?{width:2*h,height:2*h}:{}));else{if(o&&(h>0||j))g.graphic=c.renderer.symbol(i,d-h,e-h,2*h,2*h).attr(a).add(n)}else if(k)g.graphic=k.destroy()},convertAttribs:function(a,
235
- b,c,d){var e=this.pointAttrToOptions,f,g,h={},a=a||{},b=b||{},c=c||{},d=d||{};for(f in e)g=e[f],h[f]=m(a[g],b[f],c[f],d[f]);return h},getAttribs:function(){var a=this,b=a.options,c=ba[a.type].marker?b.marker:b,d=c.states,e=d.hover,f,g=a.color;f={stroke:g,fill:g};var h=a.points||[],i,j=[],k,l=a.pointAttrToOptions;k=a.hasPointSpecificOptions;var o=b.negativeColor,n=c.lineColor,s=c.fillColor;i=b.turboThreshold;var m;b.marker?(e.radius=e.radius||c.radius+2,e.lineWidth=e.lineWidth||c.lineWidth+1):e.color=
236
- e.color||ya(e.color||g).brighten(e.brightness).get();j[""]=a.convertAttribs(c,f);p(["hover","select"],function(b){j[b]=a.convertAttribs(d[b],j[""])});a.pointAttr=j;g=h.length;if(!i||g<i||k)for(;g--;){i=h[g];if((c=i.options&&i.options.marker||i.options)&&c.enabled===!1)c.radius=0;if(i.negative&&o)i.color=i.fillColor=o;k=b.colorByPoint||i.color;if(i.options)for(m in l)r(c[l[m]])&&(k=!0);if(k){c=c||{};k=[];d=c.states||{};f=d.hover=d.hover||{};if(!b.marker)f.color=f.color||!i.options.color&&e.color||
237
- ya(i.color).brighten(f.brightness||e.brightness).get();f={color:i.color};if(!s)f.fillColor=i.color;if(!n)f.lineColor=i.color;k[""]=a.convertAttribs(q(f,c),j[""]);k.hover=a.convertAttribs(d.hover,j.hover,k[""]);k.select=a.convertAttribs(d.select,j.select,k[""])}else k=j;i.pointAttr=k}},destroy:function(){var a=this,b=a.chart,c=/AppleWebKit\/533/.test(wa),d,e,f=a.data||[],g,h,i;D(a,"destroy");W(a);p(a.axisTypes||[],function(b){if(i=a[b])ja(i.series,a),i.isDirty=i.forceRedraw=!0});a.legendItem&&a.chart.legend.destroyItem(a);
238
- for(e=f.length;e--;)(g=f[e])&&g.destroy&&g.destroy();a.points=null;clearTimeout(a.animationTimeout);p("area,graph,dataLabelsGroup,group,markerGroup,tracker,graphNeg,areaNeg,posClip,negClip".split(","),function(b){a[b]&&(d=c&&b==="group"?"hide":"destroy",a[b][d]())});if(b.hoverSeries===a)b.hoverSeries=null;ja(b.series,a);for(h in a)delete a[h]},getSegmentPath:function(a){var b=this,c=[],d=b.options.step;p(a,function(e,f){var g=e.plotX,h=e.plotY,i;b.getPointSpline?c.push.apply(c,b.getPointSpline(a,
239
- e,f)):(c.push(f?"L":"M"),d&&f&&(i=a[f-1],d==="right"?c.push(i.plotX,h):d==="center"?c.push((i.plotX+g)/2,i.plotY,(i.plotX+g)/2,h):c.push(g,i.plotY)),c.push(e.plotX,e.plotY))});return c},getGraphPath:function(){var a=this,b=[],c,d=[];p(a.segments,function(e){c=a.getSegmentPath(e);e.length>1?b=b.concat(c):d.push(e[0])});a.singlePoints=d;return a.graphPath=b},drawGraph:function(){var a=this,b=this.options,c=[["graph",b.lineColor||this.color]],d=b.lineWidth,e=b.dashStyle,f=b.linecap!=="square",g=this.getGraphPath(),
240
- h=b.negativeColor;h&&c.push(["graphNeg",h]);p(c,function(c,h){var k=c[0],l=a[k];if(l)bb(l),l.animate({d:g});else if(d&&g.length)l={stroke:c[1],"stroke-width":d,fill:Q,zIndex:1},e?l.dashstyle=e:f&&(l["stroke-linecap"]=l["stroke-linejoin"]="round"),a[k]=a.chart.renderer.path(g).attr(l).add(a.group).shadow(!h&&b.shadow)})},clipNeg:function(){var a=this.options,b=this.chart,c=b.renderer,d=a.negativeColor||a.negativeFillColor,e,f=this.graph,g=this.area,h=this.posClip,i=this.negClip;e=b.chartWidth;var j=
241
- b.chartHeight,k=v(e,j),l=this.yAxis;if(d&&(f||g)){d=u(l.toPixels(a.threshold||0,!0));d<0&&(k-=d);a={x:0,y:0,width:k,height:d};k={x:0,y:d,width:k,height:k};if(b.inverted)a.height=k.y=b.plotWidth-d,c.isVML&&(a={x:b.plotWidth-d-b.plotLeft,y:0,width:e,height:j},k={x:d+b.plotLeft-e,y:0,width:b.plotLeft+d,height:e});l.reversed?(b=k,e=a):(b=a,e=k);h?(h.animate(b),i.animate(e)):(this.posClip=h=c.clipRect(b),this.negClip=i=c.clipRect(e),f&&this.graphNeg&&(f.clip(h),this.graphNeg.clip(i)),g&&(g.clip(h),this.areaNeg.clip(i)))}},
242
- invertGroups:function(){function a(){var a={width:b.yAxis.len,height:b.xAxis.len};p(["group","markerGroup"],function(c){b[c]&&b[c].attr(a).invert()})}var b=this,c=b.chart;if(b.xAxis)K(c,"resize",a),K(b,"destroy",function(){W(c,"resize",a)}),a(),b.invertGroups=a},plotGroup:function(a,b,c,d,e){var f=this[a],g=!f;g&&(this[a]=f=this.chart.renderer.g(b).attr({visibility:c,zIndex:d||0.1}).add(e));f[g?"attr":"animate"](this.getPlotBox());return f},getPlotBox:function(){var a=this.chart,b=this.xAxis,c=this.yAxis;
243
- if(a.inverted)b=c,c=this.xAxis;return{translateX:b?b.left:a.plotLeft,translateY:c?c.top:a.plotTop,scaleX:1,scaleY:1}},render:function(){var a=this,b=a.chart,c,d=a.options,e=(c=d.animation)&&!!a.animate&&b.renderer.isSVG&&m(c.duration,500)||0,f=a.visible?"visible":"hidden",g=d.zIndex,h=a.hasRendered,i=b.seriesGroup;c=a.plotGroup("group","series",f,g,i);a.markerGroup=a.plotGroup("markerGroup","markers",f,g,i);e&&a.animate(!0);a.getAttribs();c.inverted=a.isCartesian?b.inverted:!1;a.drawGraph&&(a.drawGraph(),
244
- a.clipNeg());a.drawDataLabels&&a.drawDataLabels();a.visible&&a.drawPoints();a.drawTracker&&a.options.enableMouseTracking!==!1&&a.drawTracker();b.inverted&&a.invertGroups();d.clip!==!1&&!a.sharedClipKey&&!h&&c.clip(b.clipRect);e&&a.animate();if(!h)e?a.animationTimeout=setTimeout(function(){a.afterAnimate()},e):a.afterAnimate();a.isDirty=a.isDirtyData=!1;a.hasRendered=!0},redraw:function(){var a=this.chart,b=this.isDirtyData,c=this.group,d=this.xAxis,e=this.yAxis;c&&(a.inverted&&c.attr({width:a.plotWidth,
245
- height:a.plotHeight}),c.animate({translateX:m(d&&d.left,a.plotLeft),translateY:m(e&&e.top,a.plotTop)}));this.translate();this.setTooltipPoints&&this.setTooltipPoints(!0);this.render();b&&D(this,"updatedData")}};Hb.prototype={destroy:function(){Oa(this,this.axis)},render:function(a){var b=this.options,c=b.format,c=c?Ia(c,this):b.formatter.call(this);this.label?this.label.attr({text:c,visibility:"hidden"}):this.label=this.axis.chart.renderer.text(c,null,null,b.useHTML).css(b.style).attr({align:this.textAlign,
246
- rotation:b.rotation,visibility:"hidden"}).add(a)},setOffset:function(a,b){var c=this.axis,d=c.chart,e=d.inverted,f=this.isNegative,g=c.translate(c.usePercentage?100:this.total,0,0,0,1),c=c.translate(0),c=M(g-c),h=d.xAxis[0].translate(this.x)+a,i=d.plotHeight,f={x:e?f?g:g-c:h,y:e?i-h-b:f?i-g-c:i-g,width:e?c:b,height:e?b:c};if(e=this.label)e.align(this.alignOptions,null,f),f=e.alignAttr,e[this.options.crop===!1||d.isInsidePlot(f.x,f.y)?"show":"hide"](!0)}};la.prototype.buildStacks=function(){var a=
247
- this.series,b=m(this.options.reversedStacks,!0),c=a.length;if(!this.isXAxis){for(this.usePercentage=!1;c--;)a[b?c:a.length-c-1].setStackedPoints();if(this.usePercentage)for(c=0;c<a.length;c++)a[c].setPercentStacks()}};la.prototype.renderStackTotals=function(){var a=this.chart,b=a.renderer,c=this.stacks,d,e,f=this.stackTotalGroup;if(!f)this.stackTotalGroup=f=b.g("stack-labels").attr({visibility:"visible",zIndex:6}).add();f.translate(a.plotLeft,a.plotTop);for(d in c)for(e in a=c[d],a)a[e].render(f)};
248
- O.prototype.setStackedPoints=function(){if(this.options.stacking&&!(this.visible!==!0&&this.chart.options.chart.ignoreHiddenSeries!==!1)){var a=this.processedXData,b=this.processedYData,c=[],d=b.length,e=this.options,f=e.threshold,g=e.stack,e=e.stacking,h=this.stackKey,i="-"+h,j=this.negStacks,k=this.yAxis,l=k.stacks,o=k.oldStacks,n,m,p,q,r,u;for(q=0;q<d;q++){r=a[q];u=b[q];p=this.index+","+q;m=(n=j&&u<f)?i:h;l[m]||(l[m]={});if(!l[m][r])o[m]&&o[m][r]?(l[m][r]=o[m][r],l[m][r].total=null):l[m][r]=new Hb(k,
249
- k.options.stackLabels,n,r,g);m=l[m][r];m.points[p]=[m.cum||0];e==="percent"?(n=n?h:i,j&&l[n]&&l[n][r]?(n=l[n][r],m.total=n.total=v(n.total,m.total)+M(u)||0):m.total=da(m.total+(M(u)||0))):m.total=da(m.total+(u||0));m.cum=(m.cum||0)+(u||0);m.points[p].push(m.cum);c[q]=m.cum}if(e==="percent")k.usePercentage=!0;this.stackedYData=c;k.oldStacks={}}};O.prototype.setPercentStacks=function(){var a=this,b=a.stackKey,c=a.yAxis.stacks,d=a.processedXData;p([b,"-"+b],function(b){var e;for(var f=d.length,g,h;f--;)if(g=
250
- d[f],e=(h=c[b]&&c[b][g])&&h.points[a.index+","+f],g=e)h=h.total?100/h.total:0,g[0]=da(g[0]*h),g[1]=da(g[1]*h),a.stackedYData[f]=g[1]})};q(Ya.prototype,{addSeries:function(a,b,c){var d,e=this;a&&(b=m(b,!0),D(e,"addSeries",{options:a},function(){d=e.initSeries(a);e.isDirtyLegend=!0;e.linkSeries();b&&e.redraw(c)}));return d},addAxis:function(a,b,c,d){var e=b?"xAxis":"yAxis",f=this.options;new la(this,w(a,{index:this[e].length,isX:b}));f[e]=qa(f[e]||{});f[e].push(a);m(c,!0)&&this.redraw(d)},showLoading:function(a){var b=
251
- this.options,c=this.loadingDiv,d=b.loading;if(!c)this.loadingDiv=c=Y(Ja,{className:"highcharts-loading"},q(d.style,{zIndex:10,display:Q}),this.container),this.loadingSpan=Y("span",null,d.labelStyle,c);this.loadingSpan.innerHTML=a||b.lang.loading;if(!this.loadingShown)G(c,{opacity:0,display:"",left:this.plotLeft+"px",top:this.plotTop+"px",width:this.plotWidth+"px",height:this.plotHeight+"px"}),kb(c,{opacity:d.style.opacity},{duration:d.showDuration||0}),this.loadingShown=!0},hideLoading:function(){var a=
252
- this.options,b=this.loadingDiv;b&&kb(b,{opacity:0},{duration:a.loading.hideDuration||100,complete:function(){G(b,{display:Q})}});this.loadingShown=!1}});q(Ea.prototype,{update:function(a,b,c){var d=this,e=d.series,f=d.graphic,g,h=e.data,i=e.chart,j=e.options,b=m(b,!0);d.firePointEvent("update",{options:a},function(){d.applyOptions(a);if(ca(a)){e.getAttribs();if(f)a&&a.marker&&a.marker.symbol?d.graphic=f.destroy():f.attr(d.pointAttr[d.state||""]);if(a&&a.dataLabels&&d.dataLabel)d.dataLabel=d.dataLabel.destroy()}g=
253
- Da(d,h);e.updateParallelArrays(d,g);j.data[g]=d.options;e.isDirty=e.isDirtyData=!0;if(!e.fixedBox&&e.hasCartesianSeries)i.isDirtyBox=!0;j.legendType==="point"&&i.legend.destroyItem(d);b&&i.redraw(c)})},remove:function(a,b){var c=this,d=c.series,e=d.points,f=d.chart,g,h=d.data;Qa(b,f);a=m(a,!0);c.firePointEvent("remove",null,function(){g=Da(c,h);h.length===e.length&&e.splice(g,1);h.splice(g,1);d.options.data.splice(g,1);d.updateParallelArrays(c,"splice",g,1);c.destroy();d.isDirty=!0;d.isDirtyData=
254
- !0;a&&f.redraw()})}});q(O.prototype,{addPoint:function(a,b,c,d){var e=this.options,f=this.data,g=this.graph,h=this.area,i=this.chart,j=this.xAxis&&this.xAxis.names,k=g&&g.shift||0,l=e.data,o,n=this.xData;Qa(d,i);c&&p([g,h,this.graphNeg,this.areaNeg],function(a){if(a)a.shift=k+1});if(h)h.isArea=!0;b=m(b,!0);d={series:this};this.pointClass.prototype.applyOptions.apply(d,[a]);g=d.x;h=n.length;if(this.requireSorting&&g<n[h-1])for(o=!0;h&&n[h-1]>g;)h--;this.updateParallelArrays(d,"splice",h,0,0);this.updateParallelArrays(d,
255
- h);if(j)j[g]=d.name;l.splice(h,0,a);o&&(this.data.splice(h,0,null),this.processData());e.legendType==="point"&&this.generatePoints();c&&(f[0]&&f[0].remove?f[0].remove(!1):(f.shift(),this.updateParallelArrays(d,"shift"),l.shift()));this.isDirtyData=this.isDirty=!0;b&&(this.getAttribs(),i.redraw())},remove:function(a,b){var c=this,d=c.chart,a=m(a,!0);if(!c.isRemoving)c.isRemoving=!0,D(c,"remove",null,function(){c.destroy();d.isDirtyLegend=d.isDirtyBox=!0;d.linkSeries();a&&d.redraw(b)});c.isRemoving=
256
- !1},update:function(a,b){var c=this.chart,d=this.type,e=F[d].prototype,f,a=w(this.userOptions,{animation:!1,index:this.index,pointStart:this.xData[0]},{data:this.options.data},a);this.remove(!1);for(f in e)e.hasOwnProperty(f)&&(this[f]=t);q(this,F[a.type||d].prototype);this.init(c,a);m(b,!0)&&c.redraw(!1)}});q(la.prototype,{update:function(a,b){var c=this.chart,a=c.options[this.coll][this.options.index]=w(this.userOptions,a);this.destroy(!0);this._addedPlotLB=t;this.init(c,q(a,{events:t}));c.isDirtyBox=
257
- !0;m(b,!0)&&c.redraw()},remove:function(a){for(var b=this.chart,c=this.coll,d=this.series,e=d.length;e--;)d[e]&&d[e].remove(!1);ja(b.axes,this);ja(b[c],this);b.options[c].splice(this.options.index,1);p(b[c],function(a,b){a.options.index=b});this.destroy();b.isDirtyBox=!0;m(a,!0)&&b.redraw()},setTitle:function(a,b){this.update({title:a},b)},setCategories:function(a,b){this.update({categories:a},b)}});ga=ka(O);F.line=ga;ba.area=w(S,{threshold:0});var pa=ka(O,{type:"area",getSegments:function(){var a=
258
- [],b=[],c=[],d=this.xAxis,e=this.yAxis,f=e.stacks[this.stackKey],g={},h,i,j=this.points,k=this.options.connectNulls,l,o,n;if(this.options.stacking&&!this.cropped){for(o=0;o<j.length;o++)g[j[o].x]=j[o];for(n in f)f[n].total!==null&&c.push(+n);c.sort(function(a,b){return a-b});p(c,function(a){if(!k||g[a]&&g[a].y!==null)g[a]?b.push(g[a]):(h=d.translate(a),l=f[a].percent?f[a].total?f[a].cum*100/f[a].total:0:f[a].cum,i=e.toPixels(l,!0),b.push({y:null,plotX:h,clientX:h,plotY:i,yBottom:i,onMouseOver:sa}))});
259
- b.length&&a.push(b)}else O.prototype.getSegments.call(this),a=this.segments;this.segments=a},getSegmentPath:function(a){var b=O.prototype.getSegmentPath.call(this,a),c=[].concat(b),d,e=this.options;d=b.length;var f=this.yAxis.getThreshold(e.threshold),g;d===3&&c.push("L",b[1],b[2]);if(e.stacking&&!this.closedStacks)for(d=a.length-1;d>=0;d--)g=m(a[d].yBottom,f),d<a.length-1&&e.step&&c.push(a[d+1].plotX,g),c.push(a[d].plotX,g);else this.closeSegment(c,a,f);this.areaPath=this.areaPath.concat(c);return b},
260
- closeSegment:function(a,b,c){a.push("L",b[b.length-1].plotX,c,"L",b[0].plotX,c)},drawGraph:function(){this.areaPath=[];O.prototype.drawGraph.apply(this);var a=this,b=this.areaPath,c=this.options,d=c.negativeColor,e=c.negativeFillColor,f=[["area",this.color,c.fillColor]];(d||e)&&f.push(["areaNeg",d,e]);p(f,function(d){var e=d[0],f=a[e];f?f.animate({d:b}):a[e]=a.chart.renderer.path(b).attr({fill:m(d[2],ya(d[1]).setOpacity(m(c.fillOpacity,0.75)).get()),zIndex:0}).add(a.group)})},drawLegendSymbol:N.drawRectangle});
261
- F.area=pa;ba.spline=w(S);ga=ka(O,{type:"spline",getPointSpline:function(a,b,c){var d=b.plotX,e=b.plotY,f=a[c-1],g=a[c+1],h,i,j,k;if(f&&g){a=f.plotY;j=g.plotX;var g=g.plotY,l;h=(1.5*d+f.plotX)/2.5;i=(1.5*e+a)/2.5;j=(1.5*d+j)/2.5;k=(1.5*e+g)/2.5;l=(k-i)*(j-d)/(j-h)+e-k;i+=l;k+=l;i>a&&i>e?(i=v(a,e),k=2*e-i):i<a&&i<e&&(i=C(a,e),k=2*e-i);k>g&&k>e?(k=v(g,e),i=2*e-k):k<g&&k<e&&(k=C(g,e),i=2*e-k);b.rightContX=j;b.rightContY=k}c?(b=["C",f.rightContX||f.plotX,f.rightContY||f.plotY,h||d,i||e,d,e],f.rightContX=
262
- f.rightContY=null):b=["M",d,e];return b}});F.spline=ga;ba.areaspline=w(ba.area);pa=pa.prototype;ga=ka(ga,{type:"areaspline",closedStacks:!0,getSegmentPath:pa.getSegmentPath,closeSegment:pa.closeSegment,drawGraph:pa.drawGraph,drawLegendSymbol:N.drawRectangle});F.areaspline=ga;ba.column=w(S,{borderColor:"#FFFFFF",borderRadius:0,groupPadding:0.2,marker:null,pointPadding:0.1,minPointLength:0,cropThreshold:50,pointRange:null,states:{hover:{brightness:0.1,shadow:!1,halo:!1},select:{color:"#C0C0C0",borderColor:"#000000",
263
- shadow:!1}},dataLabels:{align:null,verticalAlign:null,y:null},stickyTracking:!1,tooltip:{distance:6},threshold:0});ga=ka(O,{type:"column",pointAttrToOptions:{stroke:"borderColor",fill:"color",r:"borderRadius"},cropShoulder:0,trackerGroups:["group","dataLabelsGroup"],negStacks:!0,init:function(){O.prototype.init.apply(this,arguments);var a=this,b=a.chart;b.hasRendered&&p(b.series,function(b){if(b.type===a.type)b.isDirty=!0})},getColumnMetrics:function(){var a=this,b=a.options,c=a.xAxis,d=a.yAxis,e=
264
- c.reversed,f,g={},h,i=0;b.grouping===!1?i=1:p(a.chart.series,function(b){var c=b.options,e=b.yAxis;if(b.type===a.type&&b.visible&&d.len===e.len&&d.pos===e.pos)c.stacking?(f=b.stackKey,g[f]===t&&(g[f]=i++),h=g[f]):c.grouping!==!1&&(h=i++),b.columnIndex=h});var c=C(M(c.transA)*(c.ordinalSlope||b.pointRange||c.closestPointRange||c.tickInterval||1),c.len),j=c*b.groupPadding,k=(c-2*j)/i,l=b.pointWidth,b=r(l)?(k-l)/2:k*b.pointPadding,l=m(l,k-2*b);return a.columnMetrics={width:l,offset:b+(j+((e?i-(a.columnIndex||
265
- 0):a.columnIndex)||0)*k-c/2)*(e?-1:1)}},translate:function(){var a=this,b=a.chart,c=a.options,d=a.borderWidth=m(c.borderWidth,a.activePointCount>0.5*a.xAxis.len?0:1),e=a.yAxis,f=a.translatedThreshold=e.getThreshold(c.threshold),g=m(c.minPointLength,5),c=a.getColumnMetrics(),h=c.width,i=a.barW=Ka(v(h,1+2*d)),j=a.pointXOffset=c.offset,k=-(d%2?0.5:0),l=d%2?0.5:1;b.renderer.isVML&&b.inverted&&(l+=1);O.prototype.translate.apply(a);p(a.points,function(c){var d=m(c.yBottom,f),p=C(v(-999-d,c.plotY),e.len+
266
- 999+d),q=c.plotX+j,r=i,t=C(p,d),x;x=v(p,d)-t;M(x)<g&&g&&(x=g,t=u(M(t-f)>g?d-g:f-(e.translate(c.y,0,1,0,1)<=f?g:0)));c.barX=q;c.pointWidth=h;c.tooltipPos=b.inverted?[e.len-p,a.xAxis.len-q-r/2]:[q+r/2,p];d=M(q)<0.5;r=u(q+r)+k;q=u(q)+k;r-=q;p=M(t)<0.5;x=u(t+x)+l;t=u(t)+l;x-=t;d&&(q+=1,r-=1);p&&(t-=1,x+=1);c.shapeType="rect";c.shapeArgs={x:q,y:t,width:r,height:x}})},getSymbol:sa,drawLegendSymbol:N.drawRectangle,drawGraph:sa,drawPoints:function(){var a=this,b=this.chart,c=a.options,d=b.renderer,e=c.animationLimit||
267
- 250,f,g,h;p(a.points,function(i){var j=i.plotY,k=i.graphic;if(j!==t&&!isNaN(j)&&i.y!==null)f=i.shapeArgs,h=r(a.borderWidth)?{"stroke-width":a.borderWidth}:{},g=i.pointAttr[i.selected?"select":""]||a.pointAttr[""],k?(bb(k),k.attr(h)[b.pointCount<e?"animate":"attr"](w(f))):i.graphic=d[i.shapeType](f).attr(g).attr(h).add(a.group).shadow(c.shadow,null,c.stacking&&!c.borderRadius);else if(k)i.graphic=k.destroy()})},animate:function(a){var b=this.yAxis,c=this.options,d=this.chart.inverted,e={};if(aa)a?
268
- (e.scaleY=0.001,a=C(b.pos+b.len,v(b.pos,b.toPixels(c.threshold))),d?e.translateX=a-b.len:e.translateY=a,this.group.attr(e)):(e.scaleY=1,e[d?"translateX":"translateY"]=b.pos,this.group.animate(e,this.options.animation),this.animate=null)},remove:function(){var a=this,b=a.chart;b.hasRendered&&p(b.series,function(b){if(b.type===a.type)b.isDirty=!0});O.prototype.remove.apply(a,arguments)}});F.column=ga;ba.bar=w(ba.column);pa=ka(ga,{type:"bar",inverted:!0});F.bar=pa;ba.scatter=w(S,{lineWidth:0,tooltip:{headerFormat:'<span style="color:{series.color}">●</span> <span style="font-size: 10px;"> {series.name}</span><br/>',
269
- pointFormat:"x: <b>{point.x}</b><br/>y: <b>{point.y}</b><br/>"},stickyTracking:!1});pa=ka(O,{type:"scatter",sorted:!1,requireSorting:!1,noSharedTooltip:!0,trackerGroups:["markerGroup"],takeOrdinalPosition:!1,singularTooltips:!0,drawGraph:function(){this.options.lineWidth&&O.prototype.drawGraph.call(this)}});F.scatter=pa;ba.pie=w(S,{borderColor:"#FFFFFF",borderWidth:1,center:[null,null],clip:!1,colorByPoint:!0,dataLabels:{distance:30,enabled:!0,formatter:function(){return this.point.name}},ignoreHiddenPoint:!0,
270
- legendType:"point",marker:null,size:null,showInLegend:!1,slicedOffset:10,states:{hover:{brightness:0.1,shadow:!1}},stickyTracking:!1,tooltip:{followPointer:!0}});S={type:"pie",isCartesian:!1,pointClass:ka(Ea,{init:function(){Ea.prototype.init.apply(this,arguments);var a=this,b;if(a.y<0)a.y=null;q(a,{visible:a.visible!==!1,name:m(a.name,"Slice")});b=function(b){a.slice(b.type==="select")};K(a,"select",b);K(a,"unselect",b);return a},setVisible:function(a){var b=this,c=b.series,d=c.chart;b.visible=b.options.visible=
271
- a=a===t?!b.visible:a;c.options.data[Da(b,c.data)]=b.options;p(["graphic","dataLabel","connector","shadowGroup"],function(c){if(b[c])b[c][a?"show":"hide"](!0)});b.legendItem&&d.legend.colorizeItem(b,a);if(!c.isDirty&&c.options.ignoreHiddenPoint)c.isDirty=!0,d.redraw()},slice:function(a,b,c){var d=this.series;Qa(c,d.chart);m(b,!0);this.sliced=this.options.sliced=a=r(a)?a:!this.sliced;d.options.data[Da(this,d.data)]=this.options;a=a?this.slicedTranslation:{translateX:0,translateY:0};this.graphic.animate(a);
272
- this.shadowGroup&&this.shadowGroup.animate(a)},haloPath:function(a){var b=this.shapeArgs,c=this.series.chart;return this.series.chart.renderer.symbols.arc(c.plotLeft+b.x,c.plotTop+b.y,b.r+a,b.r+a,{innerR:this.shapeArgs.r,start:b.start,end:b.end})}}),requireSorting:!1,noSharedTooltip:!0,trackerGroups:["group","dataLabelsGroup"],axisTypes:[],pointAttrToOptions:{stroke:"borderColor","stroke-width":"borderWidth",fill:"color"},singularTooltips:!0,getColor:sa,animate:function(a){var b=this,c=b.points,d=
273
- b.startAngleRad;if(!a)p(c,function(a){var c=a.graphic,a=a.shapeArgs;c&&(c.attr({r:b.center[3]/2,start:d,end:d}),c.animate({r:a.r,start:a.start,end:a.end},b.options.animation))}),b.animate=null},setData:function(a,b,c,d){O.prototype.setData.call(this,a,!1,c,d);this.processData();this.generatePoints();m(b,!0)&&this.chart.redraw(c)},generatePoints:function(){var a,b=0,c,d,e,f=this.options.ignoreHiddenPoint;O.prototype.generatePoints.call(this);c=this.points;d=c.length;for(a=0;a<d;a++)e=c[a],b+=f&&!e.visible?
274
- 0:e.y;this.total=b;for(a=0;a<d;a++)e=c[a],e.percentage=b>0?e.y/b*100:0,e.total=b},translate:function(a){this.generatePoints();var b=0,c=this.options,d=c.slicedOffset,e=d+c.borderWidth,f,g,h,i=c.startAngle||0,j=this.startAngleRad=ma/180*(i-90),i=(this.endAngleRad=ma/180*(m(c.endAngle,i+360)-90))-j,k=this.points,l=c.dataLabels.distance,c=c.ignoreHiddenPoint,o,n=k.length,p;if(!a)this.center=a=this.getCenter();this.getX=function(b,c){h=U.asin(C((b-a[1])/(a[2]/2+l),1));return a[0]+(c?-1:1)*Z(h)*(a[2]/
275
- 2+l)};for(o=0;o<n;o++){p=k[o];f=j+b*i;if(!c||p.visible)b+=p.percentage/100;g=j+b*i;p.shapeType="arc";p.shapeArgs={x:a[0],y:a[1],r:a[2]/2,innerR:a[3]/2,start:u(f*1E3)/1E3,end:u(g*1E3)/1E3};h=(g+f)/2;h>1.5*ma?h-=2*ma:h<-ma/2&&(h+=2*ma);p.slicedTranslation={translateX:u(Z(h)*d),translateY:u(ea(h)*d)};f=Z(h)*a[2]/2;g=ea(h)*a[2]/2;p.tooltipPos=[a[0]+f*0.7,a[1]+g*0.7];p.half=h<-ma/2||h>ma/2?1:0;p.angle=h;e=C(e,l/2);p.labelPos=[a[0]+f+Z(h)*l,a[1]+g+ea(h)*l,a[0]+f+Z(h)*e,a[1]+g+ea(h)*e,a[0]+f,a[1]+g,l<0?
276
- "center":p.half?"right":"left",h]}},drawGraph:null,drawPoints:function(){var a=this,b=a.chart.renderer,c,d,e=a.options.shadow,f,g;if(e&&!a.shadowGroup)a.shadowGroup=b.g("shadow").add(a.group);p(a.points,function(h){d=h.graphic;g=h.shapeArgs;f=h.shadowGroup;if(e&&!f)f=h.shadowGroup=b.g("shadow").add(a.shadowGroup);c=h.sliced?h.slicedTranslation:{translateX:0,translateY:0};f&&f.attr(c);d?d.animate(q(g,c)):h.graphic=d=b[h.shapeType](g).setRadialReference(a.center).attr(h.pointAttr[h.selected?"select":
277
- ""]).attr({"stroke-linejoin":"round"}).attr(c).add(a.group).shadow(e,f);h.visible!==void 0&&h.setVisible(h.visible)})},sortByAngle:function(a,b){a.sort(function(a,d){return a.angle!==void 0&&(d.angle-a.angle)*b})},drawLegendSymbol:N.drawRectangle,getCenter:X.getCenter,getSymbol:sa};S=ka(O,S);F.pie=S;O.prototype.drawDataLabels=function(){var a=this,b=a.options,c=b.cursor,d=b.dataLabels,e=a.points,f,g,h,i;if(d.enabled||a._hasPointLabels)a.dlProcessOptions&&a.dlProcessOptions(d),i=a.plotGroup("dataLabelsGroup",
278
- "data-labels","hidden",d.zIndex||6),!a.hasRendered&&m(d.defer,!0)&&(i.attr({opacity:0}),K(a,"afterAnimate",function(){a.dataLabelsGroup.show()[b.animation?"animate":"attr"]({opacity:1},{duration:200})})),g=d,p(e,function(b){var e,l=b.dataLabel,o,n,p=b.connector,u=!0;f=b.options&&b.options.dataLabels;e=m(f&&f.enabled,g.enabled);if(l&&!e)b.dataLabel=l.destroy();else if(e){d=w(g,f);e=d.rotation;o=b.getLabelConfig();h=d.format?Ia(d.format,o):d.formatter.call(o,d);d.style.color=m(d.color,d.style.color,
279
- a.color,"black");if(l)if(r(h))l.attr({text:h}),u=!1;else{if(b.dataLabel=l=l.destroy(),p)b.connector=p.destroy()}else if(r(h)){l={fill:d.backgroundColor,stroke:d.borderColor,"stroke-width":d.borderWidth,r:d.borderRadius||0,rotation:e,padding:d.padding,zIndex:1};for(n in l)l[n]===t&&delete l[n];l=b.dataLabel=a.chart.renderer[e?"text":"label"](h,0,-999,null,null,null,d.useHTML).attr(l).css(q(d.style,c&&{cursor:c})).add(i).shadow(d.shadow)}l&&a.alignDataLabel(b,l,d,null,u)}})};O.prototype.alignDataLabel=
280
- function(a,b,c,d,e){var f=this.chart,g=f.inverted,h=m(a.plotX,-999),i=m(a.plotY,-999),j=b.getBBox();if(a=this.visible&&(a.series.forceDL||f.isInsidePlot(h,u(i),g)||d&&f.isInsidePlot(h,g?d.x+1:d.y+d.height-1,g)))d=q({x:g?f.plotWidth-i:h,y:u(g?f.plotHeight-h:i),width:0,height:0},d),q(c,{width:j.width,height:j.height}),c.rotation?(g={align:c.align,x:d.x+c.x+d.width/2,y:d.y+c.y+d.height/2},b[e?"attr":"animate"](g)):(b.align(c,null,d),g=b.alignAttr,m(c.overflow,"justify")==="justify"?this.justifyDataLabel(b,
281
- c,g,j,d,e):m(c.crop,!0)&&(a=f.isInsidePlot(g.x,g.y)&&f.isInsidePlot(g.x+j.width,g.y+j.height)));if(!a)b.attr({y:-999}),b.placed=!1};O.prototype.justifyDataLabel=function(a,b,c,d,e,f){var g=this.chart,h=b.align,i=b.verticalAlign,j,k;j=c.x;if(j<0)h==="right"?b.align="left":b.x=-j,k=!0;j=c.x+d.width;if(j>g.plotWidth)h==="left"?b.align="right":b.x=g.plotWidth-j,k=!0;j=c.y;if(j<0)i==="bottom"?b.verticalAlign="top":b.y=-j,k=!0;j=c.y+d.height;if(j>g.plotHeight)i==="top"?b.verticalAlign="bottom":b.y=g.plotHeight-
282
- j,k=!0;if(k)a.placed=!f,a.align(b,null,e)};if(F.pie)F.pie.prototype.drawDataLabels=function(){var a=this,b=a.data,c,d=a.chart,e=a.options.dataLabels,f=m(e.connectorPadding,10),g=m(e.connectorWidth,1),h=d.plotWidth,d=d.plotHeight,i,j,k=m(e.softConnector,!0),l=e.distance,o=a.center,n=o[2]/2,q=o[1],r=l>0,t,w,x,y,z=[[],[]],A,C,G,D,B,F=[0,0,0,0],N=function(a,b){return b.y-a.y};if(a.visible&&(e.enabled||a._hasPointLabels)){O.prototype.drawDataLabels.apply(a);p(b,function(a){a.dataLabel&&a.visible&&z[a.half].push(a)});
283
- for(D=0;!y&&b[D];)y=b[D]&&b[D].dataLabel&&(b[D].dataLabel.getBBox().height||21),D++;for(D=2;D--;){var b=[],K=[],H=z[D],I=H.length,E;a.sortByAngle(H,D-0.5);if(l>0){for(B=q-n-l;B<=q+n+l;B+=y)b.push(B);w=b.length;if(I>w){c=[].concat(H);c.sort(N);for(B=I;B--;)c[B].rank=B;for(B=I;B--;)H[B].rank>=w&&H.splice(B,1);I=H.length}for(B=0;B<I;B++){c=H[B];x=c.labelPos;c=9999;var Q,P;for(P=0;P<w;P++)Q=M(b[P]-x[1]),Q<c&&(c=Q,E=P);if(E<B&&b[B]!==null)E=B;else for(w<I-B+E&&b[B]!==null&&(E=w-I+B);b[E]===null;)E++;K.push({i:E,
284
- y:b[E]});b[E]=null}K.sort(N)}for(B=0;B<I;B++){c=H[B];x=c.labelPos;t=c.dataLabel;G=c.visible===!1?"hidden":"visible";c=x[1];if(l>0){if(w=K.pop(),E=w.i,C=w.y,c>C&&b[E+1]!==null||c<C&&b[E-1]!==null)C=c}else C=c;A=e.justify?o[0]+(D?-1:1)*(n+l):a.getX(E===0||E===b.length-1?c:C,D);t._attr={visibility:G,align:x[6]};t._pos={x:A+e.x+({left:f,right:-f}[x[6]]||0),y:C+e.y-10};t.connX=A;t.connY=C;if(this.options.size===null)w=t.width,A-w<f?F[3]=v(u(w-A+f),F[3]):A+w>h-f&&(F[1]=v(u(A+w-h+f),F[1])),C-y/2<0?F[0]=
285
- v(u(-C+y/2),F[0]):C+y/2>d&&(F[2]=v(u(C+y/2-d),F[2]))}}if(Ba(F)===0||this.verifyDataLabelOverflow(F))this.placeDataLabels(),r&&g&&p(this.points,function(b){i=b.connector;x=b.labelPos;if((t=b.dataLabel)&&t._pos)G=t._attr.visibility,A=t.connX,C=t.connY,j=k?["M",A+(x[6]==="left"?5:-5),C,"C",A,C,2*x[2]-x[4],2*x[3]-x[5],x[2],x[3],"L",x[4],x[5]]:["M",A+(x[6]==="left"?5:-5),C,"L",x[2],x[3],"L",x[4],x[5]],i?(i.animate({d:j}),i.attr("visibility",G)):b.connector=i=a.chart.renderer.path(j).attr({"stroke-width":g,
286
- stroke:e.connectorColor||b.color||"#606060",visibility:G}).add(a.dataLabelsGroup);else if(i)b.connector=i.destroy()})}},F.pie.prototype.placeDataLabels=function(){p(this.points,function(a){var a=a.dataLabel,b;if(a)(b=a._pos)?(a.attr(a._attr),a[a.moved?"animate":"attr"](b),a.moved=!0):a&&a.attr({y:-999})})},F.pie.prototype.alignDataLabel=sa,F.pie.prototype.verifyDataLabelOverflow=function(a){var b=this.center,c=this.options,d=c.center,e=c=c.minSize||80,f;d[0]!==null?e=v(b[2]-v(a[1],a[3]),c):(e=v(b[2]-
287
- a[1]-a[3],c),b[0]+=(a[3]-a[1])/2);d[1]!==null?e=v(C(e,b[2]-v(a[0],a[2])),c):(e=v(C(e,b[2]-a[0]-a[2]),c),b[1]+=(a[0]-a[2])/2);e<b[2]?(b[2]=e,this.translate(b),p(this.points,function(a){if(a.dataLabel)a.dataLabel._pos=null}),this.drawDataLabels&&this.drawDataLabels()):f=!0;return f};if(F.column)F.column.prototype.alignDataLabel=function(a,b,c,d,e){var f=this.chart,g=f.inverted,h=a.dlBox||a.shapeArgs,i=a.below||a.plotY>m(this.translatedThreshold,f.plotSizeY),j=m(c.inside,!!this.options.stacking);if(h&&
288
- (d=w(h),g&&(d={x:f.plotWidth-d.y-d.height,y:f.plotHeight-d.x-d.width,width:d.height,height:d.width}),!j))g?(d.x+=i?0:d.width,d.width=0):(d.y+=i?d.height:0,d.height=0);c.align=m(c.align,!g||j?"center":i?"right":"left");c.verticalAlign=m(c.verticalAlign,g||j?"middle":i?"top":"bottom");O.prototype.alignDataLabel.call(this,a,b,c,d,e)};S=R.TrackerMixin={drawTrackerPoint:function(){var a=this,b=a.chart,c=b.pointer,d=a.options.cursor,e=d&&{cursor:d},f=function(c){var d=c.target,e;if(b.hoverSeries!==a)a.onMouseOver();
289
- for(;d&&!e;)e=d.point,d=d.parentNode;if(e!==t&&e!==b.hoverPoint)e.onMouseOver(c)};p(a.points,function(a){if(a.graphic)a.graphic.element.point=a;if(a.dataLabel)a.dataLabel.element.point=a});if(!a._hasTracking)p(a.trackerGroups,function(b){if(a[b]&&(a[b].addClass("highcharts-tracker").on("mouseover",f).on("mouseout",function(a){c.onTrackerMouseOut(a)}).css(e),$a))a[b].on("touchstart",f)}),a._hasTracking=!0},drawTrackerGraph:function(){var a=this,b=a.options,c=b.trackByArea,d=[].concat(c?a.areaPath:
290
- a.graphPath),e=d.length,f=a.chart,g=f.pointer,h=f.renderer,i=f.options.tooltip.snap,j=a.tracker,k=b.cursor,l=k&&{cursor:k},k=a.singlePoints,m,n=function(){if(f.hoverSeries!==a)a.onMouseOver()},q="rgba(192,192,192,"+(aa?1.0E-4:0.002)+")";if(e&&!c)for(m=e+1;m--;)d[m]==="M"&&d.splice(m+1,0,d[m+1]-i,d[m+2],"L"),(m&&d[m]==="M"||m===e)&&d.splice(m,0,"L",d[m-2]+i,d[m-1]);for(m=0;m<k.length;m++)e=k[m],d.push("M",e.plotX-i,e.plotY,"L",e.plotX+i,e.plotY);j?j.attr({d:d}):(a.tracker=h.path(d).attr({"stroke-linejoin":"round",
291
- visibility:a.visible?"visible":"hidden",stroke:q,fill:c?q:Q,"stroke-width":b.lineWidth+(c?0:2*i),zIndex:2}).add(a.group),p([a.tracker,a.markerGroup],function(a){a.addClass("highcharts-tracker").on("mouseover",n).on("mouseout",function(a){g.onTrackerMouseOut(a)}).css(l);if($a)a.on("touchstart",n)}))}};if(F.column)ga.prototype.drawTracker=S.drawTrackerPoint;if(F.pie)F.pie.prototype.drawTracker=S.drawTrackerPoint;if(F.scatter)pa.prototype.drawTracker=S.drawTrackerPoint;q(lb.prototype,{setItemEvents:function(a,
292
- b,c,d,e){var f=this;(c?b:a.legendGroup).on("mouseover",function(){a.setState("hover");b.css(f.options.itemHoverStyle)}).on("mouseout",function(){b.css(a.visible?d:e);a.setState()}).on("click",function(b){var c=function(){a.setVisible()},b={browserEvent:b};a.firePointEvent?a.firePointEvent("legendItemClick",b,c):D(a,"legendItemClick",b,c)})},createCheckboxForItem:function(a){a.checkbox=Y("input",{type:"checkbox",checked:a.selected,defaultChecked:a.selected},this.options.itemCheckboxStyle,this.chart.container);
293
- K(a.checkbox,"click",function(b){D(a,"checkboxClick",{checked:b.target.checked},function(){a.select()})})}});E.legend.itemStyle.cursor="pointer";q(Ya.prototype,{showResetZoom:function(){var a=this,b=E.lang,c=a.options.chart.resetZoomButton,d=c.theme,e=d.states,f=c.relativeTo==="chart"?null:"plotBox";this.resetZoomButton=a.renderer.button(b.resetZoom,null,null,function(){a.zoomOut()},d,e&&e.hover).attr({align:c.position.align,title:b.resetZoomTitle}).add().align(c.position,!1,f)},zoomOut:function(){var a=
294
- this;D(a,"selection",{resetSelection:!0},function(){a.zoom()})},zoom:function(a){var b,c=this.pointer,d=!1,e;!a||a.resetSelection?p(this.axes,function(a){b=a.zoom()}):p(a.xAxis.concat(a.yAxis),function(a){var e=a.axis,h=e.isXAxis;if(c[h?"zoomX":"zoomY"]||c[h?"pinchX":"pinchY"])b=e.zoom(a.min,a.max),e.displayBtn&&(d=!0)});e=this.resetZoomButton;if(d&&!e)this.showResetZoom();else if(!d&&ca(e))this.resetZoomButton=e.destroy();b&&this.redraw(m(this.options.chart.animation,a&&a.animation,this.pointCount<
295
- 100))},pan:function(a,b){var c=this,d=c.hoverPoints,e;d&&p(d,function(a){a.setState()});p(b==="xy"?[1,0]:[1],function(b){var d=a[b?"chartX":"chartY"],h=c[b?"xAxis":"yAxis"][0],i=c[b?"mouseDownX":"mouseDownY"],j=(h.pointRange||0)/2,k=h.getExtremes(),l=h.toValue(i-d,!0)+j,i=h.toValue(i+c[b?"plotWidth":"plotHeight"]-d,!0)-j;h.series.length&&l>C(k.dataMin,k.min)&&i<v(k.dataMax,k.max)&&(h.setExtremes(l,i,!1,!1,{trigger:"pan"}),e=!0);c[b?"mouseDownX":"mouseDownY"]=d});e&&c.redraw(!1);G(c.container,{cursor:"move"})}});
296
- q(Ea.prototype,{select:function(a,b){var c=this,d=c.series,e=d.chart,a=m(a,!c.selected);c.firePointEvent(a?"select":"unselect",{accumulate:b},function(){c.selected=c.options.selected=a;d.options.data[Da(c,d.data)]=c.options;c.setState(a&&"select");b||p(e.getSelectedPoints(),function(a){if(a.selected&&a!==c)a.selected=a.options.selected=!1,d.options.data[Da(a,d.data)]=a.options,a.setState(""),a.firePointEvent("unselect")})})},onMouseOver:function(a){var b=this.series,c=b.chart,d=c.tooltip,e=c.hoverPoint;
297
- if(e&&e!==this)e.onMouseOut();this.firePointEvent("mouseOver");d&&(!d.shared||b.noSharedTooltip)&&d.refresh(this,a);this.setState("hover");c.hoverPoint=this},onMouseOut:function(){var a=this.series.chart,b=a.hoverPoints;if(!b||Da(this,b)===-1)this.firePointEvent("mouseOut"),this.setState(),a.hoverPoint=null},importEvents:function(){if(!this.hasImportedEvents){var a=w(this.series.options.point,this.options).events,b;this.events=a;for(b in a)K(this,b,a[b]);this.hasImportedEvents=!0}},setState:function(a,
298
- b){var c=this.plotX,d=this.plotY,e=this.series,f=e.options.states,g=ba[e.type].marker&&e.options.marker,h=g&&!g.enabled,i=g&&g.states[a],j=i&&i.enabled===!1,k=e.stateMarkerGraphic,l=this.marker||{},m=e.chart,n=e.halo,p,a=a||"";p=this.pointAttr[a]||e.pointAttr[a];if(!(a===this.state&&!b||this.selected&&a!=="select"||f[a]&&f[a].enabled===!1||a&&(j||h&&i.enabled===!1)||a&&l.states&&l.states[a]&&l.states[a].enabled===!1)){if(this.graphic)g=g&&this.graphic.symbolName&&p.r,this.graphic.attr(w(p,g?{x:c-
299
- g,y:d-g,width:2*g,height:2*g}:{})),k&&k.hide();else{if(a&&i)if(g=i.radius,l=l.symbol||e.symbol,k&&k.currentSymbol!==l&&(k=k.destroy()),k)k[b?"animate":"attr"]({x:c-g,y:d-g});else if(l)e.stateMarkerGraphic=k=m.renderer.symbol(l,c-g,d-g,2*g,2*g).attr(p).add(e.markerGroup),k.currentSymbol=l;if(k)k[a&&m.isInsidePlot(c,d,m.inverted)?"show":"hide"]()}if((c=f[a]&&f[a].halo)&&c.size){if(!n)e.halo=n=m.renderer.path().add(e.seriesGroup);n.attr(q({fill:ya(this.color||e.color).setOpacity(c.opacity).get()},c.attributes))[b?
300
- "animate":"attr"]({d:this.haloPath(c.size)})}else n&&n.attr({d:[]});this.state=a}},haloPath:function(a){var b=this.series,c=b.chart,d=b.getPlotBox(),e=c.inverted;return c.renderer.symbols.circle(d.translateX+(e?b.yAxis.len-this.plotY:this.plotX)-a,d.translateY+(e?b.xAxis.len-this.plotX:this.plotY)-a,a*2,a*2)}});q(O.prototype,{onMouseOver:function(){var a=this.chart,b=a.hoverSeries;if(b&&b!==this)b.onMouseOut();this.options.events.mouseOver&&D(this,"mouseOver");this.setState("hover");a.hoverSeries=
301
- this},onMouseOut:function(){var a=this.options,b=this.chart,c=b.tooltip,d=b.hoverPoint;if(d)d.onMouseOut();this&&a.events.mouseOut&&D(this,"mouseOut");c&&!a.stickyTracking&&(!c.shared||this.noSharedTooltip)&&c.hide();this.setState();b.hoverSeries=null},setState:function(a){var b=this.options,c=this.graph,d=this.graphNeg,e=b.states,b=b.lineWidth,a=a||"";if(this.state!==a)this.state=a,e[a]&&e[a].enabled===!1||(a&&(b=e[a].lineWidth||b+1),c&&!c.dashstyle&&(a={"stroke-width":b},c.attr(a),d&&d.attr(a)))},
302
- setVisible:function(a,b){var c=this,d=c.chart,e=c.legendItem,f,g=d.options.chart.ignoreHiddenSeries,h=c.visible;f=(c.visible=a=c.userOptions.visible=a===t?!h:a)?"show":"hide";p(["group","dataLabelsGroup","markerGroup","tracker"],function(a){if(c[a])c[a][f]()});if(d.hoverSeries===c)c.onMouseOut();e&&d.legend.colorizeItem(c,a);c.isDirty=!0;c.options.stacking&&p(d.series,function(a){if(a.options.stacking&&a.visible)a.isDirty=!0});p(c.linkedSeries,function(b){b.setVisible(a,!1)});if(g)d.isDirtyBox=!0;
303
- b!==!1&&d.redraw();D(c,f)},setTooltipPoints:function(a){var b=[],c,d,e=this.xAxis,f=e&&e.getExtremes(),g=e?e.tooltipLen||e.len:this.chart.plotSizeX,h,i,j=[];if(!(this.options.enableMouseTracking===!1||this.singularTooltips)){if(a)this.tooltipPoints=null;p(this.segments||this.points,function(a){b=b.concat(a)});e&&e.reversed&&(b=b.reverse());this.orderTooltipPoints&&this.orderTooltipPoints(b);a=b.length;for(i=0;i<a;i++)if(e=b[i],c=e.x,c>=f.min&&c<=f.max){h=b[i+1];c=d===t?0:d+1;for(d=b[i+1]?C(v(0,T((e.clientX+
304
- (h?h.wrappedClientX||h.clientX:g))/2)),g):g;c>=0&&c<=d;)j[c++]=e}this.tooltipPoints=j}},show:function(){this.setVisible(!0)},hide:function(){this.setVisible(!1)},select:function(a){this.selected=a=a===t?!this.selected:a;if(this.checkbox)this.checkbox.checked=a;D(this,a?"select":"unselect")},drawTracker:S.drawTrackerGraph});q(R,{Axis:la,Chart:Ya,Color:ya,Point:Ea,Tick:Sa,Renderer:Za,Series:O,SVGElement:P,SVGRenderer:ta,arrayMin:Na,arrayMax:Ba,charts:V,dateFormat:cb,format:Ia,pathAnim:ub,getOptions:function(){return E},
305
- hasBidiBug:Nb,isTouchDevice:Jb,numberFormat:Ga,seriesTypes:F,setOptions:function(a){E=w(!0,E,a);Cb();return E},addEvent:K,removeEvent:W,createElement:Y,discardElement:Pa,css:G,each:p,extend:q,map:Ua,merge:w,pick:m,splat:qa,extendClass:ka,pInt:z,wrap:Ma,svg:aa,canvas:fa,vml:!aa&&!fa,product:"Highcharts",version:"4.0.1"})})();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4
  (c) 2009-2014 Torstein Honsi
5
 
6
  License: www.highcharts.com/license
7
+ */
8
+ (function () {
9
+ function q(a, b) {
10
+ var c;
11
+ a || (a = {});
12
+ for (c in b)a[c] = b[c];
13
+ return a
14
+ }
15
+
16
+ function w() {
17
+ var a, b = arguments, c, d = {}, e = function (a, b) {
18
+ var c, d;
19
+ typeof a !== "object" && (a = {});
20
+ for (d in b)b.hasOwnProperty(d) && (c = b[d], a[d] = c && typeof c === "object" && Object.prototype.toString.call(c) !== "[object Array]" && d !== "renderTo" && typeof c.nodeType !== "number" ? e(a[d] || {}, c) : b[d]);
21
+ return a
22
+ };
23
+ b[0] === !0 && (d = b[1], b = Array.prototype.slice.call(b, 2));
24
+ c = b.length;
25
+ for (a = 0; a < c; a++)d = e(d, b[a]);
26
+ return d
27
+ }
28
+
29
+ function z(a, b) {
30
+ return parseInt(a, b ||
31
+ 10)
32
+ }
33
+
34
+ function Fa(a) {
35
+ return typeof a === "string"
36
+ }
37
+
38
+ function ca(a) {
39
+ return typeof a === "object"
40
+ }
41
+
42
+ function La(a) {
43
+ return Object.prototype.toString.call(a) === "[object Array]"
44
+ }
45
+
46
+ function ha(a) {
47
+ return typeof a === "number"
48
+ }
49
+
50
+ function za(a) {
51
+ return U.log(a) / U.LN10
52
+ }
53
+
54
+ function ia(a) {
55
+ return U.pow(10, a)
56
+ }
57
+
58
+ function ja(a, b) {
59
+ for (var c = a.length; c--;)if (a[c] === b) {
60
+ a.splice(c, 1);
61
+ break
62
+ }
63
+ }
64
+
65
+ function r(a) {
66
+ return a !== t && a !== null
67
+ }
68
+
69
+ function H(a, b, c) {
70
+ var d, e;
71
+ if (Fa(b))r(c) ? a.setAttribute(b, c) : a && a.getAttribute && (e = a.getAttribute(b)); else if (r(b) &&
72
+ ca(b))for (d in b)a.setAttribute(d, b[d]);
73
+ return e
74
+ }
75
+
76
+ function qa(a) {
77
+ return La(a) ? a : [a]
78
+ }
79
+
80
+ function m() {
81
+ var a = arguments, b, c, d = a.length;
82
+ for (b = 0; b < d; b++)if (c = a[b], typeof c !== "undefined" && c !== null)return c
83
+ }
84
+
85
+ function G(a, b) {
86
+ if (Aa && !aa && b && b.opacity !== t)b.filter = "alpha(opacity=" + b.opacity * 100 + ")";
87
+ q(a.style, b)
88
+ }
89
+
90
+ function Y(a, b, c, d, e) {
91
+ a = y.createElement(a);
92
+ b && q(a, b);
93
+ e && G(a, {padding: 0, border: Q, margin: 0});
94
+ c && G(a, c);
95
+ d && d.appendChild(a);
96
+ return a
97
+ }
98
+
99
+ function ka(a, b) {
100
+ var c = function () {
101
+ };
102
+ c.prototype = new a;
103
+ q(c.prototype, b);
104
+ return c
105
+ }
106
+
107
+ function Ga(a, b, c, d) {
108
+ var e = E.lang, a = +a || 0, f = b === -1 ? (a.toString().split(".")[1] || "").length : isNaN(b = M(b)) ? 2 : b, b = c === void 0 ? e.decimalPoint : c, d = d === void 0 ? e.thousandsSep : d, e = a < 0 ? "-" : "", c = String(z(a = M(a).toFixed(f))), g = c.length > 3 ? c.length % 3 : 0;
109
+ return e + (g ? c.substr(0, g) + d : "") + c.substr(g).replace(/(\d{3})(?=\d)/g, "$1" + d) + (f ? b + M(a - c).toFixed(f).slice(2) : "")
110
+ }
111
+
112
+ function Ha(a, b) {
113
+ return Array((b || 2) + 1 - String(a).length).join(0) + a
114
+ }
115
+
116
+ function Ma(a, b, c) {
117
+ var d = a[b];
118
+ a[b] = function () {
119
+ var a = Array.prototype.slice.call(arguments);
120
+ a.unshift(d);
121
+ return c.apply(this, a)
122
+ }
123
+ }
124
+
125
+ function Ia(a, b) {
126
+ for (var c = "{", d = !1, e, f, g, h, i, j = []; (c = a.indexOf(c)) !== -1;) {
127
+ e = a.slice(0, c);
128
+ if (d) {
129
+ f = e.split(":");
130
+ g = f.shift().split(".");
131
+ i = g.length;
132
+ e = b;
133
+ for (h = 0; h < i; h++)e = e[g[h]];
134
+ if (f.length)f = f.join(":"), g = /\.([0-9])/, h = E.lang, i = void 0, /f$/.test(f) ? (i = (i = f.match(g)) ? i[1] : -1, e !== null && (e = Ga(e, i, h.decimalPoint, f.indexOf(",") > -1 ? h.thousandsSep : ""))) : e = cb(f, e)
135
+ }
136
+ j.push(e);
137
+ a = a.slice(c + 1);
138
+ c = (d = !d) ? "}" : "{"
139
+ }
140
+ j.push(a);
141
+ return j.join("")
142
+ }
143
+
144
+ function mb(a) {
145
+ return U.pow(10, T(U.log(a) /
146
+ U.LN10))
147
+ }
148
+
149
+ function nb(a, b, c, d) {
150
+ var e, c = m(c, 1);
151
+ e = a / c;
152
+ b || (b = [1, 2, 2.5, 5, 10], d && d.allowDecimals === !1 && (c === 1 ? b = [1, 2, 5, 10] : c <= 0.1 && (b = [1 / c])));
153
+ for (d = 0; d < b.length; d++)if (a = b[d], e <= (b[d] + (b[d + 1] || b[d])) / 2)break;
154
+ a *= c;
155
+ return a
156
+ }
157
+
158
+ function Bb() {
159
+ this.symbol = this.color = 0
160
+ }
161
+
162
+ function ob(a, b) {
163
+ var c = a.length, d, e;
164
+ for (e = 0; e < c; e++)a[e].ss_i = e;
165
+ a.sort(function (a, c) {
166
+ d = b(a, c);
167
+ return d === 0 ? a.ss_i - c.ss_i : d
168
+ });
169
+ for (e = 0; e < c; e++)delete a[e].ss_i
170
+ }
171
+
172
+ function Na(a) {
173
+ for (var b = a.length, c = a[0]; b--;)a[b] < c && (c = a[b]);
174
+ return c
175
+ }
176
+
177
+ function Ba(a) {
178
+ for (var b =
179
+ a.length, c = a[0]; b--;)a[b] > c && (c = a[b]);
180
+ return c
181
+ }
182
+
183
+ function Oa(a, b) {
184
+ for (var c in a)a[c] && a[c] !== b && a[c].destroy && a[c].destroy(), delete a[c]
185
+ }
186
+
187
+ function Pa(a) {
188
+ db || (db = Y(Ja));
189
+ a && db.appendChild(a);
190
+ db.innerHTML = ""
191
+ }
192
+
193
+ function ra(a, b) {
194
+ var c = "Highcharts error #" + a + ": www.highcharts.com/errors/" + a;
195
+ if (b)throw c; else I.console && console.log(c)
196
+ }
197
+
198
+ function da(a) {
199
+ return parseFloat(a.toPrecision(14))
200
+ }
201
+
202
+ function Qa(a, b) {
203
+ va = m(a, b.animation)
204
+ }
205
+
206
+ function Cb() {
207
+ var a = E.global.useUTC, b = a ? "getUTC" : "get", c = a ? "setUTC" : "set";
208
+ Ra = (a && E.global.timezoneOffset ||
209
+ 0) * 6E4;
210
+ eb = a ? Date.UTC : function (a, b, c, g, h, i) {
211
+ return (new Date(a, b, m(c, 1), m(g, 0), m(h, 0), m(i, 0))).getTime()
212
+ };
213
+ pb = b + "Minutes";
214
+ qb = b + "Hours";
215
+ rb = b + "Day";
216
+ Xa = b + "Date";
217
+ fb = b + "Month";
218
+ gb = b + "FullYear";
219
+ Db = c + "Minutes";
220
+ Eb = c + "Hours";
221
+ sb = c + "Date";
222
+ Fb = c + "Month";
223
+ Gb = c + "FullYear"
224
+ }
225
+
226
+ function P() {
227
+ }
228
+
229
+ function Sa(a, b, c, d) {
230
+ this.axis = a;
231
+ this.pos = b;
232
+ this.type = c || "";
233
+ this.isNew = !0;
234
+ !c && !d && this.addLabel()
235
+ }
236
+
237
+ function la() {
238
+ this.init.apply(this, arguments)
239
+ }
240
+
241
+ function Ya() {
242
+ this.init.apply(this, arguments)
243
+ }
244
+
245
+ function Hb(a, b, c, d, e) {
246
+ var f = a.chart.inverted;
247
+ this.axis = a;
248
+ this.isNegative = c;
249
+ this.options = b;
250
+ this.x = d;
251
+ this.total = null;
252
+ this.points = {};
253
+ this.stack = e;
254
+ this.alignOptions = {
255
+ align: b.align || (f ? c ? "left" : "right" : "center"),
256
+ verticalAlign: b.verticalAlign || (f ? "middle" : c ? "bottom" : "top"),
257
+ y: m(b.y, f ? 4 : c ? 14 : -6),
258
+ x: m(b.x, f ? c ? -6 : 6 : 0)
259
+ };
260
+ this.textAlign = b.textAlign || (f ? c ? "right" : "left" : "center")
261
+ }
262
+
263
+ var t, y = document, I = window, U = Math, u = U.round, T = U.floor, Ka = U.ceil, v = U.max, C = U.min, M = U.abs, Z = U.cos, ea = U.sin, ma = U.PI, Ca = ma * 2 / 360, wa = navigator.userAgent, Ib = I.opera, Aa = /msie/i.test(wa) && !Ib, hb = y.documentMode === 8, ib = /AppleWebKit/.test(wa), Ta = /Firefox/.test(wa), Jb = /(Mobile|Android|Windows Phone)/.test(wa), xa = "http://www.w3.org/2000/svg", aa = !!y.createElementNS && !!y.createElementNS(xa, "svg").createSVGRect, Nb = Ta && parseInt(wa.split("Firefox/")[1], 10) < 4, fa = !aa && !Aa && !!y.createElement("canvas").getContext, Za, $a, Kb = {}, tb = 0, db, E, cb, va, ub, A, sa = function () {
264
+ }, V = [], ab = 0, Ja = "div", Q = "none", Ob = /^[0-9]+$/, Pb = "stroke-width", eb, Ra, pb, qb, rb, Xa, fb, gb, Db, Eb, sb, Fb, Gb, F = {}, R = I.Highcharts = I.Highcharts ? ra(16,
265
+ !0) : {};
266
+ cb = function (a, b, c) {
267
+ if (!r(b) || isNaN(b))return "Invalid date";
268
+ var a = m(a, "%Y-%m-%d %H:%M:%S"), d = new Date(b - Ra), e, f = d[qb](), g = d[rb](), h = d[Xa](), i = d[fb](), j = d[gb](), k = E.lang, l = k.weekdays, d = q({
269
+ a: l[g].substr(0, 3),
270
+ A: l[g],
271
+ d: Ha(h),
272
+ e: h,
273
+ b: k.shortMonths[i],
274
+ B: k.months[i],
275
+ m: Ha(i + 1),
276
+ y: j.toString().substr(2, 2),
277
+ Y: j,
278
+ H: Ha(f),
279
+ I: Ha(f % 12 || 12),
280
+ l: f % 12 || 12,
281
+ M: Ha(d[pb]()),
282
+ p: f < 12 ? "AM" : "PM",
283
+ P: f < 12 ? "am" : "pm",
284
+ S: Ha(d.getSeconds()),
285
+ L: Ha(u(b % 1E3), 3)
286
+ }, R.dateFormats);
287
+ for (e in d)for (; a.indexOf("%" + e) !== -1;)a = a.replace("%" + e, typeof d[e] ===
288
+ "function" ? d[e](b) : d[e]);
289
+ return c ? a.substr(0, 1).toUpperCase() + a.substr(1) : a
290
+ };
291
+ Bb.prototype = {
292
+ wrapColor: function (a) {
293
+ if (this.color >= a)this.color = 0
294
+ }, wrapSymbol: function (a) {
295
+ if (this.symbol >= a)this.symbol = 0
296
+ }
297
+ };
298
+ A = function () {
299
+ for (var a = 0, b = arguments, c = b.length, d = {}; a < c; a++)d[b[a++]] = b[a];
300
+ return d
301
+ }("millisecond", 1, "second", 1E3, "minute", 6E4, "hour", 36E5, "day", 864E5, "week", 6048E5, "month", 26784E5, "year", 31556952E3);
302
+ ub = {
303
+ init: function (a, b, c) {
304
+ var b = b || "", d = a.shift, e = b.indexOf("C") > -1, f = e ? 7 : 3, g, b = b.split(" "), c = [].concat(c),
305
+ h, i, j = function (a) {
306
+ for (g = a.length; g--;)a[g] === "M" && a.splice(g + 1, 0, a[g + 1], a[g + 2], a[g + 1], a[g + 2])
307
+ };
308
+ e && (j(b), j(c));
309
+ a.isArea && (h = b.splice(b.length - 6, 6), i = c.splice(c.length - 6, 6));
310
+ if (d <= c.length / f && b.length === c.length)for (; d--;)c = [].concat(c).splice(0, f).concat(c);
311
+ a.shift = 0;
312
+ if (b.length)for (a = c.length; b.length < a;)d = [].concat(b).splice(b.length - f, f), e && (d[f - 6] = d[f - 2], d[f - 5] = d[f - 1]), b = b.concat(d);
313
+ h && (b = b.concat(h), c = c.concat(i));
314
+ return [b, c]
315
+ }, step: function (a, b, c, d) {
316
+ var e = [], f = a.length;
317
+ if (c === 1)e = d; else if (f ===
318
+ b.length && c < 1)for (; f--;)d = parseFloat(a[f]), e[f] = isNaN(d) ? a[f] : c * parseFloat(b[f] - d) + d; else e = b;
319
+ return e
320
+ }
321
+ };
322
+ (function (a) {
323
+ I.HighchartsAdapter = I.HighchartsAdapter || a && {
324
+ init: function (b) {
325
+ var c = a.fx, d = c.step, e, f = a.Tween, g = f && f.propHooks;
326
+ e = a.cssHooks.opacity;
327
+ a.extend(a.easing, {
328
+ easeOutQuad: function (a, b, c, d, e) {
329
+ return -d * (b /= e) * (b - 2) + c
330
+ }
331
+ });
332
+ a.each(["cur", "_default", "width", "height", "opacity"], function (a, b) {
333
+ var e = d, k;
334
+ b === "cur" ? e = c.prototype : b === "_default" && f && (e = g[b], b = "set");
335
+ (k = e[b]) && (e[b] = function (c) {
336
+ var d, c =
337
+ a ? c : this;
338
+ if (c.prop !== "align")return d = c.elem, d.attr ? d.attr(c.prop, b === "cur" ? t : c.now) : k.apply(this, arguments)
339
+ })
340
+ });
341
+ Ma(e, "get", function (a, b, c) {
342
+ return b.attr ? b.opacity || 0 : a.call(this, b, c)
343
+ });
344
+ e = function (a) {
345
+ var c = a.elem, d;
346
+ if (!a.started)d = b.init(c, c.d, c.toD), a.start = d[0], a.end = d[1], a.started = !0;
347
+ c.attr("d", b.step(a.start, a.end, a.pos, c.toD))
348
+ };
349
+ f ? g.d = {set: e} : d.d = e;
350
+ this.each = Array.prototype.forEach ? function (a, b) {
351
+ return Array.prototype.forEach.call(a, b)
352
+ } : function (a, b) {
353
+ for (var c = 0, d = a.length; c < d; c++)if (b.call(a[c],
354
+ a[c], c, a) === !1)return c
355
+ };
356
+ a.fn.highcharts = function () {
357
+ var a = "Chart", b = arguments, c, d;
358
+ if (this[0]) {
359
+ Fa(b[0]) && (a = b[0], b = Array.prototype.slice.call(b, 1));
360
+ c = b[0];
361
+ if (c !== t)c.chart = c.chart || {}, c.chart.renderTo = this[0], new R[a](c, b[1]), d = this;
362
+ c === t && (d = V[H(this[0], "data-highcharts-chart")])
363
+ }
364
+ return d
365
+ }
366
+ }, getScript: a.getScript, inArray: a.inArray, adapterRun: function (b, c) {
367
+ return a(b)[c]()
368
+ }, grep: a.grep, map: function (a, c) {
369
+ for (var d = [], e = 0, f = a.length; e < f; e++)d[e] = c.call(a[e], a[e], e, a);
370
+ return d
371
+ }, offset: function (b) {
372
+ return a(b).offset()
373
+ },
374
+ addEvent: function (b, c, d) {
375
+ a(b).bind(c, d)
376
+ }, removeEvent: function (b, c, d) {
377
+ var e = y.removeEventListener ? "removeEventListener" : "detachEvent";
378
+ y[e] && b && !b[e] && (b[e] = function () {
379
+ });
380
+ a(b).unbind(c, d)
381
+ }, fireEvent: function (b, c, d, e) {
382
+ var f = a.Event(c), g = "detached" + c, h;
383
+ !Aa && d && (delete d.layerX, delete d.layerY, delete d.returnValue);
384
+ q(f, d);
385
+ b[c] && (b[g] = b[c], b[c] = null);
386
+ a.each(["preventDefault", "stopPropagation"], function (a, b) {
387
+ var c = f[b];
388
+ f[b] = function () {
389
+ try {
390
+ c.call(f)
391
+ } catch (a) {
392
+ b === "preventDefault" && (h = !0)
393
+ }
394
+ }
395
+ });
396
+ a(b).trigger(f);
397
+ b[g] && (b[c] = b[g], b[g] = null);
398
+ e && !f.isDefaultPrevented() && !h && e(f)
399
+ }, washMouseEvent: function (a) {
400
+ var c = a.originalEvent || a;
401
+ if (c.pageX === t)c.pageX = a.pageX, c.pageY = a.pageY;
402
+ return c
403
+ }, animate: function (b, c, d) {
404
+ var e = a(b);
405
+ if (!b.style)b.style = {};
406
+ if (c.d)b.toD = c.d, c.d = 1;
407
+ e.stop();
408
+ c.opacity !== t && b.attr && (c.opacity += "px");
409
+ e.animate(c, d)
410
+ }, stop: function (b) {
411
+ a(b).stop()
412
+ }
413
+ }
414
+ })(I.jQuery);
415
+ var S = I.HighchartsAdapter, N = S || {};
416
+ S && S.init.call(S, ub);
417
+ var jb = N.adapterRun, Qb = N.getScript, Da = N.inArray, p = N.each, vb = N.grep, Rb = N.offset, Ua =
418
+ N.map, K = N.addEvent, W = N.removeEvent, D = N.fireEvent, Sb = N.washMouseEvent, kb = N.animate, bb = N.stop, N = {
419
+ enabled: !0,
420
+ x: 0,
421
+ y: 15,
422
+ style: {color: "#606060", cursor: "default", fontSize: "11px"}
423
+ };
424
+ E = {
425
+ colors: "#7cb5ec,#434348,#90ed7d,#f7a35c,#8085e9,#f15c80,#e4d354,#8085e8,#8d4653,#91e8e1".split(","),
426
+ symbols: ["circle", "diamond", "square", "triangle", "triangle-down"],
427
+ lang: {
428
+ loading: "Loading...",
429
+ months: "January,February,March,April,May,June,July,August,September,October,November,December".split(","),
430
+ shortMonths: "Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec".split(","),
431
+ weekdays: "Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday".split(","),
432
+ decimalPoint: ".",
433
+ numericSymbols: "k,M,G,T,P,E".split(","),
434
+ resetZoom: "Reset zoom",
435
+ resetZoomTitle: "Reset zoom level 1:1",
436
+ thousandsSep: ","
437
+ },
438
+ global: {
439
+ useUTC: !0,
440
+ canvasToolsURL: "http://code.highcharts.com/4.0.1/modules/canvas-tools.js",
441
+ VMLRadialGradientURL: "http://code.highcharts.com/4.0.1/gfx/vml-radial-gradient.png"
442
+ },
443
+ chart: {
444
+ borderColor: "#4572A7",
445
+ borderRadius: 0,
446
+ defaultSeriesType: "line",
447
+ ignoreHiddenSeries: !0,
448
+ spacing: [10, 10, 15,
449
+ 10],
450
+ backgroundColor: "#FFFFFF",
451
+ plotBorderColor: "#C0C0C0",
452
+ resetZoomButton: {theme: {zIndex: 20}, position: {align: "right", x: -10, y: 10}}
453
+ },
454
+ title: {text: "Chart title", align: "center", margin: 15, style: {color: "#333333", fontSize: "18px"}},
455
+ subtitle: {text: "", align: "center", style: {color: "#555555"}},
456
+ plotOptions: {
457
+ line: {
458
+ allowPointSelect: !1,
459
+ showCheckbox: !1,
460
+ animation: {duration: 1E3},
461
+ events: {},
462
+ lineWidth: 2,
463
+ marker: {
464
+ lineWidth: 0, radius: 4, lineColor: "#FFFFFF", states: {
465
+ hover: {enabled: !0}, select: {
466
+ fillColor: "#FFFFFF", lineColor: "#000000",
467
+ lineWidth: 2
468
+ }
469
+ }
470
+ },
471
+ point: {events: {}},
472
+ dataLabels: w(N, {
473
+ align: "center", enabled: !1, formatter: function () {
474
+ return this.y === null ? "" : Ga(this.y, -1)
475
+ }, verticalAlign: "bottom", y: 0
476
+ }),
477
+ cropThreshold: 300,
478
+ pointRange: 0,
479
+ states: {hover: {marker: {}, halo: {size: 10, opacity: 0.25}}, select: {marker: {}}},
480
+ stickyTracking: !0,
481
+ turboThreshold: 1E3
482
+ }
483
+ },
484
+ labels: {style: {position: "absolute", color: "#3E576F"}},
485
+ legend: {
486
+ enabled: !0,
487
+ align: "center",
488
+ layout: "horizontal",
489
+ labelFormatter: function () {
490
+ return this.name
491
+ },
492
+ borderColor: "#909090",
493
+ borderRadius: 0,
494
+ navigation: {
495
+ activeColor: "#274b6d",
496
+ inactiveColor: "#CCC"
497
+ },
498
+ shadow: !1,
499
+ itemStyle: {color: "#333333", fontSize: "12px", fontWeight: "bold"},
500
+ itemHoverStyle: {color: "#000"},
501
+ itemHiddenStyle: {color: "#CCC"},
502
+ itemCheckboxStyle: {position: "absolute", width: "13px", height: "13px"},
503
+ symbolPadding: 5,
504
+ verticalAlign: "bottom",
505
+ x: 0,
506
+ y: 0,
507
+ title: {style: {fontWeight: "bold"}}
508
+ },
509
+ loading: {
510
+ labelStyle: {fontWeight: "bold", position: "relative", top: "1em"},
511
+ style: {position: "absolute", backgroundColor: "white", opacity: 0.5, textAlign: "center"}
512
+ },
513
+ tooltip: {
514
+ enabled: !0,
515
+ animation: aa,
516
+ backgroundColor: "rgba(249, 249, 249, .85)",
517
+ borderWidth: 1,
518
+ borderRadius: 3,
519
+ dateTimeLabelFormats: {
520
+ millisecond: "%A, %b %e, %H:%M:%S.%L",
521
+ second: "%A, %b %e, %H:%M:%S",
522
+ minute: "%A, %b %e, %H:%M",
523
+ hour: "%A, %b %e, %H:%M",
524
+ day: "%A, %b %e, %Y",
525
+ week: "Week from %A, %b %e, %Y",
526
+ month: "%B %Y",
527
+ year: "%Y"
528
+ },
529
+ headerFormat: '<span style="font-size: 10px">{point.key}</span><br/>',
530
+ pointFormat: '<span style="color:{series.color}">●</span> {series.name}: <b>{point.y}</b><br/>',
531
+ shadow: !0,
532
+ snap: Jb ? 25 : 10,
533
+ style: {
534
+ color: "#333333", cursor: "default", fontSize: "12px", padding: "8px",
535
+ whiteSpace: "nowrap"
536
+ }
537
+ },
538
+ credits: {
539
+ enabled: !0,
540
+ text: "Highcharts.com",
541
+ href: "http://www.highcharts.com",
542
+ position: {align: "right", x: -10, verticalAlign: "bottom", y: -5},
543
+ style: {cursor: "pointer", color: "#909090", fontSize: "9px"}
544
+ }
545
+ };
546
+ var ba = E.plotOptions, S = ba.line;
547
+ Cb();
548
+ var Tb = /rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]?(?:\.[0-9]+)?)\s*\)/, Ub = /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/, Vb = /rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/, ya = function (a) {
549
+ var b = [], c,
550
+ d;
551
+ (function (a) {
552
+ a && a.stops ? d = Ua(a.stops, function (a) {
553
+ return ya(a[1])
554
+ }) : (c = Tb.exec(a)) ? b = [z(c[1]), z(c[2]), z(c[3]), parseFloat(c[4], 10)] : (c = Ub.exec(a)) ? b = [z(c[1], 16), z(c[2], 16), z(c[3], 16), 1] : (c = Vb.exec(a)) && (b = [z(c[1]), z(c[2]), z(c[3]), 1])
555
+ })(a);
556
+ return {
557
+ get: function (c) {
558
+ var f;
559
+ d ? (f = w(a), f.stops = [].concat(f.stops), p(d, function (a, b) {
560
+ f.stops[b] = [f.stops[b][0], a.get(c)]
561
+ })) : f = b && !isNaN(b[0]) ? c === "rgb" ? "rgb(" + b[0] + "," + b[1] + "," + b[2] + ")" : c === "a" ? b[3] : "rgba(" + b.join(",") + ")" : a;
562
+ return f
563
+ }, brighten: function (a) {
564
+ if (d)p(d,
565
+ function (b) {
566
+ b.brighten(a)
567
+ }); else if (ha(a) && a !== 0) {
568
+ var c;
569
+ for (c = 0; c < 3; c++)b[c] += z(a * 255), b[c] < 0 && (b[c] = 0), b[c] > 255 && (b[c] = 255)
570
+ }
571
+ return this
572
+ }, rgba: b, setOpacity: function (a) {
573
+ b[3] = a;
574
+ return this
575
+ }
576
+ }
577
+ };
578
+ P.prototype = {
579
+ init: function (a, b) {
580
+ this.element = b === "span" ? Y(b) : y.createElementNS(xa, b);
581
+ this.renderer = a
582
+ }, opacity: 1, animate: function (a, b, c) {
583
+ b = m(b, va, !0);
584
+ bb(this);
585
+ if (b) {
586
+ b = w(b, {});
587
+ if (c)b.complete = c;
588
+ kb(this, a, b)
589
+ } else this.attr(a), c && c()
590
+ }, colorGradient: function (a, b, c) {
591
+ var d = this.renderer, e, f, g, h, i, j, k, l, o, n, s = [];
592
+ a.linearGradient ?
593
+ f = "linearGradient" : a.radialGradient && (f = "radialGradient");
594
+ if (f) {
595
+ g = a[f];
596
+ h = d.gradients;
597
+ j = a.stops;
598
+ o = c.radialReference;
599
+ La(g) && (a[f] = g = {x1: g[0], y1: g[1], x2: g[2], y2: g[3], gradientUnits: "userSpaceOnUse"});
600
+ f === "radialGradient" && o && !r(g.gradientUnits) && (g = w(g, {
601
+ cx: o[0] - o[2] / 2 + g.cx * o[2],
602
+ cy: o[1] - o[2] / 2 + g.cy * o[2],
603
+ r: g.r * o[2],
604
+ gradientUnits: "userSpaceOnUse"
605
+ }));
606
+ for (n in g)n !== "id" && s.push(n, g[n]);
607
+ for (n in j)s.push(j[n]);
608
+ s = s.join(",");
609
+ h[s] ? a = h[s].attr("id") : (g.id = a = "highcharts-" + tb++, h[s] = i = d.createElement(f).attr(g).add(d.defs),
610
+ i.stops = [], p(j, function (a) {
611
+ a[1].indexOf("rgba") === 0 ? (e = ya(a[1]), k = e.get("rgb"), l = e.get("a")) : (k = a[1], l = 1);
612
+ a = d.createElement("stop").attr({offset: a[0], "stop-color": k, "stop-opacity": l}).add(i);
613
+ i.stops.push(a)
614
+ }));
615
+ c.setAttribute(b, "url(" + d.url + "#" + a + ")")
616
+ }
617
+ }, attr: function (a, b) {
618
+ var c, d, e = this.element, f, g = this, h;
619
+ typeof a === "string" && b !== t && (c = a, a = {}, a[c] = b);
620
+ if (typeof a === "string")g = (this[a + "Getter"] || this._defaultGetter).call(this, a, e); else {
621
+ for (c in a) {
622
+ d = a[c];
623
+ h = !1;
624
+ this.symbolName && /^(x|y|width|height|r|start|end|innerR|anchorX|anchorY)/.test(c) &&
625
+ (f || (this.symbolAttr(a), f = !0), h = !0);
626
+ if (this.rotation && (c === "x" || c === "y"))this.doTransform = !0;
627
+ h || (this[c + "Setter"] || this._defaultSetter).call(this, d, c, e);
628
+ this.shadows && /^(width|height|visibility|x|y|d|transform|cx|cy|r)$/.test(c) && this.updateShadows(c, d)
629
+ }
630
+ if (this.doTransform)this.updateTransform(), this.doTransform = !1
631
+ }
632
+ return g
633
+ }, updateShadows: function (a, b) {
634
+ for (var c = this.shadows, d = c.length; d--;)c[d].setAttribute(a, a === "height" ? v(b - (c[d].cutHeight || 0), 0) : a === "d" ? this.d : b)
635
+ }, addClass: function (a) {
636
+ var b = this.element,
637
+ c = H(b, "class") || "";
638
+ c.indexOf(a) === -1 && H(b, "class", c + " " + a);
639
+ return this
640
+ }, symbolAttr: function (a) {
641
+ var b = this;
642
+ p("x,y,r,start,end,width,height,innerR,anchorX,anchorY".split(","), function (c) {
643
+ b[c] = m(a[c], b[c])
644
+ });
645
+ b.attr({d: b.renderer.symbols[b.symbolName](b.x, b.y, b.width, b.height, b)})
646
+ }, clip: function (a) {
647
+ return this.attr("clip-path", a ? "url(" + this.renderer.url + "#" + a.id + ")" : Q)
648
+ }, crisp: function (a) {
649
+ var b, c = {}, d, e = a.strokeWidth || this.strokeWidth || this.attr && this.attr("stroke-width") || 0;
650
+ d = u(e) % 2 / 2;
651
+ a.x = T(a.x || this.x ||
652
+ 0) + d;
653
+ a.y = T(a.y || this.y || 0) + d;
654
+ a.width = T((a.width || this.width || 0) - 2 * d);
655
+ a.height = T((a.height || this.height || 0) - 2 * d);
656
+ a.strokeWidth = e;
657
+ for (b in a)this[b] !== a[b] && (this[b] = c[b] = a[b]);
658
+ return c
659
+ }, css: function (a) {
660
+ var b = this.styles, c = {}, d = this.element, e, f, g = "";
661
+ e = !b;
662
+ if (a && a.color)a.fill = a.color;
663
+ if (b)for (f in a)a[f] !== b[f] && (c[f] = a[f], e = !0);
664
+ if (e) {
665
+ e = this.textWidth = a && a.width && d.nodeName.toLowerCase() === "text" && z(a.width);
666
+ b && (a = q(b, c));
667
+ this.styles = a;
668
+ e && (fa || !aa && this.renderer.forExport) && delete a.width;
669
+ if (Aa && !aa)G(this.element,
670
+ a); else {
671
+ b = function (a, b) {
672
+ return "-" + b.toLowerCase()
673
+ };
674
+ for (f in a)g += f.replace(/([A-Z])/g, b) + ":" + a[f] + ";";
675
+ H(d, "style", g)
676
+ }
677
+ e && this.added && this.renderer.buildText(this)
678
+ }
679
+ return this
680
+ }, on: function (a, b) {
681
+ var c = this, d = c.element;
682
+ $a && a === "click" ? (d.ontouchstart = function (a) {
683
+ c.touchEventFired = Date.now();
684
+ a.preventDefault();
685
+ b.call(d, a)
686
+ }, d.onclick = function (a) {
687
+ (wa.indexOf("Android") === -1 || Date.now() - (c.touchEventFired || 0) > 1100) && b.call(d, a)
688
+ }) : d["on" + a] = b;
689
+ return this
690
+ }, setRadialReference: function (a) {
691
+ this.element.radialReference =
692
+ a;
693
+ return this
694
+ }, translate: function (a, b) {
695
+ return this.attr({translateX: a, translateY: b})
696
+ }, invert: function () {
697
+ this.inverted = !0;
698
+ this.updateTransform();
699
+ return this
700
+ }, updateTransform: function () {
701
+ var a = this.translateX || 0, b = this.translateY || 0, c = this.scaleX, d = this.scaleY, e = this.inverted, f = this.rotation, g = this.element;
702
+ e && (a += this.attr("width"), b += this.attr("height"));
703
+ a = ["translate(" + a + "," + b + ")"];
704
+ e ? a.push("rotate(90) scale(-1,1)") : f && a.push("rotate(" + f + " " + (g.getAttribute("x") || 0) + " " + (g.getAttribute("y") || 0) + ")");
705
+ (r(c) || r(d)) && a.push("scale(" + m(c, 1) + " " + m(d, 1) + ")");
706
+ a.length && g.setAttribute("transform", a.join(" "))
707
+ }, toFront: function () {
708
+ var a = this.element;
709
+ a.parentNode.appendChild(a);
710
+ return this
711
+ }, align: function (a, b, c) {
712
+ var d, e, f, g, h = {};
713
+ e = this.renderer;
714
+ f = e.alignedObjects;
715
+ if (a) {
716
+ if (this.alignOptions = a, this.alignByTranslate = b, !c || Fa(c))this.alignTo = d = c || "renderer", ja(f, this), f.push(this), c = null
717
+ } else a = this.alignOptions, b = this.alignByTranslate, d = this.alignTo;
718
+ c = m(c, e[d], e);
719
+ d = a.align;
720
+ e = a.verticalAlign;
721
+ f = (c.x || 0) + (a.x ||
722
+ 0);
723
+ g = (c.y || 0) + (a.y || 0);
724
+ if (d === "right" || d === "center")f += (c.width - (a.width || 0)) / {right: 1, center: 2}[d];
725
+ h[b ? "translateX" : "x"] = u(f);
726
+ if (e === "bottom" || e === "middle")g += (c.height - (a.height || 0)) / ({bottom: 1, middle: 2}[e] || 1);
727
+ h[b ? "translateY" : "y"] = u(g);
728
+ this[this.placed ? "animate" : "attr"](h);
729
+ this.placed = !0;
730
+ this.alignAttr = h;
731
+ return this
732
+ }, getBBox: function () {
733
+ var a = this.bBox, b = this.renderer, c, d, e = this.rotation;
734
+ c = this.element;
735
+ var f = this.styles, g = e * Ca;
736
+ d = this.textStr;
737
+ var h;
738
+ if (d === "" || Ob.test(d))h = "num." + d.toString().length +
739
+ (f ? "|" + f.fontSize + "|" + f.fontFamily : "");
740
+ h && (a = b.cache[h]);
741
+ if (!a) {
742
+ if (c.namespaceURI === xa || b.forExport) {
743
+ try {
744
+ a = c.getBBox ? q({}, c.getBBox()) : {width: c.offsetWidth, height: c.offsetHeight}
745
+ } catch (i) {
746
+ }
747
+ if (!a || a.width < 0)a = {width: 0, height: 0}
748
+ } else a = this.htmlGetBBox();
749
+ if (b.isSVG) {
750
+ c = a.width;
751
+ d = a.height;
752
+ if (Aa && f && f.fontSize === "11px" && d.toPrecision(3) === "16.9")a.height = d = 14;
753
+ if (e)a.width = M(d * ea(g)) + M(c * Z(g)), a.height = M(d * Z(g)) + M(c * ea(g))
754
+ }
755
+ this.bBox = a;
756
+ h && (b.cache[h] = a)
757
+ }
758
+ return a
759
+ }, show: function (a) {
760
+ return a && this.element.namespaceURI ===
761
+ xa ? (this.element.removeAttribute("visibility"), this) : this.attr({visibility: a ? "inherit" : "visible"})
762
+ }, hide: function () {
763
+ return this.attr({visibility: "hidden"})
764
+ }, fadeOut: function (a) {
765
+ var b = this;
766
+ b.animate({opacity: 0}, {
767
+ duration: a || 150, complete: function () {
768
+ b.hide()
769
+ }
770
+ })
771
+ }, add: function (a) {
772
+ var b = this.renderer, c = a || b, d = c.element || b.box, e = this.element, f = this.zIndex, g, h;
773
+ if (a)this.parentGroup = a;
774
+ this.parentInverted = a && a.inverted;
775
+ this.textStr !== void 0 && b.buildText(this);
776
+ if (f)c.handleZ = !0, f = z(f);
777
+ if (c.handleZ) {
778
+ a = d.childNodes;
779
+ for (g = 0; g < a.length; g++)if (b = a[g], c = H(b, "zIndex"), b !== e && (z(c) > f || !r(f) && r(c))) {
780
+ d.insertBefore(e, b);
781
+ h = !0;
782
+ break
783
+ }
784
+ }
785
+ h || d.appendChild(e);
786
+ this.added = !0;
787
+ if (this.onAdd)this.onAdd();
788
+ return this
789
+ }, safeRemoveChild: function (a) {
790
+ var b = a.parentNode;
791
+ b && b.removeChild(a)
792
+ }, destroy: function () {
793
+ var a = this, b = a.element || {}, c = a.shadows, d = a.renderer.isSVG && b.nodeName === "SPAN" && a.parentGroup, e, f;
794
+ b.onclick = b.onmouseout = b.onmouseover = b.onmousemove = b.point = null;
795
+ bb(a);
796
+ if (a.clipPath)a.clipPath = a.clipPath.destroy();
797
+ if (a.stops) {
798
+ for (f =
799
+ 0; f < a.stops.length; f++)a.stops[f] = a.stops[f].destroy();
800
+ a.stops = null
801
+ }
802
+ a.safeRemoveChild(b);
803
+ for (c && p(c, function (b) {
804
+ a.safeRemoveChild(b)
805
+ }); d && d.div.childNodes.length === 0;)b = d.parentGroup, a.safeRemoveChild(d.div), delete d.div, d = b;
806
+ a.alignTo && ja(a.renderer.alignedObjects, a);
807
+ for (e in a)delete a[e];
808
+ return null
809
+ }, shadow: function (a, b, c) {
810
+ var d = [], e, f, g = this.element, h, i, j, k;
811
+ if (a) {
812
+ i = m(a.width, 3);
813
+ j = (a.opacity || 0.15) / i;
814
+ k = this.parentInverted ? "(-1,-1)" : "(" + m(a.offsetX, 1) + ", " + m(a.offsetY, 1) + ")";
815
+ for (e = 1; e <= i; e++) {
816
+ f =
817
+ g.cloneNode(0);
818
+ h = i * 2 + 1 - 2 * e;
819
+ H(f, {
820
+ isShadow: "true",
821
+ stroke: a.color || "black",
822
+ "stroke-opacity": j * e,
823
+ "stroke-width": h,
824
+ transform: "translate" + k,
825
+ fill: Q
826
+ });
827
+ if (c)H(f, "height", v(H(f, "height") - h, 0)), f.cutHeight = h;
828
+ b ? b.element.appendChild(f) : g.parentNode.insertBefore(f, g);
829
+ d.push(f)
830
+ }
831
+ this.shadows = d
832
+ }
833
+ return this
834
+ }, xGetter: function (a) {
835
+ this.element.nodeName === "circle" && (a = {x: "cx", y: "cy"}[a] || a);
836
+ return this._defaultGetter(a)
837
+ }, _defaultGetter: function (a) {
838
+ a = m(this[a], this.element ? this.element.getAttribute(a) : null, 0);
839
+ /^[0-9\.]+$/.test(a) &&
840
+ (a = parseFloat(a));
841
+ return a
842
+ }, dSetter: function (a, b, c) {
843
+ a && a.join && (a = a.join(" "));
844
+ /(NaN| {2}|^$)/.test(a) && (a = "M 0 0");
845
+ c.setAttribute(b, a);
846
+ this[b] = a
847
+ }, dashstyleSetter: function (a) {
848
+ var b;
849
+ if (a = a && a.toLowerCase()) {
850
+ a = a.replace("shortdashdotdot", "3,1,1,1,1,1,").replace("shortdashdot", "3,1,1,1").replace("shortdot", "1,1,").replace("shortdash", "3,1,").replace("longdash", "8,3,").replace(/dot/g, "1,3,").replace("dash", "4,3,").replace(/,$/, "").split(",");
851
+ for (b = a.length; b--;)a[b] = z(a[b]) * this.element.getAttribute("stroke-width");
852
+ a = a.join(",");
853
+ this.element.setAttribute("stroke-dasharray", a)
854
+ }
855
+ }, alignSetter: function (a) {
856
+ this.element.setAttribute("text-anchor", {left: "start", center: "middle", right: "end"}[a])
857
+ }, opacitySetter: function (a, b, c) {
858
+ this[b] = a;
859
+ c.setAttribute(b, a)
860
+ }, "stroke-widthSetter": function (a, b, c) {
861
+ a === 0 && (a = 1.0E-5);
862
+ this.strokeWidth = a;
863
+ c.setAttribute(b, a)
864
+ }, titleSetter: function (a) {
865
+ var b = this.element.getElementsByTagName("title")[0];
866
+ b || (b = y.createElementNS(xa, "title"), this.element.appendChild(b));
867
+ b.textContent = a
868
+ }, textSetter: function (a) {
869
+ if (a !==
870
+ this.textStr)delete this.bBox, this.textStr = a, this.added && this.renderer.buildText(this)
871
+ }, fillSetter: function (a, b, c) {
872
+ typeof a === "string" ? c.setAttribute(b, a) : a && this.colorGradient(a, b, c)
873
+ }, zIndexSetter: function (a, b, c) {
874
+ c.setAttribute(b, a);
875
+ this[b] = a
876
+ }, _defaultSetter: function (a, b, c) {
877
+ c.setAttribute(b, a)
878
+ }
879
+ };
880
+ P.prototype.yGetter = P.prototype.xGetter;
881
+ P.prototype.translateXSetter = P.prototype.translateYSetter = P.prototype.rotationSetter = P.prototype.verticalAlignSetter = P.prototype.scaleXSetter = P.prototype.scaleYSetter =
882
+ function (a, b) {
883
+ this[b] = a;
884
+ this.doTransform = !0
885
+ };
886
+ P.prototype.strokeSetter = P.prototype.fillSetter;
887
+ var ta = function () {
888
+ this.init.apply(this, arguments)
889
+ };
890
+ ta.prototype = {
891
+ Element: P, init: function (a, b, c, d, e) {
892
+ var f = location, g, d = this.createElement("svg").attr({version: "1.1"}).css(this.getStyle(d));
893
+ g = d.element;
894
+ a.appendChild(g);
895
+ a.innerHTML.indexOf("xmlns") === -1 && H(g, "xmlns", xa);
896
+ this.isSVG = !0;
897
+ this.box = g;
898
+ this.boxWrapper = d;
899
+ this.alignedObjects = [];
900
+ this.url = (Ta || ib) && y.getElementsByTagName("base").length ? f.href.replace(/#.*?$/,
901
+ "").replace(/([\('\)])/g, "\\$1").replace(/ /g, "%20") : "";
902
+ this.createElement("desc").add().element.appendChild(y.createTextNode("Created with Highcharts 4.0.1"));
903
+ this.defs = this.createElement("defs").add();
904
+ this.forExport = e;
905
+ this.gradients = {};
906
+ this.cache = {};
907
+ this.setSize(b, c, !1);
908
+ var h;
909
+ if (Ta && a.getBoundingClientRect)this.subPixelFix = b = function () {
910
+ G(a, {left: 0, top: 0});
911
+ h = a.getBoundingClientRect();
912
+ G(a, {left: Ka(h.left) - h.left + "px", top: Ka(h.top) - h.top + "px"})
913
+ }, b(), K(I, "resize", b)
914
+ }, getStyle: function (a) {
915
+ return this.style =
916
+ q({
917
+ fontFamily: '"Lucida Grande", "Lucida Sans Unicode", Arial, Helvetica, sans-serif',
918
+ fontSize: "12px"
919
+ }, a)
920
+ }, isHidden: function () {
921
+ return !this.boxWrapper.getBBox().width
922
+ }, destroy: function () {
923
+ var a = this.defs;
924
+ this.box = null;
925
+ this.boxWrapper = this.boxWrapper.destroy();
926
+ Oa(this.gradients || {});
927
+ this.gradients = null;
928
+ if (a)this.defs = a.destroy();
929
+ this.subPixelFix && W(I, "resize", this.subPixelFix);
930
+ return this.alignedObjects = null
931
+ }, createElement: function (a) {
932
+ var b = new this.Element;
933
+ b.init(this, a);
934
+ return b
935
+ }, draw: function () {
936
+ },
937
+ buildText: function (a) {
938
+ for (var b = a.element, c = this, d = c.forExport, e = m(a.textStr, "").toString(), f = e.indexOf("<") !== -1, g = b.childNodes, h, i, j = H(b, "x"), k = a.styles, l = a.textWidth, o = k && k.lineHeight, n = g.length, s = function (a) {
939
+ return o ? z(o) : c.fontMetrics(/(px|em)$/.test(a && a.style.fontSize) ? a.style.fontSize : k && k.fontSize || c.style.fontSize || 12).h
940
+ }; n--;)b.removeChild(g[n]);
941
+ !f && e.indexOf(" ") === -1 ? b.appendChild(y.createTextNode(e)) : (h = /<.*style="([^"]+)".*>/, i = /<.*href="(http[^"]+)".*>/, l && !a.added && this.box.appendChild(b),
942
+ e = f ? e.replace(/<(b|strong)>/g, '<span style="font-weight:bold">').replace(/<(i|em)>/g, '<span style="font-style:italic">').replace(/<a/g, "<span").replace(/<\/(b|strong|i|em|a)>/g, "</span>").split(/<br.*?>/g) : [e], e[e.length - 1] === "" && e.pop(), p(e, function (e, f) {
943
+ var g, n = 0, e = e.replace(/<span/g, "|||<span").replace(/<\/span>/g, "</span>|||");
944
+ g = e.split("|||");
945
+ p(g, function (e) {
946
+ if (e !== "" || g.length === 1) {
947
+ var o = {}, m = y.createElementNS(xa, "tspan"), p;
948
+ h.test(e) && (p = e.match(h)[1].replace(/(;| |^)color([ :])/, "$1fill$2"),
949
+ H(m, "style", p));
950
+ i.test(e) && !d && (H(m, "onclick", 'location.href="' + e.match(i)[1] + '"'), G(m, {cursor: "pointer"}));
951
+ e = (e.replace(/<(.|\n)*?>/g, "") || " ").replace(/&lt;/g, "<").replace(/&gt;/g, ">");
952
+ if (e !== " ") {
953
+ m.appendChild(y.createTextNode(e));
954
+ if (n)o.dx = 0; else if (f && j !== null)o.x = j;
955
+ H(m, o);
956
+ !n && f && (!aa && d && G(m, {display: "block"}), H(m, "dy", s(m), ib && m.offsetHeight));
957
+ b.appendChild(m);
958
+ n++;
959
+ if (l)for (var e = e.replace(/([^\^])-/g, "$1- ").split(" "), o = e.length > 1 && k.whiteSpace !== "nowrap", $, r, B = a._clipHeight, q = [], v = s(), t =
960
+ 1; o && (e.length || q.length);)delete a.bBox, $ = a.getBBox(), r = $.width, !aa && c.forExport && (r = c.measureSpanWidth(m.firstChild.data, a.styles)), $ = r > l, !$ || e.length === 1 ? (e = q, q = [], e.length && (t++, B && t * v > B ? (e = ["..."], a.attr("title", a.textStr)) : (m = y.createElementNS(xa, "tspan"), H(m, {
961
+ dy: v,
962
+ x: j
963
+ }), p && H(m, "style", p), b.appendChild(m), r > l && (l = r)))) : (m.removeChild(m.firstChild), q.unshift(e.pop())), e.length && m.appendChild(y.createTextNode(e.join(" ").replace(/- /g, "-")))
964
+ }
965
+ }
966
+ })
967
+ }))
968
+ }, button: function (a, b, c, d, e, f, g, h, i) {
969
+ var j = this.label(a,
970
+ b, c, i, null, null, null, null, "button"), k = 0, l, o, n, s, m, p, a = {
971
+ x1: 0,
972
+ y1: 0,
973
+ x2: 0,
974
+ y2: 1
975
+ }, e = w({
976
+ "stroke-width": 1,
977
+ stroke: "#CCCCCC",
978
+ fill: {linearGradient: a, stops: [[0, "#FEFEFE"], [1, "#F6F6F6"]]},
979
+ r: 2,
980
+ padding: 5,
981
+ style: {color: "black"}
982
+ }, e);
983
+ n = e.style;
984
+ delete e.style;
985
+ f = w(e, {stroke: "#68A", fill: {linearGradient: a, stops: [[0, "#FFF"], [1, "#ACF"]]}}, f);
986
+ s = f.style;
987
+ delete f.style;
988
+ g = w(e, {stroke: "#68A", fill: {linearGradient: a, stops: [[0, "#9BD"], [1, "#CDF"]]}}, g);
989
+ m = g.style;
990
+ delete g.style;
991
+ h = w(e, {style: {color: "#CCC"}}, h);
992
+ p = h.style;
993
+ delete h.style;
994
+ K(j.element, Aa ? "mouseover" : "mouseenter", function () {
995
+ k !== 3 && j.attr(f).css(s)
996
+ });
997
+ K(j.element, Aa ? "mouseout" : "mouseleave", function () {
998
+ k !== 3 && (l = [e, f, g][k], o = [n, s, m][k], j.attr(l).css(o))
999
+ });
1000
+ j.setState = function (a) {
1001
+ (j.state = k = a) ? a === 2 ? j.attr(g).css(m) : a === 3 && j.attr(h).css(p) : j.attr(e).css(n)
1002
+ };
1003
+ return j.on("click", function () {
1004
+ k !== 3 && d.call(j)
1005
+ }).attr(e).css(q({cursor: "default"}, n))
1006
+ }, crispLine: function (a, b) {
1007
+ a[1] === a[4] && (a[1] = a[4] = u(a[1]) - b % 2 / 2);
1008
+ a[2] === a[5] && (a[2] = a[5] = u(a[2]) + b % 2 / 2);
1009
+ return a
1010
+ }, path: function (a) {
1011
+ var b =
1012
+ {fill: Q};
1013
+ La(a) ? b.d = a : ca(a) && q(b, a);
1014
+ return this.createElement("path").attr(b)
1015
+ }, circle: function (a, b, c) {
1016
+ a = ca(a) ? a : {x: a, y: b, r: c};
1017
+ b = this.createElement("circle");
1018
+ b.xSetter = function (a) {
1019
+ this.element.setAttribute("cx", a)
1020
+ };
1021
+ b.ySetter = function (a) {
1022
+ this.element.setAttribute("cy", a)
1023
+ };
1024
+ return b.attr(a)
1025
+ }, arc: function (a, b, c, d, e, f) {
1026
+ if (ca(a))b = a.y, c = a.r, d = a.innerR, e = a.start, f = a.end, a = a.x;
1027
+ a = this.symbol("arc", a || 0, b || 0, c || 0, c || 0, {innerR: d || 0, start: e || 0, end: f || 0});
1028
+ a.r = c;
1029
+ return a
1030
+ }, rect: function (a, b, c, d, e, f) {
1031
+ var e = ca(a) ? a.r :
1032
+ e, g = this.createElement("rect"), a = ca(a) ? a : a === t ? {} : {
1033
+ x: a,
1034
+ y: b,
1035
+ width: v(c, 0),
1036
+ height: v(d, 0)
1037
+ };
1038
+ if (f !== t)a.strokeWidth = f, a = g.crisp(a);
1039
+ if (e)a.r = e;
1040
+ g.rSetter = function (a) {
1041
+ H(this.element, {rx: a, ry: a})
1042
+ };
1043
+ return g.attr(a)
1044
+ }, setSize: function (a, b, c) {
1045
+ var d = this.alignedObjects, e = d.length;
1046
+ this.width = a;
1047
+ this.height = b;
1048
+ for (this.boxWrapper[m(c, !0) ? "animate" : "attr"]({width: a, height: b}); e--;)d[e].align()
1049
+ }, g: function (a) {
1050
+ var b = this.createElement("g");
1051
+ return r(a) ? b.attr({"class": "highcharts-" + a}) : b
1052
+ }, image: function (a, b, c, d, e) {
1053
+ var f =
1054
+ {preserveAspectRatio: Q};
1055
+ arguments.length > 1 && q(f, {x: b, y: c, width: d, height: e});
1056
+ f = this.createElement("image").attr(f);
1057
+ f.element.setAttributeNS ? f.element.setAttributeNS("http://www.w3.org/1999/xlink", "href", a) : f.element.setAttribute("hc-svg-href", a);
1058
+ return f
1059
+ }, symbol: function (a, b, c, d, e, f) {
1060
+ var g, h = this.symbols[a], h = h && h(u(b), u(c), d, e, f), i = /^url\((.*?)\)$/, j, k;
1061
+ if (h)g = this.path(h), q(g, {
1062
+ symbolName: a,
1063
+ x: b,
1064
+ y: c,
1065
+ width: d,
1066
+ height: e
1067
+ }), f && q(g, f); else if (i.test(a))k = function (a, b) {
1068
+ a.element && (a.attr({width: b[0], height: b[1]}),
1069
+ a.alignByTranslate || a.translate(u((d - b[0]) / 2), u((e - b[1]) / 2)))
1070
+ }, j = a.match(i)[1], a = Kb[j], g = this.image(j).attr({
1071
+ x: b,
1072
+ y: c
1073
+ }), g.isImg = !0, a ? k(g, a) : (g.attr({width: 0, height: 0}), Y("img", {
1074
+ onload: function () {
1075
+ k(g, Kb[j] = [this.width, this.height])
1076
+ }, src: j
1077
+ }));
1078
+ return g
1079
+ }, symbols: {
1080
+ circle: function (a, b, c, d) {
1081
+ var e = 0.166 * c;
1082
+ return ["M", a + c / 2, b, "C", a + c + e, b, a + c + e, b + d, a + c / 2, b + d, "C", a - e, b + d, a - e, b, a + c / 2, b, "Z"]
1083
+ }, square: function (a, b, c, d) {
1084
+ return ["M", a, b, "L", a + c, b, a + c, b + d, a, b + d, "Z"]
1085
+ }, triangle: function (a, b, c, d) {
1086
+ return ["M", a + c / 2, b, "L",
1087
+ a + c, b + d, a, b + d, "Z"]
1088
+ }, "triangle-down": function (a, b, c, d) {
1089
+ return ["M", a, b, "L", a + c, b, a + c / 2, b + d, "Z"]
1090
+ }, diamond: function (a, b, c, d) {
1091
+ return ["M", a + c / 2, b, "L", a + c, b + d / 2, a + c / 2, b + d, a, b + d / 2, "Z"]
1092
+ }, arc: function (a, b, c, d, e) {
1093
+ var f = e.start, c = e.r || c || d, g = e.end - 0.001, d = e.innerR, h = e.open, i = Z(f), j = ea(f), k = Z(g), g = ea(g), e = e.end - f < ma ? 0 : 1;
1094
+ return ["M", a + c * i, b + c * j, "A", c, c, 0, e, 1, a + c * k, b + c * g, h ? "M" : "L", a + d * k, b + d * g, "A", d, d, 0, e, 0, a + d * i, b + d * j, h ? "" : "Z"]
1095
+ }, callout: function (a, b, c, d, e) {
1096
+ var f = C(e && e.r || 0, c, d), g = f + 6, h = e && e.anchorX, i = e && e.anchorY,
1097
+ e = u(e.strokeWidth || 0) % 2 / 2;
1098
+ a += e;
1099
+ b += e;
1100
+ e = ["M", a + f, b, "L", a + c - f, b, "C", a + c, b, a + c, b, a + c, b + f, "L", a + c, b + d - f, "C", a + c, b + d, a + c, b + d, a + c - f, b + d, "L", a + f, b + d, "C", a, b + d, a, b + d, a, b + d - f, "L", a, b + f, "C", a, b, a, b, a + f, b];
1101
+ h && h > c && i > b + g && i < b + d - g ? e.splice(13, 3, "L", a + c, i - 6, a + c + 6, i, a + c, i + 6, a + c, b + d - f) : h && h < 0 && i > b + g && i < b + d - g ? e.splice(33, 3, "L", a, i + 6, a - 6, i, a, i - 6, a, b + f) : i && i > d && h > a + g && h < a + c - g ? e.splice(23, 3, "L", h + 6, b + d, h, b + d + 6, h - 6, b + d, a + f, b + d) : i && i < 0 && h > a + g && h < a + c - g && e.splice(3, 3, "L", h - 6, b, h, b - 6, h + 6, b, c - f, b);
1102
+ return e
1103
+ }
1104
+ }, clipRect: function (a,
1105
+ b, c, d) {
1106
+ var e = "highcharts-" + tb++, f = this.createElement("clipPath").attr({id: e}).add(this.defs), a = this.rect(a, b, c, d, 0).add(f);
1107
+ a.id = e;
1108
+ a.clipPath = f;
1109
+ return a
1110
+ }, text: function (a, b, c, d) {
1111
+ var e = fa || !aa && this.forExport, f = {};
1112
+ if (d && !this.forExport)return this.html(a, b, c);
1113
+ f.x = Math.round(b || 0);
1114
+ if (c)f.y = Math.round(c);
1115
+ if (a || a === 0)f.text = a;
1116
+ a = this.createElement("text").attr(f);
1117
+ e && a.css({position: "absolute"});
1118
+ if (!d)a.xSetter = function (a, b, c) {
1119
+ var d = c.childNodes, e, f;
1120
+ for (f = 1; f < d.length; f++)e = d[f], e.getAttribute("x") === c.getAttribute("x") &&
1121
+ e.setAttribute("x", a);
1122
+ c.setAttribute(b, a)
1123
+ };
1124
+ return a
1125
+ }, fontMetrics: function (a) {
1126
+ var a = a || this.style.fontSize, a = /px/.test(a) ? z(a) : /em/.test(a) ? parseFloat(a) * 12 : 12, a = a < 24 ? a + 4 : u(a * 1.2), b = u(a * 0.8);
1127
+ return {h: a, b: b}
1128
+ }, label: function (a, b, c, d, e, f, g, h, i) {
1129
+ function j() {
1130
+ var a, b;
1131
+ a = s.element.style;
1132
+ J = (Va === void 0 || wb === void 0 || n.styles.textAlign) && s.textStr && s.getBBox();
1133
+ n.width = (Va || J.width || 0) + 2 * x + v;
1134
+ n.height = (wb || J.height || 0) + 2 * x;
1135
+ na = x + o.fontMetrics(a && a.fontSize).b;
1136
+ if (z) {
1137
+ if (!m)a = u(-L * x), b = h ? -na : 0, n.box = m = d ? o.symbol(d,
1138
+ a, b, n.width, n.height, B) : o.rect(a, b, n.width, n.height, 0, B[Pb]), m.attr("fill", Q).add(n);
1139
+ m.isImg || m.attr(q({width: u(n.width), height: u(n.height)}, B));
1140
+ B = null
1141
+ }
1142
+ }
1143
+
1144
+ function k() {
1145
+ var a = n.styles, a = a && a.textAlign, b = v + x * (1 - L), c;
1146
+ c = h ? 0 : na;
1147
+ if (r(Va) && J && (a === "center" || a === "right"))b += {center: 0.5, right: 1}[a] * (Va - J.width);
1148
+ if (b !== s.x || c !== s.y)s.attr("x", b), c !== t && s.attr("y", c);
1149
+ s.x = b;
1150
+ s.y = c
1151
+ }
1152
+
1153
+ function l(a, b) {
1154
+ m ? m.attr(a, b) : B[a] = b
1155
+ }
1156
+
1157
+ var o = this, n = o.g(i), s = o.text("", 0, 0, g).attr({zIndex: 1}), m, J, L = 0, x = 3, v = 0, Va, wb, xb, yb, y = 0, B = {}, na,
1158
+ z;
1159
+ n.onAdd = function () {
1160
+ s.add(n);
1161
+ n.attr({text: a || "", x: b, y: c});
1162
+ m && r(e) && n.attr({anchorX: e, anchorY: f})
1163
+ };
1164
+ n.widthSetter = function (a) {
1165
+ Va = a
1166
+ };
1167
+ n.heightSetter = function (a) {
1168
+ wb = a
1169
+ };
1170
+ n.paddingSetter = function (a) {
1171
+ r(a) && a !== x && (x = a, k())
1172
+ };
1173
+ n.paddingLeftSetter = function (a) {
1174
+ r(a) && a !== v && (v = a, k())
1175
+ };
1176
+ n.alignSetter = function (a) {
1177
+ L = {left: 0, center: 0.5, right: 1}[a]
1178
+ };
1179
+ n.textSetter = function (a) {
1180
+ a !== t && s.textSetter(a);
1181
+ j();
1182
+ k()
1183
+ };
1184
+ n["stroke-widthSetter"] = function (a, b) {
1185
+ a && (z = !0);
1186
+ y = a % 2 / 2;
1187
+ l(b, a)
1188
+ };
1189
+ n.strokeSetter = n.fillSetter = n.rSetter = function (a,
1190
+ b) {
1191
+ b === "fill" && a && (z = !0);
1192
+ l(b, a)
1193
+ };
1194
+ n.anchorXSetter = function (a, b) {
1195
+ e = a;
1196
+ l(b, a + y - xb)
1197
+ };
1198
+ n.anchorYSetter = function (a, b) {
1199
+ f = a;
1200
+ l(b, a - yb)
1201
+ };
1202
+ n.xSetter = function (a) {
1203
+ n.x = a;
1204
+ L && (a -= L * ((Va || J.width) + x));
1205
+ xb = u(a);
1206
+ n.attr("translateX", xb)
1207
+ };
1208
+ n.ySetter = function (a) {
1209
+ yb = n.y = u(a);
1210
+ n.attr("translateY", yb)
1211
+ };
1212
+ var A = n.css;
1213
+ return q(n, {
1214
+ css: function (a) {
1215
+ if (a) {
1216
+ var b = {}, a = w(a);
1217
+ p("fontSize,fontWeight,fontFamily,color,lineHeight,width,textDecoration,textShadow".split(","), function (c) {
1218
+ a[c] !== t && (b[c] = a[c], delete a[c])
1219
+ });
1220
+ s.css(b)
1221
+ }
1222
+ return A.call(n,
1223
+ a)
1224
+ }, getBBox: function () {
1225
+ return {width: J.width + 2 * x, height: J.height + 2 * x, x: J.x - x, y: J.y - x}
1226
+ }, shadow: function (a) {
1227
+ m && m.shadow(a);
1228
+ return n
1229
+ }, destroy: function () {
1230
+ W(n.element, "mouseenter");
1231
+ W(n.element, "mouseleave");
1232
+ s && (s = s.destroy());
1233
+ m && (m = m.destroy());
1234
+ P.prototype.destroy.call(n);
1235
+ n = o = j = k = l = null
1236
+ }
1237
+ })
1238
+ }
1239
+ };
1240
+ Za = ta;
1241
+ q(P.prototype, {
1242
+ htmlCss: function (a) {
1243
+ var b = this.element;
1244
+ if (b = a && b.tagName === "SPAN" && a.width)delete a.width, this.textWidth = b, this.updateTransform();
1245
+ this.styles = q(this.styles, a);
1246
+ G(this.element, a);
1247
+ return this
1248
+ }, htmlGetBBox: function () {
1249
+ var a =
1250
+ this.element, b = this.bBox;
1251
+ if (!b) {
1252
+ if (a.nodeName === "text")a.style.position = "absolute";
1253
+ b = this.bBox = {x: a.offsetLeft, y: a.offsetTop, width: a.offsetWidth, height: a.offsetHeight}
1254
+ }
1255
+ return b
1256
+ }, htmlUpdateTransform: function () {
1257
+ if (this.added) {
1258
+ var a = this.renderer, b = this.element, c = this.translateX || 0, d = this.translateY || 0, e = this.x || 0, f = this.y || 0, g = this.textAlign || "left", h = {
1259
+ left: 0,
1260
+ center: 0.5,
1261
+ right: 1
1262
+ }[g], i = this.shadows;
1263
+ G(b, {marginLeft: c, marginTop: d});
1264
+ i && p(i, function (a) {
1265
+ G(a, {marginLeft: c + 1, marginTop: d + 1})
1266
+ });
1267
+ this.inverted &&
1268
+ p(b.childNodes, function (c) {
1269
+ a.invertChild(c, b)
1270
+ });
1271
+ if (b.tagName === "SPAN") {
1272
+ var j = this.rotation, k, l = z(this.textWidth), o = [j, g, b.innerHTML, this.textWidth].join(",");
1273
+ if (o !== this.cTT) {
1274
+ k = a.fontMetrics(b.style.fontSize).b;
1275
+ r(j) && this.setSpanRotation(j, h, k);
1276
+ i = m(this.elemWidth, b.offsetWidth);
1277
+ if (i > l && /[ \-]/.test(b.textContent || b.innerText))G(b, {
1278
+ width: l + "px",
1279
+ display: "block",
1280
+ whiteSpace: "normal"
1281
+ }), i = l;
1282
+ this.getSpanCorrection(i, k, h, j, g)
1283
+ }
1284
+ G(b, {left: e + (this.xCorr || 0) + "px", top: f + (this.yCorr || 0) + "px"});
1285
+ if (ib)k = b.offsetHeight;
1286
+ this.cTT = o
1287
+ }
1288
+ } else this.alignOnAdd = !0
1289
+ }, setSpanRotation: function (a, b, c) {
1290
+ var d = {}, e = Aa ? "-ms-transform" : ib ? "-webkit-transform" : Ta ? "MozTransform" : Ib ? "-o-transform" : "";
1291
+ d[e] = d.transform = "rotate(" + a + "deg)";
1292
+ d[e + (Ta ? "Origin" : "-origin")] = d.transformOrigin = b * 100 + "% " + c + "px";
1293
+ G(this.element, d)
1294
+ }, getSpanCorrection: function (a, b, c) {
1295
+ this.xCorr = -a * c;
1296
+ this.yCorr = -b
1297
+ }
1298
+ });
1299
+ q(ta.prototype, {
1300
+ html: function (a, b, c) {
1301
+ var d = this.createElement("span"), e = d.element, f = d.renderer;
1302
+ d.textSetter = function (a) {
1303
+ a !== e.innerHTML && delete this.bBox;
1304
+ e.innerHTML = this.textStr = a
1305
+ };
1306
+ d.xSetter = d.ySetter = d.alignSetter = d.rotationSetter = function (a, b) {
1307
+ b === "align" && (b = "textAlign");
1308
+ d[b] = a;
1309
+ d.htmlUpdateTransform()
1310
+ };
1311
+ d.attr({text: a, x: u(b), y: u(c)}).css({
1312
+ position: "absolute",
1313
+ whiteSpace: "nowrap",
1314
+ fontFamily: this.style.fontFamily,
1315
+ fontSize: this.style.fontSize
1316
+ });
1317
+ d.css = d.htmlCss;
1318
+ if (f.isSVG)d.add = function (a) {
1319
+ var b, c = f.box.parentNode, j = [];
1320
+ if (this.parentGroup = a) {
1321
+ if (b = a.div, !b) {
1322
+ for (; a;)j.push(a), a = a.parentGroup;
1323
+ p(j.reverse(), function (a) {
1324
+ var d;
1325
+ b = a.div = a.div || Y(Ja, {
1326
+ className: H(a.element,
1327
+ "class")
1328
+ }, {
1329
+ position: "absolute",
1330
+ left: (a.translateX || 0) + "px",
1331
+ top: (a.translateY || 0) + "px"
1332
+ }, b || c);
1333
+ d = b.style;
1334
+ q(a, {
1335
+ translateXSetter: function (b, c) {
1336
+ d.left = b + "px";
1337
+ a[c] = b;
1338
+ a.doTransform = !0
1339
+ }, translateYSetter: function (b, c) {
1340
+ d.top = b + "px";
1341
+ a[c] = b;
1342
+ a.doTransform = !0
1343
+ }, visibilitySetter: function (a, b) {
1344
+ d[b] = a
1345
+ }
1346
+ })
1347
+ })
1348
+ }
1349
+ } else b = c;
1350
+ b.appendChild(e);
1351
+ d.added = !0;
1352
+ d.alignOnAdd && d.htmlUpdateTransform();
1353
+ return d
1354
+ };
1355
+ return d
1356
+ }
1357
+ });
1358
+ var X;
1359
+ if (!aa && !fa) {
1360
+ R.VMLElement = X = {
1361
+ init: function (a, b) {
1362
+ var c = ["<", b, ' filled="f" stroked="f"'], d = ["position: ", "absolute",
1363
+ ";"], e = b === Ja;
1364
+ (b === "shape" || e) && d.push("left:0;top:0;width:1px;height:1px;");
1365
+ d.push("visibility: ", e ? "hidden" : "visible");
1366
+ c.push(' style="', d.join(""), '"/>');
1367
+ if (b)c = e || b === "span" || b === "img" ? c.join("") : a.prepVML(c), this.element = Y(c);
1368
+ this.renderer = a
1369
+ }, add: function (a) {
1370
+ var b = this.renderer, c = this.element, d = b.box, d = a ? a.element || a : d;
1371
+ a && a.inverted && b.invertChild(c, d);
1372
+ d.appendChild(c);
1373
+ this.added = !0;
1374
+ this.alignOnAdd && !this.deferUpdateTransform && this.updateTransform();
1375
+ if (this.onAdd)this.onAdd();
1376
+ return this
1377
+ }, updateTransform: P.prototype.htmlUpdateTransform,
1378
+ setSpanRotation: function () {
1379
+ var a = this.rotation, b = Z(a * Ca), c = ea(a * Ca);
1380
+ G(this.element, {filter: a ? ["progid:DXImageTransform.Microsoft.Matrix(M11=", b, ", M12=", -c, ", M21=", c, ", M22=", b, ", sizingMethod='auto expand')"].join("") : Q})
1381
+ }, getSpanCorrection: function (a, b, c, d, e) {
1382
+ var f = d ? Z(d * Ca) : 1, g = d ? ea(d * Ca) : 0, h = m(this.elemHeight, this.element.offsetHeight), i;
1383
+ this.xCorr = f < 0 && -a;
1384
+ this.yCorr = g < 0 && -h;
1385
+ i = f * g < 0;
1386
+ this.xCorr += g * b * (i ? 1 - c : c);
1387
+ this.yCorr -= f * b * (d ? i ? c : 1 - c : 1);
1388
+ e && e !== "left" && (this.xCorr -= a * c * (f < 0 ? -1 : 1), d && (this.yCorr -=
1389
+ h * c * (g < 0 ? -1 : 1)), G(this.element, {textAlign: e}))
1390
+ }, pathToVML: function (a) {
1391
+ for (var b = a.length, c = []; b--;)if (ha(a[b]))c[b] = u(a[b] * 10) - 5; else if (a[b] === "Z")c[b] = "x"; else if (c[b] = a[b], a.isArc && (a[b] === "wa" || a[b] === "at"))c[b + 5] === c[b + 7] && (c[b + 7] += a[b + 7] > a[b + 5] ? 1 : -1), c[b + 6] === c[b + 8] && (c[b + 8] += a[b + 8] > a[b + 6] ? 1 : -1);
1392
+ return c.join(" ") || "x"
1393
+ }, clip: function (a) {
1394
+ var b = this, c;
1395
+ a ? (c = a.members, ja(c, b), c.push(b), b.destroyClip = function () {
1396
+ ja(c, b)
1397
+ }, a = a.getCSS(b)) : (b.destroyClip && b.destroyClip(), a = {clip: hb ? "inherit" : "rect(auto)"});
1398
+ return b.css(a)
1399
+ }, css: P.prototype.htmlCss, safeRemoveChild: function (a) {
1400
+ a.parentNode && Pa(a)
1401
+ }, destroy: function () {
1402
+ this.destroyClip && this.destroyClip();
1403
+ return P.prototype.destroy.apply(this)
1404
+ }, on: function (a, b) {
1405
+ this.element["on" + a] = function () {
1406
+ var a = I.event;
1407
+ a.target = a.srcElement;
1408
+ b(a)
1409
+ };
1410
+ return this
1411
+ }, cutOffPath: function (a, b) {
1412
+ var c, a = a.split(/[ ,]/);
1413
+ c = a.length;
1414
+ if (c === 9 || c === 11)a[c - 4] = a[c - 2] = z(a[c - 2]) - 10 * b;
1415
+ return a.join(" ")
1416
+ }, shadow: function (a, b, c) {
1417
+ var d = [], e, f = this.element, g = this.renderer, h, i = f.style, j, k = f.path,
1418
+ l, o, n, s;
1419
+ k && typeof k.value !== "string" && (k = "x");
1420
+ o = k;
1421
+ if (a) {
1422
+ n = m(a.width, 3);
1423
+ s = (a.opacity || 0.15) / n;
1424
+ for (e = 1; e <= 3; e++) {
1425
+ l = n * 2 + 1 - 2 * e;
1426
+ c && (o = this.cutOffPath(k.value, l + 0.5));
1427
+ j = ['<shape isShadow="true" strokeweight="', l, '" filled="false" path="', o, '" coordsize="10 10" style="', f.style.cssText, '" />'];
1428
+ h = Y(g.prepVML(j), null, {left: z(i.left) + m(a.offsetX, 1), top: z(i.top) + m(a.offsetY, 1)});
1429
+ if (c)h.cutOff = l + 1;
1430
+ j = ['<stroke color="', a.color || "black", '" opacity="', s * e, '"/>'];
1431
+ Y(g.prepVML(j), null, null, h);
1432
+ b ? b.element.appendChild(h) :
1433
+ f.parentNode.insertBefore(h, f);
1434
+ d.push(h)
1435
+ }
1436
+ this.shadows = d
1437
+ }
1438
+ return this
1439
+ }, updateShadows: sa, setAttr: function (a, b) {
1440
+ hb ? this.element[a] = b : this.element.setAttribute(a, b)
1441
+ }, classSetter: function (a) {
1442
+ this.element.className = a
1443
+ }, dashstyleSetter: function (a, b, c) {
1444
+ (c.getElementsByTagName("stroke")[0] || Y(this.renderer.prepVML(["<stroke/>"]), null, null, c))[b] = a || "solid";
1445
+ this[b] = a
1446
+ }, dSetter: function (a, b, c) {
1447
+ var d = this.shadows, a = a || [];
1448
+ this.d = a.join(" ");
1449
+ c.path = a = this.pathToVML(a);
1450
+ if (d)for (c = d.length; c--;)d[c].path = d[c].cutOff ?
1451
+ this.cutOffPath(a, d[c].cutOff) : a;
1452
+ this.setAttr(b, a)
1453
+ }, fillSetter: function (a, b, c) {
1454
+ var d = c.nodeName;
1455
+ if (d === "SPAN")c.style.color = a; else if (d !== "IMG")c.filled = a !== Q, this.setAttr("fillcolor", this.renderer.color(a, c, b, this))
1456
+ }, opacitySetter: sa, rotationSetter: function (a, b, c) {
1457
+ c = c.style;
1458
+ this[b] = c[b] = a;
1459
+ c.left = -u(ea(a * Ca) + 1) + "px";
1460
+ c.top = u(Z(a * Ca)) + "px"
1461
+ }, strokeSetter: function (a, b, c) {
1462
+ this.setAttr("strokecolor", this.renderer.color(a, c, b))
1463
+ }, "stroke-widthSetter": function (a, b, c) {
1464
+ c.stroked = !!a;
1465
+ this[b] = a;
1466
+ ha(a) && (a += "px");
1467
+ this.setAttr("strokeweight", a)
1468
+ }, titleSetter: function (a, b) {
1469
+ this.setAttr(b, a)
1470
+ }, visibilitySetter: function (a, b, c) {
1471
+ a === "inherit" && (a = "visible");
1472
+ this.shadows && p(this.shadows, function (c) {
1473
+ c.style[b] = a
1474
+ });
1475
+ c.nodeName === "DIV" && (a = a === "hidden" ? "-999em" : 0, hb || (c.style[b] = a ? "visible" : "hidden"), b = "top");
1476
+ c.style[b] = a
1477
+ }, xSetter: function (a, b, c) {
1478
+ this[b] = a;
1479
+ b === "x" ? b = "left" : b === "y" && (b = "top");
1480
+ this.updateClipping ? (this[b] = a, this.updateClipping()) : c.style[b] = a
1481
+ }, zIndexSetter: function (a, b, c) {
1482
+ c.style[b] = a
1483
+ }
1484
+ };
1485
+ X = ka(P, X);
1486
+ X.prototype.ySetter =
1487
+ X.prototype.widthSetter = X.prototype.heightSetter = X.prototype.xSetter;
1488
+ var ga = {
1489
+ Element: X, isIE8: wa.indexOf("MSIE 8.0") > -1, init: function (a, b, c, d) {
1490
+ var e;
1491
+ this.alignedObjects = [];
1492
+ d = this.createElement(Ja).css(q(this.getStyle(d), {position: "relative"}));
1493
+ e = d.element;
1494
+ a.appendChild(d.element);
1495
+ this.isVML = !0;
1496
+ this.box = e;
1497
+ this.boxWrapper = d;
1498
+ this.cache = {};
1499
+ this.setSize(b, c, !1);
1500
+ if (!y.namespaces.hcv) {
1501
+ y.namespaces.add("hcv", "urn:schemas-microsoft-com:vml");
1502
+ try {
1503
+ y.createStyleSheet().cssText = "hcv\\:fill, hcv\\:path, hcv\\:shape, hcv\\:stroke{ behavior:url(#default#VML); display: inline-block; } "
1504
+ } catch (f) {
1505
+ y.styleSheets[0].cssText +=
1506
+ "hcv\\:fill, hcv\\:path, hcv\\:shape, hcv\\:stroke{ behavior:url(#default#VML); display: inline-block; } "
1507
+ }
1508
+ }
1509
+ }, isHidden: function () {
1510
+ return !this.box.offsetWidth
1511
+ }, clipRect: function (a, b, c, d) {
1512
+ var e = this.createElement(), f = ca(a);
1513
+ return q(e, {
1514
+ members: [],
1515
+ left: (f ? a.x : a) + 1,
1516
+ top: (f ? a.y : b) + 1,
1517
+ width: (f ? a.width : c) - 1,
1518
+ height: (f ? a.height : d) - 1,
1519
+ getCSS: function (a) {
1520
+ var b = a.element, c = b.nodeName, a = a.inverted, d = this.top - (c === "shape" ? b.offsetTop : 0), e = this.left, b = e + this.width, f = d + this.height, d = {
1521
+ clip: "rect(" + u(a ? e : d) + "px," + u(a ?
1522
+ f : b) + "px," + u(a ? b : f) + "px," + u(a ? d : e) + "px)"
1523
+ };
1524
+ !a && hb && c === "DIV" && q(d, {width: b + "px", height: f + "px"});
1525
+ return d
1526
+ },
1527
+ updateClipping: function () {
1528
+ p(e.members, function (a) {
1529
+ a.element && a.css(e.getCSS(a))
1530
+ })
1531
+ }
1532
+ })
1533
+ }, color: function (a, b, c, d) {
1534
+ var e = this, f, g = /^rgba/, h, i, j = Q;
1535
+ a && a.linearGradient ? i = "gradient" : a && a.radialGradient && (i = "pattern");
1536
+ if (i) {
1537
+ var k, l, o = a.linearGradient || a.radialGradient, n, s, m, J, L, x = "", a = a.stops, r, v = [], q = function () {
1538
+ h = ['<fill colors="' + v.join(",") + '" opacity="', m, '" o:opacity2="', s, '" type="', i, '" ', x, 'focus="100%" method="any" />'];
1539
+ Y(e.prepVML(h), null, null, b)
1540
+ };
1541
+ n = a[0];
1542
+ r = a[a.length - 1];
1543
+ n[0] > 0 && a.unshift([0, n[1]]);
1544
+ r[0] < 1 && a.push([1, r[1]]);
1545
+ p(a, function (a, b) {
1546
+ g.test(a[1]) ? (f = ya(a[1]), k = f.get("rgb"), l = f.get("a")) : (k = a[1], l = 1);
1547
+ v.push(a[0] * 100 + "% " + k);
1548
+ b ? (m = l, J = k) : (s = l, L = k)
1549
+ });
1550
+ if (c === "fill")if (i === "gradient")c = o.x1 || o[0] || 0, a = o.y1 || o[1] || 0, n = o.x2 || o[2] || 0, o = o.y2 || o[3] || 0, x = 'angle="' + (90 - U.atan((o - a) / (n - c)) * 180 / ma) + '"', q(); else {
1551
+ var j = o.r, t = j * 2, u = j * 2, y = o.cx, B = o.cy, na = b.radialReference, w, j = function () {
1552
+ na && (w = d.getBBox(), y += (na[0] - w.x) / w.width -
1553
+ 0.5, B += (na[1] - w.y) / w.height - 0.5, t *= na[2] / w.width, u *= na[2] / w.height);
1554
+ x = 'src="' + E.global.VMLRadialGradientURL + '" size="' + t + "," + u + '" origin="0.5,0.5" position="' + y + "," + B + '" color2="' + L + '" ';
1555
+ q()
1556
+ };
1557
+ d.added ? j() : d.onAdd = j;
1558
+ j = J
1559
+ } else j = k
1560
+ } else if (g.test(a) && b.tagName !== "IMG")f = ya(a), h = ["<", c, ' opacity="', f.get("a"), '"/>'], Y(this.prepVML(h), null, null, b), j = f.get("rgb"); else {
1561
+ j = b.getElementsByTagName(c);
1562
+ if (j.length)j[0].opacity = 1, j[0].type = "solid";
1563
+ j = a
1564
+ }
1565
+ return j
1566
+ }, prepVML: function (a) {
1567
+ var b = this.isIE8, a = a.join("");
1568
+ b ?
1569
+ (a = a.replace("/>", ' xmlns="urn:schemas-microsoft-com:vml" />'), a = a.indexOf('style="') === -1 ? a.replace("/>", ' style="display:inline-block;behavior:url(#default#VML);" />') : a.replace('style="', 'style="display:inline-block;behavior:url(#default#VML);')) : a = a.replace("<", "<hcv:");
1570
+ return a
1571
+ }, text: ta.prototype.html, path: function (a) {
1572
+ var b = {coordsize: "10 10"};
1573
+ La(a) ? b.d = a : ca(a) && q(b, a);
1574
+ return this.createElement("shape").attr(b)
1575
+ }, circle: function (a, b, c) {
1576
+ var d = this.symbol("circle");
1577
+ if (ca(a))c = a.r, b = a.y, a = a.x;
1578
+ d.isCircle = !0;
1579
+ d.r = c;
1580
+ return d.attr({x: a, y: b})
1581
+ }, g: function (a) {
1582
+ var b;
1583
+ a && (b = {className: "highcharts-" + a, "class": "highcharts-" + a});
1584
+ return this.createElement(Ja).attr(b)
1585
+ }, image: function (a, b, c, d, e) {
1586
+ var f = this.createElement("img").attr({src: a});
1587
+ arguments.length > 1 && f.attr({x: b, y: c, width: d, height: e});
1588
+ return f
1589
+ }, createElement: function (a) {
1590
+ return a === "rect" ? this.symbol(a) : ta.prototype.createElement.call(this, a)
1591
+ }, invertChild: function (a, b) {
1592
+ var c = this, d = b.style, e = a.tagName === "IMG" && a.style;
1593
+ G(a, {
1594
+ flip: "x", left: z(d.width) - (e ? z(e.top) :
1595
+ 1), top: z(d.height) - (e ? z(e.left) : 1), rotation: -90
1596
+ });
1597
+ p(a.childNodes, function (b) {
1598
+ c.invertChild(b, a)
1599
+ })
1600
+ }, symbols: {
1601
+ arc: function (a, b, c, d, e) {
1602
+ var f = e.start, g = e.end, h = e.r || c || d, c = e.innerR, d = Z(f), i = ea(f), j = Z(g), k = ea(g);
1603
+ if (g - f === 0)return ["x"];
1604
+ f = ["wa", a - h, b - h, a + h, b + h, a + h * d, b + h * i, a + h * j, b + h * k];
1605
+ e.open && !c && f.push("e", "M", a, b);
1606
+ f.push("at", a - c, b - c, a + c, b + c, a + c * j, b + c * k, a + c * d, b + c * i, "x", "e");
1607
+ f.isArc = !0;
1608
+ return f
1609
+ }, circle: function (a, b, c, d, e) {
1610
+ e && (c = d = 2 * e.r);
1611
+ e && e.isCircle && (a -= c / 2, b -= d / 2);
1612
+ return ["wa", a, b, a + c, b + d, a + c, b + d / 2, a +
1613
+ c, b + d / 2, "e"]
1614
+ }, rect: function (a, b, c, d, e) {
1615
+ return ta.prototype.symbols[!r(e) || !e.r ? "square" : "callout"].call(0, a, b, c, d, e)
1616
+ }
1617
+ }
1618
+ };
1619
+ R.VMLRenderer = X = function () {
1620
+ this.init.apply(this, arguments)
1621
+ };
1622
+ X.prototype = w(ta.prototype, ga);
1623
+ Za = X
1624
+ }
1625
+ ta.prototype.measureSpanWidth = function (a, b) {
1626
+ var c = y.createElement("span"), d;
1627
+ d = y.createTextNode(a);
1628
+ c.appendChild(d);
1629
+ G(c, b);
1630
+ this.box.appendChild(c);
1631
+ d = c.offsetWidth;
1632
+ Pa(c);
1633
+ return d
1634
+ };
1635
+ var Lb;
1636
+ if (fa)R.CanVGRenderer = X = function () {
1637
+ xa = "http://www.w3.org/1999/xhtml"
1638
+ }, X.prototype.symbols = {}, Lb = function () {
1639
+ function a() {
1640
+ var a =
1641
+ b.length, d;
1642
+ for (d = 0; d < a; d++)b[d]();
1643
+ b = []
1644
+ }
1645
+
1646
+ var b = [];
1647
+ return {
1648
+ push: function (c, d) {
1649
+ b.length === 0 && Qb(d, a);
1650
+ b.push(c)
1651
+ }
1652
+ }
1653
+ }(), Za = X;
1654
+ Sa.prototype = {
1655
+ addLabel: function () {
1656
+ var a = this.axis, b = a.options, c = a.chart, d = a.horiz, e = a.categories, f = a.names, g = this.pos, h = b.labels, i = a.tickPositions, d = d && e && !h.step && !h.staggerLines && !h.rotation && c.plotWidth / i.length || !d && (c.margin[3] || c.chartWidth * 0.33), j = g === i[0], k = g === i[i.length - 1], l, f = e ? m(e[g], f[g], g) : g, e = this.label, o = i.info;
1657
+ a.isDatetimeAxis && o && (l = b.dateTimeLabelFormats[o.higherRanks[g] ||
1658
+ o.unitName]);
1659
+ this.isFirst = j;
1660
+ this.isLast = k;
1661
+ b = a.labelFormatter.call({
1662
+ axis: a,
1663
+ chart: c,
1664
+ isFirst: j,
1665
+ isLast: k,
1666
+ dateTimeLabelFormat: l,
1667
+ value: a.isLog ? da(ia(f)) : f
1668
+ });
1669
+ g = d && {width: v(1, u(d - 2 * (h.padding || 10))) + "px"};
1670
+ g = q(g, h.style);
1671
+ if (r(e))e && e.attr({text: b}).css(g); else {
1672
+ l = {align: a.labelAlign};
1673
+ if (ha(h.rotation))l.rotation = h.rotation;
1674
+ if (d && h.ellipsis)l._clipHeight = a.len / i.length;
1675
+ this.label = r(b) && h.enabled ? c.renderer.text(b, 0, 0, h.useHTML).attr(l).css(g).add(a.labelGroup) : null
1676
+ }
1677
+ }, getLabelSize: function () {
1678
+ var a = this.label,
1679
+ b = this.axis;
1680
+ return a ? a.getBBox()[b.horiz ? "height" : "width"] : 0
1681
+ }, getLabelSides: function () {
1682
+ var a = this.label.getBBox(), b = this.axis, c = b.horiz, d = b.options.labels, a = c ? a.width : a.height, b = c ? d.x - a * {
1683
+ left: 0,
1684
+ center: 0.5,
1685
+ right: 1
1686
+ }[b.labelAlign] : 0;
1687
+ return [b, c ? a + b : a]
1688
+ }, handleOverflow: function (a, b) {
1689
+ var c = !0, d = this.axis, e = this.isFirst, f = this.isLast, g = d.horiz ? b.x : b.y, h = d.reversed, i = d.tickPositions, j = this.getLabelSides(), k = j[0], j = j[1], l, o, n, s = this.label.line || 0;
1690
+ l = d.labelEdge;
1691
+ o = d.justifyLabels && (e || f);
1692
+ l[s] === t || g + k > l[s] ? l[s] =
1693
+ g + j : o || (c = !1);
1694
+ if (o) {
1695
+ l = (o = d.justifyToPlot) ? d.pos : 0;
1696
+ o = o ? l + d.len : d.chart.chartWidth;
1697
+ do a += e ? 1 : -1, n = d.ticks[i[a]]; while (i[a] && (!n || n.label.line !== s));
1698
+ d = n && n.label.xy && n.label.xy.x + n.getLabelSides()[e ? 0 : 1];
1699
+ e && !h || f && h ? g + k < l && (g = l - k, n && g + j > d && (c = !1)) : g + j > o && (g = o - j, n && g + k < d && (c = !1));
1700
+ b.x = g
1701
+ }
1702
+ return c
1703
+ }, getPosition: function (a, b, c, d) {
1704
+ var e = this.axis, f = e.chart, g = d && f.oldChartHeight || f.chartHeight;
1705
+ return {
1706
+ x: a ? e.translate(b + c, null, null, d) + e.transB : e.left + e.offset + (e.opposite ? (d && f.oldChartWidth || f.chartWidth) - e.right -
1707
+ e.left : 0),
1708
+ y: a ? g - e.bottom + e.offset - (e.opposite ? e.height : 0) : g - e.translate(b + c, null, null, d) - e.transB
1709
+ }
1710
+ }, getLabelPosition: function (a, b, c, d, e, f, g, h) {
1711
+ var i = this.axis, j = i.transA, k = i.reversed, l = i.staggerLines, o = i.chart.renderer.fontMetrics(e.style.fontSize).b, n = e.rotation, a = a + e.x - (f && d ? f * j * (k ? -1 : 1) : 0), b = b + e.y - (f && !d ? f * j * (k ? 1 : -1) : 0);
1712
+ n && i.side === 2 && (b -= o - o * Z(n * Ca));
1713
+ !r(e.y) && !n && (b += o - c.getBBox().height / 2);
1714
+ if (l)c.line = g / (h || 1) % l, b += c.line * (i.labelOffset / l);
1715
+ return {x: a, y: b}
1716
+ }, getMarkPath: function (a, b, c, d, e, f) {
1717
+ return f.crispLine(["M",
1718
+ a, b, "L", a + (e ? 0 : -c), b + (e ? c : 0)], d)
1719
+ }, render: function (a, b, c) {
1720
+ var d = this.axis, e = d.options, f = d.chart.renderer, g = d.horiz, h = this.type, i = this.label, j = this.pos, k = e.labels, l = this.gridLine, o = h ? h + "Grid" : "grid", n = h ? h + "Tick" : "tick", s = e[o + "LineWidth"], p = e[o + "LineColor"], J = e[o + "LineDashStyle"], L = e[n + "Length"], o = e[n + "Width"] || 0, x = e[n + "Color"], r = e[n + "Position"], n = this.mark, v = k.step, q = !0, u = d.tickmarkOffset, w = this.getPosition(g, j, u, b), y = w.x, w = w.y, B = g && y === d.pos + d.len || !g && w === d.pos ? -1 : 1;
1721
+ this.isActive = !0;
1722
+ if (s) {
1723
+ j = d.getPlotLinePath(j +
1724
+ u, s * B, b, !0);
1725
+ if (l === t) {
1726
+ l = {stroke: p, "stroke-width": s};
1727
+ if (J)l.dashstyle = J;
1728
+ if (!h)l.zIndex = 1;
1729
+ if (b)l.opacity = 0;
1730
+ this.gridLine = l = s ? f.path(j).attr(l).add(d.gridGroup) : null
1731
+ }
1732
+ if (!b && l && j)l[this.isNew ? "attr" : "animate"]({d: j, opacity: c})
1733
+ }
1734
+ if (o && L)r === "inside" && (L = -L), d.opposite && (L = -L), h = this.getMarkPath(y, w, L, o * B, g, f), n ? n.animate({
1735
+ d: h,
1736
+ opacity: c
1737
+ }) : this.mark = f.path(h).attr({stroke: x, "stroke-width": o, opacity: c}).add(d.axisGroup);
1738
+ if (i && !isNaN(y))i.xy = w = this.getLabelPosition(y, w, i, g, k, u, a, v), this.isFirst && !this.isLast && !m(e.showFirstLabel, 1) || this.isLast && !this.isFirst && !m(e.showLastLabel, 1) ? q = !1 : !d.isRadial && !k.step && !k.rotation && !b && c !== 0 && (q = this.handleOverflow(a, w)), v && a % v && (q = !1), q && !isNaN(w.y) ? (w.opacity = c, i[this.isNew ? "attr" : "animate"](w), this.isNew = !1) : i.attr("y", -9999)
1739
+ }, destroy: function () {
1740
+ Oa(this, this.axis)
1741
+ }
1742
+ };
1743
+ R.PlotLineOrBand = function (a, b) {
1744
+ this.axis = a;
1745
+ if (b)this.options = b, this.id = b.id
1746
+ };
1747
+ R.PlotLineOrBand.prototype = {
1748
+ render: function () {
1749
+ var a = this, b = a.axis, c = b.horiz, d = (b.pointRange || 0) / 2, e = a.options, f = e.label,
1750
+ g = a.label, h = e.width, i = e.to, j = e.from, k = r(j) && r(i), l = e.value, o = e.dashStyle, n = a.svgElem, s = [], p, J = e.color, L = e.zIndex, x = e.events, q = {}, t = b.chart.renderer;
1751
+ b.isLog && (j = za(j), i = za(i), l = za(l));
1752
+ if (h) {
1753
+ if (s = b.getPlotLinePath(l, h), q = {stroke: J, "stroke-width": h}, o)q.dashstyle = o
1754
+ } else if (k) {
1755
+ j = v(j, b.min - d);
1756
+ i = C(i, b.max + d);
1757
+ s = b.getPlotBandPath(j, i, e);
1758
+ if (J)q.fill = J;
1759
+ if (e.borderWidth)q.stroke = e.borderColor, q["stroke-width"] = e.borderWidth
1760
+ } else return;
1761
+ if (r(L))q.zIndex = L;
1762
+ if (n)if (s)n.animate({d: s}, null, n.onGetPath); else {
1763
+ if (n.hide(),
1764
+ n.onGetPath = function () {
1765
+ n.show()
1766
+ }, g)a.label = g = g.destroy()
1767
+ } else if (s && s.length && (a.svgElem = n = t.path(s).attr(q).add(), x))for (p in d = function (b) {
1768
+ n.on(b, function (c) {
1769
+ x[b].apply(a, [c])
1770
+ })
1771
+ }, x)d(p);
1772
+ if (f && r(f.text) && s && s.length && b.width > 0 && b.height > 0) {
1773
+ f = w({
1774
+ align: c && k && "center",
1775
+ x: c ? !k && 4 : 10,
1776
+ verticalAlign: !c && k && "middle",
1777
+ y: c ? k ? 16 : 10 : k ? 6 : -4,
1778
+ rotation: c && !k && 90
1779
+ }, f);
1780
+ if (!g) {
1781
+ q = {align: f.textAlign || f.align, rotation: f.rotation};
1782
+ if (r(L))q.zIndex = L;
1783
+ a.label = g = t.text(f.text, 0, 0, f.useHTML).attr(q).css(f.style).add()
1784
+ }
1785
+ b = [s[1],
1786
+ s[4], m(s[6], s[1])];
1787
+ s = [s[2], s[5], m(s[7], s[2])];
1788
+ c = Na(b);
1789
+ k = Na(s);
1790
+ g.align(f, !1, {x: c, y: k, width: Ba(b) - c, height: Ba(s) - k});
1791
+ g.show()
1792
+ } else g && g.hide();
1793
+ return a
1794
+ }, destroy: function () {
1795
+ ja(this.axis.plotLinesAndBands, this);
1796
+ delete this.axis;
1797
+ Oa(this)
1798
+ }
1799
+ };
1800
+ la.prototype = {
1801
+ defaultOptions: {
1802
+ dateTimeLabelFormats: {
1803
+ millisecond: "%H:%M:%S.%L",
1804
+ second: "%H:%M:%S",
1805
+ minute: "%H:%M",
1806
+ hour: "%H:%M",
1807
+ day: "%e. %b",
1808
+ week: "%e. %b",
1809
+ month: "%b '%y",
1810
+ year: "%Y"
1811
+ },
1812
+ endOnTick: !1,
1813
+ gridLineColor: "#C0C0C0",
1814
+ labels: N,
1815
+ lineColor: "#C0D0E0",
1816
+ lineWidth: 1,
1817
+ minPadding: 0.01,
1818
+ maxPadding: 0.01,
1819
+ minorGridLineColor: "#E0E0E0",
1820
+ minorGridLineWidth: 1,
1821
+ minorTickColor: "#A0A0A0",
1822
+ minorTickLength: 2,
1823
+ minorTickPosition: "outside",
1824
+ startOfWeek: 1,
1825
+ startOnTick: !1,
1826
+ tickColor: "#C0D0E0",
1827
+ tickLength: 10,
1828
+ tickmarkPlacement: "between",
1829
+ tickPixelInterval: 100,
1830
+ tickPosition: "outside",
1831
+ tickWidth: 1,
1832
+ title: {align: "middle", style: {color: "#707070"}},
1833
+ type: "linear"
1834
+ },
1835
+ defaultYAxisOptions: {
1836
+ endOnTick: !0,
1837
+ gridLineWidth: 1,
1838
+ tickPixelInterval: 72,
1839
+ showLastLabel: !0,
1840
+ labels: {x: -8, y: 3},
1841
+ lineWidth: 0,
1842
+ maxPadding: 0.05,
1843
+ minPadding: 0.05,
1844
+ startOnTick: !0,
1845
+ tickWidth: 0,
1846
+ title: {rotation: 270, text: "Values"},
1847
+ stackLabels: {
1848
+ enabled: !1, formatter: function () {
1849
+ return Ga(this.total, -1)
1850
+ }, style: N.style
1851
+ }
1852
+ },
1853
+ defaultLeftAxisOptions: {labels: {x: -15, y: null}, title: {rotation: 270}},
1854
+ defaultRightAxisOptions: {labels: {x: 15, y: null}, title: {rotation: 90}},
1855
+ defaultBottomAxisOptions: {labels: {x: 0, y: 20}, title: {rotation: 0}},
1856
+ defaultTopAxisOptions: {labels: {x: 0, y: -15}, title: {rotation: 0}},
1857
+ init: function (a, b) {
1858
+ var c = b.isX;
1859
+ this.horiz = a.inverted ? !c : c;
1860
+ this.coll = (this.isXAxis = c) ? "xAxis" : "yAxis";
1861
+ this.opposite =
1862
+ b.opposite;
1863
+ this.side = b.side || (this.horiz ? this.opposite ? 0 : 2 : this.opposite ? 1 : 3);
1864
+ this.setOptions(b);
1865
+ var d = this.options, e = d.type;
1866
+ this.labelFormatter = d.labels.formatter || this.defaultLabelFormatter;
1867
+ this.userOptions = b;
1868
+ this.minPixelPadding = 0;
1869
+ this.chart = a;
1870
+ this.reversed = d.reversed;
1871
+ this.zoomEnabled = d.zoomEnabled !== !1;
1872
+ this.categories = d.categories || e === "category";
1873
+ this.names = [];
1874
+ this.isLog = e === "logarithmic";
1875
+ this.isDatetimeAxis = e === "datetime";
1876
+ this.isLinked = r(d.linkedTo);
1877
+ this.tickmarkOffset = this.categories && d.tickmarkPlacement ===
1878
+ "between" ? 0.5 : 0;
1879
+ this.ticks = {};
1880
+ this.labelEdge = [];
1881
+ this.minorTicks = {};
1882
+ this.plotLinesAndBands = [];
1883
+ this.alternateBands = {};
1884
+ this.len = 0;
1885
+ this.minRange = this.userMinRange = d.minRange || d.maxZoom;
1886
+ this.range = d.range;
1887
+ this.offset = d.offset || 0;
1888
+ this.stacks = {};
1889
+ this.oldStacks = {};
1890
+ this.min = this.max = null;
1891
+ this.crosshair = m(d.crosshair, qa(a.options.tooltip.crosshairs)[c ? 0 : 1], !1);
1892
+ var f, d = this.options.events;
1893
+ Da(this, a.axes) === -1 && (c && !this.isColorAxis ? a.axes.splice(a.xAxis.length, 0, this) : a.axes.push(this), a[this.coll].push(this));
1894
+ this.series = this.series || [];
1895
+ if (a.inverted && c && this.reversed === t)this.reversed = !0;
1896
+ this.removePlotLine = this.removePlotBand = this.removePlotBandOrLine;
1897
+ for (f in d)K(this, f, d[f]);
1898
+ if (this.isLog)this.val2lin = za, this.lin2val = ia
1899
+ },
1900
+ setOptions: function (a) {
1901
+ this.options = w(this.defaultOptions, this.isXAxis ? {} : this.defaultYAxisOptions, [this.defaultTopAxisOptions, this.defaultRightAxisOptions, this.defaultBottomAxisOptions, this.defaultLeftAxisOptions][this.side], w(E[this.coll], a))
1902
+ },
1903
+ defaultLabelFormatter: function () {
1904
+ var a =
1905
+ this.axis, b = this.value, c = a.categories, d = this.dateTimeLabelFormat, e = E.lang.numericSymbols, f = e && e.length, g, h = a.options.labels.format, a = a.isLog ? b : a.tickInterval;
1906
+ if (h)g = Ia(h, this); else if (c)g = b; else if (d)g = cb(d, b); else if (f && a >= 1E3)for (; f-- && g === t;)c = Math.pow(1E3, f + 1), a >= c && e[f] !== null && (g = Ga(b / c, -1) + e[f]);
1907
+ g === t && (g = M(b) >= 1E4 ? Ga(b, 0) : Ga(b, -1, t, ""));
1908
+ return g
1909
+ },
1910
+ getSeriesExtremes: function () {
1911
+ var a = this, b = a.chart;
1912
+ a.hasVisibleSeries = !1;
1913
+ a.dataMin = a.dataMax = null;
1914
+ a.buildStacks && a.buildStacks();
1915
+ p(a.series, function (c) {
1916
+ if (c.visible || !b.options.chart.ignoreHiddenSeries) {
1917
+ var d;
1918
+ d = c.options.threshold;
1919
+ var e;
1920
+ a.hasVisibleSeries = !0;
1921
+ a.isLog && d <= 0 && (d = null);
1922
+ if (a.isXAxis) {
1923
+ if (d = c.xData, d.length)a.dataMin = C(m(a.dataMin, d[0]), Na(d)), a.dataMax = v(m(a.dataMax, d[0]), Ba(d))
1924
+ } else {
1925
+ c.getExtremes();
1926
+ e = c.dataMax;
1927
+ c = c.dataMin;
1928
+ if (r(c) && r(e))a.dataMin = C(m(a.dataMin, c), c), a.dataMax = v(m(a.dataMax, e), e);
1929
+ if (r(d))if (a.dataMin >= d)a.dataMin = d, a.ignoreMinPadding = !0; else if (a.dataMax < d)a.dataMax = d, a.ignoreMaxPadding = !0
1930
+ }
1931
+ }
1932
+ })
1933
+ },
1934
+ translate: function (a, b, c, d, e, f) {
1935
+ var g =
1936
+ 1, h = 0, i = d ? this.oldTransA : this.transA, d = d ? this.oldMin : this.min, j = this.minPixelPadding, e = (this.options.ordinal || this.isLog && e) && this.lin2val;
1937
+ if (!i)i = this.transA;
1938
+ if (c)g *= -1, h = this.len;
1939
+ this.reversed && (g *= -1, h -= g * (this.sector || this.len));
1940
+ b ? (a = a * g + h, a -= j, a = a / i + d, e && (a = this.lin2val(a))) : (e && (a = this.val2lin(a)), f === "between" && (f = 0.5), a = g * (a - d) * i + h + g * j + (ha(f) ? i * f * this.pointRange : 0));
1941
+ return a
1942
+ },
1943
+ toPixels: function (a, b) {
1944
+ return this.translate(a, !1, !this.horiz, null, !0) + (b ? 0 : this.pos)
1945
+ },
1946
+ toValue: function (a, b) {
1947
+ return this.translate(a -
1948
+ (b ? 0 : this.pos), !0, !this.horiz, null, !0)
1949
+ },
1950
+ getPlotLinePath: function (a, b, c, d, e) {
1951
+ var f = this.chart, g = this.left, h = this.top, i, j, k = c && f.oldChartHeight || f.chartHeight, l = c && f.oldChartWidth || f.chartWidth, o;
1952
+ i = this.transB;
1953
+ e = m(e, this.translate(a, null, null, c));
1954
+ a = c = u(e + i);
1955
+ i = j = u(k - e - i);
1956
+ if (isNaN(e))o = !0; else if (this.horiz) {
1957
+ if (i = h, j = k - this.bottom, a < g || a > g + this.width)o = !0
1958
+ } else if (a = g, c = l - this.right, i < h || i > h + this.height)o = !0;
1959
+ return o && !d ? null : f.renderer.crispLine(["M", a, i, "L", c, j], b || 1)
1960
+ },
1961
+ getLinearTickPositions: function (a,
1962
+ b, c) {
1963
+ var d, e = da(T(b / a) * a), f = da(Ka(c / a) * a), g = [];
1964
+ if (b === c && ha(b))return [b];
1965
+ for (b = e; b <= f;) {
1966
+ g.push(b);
1967
+ b = da(b + a);
1968
+ if (b === d)break;
1969
+ d = b
1970
+ }
1971
+ return g
1972
+ },
1973
+ getMinorTickPositions: function () {
1974
+ var a = this.options, b = this.tickPositions, c = this.minorTickInterval, d = [], e;
1975
+ if (this.isLog) {
1976
+ e = b.length;
1977
+ for (a = 1; a < e; a++)d = d.concat(this.getLogTickPositions(c, b[a - 1], b[a], !0))
1978
+ } else if (this.isDatetimeAxis && a.minorTickInterval === "auto")d = d.concat(this.getTimeTicks(this.normalizeTimeTickInterval(c), this.min, this.max, a.startOfWeek)), d[0] < this.min &&
1979
+ d.shift(); else for (b = this.min + (b[0] - this.min) % c; b <= this.max; b += c)d.push(b);
1980
+ return d
1981
+ },
1982
+ adjustForMinRange: function () {
1983
+ var a = this.options, b = this.min, c = this.max, d, e = this.dataMax - this.dataMin >= this.minRange, f, g, h, i, j;
1984
+ if (this.isXAxis && this.minRange === t && !this.isLog)r(a.min) || r(a.max) ? this.minRange = null : (p(this.series, function (a) {
1985
+ i = a.xData;
1986
+ for (g = j = a.xIncrement ? 1 : i.length - 1; g > 0; g--)if (h = i[g] - i[g - 1], f === t || h < f)f = h
1987
+ }), this.minRange = C(f * 5, this.dataMax - this.dataMin));
1988
+ if (c - b < this.minRange) {
1989
+ var k = this.minRange;
1990
+ d =
1991
+ (k - c + b) / 2;
1992
+ d = [b - d, m(a.min, b - d)];
1993
+ if (e)d[2] = this.dataMin;
1994
+ b = Ba(d);
1995
+ c = [b + k, m(a.max, b + k)];
1996
+ if (e)c[2] = this.dataMax;
1997
+ c = Na(c);
1998
+ c - b < k && (d[0] = c - k, d[1] = m(a.min, c - k), b = Ba(d))
1999
+ }
2000
+ this.min = b;
2001
+ this.max = c
2002
+ },
2003
+ setAxisTranslation: function (a) {
2004
+ var b = this, c = b.max - b.min, d = b.axisPointRange || 0, e, f = 0, g = 0, h = b.linkedParent, i = !!b.categories, j = b.transA;
2005
+ if (b.isXAxis || i || d)h ? (f = h.minPointOffset, g = h.pointRangePadding) : p(b.series, function (a) {
2006
+ var h = i ? 1 : b.isXAxis ? a.pointRange : b.axisPointRange || 0, j = a.options.pointPlacement, n = a.closestPointRange;
2007
+ h > c && (h = 0);
2008
+ d = v(d, h);
2009
+ f = v(f, Fa(j) ? 0 : h / 2);
2010
+ g = v(g, j === "on" ? 0 : h);
2011
+ !a.noSharedTooltip && r(n) && (e = r(e) ? C(e, n) : n)
2012
+ }), h = b.ordinalSlope && e ? b.ordinalSlope / e : 1, b.minPointOffset = f *= h, b.pointRangePadding = g *= h, b.pointRange = C(d, c), b.closestPointRange = e;
2013
+ if (a)b.oldTransA = j;
2014
+ b.translationSlope = b.transA = j = b.len / (c + g || 1);
2015
+ b.transB = b.horiz ? b.left : b.bottom;
2016
+ b.minPixelPadding = j * f
2017
+ },
2018
+ setTickPositions: function (a) {
2019
+ var b = this, c = b.chart, d = b.options, e = b.isLog, f = b.isDatetimeAxis, g = b.isXAxis, h = b.isLinked, i = b.options.tickPositioner, j = d.maxPadding,
2020
+ k = d.minPadding, l = d.tickInterval, o = d.minTickInterval, n = d.tickPixelInterval, s, $ = b.categories;
2021
+ h ? (b.linkedParent = c[b.coll][d.linkedTo], c = b.linkedParent.getExtremes(), b.min = m(c.min, c.dataMin), b.max = m(c.max, c.dataMax), d.type !== b.linkedParent.options.type && ra(11, 1)) : (b.min = m(b.userMin, d.min, b.dataMin), b.max = m(b.userMax, d.max, b.dataMax));
2022
+ if (e)!a && C(b.min, m(b.dataMin, b.min)) <= 0 && ra(10, 1), b.min = da(za(b.min)), b.max = da(za(b.max));
2023
+ if (b.range && r(b.max))b.userMin = b.min = v(b.min, b.max - b.range), b.userMax = b.max, b.range =
2024
+ null;
2025
+ b.beforePadding && b.beforePadding();
2026
+ b.adjustForMinRange();
2027
+ if (!$ && !b.axisPointRange && !b.usePercentage && !h && r(b.min) && r(b.max) && (c = b.max - b.min)) {
2028
+ if (!r(d.min) && !r(b.userMin) && k && (b.dataMin < 0 || !b.ignoreMinPadding))b.min -= c * k;
2029
+ if (!r(d.max) && !r(b.userMax) && j && (b.dataMax > 0 || !b.ignoreMaxPadding))b.max += c * j
2030
+ }
2031
+ if (ha(d.floor))b.min = v(b.min, d.floor);
2032
+ if (ha(d.ceiling))b.max = C(b.max, d.ceiling);
2033
+ b.min === b.max || b.min === void 0 || b.max === void 0 ? b.tickInterval = 1 : h && !l && n === b.linkedParent.options.tickPixelInterval ? b.tickInterval =
2034
+ b.linkedParent.tickInterval : (b.tickInterval = m(l, $ ? 1 : (b.max - b.min) * n / v(b.len, n)), !r(l) && b.len < n && !this.isRadial && !this.isLog && !$ && d.startOnTick && d.endOnTick && (s = !0, b.tickInterval /= 4));
2035
+ g && !a && p(b.series, function (a) {
2036
+ a.processData(b.min !== b.oldMin || b.max !== b.oldMax)
2037
+ });
2038
+ b.setAxisTranslation(!0);
2039
+ b.beforeSetTickPositions && b.beforeSetTickPositions();
2040
+ if (b.postProcessTickInterval)b.tickInterval = b.postProcessTickInterval(b.tickInterval);
2041
+ if (b.pointRange)b.tickInterval = v(b.pointRange, b.tickInterval);
2042
+ if (!l && b.tickInterval <
2043
+ o)b.tickInterval = o;
2044
+ if (!f && !e && !l)b.tickInterval = nb(b.tickInterval, null, mb(b.tickInterval), d);
2045
+ b.minorTickInterval = d.minorTickInterval === "auto" && b.tickInterval ? b.tickInterval / 5 : d.minorTickInterval;
2046
+ b.tickPositions = a = d.tickPositions ? [].concat(d.tickPositions) : i && i.apply(b, [b.min, b.max]);
2047
+ if (!a)!b.ordinalPositions && (b.max - b.min) / b.tickInterval > v(2 * b.len, 200) && ra(19, !0), a = f ? b.getTimeTicks(b.normalizeTimeTickInterval(b.tickInterval, d.units), b.min, b.max, d.startOfWeek, b.ordinalPositions, b.closestPointRange,
2048
+ !0) : e ? b.getLogTickPositions(b.tickInterval, b.min, b.max) : b.getLinearTickPositions(b.tickInterval, b.min, b.max), s && a.splice(1, a.length - 2), b.tickPositions = a;
2049
+ if (!h)e = a[0], f = a[a.length - 1], h = b.minPointOffset || 0, d.startOnTick ? b.min = e : b.min - h > e && a.shift(), d.endOnTick ? b.max = f : b.max + h < f && a.pop(), a.length === 1 && (d = M(b.max) > 1E13 ? 1 : 0.001, b.min -= d, b.max += d)
2050
+ },
2051
+ setMaxTicks: function () {
2052
+ var a = this.chart, b = a.maxTicks || {}, c = this.tickPositions, d = this._maxTicksKey = [this.coll, this.pos, this.len].join("-");
2053
+ if (!this.isLinked && !this.isDatetimeAxis && c && c.length > (b[d] || 0) && this.options.alignTicks !== !1)b[d] = c.length;
2054
+ a.maxTicks = b
2055
+ },
2056
+ adjustTickAmount: function () {
2057
+ var a = this._maxTicksKey, b = this.tickPositions, c = this.chart.maxTicks;
2058
+ if (c && c[a] && !this.isDatetimeAxis && !this.categories && !this.isLinked && this.options.alignTicks !== !1 && this.min !== t) {
2059
+ var d = this.tickAmount, e = b.length;
2060
+ this.tickAmount = a = c[a];
2061
+ if (e < a) {
2062
+ for (; b.length < a;)b.push(da(b[b.length - 1] + this.tickInterval));
2063
+ this.transA *= (e - 1) / (a - 1);
2064
+ this.max = b[b.length - 1]
2065
+ }
2066
+ if (r(d) && a !== d)this.isDirty = !0
2067
+ }
2068
+ },
2069
+ setScale: function () {
2070
+ var a = this.stacks, b, c, d, e;
2071
+ this.oldMin = this.min;
2072
+ this.oldMax = this.max;
2073
+ this.oldAxisLength = this.len;
2074
+ this.setAxisSize();
2075
+ e = this.len !== this.oldAxisLength;
2076
+ p(this.series, function (a) {
2077
+ if (a.isDirtyData || a.isDirty || a.xAxis.isDirty)d = !0
2078
+ });
2079
+ if (e || d || this.isLinked || this.forceRedraw || this.userMin !== this.oldUserMin || this.userMax !== this.oldUserMax) {
2080
+ if (!this.isXAxis)for (b in a)for (c in a[b])a[b][c].total = null, a[b][c].cum = 0;
2081
+ this.forceRedraw = !1;
2082
+ this.getSeriesExtremes();
2083
+ this.setTickPositions();
2084
+ this.oldUserMin =
2085
+ this.userMin;
2086
+ this.oldUserMax = this.userMax;
2087
+ if (!this.isDirty)this.isDirty = e || this.min !== this.oldMin || this.max !== this.oldMax
2088
+ } else if (!this.isXAxis) {
2089
+ if (this.oldStacks)a = this.stacks = this.oldStacks;
2090
+ for (b in a)for (c in a[b])a[b][c].cum = a[b][c].total
2091
+ }
2092
+ this.setMaxTicks()
2093
+ },
2094
+ setExtremes: function (a, b, c, d, e) {
2095
+ var f = this, g = f.chart, c = m(c, !0), e = q(e, {min: a, max: b});
2096
+ D(f, "setExtremes", e, function () {
2097
+ f.userMin = a;
2098
+ f.userMax = b;
2099
+ f.eventArgs = e;
2100
+ f.isDirtyExtremes = !0;
2101
+ c && g.redraw(d)
2102
+ })
2103
+ },
2104
+ zoom: function (a, b) {
2105
+ var c = this.dataMin, d = this.dataMax,
2106
+ e = this.options;
2107
+ this.allowZoomOutside || (r(c) && a <= C(c, m(e.min, c)) && (a = t), r(d) && b >= v(d, m(e.max, d)) && (b = t));
2108
+ this.displayBtn = a !== t || b !== t;
2109
+ this.setExtremes(a, b, !1, t, {trigger: "zoom"});
2110
+ return !0
2111
+ },
2112
+ setAxisSize: function () {
2113
+ var a = this.chart, b = this.options, c = b.offsetLeft || 0, d = this.horiz, e = m(b.width, a.plotWidth - c + (b.offsetRight || 0)), f = m(b.height, a.plotHeight), g = m(b.top, a.plotTop), b = m(b.left, a.plotLeft + c), c = /%$/;
2114
+ c.test(f) && (f = parseInt(f, 10) / 100 * a.plotHeight);
2115
+ c.test(g) && (g = parseInt(g, 10) / 100 * a.plotHeight + a.plotTop);
2116
+ this.left = b;
2117
+ this.top = g;
2118
+ this.width = e;
2119
+ this.height = f;
2120
+ this.bottom = a.chartHeight - f - g;
2121
+ this.right = a.chartWidth - e - b;
2122
+ this.len = v(d ? e : f, 0);
2123
+ this.pos = d ? b : g
2124
+ },
2125
+ getExtremes: function () {
2126
+ var a = this.isLog;
2127
+ return {
2128
+ min: a ? da(ia(this.min)) : this.min,
2129
+ max: a ? da(ia(this.max)) : this.max,
2130
+ dataMin: this.dataMin,
2131
+ dataMax: this.dataMax,
2132
+ userMin: this.userMin,
2133
+ userMax: this.userMax
2134
+ }
2135
+ },
2136
+ getThreshold: function (a) {
2137
+ var b = this.isLog, c = b ? ia(this.min) : this.min, b = b ? ia(this.max) : this.max;
2138
+ c > a || a === null ? a = c : b < a && (a = b);
2139
+ return this.translate(a, 0, 1, 0, 1)
2140
+ },
2141
+ autoLabelAlign: function (a) {
2142
+ a =
2143
+ (m(a, 0) - this.side * 90 + 720) % 360;
2144
+ return a > 15 && a < 165 ? "right" : a > 195 && a < 345 ? "left" : "center"
2145
+ },
2146
+ getOffset: function () {
2147
+ var a = this, b = a.chart, c = b.renderer, d = a.options, e = a.tickPositions, f = a.ticks, g = a.horiz, h = a.side, i = b.inverted ? [1, 0, 3, 2][h] : h, j, k = 0, l, o = 0, n = d.title, s = d.labels, $ = 0, J = b.axisOffset, L = b.clipOffset, x = [-1, 1, 1, -1][h], q, u = 1, w = m(s.maxStaggerLines, 5), y, z, A, B, na = h === 2 ? c.fontMetrics(s.style.fontSize).b : 0;
2148
+ a.hasData = j = a.hasVisibleSeries || r(a.min) && r(a.max) && !!e;
2149
+ a.showAxis = b = j || m(d.showEmpty, !0);
2150
+ a.staggerLines =
2151
+ a.horiz && s.staggerLines;
2152
+ if (!a.axisGroup)a.gridGroup = c.g("grid").attr({zIndex: d.gridZIndex || 1}).add(), a.axisGroup = c.g("axis").attr({zIndex: d.zIndex || 2}).add(), a.labelGroup = c.g("axis-labels").attr({zIndex: s.zIndex || 7}).addClass("highcharts-" + a.coll.toLowerCase() + "-labels").add();
2153
+ if (j || a.isLinked) {
2154
+ a.labelAlign = m(s.align || a.autoLabelAlign(s.rotation));
2155
+ p(e, function (b) {
2156
+ f[b] ? f[b].addLabel() : f[b] = new Sa(a, b)
2157
+ });
2158
+ if (a.horiz && !a.staggerLines && w && !s.rotation) {
2159
+ for (q = a.reversed ? [].concat(e).reverse() : e; u < w;) {
2160
+ j =
2161
+ [];
2162
+ y = !1;
2163
+ for (s = 0; s < q.length; s++)z = q[s], A = (A = f[z].label && f[z].label.getBBox()) ? A.width : 0, B = s % u, A && (z = a.translate(z), j[B] !== t && z < j[B] && (y = !0), j[B] = z + A);
2164
+ if (y)u++; else break
2165
+ }
2166
+ if (u > 1)a.staggerLines = u
2167
+ }
2168
+ p(e, function (b) {
2169
+ if (h === 0 || h === 2 || {1: "left", 3: "right"}[h] === a.labelAlign)$ = v(f[b].getLabelSize(), $)
2170
+ });
2171
+ if (a.staggerLines)$ *= a.staggerLines, a.labelOffset = $
2172
+ } else for (q in f)f[q].destroy(), delete f[q];
2173
+ if (n && n.text && n.enabled !== !1) {
2174
+ if (!a.axisTitle)a.axisTitle = c.text(n.text, 0, 0, n.useHTML).attr({
2175
+ zIndex: 7, rotation: n.rotation ||
2176
+ 0, align: n.textAlign || {low: "left", middle: "center", high: "right"}[n.align]
2177
+ }).addClass("highcharts-" + this.coll.toLowerCase() + "-title").css(n.style).add(a.axisGroup), a.axisTitle.isNew = !0;
2178
+ if (b)k = a.axisTitle.getBBox()[g ? "height" : "width"], o = m(n.margin, g ? 5 : 10), l = n.offset;
2179
+ a.axisTitle[b ? "show" : "hide"]()
2180
+ }
2181
+ a.offset = x * m(d.offset, J[h]);
2182
+ a.axisTitleMargin = m(l, $ + o + ($ && x * d.labels[g ? "y" : "x"] - na));
2183
+ J[h] = v(J[h], a.axisTitleMargin + k + x * a.offset);
2184
+ L[i] = v(L[i], T(d.lineWidth / 2) * 2)
2185
+ },
2186
+ getLinePath: function (a) {
2187
+ var b = this.chart, c = this.opposite,
2188
+ d = this.offset, e = this.horiz, f = this.left + (c ? this.width : 0) + d, d = b.chartHeight - this.bottom - (c ? this.height : 0) + d;
2189
+ c && (a *= -1);
2190
+ return b.renderer.crispLine(["M", e ? this.left : f, e ? d : this.top, "L", e ? b.chartWidth - this.right : f, e ? d : b.chartHeight - this.bottom], a)
2191
+ },
2192
+ getTitlePosition: function () {
2193
+ var a = this.horiz, b = this.left, c = this.top, d = this.len, e = this.options.title, f = a ? b : c, g = this.opposite, h = this.offset, i = z(e.style.fontSize || 12), d = {
2194
+ low: f + (a ? 0 : d),
2195
+ middle: f + d / 2,
2196
+ high: f + (a ? d : 0)
2197
+ }[e.align], b = (a ? c + this.height : b) + (a ? 1 : -1) * (g ? -1 : 1) *
2198
+ this.axisTitleMargin + (this.side === 2 ? i : 0);
2199
+ return {
2200
+ x: a ? d : b + (g ? this.width : 0) + h + (e.x || 0),
2201
+ y: a ? b - (g ? this.height : 0) + h : d + (e.y || 0)
2202
+ }
2203
+ },
2204
+ render: function () {
2205
+ var a = this, b = a.horiz, c = a.reversed, d = a.chart, e = d.renderer, f = a.options, g = a.isLog, h = a.isLinked, i = a.tickPositions, j, k = a.axisTitle, l = a.ticks, o = a.minorTicks, n = a.alternateBands, s = f.stackLabels, m = f.alternateGridColor, J = a.tickmarkOffset, L = f.lineWidth, x = d.hasRendered && r(a.oldMin) && !isNaN(a.oldMin), q = a.hasData, v = a.showAxis, u, w = f.labels.overflow, y = a.justifyLabels = b && w !== !1, z;
2206
+ a.labelEdge.length = 0;
2207
+ a.justifyToPlot = w === "justify";
2208
+ p([l, o, n], function (a) {
2209
+ for (var b in a)a[b].isActive = !1
2210
+ });
2211
+ if (q || h)if (a.minorTickInterval && !a.categories && p(a.getMinorTickPositions(), function (b) {
2212
+ o[b] || (o[b] = new Sa(a, b, "minor"));
2213
+ x && o[b].isNew && o[b].render(null, !0);
2214
+ o[b].render(null, !1, 1)
2215
+ }), i.length && (j = i.slice(), (b && c || !b && !c) && j.reverse(), y && (j = j.slice(1).concat([j[0]])), p(j, function (b, c) {
2216
+ y && (c = c === j.length - 1 ? 0 : c + 1);
2217
+ if (!h || b >= a.min && b <= a.max)l[b] || (l[b] = new Sa(a, b)), x && l[b].isNew && l[b].render(c,
2218
+ !0, 0.1), l[b].render(c, !1, 1)
2219
+ }), J && a.min === 0 && (l[-1] || (l[-1] = new Sa(a, -1, null, !0)), l[-1].render(-1))), m && p(i, function (b, c) {
2220
+ if (c % 2 === 0 && b < a.max)n[b] || (n[b] = new R.PlotLineOrBand(a)), u = b + J, z = i[c + 1] !== t ? i[c + 1] + J : a.max, n[b].options = {
2221
+ from: g ? ia(u) : u,
2222
+ to: g ? ia(z) : z,
2223
+ color: m
2224
+ }, n[b].render(), n[b].isActive = !0
2225
+ }), !a._addedPlotLB)p((f.plotLines || []).concat(f.plotBands || []), function (b) {
2226
+ a.addPlotBandOrLine(b)
2227
+ }), a._addedPlotLB = !0;
2228
+ p([l, o, n], function (a) {
2229
+ var b, c, e = [], f = va ? va.duration || 500 : 0, g = function () {
2230
+ for (c = e.length; c--;)a[e[c]] && !a[e[c]].isActive && (a[e[c]].destroy(), delete a[e[c]])
2231
+ };
2232
+ for (b in a)if (!a[b].isActive)a[b].render(b, !1, 0), a[b].isActive = !1, e.push(b);
2233
+ a === n || !d.hasRendered || !f ? g() : f && setTimeout(g, f)
2234
+ });
2235
+ if (L)b = a.getLinePath(L), a.axisLine ? a.axisLine.animate({d: b}) : a.axisLine = e.path(b).attr({
2236
+ stroke: f.lineColor,
2237
+ "stroke-width": L,
2238
+ zIndex: 7
2239
+ }).add(a.axisGroup), a.axisLine[v ? "show" : "hide"]();
2240
+ if (k && v)k[k.isNew ? "attr" : "animate"](a.getTitlePosition()), k.isNew = !1;
2241
+ s && s.enabled && a.renderStackTotals();
2242
+ a.isDirty = !1
2243
+ },
2244
+ redraw: function () {
2245
+ var a =
2246
+ this.chart.pointer;
2247
+ a && a.reset(!0);
2248
+ this.render();
2249
+ p(this.plotLinesAndBands, function (a) {
2250
+ a.render()
2251
+ });
2252
+ p(this.series, function (a) {
2253
+ a.isDirty = !0
2254
+ })
2255
+ },
2256
+ destroy: function (a) {
2257
+ var b = this, c = b.stacks, d, e = b.plotLinesAndBands;
2258
+ a || W(b);
2259
+ for (d in c)Oa(c[d]), c[d] = null;
2260
+ p([b.ticks, b.minorTicks, b.alternateBands], function (a) {
2261
+ Oa(a)
2262
+ });
2263
+ for (a = e.length; a--;)e[a].destroy();
2264
+ p("stackTotalGroup,axisLine,axisTitle,axisGroup,cross,gridGroup,labelGroup".split(","), function (a) {
2265
+ b[a] && (b[a] = b[a].destroy())
2266
+ });
2267
+ this.cross && this.cross.destroy()
2268
+ },
2269
+ drawCrosshair: function (a, b) {
2270
+ if (this.crosshair)if ((r(b) || !m(this.crosshair.snap, !0)) === !1)this.hideCrosshair(); else {
2271
+ var c, d = this.crosshair, e = d.animation;
2272
+ m(d.snap, !0) ? r(b) && (c = this.chart.inverted != this.horiz ? b.plotX : this.len - b.plotY) : c = this.horiz ? a.chartX - this.pos : this.len - a.chartY + this.pos;
2273
+ c = this.isRadial ? this.getPlotLinePath(this.isXAxis ? b.x : m(b.stackY, b.y)) : this.getPlotLinePath(null, null, null, null, c);
2274
+ if (c === null)this.hideCrosshair(); else if (this.cross)this.cross.attr({visibility: "visible"})[e ? "animate" :
2275
+ "attr"]({d: c}, e); else {
2276
+ e = {"stroke-width": d.width || 1, stroke: d.color || "#C0C0C0", zIndex: d.zIndex || 2};
2277
+ if (d.dashStyle)e.dashstyle = d.dashStyle;
2278
+ this.cross = this.chart.renderer.path(c).attr(e).add()
2279
+ }
2280
+ }
2281
+ },
2282
+ hideCrosshair: function () {
2283
+ this.cross && this.cross.hide()
2284
+ }
2285
+ };
2286
+ q(la.prototype, {
2287
+ getPlotBandPath: function (a, b) {
2288
+ var c = this.getPlotLinePath(b), d = this.getPlotLinePath(a);
2289
+ d && c ? d.push(c[4], c[5], c[1], c[2]) : d = null;
2290
+ return d
2291
+ }, addPlotBand: function (a) {
2292
+ this.addPlotBandOrLine(a, "plotBands")
2293
+ }, addPlotLine: function (a) {
2294
+ this.addPlotBandOrLine(a,
2295
+ "plotLines")
2296
+ }, addPlotBandOrLine: function (a, b) {
2297
+ var c = (new R.PlotLineOrBand(this, a)).render(), d = this.userOptions;
2298
+ c && (b && (d[b] = d[b] || [], d[b].push(a)), this.plotLinesAndBands.push(c));
2299
+ return c
2300
+ }, removePlotBandOrLine: function (a) {
2301
+ for (var b = this.plotLinesAndBands, c = this.options, d = this.userOptions, e = b.length; e--;)b[e].id === a && b[e].destroy();
2302
+ p([c.plotLines || [], d.plotLines || [], c.plotBands || [], d.plotBands || []], function (b) {
2303
+ for (e = b.length; e--;)b[e].id === a && ja(b, b[e])
2304
+ })
2305
+ }
2306
+ });
2307
+ la.prototype.getTimeTicks = function (a, b,
2308
+ c, d) {
2309
+ var e = [], f = {}, g = E.global.useUTC, h, i = new Date(b - Ra), j = a.unitRange, k = a.count;
2310
+ if (r(b)) {
2311
+ j >= A.second && (i.setMilliseconds(0), i.setSeconds(j >= A.minute ? 0 : k * T(i.getSeconds() / k)));
2312
+ if (j >= A.minute)i[Db](j >= A.hour ? 0 : k * T(i[pb]() / k));
2313
+ if (j >= A.hour)i[Eb](j >= A.day ? 0 : k * T(i[qb]() / k));
2314
+ if (j >= A.day)i[sb](j >= A.month ? 1 : k * T(i[Xa]() / k));
2315
+ j >= A.month && (i[Fb](j >= A.year ? 0 : k * T(i[fb]() / k)), h = i[gb]());
2316
+ j >= A.year && (h -= h % k, i[Gb](h));
2317
+ if (j === A.week)i[sb](i[Xa]() - i[rb]() + m(d, 1));
2318
+ b = 1;
2319
+ Ra && (i = new Date(i.getTime() + Ra));
2320
+ h = i[gb]();
2321
+ for (var d =
2322
+ i.getTime(), l = i[fb](), o = i[Xa](), n = g ? Ra : (864E5 + i.getTimezoneOffset() * 6E4) % 864E5; d < c;)e.push(d), j === A.year ? d = eb(h + b * k, 0) : j === A.month ? d = eb(h, l + b * k) : !g && (j === A.day || j === A.week) ? d = eb(h, l, o + b * k * (j === A.day ? 1 : 7)) : d += j * k, b++;
2323
+ e.push(d);
2324
+ p(vb(e, function (a) {
2325
+ return j <= A.hour && a % A.day === n
2326
+ }), function (a) {
2327
+ f[a] = "day"
2328
+ })
2329
+ }
2330
+ e.info = q(a, {higherRanks: f, totalRange: j * k});
2331
+ return e
2332
+ };
2333
+ la.prototype.normalizeTimeTickInterval = function (a, b) {
2334
+ var c = b || [["millisecond", [1, 2, 5, 10, 20, 25, 50, 100, 200, 500]], ["second", [1, 2, 5, 10, 15, 30]], ["minute",
2335
+ [1, 2, 5, 10, 15, 30]], ["hour", [1, 2, 3, 4, 6, 8, 12]], ["day", [1, 2]], ["week", [1, 2]], ["month", [1, 2, 3, 4, 6]], ["year", null]], d = c[c.length - 1], e = A[d[0]], f = d[1], g;
2336
+ for (g = 0; g < c.length; g++)if (d = c[g], e = A[d[0]], f = d[1], c[g + 1] && a <= (e * f[f.length - 1] + A[c[g + 1][0]]) / 2)break;
2337
+ e === A.year && a < 5 * e && (f = [1, 2, 5]);
2338
+ c = nb(a / e, f, d[0] === "year" ? v(mb(a / e), 1) : 1);
2339
+ return {unitRange: e, count: c, unitName: d[0]}
2340
+ };
2341
+ la.prototype.getLogTickPositions = function (a, b, c, d) {
2342
+ var e = this.options, f = this.len, g = [];
2343
+ if (!d)this._minorAutoInterval = null;
2344
+ if (a >= 0.5)a = u(a), g = this.getLinearTickPositions(a,
2345
+ b, c); else if (a >= 0.08)for (var f = T(b), h, i, j, k, l, e = a > 0.3 ? [1, 2, 4] : a > 0.15 ? [1, 2, 4, 6, 8] : [1, 2, 3, 4, 5, 6, 7, 8, 9]; f < c + 1 && !l; f++) {
2346
+ i = e.length;
2347
+ for (h = 0; h < i && !l; h++)j = za(ia(f) * e[h]), j > b && (!d || k <= c) && g.push(k), k > c && (l = !0), k = j
2348
+ } else if (b = ia(b), c = ia(c), a = e[d ? "minorTickInterval" : "tickInterval"], a = m(a === "auto" ? null : a, this._minorAutoInterval, (c - b) * (e.tickPixelInterval / (d ? 5 : 1)) / ((d ? f / this.tickPositions.length : f) || 1)), a = nb(a, null, mb(a)), g = Ua(this.getLinearTickPositions(a, b, c), za), !d)this._minorAutoInterval = a / 5;
2349
+ if (!d)this.tickInterval =
2350
+ a;
2351
+ return g
2352
+ };
2353
+ var Mb = R.Tooltip = function () {
2354
+ this.init.apply(this, arguments)
2355
+ };
2356
+ Mb.prototype = {
2357
+ init: function (a, b) {
2358
+ var c = b.borderWidth, d = b.style, e = z(d.padding);
2359
+ this.chart = a;
2360
+ this.options = b;
2361
+ this.crosshairs = [];
2362
+ this.now = {x: 0, y: 0};
2363
+ this.isHidden = !0;
2364
+ this.label = a.renderer.label("", 0, 0, b.shape || "callout", null, null, b.useHTML, null, "tooltip").attr({
2365
+ padding: e,
2366
+ fill: b.backgroundColor,
2367
+ "stroke-width": c,
2368
+ r: b.borderRadius,
2369
+ zIndex: 8
2370
+ }).css(d).css({padding: 0}).add().attr({y: -9999});
2371
+ fa || this.label.shadow(b.shadow);
2372
+ this.shared = b.shared
2373
+ },
2374
+ destroy: function () {
2375
+ if (this.label)this.label = this.label.destroy();
2376
+ clearTimeout(this.hideTimer);
2377
+ clearTimeout(this.tooltipTimeout)
2378
+ }, move: function (a, b, c, d) {
2379
+ var e = this, f = e.now, g = e.options.animation !== !1 && !e.isHidden, h = e.followPointer || e.len > 1;
2380
+ q(f, {
2381
+ x: g ? (2 * f.x + a) / 3 : a,
2382
+ y: g ? (f.y + b) / 2 : b,
2383
+ anchorX: h ? t : g ? (2 * f.anchorX + c) / 3 : c,
2384
+ anchorY: h ? t : g ? (f.anchorY + d) / 2 : d
2385
+ });
2386
+ e.label.attr(f);
2387
+ if (g && (M(a - f.x) > 1 || M(b - f.y) > 1))clearTimeout(this.tooltipTimeout), this.tooltipTimeout = setTimeout(function () {
2388
+ e && e.move(a, b, c, d)
2389
+ }, 32)
2390
+ }, hide: function () {
2391
+ var a =
2392
+ this, b;
2393
+ clearTimeout(this.hideTimer);
2394
+ if (!this.isHidden)b = this.chart.hoverPoints, this.hideTimer = setTimeout(function () {
2395
+ a.label.fadeOut();
2396
+ a.isHidden = !0
2397
+ }, m(this.options.hideDelay, 500)), b && p(b, function (a) {
2398
+ a.setState()
2399
+ }), this.chart.hoverPoints = null
2400
+ }, getAnchor: function (a, b) {
2401
+ var c, d = this.chart, e = d.inverted, f = d.plotTop, g = 0, h = 0, i, a = qa(a);
2402
+ c = a[0].tooltipPos;
2403
+ this.followPointer && b && (b.chartX === t && (b = d.pointer.normalize(b)), c = [b.chartX - d.plotLeft, b.chartY - f]);
2404
+ c || (p(a, function (a) {
2405
+ i = a.series.yAxis;
2406
+ g += a.plotX;
2407
+ h += (a.plotLow ?
2408
+ (a.plotLow + a.plotHigh) / 2 : a.plotY) + (!e && i ? i.top - f : 0)
2409
+ }), g /= a.length, h /= a.length, c = [e ? d.plotWidth - h : g, this.shared && !e && a.length > 1 && b ? b.chartY - f : e ? d.plotHeight - g : h]);
2410
+ return Ua(c, u)
2411
+ }, getPosition: function (a, b, c) {
2412
+ var d = this.chart, e = this.distance, f = {}, g, h = ["y", d.chartHeight, b, c.plotY + d.plotTop], i = ["x", d.chartWidth, a, c.plotX + d.plotLeft], j = c.ttBelow || d.inverted && !c.negative || !d.inverted && c.negative, k = function (a, b, c, d) {
2413
+ var g = c < d - e, b = d + e + c < b, c = d - e - c;
2414
+ d += e;
2415
+ if (j && b)f[a] = d; else if (!j && g)f[a] = c; else if (g)f[a] = c; else if (b)f[a] =
2416
+ d; else return !1
2417
+ }, l = function (a, b, c, d) {
2418
+ if (d < e || d > b - e)return !1; else f[a] = d < c / 2 ? 1 : d > b - c / 2 ? b - c - 2 : d - c / 2
2419
+ }, o = function (a) {
2420
+ var b = h;
2421
+ h = i;
2422
+ i = b;
2423
+ g = a
2424
+ }, n = function () {
2425
+ k.apply(0, h) !== !1 ? l.apply(0, i) === !1 && !g && (o(!0), n()) : g ? f.x = f.y = 0 : (o(!0), n())
2426
+ };
2427
+ (d.inverted || this.len > 1) && o();
2428
+ n();
2429
+ return f
2430
+ }, defaultFormatter: function (a) {
2431
+ var b = this.points || qa(this), c = b[0].series, d;
2432
+ d = [a.tooltipHeaderFormatter(b[0])];
2433
+ p(b, function (a) {
2434
+ c = a.series;
2435
+ d.push(c.tooltipFormatter && c.tooltipFormatter(a) || a.point.tooltipFormatter(c.tooltipOptions.pointFormat))
2436
+ });
2437
+ d.push(a.options.footerFormat || "");
2438
+ return d.join("")
2439
+ }, refresh: function (a, b) {
2440
+ var c = this.chart, d = this.label, e = this.options, f, g, h = {}, i, j = [];
2441
+ i = e.formatter || this.defaultFormatter;
2442
+ var h = c.hoverPoints, k, l = this.shared;
2443
+ clearTimeout(this.hideTimer);
2444
+ this.followPointer = qa(a)[0].series.tooltipOptions.followPointer;
2445
+ g = this.getAnchor(a, b);
2446
+ f = g[0];
2447
+ g = g[1];
2448
+ l && (!a.series || !a.series.noSharedTooltip) ? (c.hoverPoints = a, h && p(h, function (a) {
2449
+ a.setState()
2450
+ }), p(a, function (a) {
2451
+ a.setState("hover");
2452
+ j.push(a.getLabelConfig())
2453
+ }), h = {
2454
+ x: a[0].category,
2455
+ y: a[0].y
2456
+ }, h.points = j, this.len = j.length, a = a[0]) : h = a.getLabelConfig();
2457
+ i = i.call(h, this);
2458
+ h = a.series;
2459
+ this.distance = m(h.tooltipOptions.distance, 16);
2460
+ i === !1 ? this.hide() : (this.isHidden && (bb(d), d.attr("opacity", 1).show()), d.attr({text: i}), k = e.borderColor || a.color || h.color || "#606060", d.attr({stroke: k}), this.updatePosition({
2461
+ plotX: f,
2462
+ plotY: g,
2463
+ negative: a.negative,
2464
+ ttBelow: a.ttBelow
2465
+ }), this.isHidden = !1);
2466
+ D(c, "tooltipRefresh", {text: i, x: f + c.plotLeft, y: g + c.plotTop, borderColor: k})
2467
+ }, updatePosition: function (a) {
2468
+ var b = this.chart,
2469
+ c = this.label, c = (this.options.positioner || this.getPosition).call(this, c.width, c.height, a);
2470
+ this.move(u(c.x), u(c.y), a.plotX + b.plotLeft, a.plotY + b.plotTop)
2471
+ }, tooltipHeaderFormatter: function (a) {
2472
+ var b = a.series, c = b.tooltipOptions, d = c.dateTimeLabelFormats, e = c.xDateFormat, f = b.xAxis, g = f && f.options.type === "datetime" && ha(a.key), c = c.headerFormat, f = f && f.closestPointRange, h;
2473
+ if (g && !e) {
2474
+ if (f)for (h in A) {
2475
+ if (A[h] >= f || A[h] <= A.day && a.key % A[h] > 0) {
2476
+ e = d[h];
2477
+ break
2478
+ }
2479
+ } else e = d.day;
2480
+ e = e || d.year
2481
+ }
2482
+ g && e && (c = c.replace("{point.key}", "{point.key:" +
2483
+ e + "}"));
2484
+ return Ia(c, {point: a, series: b})
2485
+ }
2486
+ };
2487
+ var oa;
2488
+ $a = y.documentElement.ontouchstart !== t;
2489
+ var Wa = R.Pointer = function (a, b) {
2490
+ this.init(a, b)
2491
+ };
2492
+ Wa.prototype = {
2493
+ init: function (a, b) {
2494
+ var c = b.chart, d = c.events, e = fa ? "" : c.zoomType, c = a.inverted, f;
2495
+ this.options = b;
2496
+ this.chart = a;
2497
+ this.zoomX = f = /x/.test(e);
2498
+ this.zoomY = e = /y/.test(e);
2499
+ this.zoomHor = f && !c || e && c;
2500
+ this.zoomVert = e && !c || f && c;
2501
+ this.hasZoom = f || e;
2502
+ this.runChartClick = d && !!d.click;
2503
+ this.pinchDown = [];
2504
+ this.lastValidTouch = {};
2505
+ if (R.Tooltip && b.tooltip.enabled)a.tooltip = new Mb(a, b.tooltip),
2506
+ this.followTouchMove = b.tooltip.followTouchMove;
2507
+ this.setDOMEvents()
2508
+ }, normalize: function (a, b) {
2509
+ var c, d, a = a || window.event, a = Sb(a);
2510
+ if (!a.target)a.target = a.srcElement;
2511
+ d = a.touches ? a.touches.length ? a.touches.item(0) : a.changedTouches[0] : a;
2512
+ if (!b)this.chartPosition = b = Rb(this.chart.container);
2513
+ d.pageX === t ? (c = v(a.x, a.clientX - b.left), d = a.y) : (c = d.pageX - b.left, d = d.pageY - b.top);
2514
+ return q(a, {chartX: u(c), chartY: u(d)})
2515
+ }, getCoordinates: function (a) {
2516
+ var b = {xAxis: [], yAxis: []};
2517
+ p(this.chart.axes, function (c) {
2518
+ b[c.isXAxis ? "xAxis" :
2519
+ "yAxis"].push({axis: c, value: c.toValue(a[c.horiz ? "chartX" : "chartY"])})
2520
+ });
2521
+ return b
2522
+ }, getIndex: function (a) {
2523
+ var b = this.chart;
2524
+ return b.inverted ? b.plotHeight + b.plotTop - a.chartY : a.chartX - b.plotLeft
2525
+ }, runPointActions: function (a) {
2526
+ var b = this.chart, c = b.series, d = b.tooltip, e, f, g = b.hoverPoint, h = b.hoverSeries, i, j, k = b.chartWidth, l = this.getIndex(a);
2527
+ if (d && this.options.tooltip.shared && (!h || !h.noSharedTooltip)) {
2528
+ f = [];
2529
+ i = c.length;
2530
+ for (j = 0; j < i; j++)if (c[j].visible && c[j].options.enableMouseTracking !== !1 && !c[j].noSharedTooltip &&
2531
+ c[j].singularTooltips !== !0 && c[j].tooltipPoints.length && (e = c[j].tooltipPoints[l]) && e.series)e._dist = M(l - e.clientX), k = C(k, e._dist), f.push(e);
2532
+ for (i = f.length; i--;)f[i]._dist > k && f.splice(i, 1);
2533
+ if (f.length && f[0].clientX !== this.hoverX)d.refresh(f, a), this.hoverX = f[0].clientX
2534
+ }
2535
+ c = h && h.tooltipOptions.followPointer;
2536
+ if (h && h.tracker && !c) {
2537
+ if ((e = h.tooltipPoints[l]) && e !== g)e.onMouseOver(a)
2538
+ } else d && c && !d.isHidden && (h = d.getAnchor([{}], a), d.updatePosition({plotX: h[0], plotY: h[1]}));
2539
+ if (d && !this._onDocumentMouseMove)this._onDocumentMouseMove =
2540
+ function (a) {
2541
+ if (V[oa])V[oa].pointer.onDocumentMouseMove(a)
2542
+ }, K(y, "mousemove", this._onDocumentMouseMove);
2543
+ p(b.axes, function (b) {
2544
+ b.drawCrosshair(a, m(e, g))
2545
+ })
2546
+ }, reset: function (a) {
2547
+ var b = this.chart, c = b.hoverSeries, d = b.hoverPoint, e = b.tooltip, f = e && e.shared ? b.hoverPoints : d;
2548
+ (a = a && e && f) && qa(f)[0].plotX === t && (a = !1);
2549
+ if (a)e.refresh(f), d && d.setState(d.state, !0); else {
2550
+ if (d)d.onMouseOut();
2551
+ if (c)c.onMouseOut();
2552
+ e && e.hide();
2553
+ if (this._onDocumentMouseMove)W(y, "mousemove", this._onDocumentMouseMove), this._onDocumentMouseMove = null;
2554
+ p(b.axes, function (a) {
2555
+ a.hideCrosshair()
2556
+ });
2557
+ this.hoverX = null
2558
+ }
2559
+ }, scaleGroups: function (a, b) {
2560
+ var c = this.chart, d;
2561
+ p(c.series, function (e) {
2562
+ d = a || e.getPlotBox();
2563
+ e.xAxis && e.xAxis.zoomEnabled && (e.group.attr(d), e.markerGroup && (e.markerGroup.attr(d), e.markerGroup.clip(b ? c.clipRect : null)), e.dataLabelsGroup && e.dataLabelsGroup.attr(d))
2564
+ });
2565
+ c.clipRect.attr(b || c.clipBox)
2566
+ }, dragStart: function (a) {
2567
+ var b = this.chart;
2568
+ b.mouseIsDown = a.type;
2569
+ b.cancelClick = !1;
2570
+ b.mouseDownX = this.mouseDownX = a.chartX;
2571
+ b.mouseDownY = this.mouseDownY = a.chartY
2572
+ },
2573
+ drag: function (a) {
2574
+ var b = this.chart, c = b.options.chart, d = a.chartX, e = a.chartY, f = this.zoomHor, g = this.zoomVert, h = b.plotLeft, i = b.plotTop, j = b.plotWidth, k = b.plotHeight, l, o = this.mouseDownX, n = this.mouseDownY;
2575
+ d < h ? d = h : d > h + j && (d = h + j);
2576
+ e < i ? e = i : e > i + k && (e = i + k);
2577
+ this.hasDragged = Math.sqrt(Math.pow(o - d, 2) + Math.pow(n - e, 2));
2578
+ if (this.hasDragged > 10) {
2579
+ l = b.isInsidePlot(o - h, n - i);
2580
+ if (b.hasCartesianSeries && (this.zoomX || this.zoomY) && l && !this.selectionMarker)this.selectionMarker = b.renderer.rect(h, i, f ? 1 : j, g ? 1 : k, 0).attr({
2581
+ fill: c.selectionMarkerFill ||
2582
+ "rgba(69,114,167,0.25)", zIndex: 7
2583
+ }).add();
2584
+ this.selectionMarker && f && (d -= o, this.selectionMarker.attr({width: M(d), x: (d > 0 ? 0 : d) + o}));
2585
+ this.selectionMarker && g && (d = e - n, this.selectionMarker.attr({
2586
+ height: M(d),
2587
+ y: (d > 0 ? 0 : d) + n
2588
+ }));
2589
+ l && !this.selectionMarker && c.panning && b.pan(a, c.panning)
2590
+ }
2591
+ }, drop: function (a) {
2592
+ var b = this.chart, c = this.hasPinched;
2593
+ if (this.selectionMarker) {
2594
+ var d = {
2595
+ xAxis: [],
2596
+ yAxis: [],
2597
+ originalEvent: a.originalEvent || a
2598
+ }, a = this.selectionMarker, e = a.attr ? a.attr("x") : a.x, f = a.attr ? a.attr("y") : a.y, g = a.attr ? a.attr("width") :
2599
+ a.width, h = a.attr ? a.attr("height") : a.height, i;
2600
+ if (this.hasDragged || c)p(b.axes, function (a) {
2601
+ if (a.zoomEnabled) {
2602
+ var b = a.horiz, c = a.toValue(b ? e : f), b = a.toValue(b ? e + g : f + h);
2603
+ !isNaN(c) && !isNaN(b) && (d[a.coll].push({axis: a, min: C(c, b), max: v(c, b)}), i = !0)
2604
+ }
2605
+ }), i && D(b, "selection", d, function (a) {
2606
+ b.zoom(q(a, c ? {animation: !1} : null))
2607
+ });
2608
+ this.selectionMarker = this.selectionMarker.destroy();
2609
+ c && this.scaleGroups()
2610
+ }
2611
+ if (b)G(b.container, {cursor: b._cursor}), b.cancelClick = this.hasDragged > 10, b.mouseIsDown = this.hasDragged = this.hasPinched = !1, this.pinchDown = []
2612
+ }, onContainerMouseDown: function (a) {
2613
+ a = this.normalize(a);
2614
+ a.preventDefault && a.preventDefault();
2615
+ this.dragStart(a)
2616
+ }, onDocumentMouseUp: function (a) {
2617
+ V[oa] && V[oa].pointer.drop(a)
2618
+ }, onDocumentMouseMove: function (a) {
2619
+ var b = this.chart, c = this.chartPosition, d = b.hoverSeries, a = this.normalize(a, c);
2620
+ c && d && !this.inClass(a.target, "highcharts-tracker") && !b.isInsidePlot(a.chartX - b.plotLeft, a.chartY - b.plotTop) && this.reset()
2621
+ }, onContainerMouseLeave: function () {
2622
+ var a = V[oa];
2623
+ if (a)a.pointer.reset(), a.pointer.chartPosition =
2624
+ null
2625
+ }, onContainerMouseMove: function (a) {
2626
+ var b = this.chart;
2627
+ oa = b.index;
2628
+ a = this.normalize(a);
2629
+ b.mouseIsDown === "mousedown" && this.drag(a);
2630
+ (this.inClass(a.target, "highcharts-tracker") || b.isInsidePlot(a.chartX - b.plotLeft, a.chartY - b.plotTop)) && !b.openMenu && this.runPointActions(a)
2631
+ }, inClass: function (a, b) {
2632
+ for (var c; a;) {
2633
+ if (c = H(a, "class"))if (c.indexOf(b) !== -1)return !0; else if (c.indexOf("highcharts-container") !== -1)return !1;
2634
+ a = a.parentNode
2635
+ }
2636
+ }, onTrackerMouseOut: function (a) {
2637
+ var b = this.chart.hoverSeries, c = (a = a.relatedTarget ||
2638
+ a.toElement) && a.point && a.point.series;
2639
+ if (b && !b.options.stickyTracking && !this.inClass(a, "highcharts-tooltip") && c !== b)b.onMouseOut()
2640
+ }, onContainerClick: function (a) {
2641
+ var b = this.chart, c = b.hoverPoint, d = b.plotLeft, e = b.plotTop, a = this.normalize(a);
2642
+ a.cancelBubble = !0;
2643
+ b.cancelClick || (c && this.inClass(a.target, "highcharts-tracker") ? (D(c.series, "click", q(a, {point: c})), b.hoverPoint && c.firePointEvent("click", a)) : (q(a, this.getCoordinates(a)), b.isInsidePlot(a.chartX - d, a.chartY - e) && D(b, "click", a)))
2644
+ }, setDOMEvents: function () {
2645
+ var a =
2646
+ this, b = a.chart.container;
2647
+ b.onmousedown = function (b) {
2648
+ a.onContainerMouseDown(b)
2649
+ };
2650
+ b.onmousemove = function (b) {
2651
+ a.onContainerMouseMove(b)
2652
+ };
2653
+ b.onclick = function (b) {
2654
+ a.onContainerClick(b)
2655
+ };
2656
+ K(b, "mouseleave", a.onContainerMouseLeave);
2657
+ ab === 1 && K(y, "mouseup", a.onDocumentMouseUp);
2658
+ if ($a)b.ontouchstart = function (b) {
2659
+ a.onContainerTouchStart(b)
2660
+ }, b.ontouchmove = function (b) {
2661
+ a.onContainerTouchMove(b)
2662
+ }, ab === 1 && K(y, "touchend", a.onDocumentTouchEnd)
2663
+ }, destroy: function () {
2664
+ var a;
2665
+ W(this.chart.container, "mouseleave", this.onContainerMouseLeave);
2666
+ ab || (W(y, "mouseup", this.onDocumentMouseUp), W(y, "touchend", this.onDocumentTouchEnd));
2667
+ clearInterval(this.tooltipTimeout);
2668
+ for (a in this)this[a] = null
2669
+ }
2670
+ };
2671
+ q(R.Pointer.prototype, {
2672
+ pinchTranslate: function (a, b, c, d, e, f) {
2673
+ (this.zoomHor || this.pinchHor) && this.pinchTranslateDirection(!0, a, b, c, d, e, f);
2674
+ (this.zoomVert || this.pinchVert) && this.pinchTranslateDirection(!1, a, b, c, d, e, f)
2675
+ }, pinchTranslateDirection: function (a, b, c, d, e, f, g, h) {
2676
+ var i = this.chart, j = a ? "x" : "y", k = a ? "X" : "Y", l = "chart" + k, o = a ? "width" : "height", n = i["plot" + (a ?
2677
+ "Left" : "Top")], s, m, p = h || 1, q = i.inverted, x = i.bounds[a ? "h" : "v"], r = b.length === 1, v = b[0][l], u = c[0][l], t = !r && b[1][l], w = !r && c[1][l], y, c = function () {
2678
+ !r && M(v - t) > 20 && (p = h || M(u - w) / M(v - t));
2679
+ m = (n - u) / p + v;
2680
+ s = i["plot" + (a ? "Width" : "Height")] / p
2681
+ };
2682
+ c();
2683
+ b = m;
2684
+ b < x.min ? (b = x.min, y = !0) : b + s > x.max && (b = x.max - s, y = !0);
2685
+ y ? (u -= 0.8 * (u - g[j][0]), r || (w -= 0.8 * (w - g[j][1])), c()) : g[j] = [u, w];
2686
+ q || (f[j] = m - n, f[o] = s);
2687
+ f = q ? 1 / p : p;
2688
+ e[o] = s;
2689
+ e[j] = b;
2690
+ d[q ? a ? "scaleY" : "scaleX" : "scale" + k] = p;
2691
+ d["translate" + k] = f * n + (u - f * v)
2692
+ }, pinch: function (a) {
2693
+ var b = this, c = b.chart, d = b.pinchDown,
2694
+ e = b.followTouchMove, f = a.touches, g = f.length, h = b.lastValidTouch, i = b.hasZoom, j = b.selectionMarker, k = {}, l = g === 1 && (b.inClass(a.target, "highcharts-tracker") && c.runTrackerClick || c.runChartClick), o = {};
2695
+ (i || e) && !l && a.preventDefault();
2696
+ Ua(f, function (a) {
2697
+ return b.normalize(a)
2698
+ });
2699
+ if (a.type === "touchstart")p(f, function (a, b) {
2700
+ d[b] = {chartX: a.chartX, chartY: a.chartY}
2701
+ }), h.x = [d[0].chartX, d[1] && d[1].chartX], h.y = [d[0].chartY, d[1] && d[1].chartY], p(c.axes, function (a) {
2702
+ if (a.zoomEnabled) {
2703
+ var b = c.bounds[a.horiz ? "h" : "v"], d = a.minPixelPadding,
2704
+ e = a.toPixels(a.dataMin), f = a.toPixels(a.dataMax), g = C(e, f), e = v(e, f);
2705
+ b.min = C(a.pos, g - d);
2706
+ b.max = v(a.pos + a.len, e + d)
2707
+ }
2708
+ }); else if (d.length) {
2709
+ if (!j)b.selectionMarker = j = q({destroy: sa}, c.plotBox);
2710
+ b.pinchTranslate(d, f, k, j, o, h);
2711
+ b.hasPinched = i;
2712
+ b.scaleGroups(k, o);
2713
+ !i && e && g === 1 && this.runPointActions(b.normalize(a))
2714
+ }
2715
+ }, onContainerTouchStart: function (a) {
2716
+ var b = this.chart;
2717
+ oa = b.index;
2718
+ a.touches.length === 1 ? (a = this.normalize(a), b.isInsidePlot(a.chartX - b.plotLeft, a.chartY - b.plotTop) ? (this.runPointActions(a), this.pinch(a)) : this.reset()) :
2719
+ a.touches.length === 2 && this.pinch(a)
2720
+ }, onContainerTouchMove: function (a) {
2721
+ (a.touches.length === 1 || a.touches.length === 2) && this.pinch(a)
2722
+ }, onDocumentTouchEnd: function (a) {
2723
+ V[oa] && V[oa].pointer.drop(a)
2724
+ }
2725
+ });
2726
+ if (I.PointerEvent || I.MSPointerEvent) {
2727
+ var ua = {}, zb = !!I.PointerEvent, Wb = function () {
2728
+ var a, b = [];
2729
+ b.item = function (a) {
2730
+ return this[a]
2731
+ };
2732
+ for (a in ua)ua.hasOwnProperty(a) && b.push({pageX: ua[a].pageX, pageY: ua[a].pageY, target: ua[a].target});
2733
+ return b
2734
+ }, Ab = function (a, b, c, d) {
2735
+ a = a.originalEvent || a;
2736
+ if ((a.pointerType === "touch" ||
2737
+ a.pointerType === a.MSPOINTER_TYPE_TOUCH) && V[oa])d(a), d = V[oa].pointer, d[b]({
2738
+ type: c,
2739
+ target: a.currentTarget,
2740
+ preventDefault: sa,
2741
+ touches: Wb()
2742
+ })
2743
+ };
2744
+ q(Wa.prototype, {
2745
+ onContainerPointerDown: function (a) {
2746
+ Ab(a, "onContainerTouchStart", "touchstart", function (a) {
2747
+ ua[a.pointerId] = {pageX: a.pageX, pageY: a.pageY, target: a.currentTarget}
2748
+ })
2749
+ }, onContainerPointerMove: function (a) {
2750
+ Ab(a, "onContainerTouchMove", "touchmove", function (a) {
2751
+ ua[a.pointerId] = {pageX: a.pageX, pageY: a.pageY};
2752
+ if (!ua[a.pointerId].target)ua[a.pointerId].target = a.currentTarget
2753
+ })
2754
+ },
2755
+ onDocumentPointerUp: function (a) {
2756
+ Ab(a, "onContainerTouchEnd", "touchend", function (a) {
2757
+ delete ua[a.pointerId]
2758
+ })
2759
+ }, batchMSEvents: function (a) {
2760
+ a(this.chart.container, zb ? "pointerdown" : "MSPointerDown", this.onContainerPointerDown);
2761
+ a(this.chart.container, zb ? "pointermove" : "MSPointerMove", this.onContainerPointerMove);
2762
+ a(y, zb ? "pointerup" : "MSPointerUp", this.onDocumentPointerUp)
2763
+ }
2764
+ });
2765
+ Ma(Wa.prototype, "init", function (a, b, c) {
2766
+ a.call(this, b, c);
2767
+ (this.hasZoom || this.followTouchMove) && G(b.container, {"-ms-touch-action": Q, "touch-action": Q})
2768
+ });
2769
+ Ma(Wa.prototype, "setDOMEvents", function (a) {
2770
+ a.apply(this);
2771
+ (this.hasZoom || this.followTouchMove) && this.batchMSEvents(K)
2772
+ });
2773
+ Ma(Wa.prototype, "destroy", function (a) {
2774
+ this.batchMSEvents(W);
2775
+ a.call(this)
2776
+ })
2777
+ }
2778
+ var lb = R.Legend = function (a, b) {
2779
+ this.init(a, b)
2780
+ };
2781
+ lb.prototype = {
2782
+ init: function (a, b) {
2783
+ var c = this, d = b.itemStyle, e = m(b.padding, 8), f = b.itemMarginTop || 0;
2784
+ this.options = b;
2785
+ if (b.enabled)c.baseline = z(d.fontSize) + 3 + f, c.itemStyle = d, c.itemHiddenStyle = w(d, b.itemHiddenStyle), c.itemMarginTop = f, c.padding = e, c.initialItemX = e, c.initialItemY =
2786
+ e - 5, c.maxItemWidth = 0, c.chart = a, c.itemHeight = 0, c.lastLineHeight = 0, c.symbolWidth = m(b.symbolWidth, 16), c.pages = [], c.render(), K(c.chart, "endResize", function () {
2787
+ c.positionCheckboxes()
2788
+ })
2789
+ }, colorizeItem: function (a, b) {
2790
+ var c = this.options, d = a.legendItem, e = a.legendLine, f = a.legendSymbol, g = this.itemHiddenStyle.color, c = b ? c.itemStyle.color : g, h = b ? a.legendColor || a.color || "#CCC" : g, g = a.options && a.options.marker, i = {fill: h}, j;
2791
+ d && d.css({fill: c, color: c});
2792
+ e && e.attr({stroke: h});
2793
+ if (f) {
2794
+ if (g && f.isMarker)for (j in i.stroke = h, g = a.convertAttribs(g),
2795
+ g)d = g[j], d !== t && (i[j] = d);
2796
+ f.attr(i)
2797
+ }
2798
+ }, positionItem: function (a) {
2799
+ var b = this.options, c = b.symbolPadding, b = !b.rtl, d = a._legendItemPos, e = d[0], d = d[1], f = a.checkbox;
2800
+ a.legendGroup && a.legendGroup.translate(b ? e : this.legendWidth - e - 2 * c - 4, d);
2801
+ if (f)f.x = e, f.y = d
2802
+ }, destroyItem: function (a) {
2803
+ var b = a.checkbox;
2804
+ p(["legendItem", "legendLine", "legendSymbol", "legendGroup"], function (b) {
2805
+ a[b] && (a[b] = a[b].destroy())
2806
+ });
2807
+ b && Pa(a.checkbox)
2808
+ }, destroy: function () {
2809
+ var a = this.group, b = this.box;
2810
+ if (b)this.box = b.destroy();
2811
+ if (a)this.group = a.destroy()
2812
+ },
2813
+ positionCheckboxes: function (a) {
2814
+ var b = this.group.alignAttr, c, d = this.clipHeight || this.legendHeight;
2815
+ if (b)c = b.translateY, p(this.allItems, function (e) {
2816
+ var f = e.checkbox, g;
2817
+ f && (g = c + f.y + (a || 0) + 3, G(f, {
2818
+ left: b.translateX + e.checkboxOffset + f.x - 20 + "px",
2819
+ top: g + "px",
2820
+ display: g > c - 6 && g < c + d - 6 ? "" : Q
2821
+ }))
2822
+ })
2823
+ }, renderTitle: function ()