Toolset Types – Custom Post Types, Custom Fields and Taxonomies - Version 2.2.9

Version Description

  • Added the feature to display posts and pages in Toolset dashboard by default.
  • Added the ability to set the purpose of a View or a WordPress Archive, when creating from the Toolset Dashboard.
  • Added support for user language setting.
  • Renamed "Thumbnail" to "Featured Image" in custom post type edit screen options.
  • Removed non-Types taxonomies from the related section in post type edit screen.
  • Removed "Layouts not compatible with theme" message.
  • Fixed an issue with checkbox user field with option to save 0 to the database
  • Fixed an issue that WordPress Archives created inside Layouts were listed in Views section of Types Information table
  • Fixed a compatibility issue with WPML plugin which was causing duplicate keys in the icl_strings table, when renaming post field groups or post types.
  • Fixed a compatibility issue with UseAnyFont plugin.
Download this release

Release Info

Developer christianglingener
Plugin Icon 128x128 Toolset Types – Custom Post Types, Custom Fields and Taxonomies
Version 2.2.9
Comparing to
See all releases

Code changes from version 2.2.8 to 2.2.9

Files changed (114) hide show
  1. application/autoload_classmap.php +215 -0
  2. application/bootstrap.php +1 -12
  3. application/controllers/ajax.php +2 -2
  4. application/{api.php → controllers/api.php} +0 -0
  5. application/controllers/asset/manager.php +0 -12
  6. application/controllers/import_export.php +183 -100
  7. application/controllers/information/controller.php +19 -16
  8. application/controllers/interop/handler/divi.php +1 -3
  9. application/controllers/interop/handler/use_any_font.php +62 -0
  10. application/controllers/interop/handler/wpml.php +78 -0
  11. application/controllers/interop/mediator.php +9 -0
  12. application/controllers/main.php +23 -7
  13. application/controllers/page/dashboard.php +21 -27
  14. application/controllers/page/extension/settings.php +2 -2
  15. application/controllers/page/field_control.php +2 -2
  16. application/controllers/page/hidden/helper.php +1 -1
  17. application/controllers/utils.php +39 -0
  18. application/data/dashboard/table/archive.php +211 -56
  19. application/data/dashboard/table/forms.php +11 -11
  20. application/data/dashboard/table/head.php +22 -22
  21. application/data/dashboard/table/template.php +190 -46
  22. application/data/dashboard/table/views.php +22 -18
  23. application/data/documentation-urls.php +2 -2
  24. application/data/information/layouts-not-compatible.php +0 -30
  25. application/data/information/table/archive.php +233 -52
  26. application/data/information/table/forms.php +11 -11
  27. application/data/information/table/question-marks.php +15 -15
  28. application/data/information/table/template.php +231 -49
  29. application/data/information/table/views.php +11 -11
  30. application/models/field/group/factory.php +8 -0
  31. application/models/helper/condition/layouts/template_exists.php +1 -1
  32. application/models/helper/condition/layouts/template_missing.php +5 -1
  33. application/models/helper/condition/type/no_post_or_page.php +8 -0
  34. application/models/helper/condition/type/post_or_page.php +12 -0
  35. application/models/helper/condition/views/views_exist.php +6 -1
  36. application/models/helper/create/content_template.php +1 -1
  37. application/models/helper/create/form.php +1 -1
  38. application/models/helper/create/layout.php +1 -1
  39. application/models/helper/create/view.php +1 -1
  40. application/models/helper/create/wordpress_archive.php +2 -2
  41. application/models/helper/placeholder.php +18 -12
  42. application/models/helper/twig.php +9 -1
  43. application/models/setting/preset/information_table.php +3 -3
  44. application/models/wpml/field/group/string.php +90 -38
  45. application/models/wpml/interface.php +1 -0
  46. application/views/information/description/link.twig +1 -1
  47. application/views/page/dashboard/help.twig +5 -5
  48. disabled_autoload_classmap.php +0 -151
  49. library/toolset/onthego-resources/.gitignore +0 -72
  50. library/toolset/onthego-resources/onthegosystems-icons/.fontcustom-manifest.json +10 -6
  51. library/toolset/onthego-resources/onthegosystems-icons/css/_onthegosystems-icons.scss +9 -6
  52. library/toolset/onthego-resources/onthegosystems-icons/css/onthegosystems-icons.css +8 -6
  53. library/toolset/onthego-resources/onthegosystems-icons/fonts/onthegosystems-icons-preview.html +22 -7
  54. library/toolset/onthego-resources/onthegosystems-icons/fonts/onthegosystems-icons_91cc76c6ec19609541b007a2169151af.woff +0 -0
  55. library/toolset/onthego-resources/onthegosystems-icons/fonts/{onthegosystems-icons_91cc76c6ec19609541b007a2169151af.eot → onthegosystems-icons_c2bf5434fb5ba6db313a98fb4e1bf347.eot} +0 -0
  56. library/toolset/onthego-resources/onthegosystems-icons/fonts/{onthegosystems-icons_91cc76c6ec19609541b007a2169151af.svg → onthegosystems-icons_c2bf5434fb5ba6db313a98fb4e1bf347.svg} +13 -10
  57. library/toolset/onthego-resources/onthegosystems-icons/fonts/{onthegosystems-icons_91cc76c6ec19609541b007a2169151af.ttf → onthegosystems-icons_c2bf5434fb5ba6db313a98fb4e1bf347.ttf} +0 -0
  58. library/toolset/onthego-resources/onthegosystems-icons/fonts/onthegosystems-icons_c2bf5434fb5ba6db313a98fb4e1bf347.woff +0 -0
  59. library/toolset/onthego-resources/onthegosystems-icons/vectors/toolset-export.svg +45 -0
  60. library/toolset/toolset-common/autoload_classmap.php +44 -0
  61. library/toolset/toolset-common/bootstrap.php +121 -32
  62. library/toolset/toolset-common/changelog.md +18 -1
  63. library/toolset/toolset-common/classes/forms.php +2 -2
  64. library/toolset/toolset-common/debug/debug-information.php +3 -1
  65. library/toolset/toolset-common/inc/autoloaded/date_utils.php +306 -0
  66. library/toolset/toolset-common/inc/autoloaded/result.php +87 -0
  67. library/toolset/toolset-common/inc/autoloaded/result_set.php +209 -0
  68. library/toolset/toolset-common/inc/autoloaded/result_updated.php +56 -0
  69. library/toolset/toolset-common/inc/controller/admin/notices.php +389 -0
  70. library/toolset/toolset-common/inc/toolset.admin.bar.menu.class.php +5 -6
  71. library/toolset/toolset-common/inc/toolset.assets.manager.class.php +622 -370
  72. library/toolset/toolset-common/inc/toolset.bootstrap.loader.class.php +39 -0
  73. library/toolset/toolset-common/inc/toolset.css.component.class.php +160 -112
  74. library/toolset/toolset-common/inc/toolset.export.import.screen.class.php +7 -2
  75. library/toolset/toolset-common/inc/toolset.function.helpers.php +48 -0
  76. library/toolset/toolset-common/inc/toolset.localization.class.php +7 -6
  77. library/toolset/toolset-common/inc/toolset.menu.class.php +4 -2
  78. library/toolset/toolset-common/inc/toolset.object.relationship.class.php +105 -15
  79. library/toolset/toolset-common/inc/toolset.promotion.class.php +1 -1
  80. library/toolset/toolset-common/inc/toolset.relevanssi.compatibility.class.php +1 -1
  81. library/toolset/toolset-common/inc/toolset.settings.class.php +139 -0
  82. library/toolset/toolset-common/inc/toolset.settings.screen.class.php +129 -2
  83. library/toolset/toolset-common/{visual-editor/shortcode_generator/shortcode-generator.class.php → inc/toolset.shortcode.generator.class.php} +85 -0
  84. library/toolset/toolset-common/inc/toolset.wplogger.class.php +1 -1
  85. library/toolset/toolset-common/inc/toolset.wpml.compatibility.class.php +145 -27
  86. library/toolset/toolset-common/lib/cakephp.validation.class.php +1 -1
  87. library/toolset/toolset-common/lib/enlimbo.forms.class.php +2 -2
  88. library/toolset/toolset-common/lib/validate.class.php +1 -1
  89. library/toolset/toolset-common/loader.php +4 -5
  90. library/toolset/toolset-common/readme.md +140 -1
  91. library/toolset/toolset-common/res/css/toolset-admin-notices.css +139 -0
  92. library/toolset/toolset-common/res/css/toolset-bs-component.css +33 -19
  93. library/toolset/toolset-common/res/css/toolset-common.css +1 -0
  94. library/toolset/toolset-common/res/css/toolset-dialogs.css +28 -4
  95. library/toolset/toolset-common/res/js/toolset-admin-notices.js +24 -0
  96. library/toolset/toolset-common/res/js/toolset-bs-component-buttons.js +37 -187
  97. library/toolset/toolset-common/res/js/toolset-bs-component-events.js +93 -74
  98. library/toolset/toolset-common/res/js/toolset-bs-component-tinymce.js +132 -0
  99. library/toolset/toolset-common/res/js/toolset-select2-compatibility.js +1 -0
  100. library/toolset/toolset-common/res/js/toolset-settings.js +121 -41
  101. library/toolset/toolset-common/res/lib/bootstrap/config.json +434 -0
  102. library/toolset/toolset-common/res/lib/bootstrap/css/bootstrap-theme.css +596 -0
  103. library/toolset/toolset-common/res/lib/bootstrap/css/bootstrap-theme.min.css +14 -0
  104. library/toolset/toolset-common/res/lib/bootstrap/css/bootstrap.css +6365 -0
  105. library/toolset/toolset-common/res/lib/bootstrap/css/bootstrap.min.css +14 -0
  106. library/toolset/toolset-common/res/lib/bootstrap/fonts/glyphicons-halflings-regular.eot +0 -0
  107. library/toolset/toolset-common/res/lib/bootstrap/fonts/glyphicons-halflings-regular.svg +288 -0
  108. library/toolset/toolset-common/res/lib/bootstrap/fonts/glyphicons-halflings-regular.ttf +0 -0
  109. library/toolset/toolset-common/res/lib/bootstrap/fonts/glyphicons-halflings-regular.woff +0 -0
  110. library/toolset/toolset-common/res/lib/bootstrap/fonts/glyphicons-halflings-regular.woff2 +0 -0
  111. library/toolset/toolset-common/res/lib/bootstrap/js/bootstrap.js +2380 -0
  112. library/toolset/toolset-common/res/lib/bootstrap/js/bootstrap.min.js +12 -0
  113. library/toolset/toolset-common/res/lib/colorbox/jquery.colorbox-min.js +1 -1
  114. library/toolset/toolset-common/res/lib/knockout/knockout-3.4.0.debug.js +790 -0
application/autoload_classmap.php ADDED
@@ -0,0 +1,215 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ // Generated by ZF2's ./bin/classmap_generator.php
3
+ return array(
4
+ 'Types_Field_Type_Definition_Checkbox' => dirname( __FILE__ ) . '/models/field/type/definition/checkbox.php',
5
+ 'Types_Field_Type_Definition_Radio' => dirname( __FILE__ ) . '/models/field/type/definition/radio.php',
6
+ 'Types_Field_Type_Definition_Numeric' => dirname( __FILE__ ) . '/models/field/type/definition/numeric.php',
7
+ 'Types_Field_Type_Definition_Checkboxes' => dirname( __FILE__ ) . '/models/field/type/definition/checkboxes.php',
8
+ 'Types_Field_Type_Definition_Singular' => dirname( __FILE__ ) . '/models/field/type/definition/singular.php',
9
+ 'Types_Field_Type_Definition_Select' => dirname( __FILE__ ) . '/models/field/type/definition/select.php',
10
+ 'Types_Field_Type_Definition_Date' => dirname( __FILE__ ) . '/models/field/type/definition/date.php',
11
+ 'Types_Field_Type_Definition' => dirname( __FILE__ ) . '/models/field/type/definition.php',
12
+ 'Types_Field_Type_Definition_Factory' => dirname( __FILE__ ) . '/models/field/type/definition_factory.php',
13
+ 'Types_Field_Group_User_Factory' => dirname( __FILE__ ) . '/models/field/group/user_factory.php',
14
+ 'Types_Field_Group_Post' => dirname( __FILE__ ) . '/models/field/group/post.php',
15
+ 'Types_Field_Group_Factory' => dirname( __FILE__ ) . '/models/field/group/factory.php',
16
+ 'Types_Field_Group_User' => dirname( __FILE__ ) . '/models/field/group/user.php',
17
+ 'Types_Field_Group_Post_Factory' => dirname( __FILE__ ) . '/models/field/group/post_factory.php',
18
+ 'Types_Field_Group_Term' => dirname( __FILE__ ) . '/models/field/group/term.php',
19
+ 'Types_Field_Group_Term_Factory' => dirname( __FILE__ ) . '/models/field/group/term_factory.php',
20
+ 'Types_Field_Group' => dirname( __FILE__ ) . '/models/field/group.php',
21
+ 'Types_Setting_Option_Interface' => dirname( __FILE__ ) . '/models/setting/option/interface.php',
22
+ 'Types_Setting_Interface' => dirname( __FILE__ ) . '/models/setting/interface.php',
23
+ 'Types_Setting_Boolean' => dirname( __FILE__ ) . '/models/setting/boolean.php',
24
+ 'Types_Setting_Option' => dirname( __FILE__ ) . '/models/setting/option.php',
25
+ 'Types_Setting_Preset_Information_Table' => dirname( __FILE__ ) . '/models/setting/preset/information_table.php',
26
+ 'Types_Taxonomy' => dirname( __FILE__ ) . '/models/taxonomy.php',
27
+ 'Types_Post_Type' => dirname( __FILE__ ) . '/models/post_type.php',
28
+ 'Types_Helper_Create_Content_Template' => dirname( __FILE__ ) . '/models/helper/create/content_template.php',
29
+ 'Types_Helper_Create_Layout' => dirname( __FILE__ ) . '/models/helper/create/layout.php',
30
+ 'Types_Helper_Create_View' => dirname( __FILE__ ) . '/models/helper/create/view.php',
31
+ 'Types_Helper_Create_Wordpress_Archive' => dirname( __FILE__ ) . '/models/helper/create/wordpress_archive.php',
32
+ 'Types_Helper_Create_Form' => dirname( __FILE__ ) . '/models/helper/create/form.php',
33
+ 'Types_Helper_Output_Interface' => dirname( __FILE__ ) . '/models/helper/output/interface.php',
34
+ 'Types_Helper_Output_Meta_Box' => dirname( __FILE__ ) . '/models/helper/output/meta_box.php',
35
+ 'Types_Helper_Url' => dirname( __FILE__ ) . '/models/helper/url.php',
36
+ 'Types_Helper_Twig' => dirname( __FILE__ ) . '/models/helper/twig.php',
37
+ 'Types_Helper_Placeholder' => dirname( __FILE__ ) . '/models/helper/placeholder.php',
38
+ 'Types_Helper_Condition' => dirname( __FILE__ ) . '/models/helper/condition.php',
39
+ 'Types_Helper_Condition_Type_Post_Or_Page' => dirname( __FILE__ ) . '/models/helper/condition/type/post_or_page.php',
40
+ 'Types_Helper_Condition_Type_No_Post_Or_Page' => dirname( __FILE__ ) . '/models/helper/condition/type/no_post_or_page.php',
41
+ 'Types_Helper_Condition_Type_Fields_Assigned' => dirname( __FILE__ ) . '/models/helper/condition/type/fields_assigned.php',
42
+ 'Types_Helper_Condition_Template' => dirname( __FILE__ ) . '/models/helper/condition/template.php',
43
+ 'Types_Helper_Condition_Layouts_Template_Missing' => dirname( __FILE__ ) . '/models/helper/condition/layouts/template_missing.php',
44
+ 'Types_Helper_Condition_Layouts_Active' => dirname( __FILE__ ) . '/models/helper/condition/layouts/active.php',
45
+ 'Types_Helper_Condition_Layouts_Missing' => dirname( __FILE__ ) . '/models/helper/condition/layouts/missing.php',
46
+ 'Types_Helper_Condition_Layouts_Template_Exists' => dirname( __FILE__ ) . '/models/helper/condition/layouts/template_exists.php',
47
+ 'Types_Helper_Condition_Layouts_Archive_Exists' => dirname( __FILE__ ) . '/models/helper/condition/layouts/archive_exists.php',
48
+ 'Types_Helper_Condition_Layouts_Compatible' => dirname( __FILE__ ) . '/models/helper/condition/layouts/compatible.php',
49
+ 'Types_Helper_Condition_Layouts_Archive_Missing' => dirname( __FILE__ ) . '/models/helper/condition/layouts/archive_missing.php',
50
+ 'Types_Helper_Condition_Single_Has_Fields' => dirname( __FILE__ ) . '/models/helper/condition/single/has_fields.php',
51
+ 'Types_Helper_Condition_Single_Missing' => dirname( __FILE__ ) . '/models/helper/condition/single/missing.php',
52
+ 'Types_Helper_Condition_Single_No_Fields' => dirname( __FILE__ ) . '/models/helper/condition/single/no_fields.php',
53
+ 'Types_Helper_Condition_Single_Exists' => dirname( __FILE__ ) . '/models/helper/condition/single/exists.php',
54
+ 'Types_Helper_Condition_Archive_Support' => dirname( __FILE__ ) . '/models/helper/condition/archive/support.php',
55
+ 'Types_Helper_Condition_Archive_Has_Fields' => dirname( __FILE__ ) . '/models/helper/condition/archive/has_fields.php',
56
+ 'Types_Helper_Condition_Archive_No_Support' => dirname( __FILE__ ) . '/models/helper/condition/archive/no_support.php',
57
+ 'Types_Helper_Condition_Archive_Missing' => dirname( __FILE__ ) . '/models/helper/condition/archive/missing.php',
58
+ 'Types_Helper_Condition_Archive_No_Fields' => dirname( __FILE__ ) . '/models/helper/condition/archive/no_fields.php',
59
+ 'Types_Helper_Condition_Archive_Exists' => dirname( __FILE__ ) . '/models/helper/condition/archive/exists.php',
60
+ 'Types_Helper_Condition_Screen' => dirname( __FILE__ ) . '/models/helper/condition/screen.php',
61
+ 'Types_Helper_Condition_Views_Template_Missing' => dirname( __FILE__ ) . '/models/helper/condition/views/template_missing.php',
62
+ 'Types_Helper_Condition_Views_Active' => dirname( __FILE__ ) . '/models/helper/condition/views/active.php',
63
+ 'Types_Helper_Condition_Views_Missing' => dirname( __FILE__ ) . '/models/helper/condition/views/missing.php',
64
+ 'Types_Helper_Condition_Views_Views_Exist' => dirname( __FILE__ ) . '/models/helper/condition/views/views_exist.php',
65
+ 'Types_Helper_Condition_Views_Template_Exists' => dirname( __FILE__ ) . '/models/helper/condition/views/template_exists.php',
66
+ 'Types_Helper_Condition_Views_Archive_Exists' => dirname( __FILE__ ) . '/models/helper/condition/views/archive_exists.php',
67
+ 'Types_Helper_Condition_Views_Views_Missing' => dirname( __FILE__ ) . '/models/helper/condition/views/views_missing.php',
68
+ 'Types_Helper_Condition_Views_Archive_Missing' => dirname( __FILE__ ) . '/models/helper/condition/views/archive_missing.php',
69
+ 'Types_Helper_Condition_Cred_Active' => dirname( __FILE__ ) . '/models/helper/condition/cred/active.php',
70
+ 'Types_Helper_Condition_Cred_Missing' => dirname( __FILE__ ) . '/models/helper/condition/cred/missing.php',
71
+ 'Types_Helper_Condition_Cred_Forms_Exist' => dirname( __FILE__ ) . '/models/helper/condition/cred/forms_exist.php',
72
+ 'Types_Helper_Condition_Cred_Forms_Missing' => dirname( __FILE__ ) . '/models/helper/condition/cred/forms_missing.php',
73
+ 'Types_Setting' => dirname( __FILE__ ) . '/models/setting.php',
74
+ 'Types_Api_Helper' => dirname( __FILE__ ) . '/models/api/helper.php',
75
+ 'Types_Information_Container' => dirname( __FILE__ ) . '/models/information/container.php',
76
+ 'Types_Information_Message_Post_Type' => dirname( __FILE__ ) . '/models/information/message/post_type.php',
77
+ 'Types_Information_Message' => dirname( __FILE__ ) . '/models/information/message.php',
78
+ 'Types_Information_Table' => dirname( __FILE__ ) . '/models/information/table.php',
79
+ 'Types_Wpml_Field_Group_String' => dirname( __FILE__ ) . '/models/wpml/field/group/string.php',
80
+ 'Types_Wpml_Field_Group_String_Name' => dirname( __FILE__ ) . '/models/wpml/field/group/string/name.php',
81
+ 'Types_Wpml_Field_Group_String_Description' => dirname( __FILE__ ) . '/models/wpml/field/group/string/description.php',
82
+ 'Types_Wpml_Interface' => dirname( __FILE__ ) . '/models/wpml/interface.php',
83
+ 'Types_Wpml_Field_Group' => dirname( __FILE__ ) . '/models/wpml/field_group.php',
84
+ 'Types_Field_Type_Converter' => dirname( __FILE__ ) . '/controllers/field/type_converter.php',
85
+ 'Types_Field_Utils' => dirname( __FILE__ ) . '/controllers/field/utils.php',
86
+ 'Types_Frontend' => dirname( __FILE__ ) . '/controllers/frontend.php',
87
+ 'Types_Import_Export' => dirname( __FILE__ ) . '/controllers/import_export.php',
88
+ 'Types_Admin_Menu' => dirname( __FILE__ ) . '/controllers/admin_menu.php',
89
+ 'Types_Interop_Handler_Interface' => dirname( __FILE__ ) . '/controllers/interop/handler_interface.php',
90
+ 'Types_Interop_Handler_Wpml' => dirname( __FILE__ ) . '/controllers/interop/handler/wpml.php',
91
+ 'Types_Interop_Handler_Use_Any_Font' => dirname( __FILE__ ) . '/controllers/interop/handler/use_any_font.php',
92
+ 'Types_Interop_Handler_Divi' => dirname( __FILE__ ) . '/controllers/interop/handler/divi.php',
93
+ 'Types_Interop_Mediator' => dirname( __FILE__ ) . '/controllers/interop/mediator.php',
94
+ 'Types_Assets' => dirname( __FILE__ ) . '/controllers/assets.php',
95
+ 'Types_Ajax' => dirname( __FILE__ ) . '/controllers/ajax.php',
96
+ 'Types_Embedded' => dirname( __FILE__ ) . '/controllers/embedded.php',
97
+ 'Types_Page_Extension_Edit_Post_Type' => dirname( __FILE__ ) . '/controllers/page/extension/edit_post_type.php',
98
+ 'Types_Page_Extension_Edit_Post_Fields' => dirname( __FILE__ ) . '/controllers/page/extension/edit_post_fields.php',
99
+ 'Types_Page_Extension_Edit_Post' => dirname( __FILE__ ) . '/controllers/page/extension/edit_post.php',
100
+ 'Types_Page_Extension_Settings' => dirname( __FILE__ ) . '/controllers/page/extension/settings.php',
101
+ 'Types_Page_Abstract' => dirname( __FILE__ ) . '/controllers/page/abstract.php',
102
+ 'Types_Page_Hidden_Helper' => dirname( __FILE__ ) . '/controllers/page/hidden/helper.php',
103
+ 'Types_Page_Dashboard' => dirname( __FILE__ ) . '/controllers/page/dashboard.php',
104
+ 'Types_Page_Field_Control' => dirname( __FILE__ ) . '/controllers/page/field_control.php',
105
+ 'Types_Dialog_Box' => dirname( __FILE__ ) . '/controllers/dialog_box.php',
106
+ 'Types_Api_Handler_Interface' => dirname( __FILE__ ) . '/controllers/api/handler/interface.php',
107
+ 'Types_Api_Handler_Query_Groups' => dirname( __FILE__ ) . '/controllers/api/handler/query_groups.php',
108
+ 'Types_Api_Handler_Import_From_Zip_File' => dirname( __FILE__ ) . '/controllers/api/handler/import_from_zip_file.php',
109
+ 'Types_Information_Controller' => dirname( __FILE__ ) . '/controllers/information/controller.php',
110
+ 'Types_Admin' => dirname( __FILE__ ) . '/controllers/admin.php',
111
+ 'Types_Asset_Help_Tab_Loader' => dirname( __FILE__ ) . '/controllers/asset/help_tab_loader.php',
112
+ 'Types_Asset_Manager' => dirname( __FILE__ ) . '/controllers/asset/manager.php',
113
+ 'Types_Main' => dirname( __FILE__ ) . '/controllers/main.php',
114
+ 'Types_Upgrade' => dirname( __FILE__ ) . '/controllers/upgrade.php',
115
+ 'Types_Api' => dirname( __FILE__ ) . '/controllers/api.php',
116
+ 'Types_Ajax_Handler_Interface' => dirname( __FILE__ ) . '/controllers/ajax/handler_interface.php',
117
+ 'Types_Ajax_Handler_Settings_Action' => dirname( __FILE__ ) . '/controllers/ajax/handler/settings_action.php',
118
+ 'Types_Ajax_Handler_Abstract' => dirname( __FILE__ ) . '/controllers/ajax/handler/abstract.php',
119
+ 'Types_Ajax_Handler_Field_Control_Action' => dirname( __FILE__ ) . '/controllers/ajax/handler/field_control_action.php',
120
+ 'Types_Ajax_Handler_Check_Slug_Conflicts' => dirname( __FILE__ ) . '/controllers/ajax/handler/check_slug_conflicts.php',
121
+ 'Types_Utils' => dirname( __FILE__ ) . '/controllers/utils.php',
122
+ 'Types_Twig_Autoloader' => dirname( __FILE__ ) . '/controllers/twig_autoloader.php',
123
+ 'WPCF_Loader' => dirname( __FILE__ ) . '/../library/toolset/types/embedded/classes/loader.php',
124
+ 'WPCF_Usermeta_Repeater' => dirname( __FILE__ ) . '/../library/toolset/types/embedded/classes/usermeta_repeater.php',
125
+ 'WPCF_Field_Renderer_Abstract' => dirname( __FILE__ ) . '/../library/toolset/types/embedded/classes/field/renderer/abstract.php',
126
+ 'WPCF_Field_Renderer_Preview_Checkbox' => dirname( __FILE__ ) . '/../library/toolset/types/embedded/classes/field/renderer/preview/checkbox.php',
127
+ 'WPCF_Field_Renderer_Preview_Radio' => dirname( __FILE__ ) . '/../library/toolset/types/embedded/classes/field/renderer/preview/radio.php',
128
+ 'WPCF_Field_Renderer_Preview_URL' => dirname( __FILE__ ) . '/../library/toolset/types/embedded/classes/field/renderer/preview/url.php',
129
+ 'WPCF_Field_Renderer_Preview_Image' => dirname( __FILE__ ) . '/../library/toolset/types/embedded/classes/field/renderer/preview/image.php',
130
+ 'WPCF_Field_Renderer_Preview_Textfield' => dirname( __FILE__ ) . '/../library/toolset/types/embedded/classes/field/renderer/preview/textfield.php',
131
+ 'WPCF_Field_Renderer_Preview_File' => dirname( __FILE__ ) . '/../library/toolset/types/embedded/classes/field/renderer/preview/file.php',
132
+ 'WPCF_Field_Renderer_Preview_Checkboxes' => dirname( __FILE__ ) . '/../library/toolset/types/embedded/classes/field/renderer/preview/checkboxes.php',
133
+ 'WPCF_Field_Renderer_Preview_Skype' => dirname( __FILE__ ) . '/../library/toolset/types/embedded/classes/field/renderer/preview/skype.php',
134
+ 'WPCF_Field_Renderer_Preview_Base' => dirname( __FILE__ ) . '/../library/toolset/types/embedded/classes/field/renderer/preview/base.php',
135
+ 'WPCF_Field_Renderer_Preview_Colorpicker' => dirname( __FILE__ ) . '/../library/toolset/types/embedded/classes/field/renderer/preview/colorpicker.php',
136
+ 'WPCF_Field_Renderer_Preview_Address' => dirname( __FILE__ ) . '/../library/toolset/types/embedded/classes/field/renderer/preview/address.php',
137
+ 'WPCF_Field_Renderer_Preview_Date' => dirname( __FILE__ ) . '/../library/toolset/types/embedded/classes/field/renderer/preview/date.php',
138
+ 'WPCF_Field_Renderer_Factory' => dirname( __FILE__ ) . '/../library/toolset/types/embedded/classes/field/renderer/factory.php',
139
+ 'WPCF_Field_Renderer_Toolset_Forms' => dirname( __FILE__ ) . '/../library/toolset/types/embedded/classes/field/renderer/toolset_forms.php',
140
+ 'WPCF_Field_Accessor_Dummy' => dirname( __FILE__ ) . '/../library/toolset/types/embedded/classes/field/accessor/dummy.php',
141
+ 'WPCF_Field_Accessor_Abstract' => dirname( __FILE__ ) . '/../library/toolset/types/embedded/classes/field/accessor/abstract.php',
142
+ 'WPCF_Field_Accessor_Termmeta_Field' => dirname( __FILE__ ) . '/../library/toolset/types/embedded/classes/field/accessor/termmeta_field.php',
143
+ 'WPCF_Field_Accessor_Termmeta' => dirname( __FILE__ ) . '/../library/toolset/types/embedded/classes/field/accessor/termmeta.php',
144
+ 'WPCF_Field_Instance_Unsaved' => dirname( __FILE__ ) . '/../library/toolset/types/embedded/classes/field/instance_unsaved.php',
145
+ 'WPCF_Field_DataMapper_Checkbox' => dirname( __FILE__ ) . '/../library/toolset/types/embedded/classes/field/datamapper/checkbox.php',
146
+ 'WPCF_Field_DataMapper_Abstract' => dirname( __FILE__ ) . '/../library/toolset/types/embedded/classes/field/datamapper/abstract.php',
147
+ 'WPCF_Field_DataMapper_Checkboxes' => dirname( __FILE__ ) . '/../library/toolset/types/embedded/classes/field/datamapper/checkboxes.php',
148
+ 'WPCF_Field_DataMapper_Identity' => dirname( __FILE__ ) . '/../library/toolset/types/embedded/classes/field/datamapper/identity.php',
149
+ 'WPCF_Field_Definition_Factory_Post' => dirname( __FILE__ ) . '/../library/toolset/types/embedded/classes/field/definition_factory_post.php',
150
+ 'WPCF_Field_Hooks_API' => dirname( __FILE__ ) . '/../library/toolset/types/embedded/classes/field/hooks_api.php',
151
+ 'WPCF_Field_Option_Radio' => dirname( __FILE__ ) . '/../library/toolset/types/embedded/classes/field/option_radio.php',
152
+ 'WPCF_Field_Definition_Term' => dirname( __FILE__ ) . '/../library/toolset/types/embedded/classes/field/definition_term.php',
153
+ 'WPCF_Field_Definition_Factory_Term' => dirname( __FILE__ ) . '/../library/toolset/types/embedded/classes/field/definition_factory_term.php',
154
+ 'WPCF_Field_Definition_Generic' => dirname( __FILE__ ) . '/../library/toolset/types/embedded/classes/field/definition_generic.php',
155
+ 'WPCF_Field_Definition_Abstract' => dirname( __FILE__ ) . '/../library/toolset/types/embedded/classes/field/definition_abstract.php',
156
+ 'WPCF_Field_Instance' => dirname( __FILE__ ) . '/../library/toolset/types/embedded/classes/field/instance.php',
157
+ 'WPCF_Field_Option_Select' => dirname( __FILE__ ) . '/../library/toolset/types/embedded/classes/field/option_select.php',
158
+ 'WPCF_Field_Definition_Factory_User' => dirname( __FILE__ ) . '/../library/toolset/types/embedded/classes/field/definition_factory_user.php',
159
+ 'WPCF_Field_Definition' => dirname( __FILE__ ) . '/../library/toolset/types/embedded/classes/field/definition.php',
160
+ 'WPCF_Field_Option_Checkboxes' => dirname( __FILE__ ) . '/../library/toolset/types/embedded/classes/field/option_checkboxes.php',
161
+ 'WPCF_Field_Definition_Factory' => dirname( __FILE__ ) . '/../library/toolset/types/embedded/classes/field/definition_factory.php',
162
+ 'WPCF_Field_Definition_User' => dirname( __FILE__ ) . '/../library/toolset/types/embedded/classes/field/definition_user.php',
163
+ 'WPCF_Field_Data_Saver' => dirname( __FILE__ ) . '/../library/toolset/types/embedded/classes/field/data_saver.php',
164
+ 'WPCF_Field_Instance_Term' => dirname( __FILE__ ) . '/../library/toolset/types/embedded/classes/field/instance_term.php',
165
+ 'WPCF_Field_Definition_Post' => dirname( __FILE__ ) . '/../library/toolset/types/embedded/classes/field/definition_post.php',
166
+ 'WPCF_Field_Instance_Abstract' => dirname( __FILE__ ) . '/../library/toolset/types/embedded/classes/field/instance_abstract.php',
167
+ 'WPCF_Path' => dirname( __FILE__ ) . '/../library/toolset/types/embedded/classes/path.php',
168
+ 'WPCF_Repeater' => dirname( __FILE__ ) . '/../library/toolset/types/embedded/classes/repeater.php',
169
+ 'WPCF_Termmeta_Repeater' => dirname( __FILE__ ) . '/../library/toolset/types/embedded/classes/repeater.php',
170
+ 'WPCF_GUI_Term_Field_Editing' => dirname( __FILE__ ) . '/../library/toolset/types/embedded/classes/gui/term_field_editing.php',
171
+ 'WPCF_Validation' => dirname( __FILE__ ) . '/../library/toolset/types/embedded/classes/validation.php',
172
+ 'WPCF_Import_Export' => dirname( __FILE__ ) . '/../library/toolset/types/embedded/classes/class.wpcf-import-export.php',
173
+ 'WPCF_WPViews' => dirname( __FILE__ ) . '/../library/toolset/types/embedded/classes/wpviews.php',
174
+ 'WPCF_Usermeta_Field' => dirname( __FILE__ ) . '/../library/toolset/types/embedded/classes/usermeta_field.php',
175
+ 'Enlimbo_Forms_Wpcf' => dirname( __FILE__ ) . '/../library/toolset/types/embedded/classes/forms.php',
176
+ 'WPCF_Fields' => dirname( __FILE__ ) . '/../library/toolset/types/embedded/classes/fields.php',
177
+ 'WPCF_Relationship' => dirname( __FILE__ ) . '/../library/toolset/types/embedded/classes/relationship.php',
178
+ 'Wpcf_Cake_Validation' => dirname( __FILE__ ) . '/../library/toolset/types/embedded/classes/validation-cakephp.php',
179
+ 'WPCF_Post_Types' => dirname( __FILE__ ) . '/../library/toolset/types/embedded/classes/class.wpcf-post-types.php',
180
+ 'WPCF_Evaluate' => dirname( __FILE__ ) . '/../library/toolset/types/embedded/classes/evaluate.php',
181
+ 'WPCF_Conditional' => dirname( __FILE__ ) . '/../library/toolset/types/embedded/classes/conditional.php',
182
+ 'WPCF_Helper_Ajax' => dirname( __FILE__ ) . '/../library/toolset/types/embedded/classes/helper.ajax.php',
183
+ 'WPCF_Editor' => dirname( __FILE__ ) . '/../library/toolset/types/embedded/classes/editor.php',
184
+ 'WPCF_Field' => dirname( __FILE__ ) . '/../library/toolset/types/embedded/classes/field.php',
185
+ 'WPCF_Termmeta_Field' => dirname( __FILE__ ) . '/../library/toolset/types/embedded/classes/field.php',
186
+ 'WPCF_Relationship_Child_Form' => dirname( __FILE__ ) . '/../library/toolset/types/embedded/classes/relationship/form-child.php',
187
+ 'WPCF_Types_Marketing_Messages' => dirname( __FILE__ ) . '/../library/toolset/types/includes/classes/class.wpcf.marketing.messages.php',
188
+ 'WPCF_Custom_Fields_List_Table' => dirname( __FILE__ ) . '/../library/toolset/types/includes/classes/class.wpcf.custom.fields.list.table.php',
189
+ 'Types_Admin_Page' => dirname( __FILE__ ) . '/../library/toolset/types/includes/classes/class.types.admin.page.php',
190
+ 'Types_Admin_Post_Types_List_Table' => dirname( __FILE__ ) . '/../library/toolset/types/includes/classes/class.types.admin.post.types.list.table.php',
191
+ 'WPCF_Roles' => dirname( __FILE__ ) . '/../library/toolset/types/includes/classes/class.wpcf.roles.php',
192
+ 'Types_Admin_Usermeta_Control_Table' => dirname( __FILE__ ) . '/../library/toolset/types/includes/classes/class.types.admin.usermeta.table.php',
193
+ 'Types_Admin_Taxonomies' => dirname( __FILE__ ) . '/../library/toolset/types/includes/classes/class.types.admin.taxonomies.php',
194
+ 'Types_Admin_Post_Type' => dirname( __FILE__ ) . '/../library/toolset/types/includes/classes/class.types.admin.post-type.php',
195
+ 'WPCF_Types_Marketing' => dirname( __FILE__ ) . '/../library/toolset/types/includes/classes/class.wpcf.marketing.php',
196
+ 'Types_Admin_Fields' => dirname( __FILE__ ) . '/../library/toolset/types/includes/classes/class.types.admin.fields.php',
197
+ 'Types_Admin_Taxonomies_List_Table' => dirname( __FILE__ ) . '/../library/toolset/types/includes/classes/class.types.admin.taxonomies.list.table.php',
198
+ 'WPCF_Page_Listing_Abstract' => dirname( __FILE__ ) . '/../library/toolset/types/includes/classes/page/listing/abstract.php',
199
+ 'WPCF_Page_Listing_Table' => dirname( __FILE__ ) . '/../library/toolset/types/includes/classes/page/listing/table.php',
200
+ 'WPCF_Page_Listing_Termmeta_Table' => dirname( __FILE__ ) . '/../library/toolset/types/includes/classes/page/listing/termmeta_table.php',
201
+ 'WPCF_Page_Listing_Termmeta' => dirname( __FILE__ ) . '/../library/toolset/types/includes/classes/page/listing/termmeta.php',
202
+ 'WPCF_Page_Abstract' => dirname( __FILE__ ) . '/../library/toolset/types/includes/classes/page/abstract.php',
203
+ 'WPCF_Page_Edit_Termmeta_Form' => dirname( __FILE__ ) . '/../library/toolset/types/includes/classes/page/edit/termmeta_form.php',
204
+ 'WPCF_Page_Edit_Termmeta' => dirname( __FILE__ ) . '/../library/toolset/types/includes/classes/page/edit/termmeta.php',
205
+ 'Types_Admin_Edit_Fields' => dirname( __FILE__ ) . '/../library/toolset/types/includes/classes/class.types.admin.edit.fields.php',
206
+ 'Types_Admin_Edit_Taxonomy' => dirname( __FILE__ ) . '/../library/toolset/types/includes/classes/class.types.admin.edit.taxonomy.php',
207
+ 'Types_Admin_Edit_Meta_Fields_Group' => dirname( __FILE__ ) . '/../library/toolset/types/includes/classes/class.types.admin.edit.meta.fields.group.php',
208
+ 'Types_Admin_Edit_Custom_Fields_Group' => dirname( __FILE__ ) . '/../library/toolset/types/includes/classes/class.types.admin.edit.custom.fields.group.php',
209
+ 'Types_Admin_Usermeta_Groups_List_Table' => dirname( __FILE__ ) . '/../library/toolset/types/includes/classes/class.types.admin.usermeta.groups.list.table.php',
210
+ 'Types_Fields_Conditional' => dirname( __FILE__ ) . '/../library/toolset/types/includes/classes/class.types.fields.conditional.php',
211
+ 'Types_Admin_Edit_Post_Type' => dirname( __FILE__ ) . '/../library/toolset/types/includes/classes/class.types.admin.edit.post.type.php',
212
+ 'Toolset_Filesystem_Exception' => dirname( __FILE__ ) . '/../library/toolset/filesystem/exception.php',
213
+ 'Toolset_Filesystem_Directory' => dirname( __FILE__ ) . '/../library/toolset/filesystem/directory.php',
214
+ 'Toolset_Filesystem_File' => dirname( __FILE__ ) . '/../library/toolset/filesystem/file.php',
215
+ );
application/bootstrap.php CHANGED
@@ -7,14 +7,6 @@ require_once( TYPES_ABSPATH . '/library/toolset/autoloader/autoloader.php' );
7
 
8
  $autoloader = Toolset_Autoloader::get_instance();
9
 
10
- $autoloader->add_paths(
11
- 'Types',
12
- array(
13
- TYPES_ABSPATH . '/application/controllers',
14
- TYPES_ABSPATH . '/application/models',
15
- )
16
- );
17
-
18
  $autoloader->add_path( 'Toolset', TYPES_ABSPATH . '/library/toolset' );
19
 
20
 
@@ -65,10 +57,7 @@ require_once( dirname( __FILE__ ) . '/functions.php' );
65
  require_once( dirname( __FILE__ ) . '/../library/toolset/types/wpcf.php' );
66
 
67
  // Public API
68
- require_once( dirname( __FILE__ ) . '/api.php' );
69
-
70
- // Handle embedded plugin mode
71
- Types_Embedded::initialize();
72
 
73
  // Jumpstart new Types
74
  Types_Main::initialize();
7
 
8
  $autoloader = Toolset_Autoloader::get_instance();
9
 
 
 
 
 
 
 
 
 
10
  $autoloader->add_path( 'Toolset', TYPES_ABSPATH . '/library/toolset' );
11
 
12
 
57
  require_once( dirname( __FILE__ ) . '/../library/toolset/types/wpcf.php' );
58
 
59
  // Public API
60
+ require_once( dirname( __FILE__ ) . '/controllers/main.php' );
 
 
 
61
 
62
  // Jumpstart new Types
63
  Types_Main::initialize();
application/controllers/ajax.php CHANGED
@@ -173,14 +173,14 @@ final class Types_Ajax {
173
 
174
  // Check permissions
175
  if ( ! current_user_can( $capability_needed ) ) {
176
- $error_message = __( 'You do not have permissions for that.', 'wpv-views' );
177
  $error_type = 'capability';
178
  $is_error = true;
179
  }
180
 
181
  // Check nonce
182
  if ( !$is_error && !wp_verify_nonce( wpcf_getarr( $parameter_source, $nonce_parameter, '' ), $nonce_name ) ) {
183
- $error_message = __( 'Your security credentials have expired. Please reload the page to get new ones.', 'wpv-views' );
184
  $error_type = 'nonce';
185
  $is_error = true;
186
  }
173
 
174
  // Check permissions
175
  if ( ! current_user_can( $capability_needed ) ) {
176
+ $error_message = __( 'You do not have permissions for that.', 'wpcf' );
177
  $error_type = 'capability';
178
  $is_error = true;
179
  }
180
 
181
  // Check nonce
182
  if ( !$is_error && !wp_verify_nonce( wpcf_getarr( $parameter_source, $nonce_parameter, '' ), $nonce_name ) ) {
183
+ $error_message = __( 'Your security credentials have expired. Please reload the page to get new ones.', 'wpcf' );
184
  $error_type = 'nonce';
185
  $is_error = true;
186
  }
application/{api.php → controllers/api.php} RENAMED
File without changes
application/controllers/asset/manager.php CHANGED
@@ -13,8 +13,6 @@ final class Types_Asset_Manager extends Toolset_Assets_Manager {
13
  //
14
  // NEVER EVER use handles defined here as hardcoded strings, they may change at any time.
15
 
16
- const SCRIPT_KNOCKOUT = 'knockout';
17
-
18
  const SCRIPT_ADJUST_MENU_LINK = 'types-adjust-menu-link';
19
  const SCRIPT_SLUG_CONFLICT_CHECKER = 'types-slug-conflict-checker';
20
 
@@ -26,16 +24,6 @@ final class Types_Asset_Manager extends Toolset_Assets_Manager {
26
  const SCRIPT_JQUERY_UI_VALIDATION = 'wpcf-form-validation';
27
  const SCRIPT_ADDITIONAL_VALIDATION_RULES = 'wpcf-form-validation-additional';
28
 
29
- // Registered in Toolset common
30
-
31
- const SCRIPT_DIALOG_BOXES = 'ddl-dialog-boxes';
32
- const SCRIPT_UTILS = 'toolset-utils';
33
- const SCRIPT_HEADJS = 'headjs';
34
-
35
- // WordPress Core handles
36
-
37
- const STYLE_JQUERY_UI_DIALOG = 'wp-jquery-ui-dialog';
38
-
39
 
40
  /**
41
  * @return Types_Asset_Manager
13
  //
14
  // NEVER EVER use handles defined here as hardcoded strings, they may change at any time.
15
 
 
 
16
  const SCRIPT_ADJUST_MENU_LINK = 'types-adjust-menu-link';
17
  const SCRIPT_SLUG_CONFLICT_CHECKER = 'types-slug-conflict-checker';
18
 
24
  const SCRIPT_JQUERY_UI_VALIDATION = 'wpcf-form-validation';
25
  const SCRIPT_ADDITIONAL_VALIDATION_RULES = 'wpcf-form-validation-additional';
26
 
 
 
 
 
 
 
 
 
 
 
27
 
28
  /**
29
  * @return Types_Asset_Manager
application/controllers/import_export.php CHANGED
@@ -3,25 +3,28 @@
3
  /**
4
  * Types import and export controller.
5
  *
6
- * Currently it only contains new code that is hooked into legacy methods plus a bunch of temporary workarounds, but
7
  * has the ambition to become the central point of handling all import and export-related activities.
8
  *
9
  * @since 2.1
10
  */
11
  final class Types_Import_Export {
12
-
13
  private static $instance;
14
-
15
  public static function get_instance() {
16
- if( null == self::$instance ) {
17
  self::$instance = new self();
18
  }
 
19
  return self::$instance;
20
  }
21
-
22
- private function __clone() { }
23
-
24
- private function __construct() { }
 
 
25
 
26
 
27
  /**
@@ -78,17 +81,18 @@ final class Types_Import_Export {
78
  * Completely handle retrieving export data for field groups of one domain.
79
  *
80
  * @param string $domain Valid field domain.
 
81
  * @return array Exported field groups.
82
  * @since 2.1
83
  */
84
  public function export_field_groups_for_domain( $domain ) {
85
 
86
  $group_factory = Types_Field_Utils::get_group_factory_by_domain( $domain );
87
- $all_groups = $group_factory->query_groups();
88
 
89
  // Each group will handle its own export.
90
  $results = array();
91
- foreach( $all_groups as $field_group ) {
92
  $results[] = $field_group->get_export_object();
93
  }
94
 
@@ -102,18 +106,19 @@ final class Types_Import_Export {
102
  * Completely handle retrieving export data for field definitions of one domain.
103
  *
104
  * @param string $domain Valid field domain.
 
105
  * @return array Exported field definitions.
106
  * @since 2.1
107
  */
108
  public function export_field_definitions_for_domain( $domain ) {
109
 
110
  $definition_factory = Types_Field_Utils::get_definition_factory_by_domain( $domain );
111
- $all_definitions = $definition_factory->query_definitions( array( 'filter' => 'types' ) );
112
 
113
  // Each field definition will handle its own export.
114
  $results = array();
115
  /** @var WPCF_Field_Definition $field_definition */
116
- foreach( $all_definitions as $field_definition ) {
117
  $results[] = $field_definition->get_export_object();
118
  }
119
 
@@ -137,7 +142,7 @@ final class Types_Import_Export {
137
  public function add_checksum_to_object( $data, $keys_for_checksum = null, $keys_to_remove = null ) {
138
 
139
  // pluck requested keys
140
- if( null == $keys_for_checksum ) {
141
  $checksum_source = $data;
142
  } else {
143
  $checksum_source = array();
@@ -147,16 +152,16 @@ final class Types_Import_Export {
147
  }
148
  }
149
  }
150
-
151
  // unset undesired keys
152
- if( is_array( $keys_to_remove ) ) {
153
  $checksum_source = $this->unset_recursive( $checksum_source, $keys_to_remove );
154
  }
155
 
156
  $checksum = $this->generate_checksum( $checksum_source );
157
 
158
  $data[ self::XML_KEY_CHECKSUM ] = $checksum;
159
- $data[ self::XML_KEY_HASH ] = $checksum;
160
 
161
  return $data;
162
  }
@@ -182,19 +187,19 @@ final class Types_Import_Export {
182
  * @since 2.1
183
  */
184
  private function unset_recursive( $unset_from, $unset_what ) {
185
- if( is_array( $unset_from ) ) {
186
-
187
  foreach ( $unset_what as $key => $value ) {
188
-
189
  if ( is_array( $value ) && isset( $unset_from[ $key ] ) ) {
190
  $unset_from[ $key ] = $this->unset_recursive( $unset_from[ $key ], $value );
191
  } else {
192
  unset( $unset_from[ $value ] );
193
  }
194
  }
195
-
196
  }
197
-
198
  return $unset_from;
199
  }
200
 
@@ -205,12 +210,14 @@ final class Types_Import_Export {
205
  * @param array $data An associative array representing an object.
206
  * @param string $title
207
  * @param string $id
 
208
  * @return array Updated $data.
209
  * @since 2.1
210
  */
211
  public function annotate_object( $data, $title, $id ) {
212
- $data[ self::XML_TYPES_ID ] = $id;
213
  $data[ self::XML_TYPES_TITLE ] = $title;
 
214
  return $data;
215
  }
216
 
@@ -221,6 +228,7 @@ final class Types_Import_Export {
221
  * Note: Do not touch this.
222
  *
223
  * @param array $data
 
224
  * @return string Checksum
225
  * @since 2.1
226
  */
@@ -233,6 +241,7 @@ final class Types_Import_Export {
233
  * Sort a multidimensional array by keys recursively.
234
  *
235
  * @param array|mixed $data
 
236
  * @return array|mixed Sorted $data.
237
  * @since 2.1
238
  */
@@ -243,55 +252,75 @@ final class Types_Import_Export {
243
  $data[ $key ] = $this->ksort_as_string( $value );
244
  }
245
  }
 
246
  return $data;
247
  }
248
 
249
 
250
  /**
251
  * Import field definitions for given domain.
252
- *
253
  * Note: Currently only term fields are supported.
254
- *
255
  * @param string $domain Valid field domain.
256
  * @param SimpleXMLElement $data Import data from XML.
257
  * @param string $fields_key Node name where the field definitions can be found.
258
  * @param bool $delete_other_fields If true, fields that are not being imported will be deleted from the site.
259
- * @param array $field_settings Part of $_POST from the import form related to these fields.
 
260
  *
261
  * @return array
262
  */
263
- public function process_field_definition_import_per_domain( $domain, $data, $fields_key, $delete_other_fields, $field_settings ) {
 
 
 
 
 
 
 
264
 
265
  $results = array();
266
 
267
  $fields_to_preserve = array();
268
 
269
  $fields_import_data = array();
270
- if( isset( $data->$fields_key ) ) {
271
  /** @noinspection PhpParamsInspection */
272
  $fields_import_data = $this->simplexmlelement_to_object( $data->$fields_key, true );
273
- $fields_import_data = isset( $fields_import_data[ Types_Import_Export::XML_KEY_FIELD ] ) ? $fields_import_data[ Types_Import_Export::XML_KEY_FIELD ] : array();
 
274
  }
275
 
276
- foreach( $fields_import_data as $field_import_data ) {
277
  $field_slug = $field_import_data['slug'];
278
 
 
279
  $import_field = isset( $field_settings[ $field_slug ] ) && isset( $field_settings[ $field_slug ]['add'] );
280
 
281
- if( $import_field ) {
 
 
 
 
 
 
 
 
 
282
  $result = $this->import_field_definition( $domain, $field_import_data );
283
- if( $result['is_success'] ) {
284
  $fields_to_preserve[] = $field_slug;
285
  }
286
  $results[] = array(
287
- 'type' => ( $result['is_success'] ? 'success' : 'error' ),
288
  'content' => $result['display_message']
289
  );
290
  }
291
  }
292
 
293
  $delete_results = $this->maybe_delete_fields( $domain, $delete_other_fields, $fields_to_preserve );
294
- $results = array_merge( $results, $delete_results );
295
 
296
  return $results;
297
 
@@ -303,18 +332,18 @@ final class Types_Import_Export {
303
  * @param bool $delete_other_fields
304
  * @param string[] $fields_to_preserve Array of field slugs that should be preserved.
305
  *
306
- * @return array
307
  */
308
  private function maybe_delete_fields( $domain, $delete_other_fields, $fields_to_preserve ) {
309
 
310
  $results = array();
311
 
312
  $definition_factory = Types_Field_Utils::get_definition_factory_by_domain( $domain );
313
- $option_name = $definition_factory->get_option_name_workaround();
314
 
315
  if ( $delete_other_fields ) {
316
 
317
- $fields_existing = wpcf_admin_fields_get_fields( false, false, false, $option_name );
318
 
319
  foreach ( $fields_existing as $key => $existing_field_definition ) {
320
 
@@ -326,7 +355,7 @@ final class Types_Import_Export {
326
 
327
  if ( ! in_array( $existing_field_slug, $fields_to_preserve ) ) {
328
  $results[] = array(
329
- 'type' => 'success',
330
  'content' => sprintf(
331
  __( 'User field "%s" deleted', 'wpcf' ),
332
  $existing_field_definition['name']
@@ -353,21 +382,23 @@ final class Types_Import_Export {
353
  private function import_field_definition( $domain, $definition_array_import ) {
354
 
355
  $definition = array(
356
- 'id' => $definition_array_import['id'],
357
- 'name' => $definition_array_import['name'],
358
- 'description' => isset( $definition_array_import['description'] ) ? $definition_array_import['description'] : '',
359
- 'type' => $definition_array_import['type'],
360
- 'slug' => $definition_array_import['slug'],
361
- 'data' => ( isset( $definition_array_import['data'] ) && is_array( $definition_array_import['data'] ) ) ? $definition_array_import['data'] : array()
 
 
362
  );
363
 
364
- if( isset( $definition_array_import['meta_key'] ) ) {
365
  $definition['meta_key'] = $definition_array_import['meta_key'];
366
  }
367
 
368
  // WPML
369
  global $iclTranslationManagement;
370
- if ( !empty( $iclTranslationManagement ) && isset( $definition['wpml_action'] ) ) {
371
  $iclTranslationManagement->settings['custom_fields_translation'][ wpcf_types_get_meta_prefix( $definition ) . $definition['slug'] ] = $definition['wpml_action'];
372
  $iclTranslationManagement->save_settings();
373
  }
@@ -376,7 +407,7 @@ final class Types_Import_Export {
376
  $definition_factory->set_field_definition_workaround( $definition['slug'], $definition );
377
 
378
  return array(
379
- 'is_success' => true,
380
  'display_message' => sprintf( __( 'Term field "%s" added/updated', 'wpcf' ), $definition['name'] )
381
  );
382
  }
@@ -393,30 +424,63 @@ final class Types_Import_Export {
393
  * @param bool $bulk_overwrite_groups If true, all (conflicting) groups will be overwritten by the ones from import.
394
  * @param bool $delete_other_groups If true, groups that are not being imported will be deleted from the site.
395
  * @param array $group_settings Part of $_POST from the import form related to these groups.
 
 
396
  * @return array
397
  */
398
- public function process_field_group_import_per_domain( $domain, $data, $groups_key, $bulk_overwrite_groups, $delete_other_groups, $group_settings ) {
399
-
400
- $results = array();
 
 
 
 
 
 
 
 
401
  $groups_to_preserve = array();
402
-
403
  $groups_import_data = array();
404
- if( isset( $data->$groups_key ) ) {
405
  /** @noinspection PhpParamsInspection */
406
  $groups_import_data = $this->simplexmlelement_to_object( $data->$groups_key, true );
407
- $groups_import_data = isset( $groups_import_data[ Types_Import_Export::XML_KEY_GROUP ] ) ? $groups_import_data[ Types_Import_Export::XML_KEY_GROUP ] : array();
 
408
  }
409
-
410
- foreach( $groups_import_data as $group ) {
411
 
412
  // ID of group from the import file
413
  $import_group_id = wpcf_getarr( $group, Types_Field_Group::XML_ID );
414
 
415
- $group_actions = wpcf_getarr( $group_settings, $import_group_id, array( 'add' => true ) );
416
- $group_should_be_imported = isset( $group_actions['add'] );
417
 
418
- if( $group_should_be_imported ) {
419
- if( $bulk_overwrite_groups ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
420
  $group_action = 'update';
421
  } else {
422
  $group_action = wpcf_getarr( $group_actions, 'update', 'add', array( 'add', 'update' ) );
@@ -427,7 +491,7 @@ final class Types_Import_Export {
427
 
428
  $result = null;
429
 
430
- switch( $group_action ) {
431
  case 'add':
432
  $result = $this->import_field_group( $domain, $group, 'create_new' );
433
  break;
@@ -436,12 +500,12 @@ final class Types_Import_Export {
436
  break;
437
  }
438
 
439
- if( null != $result ) {
440
  $results[] = array(
441
- 'type' => ( $result['is_success'] ? 'success' : 'error' ),
442
  'content' => $result['display_message']
443
  );
444
- if( $result['is_success'] ) {
445
  $groups_to_preserve[] = $result['new_group_id'];
446
  }
447
  }
@@ -449,7 +513,7 @@ final class Types_Import_Export {
449
  }
450
 
451
  $delete_results = $this->maybe_delete_groups( $domain, $delete_other_groups, $groups_to_preserve );
452
- $results = array_merge( $results, $delete_results );
453
 
454
  return $results;
455
  }
@@ -465,23 +529,24 @@ final class Types_Import_Export {
465
  private function maybe_delete_groups( $domain, $delete_other_groups, $groups_to_preserve ) {
466
 
467
  $results = array();
468
- if( $delete_other_groups && !empty( $groups_to_preserve ) ) {
469
  $group_factory = Types_Field_Utils::get_group_factory_by_domain( $domain );
470
- $all_groups = $group_factory->query_groups();
471
 
472
- foreach( $all_groups as $group_to_delete ) {
473
- if( !in_array( $group_to_delete->get_id(), $groups_to_preserve ) ) {
474
 
475
  $deleted_group_name = $group_to_delete->get_name();
476
- $deleted = wp_delete_post( $group_to_delete->get_id(), true );
477
- if ( !$deleted ) {
478
  $results[] = array(
479
- 'type' => 'error',
480
- 'content' => sprintf( __( 'Term field group "%s" delete failed', 'wpcf' ), $deleted_group_name )
 
481
  );
482
  } else {
483
  $results[] = array(
484
- 'type' => 'success',
485
  'content' => sprintf( __( 'Term field group "%s" deleted', 'wpcf' ), $deleted_group_name )
486
  );
487
  }
@@ -514,22 +579,22 @@ final class Types_Import_Export {
514
 
515
  $group_factory = Types_Field_Utils::get_group_factory_by_domain( $domain );
516
 
517
- $existing_groups = $group_factory->query_groups( array( 'name' => $group_slug ) );
518
  $group_already_exists = ( count( $existing_groups ) > 0 );
519
 
520
  $new_post = array(
521
- 'post_status' => $group['post_status'],
522
- 'post_type' => $group_factory->get_post_type(),
523
- 'post_title' => $group['post_title'],
524
- 'post_content' => !empty( $group['post_content'] ) ? $group['post_content'] : '',
525
  );
526
 
527
  $update_existing = ( $group_already_exists && 'overwrite' == $conflict_resolution );
528
 
529
- if( $update_existing ) {
530
  $existing_group = $existing_groups[0];
531
- $new_post['ID'] = $existing_group->get_id();
532
- $new_group_id = wp_update_post( $new_post );
533
  } else {
534
  $new_group_id = wp_insert_post( $new_post, true );
535
  }
@@ -537,12 +602,12 @@ final class Types_Import_Export {
537
  $is_success = ( ! is_wp_error( $new_group_id ) && 0 < $new_group_id );
538
 
539
  // Update group's postmeta
540
- if( $is_success && ! empty( $group['meta'] ) ) {
541
  foreach ( $group['meta'] as $meta_key => $meta_value ) {
542
- if( Types_Field_Group_Term::POSTMETA_ASSOCIATED_TAXONOMY == $meta_key ) {
543
  $meta_values = explode( ',', $meta_value );
544
  delete_post_meta( $new_group_id, $meta_key );
545
- foreach( $meta_values as $single_meta_value ) {
546
  update_post_meta( $new_group_id, $meta_key, $single_meta_value );
547
  }
548
  } else {
@@ -552,14 +617,14 @@ final class Types_Import_Export {
552
  }
553
 
554
  // Create display message
555
- if( $is_success ) {
556
- if( $update_existing ) {
557
  $display_message = sprintf( __( 'Term field group "%s" updated', 'wpcf' ), $group['post_title'] );
558
  } else {
559
  $display_message = sprintf( __( 'Term field group "%s" added', 'wpcf' ), $group['post_title'] );
560
  }
561
  } else {
562
- if( $update_existing ) {
563
  $display_message = sprintf( __( 'Term field group "%s" update failed', 'wpcf' ), $group['post_title'] );
564
  } else {
565
  $display_message = sprintf( __( 'Term field group "%s" insert failed', 'wpcf' ), $group['post_title'] );
@@ -567,9 +632,9 @@ final class Types_Import_Export {
567
  }
568
 
569
  return array(
570
- 'is_success' => $is_success,
571
  'display_message' => $display_message,
572
- 'new_group_id' => $new_group_id
573
  );
574
  }
575
 
@@ -581,35 +646,53 @@ final class Types_Import_Export {
581
  * @return array|null
582
  */
583
  public function simplexmlelement_to_object( $element, $allways_expand_top_level = false ) {
584
- $text_content = trim( (string)$element );
585
- if( !empty( $text_content ) ) {
586
  return $text_content;
587
  }
588
 
589
- if( $element->count() > 0 ) {
590
  $results_by_node_name = array();
591
-
592
  /** @var SimpleXMLElement $child */
593
- foreach( $element->children() as $child ) {
594
  $child_name = $child->getName();
595
-
596
- if( !isset( $results_by_node_name[ $child_name ] ) ) {
597
  $results_by_node_name[ $child_name ] = array();
598
  }
599
 
600
  $results_by_node_name[ $child_name ][] = $this->simplexmlelement_to_object( $child, false );
601
  }
602
-
603
  $results = array();
604
- foreach( $results_by_node_name as $node_name => $children ) {
605
  $take_only_first_child = ( count( $children ) == 1 && ! $allways_expand_top_level );
606
  $results[ $node_name ] = ( $take_only_first_child ? $children[0] : $children );
607
  }
608
-
609
  return $results;
610
  }
611
-
612
  return null;
613
  }
614
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
615
  }
3
  /**
4
  * Types import and export controller.
5
  *
6
+ * Currently it only contains new code that is hooked into legacy methods plus a bunch of temporary workarounds, but
7
  * has the ambition to become the central point of handling all import and export-related activities.
8
  *
9
  * @since 2.1
10
  */
11
  final class Types_Import_Export {
12
+
13
  private static $instance;
14
+
15
  public static function get_instance() {
16
+ if ( null == self::$instance ) {
17
  self::$instance = new self();
18
  }
19
+
20
  return self::$instance;
21
  }
22
+
23
+ private function __clone() {
24
+ }
25
+
26
+ private function __construct() {
27
+ }
28
 
29
 
30
  /**
81
  * Completely handle retrieving export data for field groups of one domain.
82
  *
83
  * @param string $domain Valid field domain.
84
+ *
85
  * @return array Exported field groups.
86
  * @since 2.1
87
  */
88
  public function export_field_groups_for_domain( $domain ) {
89
 
90
  $group_factory = Types_Field_Utils::get_group_factory_by_domain( $domain );
91
+ $all_groups = $group_factory->query_groups();
92
 
93
  // Each group will handle its own export.
94
  $results = array();
95
+ foreach ( $all_groups as $field_group ) {
96
  $results[] = $field_group->get_export_object();
97
  }
98
 
106
  * Completely handle retrieving export data for field definitions of one domain.
107
  *
108
  * @param string $domain Valid field domain.
109
+ *
110
  * @return array Exported field definitions.
111
  * @since 2.1
112
  */
113
  public function export_field_definitions_for_domain( $domain ) {
114
 
115
  $definition_factory = Types_Field_Utils::get_definition_factory_by_domain( $domain );
116
+ $all_definitions = $definition_factory->query_definitions( array( 'filter' => 'types' ) );
117
 
118
  // Each field definition will handle its own export.
119
  $results = array();
120
  /** @var WPCF_Field_Definition $field_definition */
121
+ foreach ( $all_definitions as $field_definition ) {
122
  $results[] = $field_definition->get_export_object();
123
  }
124
 
142
  public function add_checksum_to_object( $data, $keys_for_checksum = null, $keys_to_remove = null ) {
143
 
144
  // pluck requested keys
145
+ if ( null == $keys_for_checksum ) {
146
  $checksum_source = $data;
147
  } else {
148
  $checksum_source = array();
152
  }
153
  }
154
  }
155
+
156
  // unset undesired keys
157
+ if ( is_array( $keys_to_remove ) ) {
158
  $checksum_source = $this->unset_recursive( $checksum_source, $keys_to_remove );
159
  }
160
 
161
  $checksum = $this->generate_checksum( $checksum_source );
162
 
163
  $data[ self::XML_KEY_CHECKSUM ] = $checksum;
164
+ $data[ self::XML_KEY_HASH ] = $checksum;
165
 
166
  return $data;
167
  }
187
  * @since 2.1
188
  */
189
  private function unset_recursive( $unset_from, $unset_what ) {
190
+ if ( is_array( $unset_from ) ) {
191
+
192
  foreach ( $unset_what as $key => $value ) {
193
+
194
  if ( is_array( $value ) && isset( $unset_from[ $key ] ) ) {
195
  $unset_from[ $key ] = $this->unset_recursive( $unset_from[ $key ], $value );
196
  } else {
197
  unset( $unset_from[ $value ] );
198
  }
199
  }
200
+
201
  }
202
+
203
  return $unset_from;
204
  }
205
 
210
  * @param array $data An associative array representing an object.
211
  * @param string $title
212
  * @param string $id
213
+ *
214
  * @return array Updated $data.
215
  * @since 2.1
216
  */
217
  public function annotate_object( $data, $title, $id ) {
218
+ $data[ self::XML_TYPES_ID ] = $id;
219
  $data[ self::XML_TYPES_TITLE ] = $title;
220
+
221
  return $data;
222
  }
223
 
228
  * Note: Do not touch this.
229
  *
230
  * @param array $data
231
+ *
232
  * @return string Checksum
233
  * @since 2.1
234
  */
241
  * Sort a multidimensional array by keys recursively.
242
  *
243
  * @param array|mixed $data
244
+ *
245
  * @return array|mixed Sorted $data.
246
  * @since 2.1
247
  */
252
  $data[ $key ] = $this->ksort_as_string( $value );
253
  }
254
  }
255
+
256
  return $data;
257
  }
258
 
259
 
260
  /**
261
  * Import field definitions for given domain.
262
+ *
263
  * Note: Currently only term fields are supported.
264
+ *
265
  * @param string $domain Valid field domain.
266
  * @param SimpleXMLElement $data Import data from XML.
267
  * @param string $fields_key Node name where the field definitions can be found.
268
  * @param bool $delete_other_fields If true, fields that are not being imported will be deleted from the site.
269
+ * @param array $field_settings Part of $_POST from the import form related to these fields.
270
+ * @param array $args Used for making skip/overwrite decisions per item (used for toolset-based themes import)
271
  *
272
  * @return array
273
  */
274
+ public function process_field_definition_import_per_domain(
275
+ $domain,
276
+ $data,
277
+ $fields_key,
278
+ $delete_other_fields,
279
+ $field_settings,
280
+ $args = array()
281
+ ) {
282
 
283
  $results = array();
284
 
285
  $fields_to_preserve = array();
286
 
287
  $fields_import_data = array();
288
+ if ( isset( $data->$fields_key ) ) {
289
  /** @noinspection PhpParamsInspection */
290
  $fields_import_data = $this->simplexmlelement_to_object( $data->$fields_key, true );
291
+ $fields_import_data = isset( $fields_import_data[ Types_Import_Export::XML_KEY_FIELD ] )
292
+ ? $fields_import_data[ Types_Import_Export::XML_KEY_FIELD ] : array();
293
  }
294
 
295
+ foreach ( $fields_import_data as $field_import_data ) {
296
  $field_slug = $field_import_data['slug'];
297
 
298
+ // check if via $_POST the field is allowed
299
  $import_field = isset( $field_settings[ $field_slug ] ) && isset( $field_settings[ $field_slug ]['add'] );
300
 
301
+ // on toolset based themes we allow every field
302
+ $import_field = array_key_exists( 'toolset-themes', $args ) ? true : $import_field;
303
+
304
+ // User choices on import/update process (TBT toolset-based themes)
305
+ $field_import_data = tbt_user_choice( $args, $field_import_data );
306
+ if ( array_key_exists( 'add', $field_import_data ) ) {
307
+ $import_field = $field_import_data['add'];
308
+ }
309
+
310
+ if ( $import_field ) {
311
  $result = $this->import_field_definition( $domain, $field_import_data );
312
+ if ( $result['is_success'] ) {
313
  $fields_to_preserve[] = $field_slug;
314
  }
315
  $results[] = array(
316
+ 'type' => ( $result['is_success'] ? 'success' : 'error' ),
317
  'content' => $result['display_message']
318
  );
319
  }
320
  }
321
 
322
  $delete_results = $this->maybe_delete_fields( $domain, $delete_other_fields, $fields_to_preserve );
323
+ $results = array_merge( $results, $delete_results );
324
 
325
  return $results;
326
 
332
  * @param bool $delete_other_fields
333
  * @param string[] $fields_to_preserve Array of field slugs that should be preserved.
334
  *
335
+ * @return array
336
  */
337
  private function maybe_delete_fields( $domain, $delete_other_fields, $fields_to_preserve ) {
338
 
339
  $results = array();
340
 
341
  $definition_factory = Types_Field_Utils::get_definition_factory_by_domain( $domain );
342
+ $option_name = $definition_factory->get_option_name_workaround();
343
 
344
  if ( $delete_other_fields ) {
345
 
346
+ $fields_existing = wpcf_admin_fields_get_fields( false, false, false, $option_name, false, true );
347
 
348
  foreach ( $fields_existing as $key => $existing_field_definition ) {
349
 
355
 
356
  if ( ! in_array( $existing_field_slug, $fields_to_preserve ) ) {
357
  $results[] = array(
358
+ 'type' => 'success',
359
  'content' => sprintf(
360
  __( 'User field "%s" deleted', 'wpcf' ),
361
  $existing_field_definition['name']
382
  private function import_field_definition( $domain, $definition_array_import ) {
383
 
384
  $definition = array(
385
+ 'id' => $definition_array_import['id'],
386
+ 'name' => $definition_array_import['name'],
387
+ 'description' => isset( $definition_array_import['description'] ) ? $definition_array_import['description']
388
+ : '',
389
+ 'type' => $definition_array_import['type'],
390
+ 'slug' => $definition_array_import['slug'],
391
+ 'data' => ( isset( $definition_array_import['data'] ) && is_array( $definition_array_import['data'] ) )
392
+ ? $definition_array_import['data'] : array()
393
  );
394
 
395
+ if ( isset( $definition_array_import['meta_key'] ) ) {
396
  $definition['meta_key'] = $definition_array_import['meta_key'];
397
  }
398
 
399
  // WPML
400
  global $iclTranslationManagement;
401
+ if ( ! empty( $iclTranslationManagement ) && isset( $definition['wpml_action'] ) ) {
402
  $iclTranslationManagement->settings['custom_fields_translation'][ wpcf_types_get_meta_prefix( $definition ) . $definition['slug'] ] = $definition['wpml_action'];
403
  $iclTranslationManagement->save_settings();
404
  }
407
  $definition_factory->set_field_definition_workaround( $definition['slug'], $definition );
408
 
409
  return array(
410
+ 'is_success' => true,
411
  'display_message' => sprintf( __( 'Term field "%s" added/updated', 'wpcf' ), $definition['name'] )
412
  );
413
  }
424
  * @param bool $bulk_overwrite_groups If true, all (conflicting) groups will be overwritten by the ones from import.
425
  * @param bool $delete_other_groups If true, groups that are not being imported will be deleted from the site.
426
  * @param array $group_settings Part of $_POST from the import form related to these groups.
427
+ * @param array $args Used for making skip/overwrite decisions per item (used for toolset-based themes import)
428
+ *
429
  * @return array
430
  */
431
+ public function process_field_group_import_per_domain(
432
+ $domain,
433
+ $data,
434
+ $groups_key,
435
+ $bulk_overwrite_groups,
436
+ $delete_other_groups,
437
+ $group_settings,
438
+ $args = array()
439
+ ) {
440
+
441
+ $results = array();
442
  $groups_to_preserve = array();
443
+
444
  $groups_import_data = array();
445
+ if ( isset( $data->$groups_key ) ) {
446
  /** @noinspection PhpParamsInspection */
447
  $groups_import_data = $this->simplexmlelement_to_object( $data->$groups_key, true );
448
+ $groups_import_data = isset( $groups_import_data[ Types_Import_Export::XML_KEY_GROUP ] )
449
+ ? $groups_import_data[ Types_Import_Export::XML_KEY_GROUP ] : array();
450
  }
451
+
452
+ foreach ( $groups_import_data as $group ) {
453
 
454
  // ID of group from the import file
455
  $import_group_id = wpcf_getarr( $group, Types_Field_Group::XML_ID );
456
 
 
 
457
 
458
+ if ( array_key_exists( 'toolset-themes', $args ) ) {
459
+ // Toolset Themes Import Way
460
+ $group = tbt_user_choice( $args, $group );
461
+
462
+ $group_should_be_imported = $this->tbt_group_should_be_imported( $group );
463
+
464
+ if ( array_key_exists( 'add', $group ) ) {
465
+ $group_actions['add'] = $group['add'];
466
+ }
467
+ } else {
468
+ // Types Import Way
469
+ $group_actions = wpcf_getarr( $group_settings, $import_group_id, array( 'add' => true ) );
470
+ $group_should_be_imported = isset( $group_actions['add'] );
471
+ }
472
+
473
+ if ( $group_should_be_imported ) {
474
+ if ( $bulk_overwrite_groups // bulk overwrite (types import/export page)
475
+ || ( // OR...
476
+ array_key_exists( 'toolset-themes', $args ) // import with toolset themes
477
+ && ( // AND...
478
+ ! array_key_exists( 'update', $group ) // ADD for group is not SET (new item)
479
+ || $group['update'] // OR... UPDATE is set for item (user choice)
480
+ )
481
+ )
482
+ ) {
483
+ // OVERWRITE
484
  $group_action = 'update';
485
  } else {
486
  $group_action = wpcf_getarr( $group_actions, 'update', 'add', array( 'add', 'update' ) );
491
 
492
  $result = null;
493
 
494
+ switch ( $group_action ) {
495
  case 'add':
496
  $result = $this->import_field_group( $domain, $group, 'create_new' );
497
  break;
500
  break;
501
  }
502
 
503
+ if ( null != $result ) {
504
  $results[] = array(
505
+ 'type' => ( $result['is_success'] ? 'success' : 'error' ),
506
  'content' => $result['display_message']
507
  );
508
+ if ( $result['is_success'] ) {
509
  $groups_to_preserve[] = $result['new_group_id'];
510
  }
511
  }
513
  }
514
 
515
  $delete_results = $this->maybe_delete_groups( $domain, $delete_other_groups, $groups_to_preserve );
516
+ $results = array_merge( $results, $delete_results );
517
 
518
  return $results;
519
  }
529
  private function maybe_delete_groups( $domain, $delete_other_groups, $groups_to_preserve ) {
530
 
531
  $results = array();
532
+ if ( $delete_other_groups && ! empty( $groups_to_preserve ) ) {
533
  $group_factory = Types_Field_Utils::get_group_factory_by_domain( $domain );
534
+ $all_groups = $group_factory->query_groups();
535
 
536
+ foreach ( $all_groups as $group_to_delete ) {
537
+ if ( ! in_array( $group_to_delete->get_id(), $groups_to_preserve ) ) {
538
 
539
  $deleted_group_name = $group_to_delete->get_name();
540
+ $deleted = wp_delete_post( $group_to_delete->get_id(), true );
541
+ if ( ! $deleted ) {
542
  $results[] = array(
543
+ 'type' => 'error',
544
+ 'content' => sprintf( __( 'Term field group "%s" delete failed', 'wpcf' ),
545
+ $deleted_group_name )
546
  );
547
  } else {
548
  $results[] = array(
549
+ 'type' => 'success',
550
  'content' => sprintf( __( 'Term field group "%s" deleted', 'wpcf' ), $deleted_group_name )
551
  );
552
  }
579
 
580
  $group_factory = Types_Field_Utils::get_group_factory_by_domain( $domain );
581
 
582
+ $existing_groups = $group_factory->query_groups( array( 'name' => $group_slug ) );
583
  $group_already_exists = ( count( $existing_groups ) > 0 );
584
 
585
  $new_post = array(
586
+ 'post_status' => $group['post_status'],
587
+ 'post_type' => $group_factory->get_post_type(),
588
+ 'post_title' => $group['post_title'],
589
+ 'post_content' => ! empty( $group['post_content'] ) ? $group['post_content'] : '',
590
  );
591
 
592
  $update_existing = ( $group_already_exists && 'overwrite' == $conflict_resolution );
593
 
594
+ if ( $update_existing ) {
595
  $existing_group = $existing_groups[0];
596
+ $new_post['ID'] = $existing_group->get_id();
597
+ $new_group_id = wp_update_post( $new_post );
598
  } else {
599
  $new_group_id = wp_insert_post( $new_post, true );
600
  }
602
  $is_success = ( ! is_wp_error( $new_group_id ) && 0 < $new_group_id );
603
 
604
  // Update group's postmeta
605
+ if ( $is_success && ! empty( $group['meta'] ) ) {
606
  foreach ( $group['meta'] as $meta_key => $meta_value ) {
607
+ if ( Types_Field_Group_Term::POSTMETA_ASSOCIATED_TAXONOMY == $meta_key ) {
608
  $meta_values = explode( ',', $meta_value );
609
  delete_post_meta( $new_group_id, $meta_key );
610
+ foreach ( $meta_values as $single_meta_value ) {
611
  update_post_meta( $new_group_id, $meta_key, $single_meta_value );
612
  }
613
  } else {
617
  }
618
 
619
  // Create display message
620
+ if ( $is_success ) {
621
+ if ( $update_existing ) {
622
  $display_message = sprintf( __( 'Term field group "%s" updated', 'wpcf' ), $group['post_title'] );
623
  } else {
624
  $display_message = sprintf( __( 'Term field group "%s" added', 'wpcf' ), $group['post_title'] );
625
  }
626
  } else {
627
+ if ( $update_existing ) {
628
  $display_message = sprintf( __( 'Term field group "%s" update failed', 'wpcf' ), $group['post_title'] );
629
  } else {
630
  $display_message = sprintf( __( 'Term field group "%s" insert failed', 'wpcf' ), $group['post_title'] );
632
  }
633
 
634
  return array(
635
+ 'is_success' => $is_success,
636
  'display_message' => $display_message,
637
+ 'new_group_id' => $new_group_id
638
  );
639
  }
640
 
646
  * @return array|null
647
  */
648
  public function simplexmlelement_to_object( $element, $allways_expand_top_level = false ) {
649
+ $text_content = trim( (string) $element );
650
+ if ( ! empty( $text_content ) ) {
651
  return $text_content;
652
  }
653
 
654
+ if ( $element->count() > 0 ) {
655
  $results_by_node_name = array();
656
+
657
  /** @var SimpleXMLElement $child */
658
+ foreach ( $element->children() as $child ) {
659
  $child_name = $child->getName();
660
+
661
+ if ( ! isset( $results_by_node_name[ $child_name ] ) ) {
662
  $results_by_node_name[ $child_name ] = array();
663
  }
664
 
665
  $results_by_node_name[ $child_name ][] = $this->simplexmlelement_to_object( $child, false );
666
  }
667
+
668
  $results = array();
669
+ foreach ( $results_by_node_name as $node_name => $children ) {
670
  $take_only_first_child = ( count( $children ) == 1 && ! $allways_expand_top_level );
671
  $results[ $node_name ] = ( $take_only_first_child ? $children[0] : $children );
672
  }
673
+
674
  return $results;
675
  }
676
+
677
  return null;
678
  }
679
+
680
+ /**
681
+ * Determines if a group should be imported or not
682
+ * This is only relevant for the import process of Toolset Themes
683
+ *
684
+ * @param $group
685
+ *
686
+ * @return bool
687
+ */
688
+ private function tbt_group_should_be_imported( $group ) {
689
+ if ( array_key_exists( 'add', $group ) && $group['add'] === false ) {
690
+ // the group already exists, but the user wants to keep his version ('add' === false)
691
+ return false;
692
+ }
693
+
694
+ // import group (initial import / overwrite / duplicate)
695
+ return true;
696
+ }
697
+
698
  }
application/controllers/information/controller.php CHANGED
@@ -23,12 +23,26 @@ class Types_Information_Controller {
23
  return true;
24
  }
25
 
 
 
 
 
 
 
 
 
26
  public function filter_columns( $columns, $post_type ) {
27
- if( isset( $columns['archive'] ) && ( $post_type == 'post' || $post_type == 'page' || $post_type == 'attachment' ) )
 
 
 
 
28
  unset( $columns['archive'] );
 
29
 
30
- if( isset( $columns['template'] ) && ( $post_type == 'post' || $post_type == 'page' ) )
31
  unset( $columns['template'] );
 
32
 
33
  return $columns;
34
  }
@@ -46,17 +60,6 @@ class Types_Information_Controller {
46
  // script / style
47
  add_action( 'admin_enqueue_scripts', array( $this, 'on_admin_enqueue_scripts' ) );
48
 
49
- // special case: layouts active, but not compatible
50
- // the only case where we don't show the table
51
- if( defined( 'WPDDL_DEVELOPMENT' ) || defined( 'WPDDL_PRODUCTION' ) ) {
52
- $compatible = new Types_Helper_Condition_Layouts_Compatible();
53
- if( !$compatible->valid() ) {
54
- $data_files = array( TYPES_DATA . '/information/layouts-not-compatible.php' );
55
- $this->show_data_as_container_in_meta_box( $data_files );
56
- return;
57
- }
58
- }
59
-
60
  /* data files */
61
  $data_files = array(
62
  TYPES_DATA . '/information/table/template.php',
@@ -113,7 +116,7 @@ class Types_Information_Controller {
113
  '/information/table.twig',
114
  array(
115
  'labels' => array(
116
- 'or' => __( 'Or...', 'types' )
117
  ),
118
  'thead' => $thead_views,
119
  'table' => $this->information
@@ -141,7 +144,7 @@ class Types_Information_Controller {
141
  // outer box
142
  $output_meta_box = new Types_Helper_Output_Meta_Box();
143
  $output_meta_box->set_id( $this->information->get_id() );
144
- $output_meta_box->set_title( __( 'Front-end Display', 'types' ) );
145
  // $output_meta_box->set_css_class( 'types-table-in-meta-box' );
146
 
147
  $this->information->set_output_container( $output_meta_box );
@@ -206,7 +209,7 @@ class Types_Information_Controller {
206
  // we want to display dashboard in a meta-box
207
  $output_meta_box = new Types_Helper_Output_Meta_Box();
208
  $output_meta_box->set_id( $this->information->get_id() );
209
- $output_meta_box->set_title( __( 'Front-end Display', 'types' ) );
210
  $output_meta_box->set_css_class( 'types-table-in-meta-box' );
211
 
212
  $this->information->set_output_container( $output_meta_box );
23
  return true;
24
  }
25
 
26
+ /**
27
+ * We don't want to show "archive" for media/pages and "template" for media
28
+ *
29
+ * @param $columns
30
+ * @param $post_type
31
+ *
32
+ * @return mixed
33
+ */
34
  public function filter_columns( $columns, $post_type ) {
35
+ if( $post_type != 'attachment' && $post_type != 'page' ) {
36
+ return $columns;
37
+ }
38
+
39
+ if( array_key_exists( 'archive', $columns ) ) {
40
  unset( $columns['archive'] );
41
+ }
42
 
43
+ if( $post_type == 'attachment' && array_key_exists( 'template', $columns ) ) {
44
  unset( $columns['template'] );
45
+ }
46
 
47
  return $columns;
48
  }
60
  // script / style
61
  add_action( 'admin_enqueue_scripts', array( $this, 'on_admin_enqueue_scripts' ) );
62
 
 
 
 
 
 
 
 
 
 
 
 
63
  /* data files */
64
  $data_files = array(
65
  TYPES_DATA . '/information/table/template.php',
116
  '/information/table.twig',
117
  array(
118
  'labels' => array(
119
+ 'or' => __( 'Or...', 'wpcf' )
120
  ),
121
  'thead' => $thead_views,
122
  'table' => $this->information
144
  // outer box
145
  $output_meta_box = new Types_Helper_Output_Meta_Box();
146
  $output_meta_box->set_id( $this->information->get_id() );
147
+ $output_meta_box->set_title( __( 'Front-end Display', 'wpcf' ) );
148
  // $output_meta_box->set_css_class( 'types-table-in-meta-box' );
149
 
150
  $this->information->set_output_container( $output_meta_box );
209
  // we want to display dashboard in a meta-box
210
  $output_meta_box = new Types_Helper_Output_Meta_Box();
211
  $output_meta_box->set_id( $this->information->get_id() );
212
+ $output_meta_box->set_title( __( 'Front-end Display', 'wpcf' ) );
213
  $output_meta_box->set_css_class( 'types-table-in-meta-box' );
214
 
215
  $this->information->set_output_container( $output_meta_box );
application/controllers/interop/handler/divi.php CHANGED
@@ -7,7 +7,6 @@
7
  */
8
  class Types_Interop_Handler_Divi implements Types_Interop_Handler_Interface {
9
 
10
-
11
  private static $instance;
12
 
13
  public static function initialize() {
@@ -21,8 +20,7 @@ class Types_Interop_Handler_Divi implements Types_Interop_Handler_Interface {
21
  }
22
 
23
 
24
- private function __clone() {
25
- }
26
 
27
 
28
  private function __construct() {
7
  */
8
  class Types_Interop_Handler_Divi implements Types_Interop_Handler_Interface {
9
 
 
10
  private static $instance;
11
 
12
  public static function initialize() {
20
  }
21
 
22
 
23
+ private function __clone() { }
 
24
 
25
 
26
  private function __construct() {
application/controllers/interop/handler/use_any_font.php ADDED
@@ -0,0 +1,62 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Use Any Font interoperability handler.
5
+ *
6
+ * @link https://wordpress.org/plugins/use-any-font/
7
+ *
8
+ * @since 2.2.9
9
+ */
10
+ class Types_Interop_Handler_Use_Any_Font implements Types_Interop_Handler_Interface {
11
+
12
+ private static $instance;
13
+
14
+ public static function initialize() {
15
+
16
+ if ( null === self::$instance ) {
17
+ self::$instance = new self();
18
+ }
19
+
20
+ // Not giving away the instance on purpose.
21
+
22
+ }
23
+
24
+
25
+ private function __clone() {
26
+ }
27
+
28
+
29
+ private function __construct() {
30
+ $this->maybe_unregister_uaf_assets();
31
+ }
32
+
33
+
34
+ /**
35
+ * Fix a compatibility issue with conflicting JS assets.
36
+ *
37
+ * Implemented for Use Any Font 4.6.
38
+ *
39
+ * On Edit Post Type page, UAF enqueues its own instance of jQuery UI Validation plugin which overwrites the one
40
+ * from Types, with added additional validation rules.
41
+ *
42
+ * Turns out, UAF enqueues everything everywhere without care although it has only a single admin page.
43
+ * In general, it has very bad coding practices (unprefixed function names, etc.)
44
+ *
45
+ * Here, we do what UAF should do on its own: Check if we're on its settings page and if
46
+ * we're not, avoid loading its assets.
47
+ *
48
+ * @since 2.2.9
49
+ */
50
+ function maybe_unregister_uaf_assets() {
51
+ $main_controller = Types_Main::get_instance();
52
+ $is_uaf_settings_page = (
53
+ $main_controller->get_plugin_mode() === Types_Main::MODE_ADMIN && wpcf_getget( 'page' ) === 'uaf_settings_page'
54
+ );
55
+
56
+ if ( ! $is_uaf_settings_page ) {
57
+ remove_action( 'admin_print_scripts', 'adminjslibs' );
58
+ remove_action( 'admin_print_styles', 'adminCsslibs' );
59
+ }
60
+ }
61
+
62
+ }
application/controllers/interop/handler/wpml.php CHANGED
@@ -5,11 +5,89 @@
5
  *
6
  * WIP - this stub is to be filled with everything WPML-related.
7
  * Look into: library/toolset/types/embedded/includes/wpml.php
 
 
8
  */
9
  class Types_Interop_Handler_Wpml implements Types_Interop_Handler_Interface {
10
 
 
 
 
 
 
 
 
 
11
  public static function initialize() {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
12
 
 
 
 
 
 
 
 
13
  }
14
 
15
  }
5
  *
6
  * WIP - this stub is to be filled with everything WPML-related.
7
  * Look into: library/toolset/types/embedded/includes/wpml.php
8
+ *
9
+ * @since 2.2.9
10
  */
11
  class Types_Interop_Handler_Wpml implements Types_Interop_Handler_Interface {
12
 
13
+
14
+ private static $instance;
15
+
16
+ private function __construct() { }
17
+
18
+ private function __clone() { }
19
+
20
+
21
  public static function initialize() {
22
+ self::get_instance();
23
+ }
24
+
25
+
26
+ public static function get_instance() {
27
+ if( null === self::$instance ) {
28
+ self::$instance = new self();
29
+ }
30
+
31
+ return self::$instance;
32
+ }
33
+
34
+
35
+ /**
36
+ * Check whether the current language is the default one.
37
+ *
38
+ * The result is cached for better performance.
39
+ *
40
+ * @return bool
41
+ * @since 2.2.9
42
+ */
43
+ public function is_current_language_default() {
44
+ static $result = null;
45
+
46
+ if( null === $result ) {
47
+ $current_language = apply_filters( 'wpml_current_language', null );
48
+ $default_language = apply_filters( 'wpml_default_language', null );
49
+ $result = ( $current_language === $default_language );
50
+ }
51
+
52
+ return $result;
53
+ }
54
+
55
+
56
+ /**
57
+ * Get translation of string.
58
+ *
59
+ * @param string $string The original string value to translate
60
+ * @param string $string_name String name
61
+ * @param string $domain String domain
62
+ *
63
+ * @link https://wpml.org/wpml-hook/wpml_translate_single_string/
64
+ *
65
+ * @return false|string Translated string or false if no such string is registered.
66
+ * @since 2.2.9
67
+ */
68
+ public function get_translation( $string, $string_name, $domain ) {
69
+
70
+ // check if translation exists
71
+ $is_registered = apply_filters(
72
+ 'wpml_string_id',
73
+ null,
74
+ array(
75
+ 'context' => $domain,
76
+ 'name' => $string_name
77
+ )
78
+ );
79
+
80
+ if ( $is_registered === null ) {
81
+ return false;
82
+ }
83
 
84
+ // string is registered, return translation
85
+ return apply_filters(
86
+ 'wpml_translate_single_string',
87
+ $string,
88
+ $domain,
89
+ $string_name
90
+ );
91
  }
92
 
93
  }
application/controllers/interop/mediator.php CHANGED
@@ -53,6 +53,10 @@ class Types_Interop_Mediator {
53
  array(
54
  'is_needed' => array( $this, 'is_divi_active'),
55
  'class_name' => 'Divi'
 
 
 
 
56
  )
57
  );
58
 
@@ -108,4 +112,9 @@ class Types_Interop_Mediator {
108
  return function_exists( 'et_setup_theme' );
109
  }
110
 
 
 
 
 
 
111
  }
53
  array(
54
  'is_needed' => array( $this, 'is_divi_active'),
55
  'class_name' => 'Divi'
56
+ ),
57
+ array(
58
+ 'is_needed' => array( $this, 'is_use_any_font_active' ),
59
+ 'class_name' => 'Use_Any_Font'
60
  )
61
  );
62
 
112
  return function_exists( 'et_setup_theme' );
113
  }
114
 
115
+
116
+ protected function is_use_any_font_active() {
117
+ return function_exists( 'uaf_activate' );
118
+ }
119
+
120
  }
application/controllers/main.php CHANGED
@@ -115,26 +115,42 @@ final class Types_Main {
115
  /**
116
  * Early loading actions.
117
  *
118
- * Initialize the Toolset Common library with the new loader.
119
- * Initialize asset manager if we're not doing an AJAX call.
120
- * Initialize the Types hook API.
121
- *
122
  * @since 2.0
123
  */
124
  public function after_setup_theme() {
125
- Toolset_Common_Bootstrap::getInstance();
126
 
127
- // If an AJAX callback handler needs other assets, they should initialize the asset manager by themselves.
128
- if( !defined( 'DOING_AJAX' ) ) {
 
 
 
 
 
129
  Types_Assets::get_instance()->initialize_scripts_and_styles();
130
  }
131
 
 
 
 
132
  Types_Api::initialize();
133
 
134
  Types_Interop_Mediator::initialize();
135
  }
136
 
137
 
 
 
 
 
 
 
 
 
 
 
 
 
 
138
  /**
139
  * In some cases, it may not be clear what legacy files are includes and what aren't.
140
  *
115
  /**
116
  * Early loading actions.
117
  *
 
 
 
 
118
  * @since 2.0
119
  */
120
  public function after_setup_theme() {
 
121
 
122
+ // Initialize the Toolset Common library
123
+ Toolset_Common_Bootstrap::get_instance();
124
+
125
+ $this->setup_autoloader();
126
+
127
+ // If an AJAX callback handler needs other assets, it should initialize the asset manager by itself.
128
+ if( $this->get_plugin_mode() != self::MODE_AJAX ) {
129
  Types_Assets::get_instance()->initialize_scripts_and_styles();
130
  }
131
 
132
+ // Handle embedded plugin mode
133
+ Types_Embedded::initialize();
134
+
135
  Types_Api::initialize();
136
 
137
  Types_Interop_Mediator::initialize();
138
  }
139
 
140
 
141
+ private function setup_autoloader() {
142
+
143
+ // It is possible to regenerate the classmap with Zend framework.
144
+ //
145
+ // See the "recreate_classmap.sh" script in the plugin root directory.
146
+ $classmap = include( TYPES_ABSPATH . '/application/autoload_classmap.php' );
147
+
148
+ // Use Toolset_Common_Autoloader
149
+ do_action( 'toolset_register_classmap', $classmap );
150
+
151
+ }
152
+
153
+
154
  /**
155
  * In some cases, it may not be clear what legacy files are includes and what aren't.
156
  *
application/controllers/page/dashboard.php CHANGED
@@ -58,7 +58,7 @@ final class Types_Page_Dashboard extends Types_Page_Abstract {
58
  * @return string
59
  */
60
  public function get_title() {
61
- return __( 'Toolset Dashboard', 'types' );
62
  }
63
 
64
  /**
@@ -66,7 +66,7 @@ final class Types_Page_Dashboard extends Types_Page_Abstract {
66
  * @return string
67
  */
68
  public function get_menu_title() {
69
- return __( 'Dashboard', 'types' );
70
  }
71
 
72
 
@@ -172,9 +172,9 @@ final class Types_Page_Dashboard extends Types_Page_Abstract {
172
  'table_3rd' => $this->table_3rd,
173
  'table_wordpress' => $this->table_wordpress,
174
  'labels' => array(
175
- 'create_type' => __( 'Add new post type', 'types' ),
176
  'msg_no_custom_post_types' =>
177
- __( 'To get started, create your first custom type. Then, you will be able to add fields and taxonomy and design how it displays.', 'types' )
178
  )
179
 
180
  );
@@ -291,17 +291,11 @@ final class Types_Page_Dashboard extends Types_Page_Abstract {
291
  // no user settings yet
292
  if( empty( $user_settings ) ) {
293
 
294
- // by default no post
295
- if( isset( $cpts['post'] ) )
296
- unset( $cpts['post'] );
297
-
298
- // by default no page
299
- if( isset( $cpts['page'] ) )
300
- unset( $cpts['page'] );
301
-
302
  // by default no media
303
- if( isset( $cpts['attachment'] ) )
304
  unset( $cpts['attachment'] );
 
 
305
 
306
  $cpts_filtered = $cpts;
307
  } else {
@@ -330,7 +324,7 @@ final class Types_Page_Dashboard extends Types_Page_Abstract {
330
  if( ! empty( $post_types ) )
331
  $this->table_toolset = $this->get_dashboard_types_table(
332
  $post_types,
333
- __( 'Custom post types that you created with Toolset', 'types' )
334
  );
335
 
336
 
@@ -340,7 +334,7 @@ final class Types_Page_Dashboard extends Types_Page_Abstract {
340
  if( ! empty( $post_types ) )
341
  $this->table_3rd = $this->get_dashboard_types_table(
342
  $post_types,
343
- __( 'Custom post types created by the theme and other plugins', 'types' ),
344
  false
345
  );
346
 
@@ -351,7 +345,7 @@ final class Types_Page_Dashboard extends Types_Page_Abstract {
351
  if( ! empty( $post_types ) )
352
  $this->table_wordpress = $this->get_dashboard_types_table(
353
  $post_types,
354
- __( 'Built-in post types created by WordPress', 'types' ),
355
  false
356
  );
357
 
@@ -376,20 +370,20 @@ final class Types_Page_Dashboard extends Types_Page_Abstract {
376
  // Types by Toolset
377
  $cpts = $this->get_types_by_toolset();
378
  if( ! empty( $cpts ) ) {
379
- $string_legend = __( 'Custom post types that you created with Toolset', 'types' );
380
  $return .= $this->screen_settings_fieldset( $cpts, $cpts_filtered, $string_legend );
381
  }
382
 
383
  // Types by 3rd
384
  $cpts = $this->get_types_by_3rd();
385
  if( ! empty( $cpts ) ) {
386
- $string_legend = __( 'Custom post types created by the theme and other plugins', 'types' );
387
  $return .= $this->screen_settings_fieldset( $cpts, $cpts_filtered, $string_legend );
388
  }
389
 
390
  // Types by WordPress
391
  $cpts = $this->get_types_by_wordpress();
392
- $string_legend = __( 'Built-in post types created by WordPress', 'types' );
393
  $return .= $this->screen_settings_fieldset( $cpts, $cpts_filtered, $string_legend );
394
 
395
  $return .= get_submit_button( __( 'Apply' ), 'button button-primary', 'screen-options-apply', false );
@@ -437,7 +431,7 @@ final class Types_Page_Dashboard extends Types_Page_Abstract {
437
 
438
 
439
  private function help_information() {
440
- $title = __('Toolset Dashboard', 'types');
441
  $help_content = $this->get_twig()->render(
442
  '/page/dashboard/help.twig',
443
  array( 'title' => $title )
@@ -493,10 +487,10 @@ final class Types_Page_Dashboard extends Types_Page_Abstract {
493
  '/page/dashboard/table/tbody-row.twig',
494
  array(
495
  'labels' => array(
496
- 'or' => __( 'Or...', 'types' ),
497
- 'create_taxonomy' => __( 'Create taxonomy', 'types' ),
498
- 'create_field_group' => __( 'Create field group', 'types' ),
499
- 'no_archive_for' => __( 'No archive available for %s', 'types' ),
500
  ),
501
  'admin_url' => admin_url(),
502
  'post_type' => $post_type,
@@ -517,9 +511,9 @@ final class Types_Page_Dashboard extends Types_Page_Abstract {
517
  array(
518
  'labels' => array(
519
  'headline' => $headline,
520
- 'admin' => __( 'WordPress admin', 'types' ),
521
- 'frontend' => __( 'Front-end', 'types' ),
522
- 'or' => __( 'Or...', 'types' ),
523
  ),
524
  'admin_url' => admin_url(),
525
  'thead' => $data_thead,
58
  * @return string
59
  */
60
  public function get_title() {
61
+ return __( 'Toolset Dashboard', 'wpcf' );
62
  }
63
 
64
  /**
66
  * @return string
67
  */
68
  public function get_menu_title() {
69
+ return __( 'Dashboard', 'wpcf' );
70
  }
71
 
72
 
172
  'table_3rd' => $this->table_3rd,
173
  'table_wordpress' => $this->table_wordpress,
174
  'labels' => array(
175
+ 'create_type' => __( 'Add new post type', 'wpcf' ),
176
  'msg_no_custom_post_types' =>
177
+ __( 'To get started, create your first custom type. Then, you will be able to add fields and taxonomy and design how it displays.', 'wpcf' )
178
  )
179
 
180
  );
291
  // no user settings yet
292
  if( empty( $user_settings ) ) {
293
 
 
 
 
 
 
 
 
 
294
  // by default no media
295
+ if( isset( $cpts['attachment'] ) ) {
296
  unset( $cpts['attachment'] );
297
+ }
298
+
299
 
300
  $cpts_filtered = $cpts;
301
  } else {
324
  if( ! empty( $post_types ) )
325
  $this->table_toolset = $this->get_dashboard_types_table(
326
  $post_types,
327
+ __( 'Custom post types that you created with Toolset', 'wpcf' )
328
  );
329
 
330
 
334
  if( ! empty( $post_types ) )
335
  $this->table_3rd = $this->get_dashboard_types_table(
336
  $post_types,
337
+ __( 'Custom post types created by the theme and other plugins', 'wpcf' ),
338
  false
339
  );
340
 
345
  if( ! empty( $post_types ) )
346
  $this->table_wordpress = $this->get_dashboard_types_table(
347
  $post_types,
348
+ __( 'Built-in post types created by WordPress', 'wpcf' ),
349
  false
350
  );
351
 
370
  // Types by Toolset
371
  $cpts = $this->get_types_by_toolset();
372
  if( ! empty( $cpts ) ) {
373
+ $string_legend = __( 'Custom post types that you created with Toolset', 'wpcf' );
374
  $return .= $this->screen_settings_fieldset( $cpts, $cpts_filtered, $string_legend );
375
  }
376
 
377
  // Types by 3rd
378
  $cpts = $this->get_types_by_3rd();
379
  if( ! empty( $cpts ) ) {
380
+ $string_legend = __( 'Custom post types created by the theme and other plugins', 'wpcf' );
381
  $return .= $this->screen_settings_fieldset( $cpts, $cpts_filtered, $string_legend );
382
  }
383
 
384
  // Types by WordPress
385
  $cpts = $this->get_types_by_wordpress();
386
+ $string_legend = __( 'Built-in post types created by WordPress', 'wpcf' );
387
  $return .= $this->screen_settings_fieldset( $cpts, $cpts_filtered, $string_legend );
388
 
389
  $return .= get_submit_button( __( 'Apply' ), 'button button-primary', 'screen-options-apply', false );
431
 
432
 
433
  private function help_information() {
434
+ $title = __('Toolset Dashboard', 'wpcf');
435
  $help_content = $this->get_twig()->render(
436
  '/page/dashboard/help.twig',
437
  array( 'title' => $title )
487
  '/page/dashboard/table/tbody-row.twig',
488
  array(
489
  'labels' => array(
490
+ 'or' => __( 'Or...', 'wpcf' ),
491
+ 'create_taxonomy' => __( 'Create taxonomy', 'wpcf' ),
492
+ 'create_field_group' => __( 'Create field group', 'wpcf' ),
493
+ 'no_archive_for' => __( 'No archive available for %s', 'wpcf' ),
494
  ),
495
  'admin_url' => admin_url(),
496
  'post_type' => $post_type,
511
  array(
512
  'labels' => array(
513
  'headline' => $headline,
514
+ 'admin' => __( 'WordPress admin', 'wpcf' ),
515
+ 'frontend' => __( 'Front-end', 'wpcf' ),
516
+ 'or' => __( 'Or...', 'wpcf' ),
517
  ),
518
  'admin_url' => admin_url(),
519
  'thead' => $data_thead,
application/controllers/page/extension/settings.php CHANGED
@@ -33,11 +33,11 @@ class Types_Page_Extension_Settings {
33
 
34
  $sections[$setting->get_id()] = array(
35
  'slug' => $setting->get_id(),
36
- 'title' => __( '"Front-end Display" table', 'types' ),
37
  'content' => $view->render(
38
  '/setting/checkbox.twig',
39
  array(
40
- 'description' => __( 'Show information about Template, Archive, Views and Forms on:', 'types' ),
41
  'setting' => $setting,
42
  )
43
  )
33
 
34
  $sections[$setting->get_id()] = array(
35
  'slug' => $setting->get_id(),
36
+ 'title' => __( '"Front-end Display" table', 'wpcf' ),
37
  'content' => $view->render(
38
  '/setting/checkbox.twig',
39
  array(
40
+ 'description' => __( 'Show information about Template, Archive, Views and Forms on:', 'wpcf' ),
41
  'setting' => $setting,
42
  )
43
  )
application/controllers/page/field_control.php CHANGED
@@ -185,10 +185,10 @@ final class Types_Page_Field_Control extends Types_Page_Abstract {
185
  $main_handle,
186
  TYPES_RELPATH . '/public/page/field_control/main.js',
187
  array(
188
- 'jquery', 'backbone', 'headjs', 'underscore',
 
189
  Types_Asset_Manager::SCRIPT_ADJUST_MENU_LINK,
190
  Types_Asset_Manager::SCRIPT_KNOCKOUT,
191
- Types_Asset_Manager::SCRIPT_DIALOG_BOXES,
192
  Types_Asset_Manager::SCRIPT_UTILS
193
  ),
194
  TYPES_VERSION
185
  $main_handle,
186
  TYPES_RELPATH . '/public/page/field_control/main.js',
187
  array(
188
+ 'jquery', 'backbone', 'underscore',
189
+ Types_Asset_Manager::SCRIPT_HEADJS,
190
  Types_Asset_Manager::SCRIPT_ADJUST_MENU_LINK,
191
  Types_Asset_Manager::SCRIPT_KNOCKOUT,
 
192
  Types_Asset_Manager::SCRIPT_UTILS
193
  ),
194
  TYPES_VERSION
application/controllers/page/hidden/helper.php CHANGED
@@ -138,7 +138,7 @@ class Types_Page_Hidden_Helper extends Types_Page_Abstract {
138
  private function new_post_field_group_action( $type ) {
139
 
140
  $type_object = get_post_type_object( $type );
141
- $title = sprintf( __( 'Field Group for %s', 'types' ), $type_object->labels->name );
142
  $name = sanitize_title( $title );
143
 
144
  $new_post_field_group = Types_Field_Group_Post_Factory::get_instance()->create( $name, $title, 'publish' );
138
  private function new_post_field_group_action( $type ) {
139
 
140
  $type_object = get_post_type_object( $type );
141
+ $title = sprintf( __( 'Field Group for %s', 'wpcf' ), $type_object->labels->name );
142
  $name = sanitize_title( $title );
143
 
144
  $new_post_field_group = Types_Field_Group_Post_Factory::get_instance()->create( $name, $title, 'publish' );
application/controllers/utils.php CHANGED
@@ -22,9 +22,48 @@ final class Types_Utils {
22
  }
23
 
24
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
25
  /**
26
  * Get a definitive set of all taxonomies recognized by Types.
27
  *
 
28
  * Respects if some builtin taxonomy is overridden by Types.
29
  *
30
  * @return array
22
  }
23
 
24
 
25
+ /**
26
+ * Get a list of taxonomies that should be excluded from any sort of Types/Toolset functionality.
27
+ *
28
+ * @return string[] Taxonomy slugs.
29
+ * @since 2.2.9
30
+ */
31
+ public static function get_excluded_taxonomies() {
32
+ return array( 'nav_menu', 'link_category', 'post_format' );
33
+ }
34
+
35
+
36
+ /**
37
+ * Get registered taxonomies that can be edited by Types/Toolset.
38
+ *
39
+ * That includes custom taxonomies from Types and the built-in ones (which are not excluded).
40
+ *
41
+ * @return WP_Taxonomy[] Taxonomy objects.
42
+ * @since 2.2.9
43
+ */
44
+ public static function get_editable_taxonomies() {
45
+ $custom_taxonomies = array_keys( wpcf_ensarr( get_option( WPCF_OPTION_NAME_CUSTOM_TAXONOMIES, array() ) ) );
46
+ $builtin_taxonomies = self::get_builtin_taxonomies( 'names' );
47
+ $allowed_taxonomies = array_merge( $custom_taxonomies, $builtin_taxonomies );
48
+
49
+ $excluded_taxonomies = self::get_excluded_taxonomies();
50
+ $allowed_taxonomies = array_diff( $allowed_taxonomies, $excluded_taxonomies );
51
+
52
+ $taxonomies = get_taxonomies( '', 'objects' );
53
+ foreach( $taxonomies as $taxonomy_slug => $taxonomy ) {
54
+ if( ! in_array( $taxonomy_slug, $allowed_taxonomies ) ) {
55
+ unset( $taxonomies[ $taxonomy_slug ] );
56
+ }
57
+ }
58
+
59
+ return $taxonomies;
60
+ }
61
+
62
+
63
  /**
64
  * Get a definitive set of all taxonomies recognized by Types.
65
  *
66
+ * That also includes inactive taxonomies.
67
  * Respects if some builtin taxonomy is overridden by Types.
68
  *
69
  * @return array
application/data/dashboard/table/archive.php CHANGED
@@ -13,15 +13,170 @@ return array(
13
  'description' => array(
14
  array(
15
  'type' => 'paragraph',
16
- 'content' => __( 'The archive is disabled for this post type.', 'types' )
17
  ),
18
  array(
19
  'type' => 'paragraph',
20
- 'content' => __( 'To enable, go to <a href="%POST-TYPE-EDIT-HAS-ARCHIVE%">Options</a> and mark "has_archive".', 'types' )
21
  ),
22
  ),
23
  ),
24
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
25
  /* No Views, No Layouts, Archive missing */
26
  'archive-missing' => array(
27
  'type' => 'archive',
@@ -37,25 +192,25 @@ return array(
37
  'description' => array(
38
  array(
39
  'type' => 'paragraph',
40
- 'content' => __( 'Your theme is missing the standard WordPress archive for %POST-LABEL-PLURAL%.', 'types' )
41
  ),
42
  array(
43
  'type' => 'dialog',
44
  'class' => 'button',
45
- 'label' => __( 'Create archive', 'types' ),
46
  'dialog' => array(
47
  'id' => 'resolve-no-archive',
48
  'description' => array(
49
  array(
50
  'type' => 'paragraph',
51
  'content' => __( 'Toolset plugins let you design archive pages without writing PHP. Your archives will include all
52
- the fields that you need and your design.', 'types' )
53
  ),
54
  array(
55
  'type' => 'link',
56
  'class' => 'button-primary types-button',
57
  'external' => true,
58
- 'label' => __( 'Learn about creating archives with Toolset', 'types' ),
59
  'target' => Types_Helper_Url::get_url( 'creating-archives-with-toolset', 'popup' ),
60
  ),
61
  )
@@ -79,24 +234,24 @@ return array(
79
  'description' => array(
80
  array(
81
  'type' => 'paragraph',
82
- 'content' => __( 'The %POST-LABEL-PLURAL% archive of your theme is missing custom fields.', 'types' )
83
  ),
84
  array(
85
  'type' => 'dialog',
86
  'class' => 'button',
87
- 'label' => __( 'Resolve', 'types' ),
88
  'dialog' => array(
89
  'id' => 'resolve-no-custom-fields',
90
  'description' => array(
91
  array(
92
  'type' => 'paragraph',
93
- 'content' => __( 'Toolset plugins let you design archives with custom fields, without writing PHP.', 'types' )
94
  ),
95
  array(
96
  'type' => 'link',
97
  'class' => 'button-primary types-button',
98
  'external' => true,
99
- 'label' => __( 'Learn about creating archives with Toolset', 'types' ),
100
  'target' => Types_Helper_Url::get_url( 'creating-archives-with-toolset', 'popup' ),
101
  ),
102
  )
@@ -118,97 +273,97 @@ return array(
118
  'description' => array(
119
  array(
120
  'type' => 'paragraph',
121
- 'content' => __( '%POST-ARCHIVE-FILE%', 'types' )
122
  ),
123
  ),
124
  ),
125
 
126
- /* Views, template missing */
127
- 'views-archive-missing' => array(
128
  'type' => 'archive',
129
 
130
  'priority' => 'important',
131
 
132
  'conditions'=> array(
133
  'Types_Helper_Condition_Layouts_Missing',
134
- 'Types_Helper_Condition_Views_Archive_Missing'
 
135
  ),
136
 
137
  'description' => array(
138
  array(
139
  'type' => 'paragraph',
140
- 'content' => __( 'There is no WordPress Archive for %POST-LABEL-PLURAL%.', 'types' )
141
  ),
142
  array(
143
- 'type' => 'link',
144
- 'class' => 'button',
145
  'target' => '%POST-CREATE-VIEWS-ARCHIVE%',
146
- 'label' => __( 'Create archive', 'types' )
147
- )
148
-
 
 
 
149
  ),
150
-
151
  ),
152
 
153
- /* Views, archive */
154
- 'views-archive' => array(
155
  'type' => 'archive',
156
 
157
  'conditions'=> array(
158
  'Types_Helper_Condition_Layouts_Missing',
159
- 'Types_Helper_Condition_Views_Archive_Exists'
 
160
  ),
161
 
162
  'description' => array(
163
  array(
164
- 'type' => 'link',
165
- 'label' => '%POST-VIEWS-ARCHIVE%',
166
- 'target' => '%POST-EDIT-VIEWS-ARCHIVE%',
167
- )
 
 
 
 
 
 
 
 
 
168
  ),
169
 
170
  ),
171
 
172
- /* Layouts, Archive missing */
173
- 'layouts-archive-missing' => array(
174
  'type' => 'archive',
175
 
176
  'priority' => 'important',
177
 
178
  'conditions'=> array(
179
- 'Types_Helper_Condition_Layouts_Active',
180
- 'Types_Helper_Condition_Layouts_Archive_Missing'
181
  ),
182
 
183
  'description' => array(
184
  array(
185
  'type' => 'paragraph',
186
- 'content' => __( 'There is no layout for the %POST-LABEL-PLURAL% archive.', 'types' )
187
  ),
188
  array(
189
- 'type' => 'link',
190
- 'class' => 'button',
191
- 'label' => __( 'Create archive', 'types' ),
192
- 'target' => '%POST-CREATE-LAYOUT-ARCHIVE%',
193
- )
194
- ),
195
- ),
196
-
197
- /* Layouts, Archive */
198
- 'layouts-archive' => array(
199
- 'type' => 'archive',
200
-
201
- 'conditions'=> array(
202
- 'Types_Helper_Condition_Layouts_Active',
203
- 'Types_Helper_Condition_Layouts_Archive_Exists'
204
  ),
205
 
206
- 'description' => array(
207
- array(
208
- 'type' => 'link',
209
- 'label' => '%POST-LAYOUT-ARCHIVE%',
210
- 'target' => '%POST-EDIT-LAYOUT-ARCHIVE%',
211
- )
212
- ),
213
- )
214
  );
13
  'description' => array(
14
  array(
15
  'type' => 'paragraph',
16
+ 'content' => __( 'The archive is disabled for this post type.', 'wpcf' )
17
  ),
18
  array(
19
  'type' => 'paragraph',
20
+ 'content' => __( 'To enable, go to <a href="%POST-TYPE-EDIT-HAS-ARCHIVE%">Options</a> and mark "has_archive".', 'wpcf' )
21
  ),
22
  ),
23
  ),
24
 
25
+ /* Layouts, integrated, Archive missing */
26
+ 'layouts-integrated-archive-missing' => array(
27
+ 'type' => 'archive',
28
+
29
+ 'priority' => 'important',
30
+
31
+ 'conditions'=> array(
32
+ 'Types_Helper_Condition_Layouts_Active',
33
+ 'Types_Helper_Condition_Layouts_Compatible',
34
+ 'Types_Helper_Condition_Layouts_Archive_Missing'
35
+ ),
36
+
37
+ 'description' => array(
38
+ array(
39
+ 'type' => 'paragraph',
40
+ 'content' => __( 'There is no layout for the %POST-LABEL-PLURAL% archive.', 'wpcf' )
41
+ ),
42
+ array(
43
+ 'type' => 'link',
44
+ 'class' => 'button',
45
+ 'label' => __( 'Create archive', 'wpcf' ),
46
+ 'target' => '%POST-CREATE-LAYOUT-ARCHIVE%',
47
+ )
48
+ ),
49
+ ),
50
+
51
+ /* Layouts, Archive */
52
+ 'layouts-archive' => array(
53
+ 'type' => 'archive',
54
+
55
+ 'conditions'=> array(
56
+ 'Types_Helper_Condition_Layouts_Active',
57
+ 'Types_Helper_Condition_Layouts_Archive_Exists'
58
+ ),
59
+
60
+ 'description' => array(
61
+ array(
62
+ 'type' => 'link',
63
+ 'label' => '%POST-LAYOUT-ARCHIVE%',
64
+ 'target' => '%POST-EDIT-LAYOUT-ARCHIVE%',
65
+ )
66
+ ),
67
+ ),
68
+
69
+ /* Views, archive */
70
+ 'views-archive' => array(
71
+ 'type' => 'archive',
72
+
73
+ 'conditions'=> array(
74
+ 'Types_Helper_Condition_Layouts_Missing',
75
+ 'Types_Helper_Condition_Views_Archive_Exists'
76
+ ),
77
+
78
+ 'description' => array(
79
+ array(
80
+ 'type' => 'link',
81
+ 'label' => '%POST-VIEWS-ARCHIVE%',
82
+ 'target' => '%POST-EDIT-VIEWS-ARCHIVE%',
83
+ )
84
+ ),
85
+ ),
86
+
87
+ /* For posts and pages we always show template file if it exists */
88
+ 'archive-exists-for-posts-pages' => array(
89
+ 'type' => 'archive',
90
+
91
+ 'conditions'=> array(
92
+ 'Types_Helper_Condition_Type_Post_Or_Page',
93
+ 'Types_Helper_Condition_Archive_Exists',
94
+ 'Types_Helper_Condition_Archive_Has_Fields'
95
+ ),
96
+
97
+ 'description' => array(
98
+ array(
99
+ 'type' => 'paragraph',
100
+ 'content' => __( '%POST-ARCHIVE-FILE%', 'wpcf' )
101
+ ),
102
+ ),
103
+ ),
104
+
105
+ /* Layouts, has template with missing fields. */
106
+ 'layouts-archive-fields-missing' => array(
107
+ 'type' => 'archive',
108
+
109
+ 'priority' => 'important',
110
+
111
+ 'conditions'=> array(
112
+ 'Types_Helper_Condition_Layouts_Active',
113
+ 'Types_Helper_Condition_Layouts_Archive_Missing',
114
+ 'Types_Helper_Condition_Archive_No_Fields'
115
+ ),
116
+
117
+ 'description' => array(
118
+ array(
119
+ 'type' => 'paragraph',
120
+ 'content' => __( 'The %POST-LABEL-PLURAL% archive of your theme %POST-ARCHIVE-FILE% is missing custom fields.', 'wpcf' )
121
+ ),
122
+ array(
123
+ 'type' => 'link',
124
+ 'class' => 'button',
125
+ 'label' => __( 'Create archive', 'wpcf' ),
126
+ 'target' => '%POST-CREATE-LAYOUT-ARCHIVE%',
127
+ )
128
+ ),
129
+ ),
130
+
131
+ /* Layouts, single.php exists, but layouts missing */
132
+ 'layouts-php-archive-exists-layouts-archive-missing' => array(
133
+ 'type' => 'archive',
134
+
135
+ 'conditions'=> array(
136
+ 'Types_Helper_Condition_Layouts_Active',
137
+ 'Types_Helper_Condition_Layouts_Archive_Missing',
138
+ 'Types_Helper_Condition_Archive_Exists'
139
+ ),
140
+
141
+ 'description' => array(
142
+ array(
143
+ 'type' => 'paragraph',
144
+ 'content' => __( '%POST-ARCHIVE-FILE%', 'wpcf' )
145
+ ),
146
+ array(
147
+ 'type' => 'link',
148
+ 'class' => 'button',
149
+ 'label' => __( 'Create archive', 'wpcf' ),
150
+ 'target' => '%POST-CREATE-LAYOUT-ARCHIVE%',
151
+ )
152
+ ),
153
+ ),
154
+
155
+ /* Layouts, Archive missing */
156
+ 'layouts-archive-missing' => array(
157
+ 'type' => 'archive',
158
+
159
+ 'priority' => 'important',
160
+
161
+ 'conditions'=> array(
162
+ 'Types_Helper_Condition_Layouts_Active',
163
+ 'Types_Helper_Condition_Layouts_Archive_Missing'
164
+ ),
165
+
166
+ 'description' => array(
167
+ array(
168
+ 'type' => 'paragraph',
169
+ 'content' => __( 'There is no layout for the %POST-LABEL-PLURAL% archive.', 'wpcf' )
170
+ ),
171
+ array(
172
+ 'type' => 'link',
173
+ 'class' => 'button',
174
+ 'label' => __( 'Create archive', 'wpcf' ),
175
+ 'target' => '%POST-CREATE-LAYOUT-ARCHIVE%',
176
+ )
177
+ ),
178
+ ),
179
+
180
  /* No Views, No Layouts, Archive missing */
181
  'archive-missing' => array(
182
  'type' => 'archive',
192
  'description' => array(
193
  array(
194
  'type' => 'paragraph',
195
+ 'content' => __( 'Your theme is missing the standard WordPress archive for %POST-LABEL-PLURAL%.', 'wpcf' )
196
  ),
197
  array(
198
  'type' => 'dialog',
199
  'class' => 'button',
200
+ 'label' => __( 'Create archive', 'wpcf' ),
201
  'dialog' => array(
202
  'id' => 'resolve-no-archive',
203
  'description' => array(
204
  array(
205
  'type' => 'paragraph',
206
  'content' => __( 'Toolset plugins let you design archive pages without writing PHP. Your archives will include all
207
+ the fields that you need and your design.', 'wpcf' )
208
  ),
209
  array(
210
  'type' => 'link',
211
  'class' => 'button-primary types-button',
212
  'external' => true,
213
+ 'label' => __( 'Learn about creating archives with Toolset', 'wpcf' ),
214
  'target' => Types_Helper_Url::get_url( 'creating-archives-with-toolset', 'popup' ),
215
  ),
216
  )
234
  'description' => array(
235
  array(
236
  'type' => 'paragraph',
237
+ 'content' => __( 'The %POST-LABEL-PLURAL% archive of your theme is missing custom fields.', 'wpcf' )
238
  ),
239
  array(
240
  'type' => 'dialog',
241
  'class' => 'button',
242
+ 'label' => __( 'Resolve', 'wpcf' ),
243
  'dialog' => array(
244
  'id' => 'resolve-no-custom-fields',
245
  'description' => array(
246
  array(
247
  'type' => 'paragraph',
248
+ 'content' => __( 'Toolset plugins let you design archives with custom fields, without writing PHP.', 'wpcf' )
249
  ),
250
  array(
251
  'type' => 'link',
252
  'class' => 'button-primary types-button',
253
  'external' => true,
254
+ 'label' => __( 'Learn about creating archives with Toolset', 'wpcf' ),
255
  'target' => Types_Helper_Url::get_url( 'creating-archives-with-toolset', 'popup' ),
256
  ),
257
  )
273
  'description' => array(
274
  array(
275
  'type' => 'paragraph',
276
+ 'content' => __( '%POST-ARCHIVE-FILE%', 'wpcf' )
277
  ),
278
  ),
279
  ),
280
 
281
+ /* Views, has template with missing fields. */
282
+ 'views-archive-fields-missing' => array(
283
  'type' => 'archive',
284
 
285
  'priority' => 'important',
286
 
287
  'conditions'=> array(
288
  'Types_Helper_Condition_Layouts_Missing',
289
+ 'Types_Helper_Condition_Views_Archive_Missing',
290
+ 'Types_Helper_Condition_Archive_No_Fields',
291
  ),
292
 
293
  'description' => array(
294
  array(
295
  'type' => 'paragraph',
296
+ 'content' => __( 'The %POST-LABEL-PLURAL% archive of your theme %POST-ARCHIVE-FILE% is missing custom fields.', 'wpcf' )
297
  ),
298
  array(
299
+ 'type' => 'link',
300
+ 'class' => 'button js-toolset-dashboard-create-archive',
301
  'target' => '%POST-CREATE-VIEWS-ARCHIVE%',
302
+ 'post_type' => '%POST-CREATE-VIEWS-ARCHIVE-TYPE%',
303
+ 'redirect_url' => '%POST-CREATE-VIEWS-ARCHIVE-REDIRECT-URL%',
304
+ 'forwhomtitle' => '%POST-CREATE-VIEWS-ARCHIVE-FOR-WHOM-TITLE%',
305
+ 'forwhomloop' => '%POST-CREATE-VIEWS-ARCHIVE-FOR-WHOM-LOOP%',
306
+ 'label' => __( 'Create archive', 'wpcf' ),
307
+ ),
308
  ),
 
309
  ),
310
 
311
+ /* Views, archive.php exists, but views missing */
312
+ 'views-php-archive-exists-views-archive-missing' => array(
313
  'type' => 'archive',
314
 
315
  'conditions'=> array(
316
  'Types_Helper_Condition_Layouts_Missing',
317
+ 'Types_Helper_Condition_Views_Archive_Missing',
318
+ 'Types_Helper_Condition_Archive_Exists'
319
  ),
320
 
321
  'description' => array(
322
  array(
323
+ 'type' => 'paragraph',
324
+ 'content' => __( '%POST-ARCHIVE-FILE%', 'wpcf' )
325
+ ),
326
+ array(
327
+ 'type' => 'link',
328
+ 'class' => 'button js-toolset-dashboard-create-archive',
329
+ 'target' => '%POST-CREATE-VIEWS-ARCHIVE%',
330
+ 'post_type' => '%POST-CREATE-VIEWS-ARCHIVE-TYPE%',
331
+ 'redirect_url' => '%POST-CREATE-VIEWS-ARCHIVE-REDIRECT-URL%',
332
+ 'forwhomtitle' => '%POST-CREATE-VIEWS-ARCHIVE-FOR-WHOM-TITLE%',
333
+ 'forwhomloop' => '%POST-CREATE-VIEWS-ARCHIVE-FOR-WHOM-LOOP%',
334
+ 'label' => __( 'Create archive', 'wpcf' ),
335
+ ),
336
  ),
337
 
338
  ),
339
 
340
+ /* Views, template missing */
341
+ 'views-archive-missing' => array(
342
  'type' => 'archive',
343
 
344
  'priority' => 'important',
345
 
346
  'conditions'=> array(
347
+ 'Types_Helper_Condition_Layouts_Missing',
348
+ 'Types_Helper_Condition_Views_Archive_Missing'
349
  ),
350
 
351
  'description' => array(
352
  array(
353
  'type' => 'paragraph',
354
+ 'content' => __( 'There is no WordPress Archive for %POST-LABEL-PLURAL%.', 'wpcf' )
355
  ),
356
  array(
357
+ 'type' => 'link',
358
+ 'class' => 'button js-toolset-dashboard-create-archive',
359
+ 'target' => '%POST-CREATE-VIEWS-ARCHIVE%',
360
+ 'post_type' => '%POST-CREATE-VIEWS-ARCHIVE-TYPE%',
361
+ 'redirect_url' => '%POST-CREATE-VIEWS-ARCHIVE-REDIRECT-URL%',
362
+ 'forwhomtitle' => '%POST-CREATE-VIEWS-ARCHIVE-FOR-WHOM-TITLE%',
363
+ 'forwhomloop' => '%POST-CREATE-VIEWS-ARCHIVE-FOR-WHOM-LOOP%',
364
+ 'label' => __( 'Create archive', 'wpcf' ),
365
+ ),
 
 
 
 
 
 
366
  ),
367
 
368
+ ),
 
 
 
 
 
 
 
369
  );
application/data/dashboard/table/forms.php CHANGED
@@ -12,26 +12,26 @@ return array(
12
  array(
13
  'type' => 'dialog',
14
  'class' => 'button',
15
- 'label' => __( 'Create Form', 'types' ),
16
  'dialog' => array(
17
  'id' => 'create-form',
18
  'description' => array(
19
  array(
20
  'type' => 'paragraph',
21
  'content' => __( 'To create a form for front-end content submission and editing, you need to have CRED plugin installed.
22
- CRED is part of the complete Toolset package for adding and displaying custom content.', 'types' )
23
  ),
24
  array(
25
  'type' => 'link',
26
  'external' => true,
27
- 'label' => __( 'Learn how CRED forms work', 'types' ),
28
  'target' => Types_Helper_Url::get_url( 'how-cred-work', 'popup' )
29
  ),
30
  /*
31
  array(
32
  'type' => 'link',
33
  'external' => true,
34
- 'label' => __( 'Free Toolset Trial', 'types' ),
35
  'target' => Types_Helper_Url::get_url( 'free-trial', 'popup' )
36
  ),
37
  */
@@ -55,7 +55,7 @@ return array(
55
  'type' => 'link',
56
  'class' => 'button',
57
  'target' => '%POST-CREATE-FORM%',
58
- 'label' => __( 'Create form', 'types' )
59
  )
60
  )
61
  ),
@@ -73,13 +73,13 @@ return array(
73
  'description' => array(
74
  array(
75
  'type' => 'paragraph',
76
- 'content' => '%POST-FORMS-LIST%', 'types'
77
  ),
78
  array(
79
  'type' => 'link',
80
  'class' => 'button',
81
  'target' => '%POST-CREATE-FORM%',
82
- 'label' => __( 'Create form', 'types' )
83
  )
84
  )
85
  ),
@@ -97,14 +97,14 @@ return array(
97
  array(
98
  'type' => 'paragraph',
99
  'content' => __(
100
- 'You can create forms for front-end submission and editing of %POST-LABEL-PLURAL%.', 'types'
101
  )
102
  ),
103
  array(
104
  'type' => 'link',
105
  'external' => true,
106
  'target' => Types_Helper_Url::get_url( 'adding-forms-to-layouts', 'table' ),
107
- 'label' => __( 'Learn how', 'types' )
108
  ),
109
  )
110
  ),
@@ -121,13 +121,13 @@ return array(
121
  'description' => array(
122
  array(
123
  'type' => 'paragraph',
124
- 'content' => '%POST-FORMS-LIST%', 'types'
125
  ),
126
  array(
127
  'type' => 'link',
128
  'external' => true,
129
  'target' => Types_Helper_Url::get_url( 'adding-forms-to-layouts', 'table' ),
130
- 'label' => __( 'How to add forms to layouts', 'types' )
131
  ),
132
  )
133
  ),
12
  array(
13
  'type' => 'dialog',
14
  'class' => 'button',
15
+ 'label' => __( 'Create Form', 'wpcf' ),
16
  'dialog' => array(
17
  'id' => 'create-form',
18
  'description' => array(
19
  array(
20
  'type' => 'paragraph',
21
  'content' => __( 'To create a form for front-end content submission and editing, you need to have CRED plugin installed.
22
+ CRED is part of the complete Toolset package for adding and displaying custom content.', 'wpcf' )
23
  ),
24
  array(
25
  'type' => 'link',
26
  'external' => true,
27
+ 'label' => __( 'Learn how CRED forms work', 'wpcf' ),
28
  'target' => Types_Helper_Url::get_url( 'how-cred-work', 'popup' )
29
  ),
30
  /*
31
  array(
32
  'type' => 'link',
33
  'external' => true,
34
+ 'label' => __( 'Free Toolset Trial', 'wpcf' ),
35
  'target' => Types_Helper_Url::get_url( 'free-trial', 'popup' )
36
  ),
37
  */
55
  'type' => 'link',
56
  'class' => 'button',
57
  'target' => '%POST-CREATE-FORM%',
58
+ 'label' => __( 'Create form', 'wpcf' )
59
  )
60
  )
61
  ),
73
  'description' => array(
74
  array(
75
  'type' => 'paragraph',
76
+ 'content' => '%POST-FORMS-LIST%',
77
  ),
78
  array(
79
  'type' => 'link',
80
  'class' => 'button',
81
  'target' => '%POST-CREATE-FORM%',
82
+ 'label' => __( 'Create form', 'wpcf' )
83
  )
84
  )
85
  ),
97
  array(
98
  'type' => 'paragraph',
99
  'content' => __(
100
+ 'You can create forms for front-end submission and editing of %POST-LABEL-PLURAL%.', 'wpcf'
101
  )
102
  ),
103
  array(
104
  'type' => 'link',
105
  'external' => true,
106
  'target' => Types_Helper_Url::get_url( 'adding-forms-to-layouts', 'table' ),
107
+ 'label' => __( 'Learn how', 'wpcf' )
108
  ),
109
  )
110
  ),
121
  'description' => array(
122
  array(
123
  'type' => 'paragraph',
124
+ 'content' => '%POST-FORMS-LIST%'
125
  ),
126
  array(
127
  'type' => 'link',
128
  'external' => true,
129
  'target' => Types_Helper_Url::get_url( 'adding-forms-to-layouts', 'table' ),
130
+ 'label' => __( 'How to add forms to layouts', 'wpcf' )
131
  ),
132
  )
133
  ),
application/data/dashboard/table/head.php CHANGED
@@ -3,21 +3,21 @@ $question_marks = array(
3
 
4
  'type' => array(
5
  'id' => 'type',
6
- 'title' => __( 'Post Type', 'types' ),
7
  ),
8
 
9
  'fields' => array(
10
  'id' => 'fields',
11
- 'title' => __( 'Fields', 'types' ),
12
  'description' => array(
13
  array(
14
  'type' => 'paragraph',
15
- 'content' => __( 'A list of all Post Fields and their attachment to the Post Types.', 'types' )
16
  ),
17
  array(
18
  'type' => 'link',
19
  'external' => true,
20
- 'label' => __( 'Learn more', 'types' ),
21
  'target' => Types_Helper_Url::get_url( 'learn-how-fields', 'tooltip' )
22
  ),
23
  )
@@ -25,16 +25,16 @@ $question_marks = array(
25
 
26
  'taxonomies' => array(
27
  'id' => 'taxonomies',
28
- 'title' => __( 'Taxonomies', 'types' ),
29
  'description' => array(
30
  array(
31
  'type' => 'paragraph',
32
- 'content' => __( 'A list of all Taxonomies and their attachment to the Post Types.', 'types' )
33
  ),
34
  array(
35
  'type' => 'link',
36
  'external' => true,
37
- 'label' => __( 'Learn more', 'types' ),
38
  'target' => Types_Helper_Url::get_url( 'learn-how-taxonomies', 'tooltip' )
39
  ),
40
  )
@@ -46,16 +46,16 @@ $question_marks = array(
46
 
47
  'template' => array(
48
  'id' => 'template',
49
- 'title' => __( 'Template', 'types' ),
50
  'description' => array(
51
  array(
52
  'type' => 'paragraph',
53
- 'content' => __( 'A template displays single-item pages with your design and fields.', 'types' )
54
  ),
55
  array(
56
  'type' => 'link',
57
  'external' => true,
58
- 'label' => __( 'Learn more', 'types' ),
59
  'target' => Types_Helper_Url::get_url( 'learn-how-template', 'tooltip' )
60
  ),
61
  )
@@ -63,16 +63,16 @@ $question_marks = array(
63
 
64
  'archive' => array(
65
  'id' => 'archive',
66
- 'title' => __( 'Archive', 'types' ),
67
  'description' => array(
68
  array(
69
  'type' => 'paragraph',
70
- 'content' => __( 'An archive is the standard list that WordPress produces for content.', 'types' )
71
  ),
72
  array(
73
  'type' => 'link',
74
  'external' => true,
75
- 'label' => __( 'Learn more', 'types' ),
76
  'target' => Types_Helper_Url::get_url( 'learn-how-archive', 'tooltip' )
77
  ),
78
  )
@@ -80,16 +80,16 @@ $question_marks = array(
80
 
81
  'views' => array(
82
  'id' => 'views',
83
- 'title' => __( 'Views', 'types' ),
84
  'description' => array(
85
  array(
86
  'type' => 'paragraph',
87
- 'content' => __( 'Views are custom lists of content, which you can display anywhere in the site.', 'types' )
88
  ),
89
  array(
90
  'type' => 'link',
91
  'external' => true,
92
- 'label' => __( 'Learn more', 'types' ),
93
  'target' => Types_Helper_Url::get_url( 'learn-how-views', 'tooltip' )
94
  ),
95
  )
@@ -97,16 +97,16 @@ $question_marks = array(
97
 
98
  'forms' => array(
99
  'id' => 'forms',
100
- 'title' => __( 'Forms', 'types' ),
101
  'description' => array(
102
  array(
103
  'type' => 'paragraph',
104
- 'content' => __( 'Forms allow to create and edit content from the site’s front-end.', 'types' )
105
  ),
106
  array(
107
  'type' => 'link',
108
  'external' => true,
109
- 'label' => __( 'Learn more', 'types' ),
110
  'target' => Types_Helper_Url::get_url( 'learn-how-forms', 'tooltip' )
111
  ),
112
  )
@@ -115,15 +115,15 @@ $question_marks = array(
115
 
116
  // Visual Composer
117
  if( defined( 'WPB_VC_VERSION' ) ) {
118
- $question_marks['template']['description'][1]['label'] = __( 'Creating templates with Visual Composer', 'types' );
119
  }
120
  // Beaver Builder
121
  else if( class_exists( 'FLBuilderLoader' ) ) {
122
- $question_marks['template']['description'][1]['label'] = __( 'Creating templates with Beaver Builder', 'types' );
123
  }
124
  // Layouts
125
  else if( defined( 'WPDDL_DEVELOPMENT' ) || defined( 'WPDDL_PRODUCTION' ) ) {
126
- $question_marks['template']['description'][1]['label'] = __( 'Creating templates with Layouts', 'types' );
127
  }
128
 
129
  return $question_marks;
3
 
4
  'type' => array(
5
  'id' => 'type',
6
+ 'title' => __( 'Post Type', 'wpcf' ),
7
  ),
8
 
9
  'fields' => array(
10
  'id' => 'fields',
11
+ 'title' => __( 'Fields', 'wpcf' ),
12
  'description' => array(
13
  array(
14
  'type' => 'paragraph',
15
+ 'content' => __( 'A list of all Post Fields and their attachment to the Post Types.', 'wpcf' )
16
  ),
17
  array(
18
  'type' => 'link',
19
  'external' => true,
20
+ 'label' => __( 'Learn more', 'wpcf' ),
21
  'target' => Types_Helper_Url::get_url( 'learn-how-fields', 'tooltip' )
22
  ),
23
  )
25
 
26
  'taxonomies' => array(
27
  'id' => 'taxonomies',
28
+ 'title' => __( 'Taxonomies', 'wpcf' ),
29
  'description' => array(
30
  array(
31
  'type' => 'paragraph',
32
+ 'content' => __( 'A list of all Taxonomies and their attachment to the Post Types.', 'wpcf' )
33
  ),
34
  array(
35
  'type' => 'link',
36
  'external' => true,
37
+ 'label' => __( 'Learn more', 'wpcf' ),
38
  'target' => Types_Helper_Url::get_url( 'learn-how-taxonomies', 'tooltip' )
39
  ),
40
  )
46
 
47
  'template' => array(
48
  'id' => 'template',
49
+ 'title' => __( 'Template', 'wpcf' ),
50
  'description' => array(
51
  array(
52
  'type' => 'paragraph',
53
+ 'content' => __( 'A template displays single-item pages with your design and fields.', 'wpcf' )
54
  ),
55
  array(
56
  'type' => 'link',
57
  'external' => true,
58
+ 'label' => __( 'Learn more', 'wpcf' ),
59
  'target' => Types_Helper_Url::get_url( 'learn-how-template', 'tooltip' )
60
  ),
61
  )
63
 
64
  'archive' => array(
65
  'id' => 'archive',
66
+ 'title' => __( 'Archive', 'wpcf' ),
67
  'description' => array(
68
  array(
69
  'type' => 'paragraph',
70
+ 'content' => __( 'An archive is the standard list that WordPress produces for content.', 'wpcf' )
71
  ),
72
  array(
73
  'type' => 'link',
74
  'external' => true,
75
+ 'label' => __( 'Learn more', 'wpcf' ),
76
  'target' => Types_Helper_Url::get_url( 'learn-how-archive', 'tooltip' )
77
  ),
78
  )
80
 
81
  'views' => array(
82
  'id' => 'views',
83
+ 'title' => __( 'Views', 'wpcf' ),
84
  'description' => array(
85
  array(
86
  'type' => 'paragraph',
87
+ 'content' => __( 'Views are custom lists of content, which you can display anywhere in the site.', 'wpcf' )
88
  ),
89
  array(
90
  'type' => 'link',
91
  'external' => true,
92
+ 'label' => __( 'Learn more', 'wpcf' ),
93
  'target' => Types_Helper_Url::get_url( 'learn-how-views', 'tooltip' )
94
  ),
95
  )
97
 
98
  'forms' => array(
99
  'id' => 'forms',
100
+ 'title' => __( 'Forms', 'wpcf' ),
101
  'description' => array(
102
  array(
103
  'type' => 'paragraph',
104
+ 'content' => __( 'Forms allow to create and edit content from the site’s front-end.', 'wpcf' )
105
  ),
106
  array(
107
  'type' => 'link',
108
  'external' => true,
109
+ 'label' => __( 'Learn more', 'wpcf' ),
110
  'target' => Types_Helper_Url::get_url( 'learn-how-forms', 'tooltip' )
111
  ),
112
  )
115
 
116
  // Visual Composer
117
  if( defined( 'WPB_VC_VERSION' ) ) {
118
+ $question_marks['template']['description'][1]['label'] = __( 'Creating templates with Visual Composer', 'wpcf' );
119
  }
120
  // Beaver Builder
121
  else if( class_exists( 'FLBuilderLoader' ) ) {
122
+ $question_marks['template']['description'][1]['label'] = __( 'Creating templates with Beaver Builder', 'wpcf' );
123
  }
124
  // Layouts
125
  else if( defined( 'WPDDL_DEVELOPMENT' ) || defined( 'WPDDL_PRODUCTION' ) ) {
126
+ $question_marks['template']['description'][1]['label'] = __( 'Creating templates with Layouts', 'wpcf' );
127
  }
128
 
129
  return $question_marks;
application/data/dashboard/table/template.php CHANGED
@@ -1,5 +1,161 @@
1
  <?php
2
  return array(
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3
  /* No Views, No Layouts, Single Missing */
4
  'single-missing' => array(
5
  'type' => 'template',
@@ -15,25 +171,25 @@ return array(
15
  'description' => array(
16
  array(
17
  'type' => 'paragraph',
18
- 'content' => __( 'Your theme doesn’t have a template to display %POST-LABEL-PLURAL%.', 'types' )
19
  ),
20
  array(
21
  'type' => 'dialog',
22
  'class' => 'button',
23
- 'label' => __( 'Create template', 'types' ),
24
  'dialog' => array(
25
  'id' => 'resolve-single-no-template',
26
  'description' => array(
27
  array(
28
  'type' => 'paragraph',
29
  'content' => __( 'Toolset plugins let you design templates for single items (%POST-LABEL-SINGULAR% pages) without
30
- writing PHP. Your templates will include all the fields that you need and your design.', 'types' )
31
  ),
32
  array(
33
  'type' => 'link',
34
  'class' => 'button-primary types-button',
35
  'external' => true,
36
- 'label' => __( 'Learn about creating templates with Toolset', 'types' ),
37
  'target' => Types_Helper_Url::get_url( 'creating-templates-with-toolset', 'popup' ),
38
  ),
39
  )
@@ -57,25 +213,25 @@ return array(
57
  'description' => array(
58
  array(
59
  'type' => 'paragraph',
60
- 'content' => __( 'Your theme’s template file for displaying %POST-LABEL-SINGULAR% items is missing custom fields.', 'types' )
61
  ),
62
  array(
63
  'type' => 'dialog',
64
  'class' => 'button-primary types-button',
65
- 'label' => __( 'Resolve', 'types' ),
66
  'dialog' => array(
67
  'id' => 'resolve-single-no-fields',
68
  'description' => array(
69
  array(
70
  'type' => 'paragraph',
71
  'content' => __( 'Toolset plugins let you design templates for single items (%POST-LABEL-SINGULAR% pages),
72
- with all the fields that you need to display.', 'types' )
73
  ),
74
  array(
75
  'type' => 'link',
76
  'class' => 'button-primary types-button',
77
  'external' => true,
78
- 'label' => __( 'Learn about creating templates with Toolset', 'types' ),
79
  'target' => Types_Helper_Url::get_url( 'creating-templates-with-toolset', 'popup' ),
80
  ),
81
  )
@@ -97,96 +253,84 @@ return array(
97
  'description' => array(
98
  array(
99
  'type' => 'paragraph',
100
- 'content' => __( '%POST-TEMPLATE-FILE%', 'types' )
101
  ),
102
  ),
103
  ),
104
 
105
- /* Views, template missing */
106
- 'views-template-missing' => array(
107
  'type' => 'template',
108
 
109
  'priority' => 'important',
110
 
111
  'conditions'=> array(
112
  'Types_Helper_Condition_Layouts_Missing',
113
- 'Types_Helper_Condition_Views_Template_Missing'
 
114
  ),
115
 
116
  'description' => array(
117
  array(
118
  'type' => 'paragraph',
119
- 'content' => __( 'There is no Content Template for %POST-LABEL-SINGULAR% items.', 'types' )
120
  ),
121
  array(
122
  'type' => 'link',
123
  'class' => 'button',
124
  'target' => '%POST-CREATE-CONTENT-TEMPLATE%',
125
- 'label' => __( 'Create template', 'types' )
126
  )
127
  ),
128
-
129
  ),
130
 
131
- /* Views, template */
132
- 'views-template' => array(
133
  'type' => 'template',
134
 
135
  'conditions'=> array(
136
  'Types_Helper_Condition_Layouts_Missing',
137
- 'Types_Helper_Condition_Views_Template_Exists'
 
138
  ),
139
 
140
  'description' => array(
141
  array(
142
- 'type' => 'link',
143
- 'label' => '%POST-CONTENT-TEMPLATE-NAME%',
144
- 'target' => '%POST-EDIT-CONTENT-TEMPLATE%'
145
  ),
 
 
 
 
 
 
146
  ),
147
-
148
  ),
149
 
150
- /* Layouts, template missing*/
151
- 'layouts-template-missing' => array(
152
  'type' => 'template',
153
 
154
  'priority' => 'important',
155
 
156
  'conditions'=> array(
157
- 'Types_Helper_Condition_Layouts_Active',
158
- 'Types_Helper_Condition_Layouts_Template_Missing'
159
  ),
160
 
161
  'description' => array(
162
  array(
163
  'type' => 'paragraph',
164
- 'content' => __( 'There is no template layout for %POST-LABEL-SINGULAR% items.', 'types' )
165
  ),
166
  array(
167
  'type' => 'link',
168
  'class' => 'button',
169
- 'label' => __( 'Create template', 'types' ),
170
- 'target' => '%POST-CREATE-LAYOUT-TEMPLATE%',
171
  )
172
  ),
173
- ),
174
-
175
- /* Layouts, template */
176
- 'layouts-template' => array(
177
- 'type' => 'template',
178
-
179
- 'conditions'=> array(
180
- 'Types_Helper_Condition_Layouts_Active',
181
- 'Types_Helper_Condition_Layouts_Template_Exists'
182
- ),
183
 
184
- 'description' => array(
185
- array(
186
- 'type' => 'link',
187
- 'label' => '%POST-LAYOUT-TEMPLATE%',
188
- 'target' => '%POST-EDIT-LAYOUT-TEMPLATE%'
189
- ),
190
- ),
191
  ),
192
  );
1
  <?php
2
  return array(
3
+ /* Layouts, integrated, template missing*/
4
+ 'layouts-integrated-template-missing' => array(
5
+ 'type' => 'template',
6
+
7
+ 'priority' => 'important',
8
+
9
+ 'conditions'=> array(
10
+ 'Types_Helper_Condition_Layouts_Active',
11
+ 'Types_Helper_Condition_Layouts_Compatible',
12
+ 'Types_Helper_Condition_Layouts_Template_Missing'
13
+ ),
14
+
15
+ 'description' => array(
16
+ array(
17
+ 'type' => 'paragraph',
18
+ 'content' => __( 'There is no template layout for %POST-LABEL-SINGULAR% items.', 'wpcf' )
19
+ ),
20
+ array(
21
+ 'type' => 'link',
22
+ 'class' => 'button',
23
+ 'label' => __( 'Create template', 'wpcf' ),
24
+ 'target' => '%POST-CREATE-LAYOUT-TEMPLATE%',
25
+ )
26
+ ),
27
+ ),
28
+
29
+ /* Layouts, template */
30
+ 'layouts-template' => array(
31
+ 'type' => 'template',
32
+
33
+ 'conditions'=> array(
34
+ 'Types_Helper_Condition_Layouts_Active',
35
+ 'Types_Helper_Condition_Layouts_Template_Exists'
36
+ ),
37
+
38
+ 'description' => array(
39
+ array(
40
+ 'type' => 'link',
41
+ 'label' => '%POST-LAYOUT-TEMPLATE%',
42
+ 'target' => '%POST-EDIT-LAYOUT-TEMPLATE%'
43
+ ),
44
+ ),
45
+ ),
46
+
47
+ /* Views, template */
48
+ 'views-template' => array(
49
+ 'type' => 'template',
50
+
51
+ 'conditions'=> array(
52
+ 'Types_Helper_Condition_Layouts_Missing',
53
+ 'Types_Helper_Condition_Views_Template_Exists'
54
+ ),
55
+
56
+ 'description' => array(
57
+ array(
58
+ 'type' => 'link',
59
+ 'label' => '%POST-CONTENT-TEMPLATE-NAME%',
60
+ 'target' => '%POST-EDIT-CONTENT-TEMPLATE%'
61
+ ),
62
+ ),
63
+ ),
64
+
65
+ /* For posts and pages we always show template file if it exists */
66
+ 'single-exists-for-posts-pages' => array(
67
+ 'type' => 'template',
68
+
69
+ 'conditions'=> array(
70
+ 'Types_Helper_Condition_Type_Post_Or_Page',
71
+ 'Types_Helper_Condition_Single_Exists',
72
+ 'Types_Helper_Condition_Single_Has_Fields'
73
+ ),
74
+
75
+ 'description' => array(
76
+ array(
77
+ 'type' => 'paragraph',
78
+ 'content' => __( '%POST-TEMPLATE-FILE%', 'wpcf' )
79
+ ),
80
+ ),
81
+ ),
82
+
83
+ /* Layouts, has template with missing fields. */
84
+ 'layouts-single-fields-missing' => array(
85
+ 'type' => 'template',
86
+
87
+ 'priority' => 'important',
88
+
89
+ 'conditions'=> array(
90
+ 'Types_Helper_Condition_Layouts_Active',
91
+ 'Types_Helper_Condition_Layouts_Template_Missing',
92
+ 'Types_Helper_Condition_Single_No_Fields',
93
+ ),
94
+
95
+ 'description' => array(
96
+ array(
97
+ 'type' => 'paragraph',
98
+ 'content' => __( 'Your theme’s template file %POST-TEMPLATE-FILE% for displaying %POST-LABEL-SINGULAR% items is missing custom fields.', 'wpcf' )
99
+ ),
100
+ array(
101
+ 'type' => 'link',
102
+ 'class' => 'button',
103
+ 'label' => __( 'Create template', 'wpcf' ),
104
+ 'target' => '%POST-CREATE-LAYOUT-TEMPLATE%',
105
+ )
106
+ ),
107
+ ),
108
+
109
+ /* Layouts, single.php exists, but layouts missing */
110
+ 'layouts-php-template-exists-layouts-template-missing' => array(
111
+ 'type' => 'template',
112
+
113
+ 'conditions'=> array(
114
+ 'Types_Helper_Condition_Layouts_Active',
115
+ 'Types_Helper_Condition_Layouts_Template_Missing',
116
+ 'Types_Helper_Condition_Single_Exists'
117
+ ),
118
+
119
+ 'description' => array(
120
+ array(
121
+ 'type' => 'paragraph',
122
+ 'content' => __( '%POST-TEMPLATE-FILE%', 'wpcf' )
123
+ ),
124
+ array(
125
+ 'type' => 'link',
126
+ 'class' => 'button',
127
+ 'label' => __( 'Create template', 'wpcf' ),
128
+ 'target' => '%POST-CREATE-LAYOUT-TEMPLATE%',
129
+ )
130
+ ),
131
+
132
+ ),
133
+
134
+ /* Layouts, template missing*/
135
+ 'layouts-template-missing' => array(
136
+ 'type' => 'template',
137
+
138
+ 'priority' => 'important',
139
+
140
+ 'conditions'=> array(
141
+ 'Types_Helper_Condition_Layouts_Active',
142
+ 'Types_Helper_Condition_Layouts_Template_Missing'
143
+ ),
144
+
145
+ 'description' => array(
146
+ array(
147
+ 'type' => 'paragraph',
148
+ 'content' => __( 'There is no template layout for %POST-LABEL-SINGULAR% items.', 'wpcf' )
149
+ ),
150
+ array(
151
+ 'type' => 'link',
152
+ 'class' => 'button',
153
+ 'label' => __( 'Create template', 'wpcf' ),
154
+ 'target' => '%POST-CREATE-LAYOUT-TEMPLATE%',
155
+ )
156
+ ),
157
+ ),
158
+
159
  /* No Views, No Layouts, Single Missing */
160
  'single-missing' => array(
161
  'type' => 'template',
171
  'description' => array(
172
  array(
173
  'type' => 'paragraph',
174
+ 'content' => __( 'Your theme doesn’t have a template to display %POST-LABEL-PLURAL%.', 'wpcf' )
175
  ),
176
  array(
177
  'type' => 'dialog',
178
  'class' => 'button',
179
+ 'label' => __( 'Create template', 'wpcf' ),
180
  'dialog' => array(
181
  'id' => 'resolve-single-no-template',
182
  'description' => array(
183
  array(
184
  'type' => 'paragraph',
185
  'content' => __( 'Toolset plugins let you design templates for single items (%POST-LABEL-SINGULAR% pages) without
186
+ writing PHP. Your templates will include all the fields that you need and your design.', 'wpcf' )
187
  ),
188
  array(
189
  'type' => 'link',
190
  'class' => 'button-primary types-button',
191
  'external' => true,
192
+ 'label' => __( 'Learn about creating templates with Toolset', 'wpcf' ),
193
  'target' => Types_Helper_Url::get_url( 'creating-templates-with-toolset', 'popup' ),
194
  ),
195
  )
213
  'description' => array(
214
  array(
215
  'type' => 'paragraph',
216
+ 'content' => __( 'Your theme’s template file for displaying %POST-LABEL-SINGULAR% items is missing custom fields.', 'wpcf' )
217
  ),
218
  array(
219
  'type' => 'dialog',
220
  'class' => 'button-primary types-button',
221
+ 'label' => __( 'Resolve', 'wpcf' ),
222
  'dialog' => array(
223
  'id' => 'resolve-single-no-fields',
224
  'description' => array(
225
  array(
226
  'type' => 'paragraph',
227
  'content' => __( 'Toolset plugins let you design templates for single items (%POST-LABEL-SINGULAR% pages),
228
+ with all the fields that you need to display.', 'wpcf' )
229
  ),
230
  array(
231
  'type' => 'link',
232
  'class' => 'button-primary types-button',
233
  'external' => true,
234
+ 'label' => __( 'Learn about creating templates with Toolset', 'wpcf' ),
235
  'target' => Types_Helper_Url::get_url( 'creating-templates-with-toolset', 'popup' ),
236
  ),
237
  )
253
  'description' => array(
254
  array(
255
  'type' => 'paragraph',
256
+ 'content' => __( '%POST-TEMPLATE-FILE%', 'wpcf' )
257
  ),
258
  ),
259
  ),
260
 
261
+ /* Views, has template with missing fields. */
262
+ 'views-single-fields-missing' => array(
263
  'type' => 'template',
264
 
265
  'priority' => 'important',
266
 
267
  'conditions'=> array(
268
  'Types_Helper_Condition_Layouts_Missing',
269
+ 'Types_Helper_Condition_Views_Template_Missing',
270
+ 'Types_Helper_Condition_Single_No_Fields',
271
  ),
272
 
273
  'description' => array(
274
  array(
275
  'type' => 'paragraph',
276
+ 'content' => __( 'Your theme’s template file %POST-TEMPLATE-FILE% for displaying %POST-LABEL-SINGULAR% items is missing custom fields.', 'wpcf' )
277
  ),
278
  array(
279
  'type' => 'link',
280
  'class' => 'button',
281
  'target' => '%POST-CREATE-CONTENT-TEMPLATE%',
282
+ 'label' => __( 'Create Content Template', 'wpcf' )
283
  )
284
  ),
 
285
  ),
286
 
287
+ /* Views, single.php exists, but views missing */
288
+ 'views-php-template-exists-views-template-missing' => array(
289
  'type' => 'template',
290
 
291
  'conditions'=> array(
292
  'Types_Helper_Condition_Layouts_Missing',
293
+ 'Types_Helper_Condition_Views_Template_Missing',
294
+ 'Types_Helper_Condition_Single_Exists'
295
  ),
296
 
297
  'description' => array(
298
  array(
299
+ 'type' => 'paragraph',
300
+ 'content' => __( '%POST-TEMPLATE-FILE%', 'wpcf' )
 
301
  ),
302
+ array(
303
+ 'type' => 'link',
304
+ 'class' => 'button',
305
+ 'target' => '%POST-CREATE-CONTENT-TEMPLATE%',
306
+ 'label' => __( 'Create Content Template', 'wpcf' )
307
+ )
308
  ),
 
309
  ),
310
 
311
+ /* Views, template missing */
312
+ 'views-template-missing' => array(
313
  'type' => 'template',
314
 
315
  'priority' => 'important',
316
 
317
  'conditions'=> array(
318
+ 'Types_Helper_Condition_Layouts_Missing',
319
+ 'Types_Helper_Condition_Views_Template_Missing'
320
  ),
321
 
322
  'description' => array(
323
  array(
324
  'type' => 'paragraph',
325
+ 'content' => __( 'There is no Content Template for %POST-LABEL-SINGULAR% items.', 'wpcf' )
326
  ),
327
  array(
328
  'type' => 'link',
329
  'class' => 'button',
330
+ 'target' => '%POST-CREATE-CONTENT-TEMPLATE%',
331
+ 'label' => __( 'Create template', 'wpcf' )
332
  )
333
  ),
 
 
 
 
 
 
 
 
 
 
334
 
 
 
 
 
 
 
 
335
  ),
336
  );
application/data/dashboard/table/views.php CHANGED
@@ -12,26 +12,26 @@ return array(
12
  array(
13
  'type' => 'dialog',
14
  'class' => 'button',
15
- 'label' => __( 'Create View', 'types' ),
16
  'dialog' => array(
17
  'id' => 'create-view',
18
  'description' => array(
19
  array(
20
  'type' => 'paragraph',
21
  'content' => __( 'To create a View for this content type, you need to have Views plugin installed. Views is part of the
22
- complete Toolset package for adding and displaying custom content.', 'types' )
23
  ),
24
  array(
25
  'type' => 'link',
26
  'external' => true,
27
- 'label' => __( 'Learn how Views work', 'types' ),
28
  'target' => Types_Helper_Url::get_url( 'how-views-work', 'popup' )
29
  ),
30
  /*
31
  array(
32
  'type' => 'link',
33
  'external' => true,
34
- 'label' => __( 'Free Toolset Trial', 'types' ),
35
  'target' => Types_Helper_Url::get_url( 'free-trial', 'popup' )
36
  )
37
  */
@@ -53,11 +53,13 @@ return array(
53
 
54
  'description' => array(
55
  array(
56
- 'type' => 'link',
57
- 'class' => 'button',
58
- 'target' => '%POST-CREATE-VIEW%',
59
- 'label' => __( 'Create View', 'types' )
60
- )
 
 
61
  )
62
  ),
63
 
@@ -73,14 +75,16 @@ return array(
73
  'description' => array(
74
  array(
75
  'type' => 'paragraph',
76
- 'content' => '%POST-VIEWS-LIST%', 'types'
77
  ),
78
  array(
79
- 'type' => 'link',
80
- 'class' => 'button',
81
  'target' => '%POST-CREATE-VIEW%',
82
- 'label' => __( 'Create View', 'types' )
83
- )
 
 
84
  )
85
  ),
86
 
@@ -97,14 +101,14 @@ return array(
97
  array(
98
  'type' => 'paragraph',
99
  'content' => __(
100
- 'Edit any layout and add a View cell to it, to display lists of %POST-LABEL-PLURAL%.', 'types'
101
  )
102
  ),
103
  array(
104
  'type' => 'link',
105
  'external' => true,
106
  'target' => Types_Helper_Url::get_url( 'adding-views-to-layouts', 'table' ),
107
- 'label' => __( 'Learn how', 'types' )
108
  ),
109
  )
110
  ),
@@ -121,13 +125,13 @@ return array(
121
  'description' => array(
122
  array(
123
  'type' => 'paragraph',
124
- 'content' => '%POST-VIEWS-LIST%', 'types'
125
  ),
126
  array(
127
  'type' => 'link',
128
  'external' => true,
129
  'target' => Types_Helper_Url::get_url( 'adding-views-to-layouts', 'table' ),
130
- 'label' => __( 'How to add Views to layouts', 'types' )
131
  ),
132
  )
133
  ),
12
  array(
13
  'type' => 'dialog',
14
  'class' => 'button',
15
+ 'label' => __( 'Create View', 'wpcf' ),
16
  'dialog' => array(
17
  'id' => 'create-view',
18
  'description' => array(
19
  array(
20
  'type' => 'paragraph',
21
  'content' => __( 'To create a View for this content type, you need to have Views plugin installed. Views is part of the
22
+ complete Toolset package for adding and displaying custom content.', 'wpcf' )
23
  ),
24
  array(
25
  'type' => 'link',
26
  'external' => true,
27
+ 'label' => __( 'Learn how Views work', 'wpcf' ),
28
  'target' => Types_Helper_Url::get_url( 'how-views-work', 'popup' )
29
  ),
30
  /*
31
  array(
32
  'type' => 'link',
33
  'external' => true,
34
+ 'label' => __( 'Free Toolset Trial', 'wpcf' ),
35
  'target' => Types_Helper_Url::get_url( 'free-trial', 'popup' )
36
  )
37
  */
53
 
54
  'description' => array(
55
  array(
56
+ 'type' => 'link',
57
+ 'class' => 'button js-toolset-dashboard-create-view',
58
+ 'target' => '%POST-CREATE-VIEW%',
59
+ 'post_type' => '%POST-CREATE-VIEW-TYPE%',
60
+ 'redirect_url' => '%POST-CREATE-VIEW-REDIRECT-URL%',
61
+ 'label' => __( 'Create View', 'wpcf' ),
62
+ ),
63
  )
64
  ),
65
 
75
  'description' => array(
76
  array(
77
  'type' => 'paragraph',
78
+ 'content' => '%POST-VIEWS-LIST%',
79
  ),
80
  array(
81
+ 'type' => 'link',
82
+ 'class' => 'button js-toolset-dashboard-create-view',
83
  'target' => '%POST-CREATE-VIEW%',
84
+ 'post_type' => '%POST-CREATE-VIEW-TYPE%',
85
+ 'redirect_url' => '%POST-CREATE-VIEW-REDIRECT-URL%',
86
+ 'label' => __( 'Create View', 'wpcf' ),
87
+ ),
88
  )
89
  ),
90
 
101
  array(
102
  'type' => 'paragraph',
103
  'content' => __(
104
+ 'Edit any layout and add a View cell to it, to display lists of %POST-LABEL-PLURAL%.', 'wpcf'
105
  )
106
  ),
107
  array(
108
  'type' => 'link',
109
  'external' => true,
110
  'target' => Types_Helper_Url::get_url( 'adding-views-to-layouts', 'table' ),
111
+ 'label' => __( 'Learn how', 'wpcf' )
112
  ),
113
  )
114
  ),
125
  'description' => array(
126
  array(
127
  'type' => 'paragraph',
128
+ 'content' => '%POST-VIEWS-LIST%'
129
  ),
130
  array(
131
  'type' => 'link',
132
  'external' => true,
133
  'target' => Types_Helper_Url::get_url( 'adding-views-to-layouts', 'table' ),
134
+ 'label' => __( 'How to add Views to layouts', 'wpcf' )
135
  ),
136
  )
137
  ),
application/data/documentation-urls.php CHANGED
@@ -12,9 +12,9 @@ $urls = array(
12
  'learn-how-fields' => 'https://wp-types.com/documentation/user-guides/using-custom-fields/',
13
  'learn-how-taxonomies' => 'https://wp-types.com/documentation/user-guides/create-custom-taxonomies/',
14
  'creating-templates-with-toolset' => 'https://wp-types.com/documentation/user-guides/learn-about-creating-templates-with-toolset/',
15
- 'creating-templates-with-php' => 'https://wp-types.com/documentation/user-guides/creating-templates-for-single-custom-posts-in-php/',
16
  'creating-archives-with-toolset' => 'https://wp-types.com/documentation/user-guides/learn-about-creating-archives-with-toolset/',
17
- 'creating-archives-with-php' => 'https://wp-types.com/documentation/user-guides/creating-templates-custom-post-type-archives-php/',
18
  'how-views-work' => 'https://wp-types.com/documentation/user-guides/learn-what-you-can-do-with-views/',
19
  'how-to-add-views-to-layouts' => 'https://wp-types.com/documentation/user-guides/views/',
20
  'learn-views' => 'https://wp-types.com/documentation/user-guides/learn-what-you-can-do-with-views/',
12
  'learn-how-fields' => 'https://wp-types.com/documentation/user-guides/using-custom-fields/',
13
  'learn-how-taxonomies' => 'https://wp-types.com/documentation/user-guides/create-custom-taxonomies/',
14
  'creating-templates-with-toolset' => 'https://wp-types.com/documentation/user-guides/learn-about-creating-templates-with-toolset/',
15
+ 'creating-templates-with-php' => 'https://wp-types.com/documentation/customizing-sites-using-php/creating-templates-single-custom-posts/',
16
  'creating-archives-with-toolset' => 'https://wp-types.com/documentation/user-guides/learn-about-creating-archives-with-toolset/',
17
+ 'creating-archives-with-php' => 'https://wp-types.com/documentation/customizing-sites-using-php/creating-templates-custom-post-type-archives/',
18
  'how-views-work' => 'https://wp-types.com/documentation/user-guides/learn-what-you-can-do-with-views/',
19
  'how-to-add-views-to-layouts' => 'https://wp-types.com/documentation/user-guides/views/',
20
  'learn-views' => 'https://wp-types.com/documentation/user-guides/learn-what-you-can-do-with-views/',
application/data/information/layouts-not-compatible.php DELETED
@@ -1,30 +0,0 @@
1
- <?php
2
- return array(
3
- 'layouts-not-compatible' => array(
4
-
5
- 'conditions'=> array(),
6
-
7
- 'description' => array(
8
- array(
9
- 'type' => 'paragraph',
10
- 'content' => __( 'Layouts plugin is installed in your site, but it is not integrated with your theme.
11
- This will make it difficult to display custom content and fields. You can:', 'types' )
12
- ),
13
- array(
14
- 'type' => 'list',
15
- 'content' => array(
16
- __( 'Disable Layouts plugin and use Views plugin to design front-end display', 'types' ),
17
- sprintf(
18
- __( 'Choose a different theme (<a href="%s" target="_blank">themes compatible with Layouts</a>)', 'types' ),
19
- Types_Helper_Url::get_url( 'themes-compatible-with-layouts', 'table' )
20
- ),
21
- sprintf(
22
- __( 'Integrate Layouts with this theme (<a href="%s" target="_blank">Layouts integration instructions</a>)', 'types' ),
23
- Types_Helper_Url::get_url( 'layouts-integration-instructions', 'table' )
24
- ),
25
- )
26
- )
27
- ),
28
-
29
- ),
30
- );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
application/data/information/table/archive.php CHANGED
@@ -4,21 +4,203 @@ return array(
4
  'no-archive-support' => array(
5
  'type' => 'archive',
6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7
  'priority' => 'important',
8
 
9
  'conditions'=> array(
10
- 'Types_Helper_Condition_Archive_No_Support'
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
11
  ),
12
 
13
  'description' => array(
14
  array(
15
  'type' => 'paragraph',
16
- 'content' => __( 'The archive is disabled for this post type.', 'types' )
 
 
 
 
 
 
17
  ),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
18
  array(
19
  'type' => 'paragraph',
20
- 'content' => __( 'To enable, go to <a href="%POST-TYPE-EDIT-HAS-ARCHIVE%">Options</a> and mark "has_archive".', 'types' )
 
 
 
 
 
 
21
  ),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
22
  ),
23
  ),
24
 
@@ -37,31 +219,31 @@ return array(
37
  'description' => array(
38
  array(
39
  'type' => 'paragraph',
40
- 'content' => __( 'Your theme is missing the standard WordPress archive for %POST-LABEL-PLURAL%.', 'types' )
41
  ),
42
  array(
43
  'type' => 'link',
44
  'external' => true,
45
- 'label' => __( 'Visit the %POST-LABEL-PLURAL% archive', 'types' ),
46
  'target' => '%POST-ARCHIVE-PERMALINK%'
47
  ),
48
  array(
49
  'type' => 'dialog',
50
  'class' => 'button-primary types-button',
51
- 'label' => __( 'Resolve', 'types' ),
52
  'dialog' => array(
53
  'id' => 'resolve-no-archive',
54
  'description' => array(
55
  array(
56
  'type' => 'paragraph',
57
  'content' => __( 'Toolset plugins let you design archive pages without writing PHP. Your archives will include all
58
- the fields that you need and your design.', 'types' )
59
  ),
60
  array(
61
  'type' => 'link',
62
  'class' => 'button-primary types-button',
63
  'external' => true,
64
- 'label' => __( 'Learn about creating archives with Toolset', 'types' ),
65
  'target' => Types_Helper_Url::get_url( 'creating-archives-with-toolset', 'popup' ),
66
  ),
67
  )
@@ -85,30 +267,30 @@ return array(
85
  'description' => array(
86
  array(
87
  'type' => 'paragraph',
88
- 'content' => __( 'The %POST-LABEL-PLURAL% archive of your theme is missing custom fields.', 'types' )
89
  ),
90
  array(
91
  'type' => 'link',
92
  'external' => true,
93
- 'label' => __( 'Visit the %POST-LABEL-PLURAL% archive', 'types' ),
94
  'target' => '%POST-ARCHIVE-PERMALINK%'
95
  ),
96
  array(
97
  'type' => 'dialog',
98
  'class' => 'button-primary types-button',
99
- 'label' => __( 'Resolve', 'types' ),
100
  'dialog' => array(
101
  'id' => 'resolve-no-custom-fields',
102
  'description' => array(
103
  array(
104
  'type' => 'paragraph',
105
- 'content' => __( 'Toolset plugins let you design archives with custom fields, without writing PHP.', 'types' )
106
  ),
107
  array(
108
  'type' => 'link',
109
  'class' => 'button-primary types-button',
110
  'external' => true,
111
- 'label' => __( 'Learn about creating archives with Toolset', 'types' ),
112
  'target' => Types_Helper_Url::get_url( 'creating-archives-with-toolset', 'popup' ),
113
  )
114
  )
@@ -130,141 +312,140 @@ return array(
130
  'description' => array(
131
  array(
132
  'type' => 'paragraph',
133
- 'content' => __( 'Your theme displays the %POST-LABEL-SINGULAR% archive using the file: %POST-ARCHIVE-FILE%', 'types' )
134
  ),
135
  array(
136
  'type' => 'link',
137
  'external' => true,
138
- 'label' => __( 'Visit the %POST-LABEL-PLURAL% archive', 'types' ),
139
  'target' => '%POST-ARCHIVE-PERMALINK%'
140
  ),
141
  ),
142
  ),
143
 
144
- /* Views, template missing */
145
- 'views-archive-missing' => array(
146
  'type' => 'archive',
147
 
148
  'priority' => 'important',
149
 
150
  'conditions'=> array(
151
  'Types_Helper_Condition_Layouts_Missing',
152
- 'Types_Helper_Condition_Views_Archive_Missing'
 
153
  ),
154
 
155
  'description' => array(
156
  array(
157
  'type' => 'paragraph',
158
- 'content' => __( 'There is no WordPress Archive for %POST-LABEL-PLURAL%.', 'types' )
159
  ),
160
  array(
161
  'type' => 'link',
162
  'external' => true,
163
- 'label' => __( 'Visit the %POST-LABEL-PLURAL% archive', 'types' ),
164
  'target' => '%POST-ARCHIVE-PERMALINK%'
165
  ),
166
  array(
167
  'type' => 'link',
168
  'class' => 'button-primary types-button',
169
  'target' => '%POST-CREATE-VIEWS-ARCHIVE%',
170
- 'label' => __( 'Create archive', 'types' )
171
  )
172
-
173
  ),
174
-
175
  ),
176
 
177
- /* Views, archive */
178
- 'views-archive' => array(
179
  'type' => 'archive',
180
 
181
  'conditions'=> array(
182
  'Types_Helper_Condition_Layouts_Missing',
183
- 'Types_Helper_Condition_Views_Archive_Exists'
 
184
  ),
185
 
186
  'description' => array(
187
  array(
188
  'type' => 'paragraph',
189
- 'content' => __( 'The WordPress Archive for %POST-LABEL-PLURAL% is "%POST-VIEWS-ARCHIVE%"', 'types' )
190
  ),
191
-
192
  array(
193
  'type' => 'link',
194
  'external' => true,
195
- 'label' => __( 'Visit the %POST-LABEL-PLURAL% archive', 'types' ),
196
  'target' => '%POST-ARCHIVE-PERMALINK%'
197
  ),
198
-
199
  array(
200
  'type' => 'link',
201
- 'class' => 'button',
202
- 'label' => __( 'Edit WordPress Archive', 'types' ),
203
- 'target' => '%POST-EDIT-VIEWS-ARCHIVE%',
204
  )
205
  ),
206
 
207
  ),
208
 
209
- /* Layouts, Archive missing */
210
- 'layouts-archive-missing' => array(
211
  'type' => 'archive',
212
 
213
  'priority' => 'important',
214
 
215
  'conditions'=> array(
216
- 'Types_Helper_Condition_Layouts_Active',
217
- 'Types_Helper_Condition_Layouts_Archive_Missing'
218
  ),
219
 
220
  'description' => array(
221
  array(
222
  'type' => 'paragraph',
223
- 'content' => __( 'There is no layout for the %POST-LABEL-PLURAL% archive.', 'types' )
224
  ),
225
-
226
  array(
227
  'type' => 'link',
228
  'external' => true,
229
- 'label' => __( 'Visit the %POST-LABEL-PLURAL% archive', 'types' ),
230
  'target' => '%POST-ARCHIVE-PERMALINK%'
231
  ),
232
-
233
  array(
234
  'type' => 'link',
235
  'class' => 'button-primary types-button',
236
- 'label' => __( 'Create archive', 'types' ),
237
- 'target' => '%POST-CREATE-LAYOUT-ARCHIVE%',
238
  )
 
239
  ),
240
  ),
241
 
242
- /* Layouts, Archive */
243
- 'layouts-archive' => array(
244
  'type' => 'archive',
245
 
246
  'conditions'=> array(
247
- 'Types_Helper_Condition_Layouts_Active',
248
- 'Types_Helper_Condition_Layouts_Archive_Exists'
249
  ),
250
 
251
  'description' => array(
252
  array(
253
  'type' => 'paragraph',
254
- 'content' => __( 'The layout for the %POST-LABEL-PLURAL% archive is "%POST-LAYOUT-ARCHIVE%".', 'types' )
255
  ),
 
256
  array(
257
  'type' => 'link',
258
  'external' => true,
259
- 'label' => __( 'Visit the %POST-LABEL-PLURAL% archive', 'types' ),
260
  'target' => '%POST-ARCHIVE-PERMALINK%'
261
  ),
 
262
  array(
263
  'type' => 'link',
264
  'class' => 'button',
265
- 'label' => __( 'Edit layout', 'types' ),
266
- 'target' => '%POST-EDIT-LAYOUT-ARCHIVE%',
267
  )
268
  ),
269
- )
270
  );
4
  'no-archive-support' => array(
5
  'type' => 'archive',
6
 
7
+ 'conditions'=> array(
8
+ 'Types_Helper_Condition_Archive_No_Support'
9
+ ),
10
+
11
+ 'description' => array(
12
+ array(
13
+ 'type' => 'paragraph',
14
+ 'content' => __( 'The archive is disabled for this post type.', 'wpcf' )
15
+ ),
16
+ array(
17
+ 'type' => 'paragraph',
18
+ 'content' => __( 'To enable, go to <a href="%POST-TYPE-EDIT-HAS-ARCHIVE%">Options</a> and mark "has_archive".', 'wpcf' )
19
+ ),
20
+ ),
21
+ ),
22
+
23
+ /* Layouts, integrated, Archive missing */
24
+ 'layouts-integrated-archive-missing' => array(
25
+ 'type' => 'archive',
26
+
27
  'priority' => 'important',
28
 
29
  'conditions'=> array(
30
+ 'Types_Helper_Condition_Layouts_Active',
31
+ 'Types_Helper_Condition_Layouts_Compatible',
32
+ 'Types_Helper_Condition_Layouts_Archive_Missing'
33
+ ),
34
+
35
+ 'description' => array(
36
+ array(
37
+ 'type' => 'paragraph',
38
+ 'content' => __( 'There is no layout for the %POST-LABEL-PLURAL% archive.', 'wpcf' )
39
+ ),
40
+
41
+ array(
42
+ 'type' => 'link',
43
+ 'external' => true,
44
+ 'label' => __( 'Visit the %POST-LABEL-PLURAL% archive', 'wpcf' ),
45
+ 'target' => '%POST-ARCHIVE-PERMALINK%'
46
+ ),
47
+
48
+ array(
49
+ 'type' => 'link',
50
+ 'class' => 'button-primary types-button',
51
+ 'label' => __( 'Create archive', 'wpcf' ),
52
+ 'target' => '%POST-CREATE-LAYOUT-ARCHIVE%',
53
+ )
54
+ ),
55
+ ),
56
+
57
+ /* Layouts, Archive */
58
+ 'layouts-archive' => array(
59
+ 'type' => 'archive',
60
+
61
+ 'conditions'=> array(
62
+ 'Types_Helper_Condition_Layouts_Active',
63
+ 'Types_Helper_Condition_Layouts_Archive_Exists'
64
+ ),
65
+
66
+ 'description' => array(
67
+ array(
68
+ 'type' => 'paragraph',
69
+ 'content' => __( 'The layout for the %POST-LABEL-PLURAL% archive is "%POST-LAYOUT-ARCHIVE%".', 'wpcf' )
70
+ ),
71
+ array(
72
+ 'type' => 'link',
73
+ 'external' => true,
74
+ 'label' => __( 'Visit the %POST-LABEL-PLURAL% archive', 'wpcf' ),
75
+ 'target' => '%POST-ARCHIVE-PERMALINK%'
76
+ ),
77
+ array(
78
+ 'type' => 'link',
79
+ 'class' => 'button',
80
+ 'label' => __( 'Edit layout', 'wpcf' ),
81
+ 'target' => '%POST-EDIT-LAYOUT-ARCHIVE%',
82
+ )
83
+ ),
84
+ ),
85
+
86
+ /* For posts and pages we always show template file if it exists */
87
+ 'archive-exists-for-posts-pages' => array(
88
+ 'type' => 'archive',
89
+
90
+ 'conditions'=> array(
91
+ 'Types_Helper_Condition_Type_Post_Or_Page',
92
+ 'Types_Helper_Condition_Archive_Exists',
93
+ 'Types_Helper_Condition_Archive_Has_Fields'
94
  ),
95
 
96
  'description' => array(
97
  array(
98
  'type' => 'paragraph',
99
+ 'content' => __( 'Your theme displays the %POST-LABEL-SINGULAR% archive using the file: %POST-ARCHIVE-FILE%', 'wpcf' )
100
+ ),
101
+ array(
102
+ 'type' => 'link',
103
+ 'external' => true,
104
+ 'label' => __( 'Visit example %POST-LABEL-SINGULAR%', 'wpcf' ),
105
+ 'target' => '%POST-PERMALINK%'
106
  ),
107
+ ),
108
+ ),
109
+
110
+ /* Layouts, has template with missing fields. */
111
+ 'layouts-archive-fields-missing' => array(
112
+ 'type' => 'archive',
113
+
114
+ 'priority' => 'important',
115
+
116
+ 'conditions'=> array(
117
+ 'Types_Helper_Condition_Layouts_Active',
118
+ 'Types_Helper_Condition_Layouts_Archive_Missing',
119
+ 'Types_Helper_Condition_Archive_No_Fields'
120
+ ),
121
+
122
+ 'description' => array(
123
  array(
124
  'type' => 'paragraph',
125
+ 'content' => __( 'The %POST-LABEL-PLURAL% archive of your theme %POST-ARCHIVE-FILE% is missing custom fields.', 'wpcf' )
126
+ ),
127
+ array(
128
+ 'type' => 'link',
129
+ 'external' => true,
130
+ 'label' => __( 'Visit the %POST-LABEL-PLURAL% archive', 'wpcf' ),
131
+ 'target' => '%POST-ARCHIVE-PERMALINK%'
132
  ),
133
+
134
+ array(
135
+ 'type' => 'link',
136
+ 'class' => 'button-primary types-button',
137
+ 'label' => __( 'Create archive', 'wpcf' ),
138
+ 'target' => '%POST-CREATE-LAYOUT-ARCHIVE%',
139
+ )
140
+ ),
141
+ ),
142
+
143
+ /* Layouts, single.php exists, but layouts missing */
144
+ 'layouts-php-archive-exists-layouts-archive-missing' => array(
145
+ 'type' => 'archive',
146
+
147
+ 'conditions'=> array(
148
+ 'Types_Helper_Condition_Layouts_Active',
149
+ 'Types_Helper_Condition_Layouts_Archive_Missing',
150
+ 'Types_Helper_Condition_Archive_Exists'
151
+ ),
152
+
153
+ 'description' => array(
154
+ array(
155
+ 'type' => 'paragraph',
156
+ 'content' => __( 'Your theme displays the %POST-LABEL-SINGULAR% archive using the file: %POST-ARCHIVE-FILE%', 'wpcf' )
157
+ ),
158
+ array(
159
+ 'type' => 'link',
160
+ 'external' => true,
161
+ 'label' => __( 'Visit the %POST-LABEL-PLURAL% archive', 'wpcf' ),
162
+ 'target' => '%POST-ARCHIVE-PERMALINK%'
163
+ ),
164
+
165
+ array(
166
+ 'type' => 'link',
167
+ 'class' => 'button-primary types-button',
168
+ 'label' => __( 'Create archive', 'wpcf' ),
169
+ 'target' => '%POST-CREATE-LAYOUT-ARCHIVE%',
170
+ )
171
+ ),
172
+ ),
173
+
174
+ /* Layouts, Archive missing */
175
+ 'layouts-archive-missing' => array(
176
+ 'type' => 'archive',
177
+
178
+ 'priority' => 'important',
179
+
180
+ 'conditions'=> array(
181
+ 'Types_Helper_Condition_Layouts_Active',
182
+ 'Types_Helper_Condition_Layouts_Archive_Missing'
183
+ ),
184
+
185
+ 'description' => array(
186
+ array(
187
+ 'type' => 'paragraph',
188
+ 'content' => __( 'There is no layout for the %POST-LABEL-PLURAL% archive.', 'wpcf' )
189
+ ),
190
+
191
+ array(
192
+ 'type' => 'link',
193
+ 'external' => true,
194
+ 'label' => __( 'Visit the %POST-LABEL-PLURAL% archive', 'wpcf' ),
195
+ 'target' => '%POST-ARCHIVE-PERMALINK%'
196
+ ),
197
+
198
+ array(
199
+ 'type' => 'link',
200
+ 'class' => 'button-primary types-button',
201
+ 'label' => __( 'Create archive', 'wpcf' ),
202
+ 'target' => '%POST-CREATE-LAYOUT-ARCHIVE%',
203
+ )
204
  ),
205
  ),
206
 
219
  'description' => array(
220
  array(
221
  'type' => 'paragraph',
222
+ 'content' => __( 'Your theme is missing the standard WordPress archive for %POST-LABEL-PLURAL%.', 'wpcf' )
223
  ),
224
  array(
225
  'type' => 'link',
226
  'external' => true,
227
+ 'label' => __( 'Visit the %POST-LABEL-PLURAL% archive', 'wpcf' ),
228
  'target' => '%POST-ARCHIVE-PERMALINK%'
229
  ),
230
  array(
231
  'type' => 'dialog',
232
  'class' => 'button-primary types-button',
233
+ 'label' => __( 'Resolve', 'wpcf' ),
234
  'dialog' => array(
235
  'id' => 'resolve-no-archive',
236
  'description' => array(
237
  array(
238
  'type' => 'paragraph',
239
  'content' => __( 'Toolset plugins let you design archive pages without writing PHP. Your archives will include all
240
+ the fields that you need and your design.', 'wpcf' )
241
  ),
242
  array(
243
  'type' => 'link',
244
  'class' => 'button-primary types-button',
245
  'external' => true,
246
+ 'label' => __( 'Learn about creating archives with Toolset', 'wpcf' ),
247
  'target' => Types_Helper_Url::get_url( 'creating-archives-with-toolset', 'popup' ),
248
  ),
249
  )
267
  'description' => array(
268
  array(
269
  'type' => 'paragraph',
270
+ 'content' => __( 'The %POST-LABEL-PLURAL% archive of your theme is missing custom fields.', 'wpcf' )
271
  ),
272
  array(
273
  'type' => 'link',
274
  'external' => true,
275
+ 'label' => __( 'Visit the %POST-LABEL-PLURAL% archive', 'wpcf' ),
276
  'target' => '%POST-ARCHIVE-PERMALINK%'
277
  ),
278
  array(
279
  'type' => 'dialog',
280
  'class' => 'button-primary types-button',
281
+ 'label' => __( 'Resolve', 'wpcf' ),
282
  'dialog' => array(
283
  'id' => 'resolve-no-custom-fields',
284
  'description' => array(
285
  array(
286
  'type' => 'paragraph',
287
+ 'content' => __( 'Toolset plugins let you design archives with custom fields, without writing PHP.', 'wpcf' )
288
  ),
289
  array(
290
  'type' => 'link',
291
  'class' => 'button-primary types-button',
292
  'external' => true,
293
+ 'label' => __( 'Learn about creating archives with Toolset', 'wpcf' ),
294
  'target' => Types_Helper_Url::get_url( 'creating-archives-with-toolset', 'popup' ),
295
  )
296
  )
312
  'description' => array(
313
  array(
314
  'type' => 'paragraph',
315
+ 'content' => __( 'Your theme displays the %POST-LABEL-SINGULAR% archive using the file: %POST-ARCHIVE-FILE%', 'wpcf' )
316
  ),
317
  array(
318
  'type' => 'link',
319
  'external' => true,
320
+ 'label' => __( 'Visit the %POST-LABEL-PLURAL% archive', 'wpcf' ),
321
  'target' => '%POST-ARCHIVE-PERMALINK%'
322
  ),
323
  ),
324
  ),
325
 
326
+ /* Views, has template with missing fields. */
327
+ 'views-archive-fields-missing' => array(
328
  'type' => 'archive',
329
 
330
  'priority' => 'important',
331
 
332
  'conditions'=> array(
333
  'Types_Helper_Condition_Layouts_Missing',
334
+ 'Types_Helper_Condition_Views_Archive_Missing',
335
+ 'Types_Helper_Condition_Archive_No_Fields',
336
  ),
337
 
338
  'description' => array(
339
  array(
340
  'type' => 'paragraph',
341
+ 'content' => __( 'The %POST-LABEL-PLURAL% archive of your theme %POST-ARCHIVE-FILE% is missing custom fields.', 'wpcf' )
342
  ),
343
  array(
344
  'type' => 'link',
345
  'external' => true,
346
+ 'label' => __( 'Visit the %POST-LABEL-PLURAL% archive', 'wpcf' ),
347
  'target' => '%POST-ARCHIVE-PERMALINK%'
348
  ),
349
  array(
350
  'type' => 'link',
351
  'class' => 'button-primary types-button',
352
  'target' => '%POST-CREATE-VIEWS-ARCHIVE%',
353
+ 'label' => __( 'Create archive', 'wpcf' )
354
  )
 
355
  ),
 
356
  ),
357
 
358
+ /* Views, archive.php exists, but views missing */
359
+ 'views-php-archive-exists-views-archive-missing' => array(
360
  'type' => 'archive',
361
 
362
  'conditions'=> array(
363
  'Types_Helper_Condition_Layouts_Missing',
364
+ 'Types_Helper_Condition_Views_Archive_Missing',
365
+ 'Types_Helper_Condition_Archive_Exists'
366
  ),
367
 
368
  'description' => array(
369
  array(
370
  'type' => 'paragraph',
371
+ 'content' => __( 'Your theme displays the %POST-LABEL-SINGULAR% archive using the file: %POST-ARCHIVE-FILE%', 'wpcf' )
372
  ),
 
373
  array(
374
  'type' => 'link',
375
  'external' => true,
376
+ 'label' => __( 'Visit the %POST-LABEL-PLURAL% archive', 'wpcf' ),
377
  'target' => '%POST-ARCHIVE-PERMALINK%'
378
  ),
 
379
  array(
380
  'type' => 'link',
381
+ 'class' => 'button-primary types-button',
382
+ 'target' => '%POST-CREATE-VIEWS-ARCHIVE%',
383
+ 'label' => __( 'Create archive', 'wpcf' )
384
  )
385
  ),
386
 
387
  ),
388
 
389
+ /* Views, template missing */
390
+ 'views-archive-missing' => array(
391
  'type' => 'archive',
392
 
393
  'priority' => 'important',
394
 
395
  'conditions'=> array(
396
+ 'Types_Helper_Condition_Layouts_Missing',
397
+ 'Types_Helper_Condition_Views_Archive_Missing'
398
  ),
399
 
400
  'description' => array(
401
  array(
402
  'type' => 'paragraph',
403
+ 'content' => __( 'There is no WordPress Archive for %POST-LABEL-PLURAL%.', 'wpcf' )
404
  ),
 
405
  array(
406
  'type' => 'link',
407
  'external' => true,
408
+ 'label' => __( 'Visit the %POST-LABEL-PLURAL% archive', 'wpcf' ),
409
  'target' => '%POST-ARCHIVE-PERMALINK%'
410
  ),
 
411
  array(
412
  'type' => 'link',
413
  'class' => 'button-primary types-button',
414
+ 'target' => '%POST-CREATE-VIEWS-ARCHIVE%',
415
+ 'label' => __( 'Create archive', 'wpcf' )
416
  )
417
+
418
  ),
419
  ),
420
 
421
+ /* Views, archive */
422
+ 'views-archive' => array(
423
  'type' => 'archive',
424
 
425
  'conditions'=> array(
426
+ 'Types_Helper_Condition_Layouts_Missing',
427
+ 'Types_Helper_Condition_Views_Archive_Exists'
428
  ),
429
 
430
  'description' => array(
431
  array(
432
  'type' => 'paragraph',
433
+ 'content' => __( 'The WordPress Archive for %POST-LABEL-PLURAL% is "%POST-VIEWS-ARCHIVE%"', 'wpcf' )
434
  ),
435
+
436
  array(
437
  'type' => 'link',
438
  'external' => true,
439
+ 'label' => __( 'Visit the %POST-LABEL-PLURAL% archive', 'wpcf' ),
440
  'target' => '%POST-ARCHIVE-PERMALINK%'
441
  ),
442
+
443
  array(
444
  'type' => 'link',
445
  'class' => 'button',
446
+ 'label' => __( 'Edit WordPress Archive', 'wpcf' ),
447
+ 'target' => '%POST-EDIT-VIEWS-ARCHIVE%',
448
  )
449
  ),
450
+ ),
451
  );
application/data/information/table/forms.php CHANGED
@@ -12,26 +12,26 @@ return array(
12
  array(
13
  'type' => 'dialog',
14
  'class' => 'button',
15
- 'label' => __( 'Create Form', 'types' ),
16
  'dialog' => array(
17
  'id' => 'create-form',
18
  'description' => array(
19
  array(
20
  'type' => 'paragraph',
21
  'content' => __( 'To create a form for front-end content submission and editing, you need to have CRED plugin installed.
22
- CRED is part of the complete Toolset package for adding and displaying custom content.', 'types' )
23
  ),
24
  array(
25
  'type' => 'link',
26
  'external' => true,
27
- 'label' => __( 'Learn how CRED forms work', 'types' ),
28
  'target' => Types_Helper_Url::get_url( 'how-cred-work', 'popup' )
29
  ),
30
  /*
31
  array(
32
  'type' => 'link',
33
  'external' => true,
34
- 'label' => __( 'Free Toolset Trial', 'types' ),
35
  'target' => Types_Helper_Url::get_url( 'free-trial', 'popup' )
36
  ),
37
  */
@@ -55,7 +55,7 @@ return array(
55
  'type' => 'link',
56
  'class' => 'button',
57
  'target' => '%POST-CREATE-FORM%',
58
- 'label' => __( 'Create form', 'types' )
59
  )
60
  )
61
  ),
@@ -73,13 +73,13 @@ return array(
73
  'description' => array(
74
  array(
75
  'type' => 'paragraph',
76
- 'content' => '%POST-FORMS-LIST%', 'types'
77
  ),
78
  array(
79
  'type' => 'link',
80
  'class' => 'button',
81
  'target' => '%POST-CREATE-FORM%',
82
- 'label' => __( 'Create form', 'types' )
83
  )
84
  )
85
  ),
@@ -97,14 +97,14 @@ return array(
97
  array(
98
  'type' => 'paragraph',
99
  'content' => __(
100
- 'You can create forms for front-end submission and editing of %POST-LABEL-PLURAL%.', 'types'
101
  )
102
  ),
103
  array(
104
  'type' => 'link',
105
  'external' => true,
106
  'target' => Types_Helper_Url::get_url( 'adding-forms-to-layouts', 'table' ),
107
- 'label' => __( 'Learn how', 'types' )
108
  ),
109
  )
110
  ),
@@ -121,13 +121,13 @@ return array(
121
  'description' => array(
122
  array(
123
  'type' => 'paragraph',
124
- 'content' => '%POST-FORMS-LIST%', 'types'
125
  ),
126
  array(
127
  'type' => 'link',
128
  'external' => true,
129
  'target' => Types_Helper_Url::get_url( 'adding-forms-to-layouts', 'table' ),
130
- 'label' => __( 'How to add forms to layouts', 'types' )
131
  ),
132
  )
133
  ),
12
  array(
13
  'type' => 'dialog',
14
  'class' => 'button',
15
+ 'label' => __( 'Create Form', 'wpcf' ),
16
  'dialog' => array(
17
  'id' => 'create-form',
18
  'description' => array(
19
  array(
20
  'type' => 'paragraph',
21
  'content' => __( 'To create a form for front-end content submission and editing, you need to have CRED plugin installed.
22
+ CRED is part of the complete Toolset package for adding and displaying custom content.', 'wpcf' )
23
  ),
24
  array(
25
  'type' => 'link',
26
  'external' => true,
27
+ 'label' => __( 'Learn how CRED forms work', 'wpcf' ),
28
  'target' => Types_Helper_Url::get_url( 'how-cred-work', 'popup' )
29
  ),
30
  /*
31
  array(
32
  'type' => 'link',
33
  'external' => true,
34
+ 'label' => __( 'Free Toolset Trial', 'wpcf' ),
35
  'target' => Types_Helper_Url::get_url( 'free-trial', 'popup' )
36
  ),
37
  */
55
  'type' => 'link',
56
  'class' => 'button',
57
  'target' => '%POST-CREATE-FORM%',
58
+ 'label' => __( 'Create form', 'wpcf' )
59
  )
60
  )
61
  ),
73
  'description' => array(
74
  array(
75
  'type' => 'paragraph',
76
+ 'content' => '%POST-FORMS-LIST%'
77
  ),
78
  array(
79
  'type' => 'link',
80
  'class' => 'button',
81
  'target' => '%POST-CREATE-FORM%',
82
+ 'label' => __( 'Create form', 'wpcf' )
83
  )
84
  )
85
  ),
97
  array(
98
  'type' => 'paragraph',
99
  'content' => __(
100
+ 'You can create forms for front-end submission and editing of %POST-LABEL-PLURAL%.', 'wpcf'
101
  )
102
  ),
103
  array(
104
  'type' => 'link',
105
  'external' => true,
106
  'target' => Types_Helper_Url::get_url( 'adding-forms-to-layouts', 'table' ),
107
+ 'label' => __( 'Learn how', 'wpcf' )
108
  ),
109
  )
110
  ),
121
  'description' => array(
122
  array(
123
  'type' => 'paragraph',
124
+ 'content' => '%POST-FORMS-LIST%'
125
  ),
126
  array(
127
  'type' => 'link',
128
  'external' => true,
129
  'target' => Types_Helper_Url::get_url( 'adding-forms-to-layouts', 'table' ),
130
+ 'label' => __( 'How to add forms to layouts', 'wpcf' )
131
  ),
132
  )
133
  ),
application/data/information/table/question-marks.php CHANGED
@@ -2,16 +2,16 @@
2
  $question_marks = array(
3
  'template' => array(
4
  'id' => 'template',
5
- 'title' => __( 'Template', 'types' ),
6
  'description' => array(
7
  array(
8
  'type' => 'paragraph',
9
- 'content' => __( 'A template displays single-item pages with your design and fields.', 'types' )
10
  ),
11
  array(
12
  'type' => 'link',
13
  'external' => true,
14
- 'label' => __( 'Learn more', 'types' ),
15
  'target' => Types_Helper_Url::get_url( 'learn-how-template', 'tooltip' )
16
  ),
17
  )
@@ -19,16 +19,16 @@ $question_marks = array(
19
 
20
  'archive' => array(
21
  'id' => 'archive',
22
- 'title' => __( 'Archive', 'types' ),
23
  'description' => array(
24
  array(
25
  'type' => 'paragraph',
26
- 'content' => __( 'An archive is the standard list that WordPress produces for content.', 'types' )
27
  ),
28
  array(
29
  'type' => 'link',
30
  'external' => true,
31
- 'label' => __( 'Learn more', 'types' ),
32
  'target' => Types_Helper_Url::get_url( 'learn-how-archive', 'tooltip' )
33
  ),
34
  )
@@ -36,16 +36,16 @@ $question_marks = array(
36
 
37
  'views' => array(
38
  'id' => 'views',
39
- 'title' => __( 'Views', 'types' ),
40
  'description' => array(
41
  array(
42
  'type' => 'paragraph',
43
- 'content' => __( 'Views are custom lists of content, which you can display anywhere in the site.', 'types' )
44
  ),
45
  array(
46
  'type' => 'link',
47
  'external' => true,
48
- 'label' => __( 'Learn more', 'types' ),
49
  'target' => Types_Helper_Url::get_url( 'learn-how-views', 'tooltip' )
50
  ),
51
  )
@@ -53,16 +53,16 @@ $question_marks = array(
53
 
54
  'forms' => array(
55
  'id' => 'forms',
56
- 'title' => __( 'Forms', 'types' ),
57
  'description' => array(
58
  array(
59
  'type' => 'paragraph',
60
- 'content' => __( 'Forms allow to create and edit content from the site’s front-end.', 'types' )
61
  ),
62
  array(
63
  'type' => 'link',
64
  'external' => true,
65
- 'label' => __( 'Learn more', 'types' ),
66
  'target' => Types_Helper_Url::get_url( 'learn-how-forms', 'tooltip' )
67
  ),
68
  )
@@ -71,15 +71,15 @@ $question_marks = array(
71
 
72
  // Visual Composer
73
  if( defined( 'WPB_VC_VERSION' ) ) {
74
- $question_marks['template']['description'][1]['label'] = __( 'Creating templates with Visual Composer', 'types' );
75
  }
76
  // Beaver Builder
77
  else if( class_exists( 'FLBuilderLoader' ) ) {
78
- $question_marks['template']['description'][1]['label'] = __( 'Creating templates with Beaver Builder', 'types' );
79
  }
80
  // Layouts
81
  else if( defined( 'WPDDL_DEVELOPMENT' ) || defined( 'WPDDL_PRODUCTION' ) ) {
82
- $question_marks['template']['description'][1]['label'] = __( 'Creating templates with Layouts', 'types' );
83
  }
84
 
85
  return $question_marks;
2
  $question_marks = array(
3
  'template' => array(
4
  'id' => 'template',
5
+ 'title' => __( 'Template', 'wpcf' ),
6
  'description' => array(
7
  array(
8
  'type' => 'paragraph',
9
+ 'content' => __( 'A template displays single-item pages with your design and fields.', 'wpcf' )
10
  ),
11
  array(
12
  'type' => 'link',
13
  'external' => true,
14
+ 'label' => __( 'Learn more', 'wpcf' ),
15
  'target' => Types_Helper_Url::get_url( 'learn-how-template', 'tooltip' )
16
  ),
17
  )
19
 
20
  'archive' => array(
21
  'id' => 'archive',
22
+ 'title' => __( 'Archive', 'wpcf' ),
23
  'description' => array(
24
  array(
25
  'type' => 'paragraph',
26
+ 'content' => __( 'An archive is the standard list that WordPress produces for content.', 'wpcf' )
27
  ),
28
  array(
29
  'type' => 'link',
30
  'external' => true,
31
+ 'label' => __( 'Learn more', 'wpcf' ),
32
  'target' => Types_Helper_Url::get_url( 'learn-how-archive', 'tooltip' )
33
  ),
34
  )
36
 
37
  'views' => array(
38
  'id' => 'views',
39
+ 'title' => __( 'Views', 'wpcf' ),
40
  'description' => array(
41
  array(
42
  'type' => 'paragraph',
43
+ 'content' => __( 'Views are custom lists of content, which you can display anywhere in the site.', 'wpcf' )
44
  ),
45
  array(
46
  'type' => 'link',
47
  'external' => true,
48
+ 'label' => __( 'Learn more', 'wpcf' ),
49
  'target' => Types_Helper_Url::get_url( 'learn-how-views', 'tooltip' )
50
  ),
51
  )
53
 
54
  'forms' => array(
55
  'id' => 'forms',
56
+ 'title' => __( 'Forms', 'wpcf' ),
57
  'description' => array(
58
  array(
59
  'type' => 'paragraph',
60
+ 'content' => __( 'Forms allow to create and edit content from the site’s front-end.', 'wpcf' )
61
  ),
62
  array(
63
  'type' => 'link',
64
  'external' => true,
65
+ 'label' => __( 'Learn more', 'wpcf' ),
66
  'target' => Types_Helper_Url::get_url( 'learn-how-forms', 'tooltip' )
67
  ),
68
  )
71
 
72
  // Visual Composer
73
  if( defined( 'WPB_VC_VERSION' ) ) {
74
+ $question_marks['template']['description'][1]['label'] = __( 'Creating templates with Visual Composer', 'wpcf' );
75
  }
76
  // Beaver Builder
77
  else if( class_exists( 'FLBuilderLoader' ) ) {
78
+ $question_marks['template']['description'][1]['label'] = __( 'Creating templates with Beaver Builder', 'wpcf' );
79
  }
80
  // Layouts
81
  else if( defined( 'WPDDL_DEVELOPMENT' ) || defined( 'WPDDL_PRODUCTION' ) ) {
82
+ $question_marks['template']['description'][1]['label'] = __( 'Creating templates with Layouts', 'wpcf' );
83
  }
84
 
85
  return $question_marks;
application/data/information/table/template.php CHANGED
@@ -1,5 +1,184 @@
1
  <?php
2
  return array(
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3
  /* No Views, No Layouts, Single Missing */
4
  'single-missing' => array(
5
  'type' => 'template',
@@ -15,31 +194,31 @@ return array(
15
  'description' => array(
16
  array(
17
  'type' => 'paragraph',
18
- 'content' => __( 'Your theme doesn’t have a template to display %POST-LABEL-PLURAL%.', 'types' )
19
  ),
20
  array(
21
  'type' => 'link',
22
  'external' => true,
23
- 'label' => __( 'Visit example %POST-LABEL-SINGULAR%', 'types' ),
24
  'target' => '%POST-PERMALINK%'
25
  ),
26
  array(
27
  'type' => 'dialog',
28
  'class' => 'button-primary types-button',
29
- 'label' => __( 'Resolve', 'types' ),
30
  'dialog' => array(
31
  'id' => 'resolve-single-no-template',
32
  'description' => array(
33
  array(
34
  'type' => 'paragraph',
35
  'content' => __( 'Toolset plugins let you design templates for single items (%POST-LABEL-SINGULAR% pages) without
36
- writing PHP. Your templates will include all the fields that you need and your design.', 'types' )
37
  ),
38
  array(
39
  'type' => 'link',
40
  'class' => 'button-primary types-button',
41
  'external' => true,
42
- 'label' => __( 'Learn about creating templates with Toolset', 'types' ),
43
  'target' => Types_Helper_Url::get_url( 'creating-templates-with-toolset', 'popup' ),
44
  ),
45
  )
@@ -63,34 +242,34 @@ return array(
63
  'description' => array(
64
  array(
65
  'type' => 'paragraph',
66
- 'content' => __( 'Your theme’s template file for displaying %POST-LABEL-SINGULAR% items is missing custom fields.', 'types' )
67
  ),
68
  array(
69
  'type' => 'link',
70
  'external' => true,
71
  'label' => array(
72
- 'default' => __( 'Visit example %POST-LABEL-SINGULAR%', 'types' ),
73
- 'post-edit' => __( 'Visit this %POST-LABEL-SINGULAR%', 'types' ),
74
  ),
75
  'target' => '%POST-PERMALINK%'
76
  ),
77
  array(
78
  'type' => 'dialog',
79
  'class' => 'button-primary types-button',
80
- 'label' => __( 'Resolve', 'types' ),
81
  'dialog' => array(
82
  'id' => 'resolve-single-no-fields',
83
  'description' => array(
84
  array(
85
  'type' => 'paragraph',
86
  'content' => __( 'Toolset plugins let you design templates for single items (%POST-LABEL-SINGULAR% pages),
87
- with all the fields that you need to display.', 'types' )
88
  ),
89
  array(
90
  'type' => 'link',
91
  'class' => 'button-primary types-button',
92
  'external' => true,
93
- 'label' => __( 'Learn about creating templates with Toolset', 'types' ),
94
  'target' => Types_Helper_Url::get_url( 'creating-templates-with-toolset', 'popup' ),
95
  ),
96
  )
@@ -112,139 +291,142 @@ return array(
112
  'description' => array(
113
  array(
114
  'type' => 'paragraph',
115
- 'content' => __( 'Your theme displays single %POST-LABEL-SINGULAR% pages using the template file: %POST-TEMPLATE-FILE%', 'types' )
116
  ),
117
  array(
118
  'type' => 'link',
119
  'external' => true,
120
- 'label' => __( 'Visit example %POST-LABEL-SINGULAR%', 'types' ),
121
  'target' => '%POST-PERMALINK%'
122
  ),
123
  ),
124
  ),
125
 
126
- /* Views, template missing */
127
- 'views-template-missing' => array(
128
  'type' => 'template',
129
 
130
  'priority' => 'important',
131
 
132
  'conditions'=> array(
133
  'Types_Helper_Condition_Layouts_Missing',
134
- 'Types_Helper_Condition_Views_Template_Missing'
 
135
  ),
136
 
137
  'description' => array(
138
  array(
139
  'type' => 'paragraph',
140
- 'content' => __( 'There is no Content Template for %POST-LABEL-SINGULAR% items.', 'types' )
141
  ),
142
  array(
143
  'type' => 'link',
144
  'external' => true,
145
- 'label' => __( 'Visit example %POST-LABEL-SINGULAR%', 'types' ),
146
  'target' => '%POST-PERMALINK%'
147
  ),
148
  array(
149
  'type' => 'link',
150
  'class' => 'button-primary types-button',
151
  'target' => '%POST-CREATE-CONTENT-TEMPLATE%',
152
- 'label' => __( 'Create Content Template', 'types' )
153
  )
154
  ),
155
-
156
  ),
157
 
158
- /* Views, template */
159
- 'views-template' => array(
160
  'type' => 'template',
161
 
162
  'conditions'=> array(
163
  'Types_Helper_Condition_Layouts_Missing',
164
- 'Types_Helper_Condition_Views_Template_Exists'
 
165
  ),
166
 
167
  'description' => array(
168
  array(
169
  'type' => 'paragraph',
170
- 'content' => __( 'The Content Template for %POST-LABEL-PLURAL% is "%POST-CONTENT-TEMPLATE-NAME%"', 'types' )
171
  ),
172
  array(
173
  'type' => 'link',
174
  'external' => true,
175
- 'label' => array(
176
- 'default' => __( 'Visit example %POST-LABEL-SINGULAR%', 'types' ),
177
- 'post-edit' => __( 'Visit this %POST-LABEL-SINGULAR%', 'types' ),
178
- ),
179
  'target' => '%POST-PERMALINK%'
180
  ),
181
  array(
182
- 'type' => 'link',
183
- 'class' => 'button',
184
- 'label' => __( 'Edit Content Template', 'types' ),
185
- 'target' => '%POST-EDIT-CONTENT-TEMPLATE%'
186
- ),
187
  ),
188
 
189
  ),
190
 
191
- /* Layouts, template missing*/
192
- 'layouts-template-missing' => array(
193
  'type' => 'template',
194
 
195
  'priority' => 'important',
196
 
197
  'conditions'=> array(
198
- 'Types_Helper_Condition_Layouts_Active',
199
- 'Types_Helper_Condition_Layouts_Template_Missing'
200
  ),
201
 
202
  'description' => array(
203
  array(
204
  'type' => 'paragraph',
205
- 'content' => __( 'There is no template layout for %POST-LABEL-SINGULAR% items.', 'types' )
206
  ),
207
  array(
208
  'type' => 'link',
209
  'external' => true,
210
- 'label' => __( 'Visit example %POST-LABEL-SINGULAR%', 'types' ),
211
  'target' => '%POST-PERMALINK%'
212
  ),
213
  array(
214
  'type' => 'link',
215
  'class' => 'button-primary types-button',
216
- 'label' => __( 'Create template', 'types' ),
217
- 'target' => '%POST-CREATE-LAYOUT-TEMPLATE%',
218
  )
219
  ),
 
220
  ),
221
 
222
- /* Layouts, template */
223
- 'layouts-template' => array(
224
  'type' => 'template',
225
 
226
  'conditions'=> array(
227
- 'Types_Helper_Condition_Layouts_Active',
228
- 'Types_Helper_Condition_Layouts_Template_Exists'
229
  ),
230
 
231
  'description' => array(
232
  array(
233
  'type' => 'paragraph',
234
- 'content' => __( 'The template layout for %POST-LABEL-SINGULAR% items is "%POST-LAYOUT-TEMPLATE%".', 'types' )
235
  ),
236
  array(
237
  'type' => 'link',
238
  'external' => true,
239
- 'label' => __( 'Visit example %POST-LABEL-SINGULAR%', 'types' ),
 
 
 
240
  'target' => '%POST-PERMALINK%'
241
  ),
242
  array(
243
  'type' => 'link',
244
  'class' => 'button',
245
- 'label' => __( 'Edit template', 'types' ),
246
- 'target' => '%POST-EDIT-LAYOUT-TEMPLATE%'
247
  ),
248
  ),
 
249
  ),
250
  );
1
  <?php
2
  return array(
3
+ /* Layouts, integrated, template missing*/
4
+ 'layouts-integrated-template-missing' => array(
5
+ 'type' => 'template',
6
+
7
+ 'priority' => 'important',
8
+
9
+ 'conditions'=> array(
10
+ 'Types_Helper_Condition_Layouts_Active',
11
+ 'Types_Helper_Condition_Layouts_Compatible',
12
+ 'Types_Helper_Condition_Layouts_Template_Missing'
13
+ ),
14
+
15
+ 'description' => array(
16
+ array(
17
+ 'type' => 'paragraph',
18
+ 'content' => __( 'There is no template layout for %POST-LABEL-SINGULAR% items.', 'wpcf' )
19
+ ),
20
+ array(
21
+ 'type' => 'link',
22
+ 'external' => true,
23
+ 'label' => __( 'Visit example %POST-LABEL-SINGULAR%', 'wpcf' ),
24
+ 'target' => '%POST-PERMALINK%'
25
+ ),
26
+ array(
27
+ 'type' => 'link',
28
+ 'class' => 'button-primary types-button',
29
+ 'label' => __( 'Create template', 'wpcf' ),
30
+ 'target' => '%POST-CREATE-LAYOUT-TEMPLATE%',
31
+ )
32
+ ),
33
+ ),
34
+
35
+ /* Layouts, template */
36
+ 'layouts-template' => array(
37
+ 'type' => 'template',
38
+
39
+ 'conditions'=> array(
40
+ 'Types_Helper_Condition_Layouts_Active',
41
+ 'Types_Helper_Condition_Layouts_Template_Exists'
42
+ ),
43
+
44
+ 'description' => array(
45
+ array(
46
+ 'type' => 'paragraph',
47
+ 'content' => __( 'The template layout for %POST-LABEL-SINGULAR% items is "%POST-LAYOUT-TEMPLATE%".', 'wpcf' )
48
+ ),
49
+ array(
50
+ 'type' => 'link',
51
+ 'external' => true,
52
+ 'label' => __( 'Visit example %POST-LABEL-SINGULAR%', 'wpcf' ),
53
+ 'target' => '%POST-PERMALINK%'
54
+ ),
55
+ array(
56
+ 'type' => 'link',
57
+ 'class' => 'button',
58
+ 'label' => __( 'Edit template', 'wpcf' ),
59
+ 'target' => '%POST-EDIT-LAYOUT-TEMPLATE%'
60
+ ),
61
+ ),
62
+ ),
63
+
64
+ /* For posts and pages we always show template file if it exists */
65
+ 'single-exists-for-posts-pages' => array(
66
+ 'type' => 'template',
67
+
68
+ 'conditions'=> array(
69
+ 'Types_Helper_Condition_Type_Post_Or_Page',
70
+ 'Types_Helper_Condition_Single_Exists',
71
+ 'Types_Helper_Condition_Single_Has_Fields'
72
+ ),
73
+
74
+ 'description' => array(
75
+ array(
76
+ 'type' => 'paragraph',
77
+ 'content' => __( 'Your theme displays single %POST-LABEL-SINGULAR% pages using the template file: %POST-TEMPLATE-FILE%', 'wpcf' )
78
+ ),
79
+ array(
80
+ 'type' => 'link',
81
+ 'external' => true,
82
+ 'label' => __( 'Visit example %POST-LABEL-SINGULAR%', 'wpcf' ),
83
+ 'target' => '%POST-PERMALINK%'
84
+ ),
85
+ ),
86
+ ),
87
+
88
+ /* Layouts, has template with missing fields. */
89
+ 'layouts-single-fields-missing' => array(
90
+ 'type' => 'template',
91
+
92
+ 'priority' => 'important',
93
+
94
+ 'conditions'=> array(
95
+ 'Types_Helper_Condition_Layouts_Active',
96
+ 'Types_Helper_Condition_Layouts_Template_Missing',
97
+ 'Types_Helper_Condition_Single_No_Fields',
98
+ ),
99
+
100
+ 'description' => array(
101
+ array(
102
+ 'type' => 'paragraph',
103
+ 'content' => __( 'Your theme’s template file %POST-TEMPLATE-FILE% for displaying %POST-LABEL-SINGULAR% items is missing custom fields.', 'wpcf' )
104
+ ),
105
+ array(
106
+ 'type' => 'link',
107
+ 'external' => true,
108
+ 'label' => __( 'Visit example %POST-LABEL-SINGULAR%', 'wpcf' ),
109
+ 'target' => '%POST-PERMALINK%'
110
+ ),
111
+ array(
112
+ 'type' => 'link',
113
+ 'class' => 'button-primary types-button',
114
+ 'label' => __( 'Create template', 'wpcf' ),
115
+ 'target' => '%POST-CREATE-LAYOUT-TEMPLATE%',
116
+ )
117
+ ),
118
+ ),
119
+
120
+ /* Layouts, single.php exists, but layouts missing */
121
+ 'layouts-php-template-exists-layouts-template-missing' => array(
122
+ 'type' => 'template',
123
+
124
+ 'conditions'=> array(
125
+ 'Types_Helper_Condition_Layouts_Active',
126
+ 'Types_Helper_Condition_Layouts_Template_Missing',
127
+ 'Types_Helper_Condition_Single_Exists'
128
+ ),
129
+
130
+ 'description' => array(
131
+ array(
132
+ 'type' => 'paragraph',
133
+ 'content' => __( 'Your theme displays single %POST-LABEL-SINGULAR% pages using the template file: %POST-TEMPLATE-FILE%', 'wpcf' )
134
+ ),
135
+ array(
136
+ 'type' => 'link',
137
+ 'external' => true,
138
+ 'label' => __( 'Visit example %POST-LABEL-SINGULAR%', 'wpcf' ),
139
+ 'target' => '%POST-PERMALINK%'
140
+ ),
141
+ array(
142
+ 'type' => 'link',
143
+ 'class' => 'button-primary types-button',
144
+ 'label' => __( 'Create template', 'wpcf' ),
145
+ 'target' => '%POST-CREATE-LAYOUT-TEMPLATE%',
146
+ )
147
+ ),
148
+
149
+ ),
150
+
151
+ /* Layouts, template missing*/
152
+ 'layouts-template-missing' => array(
153
+ 'type' => 'template',
154
+
155
+ 'priority' => 'important',
156
+
157
+ 'conditions'=> array(
158
+ 'Types_Helper_Condition_Layouts_Active',
159
+ 'Types_Helper_Condition_Layouts_Template_Missing'
160
+ ),
161
+
162
+ 'description' => array(
163
+ array(
164
+ 'type' => 'paragraph',
165
+ 'content' => __( 'There is no template layout for %POST-LABEL-SINGULAR% items.', 'wpcf' )
166
+ ),
167
+ array(
168
+ 'type' => 'link',
169
+ 'external' => true,
170
+ 'label' => __( 'Visit example %POST-LABEL-SINGULAR%', 'wpcf' ),
171
+ 'target' => '%POST-PERMALINK%'
172
+ ),
173
+ array(
174
+ 'type' => 'link',
175
+ 'class' => 'button-primary types-button',
176
+ 'label' => __( 'Create template', 'wpcf' ),
177
+ 'target' => '%POST-CREATE-LAYOUT-TEMPLATE%',
178
+ )
179
+ ),
180
+ ),
181
+
182
  /* No Views, No Layouts, Single Missing */
183
  'single-missing' => array(
184
  'type' => 'template',
194
  'description' => array(
195
  array(
196
  'type' => 'paragraph',
197
+ 'content' => __( 'Your theme doesn’t have a template to display %POST-LABEL-PLURAL%.', 'wpcf' )
198
  ),
199
  array(
200
  'type' => 'link',
201
  'external' => true,
202
+ 'label' => __( 'Visit example %POST-LABEL-SINGULAR%', 'wpcf' ),
203
  'target' => '%POST-PERMALINK%'
204
  ),
205
  array(
206
  'type' => 'dialog',
207
  'class' => 'button-primary types-button',
208
+ 'label' => __( 'Resolve', 'wpcf' ),
209
  'dialog' => array(
210
  'id' => 'resolve-single-no-template',
211
  'description' => array(
212
  array(
213
  'type' => 'paragraph',
214
  'content' => __( 'Toolset plugins let you design templates for single items (%POST-LABEL-SINGULAR% pages) without
215
+ writing PHP. Your templates will include all the fields that you need and your design.', 'wpcf' )
216
  ),
217
  array(
218
  'type' => 'link',
219
  'class' => 'button-primary types-button',
220
  'external' => true,
221
+ 'label' => __( 'Learn about creating templates with Toolset', 'wpcf' ),
222
  'target' => Types_Helper_Url::get_url( 'creating-templates-with-toolset', 'popup' ),
223
  ),
224
  )
242
  'description' => array(
243
  array(
244
  'type' => 'paragraph',
245
+ 'content' => __( 'Your theme’s template file for displaying %POST-LABEL-SINGULAR% items is missing custom fields.', 'wpcf' )
246
  ),
247
  array(
248
  'type' => 'link',
249
  'external' => true,
250
  'label' => array(
251
+ 'default' => __( 'Visit example %POST-LABEL-SINGULAR%', 'wpcf' ),
252
+ 'post-edit' => __( 'Visit this %POST-LABEL-SINGULAR%', 'wpcf' ),
253
  ),
254
  'target' => '%POST-PERMALINK%'
255
  ),
256
  array(
257
  'type' => 'dialog',
258
  'class' => 'button-primary types-button',
259
+ 'label' => __( 'Resolve', 'wpcf' ),
260
  'dialog' => array(
261
  'id' => 'resolve-single-no-fields',
262
  'description' => array(
263
  array(
264
  'type' => 'paragraph',
265
  'content' => __( 'Toolset plugins let you design templates for single items (%POST-LABEL-SINGULAR% pages),
266
+ with all the fields that you need to display.', 'wpcf' )
267
  ),
268
  array(
269
  'type' => 'link',
270
  'class' => 'button-primary types-button',
271
  'external' => true,
272
+ 'label' => __( 'Learn about creating templates with Toolset', 'wpcf' ),
273
  'target' => Types_Helper_Url::get_url( 'creating-templates-with-toolset', 'popup' ),
274
  ),
275
  )
291
  'description' => array(
292
  array(
293
  'type' => 'paragraph',
294
+ 'content' => __( 'Your theme displays single %POST-LABEL-SINGULAR% pages using the template file: %POST-TEMPLATE-FILE%', 'wpcf' )
295
  ),
296
  array(
297
  'type' => 'link',
298
  'external' => true,
299
+ 'label' => __( 'Visit example %POST-LABEL-SINGULAR%', 'wpcf' ),
300
  'target' => '%POST-PERMALINK%'
301
  ),
302
  ),
303
  ),
304
 
305
+ /* Views, has template with missing fields. */
306
+ 'views-single-fields-missing' => array(
307
  'type' => 'template',
308
 
309
  'priority' => 'important',
310
 
311
  'conditions'=> array(
312
  'Types_Helper_Condition_Layouts_Missing',
313
+ 'Types_Helper_Condition_Views_Template_Missing',
314
+ 'Types_Helper_Condition_Single_No_Fields',
315
  ),
316
 
317
  'description' => array(
318
  array(
319
  'type' => 'paragraph',
320
+ 'content' => __( 'Your theme’s template file %POST-TEMPLATE-FILE% for displaying %POST-LABEL-SINGULAR% items is missing custom fields.', 'wpcf' )
321
  ),
322
  array(
323
  'type' => 'link',
324
  'external' => true,
325
+ 'label' => __( 'Visit example %POST-LABEL-SINGULAR%', 'wpcf' ),
326
  'target' => '%POST-PERMALINK%'
327
  ),
328
  array(
329
  'type' => 'link',
330
  'class' => 'button-primary types-button',
331
  'target' => '%POST-CREATE-CONTENT-TEMPLATE%',
332
+ 'label' => __( 'Create Content Template', 'wpcf' )
333
  )
334
  ),
 
335
  ),
336
 
337
+ /* Views, single.php exists, but views missing */
338
+ 'views-php-template-exists-views-template-missing' => array(
339
  'type' => 'template',
340
 
341
  'conditions'=> array(
342
  'Types_Helper_Condition_Layouts_Missing',
343
+ 'Types_Helper_Condition_Views_Template_Missing',
344
+ 'Types_Helper_Condition_Single_Exists'
345
  ),
346
 
347
  'description' => array(
348
  array(
349
  'type' => 'paragraph',
350
+ 'content' => __( 'Your theme displays single %POST-LABEL-SINGULAR% pages using the template file: %POST-TEMPLATE-FILE%', 'wpcf' )
351
  ),
352
  array(
353
  'type' => 'link',
354
  'external' => true,
355
+ 'label' => __( 'Visit example %POST-LABEL-SINGULAR%', 'wpcf' ),
 
 
 
356
  'target' => '%POST-PERMALINK%'
357
  ),
358
  array(
359
+ 'type' => 'link',
360
+ 'class' => 'button-primary types-button',
361
+ 'target' => '%POST-CREATE-CONTENT-TEMPLATE%',
362
+ 'label' => __( 'Create Content Template', 'wpcf' )
363
+ )
364
  ),
365
 
366
  ),
367
 
368
+ /* Views, template missing */
369
+ 'views-template-missing' => array(
370
  'type' => 'template',
371
 
372
  'priority' => 'important',
373
 
374
  'conditions'=> array(
375
+ 'Types_Helper_Condition_Layouts_Missing',
376
+ 'Types_Helper_Condition_Views_Template_Missing'
377
  ),
378
 
379
  'description' => array(
380
  array(
381
  'type' => 'paragraph',
382
+ 'content' => __( 'There is no Content Template for %POST-LABEL-SINGULAR% items.', 'wpcf' )
383
  ),
384
  array(
385
  'type' => 'link',
386
  'external' => true,
387
+ 'label' => __( 'Visit example %POST-LABEL-SINGULAR%', 'wpcf' ),
388
  'target' => '%POST-PERMALINK%'
389
  ),
390
  array(
391
  'type' => 'link',
392
  'class' => 'button-primary types-button',
393
+ 'target' => '%POST-CREATE-CONTENT-TEMPLATE%',
394
+ 'label' => __( 'Create Content Template', 'wpcf' )
395
  )
396
  ),
397
+
398
  ),
399
 
400
+ /* Views, template */
401
+ 'views-template' => array(
402
  'type' => 'template',
403
 
404
  'conditions'=> array(
405
+ 'Types_Helper_Condition_Layouts_Missing',
406
+ 'Types_Helper_Condition_Views_Template_Exists'
407
  ),
408
 
409
  'description' => array(
410
  array(
411
  'type' => 'paragraph',
412
+ 'content' => __( 'The Content Template for %POST-LABEL-PLURAL% is "%POST-CONTENT-TEMPLATE-NAME%"', 'wpcf' )
413
  ),
414
  array(
415
  'type' => 'link',
416
  'external' => true,
417
+ 'label' => array(
418
+ 'default' => __( 'Visit example %POST-LABEL-SINGULAR%', 'wpcf' ),
419
+ 'post-edit' => __( 'Visit this %POST-LABEL-SINGULAR%', 'wpcf' ),
420
+ ),
421
  'target' => '%POST-PERMALINK%'
422
  ),
423
  array(
424
  'type' => 'link',
425
  'class' => 'button',
426
+ 'label' => __( 'Edit Content Template', 'wpcf' ),
427
+ 'target' => '%POST-EDIT-CONTENT-TEMPLATE%'
428
  ),
429
  ),
430
+
431
  ),
432
  );
application/data/information/table/views.php CHANGED
@@ -12,26 +12,26 @@ return array(
12
  array(
13
  'type' => 'dialog',
14
  'class' => 'button',
15
- 'label' => __( 'Create View', 'types' ),
16
  'dialog' => array(
17
  'id' => 'create-view',
18
  'description' => array(
19
  array(
20
  'type' => 'paragraph',
21
  'content' => __( 'To create a View for this content type, you need to have Views plugin installed. Views is part of the
22
- complete Toolset package for adding and displaying custom content.', 'types' )
23
  ),
24
  array(
25
  'type' => 'link',
26
  'external' => true,
27
- 'label' => __( 'Learn how Views work', 'types' ),
28
  'target' => Types_Helper_Url::get_url( 'how-views-work', 'popup' )
29
  ),
30
  /*
31
  array(
32
  'type' => 'link',
33
  'external' => true,
34
- 'label' => __( 'Free Toolset Trial', 'types' ),
35
  'target' => Types_Helper_Url::get_url( 'free-trial', 'popup' )
36
  )
37
  */
@@ -56,7 +56,7 @@ return array(
56
  'type' => 'link',
57
  'class' => 'button',
58
  'target' => '%POST-CREATE-VIEW%',
59
- 'label' => __( 'Create View', 'types' )
60
  )
61
  )
62
  ),
@@ -73,13 +73,13 @@ return array(
73
  'description' => array(
74
  array(
75
  'type' => 'paragraph',
76
- 'content' => '%POST-VIEWS-LIST%', 'types'
77
  ),
78
  array(
79
  'type' => 'link',
80
  'class' => 'button',
81
  'target' => '%POST-CREATE-VIEW%',
82
- 'label' => __( 'Create View', 'types' )
83
  )
84
  )
85
  ),
@@ -97,14 +97,14 @@ return array(
97
  array(
98
  'type' => 'paragraph',
99
  'content' => __(
100
- 'Edit any layout and add a View cell to it, to display lists of %POST-LABEL-PLURAL%.', 'types'
101
  )
102
  ),
103
  array(
104
  'type' => 'link',
105
  'external' => true,
106
  'target' => Types_Helper_Url::get_url( 'adding-views-to-layouts', 'table' ),
107
- 'label' => __( 'Learn how', 'types' )
108
  ),
109
  )
110
  ),
@@ -121,13 +121,13 @@ return array(
121
  'description' => array(
122
  array(
123
  'type' => 'paragraph',
124
- 'content' => '%POST-VIEWS-LIST%', 'types'
125
  ),
126
  array(
127
  'type' => 'link',
128
  'external' => true,
129
  'target' => Types_Helper_Url::get_url( 'adding-views-to-layouts', 'table' ),
130
- 'label' => __( 'How to add Views to layouts', 'types' )
131
  ),
132
  )
133
  ),
12
  array(
13
  'type' => 'dialog',
14
  'class' => 'button',
15
+ 'label' => __( 'Create View', 'wpcf' ),
16
  'dialog' => array(
17
  'id' => 'create-view',
18
  'description' => array(
19
  array(
20
  'type' => 'paragraph',
21
  'content' => __( 'To create a View for this content type, you need to have Views plugin installed. Views is part of the
22
+ complete Toolset package for adding and displaying custom content.', 'wpcf' )
23
  ),
24
  array(
25
  'type' => 'link',
26
  'external' => true,
27
+ 'label' => __( 'Learn how Views work', 'wpcf' ),
28
  'target' => Types_Helper_Url::get_url( 'how-views-work', 'popup' )
29
  ),
30
  /*
31
  array(
32
  'type' => 'link',
33
  'external' => true,
34
+ 'label' => __( 'Free Toolset Trial', 'wpcf' ),
35
  'target' => Types_Helper_Url::get_url( 'free-trial', 'popup' )
36
  )
37
  */
56
  'type' => 'link',
57
  'class' => 'button',
58
  'target' => '%POST-CREATE-VIEW%',
59
+ 'label' => __( 'Create View', 'wpcf' )
60
  )
61
  )
62
  ),
73
  'description' => array(
74
  array(
75
  'type' => 'paragraph',
76
+ 'content' => '%POST-VIEWS-LIST%'
77
  ),
78
  array(
79
  'type' => 'link',
80
  'class' => 'button',
81
  'target' => '%POST-CREATE-VIEW%',
82
+ 'label' => __( 'Create View', 'wpcf' )
83
  )
84
  )
85
  ),
97
  array(
98
  'type' => 'paragraph',
99
  'content' => __(
100
+ 'Edit any layout and add a View cell to it, to display lists of %POST-LABEL-PLURAL%.', 'wpcf'
101
  )
102
  ),
103
  array(
104
  'type' => 'link',
105
  'external' => true,
106
  'target' => Types_Helper_Url::get_url( 'adding-views-to-layouts', 'table' ),
107
+ 'label' => __( 'Learn how', 'wpcf' )
108
  ),
109
  )
110
  ),
121
  'description' => array(
122
  array(
123
  'type' => 'paragraph',
124
+ 'content' => '%POST-VIEWS-LIST%'
125
  ),
126
  array(
127
  'type' => 'link',
128
  'external' => true,
129
  'target' => Types_Helper_Url::get_url( 'adding-views-to-layouts', 'table' ),
130
+ 'label' => __( 'How to add Views to layouts', 'wpcf' )
131
  ),
132
  )
133
  ),
application/models/field/group/factory.php CHANGED
@@ -115,6 +115,10 @@ abstract class Types_Field_Group_Factory {
115
  * @return null|Types_Field_Group Field group instance or null if it's not cached.
116
  */
117
  private function get_from_cache( $field_group_name ) {
 
 
 
 
118
  return wpcf_getarr( $this->field_groups, $field_group_name, null );
119
  }
120
 
@@ -125,6 +129,10 @@ abstract class Types_Field_Group_Factory {
125
  * @param Types_Field_Group $field_group
126
  */
127
  private function save_to_cache( $field_group ) {
 
 
 
 
128
  $this->field_groups[ $field_group->get_slug() ] = $field_group;
129
  }
130
 
115
  * @return null|Types_Field_Group Field group instance or null if it's not cached.
116
  */
117
  private function get_from_cache( $field_group_name ) {
118
+ if( defined( 'TYPES_DISABLE_CACHE' ) && TYPES_DISABLE_CACHE ) {
119
+ // disable caching
120
+ return null;
121
+ }
122
  return wpcf_getarr( $this->field_groups, $field_group_name, null );
123
  }
124
 
129
  * @param Types_Field_Group $field_group
130
  */
131
  private function save_to_cache( $field_group ) {
132
+ if( defined( 'TYPES_DISABLE_CACHE' ) && TYPES_DISABLE_CACHE ) {
133
+ // disable caching
134
+ return;
135
+ }
136
  $this->field_groups[ $field_group->get_slug() ] = $field_group;
137
  }
138
 
application/models/helper/condition/layouts/template_exists.php CHANGED
@@ -16,7 +16,7 @@ class Types_Helper_Condition_Layouts_Template_Exists extends Types_Helper_Condit
16
 
17
  $type = self::get_type_name();
18
 
19
- if( isset( self::$layout_id[$type] ) && self::$layout_id[$type] !== null && self::$layout_id !== false )
20
  return true;
21
 
22
  global $wpdb;
16
 
17
  $type = self::get_type_name();
18
 
19
+ if( isset( self::$layout_id[$type] ) && self::$layout_id[$type] !== null && self::$layout_id[$type] !== false )
20
  return true;
21
 
22
  global $wpdb;
application/models/helper/condition/layouts/template_missing.php CHANGED
@@ -9,8 +9,12 @@ class Types_Helper_Condition_Layouts_Template_Missing extends Types_Helper_Condi
9
 
10
  public function valid() {
11
  $type = self::get_type_name();
12
- if( isset( parent::$layout_id[$type] ) && parent::$layout_id[$type] !== null && parent::$layout_id !== false )
 
 
13
  return false;
 
 
14
 
15
  return ! parent::valid();
16
  }
9
 
10
  public function valid() {
11
  $type = self::get_type_name();
12
+ if( isset( parent::$layout_id[$type] )
13
+ && parent::$layout_id[$type] !== null
14
+ && parent::$layout_id[$type] !== false ) {
15
  return false;
16
+ }
17
+
18
 
19
  return ! parent::valid();
20
  }
application/models/helper/condition/type/no_post_or_page.php ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Types_Helper_Condition_Type_No_Post_Or_Page extends Types_Helper_Condition_Type_Post_Or_Page {
4
+
5
+ public function valid() {
6
+ return ! parent::valid();
7
+ }
8
+ }
application/models/helper/condition/type/post_or_page.php ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Types_Helper_Condition_Type_Post_Or_Page extends Types_Helper_Condition {
4
+
5
+ public function valid() {
6
+ if( self::get_type_name() == 'post' || self::get_type_name() == 'page' ) {
7
+ return true;
8
+ }
9
+
10
+ return false;
11
+ }
12
+ }
application/models/helper/condition/views/views_exist.php CHANGED
@@ -25,8 +25,13 @@ class Types_Helper_Condition_Views_Views_Exist extends Types_Helper_Condition_Vi
25
  $views_settings = $wpdb->get_results( "SELECT meta_value, post_id FROM $wpdb->postmeta WHERE meta_key = '_wpv_settings'" );
26
 
27
  foreach( $views_settings as $setting ) {
28
-
29
  $setting->meta_value = unserialize( $setting->meta_value );
 
 
 
 
 
 
30
  if( isset( $setting->meta_value['post_type'] )
31
  && in_array( $cpt->name, $setting->meta_value['post_type'] ) ) {
32
 
25
  $views_settings = $wpdb->get_results( "SELECT meta_value, post_id FROM $wpdb->postmeta WHERE meta_key = '_wpv_settings'" );
26
 
27
  foreach( $views_settings as $setting ) {
 
28
  $setting->meta_value = unserialize( $setting->meta_value );
29
+ if( ! isset( $setting->meta_value['view-query-mode'] )
30
+ || $setting->meta_value['view-query-mode'] != 'normal' ) {
31
+ // no "View"
32
+ continue;
33
+ }
34
+
35
  if( isset( $setting->meta_value['post_type'] )
36
  && in_array( $cpt->name, $setting->meta_value['post_type'] ) ) {
37
 
application/models/helper/create/content_template.php CHANGED
@@ -34,7 +34,7 @@ class Types_Helper_Create_Content_Template {
34
  // create name if not given
35
  if( ! $name ) {
36
  $type_object = get_post_type_object( $type );
37
- $name = sprintf( __( 'Template for %s', 'types' ), $type_object->labels->name );
38
  }
39
 
40
  $name = $this->validate_name( $name );
34
  // create name if not given
35
  if( ! $name ) {
36
  $type_object = get_post_type_object( $type );
37
+ $name = sprintf( __( 'Template for %s', 'wpcf' ), $type_object->labels->name );
38
  }
39
 
40
  $name = $this->validate_name( $name );
application/models/helper/create/form.php CHANGED
@@ -37,7 +37,7 @@ class Types_Helper_Create_Form {
37
  // create name if not given
38
  if( ! $name ) {
39
  $type_object = get_post_type_object( $type );
40
- $name = sprintf( __( 'Form for %s', 'types' ), $type_object->labels->name );
41
  }
42
 
43
  $name = $this->validate_name( $name );
37
  // create name if not given
38
  if( ! $name ) {
39
  $type_object = get_post_type_object( $type );
40
+ $name = sprintf( __( 'Form for %s', 'wpcf' ), $type_object->labels->name );
41
  }
42
 
43
  $name = $this->validate_name( $name );
application/models/helper/create/layout.php CHANGED
@@ -16,7 +16,7 @@ class Types_Helper_Create_Layout {
16
  // set name if no available
17
  if( ! $name ) {
18
  $type_object = get_post_type_object( $type );
19
- $name = sprintf( __( 'Template for %s', 'types' ), $type_object->labels->name );
20
  }
21
 
22
  $name = $this->validate_name( $name );
16
  // set name if no available
17
  if( ! $name ) {
18
  $type_object = get_post_type_object( $type );
19
+ $name = sprintf( __( 'Template for %s', 'wpcf' ), $type_object->labels->name );
20
  }
21
 
22
  $name = $this->validate_name( $name );
application/models/helper/create/view.php CHANGED
@@ -20,7 +20,7 @@ class Types_Helper_Create_View {
20
  // create name if not set
21
  if( ! $name ) {
22
  $type_object = get_post_type_object( $type );
23
- $name = sprintf( __( 'View for %s', 'types' ), $type_object->labels->name );
24
  }
25
 
26
  $name = $this->validate_name( $name );
20
  // create name if not set
21
  if( ! $name ) {
22
  $type_object = get_post_type_object( $type );
23
+ $name = sprintf( __( 'View for %s', 'wpcf' ), $type_object->labels->name );
24
  }
25
 
26
  $name = $this->validate_name( $name );
application/models/helper/create/wordpress_archive.php CHANGED
@@ -22,7 +22,7 @@ class Types_Helper_Create_Wordpress_Archive {
22
 
23
  // for type 'post'
24
  if( $type == 'post' ) {
25
- $name = __( 'Archive for Home/Blog', 'types' );
26
  $option = 'view_home-blog-page';
27
  }
28
 
@@ -33,7 +33,7 @@ class Types_Helper_Create_Wordpress_Archive {
33
  // set name if not given
34
  if( ! $name ) {
35
  $type_object = get_post_type_object( $type );
36
- $name = sprintf( __( 'Archive for %s', 'types' ), $type_object->labels->name );
37
  }
38
 
39
  $name = $this->validate_name( $name );
22
 
23
  // for type 'post'
24
  if( $type == 'post' ) {
25
+ $name = __( 'Archive for Home/Blog', 'wpcf' );
26
  $option = 'view_home-blog-page';
27
  }
28
 
33
  // set name if not given
34
  if( ! $name ) {
35
  $type_object = get_post_type_object( $type );
36
+ $name = sprintf( __( 'Archive for %s', 'wpcf' ), $type_object->labels->name );
37
  }
38
 
39
  $name = $this->validate_name( $name );
application/models/helper/placeholder.php CHANGED
@@ -58,16 +58,22 @@ class Types_Helper_Placeholder {
58
  // Views specifics
59
  if( defined( 'WPV_VERSION' ) ) {
60
  $placeholders = array_merge( $placeholders, array(
61
- //'%POST-CREATE-LAYOUT-TEMPLATE%' => self::get_post_create_layout_template(),
62
- '%POST-CONTENT-TEMPLATE-NAME%' => Types_Helper_Condition_Views_Template_Exists::get_template_name(),
63
- '%POST-VIEWS-ARCHIVE%' => Types_Helper_Condition_Views_Archive_Exists::get_template_name(),
64
- '%POST-EDIT-VIEWS-ARCHIVE%' => self::get_post_edit_views_archive(),
65
- '%POST-EDIT-CONTENT-TEMPLATE%' => self::get_post_edit_views_template(),
66
- '%POST-CREATE-CONTENT-TEMPLATE%' => self::add_referer( $admin_url . 'admin.php?page=types-helper&action=new-content-template&type='.self::$post_type->name.'&toolset_help_video=views_template' ),
67
- '%POST-CREATE-VIEWS-ARCHIVE%' => self::add_referer( $admin_url . 'admin.php?page=types-helper&action=new-wordpress-archive&type='.self::$post_type->name.'&toolset_help_video=views_archives' ),
68
- //'%POST-CREATE-VIEWS-ARCHIVE%' => self::get_post_create_views_archive(),
69
- '%POST-VIEWS-LIST%' => self::get_post_type_views_list(),
70
- '%POST-CREATE-VIEW%' => self::add_referer( $admin_url . 'admin.php?page=types-helper&action=new-view&type='.self::$post_type->name.'&toolset_help_video=views_view' ),
 
 
 
 
 
 
71
  ) );
72
 
73
  }
@@ -219,7 +225,7 @@ class Types_Helper_Placeholder {
219
  return $output;
220
  }
221
 
222
- return __( 'No Views', 'types' );
223
  }
224
 
225
  private static function get_post_type_forms_list() {
@@ -235,6 +241,6 @@ class Types_Helper_Placeholder {
235
  return $output;
236
  }
237
 
238
- return __( 'No Forms', 'types' );
239
  }
240
  }
58
  // Views specifics
59
  if( defined( 'WPV_VERSION' ) ) {
60
  $placeholders = array_merge( $placeholders, array(
61
+ //'%POST-CREATE-LAYOUT-TEMPLATE%' => self::get_post_create_layout_template(),
62
+ '%POST-CONTENT-TEMPLATE-NAME%' => Types_Helper_Condition_Views_Template_Exists::get_template_name(),
63
+ '%POST-VIEWS-ARCHIVE%' => Types_Helper_Condition_Views_Archive_Exists::get_template_name(),
64
+ '%POST-EDIT-VIEWS-ARCHIVE%' => self::get_post_edit_views_archive(),
65
+ '%POST-EDIT-CONTENT-TEMPLATE%' => self::get_post_edit_views_template(),
66
+ '%POST-CREATE-CONTENT-TEMPLATE%' => self::add_referer( $admin_url . 'admin.php?page=types-helper&action=new-content-template&type='.self::$post_type->name.'&toolset_help_video=views_template' ),
67
+ '%POST-CREATE-VIEWS-ARCHIVE%' => self::add_referer( $admin_url . 'admin.php?page=types-helper&action=new-wordpress-archive&type='.self::$post_type->name.'&toolset_help_video=views_archives' ),
68
+ '%POST-CREATE-VIEWS-ARCHIVE-TYPE%' => self::$post_type->name,
69
+ '%POST-CREATE-VIEWS-ARCHIVE-REDIRECT-URL%' => '&' . self::add_referer( 'toolset_help_video=views_archives' ),
70
+ '%POST-CREATE-VIEWS-ARCHIVE-FOR-WHOM-TITLE%' => self::$post_type->label,
71
+ '%POST-CREATE-VIEWS-ARCHIVE-FOR-WHOM-LOOP%' => esc_attr( 'wpv-view-loop-cpt_' . self::$post_type->name ),
72
+ //'%POST-CREATE-VIEWS-ARCHIVE%' => self::get_post_create_views_archive(),
73
+ '%POST-VIEWS-LIST%' => self::get_post_type_views_list(),
74
+ '%POST-CREATE-VIEW%' => self::add_referer( $admin_url . 'admin.php?page=types-helper&action=new-view&type=' . self::$post_type->name . '&toolset_help_video=views_view' ),
75
+ '%POST-CREATE-VIEW-TYPE%' => self::$post_type->name,
76
+ '%POST-CREATE-VIEW-REDIRECT-URL%' => '&' . self::add_referer( 'toolset_help_video=views_view' ),
77
  ) );
78
 
79
  }
225
  return $output;
226
  }
227
 
228
+ return __( 'No Views', 'wpcf' );
229
  }
230
 
231
  private static function get_post_type_forms_list() {
241
  return $output;
242
  }
243
 
244
+ return __( 'No Forms', 'wpcf' );
245
  }
246
  }
application/models/helper/twig.php CHANGED
@@ -24,7 +24,15 @@ class Types_Helper_Twig {
24
  $this->twig->addFunction( '__', new Twig_SimpleFunction( '__', array( $this, 'translate' ) ) );
25
  }
26
 
27
- public function translate( $text, $domain = 'types' ) {
 
 
 
 
 
 
 
 
28
  return __( $text, $domain );
29
  }
30
 
24
  $this->twig->addFunction( '__', new Twig_SimpleFunction( '__', array( $this, 'translate' ) ) );
25
  }
26
 
27
+ /**
28
+ * This allows to use __( 'Text to translate', 'wpcf' ) in twig templates
29
+ *
30
+ * @param $text
31
+ * @param string $domain
32
+ *
33
+ * @return mixed
34
+ */
35
+ public function translate( $text, $domain = 'wpcf' ) {
36
  return __( $text, $domain );
37
  }
38
 
application/models/setting/preset/information_table.php CHANGED
@@ -9,15 +9,15 @@ class Types_Setting_Preset_Information_Table {
9
  $this->setting = new Types_Setting_Boolean( 'types-information-table' );
10
 
11
  $option_edit_post = new Types_Setting_Option( 'show-on-post' );
12
- $option_edit_post->set_description( __( 'Edit Post pages', 'types' ) );
13
  $option_edit_post->set_default( true );
14
 
15
  $option_edit_post_type = new Types_Setting_Option( 'show-on-post-type' );
16
- $option_edit_post_type->set_description( __( 'Edit Post Type pages', 'types' ) );
17
  $option_edit_post_type->set_default( true );
18
 
19
  $option_edit_field_group = new Types_Setting_Option( 'show-on-field-group' );
20
- $option_edit_field_group->set_description( __( 'Edit Field Group pages', 'types' ) );
21
  $option_edit_field_group->set_default( true );
22
 
23
  $this->setting->add_option( $option_edit_post );
9
  $this->setting = new Types_Setting_Boolean( 'types-information-table' );
10
 
11
  $option_edit_post = new Types_Setting_Option( 'show-on-post' );
12
+ $option_edit_post->set_description( __( 'Edit Post pages', 'wpcf' ) );
13
  $option_edit_post->set_default( true );
14
 
15
  $option_edit_post_type = new Types_Setting_Option( 'show-on-post-type' );
16
+ $option_edit_post_type->set_description( __( 'Edit Post Type pages', 'wpcf' ) );
17
  $option_edit_post_type->set_default( true );
18
 
19
  $option_edit_field_group = new Types_Setting_Option( 'show-on-field-group' );
20
+ $option_edit_field_group->set_description( __( 'Edit Field Group pages', 'wpcf' ) );
21
  $option_edit_field_group->set_default( true );
22
 
23
  $this->setting->add_option( $option_edit_post );
application/models/wpml/field/group/string.php CHANGED
@@ -1,9 +1,13 @@
1
  <?php
2
 
 
 
 
3
  abstract class Types_Wpml_Field_Group_String implements Types_Wpml_Interface {
4
 
5
- const CONTEXT = 'plugin Types';
6
- const TRANSLATE_FILTER = 'wpml_translate_single_string';
 
7
 
8
  /**
9
  * @var Types_Field_Group
@@ -12,19 +16,22 @@ abstract class Types_Wpml_Field_Group_String implements Types_Wpml_Interface {
12
 
13
  /**
14
  * String to translate
 
15
  * @var string
16
  */
17
  protected $string_to_translate;
18
 
 
19
  /**
20
  * Types_Wpml_Field_Group_String constructor.
21
  *
22
  * @param Types_Field_Group $group
23
  */
24
- public function __construct( Types_Field_Group $group ) {
25
  $this->group = $group;
26
  }
27
 
 
28
  /**
29
  * The pattern of the string name in icl_strings
30
  * - [name]: group %s name
@@ -54,6 +61,7 @@ abstract class Types_Wpml_Field_Group_String implements Types_Wpml_Interface {
54
  return sprintf( $this->get_db_pattern(), $this->group->get_slug() );
55
  }
56
 
 
57
  /**
58
  * Get the db identifier (uses id of group)
59
  *
@@ -80,17 +88,28 @@ abstract class Types_Wpml_Field_Group_String implements Types_Wpml_Interface {
80
  $this->get_db_identifier()
81
  );
82
 
83
- if( $translated_string && $translated_string != $this->string_to_translate )
 
 
 
 
 
 
 
 
84
  return $translated_string;
 
85
 
86
  // nothing found yet, try the old pattern for group storage
87
  return $this->translate_legacy();
88
  }
89
 
 
 
90
  /**
91
  * Returning the legacy pattern which is using the GROUP ID
92
  *
93
- * @return mixed|void
94
  */
95
  private function translate_legacy() {
96
  $translated_string = $this->get_translation(
@@ -99,8 +118,9 @@ abstract class Types_Wpml_Field_Group_String implements Types_Wpml_Interface {
99
  );
100
 
101
  // no translation found
102
- if( ! $translated_string )
103
  return $this->string_to_translate;
 
104
 
105
  // update pattern of name field in "icl_strings" table
106
  // to use name of group instead of id
@@ -110,6 +130,7 @@ abstract class Types_Wpml_Field_Group_String implements Types_Wpml_Interface {
110
  return $translated_string;
111
  }
112
 
 
113
  /**
114
  * Get translation of string
115
  *
@@ -119,64 +140,93 @@ abstract class Types_Wpml_Field_Group_String implements Types_Wpml_Interface {
119
  * @return string|false
120
  */
121
  private function get_translation( $string, $field_id ) {
 
 
 
122
 
123
- // check if translation exists
124
- $is_registered = apply_filters(
125
- 'wpml_string_id',
126
- null,
127
- array(
128
- 'context' => self::CONTEXT,
129
- 'name' => $field_id
130
- )
131
- );
132
 
133
- if( $is_registered === null )
134
- return false;
 
 
 
 
 
 
 
 
135
 
136
- // string is registered, return translation
137
- return apply_filters(
138
- self::TRANSLATE_FILTER,
139
- $string,
140
- self::CONTEXT,
141
- $field_id
142
- );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
143
  }
144
 
 
145
  /**
146
- * Update the identifier on db table "{prefix}_icl_strings" to use the "name" of a group instead of the "id"
 
 
 
 
147
  */
148
- private function update_db_identifier() {
 
149
  global $wpdb;
150
-
151
- $wpdb->query(
152
  $wpdb->prepare(
153
- "UPDATE {$wpdb->prefix}icl_strings
154
- SET name = %s,
155
- domain_name_context_md5 = md5( CONCAT( context, name, gettext_context ) )
156
- WHERE name = %s",
157
- $this->get_db_identifier(),
158
- $this->get_db_identifier_legacy()
159
  )
160
  );
 
 
161
  }
162
 
 
163
  /**
164
  * Say Hello to WPML
 
 
165
  */
166
  public function register( $slug_update = false ) {
167
  // abort if needed function not exists
168
- if( ! function_exists( 'icl_register_string' ) )
169
  return;
 
170
 
171
  // update string identifier
172
- if( $slug_update ) {
173
  global $wpdb;
174
 
175
  $wpdb->query(
176
  $wpdb->prepare(
177
  "UPDATE {$wpdb->prefix}icl_strings
178
- SET name = %s
179
- WHERE name = %s",
180
  $this->get_db_identifier(),
181
  sprintf( $this->get_db_pattern(), $slug_update )
182
  )
@@ -190,4 +240,6 @@ abstract class Types_Wpml_Field_Group_String implements Types_Wpml_Interface {
190
  $this->get_string_to_translate()
191
  );
192
  }
 
 
193
  }
1
  <?php
2
 
3
+ /**
4
+ * @fixme add description
5
+ */
6
  abstract class Types_Wpml_Field_Group_String implements Types_Wpml_Interface {
7
 
8
+ const CONTEXT = 'plugin Types';
9
+
10
+ const TRANSLATE_FILTER = 'wpml_translate_single_string';
11
 
12
  /**
13
  * @var Types_Field_Group
16
 
17
  /**
18
  * String to translate
19
+ *
20
  * @var string
21
  */
22
  protected $string_to_translate;
23
 
24
+
25
  /**
26
  * Types_Wpml_Field_Group_String constructor.
27
  *
28
  * @param Types_Field_Group $group
29
  */
30
+ public function __construct( $group ) {
31
  $this->group = $group;
32
  }
33
 
34
+
35
  /**
36
  * The pattern of the string name in icl_strings
37
  * - [name]: group %s name
61
  return sprintf( $this->get_db_pattern(), $this->group->get_slug() );
62
  }
63
 
64
+
65
  /**
66
  * Get the db identifier (uses id of group)
67
  *
88
  $this->get_db_identifier()
89
  );
90
 
91
+ $was_translated = (
92
+ $translated_string
93
+ && (
94
+ $translated_string != $this->string_to_translate
95
+ || Types_Interop_Handler_Wpml::get_instance()->is_current_language_default()
96
+ )
97
+ );
98
+
99
+ if ( $was_translated ) {
100
  return $translated_string;
101
+ }
102
 
103
  // nothing found yet, try the old pattern for group storage
104
  return $this->translate_legacy();
105
  }
106
 
107
+
108
+
109
  /**
110
  * Returning the legacy pattern which is using the GROUP ID
111
  *
112
+ * @return mixed
113
  */
114
  private function translate_legacy() {
115
  $translated_string = $this->get_translation(
118
  );
119
 
120
  // no translation found
121
+ if ( ! $translated_string ) {
122
  return $this->string_to_translate;
123
+ }
124
 
125
  // update pattern of name field in "icl_strings" table
126
  // to use name of group instead of id
130
  return $translated_string;
131
  }
132
 
133
+
134
  /**
135
  * Get translation of string
136
  *
140
  * @return string|false
141
  */
142
  private function get_translation( $string, $field_id ) {
143
+ $wpml_interop = Types_Interop_Handler_Wpml::get_instance();
144
+ return $wpml_interop->get_translation( $string, $field_id, self::CONTEXT );
145
+ }
146
 
 
 
 
 
 
 
 
 
 
147
 
148
+ /**
149
+ * Update the identifier on db table "{prefix}_icl_strings" to use the "name"
150
+ * of a group instead of the "id".
151
+ *
152
+ * If a row with the new name already exists, only delete the old identifier.
153
+ */
154
+ private function update_db_identifier() {
155
+ global $wpdb;
156
+
157
+ $new_db_identifier = $this->get_db_identifier();
158
 
159
+ if ( $this->string_exists( $new_db_identifier ) ) {
160
+
161
+ $wpdb->query(
162
+ $wpdb->prepare(
163
+ "DELETE FROM {$wpdb->prefix}icl_strings
164
+ WHERE `name` = %s",
165
+ $this->get_db_identifier_legacy()
166
+ )
167
+ );
168
+
169
+ } else {
170
+
171
+ $wpdb->query(
172
+ $wpdb->prepare(
173
+ "UPDATE {$wpdb->prefix}icl_strings
174
+ SET name = %s,
175
+ domain_name_context_md5 = md5( CONCAT( context, name, gettext_context ) )
176
+ WHERE name = %s",
177
+ $this->get_db_identifier(),
178
+ $this->get_db_identifier_legacy()
179
+ )
180
+ );
181
+ }
182
  }
183
 
184
+
185
  /**
186
+ * Determine whether a string with given name already exists in the icl_strings table.
187
+ *
188
+ * @param string $new_string_name
189
+ * @return bool
190
+ * @since 2.2.7
191
  */
192
+ private function string_exists( $new_string_name ) {
193
+
194
  global $wpdb;
195
+
196
+ $conflict_count = $wpdb->get_var(
197
  $wpdb->prepare(
198
+ "SELECT COUNT(1)
199
+ FROM {$wpdb->prefix}icl_strings
200
+ WHERE `name` LIKE %s
201
+ LIMIT 1",
202
+ $new_string_name
 
203
  )
204
  );
205
+
206
+ return ( 0 < $conflict_count );
207
  }
208
 
209
+
210
  /**
211
  * Say Hello to WPML
212
+ *
213
+ * @param bool $slug_update
214
  */
215
  public function register( $slug_update = false ) {
216
  // abort if needed function not exists
217
+ if ( ! function_exists( 'icl_register_string' ) ) {
218
  return;
219
+ }
220
 
221
  // update string identifier
222
+ if ( $slug_update ) {
223
  global $wpdb;
224
 
225
  $wpdb->query(
226
  $wpdb->prepare(
227
  "UPDATE {$wpdb->prefix}icl_strings
228
+ SET name = %s
229
+ WHERE name = %s",
230
  $this->get_db_identifier(),
231
  sprintf( $this->get_db_pattern(), $slug_update )
232
  )
240
  $this->get_string_to_translate()
241
  );
242
  }
243
+
244
+
245
  }
application/models/wpml/interface.php CHANGED
@@ -1,5 +1,6 @@
1
  <?php
2
 
 
3
  interface Types_Wpml_Interface {
4
  public function translate();
5
  public function register( $slug_update = false );
1
  <?php
2
 
3
+
4
  interface Types_Wpml_Interface {
5
  public function translate();
6
  public function register( $slug_update = false );
application/views/information/description/link.twig CHANGED
@@ -1,5 +1,5 @@
1
  {% if description.target and description.label %}
2
  <p class="types-information-link">
3
- <a{% if description.class or description.external %} class="{{ description.class }}{% if description.external %} types-external-link{% endif %}"{% endif %} href="{{ description.target }}"{% if description.external %} target="_blank"{% endif %}>{{ description.label }}</a>
4
  </p>
5
  {% endif %}
1
  {% if description.target and description.label %}
2
  <p class="types-information-link">
3
+ <a{% if description.class or description.external %} class="{{ description.class }}{% if description.external %} types-external-link{% endif %}"{% endif %} href="{{ description.target }}"{% if description.external %} target="_blank"{% endif %}{% if description.post_type %} data-type="{{ description.post_type }}"{% endif %}{% if description.redirect_url %} data-redirect-url="{{ description.redirect_url }}"{% endif %}{% if description.forwhomloop %} data-forwhomloop="{{ description.forwhomloop }}"{% endif %}{% if description.forwhomtitle %} data-forwhomtitle="{{ description.forwhomtitle }}"{% endif %}>{{ description.label }}</a>
4
  </p>
5
  {% endif %}
application/views/page/dashboard/help.twig CHANGED
@@ -1,16 +1,16 @@
1
  <p>
2
- {{ __( 'This is the main Toolset Dashboard page. The table below provides you with an overview of content types and Toolset components in your site. It also displays the links between all the elements.', 'types' ) }}
3
  </p>
4
 
5
  <p>
6
- {{ __( 'The table has two parts:', 'types' ) }}
7
  </p>
8
 
9
  <ul>
10
- <li>{{ __( '<b>WordPress admin</b> lists all of the content types and their relations: Post Types, Fields and Taxonomies.', 'types' )|raw }}</li>
11
- <li>{{ __( '<b>Front-end</b> lists all of the Toolset elements you have and the content they are used for: Content Templates, WordPress Archives, Views and Forms.', 'types' )|raw }}</li>
12
  </ul>
13
 
14
  <p>
15
- {{ __( 'The buttons in the table provide shortcuts to create specific content types or Toolset components.', 'types' ) }}
16
  </p>
1
  <p>
2
+ {{ __( 'This is the main Toolset Dashboard page. The table below provides you with an overview of content types and Toolset components in your site. It also displays the links between all the elements.', 'wpcf' ) }}
3
  </p>
4
 
5
  <p>
6
+ {{ __( 'The table has two parts:', 'wpcf' ) }}
7
  </p>
8
 
9
  <ul>
10
+ <li>{{ __( '<b>WordPress admin</b> lists all of the content types and their relations: Post Types, Fields and Taxonomies.', 'wpcf' )|raw }}</li>
11
+ <li>{{ __( '<b>Front-end</b> lists all of the Toolset elements you have and the content they are used for: Content Templates, WordPress Archives, Views and Forms.', 'wpcf' )|raw }}</li>
12
  </ul>
13
 
14
  <p>
15
+ {{ __( 'The buttons in the table provide shortcuts to create specific content types or Toolset components.', 'wpcf' ) }}
16
  </p>
disabled_autoload_classmap.php DELETED
@@ -1,151 +0,0 @@
1
- <?php
2
- // Generated by ZF2's ./bin/classmap_generator.php
3
- return array(
4
- 'Types_Api' => TYPES_ABSPATH . '/application/api.php',
5
- 'Types_Admin' => TYPES_ABSPATH . '/application/controllers/admin.php',
6
- 'Types_Admin_Menu' => TYPES_ABSPATH . '/application/controllers/admin_menu.php',
7
- 'Types_Ajax_Handler_Abstract' => TYPES_ABSPATH . '/application/controllers/ajax/handler/abstract.php',
8
- 'Types_Ajax_Handler_Check_Slug_Conflicts' => TYPES_ABSPATH . '/application/controllers/ajax/handler/check_slug_conflicts.php',
9
- 'Types_Ajax_Handler_Field_Control_Action' => TYPES_ABSPATH . '/application/controllers/ajax/handler/field_control_action.php',
10
- 'Types_Ajax_Handler_Settings_Action' => TYPES_ABSPATH . '/application/controllers/ajax/handler/settings_action.php',
11
- 'Types_Ajax_Handler_Interface' => TYPES_ABSPATH . '/application/controllers/ajax/handler_interface.php',
12
- 'Types_Ajax' => TYPES_ABSPATH . '/application/controllers/ajax.php',
13
- 'Types_Asset_Help_Tab_Loader' => TYPES_ABSPATH . '/application/controllers/asset/help_tab_loader.php',
14
- 'Types_Asset_Manager' => TYPES_ABSPATH . '/application/controllers/asset/manager.php',
15
- 'Types_Assets' => TYPES_ABSPATH . '/application/controllers/assets.php',
16
- 'Types_Dialog_Box' => TYPES_ABSPATH . '/application/controllers/dialog_box.php',
17
- 'Types_Embedded' => TYPES_ABSPATH . '/application/controllers/embedded.php',
18
- 'Types_Field_Type_Converter' => TYPES_ABSPATH . '/application/controllers/field/type_converter.php',
19
- 'Types_Field_Utils' => TYPES_ABSPATH . '/application/controllers/field/utils.php',
20
- 'Types_Frontend' => TYPES_ABSPATH . '/application/controllers/frontend.php',
21
- 'Types_Import_Export' => TYPES_ABSPATH . '/application/controllers/import_export.php',
22
- 'Types_Information_Controller' => TYPES_ABSPATH . '/application/controllers/information/controller.php',
23
- 'Types_Main' => TYPES_ABSPATH . '/application/controllers/main.php',
24
- 'Types_Page_Abstract' => TYPES_ABSPATH . '/application/controllers/page/abstract.php',
25
- 'Types_Page_Dashboard' => TYPES_ABSPATH . '/application/controllers/page/dashboard.php',
26
- 'Types_Page_Extension_Edit_Post' => TYPES_ABSPATH . '/application/controllers/page/extension/edit_post.php',
27
- 'Types_Page_Extension_Edit_Post_Fields' => TYPES_ABSPATH . '/application/controllers/page/extension/edit_post_fields.php',
28
- 'Types_Page_Extension_Edit_Post_Type' => TYPES_ABSPATH . '/application/controllers/page/extension/edit_post_type.php',
29
- 'Types_Page_Extension_Settings' => TYPES_ABSPATH . '/application/controllers/page/extension/settings.php',
30
- 'Types_Page_Field_Control' => TYPES_ABSPATH . '/application/controllers/page/field_control.php',
31
- 'Types_Page_Hidden_Helper' => TYPES_ABSPATH . '/application/controllers/page/hidden/helper.php',
32
- 'Types_Twig_Autoloader' => TYPES_ABSPATH . '/application/controllers/twig_autoloader.php',
33
- 'Types_Upgrade' => TYPES_ABSPATH . '/application/controllers/upgrade.php',
34
- 'Types_Utils' => TYPES_ABSPATH . '/application/controllers/utils.php',
35
- 'Types_Api_Helper' => TYPES_ABSPATH . '/application/models/api/helper.php',
36
- 'Types_Field_Group_Factory' => TYPES_ABSPATH . '/application/models/field/group/factory.php',
37
- 'Types_Field_Group_Post' => TYPES_ABSPATH . '/application/models/field/group/post.php',
38
- 'Types_Field_Group_Post_Factory' => TYPES_ABSPATH . '/application/models/field/group/post_factory.php',
39
- 'Types_Field_Group_Term' => TYPES_ABSPATH . '/application/models/field/group/term.php',
40
- 'Types_Field_Group_Term_Factory' => TYPES_ABSPATH . '/application/models/field/group/term_factory.php',
41
- 'Types_Field_Group_User' => TYPES_ABSPATH . '/application/models/field/group/user.php',
42
- 'Types_Field_Group_User_Factory' => TYPES_ABSPATH . '/application/models/field/group/user_factory.php',
43
- 'Types_Field_Group' => TYPES_ABSPATH . '/application/models/field/group.php',
44
- 'Types_Field_Type_Definition_Checkbox' => TYPES_ABSPATH . '/application/models/field/type/definition/checkbox.php',
45
- 'Types_Field_Type_Definition_Checkboxes' => TYPES_ABSPATH . '/application/models/field/type/definition/checkboxes.php',
46
- 'Types_Field_Type_Definition_Date' => TYPES_ABSPATH . '/application/models/field/type/definition/date.php',
47
- 'Types_Field_Type_Definition_Numeric' => TYPES_ABSPATH . '/application/models/field/type/definition/numeric.php',
48
- 'Types_Field_Type_Definition_Radio' => TYPES_ABSPATH . '/application/models/field/type/definition/radio.php',
49
- 'Types_Field_Type_Definition_Select' => TYPES_ABSPATH . '/application/models/field/type/definition/select.php',
50
- 'Types_Field_Type_Definition_Singular' => TYPES_ABSPATH . '/application/models/field/type/definition/singular.php',
51
- 'Types_Field_Type_Definition' => TYPES_ABSPATH . '/application/models/field/type/definition.php',
52
- 'Types_Field_Type_Definition_Factory' => TYPES_ABSPATH . '/application/models/field/type/definition_factory.php',
53
- 'Types_Helper_Condition_Archive_Exists' => TYPES_ABSPATH . '/application/models/helper/condition/archive/exists.php',
54
- 'Types_Helper_Condition_Archive_Has_Fields' => TYPES_ABSPATH . '/application/models/helper/condition/archive/has_fields.php',
55
- 'Types_Helper_Condition_Archive_Missing' => TYPES_ABSPATH . '/application/models/helper/condition/archive/missing.php',
56
- 'Types_Helper_Condition_Archive_No_Fields' => TYPES_ABSPATH . '/application/models/helper/condition/archive/no_fields.php',
57
- 'Types_Helper_Condition_Archive_No_Support' => TYPES_ABSPATH . '/application/models/helper/condition/archive/no_support.php',
58
- 'Types_Helper_Condition_Archive_Support' => TYPES_ABSPATH . '/application/models/helper/condition/archive/support.php',
59
- 'Types_Helper_Condition_Cred_Active' => TYPES_ABSPATH . '/application/models/helper/condition/cred/active.php',
60
- 'Types_Helper_Condition_Cred_Forms_Exist' => TYPES_ABSPATH . '/application/models/helper/condition/cred/forms_exist.php',
61
- 'Types_Helper_Condition_Cred_Forms_Missing' => TYPES_ABSPATH . '/application/models/helper/condition/cred/forms_missing.php',
62
- 'Types_Helper_Condition_Cred_Missing' => TYPES_ABSPATH . '/application/models/helper/condition/cred/missing.php',
63
- 'Types_Helper_Condition_Layouts_Active' => TYPES_ABSPATH . '/application/models/helper/condition/layouts/active.php',
64
- 'Types_Helper_Condition_Layouts_Archive_Exists' => TYPES_ABSPATH . '/application/models/helper/condition/layouts/archive_exists.php',
65
- 'Types_Helper_Condition_Layouts_Archive_Missing' => TYPES_ABSPATH . '/application/models/helper/condition/layouts/archive_missing.php',
66
- 'Types_Helper_Condition_Layouts_Compatible' => TYPES_ABSPATH . '/application/models/helper/condition/layouts/compatible.php',
67
- 'Types_Helper_Condition_Layouts_Missing' => TYPES_ABSPATH . '/application/models/helper/condition/layouts/missing.php',
68
- 'Types_Helper_Condition_Layouts_Template_Exists' => TYPES_ABSPATH . '/application/models/helper/condition/layouts/template_exists.php',
69
- 'Types_Helper_Condition_Layouts_Template_Missing' => TYPES_ABSPATH . '/application/models/helper/condition/layouts/template_missing.php',
70
- 'Types_Helper_Condition_Screen' => TYPES_ABSPATH . '/application/models/helper/condition/screen.php',
71
- 'Types_Helper_Condition_Single_Exists' => TYPES_ABSPATH . '/application/models/helper/condition/single/exists.php',
72
- 'Types_Helper_Condition_Single_Has_Fields' => TYPES_ABSPATH . '/application/models/helper/condition/single/has_fields.php',
73
- 'Types_Helper_Condition_Single_Missing' => TYPES_ABSPATH . '/application/models/helper/condition/single/missing.php',
74
- 'Types_Helper_Condition_Single_No_Fields' => TYPES_ABSPATH . '/application/models/helper/condition/single/no_fields.php',
75
- 'Types_Helper_Condition_Template' => TYPES_ABSPATH . '/application/models/helper/condition/template.php',
76
- 'Types_Helper_Condition_Type_Fields_Assigned' => TYPES_ABSPATH . '/application/models/helper/condition/type/fields_assigned.php',
77
- 'Types_Helper_Condition_Views_Active' => TYPES_ABSPATH . '/application/models/helper/condition/views/active.php',
78
- 'Types_Helper_Condition_Views_Archive_Exists' => TYPES_ABSPATH . '/application/models/helper/condition/views/archive_exists.php',
79
- 'Types_Helper_Condition_Views_Archive_Missing' => TYPES_ABSPATH . '/application/models/helper/condition/views/archive_missing.php',
80
- 'Types_Helper_Condition_Views_Missing' => TYPES_ABSPATH . '/application/models/helper/condition/views/missing.php',
81
- 'Types_Helper_Condition_Views_Template_Exists' => TYPES_ABSPATH . '/application/models/helper/condition/views/template_exists.php',
82
- 'Types_Helper_Condition_Views_Template_Missing' => TYPES_ABSPATH . '/application/models/helper/condition/views/template_missing.php',
83
- 'Types_Helper_Condition_Views_Views_Exist' => TYPES_ABSPATH . '/application/models/helper/condition/views/views_exist.php',
84
- 'Types_Helper_Condition_Views_Views_Missing' => TYPES_ABSPATH . '/application/models/helper/condition/views/views_missing.php',
85
- 'Types_Helper_Condition' => TYPES_ABSPATH . '/application/models/helper/condition.php',
86
- 'Types_Helper_Create_Content_Template' => TYPES_ABSPATH . '/application/models/helper/create/content_template.php',
87
- 'Types_Helper_Create_Form' => TYPES_ABSPATH . '/application/models/helper/create/form.php',
88
- 'Types_Helper_Create_Layout' => TYPES_ABSPATH . '/application/models/helper/create/layout.php',
89
- 'Types_Helper_Create_View' => TYPES_ABSPATH . '/application/models/helper/create/view.php',
90
- 'Types_Helper_Create_Wordpress_Archive' => TYPES_ABSPATH . '/application/models/helper/create/wordpress_archive.php',
91
- 'Types_Helper_Output_Interface' => TYPES_ABSPATH . '/application/models/helper/output/interface.php',
92
- 'Types_Helper_Output_Meta_Box' => TYPES_ABSPATH . '/application/models/helper/output/meta_box.php',
93
- 'Types_Helper_Placeholder' => TYPES_ABSPATH . '/application/models/helper/placeholder.php',
94
- 'Types_Helper_Twig' => TYPES_ABSPATH . '/application/models/helper/twig.php',
95
- 'Types_Helper_Url' => TYPES_ABSPATH . '/application/models/helper/url.php',
96
- 'Types_Information_Container' => TYPES_ABSPATH . '/application/models/information/container.php',
97
- 'Types_Information_Message_Post_Type' => TYPES_ABSPATH . '/application/models/information/message/post_type.php',
98
- 'Types_Information_Message' => TYPES_ABSPATH . '/application/models/information/message.php',
99
- 'Types_Information_Table' => TYPES_ABSPATH . '/application/models/information/table.php',
100
- 'Types_Post_Type' => TYPES_ABSPATH . '/application/models/post_type.php',
101
- 'Types_Setting_Boolean' => TYPES_ABSPATH . '/application/models/setting/boolean.php',
102
- 'Types_Setting_Interface' => TYPES_ABSPATH . '/application/models/setting/interface.php',
103
- 'Types_Setting_Option_Interface' => TYPES_ABSPATH . '/application/models/setting/option/interface.php',
104
- 'Types_Setting_Option' => TYPES_ABSPATH . '/application/models/setting/option.php',
105
- 'Types_Setting_Preset_Information_Table' => TYPES_ABSPATH . '/application/models/setting/preset/information_table.php',
106
- 'Types_Setting' => TYPES_ABSPATH . '/application/models/setting.php',
107
- 'Types_Taxonomy' => TYPES_ABSPATH . '/application/models/taxonomy.php',
108
- 'Toolset_Autoloader' => TYPES_ABSPATH . '/library/toolset/autoloader/autoloader.php',
109
- 'Toolset_Filesystem_Directory' => TYPES_ABSPATH . '/library/toolset/filesystem/directory.php',
110
- 'Toolset_Filesystem_Exception' => TYPES_ABSPATH . '/library/toolset/filesystem/exception.php',
111
- 'Toolset_Filesystem_File' => TYPES_ABSPATH . '/library/toolset/filesystem/file.php',
112
- 'WPToolset_Forms_Bootstrap' => TYPES_ABSPATH . '/library/toolset/toolset-common/toolset-forms/bootstrap.php',
113
- 'WPToolset_Field_Audio' => TYPES_ABSPATH . '/library/toolset/toolset-common/toolset-forms/classes/class.audio.php',
114
- 'WPToolset_Field_Button' => TYPES_ABSPATH . '/library/toolset/toolset-common/toolset-forms/classes/class.button.php',
115
- 'WPToolset_Field_Checkbox' => TYPES_ABSPATH . '/library/toolset/toolset-common/toolset-forms/classes/class.checkbox.php',
116
- 'WPToolset_Field_Checkboxes' => TYPES_ABSPATH . '/library/toolset/toolset-common/toolset-forms/classes/class.checkboxes.php',
117
- 'WPToolset_Field_Colorpicker' => TYPES_ABSPATH . '/library/toolset/toolset-common/toolset-forms/classes/class.colorpicker.php',
118
- 'WPToolset_Forms_Conditional' => TYPES_ABSPATH . '/library/toolset/toolset-common/toolset-forms/classes/class.conditional.php',
119
- 'WPToolset_Cred' => TYPES_ABSPATH . '/library/toolset/toolset-common/toolset-forms/classes/class.cred.php',
120
- 'WPToolset_Field_Credaudio' => TYPES_ABSPATH . '/library/toolset/toolset-common/toolset-forms/classes/class.credaudio.php',
121
- 'WPToolset_Field_Credfile' => TYPES_ABSPATH . '/library/toolset/toolset-common/toolset-forms/classes/class.credfile.php',
122
- 'WPToolset_Field_Credimage' => TYPES_ABSPATH . '/library/toolset/toolset-common/toolset-forms/classes/class.credimage.php',
123
- 'WPToolset_Field_Credvideo' => TYPES_ABSPATH . '/library/toolset/toolset-common/toolset-forms/classes/class.credvideo.php',
124
- 'WPToolset_Field_Date' => TYPES_ABSPATH . '/library/toolset/toolset-common/toolset-forms/classes/class.date.php',
125
- 'WPToolset_Field_Date_Scripts' => TYPES_ABSPATH . '/library/toolset/toolset-common/toolset-forms/classes/class.date.scripts.php',
126
- 'WPToolset_Field_Email' => TYPES_ABSPATH . '/library/toolset/toolset-common/toolset-forms/classes/class.email.php',
127
- 'WPToolset_Field_Embed' => TYPES_ABSPATH . '/library/toolset/toolset-common/toolset-forms/classes/class.embed.php',
128
- 'WPToolset_Field_File' => TYPES_ABSPATH . '/library/toolset/toolset-common/toolset-forms/classes/class.file.php',
129
- 'WPToolset_Field_Hidden' => TYPES_ABSPATH . '/library/toolset/toolset-common/toolset-forms/classes/class.hidden.php',
130
- 'WPToolset_Field_Image' => TYPES_ABSPATH . '/library/toolset/toolset-common/toolset-forms/classes/class.image.php',
131
- 'WPToolset_Field_Integer' => TYPES_ABSPATH . '/library/toolset/toolset-common/toolset-forms/classes/class.integer.php',
132
- 'WPToolset_Field_Numeric' => TYPES_ABSPATH . '/library/toolset/toolset-common/toolset-forms/classes/class.numeric.php',
133
- 'WPToolset_Field_Password' => TYPES_ABSPATH . '/library/toolset/toolset-common/toolset-forms/classes/class.password.php',
134
- 'WPToolset_Field_Phone' => TYPES_ABSPATH . '/library/toolset/toolset-common/toolset-forms/classes/class.phone.php',
135
- 'WPToolset_Field_Radios' => TYPES_ABSPATH . '/library/toolset/toolset-common/toolset-forms/classes/class.radios.php',
136
- 'WPToolset_Field_Recaptcha' => TYPES_ABSPATH . '/library/toolset/toolset-common/toolset-forms/classes/class.recaptcha.php',
137
- 'WPToolset_Forms_Repetitive' => TYPES_ABSPATH . '/library/toolset/toolset-common/toolset-forms/classes/class.repetitive.php',
138
- 'WPToolset_Field_Select' => TYPES_ABSPATH . '/library/toolset/toolset-common/toolset-forms/classes/class.select.php',
139
- 'WPToolset_Field_Skype' => TYPES_ABSPATH . '/library/toolset/toolset-common/toolset-forms/classes/class.skype.php',
140
- 'WPToolset_Field_Submit' => TYPES_ABSPATH . '/library/toolset/toolset-common/toolset-forms/classes/class.submit.php',
141
- 'WPToolset_Field_Taxonomy' => TYPES_ABSPATH . '/library/toolset/toolset-common/toolset-forms/classes/class.taxonomy.php',
142
- 'WPToolset_Field_Taxonomyhierarchical' => TYPES_ABSPATH . '/library/toolset/toolset-common/toolset-forms/classes/class.taxonomyhierarchical.php',
143
- 'WPToolset_Field_Textarea' => TYPES_ABSPATH . '/library/toolset/toolset-common/toolset-forms/classes/class.textarea.php',
144
- 'WPToolset_Field_Textfield' => TYPES_ABSPATH . '/library/toolset/toolset-common/toolset-forms/classes/class.textfield.php',
145
- 'WPToolset_Types' => TYPES_ABSPATH . '/library/toolset/toolset-common/toolset-forms/classes/class.types.php',
146
- 'WPToolset_Field_Url' => TYPES_ABSPATH . '/library/toolset/toolset-common/toolset-forms/classes/class.url.php',
147
- 'WPToolset_Forms_Validation' => TYPES_ABSPATH . '/library/toolset/toolset-common/toolset-forms/classes/class.validation.php',
148
- 'WPToolset_Field_Video' => TYPES_ABSPATH . '/library/toolset/toolset-common/toolset-forms/classes/class.video.php',
149
- 'WPToolset_Field_Wysiwyg' => TYPES_ABSPATH . '/library/toolset/toolset-common/toolset-forms/classes/class.wysiwyg.php',
150
- 'WPToolset_Cake_Validation' => TYPES_ABSPATH . '/library/toolset/toolset-common/toolset-forms/lib/CakePHP-Validation.php',
151
- );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
library/toolset/onthego-resources/.gitignore DELETED
@@ -1,72 +0,0 @@
1
- # Ignore test results
2
- actual
3
- results
4
-
5
- # Ignore compiled docs
6
- _gh_pages
7
- _gh-pages
8
- _site
9
-
10
- # Numerous always-ignore extensions
11
- *.csv
12
- *.dat
13
- *.diff
14
- *.err
15
- *.gz
16
- *.log
17
- *.log
18
- *.orig
19
- *.out
20
- *.pid
21
- *.rej
22
- *.ruby-version
23
- *.sass-cache
24
- *.seed
25
- *.swo
26
- *.swp
27
- *.vi
28
- *.zip
29
- *~
30
- lib-cov
31
-
32
- # OS or Editor folders
33
- .DS_Store
34
- ._*
35
- Thumbs.db
36
- .cache
37
- .project
38
- .settings
39
- .tmproj
40
- *.esproj
41
- nbproject
42
- *.sublime-*
43
- .editorconfig
44
-
45
- # Komodo
46
- *.komodoproject
47
- .komodotools
48
-
49
- # Folders to ignore
50
- .hg
51
- .svn
52
- .CVS
53
- .idea
54
- tmp
55
- pids
56
- build
57
- src
58
- node_modules
59
- installer
60
- .sass-cache
61
- composer
62
- embedded/toolset
63
- embedded/toolset/toolset-common
64
- embedded/toolset/onthego-resources
65
-
66
- # Types
67
- embedded/autoload.php
68
-
69
- # Files to ignore
70
- npm-debug.log
71
- composer.lock
72
- composer.json
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
library/toolset/onthego-resources/onthegosystems-icons/.fontcustom-manifest.json CHANGED
@@ -1,13 +1,13 @@
1
  {
2
  "checksum": {
3
- "previous": "91cc76c6ec19609541b007a2169151af12744e59994efb1ea941131d51975f81",
4
- "current": "91cc76c6ec19609541b007a2169151af12744e59994efb1ea941131d51975f81"
5
  },
6
  "fonts": [
7
- "fonts/onthegosystems-icons_91cc76c6ec19609541b007a2169151af.ttf",
8
- "fonts/onthegosystems-icons_91cc76c6ec19609541b007a2169151af.svg",
9
- "fonts/onthegosystems-icons_91cc76c6ec19609541b007a2169151af.woff",
10
- "fonts/onthegosystems-icons_91cc76c6ec19609541b007a2169151af.eot"
11
  ],
12
  "glyphs": {
13
  "access": {
@@ -118,6 +118,10 @@
118
  "codepoint": 61738,
119
  "source": "vectors/toolset.svg"
120
  },
 
 
 
 
121
  "toolset-genesis-logo": {
122
  "codepoint": 61736,
123
  "source": "vectors/toolset-genesis-logo.svg"
1
  {
2
  "checksum": {
3
+ "previous": "c2bf5434fb5ba6db313a98fb4e1bf3479154a52d11ff65763e7707dfe4069a7b",
4
+ "current": "c2bf5434fb5ba6db313a98fb4e1bf3479154a52d11ff65763e7707dfe4069a7b"
5
  },
6
  "fonts": [
7
+ "fonts/onthegosystems-icons_c2bf5434fb5ba6db313a98fb4e1bf347.ttf",
8
+ "fonts/onthegosystems-icons_c2bf5434fb5ba6db313a98fb4e1bf347.svg",
9
+ "fonts/onthegosystems-icons_c2bf5434fb5ba6db313a98fb4e1bf347.woff",
10
+ "fonts/onthegosystems-icons_c2bf5434fb5ba6db313a98fb4e1bf347.eot"
11
  ],
12
  "glyphs": {
13
  "access": {
118
  "codepoint": 61738,
119
  "source": "vectors/toolset.svg"
120
  },
121
+ "toolset-export": {
122
+ "codepoint": 61751,
123
+ "source": "vectors/toolset-export.svg"
124
+ },
125
  "toolset-genesis-logo": {
126
  "codepoint": 61736,
127
  "source": "vectors/toolset-genesis-logo.svg"
library/toolset/onthego-resources/onthegosystems-icons/css/_onthegosystems-icons.scss CHANGED
@@ -4,11 +4,11 @@
4
 
5
  @font-face {
6
  font-family: "onthegosystems-icons";
7
- src: url("../fonts/onthegosystems-icons_91cc76c6ec19609541b007a2169151af.eot");
8
- src: url("../fonts/onthegosystems-icons_91cc76c6ec19609541b007a2169151af.eot?#iefix") format("embedded-opentype"),
9
- url("../fonts/onthegosystems-icons_91cc76c6ec19609541b007a2169151af.woff") format("woff"),
10
- url("../fonts/onthegosystems-icons_91cc76c6ec19609541b007a2169151af.ttf") format("truetype"),
11
- url("../fonts/onthegosystems-icons_91cc76c6ec19609541b007a2169151af.svg#onthegosystems-icons") format("svg");
12
  font-weight: normal;
13
  font-style: normal;
14
  }
@@ -16,7 +16,7 @@
16
  @media screen and (-webkit-min-device-pixel-ratio:0) {
17
  @font-face {
18
  font-family: "onthegosystems-icons";
19
- src: url("../fonts/onthegosystems-icons_91cc76c6ec19609541b007a2169151af.svg#onthegosystems-icons") format("svg");
20
  }
21
  }
22
 
@@ -50,6 +50,7 @@
50
  .icon-packager-logo:before,
51
  .icon-panels:before,
52
  .icon-toolset:before,
 
53
  .icon-toolset-genesis-logo:before,
54
  .icon-toolset-logo:before,
55
  .icon-toolset-map:before,
@@ -101,6 +102,7 @@
101
  .icon-packager-logo:before { content: "\f121"; }
102
  .icon-panels:before { content: "\f133"; }
103
  .icon-toolset:before { content: "\f12a"; }
 
104
  .icon-toolset-genesis-logo:before { content: "\f128"; }
105
  .icon-toolset-logo:before { content: "\f11a"; }
106
  .icon-toolset-map:before { content: "\f125"; }
@@ -139,6 +141,7 @@ $font-onthegosystems-icons-packager: "\f120";
139
  $font-onthegosystems-icons-packager-logo: "\f121";
140
  $font-onthegosystems-icons-panels: "\f133";
141
  $font-onthegosystems-icons-toolset: "\f12a";
 
142
  $font-onthegosystems-icons-toolset-genesis-logo: "\f128";
143
  $font-onthegosystems-icons-toolset-logo: "\f11a";
144
  $font-onthegosystems-icons-toolset-map: "\f125";
4
 
5
  @font-face {
6
  font-family: "onthegosystems-icons";
7
+ src: url("../fonts/onthegosystems-icons_c2bf5434fb5ba6db313a98fb4e1bf347.eot");
8
+ src: url("../fonts/onthegosystems-icons_c2bf5434fb5ba6db313a98fb4e1bf347.eot?#iefix") format("embedded-opentype"),
9
+ url("../fonts/onthegosystems-icons_c2bf5434fb5ba6db313a98fb4e1bf347.woff") format("woff"),
10
+ url("../fonts/onthegosystems-icons_c2bf5434fb5ba6db313a98fb4e1bf347.ttf") format("truetype"),
11
+ url("../fonts/onthegosystems-icons_c2bf5434fb5ba6db313a98fb4e1bf347.svg#onthegosystems-icons") format("svg");
12
  font-weight: normal;
13
  font-style: normal;
14
  }
16
  @media screen and (-webkit-min-device-pixel-ratio:0) {
17
  @font-face {
18
  font-family: "onthegosystems-icons";
19
+ src: url("../fonts/onthegosystems-icons_c2bf5434fb5ba6db313a98fb4e1bf347.svg#onthegosystems-icons") format("svg");
20
  }
21
  }
22
 
50
  .icon-packager-logo:before,
51
  .icon-panels:before,
52
  .icon-toolset:before,
53
+ .icon-toolset-export:before,
54
  .icon-toolset-genesis-logo:before,
55
  .icon-toolset-logo:before,
56
  .icon-toolset-map:before,
102
  .icon-packager-logo:before { content: "\f121"; }
103
  .icon-panels:before { content: "\f133"; }
104
  .icon-toolset:before { content: "\f12a"; }
105
+ .icon-toolset-export:before { content: "\f137"; }
106
  .icon-toolset-genesis-logo:before { content: "\f128"; }
107
  .icon-toolset-logo:before { content: "\f11a"; }
108
  .icon-toolset-map:before { content: "\f125"; }
141
  $font-onthegosystems-icons-packager-logo: "\f121";
142
  $font-onthegosystems-icons-panels: "\f133";
143
  $font-onthegosystems-icons-toolset: "\f12a";
144
+ $font-onthegosystems-icons-toolset-export: "\f137";
145
  $font-onthegosystems-icons-toolset-genesis-logo: "\f128";
146
  $font-onthegosystems-icons-toolset-logo: "\f11a";
147
  $font-onthegosystems-icons-toolset-map: "\f125";
library/toolset/onthego-resources/onthegosystems-icons/css/onthegosystems-icons.css CHANGED
@@ -4,11 +4,11 @@
4
 
5
  @font-face {
6
  font-family: "onthegosystems-icons";
7
- src: url("../fonts/onthegosystems-icons_91cc76c6ec19609541b007a2169151af.eot");
8
- src: url("../fonts/onthegosystems-icons_91cc76c6ec19609541b007a2169151af.eot?#iefix") format("embedded-opentype"),
9
- url("../fonts/onthegosystems-icons_91cc76c6ec19609541b007a2169151af.woff") format("woff"),
10
- url("../fonts/onthegosystems-icons_91cc76c6ec19609541b007a2169151af.ttf") format("truetype"),
11
- url("../fonts/onthegosystems-icons_91cc76c6ec19609541b007a2169151af.svg#onthegosystems-icons") format("svg");
12
  font-weight: normal;
13
  font-style: normal;
14
  }
@@ -16,7 +16,7 @@
16
  @media screen and (-webkit-min-device-pixel-ratio:0) {
17
  @font-face {
18
  font-family: "onthegosystems-icons";
19
- src: url("../fonts/onthegosystems-icons_91cc76c6ec19609541b007a2169151af.svg#onthegosystems-icons") format("svg");
20
  }
21
  }
22
 
@@ -50,6 +50,7 @@
50
  .icon-packager-logo:before,
51
  .icon-panels:before,
52
  .icon-toolset:before,
 
53
  .icon-toolset-genesis-logo:before,
54
  .icon-toolset-logo:before,
55
  .icon-toolset-map:before,
@@ -101,6 +102,7 @@
101
  .icon-packager-logo:before { content: "\f121"; }
102
  .icon-panels:before { content: "\f133"; }
103
  .icon-toolset:before { content: "\f12a"; }
 
104
  .icon-toolset-genesis-logo:before { content: "\f128"; }
105
  .icon-toolset-logo:before { content: "\f11a"; }
106
  .icon-toolset-map:before { content: "\f125"; }
4
 
5
  @font-face {
6
  font-family: "onthegosystems-icons";
7
+ src: url("../fonts/onthegosystems-icons_c2bf5434fb5ba6db313a98fb4e1bf347.eot");
8
+ src: url("../fonts/onthegosystems-icons_c2bf5434fb5ba6db313a98fb4e1bf347.eot?#iefix") format("embedded-opentype"),
9
+ url("../fonts/onthegosystems-icons_c2bf5434fb5ba6db313a98fb4e1bf347.woff") format("woff"),
10
+ url("../fonts/onthegosystems-icons_c2bf5434fb5ba6db313a98fb4e1bf347.ttf") format("truetype"),
11
+ url("../fonts/onthegosystems-icons_c2bf5434fb5ba6db313a98fb4e1bf347.svg#onthegosystems-icons") format("svg");
12
  font-weight: normal;
13
  font-style: normal;
14
  }
16
  @media screen and (-webkit-min-device-pixel-ratio:0) {
17
  @font-face {
18
  font-family: "onthegosystems-icons";
19
+ src: url("../fonts/onthegosystems-icons_c2bf5434fb5ba6db313a98fb4e1bf347.svg#onthegosystems-icons") format("svg");
20
  }
21
  }
22
 
50
  .icon-packager-logo:before,
51
  .icon-panels:before,
52
  .icon-toolset:before,
53
+ .icon-toolset-export:before,
54
  .icon-toolset-genesis-logo:before,
55
  .icon-toolset-logo:before,
56
  .icon-toolset-map:before,
102
  .icon-packager-logo:before { content: "\f121"; }
103
  .icon-panels:before { content: "\f133"; }
104
  .icon-toolset:before { content: "\f12a"; }
105
+ .icon-toolset-export:before { content: "\f137"; }
106
  .icon-toolset-genesis-logo:before { content: "\f128"; }
107
  .icon-toolset-logo:before { content: "\f11a"; }
108
  .icon-toolset-map:before { content: "\f125"; }
library/toolset/onthego-resources/onthegosystems-icons/fonts/onthegosystems-icons-preview.html CHANGED
@@ -141,11 +141,11 @@
141
 
142
  @font-face {
143
  font-family: "onthegosystems-icons";
144
- src: url("./onthegosystems-icons_91cc76c6ec19609541b007a2169151af.eot");
145
- src: url("./onthegosystems-icons_91cc76c6ec19609541b007a2169151af.eot?#iefix") format("embedded-opentype"),
146
- url("./onthegosystems-icons_91cc76c6ec19609541b007a2169151af.woff") format("woff"),
147
- url("./onthegosystems-icons_91cc76c6ec19609541b007a2169151af.ttf") format("truetype"),
148
- url("./onthegosystems-icons_91cc76c6ec19609541b007a2169151af.svg#onthegosystems-icons") format("svg");
149
  font-weight: normal;
150
  font-style: normal;
151
  }
@@ -153,7 +153,7 @@
153
  @media screen and (-webkit-min-device-pixel-ratio:0) {
154
  @font-face {
155
  font-family: "onthegosystems-icons";
156
- src: url("./onthegosystems-icons_91cc76c6ec19609541b007a2169151af.svg#onthegosystems-icons") format("svg");
157
  }
158
  }
159
 
@@ -187,6 +187,7 @@
187
  .icon-packager-logo:before,
188
  .icon-panels:before,
189
  .icon-toolset:before,
 
190
  .icon-toolset-genesis-logo:before,
191
  .icon-toolset-logo:before,
192
  .icon-toolset-map:before,
@@ -238,6 +239,7 @@
238
  .icon-packager-logo:before { content: "\f121"; }
239
  .icon-panels:before { content: "\f133"; }
240
  .icon-toolset:before { content: "\f12a"; }
 
241
  .icon-toolset-genesis-logo:before { content: "\f128"; }
242
  .icon-toolset-logo:before { content: "\f11a"; }
243
  .icon-toolset-map:before { content: "\f125"; }
@@ -263,7 +265,7 @@
263
  <body class="characters-off">
264
  <div id="page" class="container">
265
  <header>
266
- <h1>onthegosystems-icons contains 37 glyphs:</h1>
267
  <a onclick="toggleCharacters(); return false;" href="#">Toggle Preview Characters</a>
268
  </header>
269
 
@@ -619,6 +621,19 @@
619
  </div>
620
  </div>
621
 
 
 
 
 
 
 
 
 
 
 
 
 
 
622
  <div class="glyph">
623
  <div class="preview-glyphs">
624
  <span class="step size-12"><span class="letters">Pp</span><i id="icon-toolset-genesis-logo" class="icon-toolset-genesis-logo"></i></span><span class="step size-14"><span class="letters">Pp</span><i id="icon-toolset-genesis-logo" class="icon-toolset-genesis-logo"></i></span><span class="step size-16"><span class="letters">Pp</span><i id="icon-toolset-genesis-logo" class="icon-toolset-genesis-logo"></i></span><span class="step size-18"><span class="letters">Pp</span><i id="icon-toolset-genesis-logo" class="icon-toolset-genesis-logo"></i></span><span class="step size-21"><span class="letters">Pp</span><i id="icon-toolset-genesis-logo" class="icon-toolset-genesis-logo"></i></span><span class="step size-24"><span class="letters">Pp</span><i id="icon-toolset-genesis-logo" class="icon-toolset-genesis-logo"></i></span><span class="step size-36"><span class="letters">Pp</span><i id="icon-toolset-genesis-logo" class="icon-toolset-genesis-logo"></i></span><span class="step size-48"><span class="letters">Pp</span><i id="icon-toolset-genesis-logo" class="icon-toolset-genesis-logo"></i></span><span class="step size-60"><span class="letters">Pp</span><i id="icon-toolset-genesis-logo" class="icon-toolset-genesis-logo"></i></span><span class="step size-72"><span class="letters">Pp</span><i id="icon-toolset-genesis-logo" class="icon-toolset-genesis-logo"></i></span>
141
 
142
  @font-face {
143
  font-family: "onthegosystems-icons";
144
+ src: url("./onthegosystems-icons_c2bf5434fb5ba6db313a98fb4e1bf347.eot");
145
+ src: url("./onthegosystems-icons_c2bf5434fb5ba6db313a98fb4e1bf347.eot?#iefix") format("embedded-opentype"),
146
+ url("./onthegosystems-icons_c2bf5434fb5ba6db313a98fb4e1bf347.woff") format("woff"),
147
+ url("./onthegosystems-icons_c2bf5434fb5ba6db313a98fb4e1bf347.ttf") format("truetype"),
148
+ url("./onthegosystems-icons_c2bf5434fb5ba6db313a98fb4e1bf347.svg#onthegosystems-icons") format("svg");
149
  font-weight: normal;
150
  font-style: normal;
151
  }
153
  @media screen and (-webkit-min-device-pixel-ratio:0) {
154
  @font-face {
155
  font-family: "onthegosystems-icons";
156
+ src: url("./onthegosystems-icons_c2bf5434fb5ba6db313a98fb4e1bf347.svg#onthegosystems-icons") format("svg");
157
  }
158
  }
159
 
187
  .icon-packager-logo:before,
188
  .icon-panels:before,
189
  .icon-toolset:before,
190
+ .icon-toolset-export:before,
191
  .icon-toolset-genesis-logo:before,
192
  .icon-toolset-logo:before,
193
  .icon-toolset-map:before,
239
  .icon-packager-logo:before { content: "\f121"; }
240
  .icon-panels:before { content: "\f133"; }
241
  .icon-toolset:before { content: "\f12a"; }
242
+ .icon-toolset-export:before { content: "\f137"; }
243
  .icon-toolset-genesis-logo:before { content: "\f128"; }
244
  .icon-toolset-logo:before { content: "\f11a"; }
245
  .icon-toolset-map:before { content: "\f125"; }
265
  <body class="characters-off">
266
  <div id="page" class="container">
267
  <header>
268
+ <h1>onthegosystems-icons contains 38 glyphs:</h1>
269
  <a onclick="toggleCharacters(); return false;" href="#">Toggle Preview Characters</a>
270
  </header>
271
 
621
  </div>
622
  </div>
623
 
624
+ <div class="glyph">
625
+ <div class="preview-glyphs">
626
+ <span class="step size-12"><span class="letters">Pp</span><i id="icon-toolset-export" class="icon-toolset-export"></i></span><span class="step size-14"><span class="letters">Pp</span><i id="icon-toolset-export" class="icon-toolset-export"></i></span><span class="step size-16"><span class="letters">Pp</span><i id="icon-toolset-export" class="icon-toolset-export"></i></span><span class="step size-18"><span class="letters">Pp</span><i id="icon-toolset-export" class="icon-toolset-export"></i></span><span class="step size-21"><span class="letters">Pp</span><i id="icon-toolset-export" class="icon-toolset-export"></i></span><span class="step size-24"><span class="letters">Pp</span><i id="icon-toolset-export" class="icon-toolset-export"></i></span><span class="step size-36"><span class="letters">Pp</span><i id="icon-toolset-export" class="icon-toolset-export"></i></span><span class="step size-48"><span class="letters">Pp</span><i id="icon-toolset-export" class="icon-toolset-export"></i></span><span class="step size-60"><span class="letters">Pp</span><i id="icon-toolset-export" class="icon-toolset-export"></i></span><span class="step size-72"><span class="letters">Pp</span><i id="icon-toolset-export" class="icon-toolset-export"></i></span>
627
+ </div>
628
+ <div class="preview-scale">
629
+ <span class="step">12</span><span class="step">14</span><span class="step">16</span><span class="step">18</span><span class="step">21</span><span class="step">24</span><span class="step">36</span><span class="step">48</span><span class="step">60</span><span class="step">72</span>
630
+ </div>
631
+ <div class="usage">
632
+ <input class="class" type="text" readonly="readonly" onClick="this.select();" value=".icon-toolset-export" />
633
+ <input class="point" type="text" readonly="readonly" onClick="this.select();" value="&amp;#xf137;" />
634
+ </div>
635
+ </div>
636
+
637
  <div class="glyph">
638
  <div class="preview-glyphs">
639
  <span class="step size-12"><span class="letters">Pp</span><i id="icon-toolset-genesis-logo" class="icon-toolset-genesis-logo"></i></span><span class="step size-14"><span class="letters">Pp</span><i id="icon-toolset-genesis-logo" class="icon-toolset-genesis-logo"></i></span><span class="step size-16"><span class="letters">Pp</span><i id="icon-toolset-genesis-logo" class="icon-toolset-genesis-logo"></i></span><span class="step size-18"><span class="letters">Pp</span><i id="icon-toolset-genesis-logo" class="icon-toolset-genesis-logo"></i></span><span class="step size-21"><span class="letters">Pp</span><i id="icon-toolset-genesis-logo" class="icon-toolset-genesis-logo"></i></span><span class="step size-24"><span class="letters">Pp</span><i id="icon-toolset-genesis-logo" class="icon-toolset-genesis-logo"></i></span><span class="step size-36"><span class="letters">Pp</span><i id="icon-toolset-genesis-logo" class="icon-toolset-genesis-logo"></i></span><span class="step size-48"><span class="letters">Pp</span><i id="icon-toolset-genesis-logo" class="icon-toolset-genesis-logo"></i></span><span class="step size-60"><span class="letters">Pp</span><i id="icon-toolset-genesis-logo" class="icon-toolset-genesis-logo"></i></span><span class="step size-72"><span class="letters">Pp</span><i id="icon-toolset-genesis-logo" class="icon-toolset-genesis-logo"></i></span>
library/toolset/onthego-resources/onthegosystems-icons/fonts/onthegosystems-icons_91cc76c6ec19609541b007a2169151af.woff DELETED
Binary file
library/toolset/onthego-resources/onthegosystems-icons/fonts/{onthegosystems-icons_91cc76c6ec19609541b007a2169151af.eot → onthegosystems-icons_c2bf5434fb5ba6db313a98fb4e1bf347.eot} RENAMED
Binary file
library/toolset/onthego-resources/onthegosystems-icons/fonts/{onthegosystems-icons_91cc76c6ec19609541b007a2169151af.svg → onthegosystems-icons_c2bf5434fb5ba6db313a98fb4e1bf347.svg} RENAMED
@@ -1,13 +1,13 @@
1
  <?xml version="1.0" standalone="no"?>
2
  <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
3
  <!--
4
- 2016-8-2: Created with FontForge (http://fontforge.org)
5
  -->
6
  <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1">
7
  <metadata>
8
- Created by FontForge 20150302 at Tue Aug 2 15:43:41 2016
9
  By Riccardo Strobbia
10
- Copyright (c) 2016, Riccardo Strobbia
11
  </metadata>
12
  <defs>
13
  <font id="onthegosystems-icons" horiz-adv-x="512" >
@@ -19,10 +19,10 @@ Copyright (c) 2016, Riccardo Strobbia
19
  panose-1="2 0 5 3 0 0 0 0 0 0"
20
  ascent="448"
21
  descent="-64"
22
- bbox="11.8936 -52.7617 2082.65 436.777"
23
  underline-thickness="25.6"
24
  underline-position="-51.2"
25
- unicode-range="U+0020-F136"
26
  />
27
  <missing-glyph />
28
  <glyph glyph-name="space" unicode=" " horiz-adv-x="200"
@@ -65,6 +65,11 @@ c2.45801 -6.91113 5.85645 -12.748 10.1953 -17.5098c4.33984 -4.76172 9.48535 -8.3
65
  <glyph glyph-name="uniF130" unicode="&#xf130;"
66
  d="M204.961 -49.2695v102.285h421.251v-102.285h-421.251zM204.961 330.962v102.331h421.251v-102.331h-421.251zM204.961 140.846v102.331h421.251v-102.331h-421.251zM18.5225 -49.2695v102.285h133.262v-102.285h-133.262zM18.5225 330.962v102.331h133.262v-102.331
67
  h-133.262zM18.5225 140.846v102.331h133.262v-102.331h-133.262z" />
 
 
 
 
 
68
  <glyph glyph-name="uniF135" unicode="&#xf135;"
69
  d="M672.731 -44.9854v476.32h476.538v-476.32h-476.538zM60.1328 -44.9854v476.32h476.451v-476.32h-476.451zM1308.57 -44.9854v476.32h476.581v-476.32h-476.581zM264.289 263.99h-0.783203l-50.2998 -24.0186l-10.3555 46.4268l70.4014 32.5469h50.8652v-264.551
70
  h-59.8281v209.596zM826.414 54.3945v37.4199l33.7646 30.458c58.1758 52.2139 86.2842 81.8018 86.6758 112.738c0.0332031 0.585938 0.0595703 1.53613 0.0595703 2.12207c0 20.584 -16.7051 37.2891 -37.2891 37.2891c-1.63574 0 -4.27539 -0.208984 -5.89062 -0.467773
@@ -386,11 +391,9 @@ d="M69.9062 -52.7617l-58.0127 58.0127l315.346 315.347l58.0137 -58.0127zM440.184
386
  c-12.873 12.873 2.03027 18.8018 14.8857 31.6562c12.8545 12.8555 18.7832 27.7773 31.6562 14.9043zM512.218 379.737l18.4023 -24.6943l-30.7861 0.43457l-17.7686 -25.1113l-9.11914 29.3359l-29.3184 9.12012l25.0752 17.7861l-0.398438 30.75l24.6943 -18.4023
387
  l29.0635 9.88086zM327.826 405.41l15.3203 -20.5244l-25.6191 0.327148l-14.8125 -20.9238l-7.5791 24.4775l-24.4766 7.57812l20.9229 14.8135l-0.326172 25.6191l20.5244 -15.3213l24.2588 8.23145zM476.463 268.322l9.33789 -12.5283l-15.6289 0.235352
388
  l-8.95703 -12.6914l-4.58691 14.8311l-14.8672 4.62305l12.71 8.93848l-0.236328 15.6289l12.5293 -9.33691l14.7041 5.00391z" />
389
- <glyph glyph-name="uniF125" unicode="&#xf125;"
390
- d="M270.061 278.381c47.4307 0 85.7793 -38.4131 85.7793 -85.7471c0 -62.7969 -72.333 -135.693 -75.4814 -138.938c-2.5791 -2.5791 -6.49609 -4.49316 -10.2979 -4.49316c-3.82715 0 -7.01367 1.34375 -10.2139 4.49316
391
- c-3.19434 3.23828 -75.5264 76.1406 -75.5264 138.938c0 47.3281 38.4062 85.7471 85.7402 85.7471zM420.448 16.5762c-1.90137 -3.16211 -5.05664 -4.49316 -8.9668 -4.49316h-279.642c-3.2002 0 -7.02051 1.90723 -8.97266 4.49316
392
- c-1.90723 3.23828 -2.53418 6.38672 -0.614258 9.63184l33.3057 79.2959c1.90039 3.92285 5.10742 6.49609 9.58105 6.49609h31.9863v-21.1777h-24.9658l-24.96 -58.2275h248.346l-25.0049 58.2275h-28.1406v21.1777h34.5469c4.47363 0 7.73145 -2.56641 9.63184 -6.49609
393
- l33.3125 -79.2959c3.14844 -3.24512 2.47656 -7.05273 0.556641 -9.63184zM233.6 195.2c0 -20.7656 16.835 -37.6006 37.6006 -37.6006s37.5996 16.835 37.5996 37.6006s-16.834 37.5996 -37.5996 37.5996s-37.6006 -16.834 -37.6006 -37.5996z" />
394
  <glyph glyph-name="uniF12C" unicode="&#xf12c;"
395
  d="M20.8887 280.548v149.814h564.48v-149.814h-564.48zM20.8887 114.135v88.8184h564.48v-88.8184h-564.48zM20.8887 -46.3623v88.8184h564.48v-88.8184h-564.48z" />
396
  <glyph glyph-name="uniF12A" unicode="&#xf12a;"
1
  <?xml version="1.0" standalone="no"?>
2
  <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
3
  <!--
4
+ 2017-1-23: Created with FontForge (http://fontforge.org)
5
  -->
6
  <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1">
7
  <metadata>
8
+ Created by FontForge 20150302 at Mon Jan 23 11:13:46 2017
9
  By Riccardo Strobbia
10
+ Copyright (c) 2017, Riccardo Strobbia
11
  </metadata>
12
  <defs>
13
  <font id="onthegosystems-icons" horiz-adv-x="512" >
19
  panose-1="2 0 5 3 0 0 0 0 0 0"
20
  ascent="448"
21
  descent="-64"
22
+ bbox="0 -64 2082.65 448"
23
  underline-thickness="25.6"
24
  underline-position="-51.2"
25
+ unicode-range="U+0020-F137"
26
  />
27
  <missing-glyph />
28
  <glyph glyph-name="space" unicode=" " horiz-adv-x="200"
65
  <glyph glyph-name="uniF130" unicode="&#xf130;"
66
  d="M204.961 -49.2695v102.285h421.251v-102.285h-421.251zM204.961 330.962v102.331h421.251v-102.331h-421.251zM204.961 140.846v102.331h421.251v-102.331h-421.251zM18.5225 -49.2695v102.285h133.262v-102.285h-133.262zM18.5225 330.962v102.331h133.262v-102.331
67
  h-133.262zM18.5225 140.846v102.331h133.262v-102.331h-133.262z" />
68
+ <glyph glyph-name="uniF125" unicode="&#xf125;"
69
+ d="M270.061 278.381c47.4307 0 85.7793 -38.4131 85.7793 -85.7471c0 -62.7969 -72.333 -135.693 -75.4814 -138.938c-2.5791 -2.5791 -6.49609 -4.49316 -10.2979 -4.49316c-3.82715 0 -7.01367 1.34375 -10.2139 4.49316
70
+ c-3.19434 3.23828 -75.5264 76.1406 -75.5264 138.938c0 47.3281 38.4062 85.7471 85.7402 85.7471zM420.448 16.5762c-1.90137 -3.16211 -5.05664 -4.49316 -8.9668 -4.49316h-279.642c-3.2002 0 -7.02051 1.90723 -8.97266 4.49316
71
+ c-1.90723 3.23828 -2.53418 6.38672 -0.614258 9.63184l33.3057 79.2959c1.90039 3.92285 5.10742 6.49609 9.58105 6.49609h31.9863v-21.1777h-24.9658l-24.96 -58.2275h248.346l-25.0049 58.2275h-28.1406v21.1777h34.5469c4.47363 0 7.73145 -2.56641 9.63184 -6.49609
72
+ l33.3125 -79.2959c3.14844 -3.24512 2.47656 -7.05273 0.556641 -9.63184zM233.6 195.2c0 -20.7656 16.835 -37.6006 37.6006 -37.6006s37.5996 16.835 37.5996 37.6006s-16.834 37.5996 -37.5996 37.5996s-37.6006 -16.834 -37.6006 -37.5996z" />
73
  <glyph glyph-name="uniF135" unicode="&#xf135;"
74
  d="M672.731 -44.9854v476.32h476.538v-476.32h-476.538zM60.1328 -44.9854v476.32h476.451v-476.32h-476.451zM1308.57 -44.9854v476.32h476.581v-476.32h-476.581zM264.289 263.99h-0.783203l-50.2998 -24.0186l-10.3555 46.4268l70.4014 32.5469h50.8652v-264.551
75
  h-59.8281v209.596zM826.414 54.3945v37.4199l33.7646 30.458c58.1758 52.2139 86.2842 81.8018 86.6758 112.738c0.0332031 0.585938 0.0595703 1.53613 0.0595703 2.12207c0 20.584 -16.7051 37.2891 -37.2891 37.2891c-1.63574 0 -4.27539 -0.208984 -5.89062 -0.467773
391
  c-12.873 12.873 2.03027 18.8018 14.8857 31.6562c12.8545 12.8555 18.7832 27.7773 31.6562 14.9043zM512.218 379.737l18.4023 -24.6943l-30.7861 0.43457l-17.7686 -25.1113l-9.11914 29.3359l-29.3184 9.12012l25.0752 17.7861l-0.398438 30.75l24.6943 -18.4023
392
  l29.0635 9.88086zM327.826 405.41l15.3203 -20.5244l-25.6191 0.327148l-14.8125 -20.9238l-7.5791 24.4775l-24.4766 7.57812l20.9229 14.8135l-0.326172 25.6191l20.5244 -15.3213l24.2588 8.23145zM476.463 268.322l9.33789 -12.5283l-15.6289 0.235352
393
  l-8.95703 -12.6914l-4.58691 14.8311l-14.8672 4.62305l12.71 8.93848l-0.236328 15.6289l12.5293 -9.33691l14.7041 5.00391z" />
394
+ <glyph glyph-name="uniF137" unicode="&#xf137;"
395
+ d="M340.283 362.665h85.0703v-426.665h-425.354v426.665h85.0703v85.335h85.0713v-85.335h85.0703v85.335h85.0713v-85.335zM65.9414 104.803l65.2051 -65.4062v49.0303h114.185v32.752h-114.185v49.0293zM294.207 206.789h-114.081v-32.752h114.081v-49.0303
396
+ l65.2051 65.4062l-65.2051 65.4053v-49.0293zM294.207 219.341z" />
 
 
397
  <glyph glyph-name="uniF12C" unicode="&#xf12c;"
398
  d="M20.8887 280.548v149.814h564.48v-149.814h-564.48zM20.8887 114.135v88.8184h564.48v-88.8184h-564.48zM20.8887 -46.3623v88.8184h564.48v-88.8184h-564.48z" />
399
  <glyph glyph-name="uniF12A" unicode="&#xf12a;"
library/toolset/onthego-resources/onthegosystems-icons/fonts/{onthegosystems-icons_91cc76c6ec19609541b007a2169151af.ttf → onthegosystems-icons_c2bf5434fb5ba6db313a98fb4e1bf347.ttf} RENAMED
Binary file
library/toolset/onthego-resources/onthegosystems-icons/fonts/onthegosystems-icons_c2bf5434fb5ba6db313a98fb4e1bf347.woff ADDED
Binary file
library/toolset/onthego-resources/onthegosystems-icons/vectors/toolset-export.svg ADDED
@@ -0,0 +1,45 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
3
+ <svg version="1.1" baseProfile="tiny" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
4
+ x="0px" y="0px" viewBox="0 0 108 130" xml:space="preserve">
5
+ <g>
6
+ <g>
7
+ <polygon fill="#F05A29" points="86.4,21.667 86.4,0 64.8,0 64.8,21.667 43.2,21.667 43.2,0 21.6,0 21.6,21.667 0,21.667 0,130
8
+ 108,130 108,21.667 "/>
9
+ </g>
10
+ <g>
11
+ <path fill="#FFFFFF" d="M16.743,87.14l16.556,16.607V91.298h28.992v-8.316H33.299V70.533L16.743,87.14z M74.701,61.245H45.735
12
+ v8.316h28.966V82.01l16.556-16.607L74.701,48.796V61.245z M74.701,58.058"/>
13
+ </g>
14
+ </g>
15
+ <g>
16
+ </g>
17
+ <g>
18
+ </g>
19
+ <g>
20
+ </g>
21
+ <g>
22
+ </g>
23
+ <g>
24
+ </g>
25
+ <g>
26
+ </g>
27
+ <g>
28
+ </g>
29
+ <g>
30
+ </g>
31
+ <g>
32
+ </g>
33
+ <g>
34
+ </g>
35
+ <g>
36
+ </g>
37
+ <g>
38
+ </g>
39
+ <g>
40
+ </g>
41
+ <g>
42
+ </g>
43
+ <g>
44
+ </g>
45
+ </svg>
library/toolset/toolset-common/autoload_classmap.php ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ return array(
4
+ 'Toolset_Date_Utils' => TOOLSET_COMMON_PATH . '/inc/autoloaded/date_utils.php',
5
+ 'Toolset_Result' => TOOLSET_COMMON_PATH . '/inc/autoloaded/result.php',
6
+ 'Toolset_Result_Set' => TOOLSET_COMMON_PATH . '/inc/autoloaded/result_set.php',
7
+ 'Toolset_Result_Updated' => TOOLSET_COMMON_PATH . '/inc/autoloaded/result_updated.php',
8
+ 'Toolset_Admin_Notice_Abstract' => TOOLSET_COMMON_PATH . '/utility/admin/notice/abstract.php',
9
+ 'Toolset_Admin_Notice_Error' => TOOLSET_COMMON_PATH . '/utility/admin/notice/error.php',
10
+ 'Toolset_Admin_Notice_Interface' => TOOLSET_COMMON_PATH . '/utility/admin/notice/interface.php',
11
+ 'Toolset_Admin_Notice_Required_Action' => TOOLSET_COMMON_PATH . '/utility/admin/notice/required/action.php',
12
+ 'Toolset_Admin_Notice_Layouts_Help' => TOOLSET_COMMON_PATH . '/utility/admin/notice/layouts/help.php',
13
+ 'Toolset_Admin_Notice_Success' => TOOLSET_COMMON_PATH . '/utility/admin/notice/success.php',
14
+ 'Toolset_Admin_Notice_Warning' => TOOLSET_COMMON_PATH . '/utility/admin/notice/warning.php',
15
+ 'Toolset_Admin_Notice_Dismissible' => TOOLSET_COMMON_PATH . '/utility/admin/notice/dismissible.php',
16
+ 'Toolset_Admin_Notices_Manager' => TOOLSET_COMMON_PATH . '/utility/admin/notices/manager.php',
17
+ 'Toolset_Common_Autoloader' => TOOLSET_COMMON_PATH . '/utility/autoloader.php',
18
+ 'Toolset_Condition_Interface' => TOOLSET_COMMON_PATH . '/utility/condition/interface.php',
19
+ 'Toolset_Condition_Plugin_Access_Active' => TOOLSET_COMMON_PATH . '/utility/condition/plugin/access/active.php',
20
+ 'Toolset_Condition_Plugin_Access_Missing' => TOOLSET_COMMON_PATH . '/utility/condition/plugin/access/missing.php',
21
+ 'Toolset_Condition_Plugin_Cred_Active' => TOOLSET_COMMON_PATH . '/utility/condition/plugin/cred/active.php',
22
+ 'Toolset_Condition_Plugin_Cred_Missing' => TOOLSET_COMMON_PATH . '/utility/condition/plugin/cred/missing.php',
23
+ 'Toolset_Condition_Plugin_Layouts_Active' => TOOLSET_COMMON_PATH . '/utility/condition/plugin/layouts/active.php',
24
+ 'Toolset_Condition_Plugin_Layouts_Missing' => TOOLSET_COMMON_PATH . '/utility/condition/plugin/layouts/missing.php',
25
+ 'Toolset_Condition_Plugin_Layouts_No_Items' => TOOLSET_COMMON_PATH . '/utility/condition/plugin/layouts/no-items.php',
26
+ 'Toolset_Condition_Plugin_Types_Active' => TOOLSET_COMMON_PATH . '/utility/condition/plugin/types/active.php',
27
+ 'Toolset_Condition_Plugin_Types_Missing' => TOOLSET_COMMON_PATH . '/utility/condition/plugin/types/missing.php',
28
+ 'Toolset_Condition_Plugin_Views_Active' => TOOLSET_COMMON_PATH . '/utility/condition/plugin/views/active.php',
29
+ 'Toolset_Condition_Plugin_Views_Missing' => TOOLSET_COMMON_PATH . '/utility/condition/plugin/views/missing.php',
30
+ 'Toolset_Condition_Plugin_Encrypted_No_Valid_Theme' => TOOLSET_COMMON_PATH . '/utility/condition/plugin/encrypted/no-valid-theme.php',
31
+ 'Toolset_Condition_Theme_Layouts_Support_Native_Available' => TOOLSET_COMMON_PATH . '/utility/condition/theme/layouts-support/native/available.php',
32
+ 'Toolset_Condition_Theme_Layouts_Support_Native_Missing' => TOOLSET_COMMON_PATH . '/utility/condition/theme/layouts-support/native/missing.php',
33
+ 'Toolset_Condition_Theme_Layouts_Support_Plugin_Available' => TOOLSET_COMMON_PATH . '/utility/condition/theme/layouts-support/plugin/available.php',
34
+ 'Toolset_Condition_Theme_Layouts_Support_Plugin_Missing' => TOOLSET_COMMON_PATH . '/utility/condition/theme/layouts-support/plugin/missing.php',
35
+ 'Toolset_Condition_Theme_Layouts_Support_Plugin_Not_Installed' => TOOLSET_COMMON_PATH . '/utility/condition/theme/layouts-support/plugin/not-installed.php',
36
+ 'Toolset_Condition_Theme_Layouts_Support_Plugin_Not_Active' => TOOLSET_COMMON_PATH . '/utility/condition/theme/layouts-support/plugin/not-active.php',
37
+ 'Toolset_Condition_Theme_Layouts_Support_Plugin_Active' => TOOLSET_COMMON_PATH . '/utility/condition/theme/layouts-support/plugin/active.php',
38
+ 'Toolset_Condition_Theme_Layouts_Support_Theme_Installed' => TOOLSET_COMMON_PATH . '/utility/condition/theme/layouts-support/theme/installed.php',
39
+ 'Toolset_Condition_Theme_Layouts_Support_Theme_Not_Active' => TOOLSET_COMMON_PATH . '/utility/condition/theme/layouts-support/theme/not-active.php',
40
+ 'Toolset_Condition_Theme_Layouts_Support_Theme_Active' => TOOLSET_COMMON_PATH . '/utility/condition/theme/layouts-support/theme/active.php',
41
+ 'Toolset_Condition_Theme_Toolset_Based_Active' => TOOLSET_COMMON_PATH . '/utility/condition/theme/toolset-based/active.php',
42
+ 'Toolset_Condition_Theme_Toolset_Based_Inactive' => TOOLSET_COMMON_PATH . '/utility/condition/theme/toolset-based/inactive.php',
43
+ 'Toolset_Condition_User_Role_Admin' => TOOLSET_COMMON_PATH . '/utility/condition/user/role/admin.php',
44
+ );
library/toolset/toolset-common/bootstrap.php CHANGED
@@ -14,6 +14,7 @@
14
  *
15
  * New sections can be added here, following the same structure.
16
  *
 
17
  * Note that you have available the following constants:
18
  * TOOLSET_COMMON_VERSION The Toolset Common version
19
  * TOOLSET_COMMON_PATH The path to the active Toolset Common directory
@@ -48,6 +49,8 @@ class Toolset_Common_Bootstrap {
48
  const TOOLSET_FORMS = 'toolset_forms';
49
  const TOOLSET_VISUAL_EDITOR = 'toolset_visual_editor';
50
  const TOOLSET_PARSER = 'toolset_parser';
 
 
51
  const TOOLSET_RESOURCES = 'toolset_res';
52
  const TOOLSET_LIBRARIES = 'toolset_lib';
53
  const TOOLSET_INCLUDES = 'toolset_inc';
@@ -86,10 +89,12 @@ class Toolset_Common_Bootstrap {
86
 
87
  /**
88
  * Action when the Toolset Common Library is completely loaded.
 
 
89
  *
90
- * @since m2m
91
  */
92
- do_action( 'toolset_common_loaded' );
93
  }
94
 
95
  /**
@@ -115,7 +120,7 @@ class Toolset_Common_Bootstrap {
115
 
116
  /**
117
  * Determine if a given section is already loaded.
118
- *
119
  * @param string $section_name
120
  * @return bool
121
  * @since 2.1
@@ -127,7 +132,7 @@ class Toolset_Common_Bootstrap {
127
 
128
  /**
129
  * Add a section name to the list of the loaded ones.
130
- *
131
  * @param string $section_name
132
  * @since 2.1
133
  */
@@ -138,8 +143,8 @@ class Toolset_Common_Bootstrap {
138
 
139
  /**
140
  * Decide whether a particular section needs to be loaded.
141
- *
142
- * @param string[] $sections_to_load Array of sections that should be loaded, or empty array to load all of them.
143
  * @param string $section_name Name of a section.
144
  * @return bool
145
  * @since 2.1
@@ -151,7 +156,7 @@ class Toolset_Common_Bootstrap {
151
 
152
  /**
153
  * Apply a filter on the array of names loaded sections.
154
- *
155
  * @param string $filter_name Name of the filter.
156
  * @since 2.1
157
  */
@@ -159,7 +164,7 @@ class Toolset_Common_Bootstrap {
159
  self::$sections_loaded = apply_filters( $filter_name, self::$sections_loaded );
160
  }
161
 
162
-
163
  /**
164
  * Load sections on demand
165
  *
@@ -190,6 +195,16 @@ class Toolset_Common_Bootstrap {
190
  $this->register_parser();
191
  }
192
 
 
 
 
 
 
 
 
 
 
 
193
  }
194
 
195
  public function register_res() {
@@ -209,22 +224,22 @@ class Toolset_Common_Bootstrap {
209
 
210
  $this->add_section_loaded( self::TOOLSET_LIBRARIES );
211
 
212
- if ( ! class_exists( 'ICL_Array2XML' ) ) {
213
  require_once( TOOLSET_COMMON_PATH . '/lib/array2xml.php' );
214
  }
215
- if ( ! class_exists( 'Zip' ) ) {
216
  require_once( TOOLSET_COMMON_PATH . '/lib/Zip.php' );
217
  }
218
  if ( ! function_exists( 'adodb_date' ) ) {
219
  require_once( TOOLSET_COMMON_PATH . '/lib/adodb-time.inc.php' );
220
  }
221
- if ( ! class_exists( 'Toolset_CakePHP_Validation' ) ) {
222
  require_once( TOOLSET_COMMON_PATH . '/lib/cakephp.validation.class.php' );
223
  }
224
- if ( ! class_exists( 'Toolset_Validate' ) ) {
225
  require_once( TOOLSET_COMMON_PATH . '/lib/validate.class.php' );
226
  }
227
- if ( ! class_exists( 'Toolset_Enlimbo_Forms' ) ) {
228
  require_once( TOOLSET_COMMON_PATH . '/lib/enlimbo.forms.class.php' );
229
  }
230
 
@@ -238,60 +253,83 @@ class Toolset_Common_Bootstrap {
238
 
239
  $this->add_section_loaded( self::TOOLSET_INCLUDES );
240
 
241
- if ( ! class_exists( 'Toolset_Settings' ) ) {
 
 
242
  require_once( TOOLSET_COMMON_PATH . '/inc/toolset.settings.class.php' );
243
  $this->settings = Toolset_Settings::get_instance();
244
  }
245
- if ( ! class_exists( 'Toolset_Localization' ) ) {
246
  require_once( TOOLSET_COMMON_PATH . '/inc/toolset.localization.class.php' );
247
  $this->localization = new Toolset_Localization();
248
  }
249
- if ( ! class_exists( 'Toolset_WPLogger' ) ) {
250
  require_once( TOOLSET_COMMON_PATH . '/inc/toolset.wplogger.class.php' );
251
  }
252
- if ( ! class_exists( 'Toolset_Object_Relationship' ) ) {
253
  require_once( TOOLSET_COMMON_PATH . '/inc/toolset.object.relationship.class.php' );
254
  $this->object_relationship = Toolset_Object_Relationship::get_instance();
255
  }
256
- if ( ! class_exists( 'Toolset_Settings_Screen' ) ) {
257
  require_once( TOOLSET_COMMON_PATH . '/inc/toolset.settings.screen.class.php' );
258
  $this->settings_screen = new Toolset_Settings_Screen();
259
  }
260
- if ( ! class_exists( 'Toolset_Export_Import_Screen' ) ) {
261
  require_once( TOOLSET_COMMON_PATH . '/inc/toolset.export.import.screen.class.php' );
262
  $this->export_import_screen = new Toolset_Export_Import_Screen();
263
  }
264
- if ( ! class_exists( 'Toolset_Menu' ) ) {
265
  require_once( TOOLSET_COMMON_PATH . '/inc/toolset.menu.class.php' );
266
  $this->menu = new Toolset_Menu();
267
  }
268
- if ( ! class_exists( 'Toolset_Promotion' ) ) {
269
  require_once( TOOLSET_COMMON_PATH . '/inc/toolset.promotion.class.php' );
270
  $this->promotion = new Toolset_Promotion();
271
  }
272
- if ( ! class_exists( 'Toolset_Admin_Bar_Menu' ) ) {
273
  require_once( TOOLSET_COMMON_PATH . '/inc/toolset.admin.bar.menu.class.php' );
 
 
 
 
274
  global $toolset_admin_bar_menu;
275
  $toolset_admin_bar_menu = Toolset_Admin_Bar_Menu::get_instance();
276
  }
277
- if ( ! class_exists( 'Toolset_Internal_Compatibility' ) ) {
278
  require_once( TOOLSET_COMMON_PATH . '/inc/toolset.internal.compatibility.class.php' );
279
  $this->internal_compatibility = new Toolset_Internal_Compatibility();
280
  }
281
- if ( ! class_exists( 'Toolset_WPML_Compatibility' ) ) {
282
  require_once( TOOLSET_COMMON_PATH . '/inc/toolset.wpml.compatibility.class.php' );
283
- $this->wpml_compatibility = new Toolset_WPML_Compatibility();
284
  }
285
- if ( ! class_exists( 'Toolset_Relevanssi_Compatibility' ) ) {
286
  require_once( TOOLSET_COMMON_PATH . '/inc/toolset.relevanssi.compatibility.class.php' );
287
  $this->relevanssi_compatibility = new Toolset_Relevanssi_Compatibility();
288
  }
289
 
290
- if ( ! class_exists( 'Toolset_CssComponent' ) ) {
291
  require_once( TOOLSET_COMMON_PATH . '/inc/toolset.css.component.class.php' );
292
  $toolset_bs_component = Toolset_CssComponent::getInstance();
293
  }
294
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
295
  require_once( TOOLSET_COMMON_PATH . '/inc/toolset.compatibility.php' );
296
  require_once( TOOLSET_COMMON_PATH . '/inc/toolset.function.helpers.php' );
297
  require_once( TOOLSET_COMMON_PATH . '/deprecated.php' );
@@ -340,18 +378,26 @@ class Toolset_Common_Bootstrap {
340
  }
341
 
342
  public function register_toolset_forms() {
343
-
344
  if ( ! $this->is_section_loaded( self::TOOLSET_FORMS ) ) {
345
  $this->add_section_loaded( self::TOOLSET_FORMS );
346
- if ( ! class_exists( 'WPToolset_Forms_Bootstrap' ) ) {
347
  require_once TOOLSET_COMMON_PATH . '/toolset-forms/bootstrap.php';
348
  }
 
 
 
 
 
 
 
 
349
  $this->apply_filters_on_sections_loaded( 'toolset_register_forms_section' );
350
  }
351
  }
352
 
353
  public function register_visual_editor() {
354
-
355
  if ( ! $this->is_section_loaded( self::TOOLSET_VISUAL_EDITOR ) ) {
356
  $this->add_section_loaded( self::TOOLSET_VISUAL_EDITOR );
357
  require_once( TOOLSET_COMMON_PATH . '/visual-editor/editor-addon-generic.class.php' );
@@ -362,16 +408,59 @@ class Toolset_Common_Bootstrap {
362
  }
363
 
364
  public function register_parser() {
365
-
366
  if ( ! $this->is_section_loaded( self::TOOLSET_PARSER ) ) {
367
  $this->add_section_loaded( self::TOOLSET_PARSER );
368
- if ( ! class_exists( 'Toolset_Regex' ) ) {
369
  require_once( TOOLSET_COMMON_PATH . '/expression-parser/parser.php' );
370
  }
371
  $this->apply_filters_on_sections_loaded( 'toolset_register_parsers_section' );
372
  }
373
  }
374
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
375
  public function clear_settings_instance() {
376
  Toolset_Settings::clear_instance();
377
  }
14
  *
15
  * New sections can be added here, following the same structure.
16
  *
17
+ *
18
  * Note that you have available the following constants:
19
  * TOOLSET_COMMON_VERSION The Toolset Common version
20
  * TOOLSET_COMMON_PATH The path to the active Toolset Common directory
49
  const TOOLSET_FORMS = 'toolset_forms';
50
  const TOOLSET_VISUAL_EDITOR = 'toolset_visual_editor';
51
  const TOOLSET_PARSER = 'toolset_parser';
52
+ const TOOLSET_USER_EDITOR = 'toolset_user_editor';
53
+ const TOOLSET_SHORTCODE_GENERATOR = 'toolset_shortcode_generator';
54
  const TOOLSET_RESOURCES = 'toolset_res';
55
  const TOOLSET_LIBRARIES = 'toolset_lib';
56
  const TOOLSET_INCLUDES = 'toolset_inc';
89
 
90
  /**
91
  * Action when the Toolset Common Library is completely loaded.
92
+ *
93
+ * @param Toolset_Common_Bootstrap instance
94
  *
95
+ * @since 2.3.0
96
  */
97
+ do_action( 'toolset_common_loaded', $this );
98
  }
99
 
100
  /**
120
 
121
  /**
122
  * Determine if a given section is already loaded.
123
+ *
124
  * @param string $section_name
125
  * @return bool
126
  * @since 2.1
132
 
133
  /**
134
  * Add a section name to the list of the loaded ones.
135
+ *
136
  * @param string $section_name
137
  * @since 2.1
138
  */
143
 
144
  /**
145
  * Decide whether a particular section needs to be loaded.
146
+ *
147
+ * @param string[] $sections_to_load Array of sections that should be loaded, or empty array to load all of them.
148
  * @param string $section_name Name of a section.
149
  * @return bool
150
  * @since 2.1
156
 
157
  /**
158
  * Apply a filter on the array of names loaded sections.
159
+ *
160
  * @param string $filter_name Name of the filter.
161
  * @since 2.1
162
  */
164
  self::$sections_loaded = apply_filters( $filter_name, self::$sections_loaded );
165
  }
166
 
167
+
168
  /**
169
  * Load sections on demand
170
  *
195
  $this->register_parser();
196
  }
197
 
198
+ // Maybe register the editor addon
199
+ if ( $this->should_load_section( $load, self::TOOLSET_USER_EDITOR ) ) {
200
+ $this->register_user_editor();
201
+ }
202
+
203
+ // Maybe register the editor addon
204
+ if ( $this->should_load_section( $load, self::TOOLSET_SHORTCODE_GENERATOR ) ) {
205
+ $this->register_shortcode_generator();
206
+ }
207
+
208
  }
209
 
210
  public function register_res() {
224
 
225
  $this->add_section_loaded( self::TOOLSET_LIBRARIES );
226
 
227
+ if ( ! class_exists( 'ICL_Array2XML', false ) ) {
228
  require_once( TOOLSET_COMMON_PATH . '/lib/array2xml.php' );
229
  }
230
+ if ( ! class_exists( 'Zip', false ) ) {
231
  require_once( TOOLSET_COMMON_PATH . '/lib/Zip.php' );
232
  }
233
  if ( ! function_exists( 'adodb_date' ) ) {
234
  require_once( TOOLSET_COMMON_PATH . '/lib/adodb-time.inc.php' );
235
  }
236
+ if ( ! class_exists( 'Toolset_CakePHP_Validation', false ) ) {
237
  require_once( TOOLSET_COMMON_PATH . '/lib/cakephp.validation.class.php' );
238
  }
239
+ if ( ! class_exists( 'Toolset_Validate', false ) ) {
240
  require_once( TOOLSET_COMMON_PATH . '/lib/validate.class.php' );
241
  }
242
+ if ( ! class_exists( 'Toolset_Enlimbo_Forms', false ) ) {
243
  require_once( TOOLSET_COMMON_PATH . '/lib/enlimbo.forms.class.php' );
244
  }
245
 
253
 
254
  $this->add_section_loaded( self::TOOLSET_INCLUDES );
255
 
256
+ $this->register_autoloaded_classes();
257
+
258
+ if ( ! class_exists( 'Toolset_Settings', false ) ) {
259
  require_once( TOOLSET_COMMON_PATH . '/inc/toolset.settings.class.php' );
260
  $this->settings = Toolset_Settings::get_instance();
261
  }
262
+ if ( ! class_exists( 'Toolset_Localization', false ) ) {
263
  require_once( TOOLSET_COMMON_PATH . '/inc/toolset.localization.class.php' );
264
  $this->localization = new Toolset_Localization();
265
  }
266
+ if ( ! class_exists( 'Toolset_WPLogger', false ) ) {
267
  require_once( TOOLSET_COMMON_PATH . '/inc/toolset.wplogger.class.php' );
268
  }
269
+ if ( ! class_exists( 'Toolset_Object_Relationship', false ) ) {
270
  require_once( TOOLSET_COMMON_PATH . '/inc/toolset.object.relationship.class.php' );
271
  $this->object_relationship = Toolset_Object_Relationship::get_instance();
272
  }
273
+ if ( ! class_exists( 'Toolset_Settings_Screen', false ) ) {
274
  require_once( TOOLSET_COMMON_PATH . '/inc/toolset.settings.screen.class.php' );
275
  $this->settings_screen = new Toolset_Settings_Screen();
276
  }
277
+ if ( ! class_exists( 'Toolset_Export_Import_Screen', false ) ) {
278
  require_once( TOOLSET_COMMON_PATH . '/inc/toolset.export.import.screen.class.php' );
279
  $this->export_import_screen = new Toolset_Export_Import_Screen();
280
  }
281
+ if ( ! class_exists( 'Toolset_Menu', false ) ) {
282
  require_once( TOOLSET_COMMON_PATH . '/inc/toolset.menu.class.php' );
283
  $this->menu = new Toolset_Menu();
284
  }
285
+ if ( ! class_exists( 'Toolset_Promotion', false ) ) {
286
  require_once( TOOLSET_COMMON_PATH . '/inc/toolset.promotion.class.php' );
287
  $this->promotion = new Toolset_Promotion();
288
  }
289
+ if ( ! class_exists( 'Toolset_Admin_Bar_Menu', false ) ) {
290
  require_once( TOOLSET_COMMON_PATH . '/inc/toolset.admin.bar.menu.class.php' );
291
+ /**
292
+ * @var Toolset_Admin_Bar_Menu $toolset_admin_bar_menu
293
+ * @deprecated Please use Toolset_Admin_Bar_Menu::get_instance() instead of this global variable.
294
+ */
295
  global $toolset_admin_bar_menu;
296
  $toolset_admin_bar_menu = Toolset_Admin_Bar_Menu::get_instance();
297
  }
298
+ if ( ! class_exists( 'Toolset_Internal_Compatibility', false ) ) {
299
  require_once( TOOLSET_COMMON_PATH . '/inc/toolset.internal.compatibility.class.php' );
300
  $this->internal_compatibility = new Toolset_Internal_Compatibility();
301
  }
302
+ if ( ! class_exists( 'Toolset_WPML_Compatibility', false ) ) {
303
  require_once( TOOLSET_COMMON_PATH . '/inc/toolset.wpml.compatibility.class.php' );
304
+ Toolset_WPML_Compatibility::initialize();
305
  }
306
+ if ( ! class_exists( 'Toolset_Relevanssi_Compatibility', false ) ) {
307
  require_once( TOOLSET_COMMON_PATH . '/inc/toolset.relevanssi.compatibility.class.php' );
308
  $this->relevanssi_compatibility = new Toolset_Relevanssi_Compatibility();
309
  }
310
 
311
+ if ( ! class_exists( 'Toolset_CssComponent', false ) ) {
312
  require_once( TOOLSET_COMMON_PATH . '/inc/toolset.css.component.class.php' );
313
  $toolset_bs_component = Toolset_CssComponent::getInstance();
314
  }
315
 
316
+ if ( ! class_exists( 'Toolset_Bootstrap_Loader', false ) ) {
317
+ require_once( TOOLSET_COMMON_PATH . '/inc/toolset.bootstrap.loader.class.php' );
318
+ $toolset_load_bootstrap = Toolset_Bootstrap_Loader::getInstance();
319
+ }
320
+
321
+ // Load Admin Notices Manager
322
+ if( ! class_exists( 'Toolset_Admin_Notices_Manager', false ) ) {
323
+ require_once( TOOLSET_COMMON_PATH . '/utility/admin/notices/manager.php' );
324
+ Toolset_Admin_Notices_Manager::init();
325
+ }
326
+
327
+ // Load Admin Notices Controller (user of our Toolset_Admin_Notices_Manager)
328
+ if( ! class_exists( 'Toolset_Controller_Admin_Notices', false ) ) {
329
+ require_once( TOOLSET_COMMON_PATH . '/inc/controller/admin/notices.php' );
330
+ new Toolset_Controller_Admin_Notices();
331
+ }
332
+
333
  require_once( TOOLSET_COMMON_PATH . '/inc/toolset.compatibility.php' );
334
  require_once( TOOLSET_COMMON_PATH . '/inc/toolset.function.helpers.php' );
335
  require_once( TOOLSET_COMMON_PATH . '/deprecated.php' );
378
  }
379
 
380
  public function register_toolset_forms() {
381
+
382
  if ( ! $this->is_section_loaded( self::TOOLSET_FORMS ) ) {
383
  $this->add_section_loaded( self::TOOLSET_FORMS );
384
+ if ( ! class_exists( 'WPToolset_Forms_Bootstrap', false ) ) {
385
  require_once TOOLSET_COMMON_PATH . '/toolset-forms/bootstrap.php';
386
  }
387
+
388
+ // It is possible to regenerate the classmap with Zend framework.
389
+ //
390
+ // cd toolset-forms
391
+ // /.../ZendFramework/bin/classmap_generator.php --overwrite
392
+ $classmap = include( TOOLSET_COMMON_PATH . '/toolset-forms/autoload_classmap.php' );
393
+ do_action( 'toolset_register_classmap', $classmap );
394
+
395
  $this->apply_filters_on_sections_loaded( 'toolset_register_forms_section' );
396
  }
397
  }
398
 
399
  public function register_visual_editor() {
400
+
401
  if ( ! $this->is_section_loaded( self::TOOLSET_VISUAL_EDITOR ) ) {
402
  $this->add_section_loaded( self::TOOLSET_VISUAL_EDITOR );
403
  require_once( TOOLSET_COMMON_PATH . '/visual-editor/editor-addon-generic.class.php' );
408
  }
409
 
410
  public function register_parser() {
411
+
412
  if ( ! $this->is_section_loaded( self::TOOLSET_PARSER ) ) {
413
  $this->add_section_loaded( self::TOOLSET_PARSER );
414
+ if ( ! class_exists( 'Toolset_Regex', false ) ) {
415
  require_once( TOOLSET_COMMON_PATH . '/expression-parser/parser.php' );
416
  }
417
  $this->apply_filters_on_sections_loaded( 'toolset_register_parsers_section' );
418
  }
419
  }
420
 
421
+
422
+ public function register_user_editor() {
423
+
424
+ if ( ! $this->is_section_loaded( self::TOOLSET_USER_EDITOR ) ) {
425
+ $this->add_section_loaded( self::TOOLSET_USER_EDITOR );
426
+ require_once( TOOLSET_COMMON_PATH . '/user-editors/beta.php' );
427
+ $this->apply_filters_on_sections_loaded( 'toolset_register_user_editor_section' );
428
+ }
429
+ }
430
+
431
+ public function register_shortcode_generator() {
432
+
433
+ if ( ! $this->is_section_loaded( self::TOOLSET_SHORTCODE_GENERATOR ) ) {
434
+ $this->add_section_loaded( self::TOOLSET_SHORTCODE_GENERATOR );
435
+ require_once( TOOLSET_COMMON_PATH . '/inc/toolset.shortcode.generator.class.php' );
436
+ $this->apply_filters_on_sections_loaded( 'toolset_register_shortcode_generator_section' );
437
+ }
438
+ }
439
+
440
+
441
+ /**
442
+ * Add classes from the inc/autoloaded directory to the autoloader classmap.
443
+ *
444
+ * @since 2.3
445
+ */
446
+ private function register_autoloaded_classes() {
447
+ $autoload_classmap_file = TOOLSET_COMMON_PATH . '/autoload_classmap.php';
448
+
449
+ if( ! is_file( $autoload_classmap_file ) ) {
450
+ // abort if file does not exist
451
+ return;
452
+ }
453
+
454
+ $autoload_classmap = include( $autoload_classmap_file );
455
+
456
+ if( is_array( $autoload_classmap ) ) {
457
+ // Register autoloaded classes.
458
+ $autoloader = Toolset_Common_Autoloader::get_instance();
459
+ $autoloader->register_classmap( $autoload_classmap );
460
+ }
461
+ }
462
+
463
+
464
  public function clear_settings_instance() {
465
  Toolset_Settings::clear_instance();
466
  }
library/toolset/toolset-common/changelog.md CHANGED
@@ -1,11 +1,28 @@
1
  # Toolset Common Library
2
 
 
 
 
 
 
 
 
 
 
 
 
 
3
  ## 2.3.0
4
 
 
5
  - Extend the post objects relationships management with two actions to gather data on demand.
6
  - Only include the jQuery datepicker stylesheet on demand when the current page contains a datepicker from Toolset.
7
  - Include the user editors in the common bootstrap class.
8
- - Include knockout.js (toolsetcommon-127)
 
 
 
 
9
 
10
  ## 2.2.10
11
 
1
  # Toolset Common Library
2
 
3
+ # 2.3
4
+
5
+ - Various fixes and adjustments for CRED 1.8.6
6
+
7
+ ## 2.3-Beta3
8
+
9
+ - Adds callback methods for wpPointer object onOpen and onClose
10
+
11
+ ## 2.3-Beta2
12
+
13
+ - Allows user to ask Toolset to load Bootstrap library for them, or alternatively set the Bootstrap version they are using on their own
14
+
15
  ## 2.3.0
16
 
17
+ - layouts-1239: Added Toolset_Admin_Notice_Layouts_Help
18
  - Extend the post objects relationships management with two actions to gather data on demand.
19
  - Only include the jQuery datepicker stylesheet on demand when the current page contains a datepicker from Toolset.
20
  - Include the user editors in the common bootstrap class.
21
+ - toolsetcommon-127: Include knockout.js
22
+ - toolsetcommon-139: Clean up Toolset_Assets_Manager and define constants for asset handles
23
+ - toolsetcommon-144: Added Toolset_Admin_Notices_Manager
24
+ - toolsetcommon-137: Make the toolset-forms classes autoloaded.
25
+ - toolsetcommon-140: Improve a way to detect the status of WPML.
26
 
27
  ## 2.2.10
28
 
library/toolset/toolset-common/classes/forms.php CHANGED
@@ -202,7 +202,7 @@ if (!class_exists('Enlimbo_Forms_Wpcf')) {
202
  /**
203
  * Renders form.
204
  *
205
- * @return type
206
  */
207
  public function renderForm()
208
  {
@@ -242,7 +242,7 @@ if (!class_exists('Enlimbo_Forms_Wpcf')) {
242
  * Renders elements.
243
  *
244
  * @param type $elements
245
- * @return type
246
  */
247
  public function renderElements($elements)
248
  {
202
  /**
203
  * Renders form.
204
  *
205
+ * @return string
206
  */
207
  public function renderForm()
208
  {
242
  * Renders elements.
243
  *
244
  * @param type $elements
245
+ * @return string
246
  */
247
  public function renderElements($elements)
248
  {
library/toolset/toolset-common/debug/debug-information.php CHANGED
@@ -24,7 +24,9 @@ $debug_data = $debug_information->get_debug_info();
24
  <div class="wrap">
25
  <h1><?php _e('Toolset Debug Information', 'wpv-views');?></h1>
26
  <div class="inside">
27
- <p><?php _e( 'This information allows our support team to see the versions of WordPress, plugins and theme on your site. Provide this information if requested in our support forum. No passwords or other confidential information is included.', 'sitepress', 'wpv-views' ) ?></p><br/>
 
 
28
  <textarea style="font-size:10px;width:100%;height:250px;" rows="26" readonly="readonly"><?php echo esc_html( $debug_information->do_json_encode( $debug_data ) );?></textarea>
29
  </div>
30
  </div>
24
  <div class="wrap">
25
  <h1><?php _e('Toolset Debug Information', 'wpv-views');?></h1>
26
  <div class="inside">
27
+ <p><?php _e( 'The information below allows our support team to see the versions of WordPress, plugins and themes installed in your site.', 'wpv-views' ) ?></p>
28
+ <p><?php _e( 'Please, provide this information if requested in our support forum.', 'wpv-views' ) ?></p>
29
+ <p><?php _e( 'No passwords or any other confidential information is included.', 'wpv-views' ) ?></p>
30
  <textarea style="font-size:10px;width:100%;height:250px;" rows="26" readonly="readonly"><?php echo esc_html( $debug_information->do_json_encode( $debug_data ) );?></textarea>
31
  </div>
32
  </div>
library/toolset/toolset-common/inc/autoloaded/date_utils.php ADDED
@@ -0,0 +1,306 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Helper class for unified manipulation with timestamps, dates and date formats.
5
+ *
6
+ * On several occasions, we're dealing with time formats that are used for custom field date pickers. In this case,
7
+ * the options for date formatting are far more limited than what PHP date() function offers by jQuery UI Datepicker
8
+ * possibilities (see here: https://api.jqueryui.com/datepicker/#utility-formatDate).
9
+ *
10
+ * This class provides - among other things - a list of safe default date formats and methods for working with them,
11
+ * including the conversion to jQuery UI Datepicker format string.
12
+ *
13
+ * @since 2.3
14
+ */
15
+ class Toolset_Date_Utils {
16
+
17
+ private static $instance;
18
+
19
+ public static function get_instance() {
20
+ if( null == self::$instance ) {
21
+ self::$instance = new self();
22
+ }
23
+ return self::$instance;
24
+ }
25
+
26
+ private function __construct() { }
27
+
28
+ private function __clone() { }
29
+
30
+
31
+ // Date format properties
32
+
33
+ /** Human-readable description of a date format. */
34
+ const DESCRIPTION = 'description';
35
+ const TIME_FORMAT = 'time_format';
36
+ const DISPLAY_IN_DIALOGS = 'display_in_dialogs';
37
+
38
+ /**
39
+ * @var array Default supported date formats.
40
+ */
41
+ private $supported_date_formats_defaults = array(
42
+ 'F j, Y' => array(
43
+ self::DESCRIPTION => 'Month dd, yyyy',
44
+ self::TIME_FORMAT => 'g:i a',
45
+ self::DISPLAY_IN_DIALOGS => true
46
+ ),
47
+ 'Y/m/d' => array(
48
+ self::DESCRIPTION => 'yyyy/mm/dd',
49
+ self::TIME_FORMAT => 'g:i a',
50
+ self::DISPLAY_IN_DIALOGS => true
51
+ ),
52
+ 'm/d/Y' => array(
53
+ self::DESCRIPTION => 'mm/dd/yyyy',
54
+ self::TIME_FORMAT => 'h:i a',
55
+ self::DISPLAY_IN_DIALOGS => true
56
+ ),
57
+ 'd/m/Y' => array(
58
+ self::DESCRIPTION => 'dd/mm/yyyy',
59
+ self::TIME_FORMAT => 'G:i',
60
+ self::DISPLAY_IN_DIALOGS => true
61
+ ),
62
+ 'd/m/y' => array(
63
+ self::DESCRIPTION => 'dd/mm/yy',
64
+ self::TIME_FORMAT => 'H:i',
65
+ self::DISPLAY_IN_DIALOGS => true
66
+ ),
67
+ 'Y/n/j' => array(
68
+ self::DESCRIPTION => 'yyyy/m/d',
69
+ self::TIME_FORMAT => 'g:i a',
70
+ self::DISPLAY_IN_DIALOGS => false
71
+ ),
72
+ 'd.m.Y' => array(
73
+ self::DESCRIPTION => 'dd.mm.yyyy',
74
+ self::TIME_FORMAT => 'G:i',
75
+ self::DISPLAY_IN_DIALOGS => false
76
+ ),
77
+ 'j.n.Y' => array(
78
+ self::DESCRIPTION => 'd.m.yyyy',
79
+ self::TIME_FORMAT => 'H:i',
80
+ self::DISPLAY_IN_DIALOGS => false
81
+ ),
82
+ 'Y-m-d' => array(
83
+ self::DESCRIPTION => 'yyyy-mm-dd',
84
+ self::TIME_FORMAT => 'G:i',
85
+ self::DISPLAY_IN_DIALOGS => false
86
+ ),
87
+ 'j F Y' => array(
88
+ self::DESCRIPTION => 'dd Month yyyy',
89
+ self::TIME_FORMAT => 'g:i a',
90
+ self::DISPLAY_IN_DIALOGS => false
91
+ )
92
+ );
93
+
94
+
95
+ /**
96
+ * @var null|array Supported date formats, once generated from defaults, will be cached here.
97
+ */
98
+ private $supported_date_formats = null;
99
+
100
+
101
+ // Return values for get_supported_date_formats()
102
+ const FORMAT_FULL = 'full';
103
+ const FORMAT_VALUES_ONLY = 'values';
104
+ const FORMAT_VALUES_DESCRIPTIONS_ARRAY = 'values_descriptions';
105
+
106
+
107
+ /**
108
+ * Get an array of supported date formats.
109
+ *
110
+ * When called the first time, it will run the date format defaults through a filter and cache the result.
111
+ * This allows third-party plugins or custom code to add new possibilities (but at their own risk - Toolset expects
112
+ * that everything the filter returns is valid).
113
+ *
114
+ * @param string $format Determines how the result will be shaped:
115
+ * - FORMAT_FULL returns an array with date formats as keys and arrays with date format attributes as values
116
+ * - FORMAT_VALUES_ONLY returns a flat array of date formats
117
+ * - FORMAT_VALUES_DESCRIPTIONS_ARRAY returns a "format => description" array (used in legacy code)
118
+ *
119
+ * @return array
120
+ */
121
+ public function get_supported_date_formats( $format = self::FORMAT_FULL, $display_only = false ) {
122
+ if( null == $this->supported_date_formats ) {
123
+
124
+ /**
125
+ * toolset_supported_date_formats
126
+ *
127
+ * Allows for modifying the array of supported date formats. Check out $this->supported_date_formats_defaults
128
+ * to see how the array is shaped.
129
+ *
130
+ * @param array $supported_date_formats
131
+ * @since 2.3
132
+ */
133
+ $this->supported_date_formats = apply_filters( 'toolset_supported_date_formats', $this->supported_date_formats_defaults );
134
+ }
135
+
136
+ $selected_date_formats = $this->supported_date_formats;
137
+
138
+ // When displaying options, we don't want to show everything we support (too many options)
139
+ if( $display_only ) {
140
+ foreach( $selected_date_formats as $date_format => $attributes ) {
141
+ if( ! toolset_getarr( $attributes, self::DISPLAY_IN_DIALOGS, true ) ) {
142
+ unset( $selected_date_formats[ $date_format ] );
143
+ }
144
+ }
145
+ }
146
+
147
+ switch( $format ) {
148
+ case self::FORMAT_VALUES_ONLY:
149
+ return array_keys( $selected_date_formats );
150
+ case self::FORMAT_VALUES_DESCRIPTIONS_ARRAY:
151
+ $results = array();
152
+ foreach( $selected_date_formats as $format => $format_args ) {
153
+ $results[ $format ] = toolset_getarr( $format_args, self::DESCRIPTION, $format );
154
+ }
155
+ return $results;
156
+ case self::FORMAT_FULL:
157
+ default:
158
+ return $selected_date_formats;
159
+ }
160
+ }
161
+
162
+
163
+ /**
164
+ * Get the default, allways valid, date format if all else fails.
165
+ * @return string
166
+ */
167
+ public function get_default_date_format() {
168
+ return 'F j, Y';
169
+ }
170
+
171
+
172
+ /**
173
+ * Get the date format as configured in WordPress settings or a default one if the configured one isn't supported
174
+ * by Toolset.
175
+ *
176
+ * @return string
177
+ */
178
+ public function get_supported_date_format() {
179
+ $wp_date_format = get_option( 'date_format' );
180
+ if ( ! $this->is_date_format_supported( $wp_date_format ) ) {
181
+ return $this->get_default_date_format();
182
+ }
183
+
184
+ return $wp_date_format;
185
+ }
186
+
187
+
188
+ /**
189
+ * Check if a particular date format is supported by Toolset.
190
+ *
191
+ * @param string $format
192
+ * @return bool
193
+ */
194
+ public function is_date_format_supported( $format ) {
195
+ $supported_formats = $this->get_supported_date_formats( self::FORMAT_VALUES_ONLY );
196
+ return in_array( $format, $supported_formats );
197
+ }
198
+
199
+
200
+ // Map for converting from PHP date format string to the jQuery UI Datepicker one.
201
+ //
202
+ // Careful about ordering of array elements. If a character is on the right side, it can never
203
+ // be used on the left side afterwards.
204
+ private static $date_format_map = array(
205
+ 'd' => 'dd',
206
+ 'j' => 'd',
207
+ 'D' => 'D',
208
+ 'l' => 'DD',
209
+ 'm' => 'mm',
210
+ 'n' => 'm',
211
+ 'M' => 'M',
212
+ 'F' => 'MM',
213
+ 'y' => 'y',
214
+ 'Y' => 'yy',
215
+ 'z' => 'o',
216
+ );
217
+
218
+
219
+ /**
220
+ * Convert a date format string from PHP to jQuery UI Datepicker.
221
+ *
222
+ * Only format characters specified in self::$date_format_map will be properly converted.
223
+ * The result is run through a filter.
224
+ *
225
+ * @param $php_date_format
226
+ * @return string
227
+ */
228
+ public function convert_to_js_date_format( $php_date_format ) {
229
+
230
+ $date_format = $php_date_format;
231
+
232
+ foreach( self::$date_format_map as $from_string => $to_string ) {
233
+ $date_format = str_replace( $from_string, $to_string, $date_format );
234
+ }
235
+
236
+ /**
237
+ * toolset_convert_date_format_to_js
238
+ *
239
+ * Applied on a date format string after it is converted for jQuery UI Datepicker.
240
+ *
241
+ * @param string $date_format Converted string with the JS date format.
242
+ * @param string $php_date_format Original PHP date format.
243
+ * @since 2.3
244
+ */
245
+ $date_format = apply_filters( 'toolset_convert_date_format_to_js', $date_format, $php_date_format );
246
+
247
+ return $date_format;
248
+ }
249
+
250
+
251
+ // 15/10/1582 00:00 - 31/12/3000 23:59
252
+ const TIMESTAMP_LOWER_BOUNDARY = -12219292800;
253
+ const TIMESTAMP_UPPER_BOUNDARY = 32535215940;
254
+
255
+
256
+ /**
257
+ * Check if a timestamp is in the range supported by Toolset.
258
+ *
259
+ * @param int $timestamp
260
+ * @return bool
261
+ * @since 2.3
262
+ */
263
+ public function is_timestamp_in_range( $timestamp ) {
264
+ return self::TIMESTAMP_LOWER_BOUNDARY <= $timestamp && $timestamp <= self::TIMESTAMP_UPPER_BOUNDARY;
265
+ }
266
+
267
+
268
+ /**
269
+ * Process a date format string with custom escaping characters and turn it into a standard
270
+ * date format string as accepted by date().
271
+ *
272
+ * We needed to provide an alternative for backslash in date format strings (because WordPress
273
+ * gradually strips backslashes from postmeta, where [types] shortcodes might be stored).
274
+ *
275
+ * The custom escaping character is '%'. Here, it will be converted to '\'.
276
+ * If, for some strange reason, the user needs to print '%', they can use '%%' instead.
277
+ *
278
+ * @param $original_format_string
279
+ * @return string
280
+ * @since 2.3
281
+ */
282
+ public function process_custom_escaping_characters_on_format_string( $original_format_string ) {
283
+
284
+ // Match escaping characters (but not when there's more of them in a sequence)
285
+ // and replace them by single backslashes.
286
+ $format_string = preg_replace( '/([^%]|^)(%)((?!%))/', '\\1\\', $original_format_string );
287
+
288
+ // Match '%%' and replace them with single character '%'.
289
+ $format_string = preg_replace( '/(%{2})/', '%', $format_string );
290
+
291
+ /**
292
+ * toolset_escape_date_format_string
293
+ *
294
+ * Allow for overriding the date format string after processing the custom escaping character.
295
+ *
296
+ * @param string $format_string The format string after processing.
297
+ * @param string $original_format_string The format string before processing.
298
+ * @param string $escaping_character The custom escaping character that has been replaced.
299
+ *
300
+ * @since 2.3
301
+ */
302
+ $format_string = apply_filters( 'toolset_escape_date_format_string', $format_string, $original_format_string, '%' );
303
+
304
+ return $format_string;
305
+ }
306
+ }
library/toolset/toolset-common/inc/autoloaded/result.php ADDED
@@ -0,0 +1,87 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Represents a result of a single operation.
5
+ *
6
+ * This is a wrapper for easy handling of results of different types.
7
+ * It can encapsulate a boolean, WP_Error, boolean + message, or an exception.
8
+ *
9
+ * It is supposed to work well with Toolset_Result_Set.
10
+ *
11
+ * @since 2.3
12
+ */
13
+ class Toolset_Result {
14
+
15
+ /** @var bool */
16
+ protected $is_error;
17
+
18
+ /** @var bool|WP_Error|Exception What was passed as a result value. */
19
+ protected $inner_result;
20
+
21
+ /** @var string|null Display message, if one was provided. */
22
+ protected $display_message;
23
+
24
+
25
+ /**
26
+ * Toolset_Result constructor.
27
+ *
28
+ * @param bool|WP_Error|Exception $value Result value. For boolean, true determines a success, false
29
+ * determines a failure. WP_Error and Exception are interpreted as failures.
30
+ * @param string|null $display_message Optional display message that will be used if a boolean result is
31
+ * provided.
32
+ * @throws InvalidArgumentException
33
+ * @since 2.3
34
+ */
35
+ public function __construct( $value, $display_message = null ) {
36
+
37
+ $this->inner_result = $value;
38
+
39
+ if( is_bool( $value ) ) {
40
+ $this->is_error = ! $value;
41
+ $this->display_message = ( is_string( $display_message ) ? $display_message : null );
42
+ } else if( $value instanceof WP_Error ) {
43
+ $this->is_error = true;
44
+ $this->display_message = $value->get_error_message();
45
+ } else if( $value instanceof Exception ) {
46
+ $this->is_error = true;
47
+ $this->display_message = $value->getMessage();
48
+ } else {
49
+ throw new InvalidArgumentException( 'Unrecognized result value.' );
50
+ }
51
+
52
+ }
53
+
54
+
55
+ public function is_error() { return $this->is_error; }
56
+
57
+
58
+ public function is_success() { return ! $this->is_error; }
59
+
60
+
61
+ public function has_message() { return ( null != $this->display_message ); }
62
+
63
+
64
+ public function get_message() { return $this->display_message; }
65
+
66
+
67
+ /**
68
+ * Returns the result as an associative array in a standard form.
69
+ *
70
+ * That means, it will allways have the boolean element 'success' and
71
+ * a string 'message', if a display message is set.
72
+ *
73
+ * @return array
74
+ * @since 2.3
75
+ */
76
+ public function to_array() {
77
+ $result = array( 'success' => $this->is_success() );
78
+ if( $this->has_message() ) {
79
+ $result['message'] = $this->get_message();
80
+ }
81
+ return $result;
82
+ }
83
+
84
+
85
+
86
+
87
+ }
library/toolset/toolset-common/inc/autoloaded/result_set.php ADDED
@@ -0,0 +1,209 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Helper for aggregating operation results in various form.
5
+ *
6
+ * Basically, it holds a set of partial results of some operation and allows for easily determining if
7
+ * the operation as a whole was a success or a failure, and collecting all the information in flat arrays
8
+ * even though the input can be more complex.
9
+ *
10
+ * Its add() method will accept a Toolset_Result instance, another Toolset_Result_Set, anything that is
11
+ * accepted by Toolset_Result constructor, or array (even nested one) of any of these things mixed in
12
+ * any arbitrary way.
13
+ *
14
+ * @since 2.3
15
+ */
16
+ class Toolset_Result_Set {
17
+
18
+ /** @var array Mixed array of Toolset_Result and Toolset_Result_Set instances. */
19
+ private $results = array();
20
+
21
+ private $has_errors = false;
22
+
23
+ private $has_successes = false;
24
+
25
+ private $updated_item_count = 0;
26
+
27
+
28
+ /**
29
+ * Toolset_Result_Set constructor.
30
+ *
31
+ * @param array $results Array of processable results.
32
+ * @throws InvalidArgumentException
33
+ * @since 2.3
34
+ */
35
+ public function __construct( $results = array() ) {
36
+ if( ! is_array( $results ) ) {
37
+ throw new InvalidArgumentException( 'The initial set of results must be an array' );
38
+ }
39
+
40
+ $this->add( $results );
41
+ }
42
+
43
+
44
+ /**
45
+ * Recursively process input of results and store them either as Toolset_Result or
46
+ * a Toolset_Result_Set instance.
47
+ *
48
+ * @param array|Toolset_Result_Set|Toolset_Result|WP_Error|Exception|bool $input
49
+ * It accepts a result, a result set, or a "raw" resultt (anything that will be recognized
50
+ * by the Toolset_Result constructor). Or array of any of these things, which will
51
+ * be processed recursively.
52
+ * @param string|null $second_arg If a single boolean result is provided, this may
53
+ * hold the additional display message.
54
+ * @throws InvalidArgumentException
55
+ * @since 2.3
56
+ */
57
+ public function add( $input, $second_arg = null ) {
58
+ if( is_array( $input ) ) {
59
+ foreach( $input as $single_value ) {
60
+ $this->add( $single_value );
61
+ }
62
+ } elseif( $input instanceof Toolset_Result_Set ) {
63
+ $this->results[] = $input;
64
+ $this->has_errors = $this->has_errors || $input->has_errors();
65
+ $this->has_successes = $this->has_successes || $input->has_successes();
66
+ $this->updated_item_count += $input->get_updated_item_count();
67
+ } elseif( $input instanceof Toolset_Result ) {
68
+ $this->results[] = $input;
69
+ $this->has_errors = $this->has_errors || $input->is_error();
70
+ $this->has_successes = $this->has_successes || $input->is_success();
71
+ if( $input instanceof Toolset_Result_Updated ) {
72
+ $this->updated_item_count += $input->get_updated_item_count();
73
+ }
74
+ } else {
75
+ try {
76
+ $result = new Toolset_Result( $input, $second_arg );
77
+ $this->add( $result );
78
+ } catch( Exception $e ) {
79
+ throw new InvalidArgumentException( 'Unable to process the result.', 0, $e );
80
+ }
81
+ }
82
+ }
83
+
84
+
85
+ /**
86
+ * Do any results exist in this result set?
87
+ *
88
+ * @return bool
89
+ */
90
+ public function has_results() { return ( ! empty( $this->results ) ); }
91
+
92
+
93
+ public function has_errors() { return $this->has_errors; }
94
+
95
+
96
+ public function has_successes() { return $this->has_successes; }
97
+
98
+
99
+ public function get_updated_item_count() { return $this->updated_item_count; }
100
+
101
+
102
+ /**
103
+ * Returns true if there are success results as well as errors.
104
+ *
105
+ * @return bool
106
+ */
107
+ public function is_partial_success() { return ( $this->has_errors() && $this->has_successes() ); }
108
+
109
+
110
+ /**
111
+ * Returns true when there are some results and all of them are success ones.
112
+ *
113
+ * @return bool
114
+ */
115
+ public function is_complete_success() {
116
+ return ( $this->has_results() && $this->has_successes() && ! $this->has_errors() );
117
+ }
118
+
119
+
120
+ // Types of messages that can be aggregated.
121
+ const ERROR_MESSAGES = 'error';
122
+ const SUCCESS_MESSAGES = 'success';
123
+ const ALL_MESSAGES = 'all';
124
+
125
+
126
+ /**
127
+ * Recursively aggregate existing messages of chosen type from all results.
128
+ *
129
+ * @param string $type One of the *_MESSAGES constants.
130
+ * @return string[] Display messages.
131
+ * @since 2.3
132
+ */
133
+ public function get_messages( $type = self::ALL_MESSAGES ) {
134
+
135
+ $messages = array();
136
+
137
+ foreach( $this->results as $result ) {
138
+
139
+ if( $result instanceof Toolset_Result_Set ) {
140
+
141
+ // Merge messages from a nested result set
142
+ $result_messages = $result->get_messages( $type );
143
+ $messages = array_merge( $messages, $result_messages );
144
+
145
+ } else if( $result instanceof Toolset_Result && $result->has_message() ) {
146
+
147
+ // Add a single result message if its type matches.
148
+ if(
149
+ ( self::ERROR_MESSAGES == $type && $result->is_error() )
150
+ || ( self::SUCCESS_MESSAGES == $type && $result->is_success() )
151
+ || ( self::ALL_MESSAGES == $type )
152
+ ) {
153
+ $messages[] = $result->get_message();
154
+ }
155
+ }
156
+ }
157
+
158
+ return $messages;
159
+ }
160
+
161
+
162
+ /**
163
+ * Get all display messages in one string.
164
+ *
165
+ * @param string $separator
166
+ * @param string $type One of the *_MESSAGES constants.
167
+ * @return string
168
+ * @since 2.3
169
+ */
170
+ public function concat_messages( $separator = '; ', $type = self::ALL_MESSAGES ) {
171
+ $messages = $this->get_messages( $type );
172
+ $messages = implode( $separator, $messages );
173
+ return $messages;
174
+ }
175
+
176
+
177
+ /**
178
+ * Flatten the results into an one-dimensional array.
179
+ *
180
+ * @return Toolset_Result[]
181
+ * @since 2.3
182
+ */
183
+ public function get_results_flat() {
184
+ $results_flat = array();
185
+
186
+ foreach( $this->results as $result ) {
187
+ if( $result instanceof Toolset_Result_Set ) {
188
+ $flattened = $result->get_results_flat();
189
+ $results_flat = array_merge( $results_flat, $flattened );
190
+ } else {
191
+ $results_flat[] = $result;
192
+ }
193
+ }
194
+
195
+ return $results_flat;
196
+ }
197
+
198
+
199
+ /**
200
+ * Turn the whole result set into a (simplified) result.
201
+ *
202
+ * @return Toolset_Result
203
+ * @since 2.3
204
+ */
205
+ public function aggregate() {
206
+ return new Toolset_Result( $this->is_complete_success(), $this->concat_messages() );
207
+ }
208
+
209
+ }
library/toolset/toolset-common/inc/autoloaded/result_updated.php ADDED
@@ -0,0 +1,56 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Represents a result of a (database) update operation.
5
+ *
6
+ * Compared to its superclass, this one adds the ability to hold the information about number of updated
7
+ * records.
8
+ *
9
+ * @since 2.3
10
+ */
11
+ class Toolset_Result_Updated extends Toolset_Result {
12
+
13
+
14
+ /** @var int */
15
+ private $items_updated;
16
+
17
+
18
+ /**
19
+ * Toolset_Result_Updated constructor.
20
+ *
21
+ * @inheritdoc
22
+ *
23
+ * @param bool|Exception|WP_Error $value Result value.
24
+ * @param int $items_updated Nonnegative number of items updated in an operation.
25
+ * @param null|string $display_message Optional display message for a boolean result value.
26
+ * @since 2.3
27
+ */
28
+ public function __construct( $value, $items_updated = 0, $display_message = null ) {
29
+ parent::__construct( $value, $display_message );
30
+
31
+ if( ! is_numeric( $items_updated ) || 0 > $items_updated ) {
32
+ throw new InvalidArgumentException( 'Negative or non-numeric count of updated items.' );
33
+ }
34
+
35
+ $this->items_updated = (int) $items_updated;
36
+ }
37
+
38
+
39
+ /**
40
+ * Determine whether any items have been updated during the operation.
41
+ *
42
+ * @return bool
43
+ * @since 2.3
44
+ */
45
+ public function has_items_updated() { return ( 0 < $this->items_updated ); }
46
+
47
+
48
+ /**
49
+ * Get a number of items updated in an operation.
50
+ *
51
+ * @return int
52
+ * @since 2.3
53
+ */
54
+ public function get_updated_item_count() { return $this->items_updated; }
55
+
56
+ }
library/toolset/toolset-common/inc/controller/admin/notices.php ADDED
@@ -0,0 +1,389 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Class Toolset_Controller_Admin_Notices
4
+ * Controls all Toolset related admin notices
5
+ *
6
+ * @since 2.3.0 First release of Toolset_Admin_Notice_Dismissible
7
+ * All containing properties and methods without since tag are part of the initial release
8
+ */
9
+ class Toolset_Controller_Admin_Notices {
10
+ protected $current_screen;
11
+
12
+ protected $tpl_path;
13
+
14
+ protected $is_types_active;
15
+ protected $is_views_active;
16
+ protected $is_layouts_active;
17
+ protected $is_cred_active;
18
+ protected $is_access_active;
19
+ protected $is_tbt_active;
20
+ protected $is_tbt_inactive;
21
+
22
+ public function __construct() {
23
+ add_action( 'after_setup_theme', array( $this, 'init' ), 1000 );
24
+ }
25
+
26
+ public function init() {
27
+ $this->tpl_path = TOOLSET_COMMON_PATH . '/templates/admin/notice';
28
+
29
+ $condition = new Toolset_Condition_Plugin_Types_Active();
30
+ $this->is_types_active = $condition->is_met();
31
+
32
+ $condition = new Toolset_Condition_Plugin_Views_Active();
33
+ $this->is_views_active = $condition->is_met();
34
+
35
+ $condition = new Toolset_Condition_Plugin_Layouts_Active();
36
+ $this->is_layouts_active = $condition->is_met();
37
+
38
+ $condition = new Toolset_Condition_Plugin_Cred_Active();
39
+ $this->is_cred_active = $condition->is_met();
40
+
41
+ $condition = new Toolset_Condition_Plugin_Access_Active();
42
+ $this->is_access_active = $condition->is_met();
43
+
44
+ $condition = new Toolset_Condition_Theme_Toolset_Based_Active();
45
+ $this->is_tbt_active = $condition->is_met();
46
+
47
+ $condition = new Toolset_Condition_Theme_Toolset_Based_Inactive();
48
+ $this->is_tbt_inactive = $condition->is_met();
49
+
50
+ add_action('current_screen', array( $this, 'init_screens') );
51
+ }
52
+
53
+ /**
54
+ * Initialize where to show the notices
55
+ * Fired on hook 'current_screen'
56
+ */
57
+ public function init_screens() {
58
+ if( ! function_exists( 'get_current_screen' ) ) {
59
+ // loaded to early
60
+ return;
61
+ }
62
+
63
+ $this->current_screen = get_current_screen();
64
+
65
+ $this->screen_any();
66
+ $this->screen_toolset_dashboard();
67
+ $this->screens_toolset_toplevel_pages();
68
+ $this->screen_wordpress_dashboard();
69
+ $this->screen_wordpress_plugins();
70
+ $this->screen_wordpress_themes();
71
+ }
72
+
73
+ /**
74
+ * Notices for any page on the admin screen
75
+ */
76
+ protected function screen_any() {
77
+ if( ! is_admin() ) {
78
+ return;
79
+ }
80
+ }
81
+
82
+ /**
83
+ * Get current screen id
84
+ * @return bool
85
+ */
86
+ protected function get_current_screen_id() {
87
+ if( is_object( $this->current_screen ) and property_exists( $this->current_screen, 'id' ) ) {
88
+ return $this->current_screen->id;
89
+ }
90
+
91
+ return false;
92
+ }
93
+
94
+ /**
95
+ * Notices for all Toolset toplevel pages
96
+ */
97
+ protected function screens_toolset_toplevel_pages() {
98
+ if( ! $current_screen_id = $this->get_current_screen_id() ) {
99
+ // no screen id
100
+ return;
101
+ }
102
+
103
+ if(
104
+ $current_screen_id == 'toolset_page_wpcf-cpt' // Post Types
105
+ || $current_screen_id == 'toolset_page_wpcf-ctt' // Taxonomies
106
+ || $current_screen_id == 'toolset_page_wpcf-cf' // Post Fields
107
+ || $current_screen_id == 'toolset_page_wpcf-termmeta-listing' // Term Fields
108
+ || $current_screen_id == 'toolset_page_wpcf-um' // User Fields
109
+ || $current_screen_id == 'toolset_page_types_access' // Access Control
110
+ || $current_screen_id == 'toolset_page_views' // Views
111
+ || $current_screen_id == 'toolset_page_view-templates' // Content Templates
112
+ || $current_screen_id == 'toolset_page_view-archives' // WordPress Archives
113
+ || $current_screen_id == 'toolset_page_CRED_Forms' // Post Forms
114
+ || $current_screen_id == 'toolset_page_CRED_User_Forms' // User Forms
115
+ || $current_screen_id == 'toolset_page_dd_layouts' // Layouts
116
+ || $current_screen_id == 'toolset_page_dd_layout_CSS_JS' // Layouts CSS JS
117
+ // || $current_screen_id == 'toolset_page_toolset-settings' // Toolset Settings
118
+ // || $current_screen_id == 'toolset_page_toolset-export-import' // Toolset Settings
119
+
120
+ ) {
121
+ $this->notices_compilation_introduction();
122
+ }
123
+ }
124
+
125
+ /**
126
+ * Notices for the themes screen
127
+ */
128
+ protected function screen_wordpress_themes() {
129
+ if( $this->get_current_screen_id() != 'themes' ) {
130
+ return;
131
+ }
132
+
133
+ $this->notices_compilation_introduction();
134
+ }
135
+
136
+ /**
137
+ * Notices for the plugins screen
138
+ */
139
+ protected function screen_wordpress_plugins() {
140
+ if( $this->get_current_screen_id() != 'plugins' ) {
141
+ return;
142
+ }
143
+
144
+ if( $this->is_tbt_active ) {
145
+ // active Toolset Based Theme
146
+ $notice = new Toolset_Admin_Notice_Dismissible( 'tbt-active-dashboard' );
147
+ $notice->set_content( $this->tpl_path . '/toolset-based-themes/active/plugin.phtml' );
148
+ Toolset_Admin_Notices_Manager::add_notice( $notice );
149
+ return;
150
+ }
151
+
152
+ if( $this->is_tbt_inactive ) {
153
+ // inactive Toolset Based Theme
154
+ $notice = new Toolset_Admin_Notice_Dismissible( 'tbt-inactive-dashboard' );
155
+ $notice->set_content( $this->tpl_path . '/toolset-based-themes/inactive/plugin.phtml' );
156
+ Toolset_Admin_Notices_Manager::add_notice( $notice );
157
+ return;
158
+ }
159
+
160
+ $this->notices_compilation_introduction();
161
+ }
162
+
163
+ /**
164
+ * Notices for the Toolset Dashboard Page
165
+ */
166
+ protected function screen_wordpress_dashboard() {
167
+ if( $this->get_current_screen_id() != 'dashboard' ) {
168
+ return;
169
+ }
170
+
171
+ $this->notices_compilation_introduction();
172
+ }
173
+
174
+ /**
175
+ * Notices for the Toolset Dashboard Page
176
+ */
177
+ protected function screen_toolset_dashboard() {
178
+ if( $this->get_current_screen_id() != 'toplevel_page_toolset-dashboard' ) {
179
+ return;
180
+ }
181
+
182
+ if( $this->is_tbt_active ) {
183
+ // active Toolset Based Theme
184
+ $notice = new Toolset_Admin_Notice_Dismissible( 'tbt-active-dashboard' );
185
+ $notice->set_content( $this->tpl_path . '/toolset-based-themes/active/dashboard.phtml' );
186
+ Toolset_Admin_Notices_Manager::add_notice( $notice );
187
+ return;
188
+ }
189
+
190
+ if( $this->is_tbt_inactive ) {
191
+ // inactive Toolset Based Theme
192
+ $notice = new Toolset_Admin_Notice_Dismissible( 'tbt-inactive-dashboard' );
193
+ $notice->set_content( $this->tpl_path . '/toolset-based-themes/inactive/dashboard.phtml' );
194
+ Toolset_Admin_Notices_Manager::add_notice( $notice );
195
+ return;
196
+ }
197
+
198
+ // no Toolset Based Theme
199
+ $this->notices_compilation_introduction();
200
+ }
201
+
202
+ /**
203
+ * These are our "Toolset Introduction Messages"
204
+ * for further information see toolsetcommon-136
205
+ */
206
+ protected function notices_compilation_introduction() {
207
+ if( $this->only_types_active() ) {
208
+ // notice: theme we have an integration plugin for
209
+ $this->notice_customize_page_with_toolset();
210
+
211
+ // notice: theme we have no integration plugin for
212
+ $this->notice_how_to_design_with_toolset();
213
+
214
+ // notice: theme has native layout support
215
+ $this->notice_theme_works_best_with_toolset();
216
+
217
+ return;
218
+ }
219
+
220
+ // commercial plugin active + theme we have an integration plugin for
221
+ $this->layouts_theme_integration_available();
222
+ $this->layouts_theme_integration_not_active();
223
+ $theme_integration_active_but_theme_not = $this->layouts_theme_integration_theme_not_active();
224
+ $this->integration_run_installer();
225
+
226
+ // no integration plugin installed, for which theme exists (but not active)
227
+ // + commercial plugin active
228
+ // + types || views || layouts missing
229
+ // + theme active we have no integration plugin for
230
+ if( ( ! $theme_integration_active_but_theme_not instanceof Toolset_Condition_Interface
231
+ || ! $theme_integration_active_but_theme_not->conditions_met() )
232
+ && ( ! $this->is_views_active
233
+ || ! $this->is_types_active
234
+ || ! $this->is_layouts_active
235
+ )
236
+ ) {
237
+ $this->layouts_no_theme_integration_available();
238
+ }
239
+ }
240
+
241
+ /**
242
+ * True if only types is active
243
+ * False if one commercial toolset plugin is active
244
+ *
245
+ * @return bool
246
+ */
247
+ protected function only_types_active() {
248
+ if( $this->is_views_active || $this->is_layouts_active || $this->is_access_active || $this->is_cred_active ) {
249
+ return false;
250
+ }
251
+
252
+ return true;
253
+ }
254
+
255
+ /**
256
+ * @return Toolset_Admin_Notice_Dismissible
257
+ */
258
+ protected function notice_customize_page_with_toolset() {
259
+ $notice = new Toolset_Admin_Notice_Dismissible( 'customize-page-with-toolset' );
260
+ $notice->set_content( $this->tpl_path . '/only-types-installed/layouts-support-available.phtml' );
261
+ $notice->add_condition( new Toolset_Condition_Theme_Layouts_Support_Native_Missing() );
262
+ $notice->add_condition( new Toolset_Condition_Theme_Layouts_Support_Plugin_Available() );
263
+ Toolset_Admin_Notices_Manager::add_notice( $notice );
264
+
265
+ return $notice;
266
+ }
267
+
268
+ /**
269
+ * @return Toolset_Admin_Notice_Dismissible
270
+ */
271
+ protected function notice_how_to_design_with_toolset() {
272
+ $notice = new Toolset_Admin_Notice_Dismissible( 'how-to-design-with-toolset' );
273
+ $notice->set_content( $this->tpl_path . '/only-types-installed/layouts-support-missing.phtml' );
274
+ $notice->add_condition( new Toolset_Condition_Theme_Layouts_Support_Native_Missing() );
275
+ $notice->add_condition( new Toolset_Condition_Theme_Layouts_Support_Plugin_Missing() );
276
+ Toolset_Admin_Notices_Manager::add_notice( $notice );
277
+
278
+ return $notice;
279
+ }
280
+
281
+ /**
282
+ * @return Toolset_Admin_Notice_Dismissible
283
+ */
284
+ protected function notice_theme_works_best_with_toolset() {
285
+ $notice = new Toolset_Admin_Notice_Dismissible( 'theme-works-best-with-toolset' );
286
+ $notice->set_content( $this->tpl_path . '/only-types-installed/layouts-support-native.phtml' );
287
+ $notice->add_condition( new Toolset_Condition_Theme_Layouts_Support_Native_Available() );
288
+ Toolset_Admin_Notices_Manager::add_notice( $notice );
289
+ }
290
+
291
+ /**
292
+ * @return Toolset_Admin_Notice_Dismissible
293
+ */
294
+ protected function layouts_theme_integration_available() {
295
+ if( defined( 'TOOLSET_INTEGRATION_PLUGIN_THEME_NAME' ) ) {
296
+ // don't show this message if already a integration plugin is running
297
+ // return;
298
+ }
299
+ $notice = new Toolset_Admin_Notice_Dismissible( 'layouts-theme-integration' );
300
+ $notice->set_content( $this->tpl_path . '/commercial-plugin-installed/layouts-support-available.phtml' );
301
+ $notice->add_condition( new Toolset_Condition_Theme_Layouts_Support_Native_Missing() );
302
+ $notice->add_condition( new Toolset_Condition_Theme_Layouts_Support_Plugin_Available() );
303
+ $notice->add_condition( new Toolset_Condition_Theme_Layouts_Support_Plugin_Not_Installed() );
304
+ Toolset_Admin_Notices_Manager::add_notice( $notice );
305
+
306
+ return $notice;
307
+ }
308
+
309
+ /**
310
+ * @return Toolset_Admin_Notice_Dismissible
311
+ */
312
+ protected function layouts_theme_integration_not_active() {
313
+ $notice = new Toolset_Admin_Notice_Dismissible( 'layouts-theme-integration-not-active' );
314
+ $notice->set_content( $this->tpl_path . '/commercial-plugin-installed/layouts-support-plugin-not-active.phtml' );
315
+ $notice->add_condition( new Toolset_Condition_Theme_Layouts_Support_Native_Missing() );
316
+ $notice->add_condition( new Toolset_Condition_Theme_Layouts_Support_Plugin_Available() );
317
+ $notice->add_condition( new Toolset_Condition_Theme_Layouts_Support_Plugin_Not_Active() );
318
+ Toolset_Admin_Notices_Manager::add_notice( $notice );
319
+
320
+ return $notice;
321
+ }
322
+
323
+ /**
324
+ * @return Toolset_Admin_Notice_Dismissible
325
+ */
326
+ protected function layouts_theme_integration_theme_not_active() {
327
+ if( defined( 'LAYOUTS_INTEGRATION_THEME_NAME' ) ) {
328
+ // Layouts define this constant if there is an active integration (plugin and theme installed and active)
329
+ return false;
330
+ }
331
+
332
+ $notice = new Toolset_Admin_Notice_Dismissible( 'layouts-theme-integration-theme-not-active' );
333
+ $notice->set_content( $this->tpl_path . '/commercial-plugin-installed/layouts-support-theme-not-active.phtml' );
334
+ $notice->add_condition( new Toolset_Condition_Theme_Layouts_Support_Native_Missing() );
335
+ $notice->add_condition( new Toolset_Condition_Theme_Layouts_Support_Plugin_Active() );
336
+ $notice->add_condition( new Toolset_Condition_Theme_Layouts_Support_Theme_Installed() );
337
+ $notice->add_condition( new Toolset_Condition_Theme_Layouts_Support_Theme_Not_Active() );
338
+ Toolset_Admin_Notices_Manager::add_notice( $notice );
339
+
340
+ return $notice;
341
+ }
342
+
343
+ /**
344
+ * @return Toolset_Admin_Notice_Dismissible
345
+ */
346
+ protected function layouts_no_theme_integration_available() {
347
+ $notice = new Toolset_Admin_Notice_Dismissible( 'layouts-no-theme-integration' );
348
+ $notice->set_content( $this->tpl_path . '/commercial-plugin-installed/layouts-support-missing.phtml' );
349
+ $notice->add_condition( new Toolset_Condition_Theme_Layouts_Support_Native_Missing() );
350
+ $notice->add_condition( new Toolset_Condition_Theme_Layouts_Support_Plugin_Missing() );
351
+ Toolset_Admin_Notices_Manager::add_notice( $notice );
352
+
353
+ return $notice;
354
+ }
355
+
356
+ /**
357
+ * @return Toolset_Admin_Notice_Dismissible
358
+ */
359
+ protected function integration_run_installer() {
360
+ $is_integration_plugin_active = new Toolset_Condition_Theme_Layouts_Support_Plugin_Active();
361
+
362
+ if( ! $is_integration_plugin_active->is_met() ) {
363
+ // no theme itegration plugin active
364
+ return;
365
+ }
366
+
367
+ $theme_slug = sanitize_title( $is_integration_plugin_active->get_supported_theme_name() );
368
+
369
+ $notice = new Toolset_Admin_Notice_Dismissible( 'integration-run-installer-for-' . $theme_slug );
370
+ $notice->set_content( $this->tpl_path . '/installer/integration-run-installer.phtml' );
371
+ $notice->add_condition( new Toolset_Condition_Plugin_Layouts_No_Items() );
372
+ $notice->add_condition( new Toolset_Condition_Theme_Layouts_Support_Theme_Active() );
373
+ Toolset_Admin_Notices_Manager::add_notice( $notice );
374
+
375
+ return $notice;
376
+ }
377
+
378
+ /**
379
+ * @return Toolset_Admin_Notice_Dismissible
380
+ */
381
+ protected function plugin_encrypted_no_valid_theme() {
382
+ $notice = new Toolset_Admin_Notice_Dismissible( 'plugin-encrypted-no-valid-theme' );
383
+ $notice->set_content( $this->tpl_path . '/toolset-based-themes/plugin-encrypted-no-valid-theme.phtml' );
384
+ $notice->add_condition( new Toolset_Condition_Plugin_Encrypted_No_Valid_Theme() );
385
+ Toolset_Admin_Notices_Manager::add_notice( $notice );
386
+
387
+ return $notice;
388
+ }
389
+ }
library/toolset/toolset-common/inc/toolset.admin.bar.menu.class.php CHANGED
@@ -8,7 +8,7 @@
8
  * @since unknown
9
  */
10
 
11
- if ( ! class_exists( 'Toolset_Admin_Bar_Menu' ) ) {
12
 
13
  class Toolset_Admin_Bar_Menu {
14
 
@@ -180,7 +180,8 @@ if ( ! class_exists( 'Toolset_Admin_Bar_Menu' ) ) {
180
  public function admin_bar_menu_disable( $state ) {
181
  $toolset_options = get_option( 'toolset_options', array() );
182
  $toolset_admin_bar_menu_remove = ( isset( $toolset_options['show_admin_bar_shortcut'] ) && $toolset_options['show_admin_bar_shortcut'] == 'off' ) ? true : false;
183
- if ( $toolset_admin_bar_menu_remove ) {
 
184
  $state = true;
185
  }
186
  return $state;
@@ -580,7 +581,7 @@ if ( ! class_exists( 'Toolset_Admin_Bar_Menu' ) ) {
580
  * It is going to be like "post_type|archive" or null if link should not be displayed
581
  * @return string {post_type or archive_type or taxonomy or 404}|{page or archive}
582
  */
583
- private function get_context() {
584
 
585
  // Rule of thumb: if there is a list of posts, it is an archive
586
 
@@ -664,7 +665,7 @@ if ( ! class_exists( 'Toolset_Admin_Bar_Menu' ) ) {
664
  * @param int $post_id must be layout or template id if !$is_new, else post
665
  * @return string title for menu subitem
666
  */
667
- private function get_title( $plugin, $is_new, $type, $class, $post_id = null) {
668
 
669
  if ( $is_new ) {
670
  /* Create */
@@ -733,8 +734,6 @@ if ( ! class_exists( 'Toolset_Admin_Bar_Menu' ) ) {
733
 
734
  if ( 'page' === $class && '404' === $type && 'layouts' === $plugin ) {
735
  $selection = __( 'Error 404 page', 'wpv-views' );
736
- } else if ( 'page' === $type ) {
737
- $selection = get_the_title( $post_id );
738
  } else if ( 'page' === $class ) {
739
  $post_type = get_post_type_object( $type );
740
  $selection = ucfirst( $post_type->label );
8
  * @since unknown
9
  */
10
 
11
+ if ( ! class_exists( 'Toolset_Admin_Bar_Menu', false ) ) {
12
 
13
  class Toolset_Admin_Bar_Menu {
14
 
180
  public function admin_bar_menu_disable( $state ) {
181
  $toolset_options = get_option( 'toolset_options', array() );
182
  $toolset_admin_bar_menu_remove = ( isset( $toolset_options['show_admin_bar_shortcut'] ) && $toolset_options['show_admin_bar_shortcut'] == 'off' ) ? true : false;
183
+ $disable_admin_bar_filter = apply_filters('remove_toolset_admin_bar', false);
184
+ if ( $toolset_admin_bar_menu_remove || $disable_admin_bar_filter === true ) {
185
  $state = true;
186
  }
187
  return $state;
581
  * It is going to be like "post_type|archive" or null if link should not be displayed
582
  * @return string {post_type or archive_type or taxonomy or 404}|{page or archive}
583
  */
584
+ public function get_context() {
585
 
586
  // Rule of thumb: if there is a list of posts, it is an archive
587
 
665
  * @param int $post_id must be layout or template id if !$is_new, else post
666
  * @return string title for menu subitem
667
  */
668
+ public function get_title( $plugin, $is_new, $type, $class, $post_id = null) {
669
 
670
  if ( $is_new ) {
671
  /* Create */
734
 
735
  if ( 'page' === $class && '404' === $type && 'layouts' === $plugin ) {
736
  $selection = __( 'Error 404 page', 'wpv-views' );
 
 
737
  } else if ( 'page' === $class ) {
738
  $post_type = get_post_type_object( $type );
739
  $selection = ucfirst( $post_type->label );
library/toolset/toolset-common/inc/toolset.assets.manager.class.php CHANGED
@@ -6,18 +6,17 @@ if ( defined( 'WPT_ASSETS_MANAGER' ) ) {
6
 
7
  define( 'WPT_ASSETS_MANAGER', true );
8
 
9
- class Toolset_Style
10
- {
11
 
12
  public function __construct( $handle, $path = 'wordpress_default', $deps = array(), $ver = false, $media = 'screen' ) {
13
- $this->handle = $handle;
14
- $this->path = $path;
15
- $this->deps = $deps;
16
- $this->ver = $ver;
17
- $this->media = $media;
18
-
19
- if (
20
- $this->compare_versions()
21
  && $this->path != 'wordpress_default'
22
  ) {
23
  wp_register_style( $this->handle, $this->path, $this->deps, $this->ver, $this->media );
@@ -31,22 +30,23 @@ class Toolset_Style
31
  }
32
 
33
  protected function compare_versions() {
34
- global $wp_styles;
35
-
36
- if ( isset( $wp_styles->registered ) ) {
37
- $wpt_registered_styles = $wp_styles->registered;
38
- if ( isset( $wpt_registered_styles[ $this->handle ] ) ) {
39
- $registered = $wpt_registered_styles[ $this->handle ];
40
- if ( (float) $registered->ver < (float) $this->ver ) {
41
- $wp_styles->remove( $this->handle );
42
- return true;
43
- } else {
44
- return false;
45
- }
46
  }
47
  }
 
48
 
49
- return $this->is_registered() === false;
50
  }
51
 
52
  public function deregister() {
@@ -65,18 +65,18 @@ class Toolset_Style
65
  }
66
  }
67
 
68
- class Toolset_Script
69
- {
70
  public function __construct( $handle, $path = 'wordpress_default', $deps = array(), $ver = false, $in_footer = false ) {
71
- $this->handle = $handle;
72
- $this->path = $path;
73
- $this->deps = $deps;
74
- $this->ver = $ver;
75
- $this->in_footer = $in_footer;
76
-
77
- if (
78
- $this->compare_versions()
79
- && $this->path != 'wordpress_default'
80
  ) {
81
  wp_register_script( $this->handle, $this->path, $this->deps, $this->ver, $this->in_footer );
82
  }
@@ -88,24 +88,25 @@ class Toolset_Script
88
  }
89
  }
90
 
91
- protected function compare_versions() {
92
- global $wp_scripts;
93
 
94
- if ( isset( $wp_scripts->registered ) ) {
95
  $wpt_registered_scripts = $wp_scripts->registered;
96
  if ( isset( $wpt_registered_scripts[ $this->handle ] ) ) {
97
- $registered = $wpt_registered_scripts[$this->handle];
98
  if ( (float) $registered->ver < (float) $this->ver ) {
99
  $wp_scripts->remove( $this->handle );
 
100
  return true;
101
  } else {
102
  return false;
103
  }
104
  }
105
- }
106
 
107
- return $this->is_registered() === false;
108
- }
109
 
110
  public function localize( $object, $args ) {
111
  if ( $this->is_registered() ) {
@@ -128,53 +129,158 @@ class Toolset_Script
128
  }
129
  }
130
 
131
- class Toolset_Assets_Manager
132
- {
 
 
 
133
  protected static $instance;
134
- protected $styles = array();
135
- protected $scripts = array();
136
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
137
  /**
138
- * assets_url
139
- *
140
- * Base URL for the Toolset Common instance.
141
- *
142
- * @note Does not have a trailing slash due to untrailingslashit, add it when registering each asset.
143
- * @since 2.0
144
- */
145
- protected $assets_url = '';
 
146
 
147
  protected function __construct() {
148
-
149
  if ( is_admin() ) {
150
  $this->assets_url = TOOLSET_COMMON_URL;
151
  } else {
152
  $this->assets_url = TOOLSET_COMMON_FRONTEND_URL;
153
  }
 
154
  $this->assets_url = untrailingslashit( $this->assets_url );
155
-
156
- add_action( 'init', array( $this, 'init' ), 99 );
157
- //be
158
- add_action( 'admin_enqueue_scripts', array( $this, 'get_rid_of_default_scripts' ) );
159
- add_action( 'admin_enqueue_scripts', array( $this, 'get_rid_of_default_styles' ) );
160
- //fe
161
- add_action( 'wp_enqueue_scripts', array( $this, 'get_rid_of_default_scripts' ) );
162
- add_action( 'wp_enqueue_scripts', array( $this, 'get_rid_of_default_styles' ) );
163
-
164
- add_action( 'toolset_enqueue_scripts', array( $this,'enqueue_scripts' ), 10, 1 );
165
- add_action( 'toolset_enqueue_styles', array( $this,'enqueue_styles' ), 10, 1 );
166
- add_action( 'toolset_localize_script', array( $this,'localize_script' ), 10, 3 );
 
 
167
  }
168
 
 
 
 
169
  final public static function getInstance() {
170
  static $instances = array();
171
  $called_class = get_called_class();
172
 
173
- if( isset( $instances[ $called_class ] ) ) {
174
  return $instances[ $called_class ];
175
  } else {
176
- if( class_exists( $called_class ) ) {
177
  $instances[ $called_class ] = new $called_class();
 
178
  return $instances[ $called_class ];
179
  } else {
180
  // This can unfortunately happen when the get_called_class() workaround for PHP 5.2 misbehaves.
@@ -184,18 +290,22 @@ class Toolset_Assets_Manager
184
 
185
  }
186
 
 
187
  public function init() {
188
  $this->__initialize_styles();
189
  $this->__initialize_scripts();
190
  }
191
-
 
192
  public function get_assets_url() {
193
  return $this->assets_url;
194
  }
195
 
196
- /*
 
 
 
197
  * @return void
198
- * pushes to our scripts array other scripts so we can enqueue using our methods
199
  */
200
  public function get_rid_of_default_scripts() {
201
  global $wp_scripts;
@@ -206,9 +316,10 @@ class Toolset_Assets_Manager
206
  }
207
  }
208
 
209
- /*
 
 
210
  * @return void
211
- * pushes to our scripts array other scripts so we can enqueue using our methods
212
  */
213
  public function get_rid_of_default_styles() {
214
  global $wp_styles;
@@ -220,312 +331,416 @@ class Toolset_Assets_Manager
220
  }
221
  }
222
 
 
223
  protected function __initialize_styles() {
224
- // ----------
225
  // Libraries
226
- // ----------
227
- $this->styles['toolset-select2-css'] = new Toolset_Style(
228
- 'toolset-select2-css',
229
- $this->assets_url . '/res/lib/select2/select2.css'
230
- );
231
- $this->styles['layouts-select2-overrides-css'] = new Toolset_Style(
232
- 'layouts-select2-overrides-css',
233
- $this->assets_url . '/res/lib/select2/select2-overrides.css'
234
- );
235
- $this->styles['font-awesome'] = new Toolset_Style(
236
- 'font-awesome',
237
- $this->assets_url . '/res/lib/font-awesome/css/font-awesome.min.css',
238
- array(),
239
- '4.4.0',
240
- 'screen'
241
- );
242
- $this->styles['toolset-meta-html-codemirror-css'] = new Toolset_Style(
243
- 'toolset-meta-html-codemirror-css',
244
- $this->assets_url . '/visual-editor/res/js/codemirror/lib/codemirror.css',
245
- array(),
246
- "5.5.0"
247
- );
248
- $this->styles['toolset-meta-html-codemirror-css-hint-css'] = new Toolset_Style(
249
- 'toolset-meta-html-codemirror-css-hint-css',
250
- $this->assets_url . '/visual-editor/res/js/codemirror/addon/hint/show-hint.css',
251
- array(),
252
- "5.5.0"
253
- );
254
- $this->styles['toolset-colorbox'] = new Toolset_Style(
255
- 'toolset-colorbox',
256
- $this->assets_url . '/res/lib/colorbox/colorbox.css',
257
- array(),
258
- '1.4.31'
259
- );
260
- // ----------
 
 
 
 
 
 
 
 
261
  // Custom styles
262
- // ----------
263
- $this->styles['toolset-select2-overrides-css'] = new Toolset_Style(
264
- 'toolset-select2-overrides-css',
265
- $this->assets_url . '/res/lib/select2/select2-overrides.css',
266
- array( 'toolset-select2-css' )
267
- );
268
- $this->styles['wpt-toolset-backend'] = new Toolset_Style(
269
- 'wpt-toolset-backend',
270
- $this->assets_url . '/toolset-forms/css/wpt-toolset-backend.css',
271
- array(),
272
- TOOLSET_COMMON_VERSION
273
- );
274
-
275
- $this->styles['toolset-notifications-css'] = new Toolset_Style(
276
- 'toolset-notifications-css',
277
- $this->assets_url . '/res/css/toolset-notifications.css',
278
- array(),
279
- TOOLSET_COMMON_VERSION
280
- );
281
- $this->styles['toolset-common'] = new Toolset_Style(
282
- 'toolset-common',
283
- $this->assets_url. '/res/css/toolset-common.css',
284
- array(),
285
- TOOLSET_COMMON_VERSION
286
- );
287
- $this->styles['toolset-promotion'] = new Toolset_Style(
288
- 'toolset-promotion',
289
- $this->assets_url. '/res/css/toolset-promotion.css',
290
- array( 'toolset-colorbox', 'onthego-admin-styles' ),
291
- TOOLSET_COMMON_VERSION
292
- );
293
- $this->styles['editor_addon_menu'] = new Toolset_Style(
294
- 'editor_addon_menu',
295
- $this->assets_url. '/visual-editor/res/css/pro_dropdown_2.css',
296
- array(),
297
- TOOLSET_COMMON_VERSION
298
- );
299
- $this->styles['editor_addon_menu_scroll'] = new Toolset_Style(
300
- 'editor_addon_menu_scroll',
301
- $this->assets_url. '/visual-editor/res/css/scroll.css',
302
- array(),
303
- TOOLSET_COMMON_VERSION
304
- );
305
-
306
- $this->styles['ddl-dialogs-forms-css'] = new Toolset_Style('ddl-dialogs-forms-css', $this->assets_url . '/utility/dialogs/css/dd-dialogs-forms.css', TOOLSET_VERSION);
307
- $this->styles['ddl-dialogs-general-css'] = new Toolset_Style('ddl-dialogs-general-css', $this->assets_url . '/utility/dialogs/css/dd-dialogs-general.css', array( 'wp-jquery-ui-dialog' ), TOOLSET_VERSION);
308
- $this->styles['ddl-dialogs-css'] = new Toolset_Style('ddl-dialogs-css', $this->assets_url . '/utility/dialogs/css/dd-dialogs.css', array('ddl-dialogs-general-css'), TOOLSET_VERSION );
309
-
310
- $this->styles['toolset-dialogs-overrides-css'] = new Toolset_Style(
311
- 'toolset-dialogs-overrides-css', $this->assets_url . '/res/css/toolset-dialogs.css', array(), TOOLSET_COMMON_VERSION
312
- );
313
-
314
- return apply_filters( 'toolset_add_registered_styles', $this->styles );
315
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
316
 
317
  protected function __initialize_scripts() {
318
- // ----------
319
  // Libraries
320
- // ----------
321
- $this->scripts['headjs'] = new Toolset_Script(
322
- 'headjs',
323
- $this->assets_url . "/res/lib/head.min.js",
324
- array(),
325
- TOOLSET_COMMON_VERSION,
326
- true
327
- );
328
- $this->scripts['jstorage'] = new Toolset_Script(
329
- 'jstorage',
330
- $this->assets_url . "/res/lib/jstorage.min.js",
331
- array(),
332
- TOOLSET_COMMON_VERSION,
333
- true
334
- );
335
-
336
- $this->scripts['toolset-select2-compatibility'] = new Toolset_Script(
337
- 'toolset-select2-compatibility',
338
- $this->assets_url . "/res/js/toolset-select2-compatibility.js",
339
- array( 'jquery' ),
340
- TOOLSET_COMMON_VERSION,
341
- true
342
- );
343
-
344
- $this->scripts['toolset_select2'] = new Toolset_Script(
345
- 'toolset_select2',
346
- $this->assets_url . "/res/lib/select2/select2.js",
347
- array( 'jquery', "toolset-select2-compatibility" ),
348
- '4.0.3',
349
- true
350
- );
351
- $this->scripts['toolset-colorbox'] = new Toolset_Script(
352
- 'toolset-colorbox',
353
- $this->assets_url . "/res//lib/colorbox/jquery.colorbox-min.js",
354
- array( 'jquery' ),
355
- '1.4.31',
356
- true
357
- );
358
-
359
- /**
360
- * For compatibility with ACF Plugin that's not using the right handle for this module (wp-event-manager)
361
- * we are using ACF handle to prevent unwanted overrides of window.wp.hooks namespace (******!)
362
- */
363
- $this->scripts['acf-input'] = new Toolset_Script(
364
- 'acf-input',
365
- $this->assets_url . "/res/lib/events-manager/event-manager.min.js",
366
- array(),
367
- '1.0',
368
- true
369
- );
370
-
371
- $this->scripts['toolset-event-manager'] = new Toolset_Script(
372
- 'toolset-event-manager',
373
- $this->assets_url . "/res/lib/toolset-event-manager/toolset-event-manager.min.js",
374
- array(),
375
- '1.0',
376
- true
377
- );
378
-
379
-
380
- $this->scripts['toolset-codemirror-script'] = new Toolset_Script(
381
- 'toolset-codemirror-script',
382
- $this->assets_url . '/visual-editor/res/js/codemirror/lib/codemirror.js',
383
- array( 'jquery' ),
384
- "5.5.0"
385
- );
386
- $this->scripts['toolset-meta-html-codemirror-overlay-script'] = new Toolset_Script(
387
- 'toolset-meta-html-codemirror-overlay-script',
388
- $this->assets_url . '/visual-editor/res/js/codemirror/addon/mode/overlay.js',
389
- array( 'toolset-codemirror-script' ),
390
- "5.5.0"
391
- );
392
- $this->scripts['toolset-meta-html-codemirror-xml-script'] = new Toolset_Script(
393
- 'toolset-meta-html-codemirror-xml-script',
394
- $this->assets_url . '/visual-editor/res/js/codemirror/mode/xml/xml.js',
395
- array( 'toolset-meta-html-codemirror-overlay-script' ),
396
- "5.5.0"
397
- );
398
- $this->scripts['toolset-meta-html-codemirror-css-script'] = new Toolset_Script(
399
- 'toolset-meta-html-codemirror-css-script',
400
- $this->assets_url . '/visual-editor/res/js/codemirror/mode/css/css.js',
401
- array( 'toolset-meta-html-codemirror-overlay-script' ),
402
- "5.5.0"
403
- );
404
- $this->scripts['toolset-meta-html-codemirror-js-script'] = new Toolset_Script(
405
- 'toolset-meta-html-codemirror-js-script',
406
- $this->assets_url . '/visual-editor/res/js/codemirror/mode/javascript/javascript.js',
407
- array( 'toolset-meta-html-codemirror-overlay-script' ),
408
- "5.5.0"
409
- );
410
- $this->scripts['toolset-meta-html-codemirror-utils-search'] = new Toolset_Script(
411
- 'toolset-meta-html-codemirror-utils-search',
412
- $this->assets_url . '/visual-editor/res/js/codemirror/addon/search/search.js',
413
- array( 'toolset-codemirror-script' ),
414
- "5.5.0"
415
- );
416
- $this->scripts['toolset-meta-html-codemirror-utils-search-cursor'] = new Toolset_Script(
417
- 'toolset-meta-html-codemirror-utils-search-cursor',
418
- $this->assets_url . '/visual-editor/res/js/codemirror/addon/search/searchcursor.js',
419
- array( 'toolset-meta-html-codemirror-utils-search' ),
420
- "5.5.0"
421
- );
422
- $this->scripts['toolset-meta-html-codemirror-utils-hint'] = new Toolset_Script(
423
- 'toolset-meta-html-codemirror-utils-hint',
424
- $this->assets_url . '/visual-editor/res/js/codemirror/addon/hint/show-hint.js',
425
- array( 'toolset-codemirror-script' ),
426
- "5.5.0"
427
- );
428
- $this->scripts['toolset-meta-html-codemirror-utils-hint-css'] = new Toolset_Script(
429
- 'toolset-meta-html-codemirror-utils-hint-css',
430
- $this->assets_url . '/visual-editor/res/js/codemirror/addon/hint/css-hint.js',
431
- array( 'toolset-meta-html-codemirror-utils-hint' ), "5.5.0"
432
- );
433
- $this->scripts['toolset-meta-html-codemirror-utils-panel'] = new Toolset_Script(
434
- 'toolset-meta-html-codemirror-utils-panel',
435
- $this->assets_url . '/visual-editor/res/js/codemirror/addon/display/panel.js',
436
- array( 'toolset-codemirror-script' ),
437
- "5.5.0"
438
- );
439
- // ----------
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
440
  // Custom scripts
441
- // ----------
442
- $this->scripts['toolset-utils'] = new Toolset_Script(
443
- 'toolset-utils',
444
- $this->assets_url . "/utility/js/utils.js",
445
- array( 'jquery', 'underscore', 'backbone', 'jquery-ui-core','jquery-ui-widget', 'jquery-ui-dialog' ),
446
- '1.2.2',
447
- true
448
- );
449
- $this->scripts['icl_editor-script'] = new Toolset_Script(
450
- 'icl_editor-script',
451
- $this->assets_url . '/visual-editor/res/js/icl_editor_addon_plugin.js',
452
- array( 'jquery', 'quicktags', 'wplink', 'toolset-codemirror-script' ),
453
- TOOLSET_COMMON_VERSION
454
- );
455
- $this->scripts['icl_media-manager-js'] = new Toolset_Script(
456
- 'icl_media-manager-js',
457
- $this->assets_url . '/visual-editor/res/js/icl_media_manager.js',
458
- array( 'icl_editor-script' ),
459
- TOOLSET_COMMON_VERSION
460
- );
461
- $this->scripts['wptoolset-parser'] = new Toolset_Script(
462
- 'wptoolset-parser',
463
- $this->assets_url . '/res/js/toolset-parser.js',
464
- array( 'jquery' ),
465
- TOOLSET_COMMON_VERSION,
466
- true
467
- );
468
- $this->scripts['toolset-promotion'] = new Toolset_Script(
469
- 'toolset-promotion',
470
- $this->assets_url . "/res/js/toolset-promotion.js",
471
- array( 'underscore', 'toolset-colorbox' ),
472
- TOOLSET_COMMON_VERSION,
473
- true
474
- );
475
- $this->scripts['toolset-settings'] = new Toolset_Script(
476
- 'toolset-settings',
477
- $this->assets_url . "/res/js/toolset-settings.js",
478
- array( 'jquery', 'underscore', 'toolset-utils' ),
479
- TOOLSET_COMMON_VERSION,
480
- true
481
- );
482
- $this->scripts['toolset-export-import'] = new Toolset_Script(
483
- 'toolset-export-import',
484
- $this->assets_url . "/res/js/toolset-export-import.js",
485
- array( 'jquery', 'underscore' ),
486
- TOOLSET_COMMON_VERSION,
487
- true
488
- );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
489
 
490
  $this->localize_script(
491
- 'toolset-utils',
492
- 'toolset_utils_texts',
493
- array(
494
- 'wpv_dont_show_it_again' => __( "Got it! Don't show this message again", 'wpv-views'),
495
- 'wpv_close' => __( 'Close', 'wpv-views')
496
- )
497
- );
498
-
499
  $this->localize_script(
500
- 'icl_editor-script',
501
- 'icl_editor_localization_texts',
502
- array(
503
- 'wpv_insert_conditional_shortcode' => __( 'Insert conditional shortcode', 'wpv-views' ),
504
- 'wpv_conditional_button' => __( 'conditional output', 'wpv-views' ),
505
- 'wpv_editor_callback_nonce' => wp_create_nonce( 'wpv_editor_callback' )
506
- )
507
- );
508
-
509
  $this->localize_script(
510
- 'icl_media-manager-js',
511
- 'icl_media_manager',
512
- array(
513
- 'only_img_allowed_here' => __( "You can only use an image file here", 'wpv-views' )
514
- )
515
- );
516
-
 
 
517
  $this->localize_script(
518
- 'toolset-settings',
519
- 'toolset_settings_texts',
520
- array(
521
- 'autosave_saving' => '<i class="fa fa-refresh fa-spin"></i>' . __( 'Saving...', 'wpv-views' ),
522
- 'autosave_saved' => '<i class="fa fa-check"></i>' . __( 'All changes saved', 'wpv-views' ),
523
- 'autosave_failed' => '<i class="fa fa-exclamation-triangle"></i>' . __( 'Saving failed. Please reload the page and try again.', 'wpv-views' )
524
- )
525
- );
526
-
527
- return apply_filters( 'toolset_add_registered_script', $this->scripts );
528
- }
 
 
 
 
529
 
530
  public function enqueue_scripts( $handles ) {
531
  if ( is_array( $handles ) ) {
@@ -541,6 +756,7 @@ class Toolset_Assets_Manager
541
  }
542
  }
543
 
 
544
  public function enqueue_styles( $handles ) {
545
  if ( is_array( $handles ) ) {
546
  foreach ( $handles as $handle ) {
@@ -549,12 +765,13 @@ class Toolset_Assets_Manager
549
  }
550
  }
551
  } else if ( is_string( $handles ) ) {
552
- if ( isset( $this->styles[ $handles] ) ) {
553
  $this->styles[ $handles ]->enqueue();
554
  }
555
  }
556
  }
557
 
 
558
  public function deregister_scripts( $handles ) {
559
  if ( is_array( $handles ) ) {
560
  foreach ( $handles as $handle ) {
@@ -571,6 +788,7 @@ class Toolset_Assets_Manager
571
  }
572
  }
573
 
 
574
  public function deregister_styles( $handles ) {
575
  if ( is_array( $handles ) ) {
576
  foreach ( $handles as $handle ) {
@@ -587,21 +805,55 @@ class Toolset_Assets_Manager
587
  }
588
  }
589
 
 
590
  public function register_script( $handle, $path = '', $deps = array(), $ver = false, $in_footer = false ) {
591
  if ( ! isset( $this->scripts[ $handle ] ) ) {
592
  $this->scripts[ $handle ] = new Toolset_Script( $handle, $path, $deps, $ver, $in_footer );
593
  }
594
  }
595
 
 
596
  public function register_style( $handle, $path = '', $deps = array(), $ver = false, $media = 'screen' ) {
597
  if ( ! isset( $this->styles[ $handle ] ) ) {
598
- $this->scripts[ $handle ] = new Toolset_Style( $handle, $path, $deps, $ver, $media );
599
  }
600
  }
601
 
 
602
  public function localize_script( $handle, $object, $args ) {
603
  if ( isset( $this->scripts[ $handle ] ) ) {
604
  $this->scripts[ $handle ]->localize( $object, $args );
605
  }
606
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
607
  }
6
 
7
  define( 'WPT_ASSETS_MANAGER', true );
8
 
9
+ class Toolset_Style {
 
10
 
11
  public function __construct( $handle, $path = 'wordpress_default', $deps = array(), $ver = false, $media = 'screen' ) {
12
+ $this->handle = $handle;
13
+ $this->path = $path;
14
+ $this->deps = $deps;
15
+ $this->ver = $ver;
16
+ $this->media = $media;
17
+
18
+ if (
19
+ $this->compare_versions()
20
  && $this->path != 'wordpress_default'
21
  ) {
22
  wp_register_style( $this->handle, $this->path, $this->deps, $this->ver, $this->media );
30
  }
31
 
32
  protected function compare_versions() {
33
+ global $wp_styles;
34
+
35
+ if ( isset( $wp_styles->registered ) ) {
36
+ $wpt_registered_styles = $wp_styles->registered;
37
+ if ( isset( $wpt_registered_styles[ $this->handle ] ) ) {
38
+ $registered = $wpt_registered_styles[ $this->handle ];
39
+ if ( (float) $registered->ver < (float) $this->ver ) {
40
+ $wp_styles->remove( $this->handle );
41
+
42
+ return true;
43
+ } else {
44
+ return false;
45
  }
46
  }
47
+ }
48
 
49
+ return $this->is_registered() === false;
50
  }
51
 
52
  public function deregister() {
65
  }
66
  }
67
 
68
+ class Toolset_Script {
69
+
70
  public function __construct( $handle, $path = 'wordpress_default', $deps = array(), $ver = false, $in_footer = false ) {
71
+ $this->handle = $handle;
72
+ $this->path = $path;
73
+ $this->deps = $deps;
74
+ $this->ver = $ver;
75
+ $this->in_footer = $in_footer;
76
+
77
+ if (
78
+ $this->compare_versions()
79
+ && $this->path != 'wordpress_default'
80
  ) {
81
  wp_register_script( $this->handle, $this->path, $this->deps, $this->ver, $this->in_footer );
82
  }
88
  }
89
  }
90
 
91
+ protected function compare_versions() {
92
+ global $wp_scripts;
93
 
94
+ if ( isset( $wp_scripts->registered ) ) {
95
  $wpt_registered_scripts = $wp_scripts->registered;
96
  if ( isset( $wpt_registered_scripts[ $this->handle ] ) ) {
97
+ $registered = $wpt_registered_scripts[ $this->handle ];
98
  if ( (float) $registered->ver < (float) $this->ver ) {
99
  $wp_scripts->remove( $this->handle );
100
+
101
  return true;
102
  } else {
103
  return false;
104
  }
105
  }
106
+ }
107
 
108
+ return $this->is_registered() === false;
109
+ }
110
 
111
  public function localize( $object, $args ) {
112
  if ( $this->is_registered() ) {
129
  }
130
  }
131
 
132
+
133
+
134
+ class Toolset_Assets_Manager {
135
+
136
+
137
  protected static $instance;
138
+
139
+
140
+ protected $styles = array();
141
+
142
+
143
+ protected $scripts = array();
144
+
145
+
146
+ /*
147
+ * All asset handles should be defined here as constants.
148
+ *
149
+ * NEVER EVER use handles defined here as hardcoded strings, they may change at any time.
150
+ */
151
+
152
+
153
+ // Scripts
154
+ //
155
+ //
156
+ const SCRIPT_BOOTSTRAP = 'toolset_bootstrap';
157
+
158
+ const SCRIPT_CODEMIRROR = 'toolset-codemirror-script';
159
+ const SCRIPT_CODEMIRROR_CSS = 'toolset-meta-html-codemirror-css-script';
160
+ const SCRIPT_CODEMIRROR_XML = 'toolset-meta-html-codemirror-xml-script';
161
+ const SCRIPT_CODEMIRROR_HTMLMIXED = 'toolset-meta-html-codemirror-htmlmixed-script';
162
+ const SCRIPT_CODEMIRROR_JS = 'toolset-meta-html-codemirror-js-script';
163
+ const SCRIPT_CODEMIRROR_OVERLAY = 'toolset-meta-html-codemirror-overlay-script';
164
+ const SCRIPT_CODEMIRROR_UTILS_SEARCH = 'toolset-meta-html-codemirror-utils-search';
165
+ const SCRIPT_CODEMIRROR_UTILS_SEARCH_CURSOR = 'toolset-meta-html-codemirror-utils-search-cursor';
166
+ const SCRIPT_CODEMIRROR_UTILS_PANEL = 'toolset-meta-html-codemirror-utils-panel';
167
+ const SCRIPT_CODEMIRROR_UTILS_HINT = 'toolset-meta-html-codemirror-utils-hint';
168
+ const SCRIPT_CODEMIRROR_UTILS_HINT_CSS = 'toolset-meta-html-codemirror-utils-hint-css';
169
+
170
+ const SCRIPT_COLORBOX = 'toolset-colorbox';
171
+ const SCRIPT_HEADJS = 'headjs';
172
+
173
+ const SCRIPT_ICL_EDITOR = 'icl_editor-script';
174
+ const SCRIPT_ICL_MEDIA_MANAGER = 'icl_media-manager-js';
175
+
176
+ const SCRIPT_KNOCKOUT = 'knockout';
177
+ const SCRIPT_JSCROLLPANE = 'toolset-jscrollpane';
178
+ const SCRIPT_JSTORAGE = 'jstorage';
179
+ const SCRIPT_MOUSEWHEEL = 'toolset-mousewheel';
180
+ const SCRIPT_SELECT2 = 'toolset_select2';
181
+ const SCRIPT_SELECT2_COMPATIBILITY = 'toolset-select2-compatibility';
182
+
183
+ const SCRIPT_TOOLSET_EVENT_MANAGER = 'toolset-event-manager';
184
+ const SCRIPT_TOOLSET_PARSER = 'wptoolset-parser';
185
+ const SCRIPT_TOOLSET_PROMOTION = 'toolset-promotion';
186
+ const SCRIPT_TOOLSET_SETTINGS = 'toolset-settings';
187
+ const SCRIPT_TOOLSET_EXPORT_IMPORT = 'toolset-export-import';
188
+
189
+ const SCRIPT_UTILS = 'toolset-utils';
190
+
191
+ /**
192
+ * For compatibility with ACF Plugin that's not using the right handle for this module (wp-event-manager)
193
+ * we are using ACF handle to prevent unwanted overrides of window.wp.hooks namespace (******!)
194
+ */
195
+ const SCRIPT_WP_EVENT_MANAGER = 'acf-input';
196
+
197
+ // Styles
198
+ //
199
+ //
200
+
201
+ const STYLE_CODEMIRROR = 'toolset-meta-html-codemirror-css';
202
+ const STYLE_CODEMIRROR_CSS_HINT = 'toolset-meta-html-codemirror-css-hint-css';
203
+
204
+ const STYLE_COLORBOX = 'toolset-colorbox';
205
+
206
+ const STYLE_DDL_DIALOGS_FORMS = 'ddl-dialogs-forms-css';
207
+ const STYLE_DDL_DIALOGS_GENERAL = 'ddl-dialogs-general-css';
208
+ const STYLE_DDL_DIALOGS = 'ddl-dialogs-css';
209
+
210
+ const STYLE_EDITOR_ADDON_MENU = 'editor_addon_menu';
211
+ const STYLE_EDITOR_ADDON_MENU_SCROLL = 'editor_addon_menu_scroll';
212
+
213
+ const STYLE_FONT_AWESOME = 'font-awesome';
214
+ const STYLE_NOTIFICATIONS = 'toolset-notifications-css';
215
+
216
+ const STYLE_SELECT2_CSS = 'toolset-select2-css';
217
+
218
+ // These two are identical
219
+ const STYLE_SELECT2_CSS_LAYOUTS_OVERRIDES = 'layouts-select2-overrides-css';
220
+ const STYLE_SELECT2_CSS_OVERRIDES = 'toolset-select2-overrides-css';
221
+
222
+ const STYLE_TOOLSET_BOOTSTRAP = 'toolset_bootstrap_styles';
223
+ const STYLE_TOOLSET_COMMON = 'toolset-common';
224
+ const STYLE_TOOLSET_DIALOGS_OVERRIDES = 'toolset-dialogs-overrides-css';
225
+ const STYLE_TOOLSET_FORMS_BACKEND = 'wpt-toolset-backend';
226
+ const STYLE_TOOLSET_PROMOTION = 'toolset-promotion';
227
+
228
+
229
+ // WordPress Core handles
230
+ //
231
+ //
232
+ const STYLE_JQUERY_UI_DIALOG = 'wp-jquery-ui-dialog';
233
+
234
+
235
  /**
236
+ * assets_url
237
+ *
238
+ * Base URL for the Toolset Common instance.
239
+ *
240
+ * @note Does not have a trailing slash due to untrailingslashit, add it when registering each asset.
241
+ * @since 2.0
242
+ */
243
+ protected $assets_url = '';
244
+
245
 
246
  protected function __construct() {
247
+
248
  if ( is_admin() ) {
249
  $this->assets_url = TOOLSET_COMMON_URL;
250
  } else {
251
  $this->assets_url = TOOLSET_COMMON_FRONTEND_URL;
252
  }
253
+
254
  $this->assets_url = untrailingslashit( $this->assets_url );
255
+
256
+ add_action( 'init', array( $this, 'init' ), 99 );
257
+
258
+ // Backend
259
+ add_action( 'admin_enqueue_scripts', array( $this, 'get_rid_of_default_scripts' ) );
260
+ add_action( 'admin_enqueue_scripts', array( $this, 'get_rid_of_default_styles' ) );
261
+
262
+ // Front-end
263
+ add_action( 'wp_enqueue_scripts', array( $this, 'get_rid_of_default_scripts' ) );
264
+ add_action( 'wp_enqueue_scripts', array( $this, 'get_rid_of_default_styles' ) );
265
+
266
+ add_action( 'toolset_enqueue_scripts', array( $this, 'enqueue_scripts' ), 10, 1 );
267
+ add_action( 'toolset_enqueue_styles', array( $this, 'enqueue_styles' ), 10, 1 );
268
+ add_action( 'toolset_localize_script', array( $this, 'localize_script' ), 10, 3 );
269
  }
270
 
271
+ /**
272
+ * @return Toolset_Assets_Manager
273
+ */
274
  final public static function getInstance() {
275
  static $instances = array();
276
  $called_class = get_called_class();
277
 
278
+ if ( isset( $instances[ $called_class ] ) ) {
279
  return $instances[ $called_class ];
280
  } else {
281
+ if ( class_exists( $called_class ) ) {
282
  $instances[ $called_class ] = new $called_class();
283
+
284
  return $instances[ $called_class ];
285
  } else {
286
  // This can unfortunately happen when the get_called_class() workaround for PHP 5.2 misbehaves.
290
 
291
  }
292
 
293
+
294
  public function init() {
295
  $this->__initialize_styles();
296
  $this->__initialize_scripts();
297
  }
298
+
299
+
300
  public function get_assets_url() {
301
  return $this->assets_url;
302
  }
303
 
304
+
305
+ /**
306
+ * Pushes to our scripts array other scripts so we can enqueue using our methods
307
+ *
308
  * @return void
 
309
  */
310
  public function get_rid_of_default_scripts() {
311
  global $wp_scripts;
316
  }
317
  }
318
 
319
+ /**
320
+ * Pushes to our scripts array other scripts so we can enqueue using our methods
321
+ *
322
  * @return void
 
323
  */
324
  public function get_rid_of_default_styles() {
325
  global $wp_styles;
331
  }
332
  }
333
 
334
+
335
  protected function __initialize_styles() {
336
+
337
  // Libraries
338
+ //
339
+ //
340
+
341
+ $this->register_style(
342
+ self::STYLE_SELECT2_CSS,
343
+ $this->assets_url . '/res/lib/select2/select2.css'
344
+ );
345
+
346
+ $this->register_style(
347
+ self::STYLE_SELECT2_CSS_LAYOUTS_OVERRIDES,
348
+ $this->assets_url . '/res/lib/select2/select2-overrides.css'
349
+ );
350
+
351
+ $this->register_style(
352
+ self::STYLE_FONT_AWESOME,
353
+ $this->assets_url . '/res/lib/font-awesome/css/font-awesome.min.css',
354
+ array(),
355
+ '4.4.0',
356
+ 'screen'
357
+ );
358
+
359
+ $this->register_style(
360
+ self::STYLE_CODEMIRROR,
361
+ $this->assets_url . '/visual-editor/res/js/codemirror/lib/codemirror.css',
362
+ array(),
363
+ "5.5.0"
364
+ );
365
+
366
+ $this->register_style(
367
+ self::STYLE_CODEMIRROR_CSS_HINT,
368
+ $this->assets_url . '/visual-editor/res/js/codemirror/addon/hint/show-hint.css',
369
+ array(),
370
+ "5.5.0"
371
+ );
372
+
373
+ $this->register_style(
374
+ self::STYLE_COLORBOX,
375
+ $this->assets_url . '/res/lib/colorbox/colorbox.css',
376
+ array(),
377
+ '1.4.31'
378
+ );
379
+
380
+
381
  // Custom styles
382
+ //
383
+ //
384
+
385
+ $this->register_style(
386
+ self::STYLE_SELECT2_CSS_OVERRIDES,
387
+ $this->assets_url . '/res/lib/select2/select2-overrides.css',
388
+ array( 'toolset-select2-css' )
389
+ );
390
+
391
+ $this->register_style(
392
+ self::STYLE_TOOLSET_FORMS_BACKEND,
393
+ $this->assets_url . '/toolset-forms/css/wpt-toolset-backend.css',
394
+ array(),
395
+ TOOLSET_COMMON_VERSION
396
+ );
397
+
398
+ $this->register_style(
399
+ self::STYLE_NOTIFICATIONS,
400
+ $this->assets_url . '/res/css/toolset-notifications.css',
401
+ array(),
402
+ TOOLSET_COMMON_VERSION
403
+ );
404
+
405
+ $this->register_style(
406
+ self::STYLE_TOOLSET_COMMON,
407
+ $this->assets_url . '/res/css/toolset-common.css',
408
+ array(),
409
+ TOOLSET_COMMON_VERSION
410
+ );
411
+
412
+ $this->register_style(
413
+ self::STYLE_TOOLSET_PROMOTION,
414
+ $this->assets_url . '/res/css/toolset-promotion.css',
415
+ array( self::STYLE_COLORBOX, 'onthego-admin-styles' ),
416
+ TOOLSET_COMMON_VERSION
417
+ );
418
+
419
+ $this->register_style(
420
+ self::STYLE_EDITOR_ADDON_MENU,
421
+ $this->assets_url . '/visual-editor/res/css/pro_dropdown_2.css',
422
+ array(),
423
+ TOOLSET_COMMON_VERSION
424
+ );
425
+
426
+ $this->register_style(
427
+ self::STYLE_EDITOR_ADDON_MENU_SCROLL,
428
+ $this->assets_url . '/visual-editor/res/css/scroll.css',
429
+ array(),
430
+ TOOLSET_COMMON_VERSION
431
+ );
432
+
433
+ $this->register_style(
434
+ self::STYLE_TOOLSET_BOOTSTRAP,
435
+ $this->assets_url . '/res/lib/bootstrap/css/bootstrap.css',
436
+ array(),
437
+ TOOLSET_COMMON_VERSION
438
+ );
439
+
440
+ $this->register_style(
441
+ self::STYLE_DDL_DIALOGS_FORMS,
442
+ $this->assets_url . '/utility/dialogs/css/dd-dialogs-forms.css',
443
+ TOOLSET_VERSION
444
+ );
445
+
446
+ $this->register_style(
447
+ self::STYLE_DDL_DIALOGS_GENERAL,
448
+ $this->assets_url . '/utility/dialogs/css/dd-dialogs-general.css',
449
+ array( self::STYLE_JQUERY_UI_DIALOG ),
450
+ TOOLSET_VERSION
451
+ );
452
+
453
+ $this->register_style(
454
+ self::STYLE_DDL_DIALOGS,
455
+ $this->assets_url . '/utility/dialogs/css/dd-dialogs.css',
456
+ array( self::STYLE_DDL_DIALOGS_GENERAL ),
457
+ TOOLSET_VERSION
458
+ );
459
+
460
+ $this->register_style(
461
+ self::STYLE_TOOLSET_DIALOGS_OVERRIDES,
462
+ $this->assets_url . '/res/css/toolset-dialogs.css',
463
+ array(),
464
+ TOOLSET_COMMON_VERSION
465
+ );
466
+
467
+ return apply_filters( 'toolset_add_registered_styles', $this->styles );
468
+ }
469
+
470
 
471
  protected function __initialize_scripts() {
472
+
473
  // Libraries
474
+ //
475
+ //
476
+
477
+ $this->register_script(
478
+ self::SCRIPT_HEADJS,
479
+ $this->assets_url . "/res/lib/head.min.js",
480
+ array(),
481
+ TOOLSET_COMMON_VERSION,
482
+ true
483
+ );
484
+
485
+ $this->register_script(
486
+ self::SCRIPT_JSTORAGE,
487
+ $this->assets_url . "/res/lib/jstorage.min.js",
488
+ array(),
489
+ TOOLSET_COMMON_VERSION,
490
+ true
491
+ );
492
+
493
+ $this->register_script(
494
+ self::SCRIPT_SELECT2_COMPATIBILITY,
495
+ $this->assets_url . "/res/js/toolset-select2-compatibility.js",
496
+ array( 'jquery' ),
497
+ TOOLSET_COMMON_VERSION,
498
+ true
499
+ );
500
+
501
+ $this->register_script(
502
+ self::SCRIPT_SELECT2,
503
+ $this->assets_url . "/res/lib/select2/select2.js",
504
+ array( 'jquery', self::SCRIPT_SELECT2_COMPATIBILITY ),
505
+ '4.0.3',
506
+ true
507
+ );
508
+
509
+ $this->register_script(
510
+ self::SCRIPT_COLORBOX,
511
+ $this->assets_url . "/res/lib/colorbox/jquery.colorbox-min.js",
512
+ array( 'jquery' ),
513
+ '1.4.31',
514
+ true
515
+ );
516
+
517
+ $this->register_script(
518
+ self::SCRIPT_BOOTSTRAP,
519
+ $this->assets_url . '/res/lib/bootstrap/js/' . $this->choose_script_version( 'bootstrap.min.js', 'bootstrap.js' ),
520
+ array( 'jquery' ),
521
+ '3.3.7',
522
+ true
523
+ );
524
+
525
+ $this->register_script(
526
+ self::SCRIPT_KNOCKOUT,
527
+ $this->assets_url . '/res/lib/knockout/' . $this->choose_script_version( 'knockout-3.4.0.js', 'knockout-3.4.0.debug.js' ),
528
+ array(),
529
+ '3.4.0'
530
+ );
531
+
532
+ $this->register_script(
533
+ self::SCRIPT_WP_EVENT_MANAGER,
534
+ $this->assets_url . "/res/lib/events-manager/event-manager.min.js",
535
+ array(),
536
+ '1.0',
537
+ true
538
+ );
539
+
540
+ $this->register_script(
541
+ self::SCRIPT_TOOLSET_EVENT_MANAGER,
542
+ $this->assets_url . "/res/lib/toolset-event-manager/toolset-event-manager.min.js",
543
+ array(),
544
+ '1.0',
545
+ true
546
+ );
547
+
548
+ $this->register_script(
549
+ self::SCRIPT_CODEMIRROR,
550
+ $this->assets_url . '/visual-editor/res/js/codemirror/lib/codemirror.js',
551
+ array( 'jquery' ),
552
+ "5.5.0"
553
+ );
554
+
555
+ $this->register_script(
556
+ self::SCRIPT_CODEMIRROR_OVERLAY,
557
+ $this->assets_url . '/visual-editor/res/js/codemirror/addon/mode/overlay.js',
558
+ array( self::SCRIPT_CODEMIRROR ),
559
+ "5.5.0"
560
+ );
561
+
562
+ $this->register_script(
563
+ self::SCRIPT_CODEMIRROR_XML,
564
+ $this->assets_url . '/visual-editor/res/js/codemirror/mode/xml/xml.js',
565
+ array( self::SCRIPT_CODEMIRROR_OVERLAY ),
566
+ "5.5.0"
567
+ );
568
+
569
+ $this->register_script(
570
+ self::SCRIPT_CODEMIRROR_CSS,
571
+ $this->assets_url . '/visual-editor/res/js/codemirror/mode/css/css.js',
572
+ array( self::SCRIPT_CODEMIRROR_OVERLAY ),
573
+ "5.5.0"
574
+ );
575
+
576
+ $this->register_script(
577
+ self::SCRIPT_CODEMIRROR_HTMLMIXED,
578
+ $this->assets_url . '/visual-editor/res/js/codemirror/mode/htmlmixed/htmlmixed.js',
579
+ array( self::SCRIPT_CODEMIRROR_OVERLAY ),
580
+ "5.5.0"
581
+ );
582
+
583
+ $this->register_script(
584
+ self::SCRIPT_CODEMIRROR_JS,
585
+ $this->assets_url . '/visual-editor/res/js/codemirror/mode/javascript/javascript.js',
586
+ array( self::SCRIPT_CODEMIRROR_OVERLAY ),
587
+ "5.5.0"
588
+ );
589
+
590
+ $this->register_script(
591
+ self::SCRIPT_CODEMIRROR_UTILS_SEARCH,
592
+ $this->assets_url . '/visual-editor/res/js/codemirror/addon/search/search.js',
593
+ array( self::SCRIPT_CODEMIRROR ),
594
+ "5.5.0"
595
+ );
596
+
597
+ $this->register_script(
598
+ self::SCRIPT_CODEMIRROR_UTILS_SEARCH_CURSOR,
599
+ $this->assets_url . '/visual-editor/res/js/codemirror/addon/search/searchcursor.js',
600
+ array( self::SCRIPT_CODEMIRROR_UTILS_SEARCH ),
601
+ "5.5.0"
602
+ );
603
+
604
+ $this->register_script(
605
+ self::SCRIPT_CODEMIRROR_UTILS_HINT,
606
+ $this->assets_url . '/visual-editor/res/js/codemirror/addon/hint/show-hint.js',
607
+ array( self::SCRIPT_CODEMIRROR ),
608
+ "5.5.0"
609
+ );
610
+
611
+ $this->register_script(
612
+ self::SCRIPT_CODEMIRROR_UTILS_HINT_CSS,
613
+ $this->assets_url . '/visual-editor/res/js/codemirror/addon/hint/css-hint.js',
614
+ array( self::SCRIPT_CODEMIRROR_UTILS_HINT ),
615
+ "5.5.0"
616
+ );
617
+
618
+ $this->register_script(
619
+ self::SCRIPT_CODEMIRROR_UTILS_PANEL,
620
+ $this->assets_url . '/visual-editor/res/js/codemirror/addon/display/panel.js',
621
+ array( self::SCRIPT_CODEMIRROR ),
622
+ "5.5.0"
623
+ );
624
+
625
  // Custom scripts
626
+ //
627
+ //
628
+
629
+ $this->register_script(
630
+ self::SCRIPT_UTILS,
631
+ $this->assets_url . "/utility/js/utils.js",
632
+ array( 'jquery', 'underscore', 'backbone', 'jquery-ui-core', 'jquery-ui-widget', 'jquery-ui-dialog' ),
633
+ '1.2.2',
634
+ true
635
+ );
636
+
637
+ $this->register_script(
638
+ self::SCRIPT_ICL_EDITOR,
639
+ $this->assets_url . '/visual-editor/res/js/icl_editor_addon_plugin.js',
640
+ array( 'jquery', 'quicktags', 'wplink', self::SCRIPT_CODEMIRROR ),
641
+ TOOLSET_COMMON_VERSION
642
+ );
643
+
644
+ $this->register_script(
645
+ self::SCRIPT_ICL_MEDIA_MANAGER,
646
+ $this->assets_url . '/visual-editor/res/js/icl_media_manager.js',
647
+ array( self::SCRIPT_ICL_EDITOR ),
648
+ TOOLSET_COMMON_VERSION
649
+ );
650
+
651
+ $this->register_script(
652
+ self::SCRIPT_JSCROLLPANE,
653
+ "{$this->assets_url}/visual-editor/res/js/scrollbar.js",
654
+ array('jquery'),
655
+ '2.0.0'
656
+ );
657
+
658
+
659
+ $this->register_script(
660
+ self::SCRIPT_MOUSEWHEEL,
661
+ "{$this->assets_url}/visual-editor/res/js/mousewheel.js",
662
+ array( self::SCRIPT_JSCROLLPANE ),
663
+ TOOLSET_COMMON_VERSION
664
+ );
665
+
666
+
667
+ $this->register_script(
668
+ self::SCRIPT_TOOLSET_PARSER,
669
+ $this->assets_url . '/res/js/toolset-parser.js',
670
+ array( 'jquery' ),
671
+ TOOLSET_COMMON_VERSION,
672
+ true
673
+ );
674
+
675
+ $this->register_script(
676
+ self::SCRIPT_TOOLSET_PROMOTION,
677
+ $this->assets_url . "/res/js/toolset-promotion.js",
678
+ array( 'underscore', self::SCRIPT_COLORBOX ),
679
+ TOOLSET_COMMON_VERSION,
680
+ true
681
+ );
682
+
683
+ $this->register_script(
684
+ self::SCRIPT_TOOLSET_SETTINGS,
685
+ $this->assets_url . "/res/js/toolset-settings.js",
686
+ array( 'jquery', 'underscore', self::SCRIPT_UTILS ),
687
+ TOOLSET_COMMON_VERSION,
688
+ true
689
+ );
690
+
691
+ $this->register_script(
692
+ self::SCRIPT_TOOLSET_EXPORT_IMPORT,
693
+ $this->assets_url . "/res/js/toolset-export-import.js",
694
+ array( 'jquery', 'underscore' ),
695
+ TOOLSET_COMMON_VERSION,
696
+ true
697
+ );
698
 
699
  $this->localize_script(
700
+ self::SCRIPT_UTILS,
701
+ 'toolset_utils_texts',
702
+ array(
703
+ 'wpv_dont_show_it_again' => __( "Got it! Don't show this message again", 'wpv-views' ),
704
+ 'wpv_close' => __( 'Close', 'wpv-views' )
705
+ )
706
+ );
707
+
708
  $this->localize_script(
709
+ self::SCRIPT_ICL_EDITOR,
710
+ 'icl_editor_localization_texts',
711
+ array(
712
+ 'wpv_insert_conditional_shortcode' => __( 'Insert conditional shortcode', 'wpv-views' ),
713
+ 'wpv_conditional_button' => __( 'conditional output', 'wpv-views' ),
714
+ 'wpv_editor_callback_nonce' => wp_create_nonce( 'wpv_editor_callback' )
715
+ )
716
+ );
717
+
718
  $this->localize_script(
719
+ self::SCRIPT_ICL_MEDIA_MANAGER,
720
+ 'icl_media_manager',
721
+ array(
722
+ 'only_img_allowed_here' => __( "You can only use an image file here", 'wpv-views' )
723
+ )
724
+ );
725
+
726
+ Toolset_Settings::get_instance();
727
+
728
  $this->localize_script(
729
+ self::SCRIPT_TOOLSET_SETTINGS,
730
+ 'toolset_settings_texts',
731
+ array(
732
+ 'autosave_saving' => '<i class="fa fa-refresh fa-spin"></i>' . __( 'Saving...', 'wpv-views' ),
733
+ 'autosave_saved' => '<i class="fa fa-check"></i>' . __( 'All changes saved', 'wpv-views' ),
734
+ 'autosave_failed' => '<i class="fa fa-exclamation-triangle"></i>' . __( 'Saving failed. Please reload the page and try again.', 'wpv-views' ),
735
+ 'toolset_bootstrap_version_filter' => apply_filters( 'toolset-toolset_bootstrap_version_filter', false ),
736
+ 'toolset_bootstrap_version_selected' => apply_filters( 'toolset-toolset_bootstrap_version_manually_selected', false ),
737
+ 'toolset_theme_loads_own_bs' => __( 'This theme loads its own version of Bootstrap. You should select this option to avoid loading Bootstrap twice and causing display problems on the site\'s front-end', 'wpv_views' )
738
+ )
739
+ );
740
+
741
+ return apply_filters( 'toolset_add_registered_script', $this->scripts );
742
+ }
743
+
744
 
745
  public function enqueue_scripts( $handles ) {
746
  if ( is_array( $handles ) ) {
756
  }
757
  }
758
 
759
+
760
  public function enqueue_styles( $handles ) {
761
  if ( is_array( $handles ) ) {
762
  foreach ( $handles as $handle ) {
765
  }
766
  }
767
  } else if ( is_string( $handles ) ) {
768
+ if ( isset( $this->styles[ $handles ] ) ) {
769
  $this->styles[ $handles ]->enqueue();
770
  }
771
  }
772
  }
773
 
774
+
775
  public function deregister_scripts( $handles ) {
776
  if ( is_array( $handles ) ) {
777
  foreach ( $handles as $handle ) {
788
  }
789
  }
790
 
791
+
792
  public function deregister_styles( $handles ) {
793
  if ( is_array( $handles ) ) {
794
  foreach ( $handles as $handle ) {
805
  }
806
  }
807
 
808
+
809
  public function register_script( $handle, $path = '', $deps = array(), $ver = false, $in_footer = false ) {
810
  if ( ! isset( $this->scripts[ $handle ] ) ) {
811
  $this->scripts[ $handle ] = new Toolset_Script( $handle, $path, $deps, $ver, $in_footer );
812
  }
813
  }
814
 
815
+
816
  public function register_style( $handle, $path = '', $deps = array(), $ver = false, $media = 'screen' ) {
817
  if ( ! isset( $this->styles[ $handle ] ) ) {
818
+ $this->styles[ $handle ] = new Toolset_Style( $handle, $path, $deps, $ver, $media );
819
  }
820
  }
821
 
822
+
823
  public function localize_script( $handle, $object, $args ) {
824
  if ( isset( $this->scripts[ $handle ] ) ) {
825
  $this->scripts[ $handle ]->localize( $object, $args );
826
  }
827
  }
828
+
829
+
830
+ /**
831
+ * Decide if WordPress is in the "script debug" mode where it includes all its script in a non-minified form.
832
+ *
833
+ * If it is, we should do the same.
834
+ *
835
+ * @return bool
836
+ * @since 2.3
837
+ */
838
+ public function is_script_debug_mode_on() {
839
+ return ( defined( 'SCRIPT_DEBUG' ) && true == SCRIPT_DEBUG );
840
+ }
841
+
842
+
843
+ /**
844
+ * Choose a production (usually minified) or debugging (non-minified) version of
845
+ * a script depending on the script debugging mode.
846
+ *
847
+ * See SCRIPT_DEBUG constant
848
+ *
849
+ * @param string $production_version File name of the production script version.
850
+ * @param string $debugging_version File name of the debugging script version.
851
+ *
852
+ * @return string
853
+ * @since 2.2.7
854
+ */
855
+ private function choose_script_version( $production_version, $debugging_version ) {
856
+ return ( $this->is_script_debug_mode_on() ? $debugging_version : $production_version );
857
+ }
858
+
859
  }
library/toolset/toolset-common/inc/toolset.bootstrap.loader.class.php ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if ( ! class_exists( 'Toolset_Bootstrap_Loader' ) ) {
4
+
5
+ Class Toolset_Bootstrap_Loader
6
+ {
7
+ private static $instance;
8
+
9
+ function __construct() {
10
+ $settings = Toolset_Settings::get_instance();
11
+ if( $settings->toolset_bootstrap_version === "3.toolset" ){
12
+ add_action( 'wp_enqueue_scripts', array(&$this, 'enqueue_bootstrap_in_front_end') );
13
+ }
14
+
15
+ }
16
+
17
+ public static function getInstance() {
18
+ if( !self::$instance ) {
19
+ self::$instance = new Toolset_Bootstrap_Loader();
20
+ }
21
+
22
+ return self::$instance;
23
+ }
24
+
25
+
26
+ public function enqueue_bootstrap_in_front_end()
27
+ {
28
+
29
+ do_action( 'toolset_enqueue_styles', array(
30
+ 'toolset_bootstrap_styles',
31
+ ) );
32
+
33
+ do_action( 'toolset_enqueue_scripts', array(
34
+ 'toolset_bootstrap',
35
+ ) );
36
+
37
+ }
38
+ }
39
+ }
library/toolset/toolset-common/inc/toolset.css.component.class.php CHANGED
@@ -1,7 +1,6 @@
1
  <?php
2
  /*
3
  * This class will take care of loading bootstrap components buttons and custom buttons added by user
4
- * Buttons will be visible on pages defined in $this->allowed_pages()
5
  *
6
  * since: Layouts 1.8
7
  */
@@ -16,17 +15,25 @@ if ( ! class_exists( 'Toolset_CssComponent' ) ) {
16
  const BOOTSTRAP_CSS_DOC_BASE = 'http://getbootstrap.com/css/';
17
 
18
  function __construct() {
19
-
20
- add_action( 'admin_init', array( $this, 'admin_init' ) );
21
- add_action('init', array($this, 'load_dialog_boxes'));
22
-
23
- add_filter('toolset_add_registered_script', array(&$this, 'add_register_scripts'));
24
- add_filter('toolset_add_registered_styles', array(&$this, 'add_register_styles'));
25
- add_action('admin_print_scripts', array(&$this, 'admin_enqueue_scripts'));
26
-
 
 
 
 
 
 
 
27
  add_action( 'wp_ajax_toolset_bs_update_option', array($this, 'toolset_bs_update_option') );
 
28
  }
29
-
30
  public static function getInstance() {
31
  if( !self::$instance ) {
32
  self::$instance = new Toolset_CssComponent();
@@ -35,6 +42,41 @@ if ( ! class_exists( 'Toolset_CssComponent' ) ) {
35
  return self::$instance;
36
  }
37
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
38
  function add_toggle_button($buttons)
39
  {
40
  if(wp_script_is( 'quicktags' )) {
@@ -53,6 +95,7 @@ if ( ! class_exists( 'Toolset_CssComponent' ) ) {
53
  public function add_register_styles($styles){
54
  $styles['toolset-bs-component-style'] = new Toolset_Style( 'toolset-bs-component-style', TOOLSET_COMMON_URL . '/res/css/toolset-bs-component.css', array(), TOOLSET_VERSION );
55
  $styles['glyphicons'] = new Toolset_Style( 'glyphicons', TOOLSET_COMMON_URL. '/res/lib/glyphicons/css/glyphicons.css', array(), '3.3.5', 'screen' );
 
56
  return $styles;
57
  }
58
 
@@ -68,10 +111,11 @@ if ( ! class_exists( 'Toolset_CssComponent' ) ) {
68
 
69
  wp_die();
70
  }
71
-
 
72
  public function admin_enqueue_scripts()
73
  {
74
-
75
  if(!$this->is_allowed_page()){
76
  return;
77
  }
@@ -82,16 +126,24 @@ if ( ! class_exists( 'Toolset_CssComponent' ) ) {
82
  'ddl-dialogs-css',
83
  'glyphicons'
84
  ));
 
 
 
 
 
 
85
 
86
  $get_components = $this->all_css_components();
87
-
88
  do_action('toolset_enqueue_scripts', array(
89
  'toolset-css-component-buttons',
90
- 'toolset-css-component-events'
 
91
  ));
92
 
93
  do_action('toolset_localize_script', 'toolset-css-component-events', 'Toolset_CssComponent', array(
94
  'DDL_CSS_JS' => array(
 
95
  'available_css' => $get_components['css'],
96
  'button_toggle_show' => __('Show Bootstrap buttons','ddl-layouts'),
97
  'button_toggle_hide' => __('Hide Bootstrap buttons','ddl-layouts'),
@@ -111,21 +163,34 @@ if ( ! class_exists( 'Toolset_CssComponent' ) ) {
111
  )
112
  );
113
  }
114
-
115
-
116
- // list of allowed pages (only there we will load buttons)
117
- public function allowed_pages(){
118
- return array('dd_layouts_edit','views-editor','ct-editor','view-archives-editor');
119
- }
120
 
121
  // check is allowed page currently loaded
122
  public function is_allowed_page(){
123
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
124
  $bootstrap_available = false;
125
-
126
- $bootstrap_version_option = get_option( 'wpv_options' );
127
-
128
- if(isset($bootstrap_version_option["wpv_bootstrap_version"]) && $bootstrap_version_option["wpv_bootstrap_version"] != "-1"){
129
  $bootstrap_available = true;
130
  }
131
 
@@ -133,107 +198,66 @@ if ( ! class_exists( 'Toolset_CssComponent' ) ) {
133
  $bootstrap_available = true;
134
  }
135
 
136
- $get_page = (isset($_GET['page']) && $_GET['page']) ? sanitize_text_field( $_GET['page'] ) : null;
137
-
138
- if(!in_array($get_page, $this->allowed_pages()) || $bootstrap_available === false){
139
- return false;
140
- } else {
141
- return true;
142
- }
143
- }
144
-
145
-
146
- function admin_init(){
147
-
148
- if(!$this->is_allowed_page()){
149
- return;
150
- }
151
-
152
- // register buttons for tinyMCE
153
- add_filter( 'mce_external_plugins', array($this,'toolset_tinymce_register_buttons') );
154
- add_filter( "mce_buttons_3", array( $this, "register_buttons_editor_components" ) );
155
- add_filter( "mce_buttons_3", array( $this, "register_buttons_editor_css" ) );
156
- add_filter( "mce_buttons_3", array( $this, "register_buttons_other" ) );
157
- add_filter('mce_buttons', array(&$this, 'add_toggle_button') );
158
- }
159
-
160
- function load_dialog_boxes(){
161
-
162
- $dialogs = array();
163
- $dialogs[] = new WPDDL_CssComponenetDialog( array('toolset_page_views-editor','toolset_page_dd_layouts_edit','toolset_page_view-archives-editor','toolset_page_ct-editor') );
164
-
165
- foreach( $dialogs as &$dialog ){
166
- add_action('current_screen', array(&$dialog, 'init_screen_render') );
167
- }
168
- return $dialogs;
169
- }
170
 
171
- /*
172
- * TinyMCE buttons
173
- */
174
 
175
- public function toolset_tinymce_register_buttons(){
176
-
177
- if(wp_script_is( 'quicktags' )) {
178
- //enqueue TinyMCE plugin script with its ID.
179
- $get_components = $this->all_css_components();
180
- foreach($get_components['components'] as $key=>$value){
181
- $plugin_array["css_components_".$key."_button"] = TOOLSET_COMMON_URL . "/res/js/toolset-bs-component-buttons.js";
182
  }
183
- foreach($get_components['css'] as $key=>$value){
184
- $plugin_array["css_".$key."_button"] = TOOLSET_COMMON_URL . "/res/js/toolset-bs-component-buttons.js";
 
185
  }
186
-
187
- foreach($get_components['other'] as $key=>$value){
188
- $plugin_array["other_".$key."_button"] = TOOLSET_COMMON_URL . "/res/js/toolset-bs-component-buttons.js";
189
  }
190
 
191
- $plugin_array['css_components_toolbar_toggle'] = TOOLSET_COMMON_URL . "/res/js/toolset-bs-component-buttons.js";
192
- }
 
193
 
194
- return $plugin_array;
195
 
196
- }
197
-
198
- function register_buttons_editor_components( $buttons ) {
199
- if(wp_script_is( 'quicktags' )) {
200
- //register buttons with their id.
201
- $get_components = $this->all_css_components();
202
- foreach($get_components['components'] as $key=>$value){
203
- array_push( $buttons, "css_components_".$key."_button" );
204
  }
205
-
206
  }
207
 
208
- return $buttons;
209
- }
210
-
211
- function register_buttons_editor_css($buttons){
212
- if(wp_script_is( 'quicktags' )) {
213
- //register buttons with their id.
214
- $get_components = $this->all_css_components();
215
- foreach($get_components['css'] as $key=>$value){
216
- array_push( $buttons, "css_".$key."_button" );
217
- }
218
- }
219
 
220
- return $buttons;
221
  }
 
222
 
223
- function register_buttons_other($buttons){
224
- if(wp_script_is( 'quicktags' )) {
225
- //register buttons with their id.
226
- $get_components = $this->all_css_components();
227
- foreach($get_components['other'] as $key=>$value){
228
- array_push( $buttons, "other_".$key."_button" );
229
- }
230
 
231
- }
232
 
233
- return $buttons;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
234
  }
235
 
236
- /////////////////
237
 
238
  function preload_styles(){
239
 
@@ -241,11 +265,30 @@ if ( ! class_exists( 'Toolset_CssComponent' ) ) {
241
  'toolset-bs-component-style',
242
  'wp-jquery-ui-dialog',
243
  'ddl-dialogs-css',
244
- 'glyphicons'
 
245
  ));
246
  }
247
 
 
 
 
 
 
 
 
 
248
 
 
 
 
 
 
 
 
 
 
 
249
 
250
  public function get_extra_editor_buttons(){
251
  $additional_buttons = apply_filters('extra_editor_buttons', array());
@@ -340,7 +383,7 @@ if ( ! class_exists( 'Toolset_CssComponent' ) ) {
340
  ),
341
  'badges' => array(
342
  'url' => self::BOOTSTRAP_CSS_COMPONENTS_DOC_BASE.'#badges',
343
- 'description' => __('Easily highlight new or unread items by adding a <span class="badge"> to links, Bootstrap navs, and more.','ddl-layouts'),
344
  'button_icon' => ' glyphicon glyphicon-certificate ',
345
  'button_icon_size' => 'ont-icon-18',
346
  'dialog_icon_size' => 'ont-icon-72',
@@ -503,12 +546,17 @@ if ( ! class_exists( 'Toolset_CssComponent' ) ) {
503
 
504
  }
505
 
506
- class WPDDL_CssComponenetDialog extends Toolset_DialogBoxes{
507
 
508
  function __construct( $screens ){
509
  parent::__construct( $screens );
 
 
 
 
 
510
  }
511
-
512
 
513
  public function template(){
514
  ob_start();?>
1
  <?php
2
  /*
3
  * This class will take care of loading bootstrap components buttons and custom buttons added by user
 
4
  *
5
  * since: Layouts 1.8
6
  */
15
  const BOOTSTRAP_CSS_DOC_BASE = 'http://getbootstrap.com/css/';
16
 
17
  function __construct() {
18
+
19
+
20
+
21
+ if(is_admin()){
22
+ add_action( 'admin_head', array( $this, 'add_bs_component_buttons_to_tinymce' ) );
23
+ add_action( 'admin_print_scripts', array(&$this, 'admin_enqueue_scripts') );
24
+ } else {
25
+ add_action( 'init', array( $this, 'add_bs_component_buttons_to_tinymce' ) );
26
+ add_action( 'wp_print_scripts', array(&$this, 'admin_enqueue_scripts') );
27
+ }
28
+
29
+ add_action( 'init', array($this, 'load_dialog_boxes')) ;
30
+ add_filter( 'toolset_add_registered_script', array(&$this, 'add_register_scripts') );
31
+ add_filter( 'toolset_add_registered_styles', array(&$this, 'add_register_styles') );
32
+
33
  add_action( 'wp_ajax_toolset_bs_update_option', array($this, 'toolset_bs_update_option') );
34
+
35
  }
36
+
37
  public static function getInstance() {
38
  if( !self::$instance ) {
39
  self::$instance = new Toolset_CssComponent();
42
  return self::$instance;
43
  }
44
 
45
+ function add_bs_component_buttons_to_tinymce() {
46
+ $allowed_page = $this->is_allowed_page();
47
+ if(!$allowed_page){
48
+ return;
49
+ }
50
+
51
+ if ( current_user_can( 'edit_posts' ) && current_user_can( 'edit_pages' ) ) {
52
+ add_filter( 'mce_buttons', array($this,'add_toggle_button') );
53
+ add_filter( 'mce_buttons_3', array($this,'register_bs_component_tinymce_buttons') );
54
+ add_filter( 'mce_external_plugins', array($this,'add_bs_component_tinymce_buttons') );
55
+ }
56
+ }
57
+
58
+ function register_bs_component_tinymce_buttons( $buttons ) {
59
+ $get_components = $this->all_css_components();
60
+ foreach($get_components['components'] as $key=>$value){
61
+ array_push( $buttons, 'css_components_'.$key.'_button' );
62
+ }
63
+ foreach($get_components['css'] as $key=>$value){
64
+ array_push( $buttons, 'css_'.$key.'_button' );
65
+ }
66
+
67
+ foreach($get_components['other'] as $key=>$value){
68
+ array_push( $buttons, 'css_components_'.$key.'_button' );
69
+ }
70
+
71
+ return $buttons;
72
+ }
73
+
74
+ function add_bs_component_tinymce_buttons( $plugin_array ) {
75
+
76
+ $plugin_array['bs_component_buttons_script'] = TOOLSET_COMMON_URL . "/res/js/toolset-bs-component-tinymce.js";
77
+ return $plugin_array;
78
+ }
79
+
80
  function add_toggle_button($buttons)
81
  {
82
  if(wp_script_is( 'quicktags' )) {
95
  public function add_register_styles($styles){
96
  $styles['toolset-bs-component-style'] = new Toolset_Style( 'toolset-bs-component-style', TOOLSET_COMMON_URL . '/res/css/toolset-bs-component.css', array(), TOOLSET_VERSION );
97
  $styles['glyphicons'] = new Toolset_Style( 'glyphicons', TOOLSET_COMMON_URL. '/res/lib/glyphicons/css/glyphicons.css', array(), '3.3.5', 'screen' );
98
+ $styles['onthego-admin-styles'] = new Toolset_Style( 'onthego-admin-styles', ON_THE_GO_SYSTEMS_BRANDING_REL_PATH .'onthego-styles/onthego-styles.css', array(), TOOLSET_VERSION );
99
  return $styles;
100
  }
101
 
111
 
112
  wp_die();
113
  }
114
+
115
+
116
  public function admin_enqueue_scripts()
117
  {
118
+
119
  if(!$this->is_allowed_page()){
120
  return;
121
  }
126
  'ddl-dialogs-css',
127
  'glyphicons'
128
  ));
129
+
130
+ $current_screen = 'front_end';
131
+ if(is_admin()){
132
+ $get_screen = get_current_screen();
133
+ $current_screen = $get_screen->base;
134
+ }
135
 
136
  $get_components = $this->all_css_components();
137
+
138
  do_action('toolset_enqueue_scripts', array(
139
  'toolset-css-component-buttons',
140
+ 'toolset-css-component-events',
141
+ 'toolset-event-manager'
142
  ));
143
 
144
  do_action('toolset_localize_script', 'toolset-css-component-events', 'Toolset_CssComponent', array(
145
  'DDL_CSS_JS' => array(
146
+ 'current_screen' => $current_screen,
147
  'available_css' => $get_components['css'],
148
  'button_toggle_show' => __('Show Bootstrap buttons','ddl-layouts'),
149
  'button_toggle_hide' => __('Hide Bootstrap buttons','ddl-layouts'),
163
  )
164
  );
165
  }
166
+
 
 
 
 
 
167
 
168
  // check is allowed page currently loaded
169
  public function is_allowed_page(){
170
+
171
+
172
+ $allowed_screens = array(
173
+ 'toolset_page_views-editor',
174
+ 'toolset_page_ct-editor',
175
+ 'toolset_page_view-archives-editor',
176
+ 'toolset_page_dd_layouts_edit',
177
+ 'page',
178
+ 'post',
179
+ );
180
+
181
+ $allowed_pages = array(
182
+ 'dd_layouts_edit',
183
+ 'views-editor',
184
+ 'ct-editor',
185
+ 'view-archives-editor'
186
+ );
187
+
188
+
189
+
190
  $bootstrap_available = false;
191
+ $bootstrap_version = Toolset_Settings::get_instance();
192
+
193
+ if(isset($bootstrap_version->toolset_bootstrap_version) && $bootstrap_version->toolset_bootstrap_version != "-1"){
 
194
  $bootstrap_available = true;
195
  }
196
 
198
  $bootstrap_available = true;
199
  }
200
 
201
+ if(is_admin()){
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
202
 
203
+ $screen_id = '';
204
+ $screen_base = '';
205
+ $screen = get_current_screen();
206
 
207
+ if(isset($screen)){
208
+ $screen_id = $screen->id;
209
+ $screen_base = (isset($screen->base)) ? $screen->base : false;
 
 
 
 
210
  }
211
+
212
+ if(in_array($screen_id, $allowed_screens) && $bootstrap_available === true){
213
+ return true;
214
  }
215
+
216
+ if(in_array($screen_base, $allowed_screens) && $bootstrap_available === true){
217
+ return true;
218
  }
219
 
220
+ if(isset($_GET['page']) && in_array($_GET['page'], $allowed_pages) && $bootstrap_available === true){
221
+ return true;
222
+ }
223
 
 
224
 
225
+ } else {
226
+ if ( isset( $_GET['toolset_editor'] ) === true ) {
227
+ return true;
 
 
 
 
 
228
  }
 
229
  }
230
 
231
+ return false;
 
 
 
 
 
 
 
 
 
 
232
 
 
233
  }
234
+
235
 
236
+ function load_dialog_boxes(){
 
 
 
 
 
 
237
 
238
+ $post_types = get_post_types(array('_builtin'=>false));
239
 
240
+ $dialogs = array();
241
+ $dialogs[] = new WPDDL_CssComponentDialog(
242
+ array_merge(
243
+ array(
244
+ 'toolset_page_views-editor',
245
+ 'toolset_page_dd_layouts_edit',
246
+ 'toolset_page_view-archives-editor',
247
+ 'toolset_page_ct-editor',
248
+ 'page',
249
+ 'post'
250
+ ),
251
+ $post_types
252
+ )
253
+ );
254
+
255
+ foreach( $dialogs as &$dialog ){
256
+ add_action('current_screen', array(&$dialog, 'init_screen_render') );
257
+ }
258
+ return $dialogs;
259
  }
260
 
 
261
 
262
  function preload_styles(){
263
 
265
  'toolset-bs-component-style',
266
  'wp-jquery-ui-dialog',
267
  'ddl-dialogs-css',
268
+ 'glyphicons',
269
+ 'onthego-admin-styles'
270
  ));
271
  }
272
 
273
+ function is_custom_post_type( $post = NULL )
274
+ {
275
+ $all_custom_post_types = get_post_types( array ( '_builtin' => true ) );
276
+
277
+ // there are no custom post types
278
+ if ( empty ( $all_custom_post_types ) ){
279
+ return false;
280
+ }
281
 
282
+ $custom_types = array_keys( $all_custom_post_types );
283
+ $current_post_type = get_post_type( $post );
284
+
285
+ // could not detect current type
286
+ if ( ! $current_post_type ){
287
+ return false;
288
+ }
289
+
290
+ return in_array( $current_post_type, $custom_types );
291
+ }
292
 
293
  public function get_extra_editor_buttons(){
294
  $additional_buttons = apply_filters('extra_editor_buttons', array());
383
  ),
384
  'badges' => array(
385
  'url' => self::BOOTSTRAP_CSS_COMPONENTS_DOC_BASE.'#badges',
386
+ 'description' => __('Easily highlight new or unread items by adding a <span class="badge"></span> to links, Bootstrap navs, and more.','ddl-layouts'),
387
  'button_icon' => ' glyphicon glyphicon-certificate ',
388
  'button_icon_size' => 'ont-icon-18',
389
  'dialog_icon_size' => 'ont-icon-72',
546
 
547
  }
548
 
549
+ class WPDDL_CssComponentDialog extends Toolset_DialogBoxes{
550
 
551
  function __construct( $screens ){
552
  parent::__construct( $screens );
553
+
554
+ if(!is_admin() && isset($_GET['toolset_editor'])){
555
+ add_action( 'wp_print_scripts', array( &$this, 'enqueue_scripts' ), 999 );
556
+ add_action( 'wp_footer', array( &$this, 'template' ) );
557
+ }
558
  }
559
+
560
 
561
  public function template(){
562
  ob_start();?>
library/toolset/toolset-common/inc/toolset.export.import.screen.class.php CHANGED
@@ -12,7 +12,7 @@ if ( ! defined( 'WPT_EXPORT_IMPORT_SCREEN' ) ) {
12
  * @since 1.9
13
  */
14
 
15
- if ( ! class_exists( 'Toolset_Export_Import_Screen' ) ) {
16
 
17
  /**
18
  * Class to show promotion message.
@@ -119,10 +119,15 @@ if ( ! class_exists( 'Toolset_Export_Import_Screen' ) ) {
119
  </p>
120
  <?php echo $export_import_content; ?>
121
  <div class="toolset-debug-info-helper">
 
 
 
 
 
122
  <p>
123
  <?php
124
  echo sprintf(
125
- __( 'Need help? Grab some %1$sdebug information%2$s.', 'wpv-views' ),
126
  '<a href="' . admin_url( 'admin.php?page=toolset-debug-information' ) . '">',
127
  '</a>'
128
  );
12
  * @since 1.9
13
  */
14
 
15
+ if ( ! class_exists( 'Toolset_Export_Import_Screen', false ) ) {
16
 
17
  /**
18
  * Class to show promotion message.
119
  </p>
120
  <?php echo $export_import_content; ?>
121
  <div class="toolset-debug-info-helper">
122
+ <p>
123
+ <?php
124
+ echo __( 'Sometimes, our Customer Support personnel ask you to provide debug information. This information helps them give you quicker and better support.', 'wpv-views' );
125
+ ?>
126
+ </p>
127
  <p>
128
  <?php
129
  echo sprintf(
130
+ __( 'To get this information, go to %1$sToolset Debug Information%2$s.', 'wpv-views' ),
131
  '<a href="' . admin_url( 'admin.php?page=toolset-debug-information' ) . '">',
132
  '</a>'
133
  );
library/toolset/toolset-common/inc/toolset.function.helpers.php CHANGED
@@ -669,4 +669,52 @@ if ( ! function_exists( 'wpv_evaluate_expression' ) ) {
669
  }
670
 
671
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
672
  }
669
  }
670
 
671
  }
672
+ }
673
+
674
+
675
+
676
+ if( !function_exists( 'toolset_array_merge_recursive_distinct' ) ) {
677
+
678
+ /**
679
+ * array_merge_recursive does indeed merge arrays, but it converts values with duplicate
680
+ * keys to arrays rather than overwriting the value in the first array with the duplicate
681
+ * value in the second array, as array_merge does. I.e., with array_merge_recursive,
682
+ * this happens (documented behavior):
683
+ *
684
+ * array_merge_recursive(array('key' => 'org value'), array('key' => 'new value'));
685
+ * => array('key' => array('org value', 'new value'));
686
+ *
687
+ * array_merge_recursive_distinct does not change the datatypes of the values in the arrays.
688
+ * Matching keys' values in the second array overwrite those in the first array, as is the
689
+ * case with array_merge, i.e.:
690
+ *
691
+ * array_merge_recursive_distinct(array('key' => 'org value'), array('key' => 'new value'));
692
+ * => array('key' => array('new value'));
693
+ *
694
+ * Parameters are passed by reference, though only for performance reasons. They're not
695
+ * altered by this function.
696
+ *
697
+ * @param array $array1
698
+ * @param array $array2
699
+ *
700
+ * @return array
701
+ * @author Daniel <daniel (at) danielsmedegaardbuus (dot) dk>
702
+ * @author Gabriel Sobrinho <gabriel (dot) sobrinho (at) gmail (dot) com>
703
+ *
704
+ * @since 2.2
705
+ */
706
+ function toolset_array_merge_recursive_distinct( array &$array1, array &$array2 ) {
707
+ $merged = $array1;
708
+
709
+ foreach ( $array2 as $key => &$value ) {
710
+ if ( is_array( $value ) && isset ( $merged [ $key ] ) && is_array( $merged [ $key ] ) ) {
711
+ $merged [ $key ] = toolset_array_merge_recursive_distinct( $merged [ $key ], $value );
712
+ } else {
713
+ $merged [ $key ] = $value;
714
+ }
715
+ }
716
+
717
+ return $merged;
718
+ }
719
+
720
  }
library/toolset/toolset-common/inc/toolset.localization.class.php CHANGED
@@ -17,7 +17,7 @@ if ( ! defined( 'TOOLSET_LOCALIZATION_ABSPATH' ) ) {
17
  }
18
 
19
 
20
- if ( ! class_exists( 'Toolset_Localization' ) ) {
21
 
22
  /**
23
  * Toolset_Localization
@@ -35,10 +35,10 @@ if ( ! class_exists( 'Toolset_Localization' ) ) {
35
  */
36
  function __construct( $textdomain = 'wpv-views', $path = TOOLSET_LOCALIZATION_ABSPATH , $mo_name = 'views-%s' ) {
37
  // Set instance properties
38
- $this->textdomain = $textdomain;
39
- $this->path = $path;
40
- $this->mo_name = $mo_name;
41
- $this->mo_processed_name = '';
42
  // Set init action
43
  add_action( 'init', array( $this, 'load_textdomain' ) );
44
  }
@@ -51,7 +51,8 @@ if ( ! class_exists( 'Toolset_Localization' ) ) {
51
  * @since July 18, 2014
52
  */
53
  function load_textdomain() {
54
- $locale = get_locale();
 
55
  $this->mo_processed_name = sprintf( $this->mo_name, $locale );
56
  load_textdomain( $this->textdomain, $this->path . '/' . $this->mo_processed_name . '.mo' );
57
  }
17
  }
18
 
19
 
20
+ if ( ! class_exists( 'Toolset_Localization', false ) ) {
21
 
22
  /**
23
  * Toolset_Localization
35
  */
36
  function __construct( $textdomain = 'wpv-views', $path = TOOLSET_LOCALIZATION_ABSPATH , $mo_name = 'views-%s' ) {
37
  // Set instance properties
38
+ $this->textdomain = $textdomain;
39
+ $this->path = $path;
40
+ $this->mo_name = $mo_name;
41
+ $this->mo_processed_name = '';
42
  // Set init action
43
  add_action( 'init', array( $this, 'load_textdomain' ) );
44
  }
51
  * @since July 18, 2014
52
  */
53
  function load_textdomain() {
54
+ // get_user_locale() was introduced in WordPress 4.7
55
+ $locale = ( function_exists( 'get_user_locale') ? get_user_locale() : get_locale() );
56
  $this->mo_processed_name = sprintf( $this->mo_name, $locale );
57
  load_textdomain( $this->textdomain, $this->path . '/' . $this->mo_processed_name . '.mo' );
58
  }
library/toolset/toolset-common/inc/toolset.menu.class.php CHANGED
@@ -12,7 +12,7 @@ if ( ! defined( 'WPT_MENU' ) ) {
12
  * @since 1.9
13
  */
14
 
15
- if ( ! class_exists( 'Toolset_Menu' ) ) {
16
 
17
  /**
18
  * Class to show promotion message.
@@ -215,8 +215,10 @@ if ( ! class_exists( 'Toolset_Menu' ) ) {
215
  'id' => 'toolset-debug-information',
216
  'title' => __('Toolset Debug', 'wpv-views'),
217
  'content' => '<p>'
 
 
218
  . sprintf(
219
- __( 'Need help? Grab some %1$sdebug information%2$s.', 'wpv-views' ),
220
  '<a href="' . admin_url( 'admin.php?page=toolset-debug-information' ) . '">',
221
  '</a>'
222
  )
12
  * @since 1.9
13
  */
14
 
15
+ if ( ! class_exists( 'Toolset_Menu', false ) ) {
16
 
17
  /**
18
  * Class to show promotion message.
215
  'id' => 'toolset-debug-information',
216
  'title' => __('Toolset Debug', 'wpv-views'),
217
  'content' => '<p>'
218
+ . __( 'Sometimes, our Customer Support personnel ask you to provide debug information. This information helps them give you quicker and better support.', 'wpv-views' )
219
+ . '</p><p>'
220
  . sprintf(
221
+ __( 'To get this information, go to %1$sToolset Debug Information%2$s.', 'wpv-views' ),
222
  '<a href="' . admin_url( 'admin.php?page=toolset-debug-information' ) . '">',
223
  '</a>'
224
  )
library/toolset/toolset-common/inc/toolset.object.relationship.class.php CHANGED
@@ -5,10 +5,10 @@
5
  *
6
  * Manages the id="XXX" attribute on Types and Views shortcodes.
7
  *
8
- * @since 1.9
9
  */
10
 
11
- if ( ! class_exists( 'Toolset_Object_Relationship' ) ) {
12
  class Toolset_Object_Relationship
13
  {
14
  private static $instance;
@@ -22,6 +22,9 @@ if ( ! class_exists( 'Toolset_Object_Relationship' ) ) {
22
 
23
  add_action( 'admin_init', array( $this, 'admin_init' ) );
24
 
 
 
 
25
  add_filter( 'the_content', array( $this, 'record_post_relationship_belongs' ), 0, 1 );
26
  add_filter( 'wpv_filter_wpv_the_content_suppressed', array( $this, 'record_post_relationship_belongs' ), 0, 1 );
27
 
@@ -40,22 +43,42 @@ if ( ! class_exists( 'Toolset_Object_Relationship' ) ) {
40
 
41
  }
42
 
43
- function record_post_relationship_belongs( $content ) {
44
-
45
- global $post;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
46
  $this->post_relationship_depth = ( $this->post_relationship_depth + 1 );
47
 
48
  if (
49
- ! empty( $post->ID )
50
  && function_exists( 'wpcf_pr_get_belongs' )
51
  ) {
52
 
53
- if ( ! isset( $this->relations[ $post->post_type ] ) ) {
54
- $this->relations[ $post->post_type ] = wpcf_pr_get_belongs( $post->post_type );
55
  }
56
- if ( is_array( $this->relations[ $post->post_type ] ) ) {
57
- foreach ( $this->relations[ $post->post_type ] as $post_type => $data ) {
58
- $related_id = wpcf_pr_post_get_belongs( $post->ID, $post_type );
59
  if ( $related_id ) {
60
  $this->post_relationship['$' . $post_type . '_id'] = $related_id;
61
  } else {
@@ -66,11 +89,24 @@ if ( ! class_exists( 'Toolset_Object_Relationship' ) ) {
66
  }
67
 
68
  $this->post_relationship_track[ $this->post_relationship_depth ] = $this->post_relationship;
69
-
70
- return $content;
71
  }
72
 
73
- function restore_post_relationship_belongs( $content ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
74
  $this->post_relationship_depth = ( $this->post_relationship_depth - 1 );
75
  if (
76
  $this->post_relationship_depth > 0
@@ -80,7 +116,40 @@ if ( ! class_exists( 'Toolset_Object_Relationship' ) ) {
80
  } else {
81
  $this->post_relationship = array();
82
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
83
  return $content;
 
84
  }
85
  }
86
  }
@@ -102,7 +171,7 @@ if ( ! class_exists( 'Toolset_Object_Relationship' ) ) {
102
  * [types field='my-field' id='$guest']
103
  * [types field='my-field' id='$room']
104
  */
105
- if ( ! class_exists( 'WPV_wpcf_switch_post_from_attr_id' ) ) {
106
  class WPV_wpcf_switch_post_from_attr_id
107
  {
108
 
@@ -133,6 +202,27 @@ if ( ! class_exists( 'WPV_wpcf_switch_post_from_attr_id' ) ) {
133
  $post_id = $current_post->ID;
134
  }
135
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
136
  } else {
137
  // See if Views has the variable
138
  global $WP_Views;
5
  *
6
  * Manages the id="XXX" attribute on Types and Views shortcodes.
7
  *
8
+ * @since 1.9.0
9
  */
10
 
11
+ if ( ! class_exists( 'Toolset_Object_Relationship', false ) ) {
12
  class Toolset_Object_Relationship
13
  {
14
  private static $instance;
22
 
23
  add_action( 'admin_init', array( $this, 'admin_init' ) );
24
 
25
+ add_action( 'toolset_action_record_post_relationship_belongs', array( $this, 'force_record_post_relationship_belongs' ) );
26
+ add_action( 'toolset_action_restore_post_relationship_belongs', array( $this, 'force_restore_post_relationship_belongs' ) );
27
+
28
  add_filter( 'the_content', array( $this, 'record_post_relationship_belongs' ), 0, 1 );
29
  add_filter( 'wpv_filter_wpv_the_content_suppressed', array( $this, 'record_post_relationship_belongs' ), 0, 1 );
30
 
43
 
44
  }
45
 
46
+ /**
47
+ * Manually record the Types relationships for a post.
48
+ *
49
+ * Given a WP_Post instance, this records the relations for its post type in this object relations property.
50
+ * AFter that, it calculates the specific parents for this given post in each of its stored relations.
51
+ * Finally, those specific relations are added to the post_relationship_track propery using a depth counter.
52
+ *
53
+ * @note This might be a little inefficient since we query once per relation.
54
+ * @note This is automatically called when looping over a post and calling the the_content filter.
55
+ * @note This might be much more efficient if we stored each post relationships, insted of a post_relationship_track property depending on a depth index.
56
+ * Especially in the case that we need to get this same post relationships later on the same request.
57
+ * This will need extensive review once the m2m feature lands in.
58
+ * Right now, we use this depth index because of nested structures, but a permanent $post->ID based data schema might be much better.
59
+ *
60
+ * @since 2.3.0
61
+ */
62
+
63
+ function force_record_post_relationship_belongs( $post_object = null ) {
64
+
65
+ if ( ! $post_object instanceof WP_Post ) {
66
+ return;
67
+ }
68
+
69
  $this->post_relationship_depth = ( $this->post_relationship_depth + 1 );
70
 
71
  if (
72
+ ! empty( $post_object->ID )
73
  && function_exists( 'wpcf_pr_get_belongs' )
74
  ) {
75
 
76
+ if ( ! isset( $this->relations[ $post_object->post_type ] ) ) {
77
+ $this->relations[ $post_object->post_type ] = wpcf_pr_get_belongs( $post_object->post_type );
78
  }
79
+ if ( is_array( $this->relations[ $post_object->post_type ] ) ) {
80
+ foreach ( $this->relations[ $post_object->post_type ] as $post_type => $data ) {
81
+ $related_id = wpcf_pr_post_get_belongs( $post_object->ID, $post_type );
82
  if ( $related_id ) {
83
  $this->post_relationship['$' . $post_type . '_id'] = $related_id;
84
  } else {
89
  }
90
 
91
  $this->post_relationship_track[ $this->post_relationship_depth ] = $this->post_relationship;
92
+
 
93
  }
94
 
95
+ /**
96
+ * Manually restore the Types relationships.
97
+ *
98
+ * AFter using the relationships of a given post, before moving to the next one, this cleans the data.
99
+ * As the data is stored in a post_relationship_track property with a depth index, we clean the last one.
100
+ *
101
+ * @note This is automatically called when looping over a post and calling the the_content filter, at a very late priority.
102
+ * @note As described above, a permanent $post->ID based data schema might be better and would not require this kind of cleaning.
103
+ * This will be reviewed once the m2m feture lands in.
104
+ *
105
+ * @since 2.3.0
106
+ */
107
+
108
+ function force_restore_post_relationship_belongs() {
109
+
110
  $this->post_relationship_depth = ( $this->post_relationship_depth - 1 );
111
  if (
112
  $this->post_relationship_depth > 0
116
  } else {
117
  $this->post_relationship = array();
118
  }
119
+
120
+ }
121
+
122
+ /**
123
+ * Callback to record the current post relationships early in the the_content filter.
124
+ *
125
+ * @uses Toolset_Object_Relationship::force_record_post_relationship_belongs
126
+ *
127
+ * @since unknown
128
+ */
129
+
130
+ function record_post_relationship_belongs( $content ) {
131
+
132
+ global $post;
133
+ $this->force_record_post_relationship_belongs( $post );
134
+
135
+ return $content;
136
+
137
+ }
138
+
139
+ /**
140
+ * Callback to restore the stored post relationships late in the the_content filter.
141
+ *
142
+ * @uses Toolset_Object_Relationship::force_restore_post_relationship_belongs
143
+ *
144
+ * @since unknown
145
+ */
146
+
147
+ function restore_post_relationship_belongs( $content ) {
148
+
149
+ $this->force_restore_post_relationship_belongs();
150
+
151
  return $content;
152
+
153
  }
154
  }
155
  }
171
  * [types field='my-field' id='$guest']
172
  * [types field='my-field' id='$room']
173
  */
174
+ if ( ! class_exists( 'WPV_wpcf_switch_post_from_attr_id', false ) ) {
175
  class WPV_wpcf_switch_post_from_attr_id
176
  {
177
 
202
  $post_id = $current_post->ID;
203
  }
204
  }
205
+
206
+ /**
207
+ * Get the current top post.
208
+ *
209
+ * Some Toolset plugins might need to set the top current post under some scenarios,
210
+ * like Toolset Views when doing AJAX pagination or AJAX custom search.
211
+ * In those cases, they can use this filter to get the top current post they are setting
212
+ * and override the ID to apply as the $current_page value.
213
+ *
214
+ * @not Toolset plugins should set this just in time, not globally, when needed, meaning AJAX calls or whatever.
215
+ *
216
+ * @param $top_post null
217
+ *
218
+ * @return $top_post null/WP_Post object The top current post, if set by any Toolset plugin.
219
+ *
220
+ * @since 2.3.0
221
+ */
222
+ $top_current_post = apply_filters( 'toolset_filter_get_top_current_post', null );
223
+ if ( $top_current_post ) {
224
+ $post_id = $top_current_post->ID;
225
+ }
226
  } else {
227
  // See if Views has the variable
228
  global $WP_Views;
library/toolset/toolset-common/inc/toolset.promotion.class.php CHANGED
@@ -12,7 +12,7 @@ if ( ! defined( 'WPT_PROMOTION' ) ) {
12
  * @since unknown
13
  */
14
 
15
- if ( ! class_exists( 'Toolset_Promotion' ) ) {
16
 
17
  /**
18
  * Class to show promotion message.
12
  * @since unknown
13
  */
14
 
15
+ if ( ! class_exists( 'Toolset_Promotion', false ) ) {
16
 
17
  /**
18
  * Class to show promotion message.
library/toolset/toolset-common/inc/toolset.relevanssi.compatibility.class.php CHANGED
@@ -127,7 +127,7 @@ if ( ! class_exists( 'Toolset_Relevanssi_Compatibility' ) ) {
127
  function toolset_relevanssi_settings( $sections, $toolset_options ) {
128
 
129
  $section_content = '';
130
- $text_search_documentation_link = 'https://wp-types.com/documentation/user-guides/views-text-search/?utm_source=viewsplugin&utm_campaign=views&utm_medium=views-text-search-settings&utm_term=Text Search documentation';
131
 
132
 
133
  if ( ! $this->relevanssi_installed ) {
127
  function toolset_relevanssi_settings( $sections, $toolset_options ) {
128
 
129
  $section_content = '';
130
+ $text_search_documentation_link = 'https://wp-types.com/documentation/user-guides/filtering-views-for-a-specific-text-string-search/?utm_source=viewsplugin&utm_campaign=views&utm_medium=views-text-search-settings&utm_term=Text Search documentation';
131
 
132
 
133
  if ( ! $this->relevanssi_installed ) {
library/toolset/toolset-common/inc/toolset.settings.class.php CHANGED
@@ -58,6 +58,20 @@ class Toolset_Settings implements ArrayAccess {
58
  */
59
  const RELEVANSSI_FIELDS_TO_INDEX = 'relevanssi_fields_to_index';
60
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
61
 
62
 
63
  /* ************************************************************************* *\
@@ -70,6 +84,12 @@ class Toolset_Settings implements ArrayAccess {
70
  */
71
  private static $instance = null;
72
 
 
 
 
 
 
 
73
 
74
  /**
75
  * @return Toolset_Settings The instance of Toolset_Settings.
@@ -97,10 +117,14 @@ class Toolset_Settings implements ArrayAccess {
97
  * @var array Default setting values.
98
  * @todo reformat and turn strings into documented constants
99
  */
 
 
 
100
  protected static $defaults = array(
101
  Toolset_Settings::ADMIN_BAR_CREATE_EDIT => 'on',
102
  Toolset_Settings::ADMIN_BAR_SHORTCODES_GENERATOR => 'unset',
103
  Toolset_Settings::RELEVANSSI_FIELDS_TO_INDEX => array(),
 
104
  );
105
 
106
 
@@ -118,7 +142,51 @@ class Toolset_Settings implements ArrayAccess {
118
  * @todo make this private
119
  */
120
  protected function __construct() {
 
 
 
121
  $this->load_settings();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
122
  }
123
 
124
 
@@ -138,6 +206,77 @@ class Toolset_Settings implements ArrayAccess {
138
  if ( ! is_array( $this->settings ) ) {
139
  $this->settings = array(); // Defaults will be used in this case.
140
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
141
  }
142
 
143
 
58
  */
59
  const RELEVANSSI_FIELDS_TO_INDEX = 'relevanssi_fields_to_index';
60
 
61
+ /**
62
+ * Bootstrap version that is expected to be used in a theme.
63
+ *
64
+ * Allowed values are:
65
+ * - '2': Bootstrap 2.0
66
+ * - '3': Bootstrap 3.0
67
+ * - '3.toolset': Bootstrap 3.0, but load it from toolset common
68
+ * - '-1': Site is not using Bootstrap (@since 1.9)
69
+ * - '1' or missing value (or perhaps anything else, too): Bootstrap version not set
70
+ *
71
+ * @since unknown
72
+ */
73
+ const BOOTSTRAP_VERSION = 'toolset_bootstrap_version';
74
+
75
 
76
 
77
  /* ************************************************************************* *\
84
  */
85
  private static $instance = null;
86
 
87
+ /**
88
+ * @var
89
+ * Used only to keep original value from the filter
90
+ */
91
+ private $toolset_bootstrap_version_from_filter = null;
92
+
93
 
94
  /**
95
  * @return Toolset_Settings The instance of Toolset_Settings.
117
  * @var array Default setting values.
118
  * @todo reformat and turn strings into documented constants
119
  */
120
+
121
+
122
+
123
  protected static $defaults = array(
124
  Toolset_Settings::ADMIN_BAR_CREATE_EDIT => 'on',
125
  Toolset_Settings::ADMIN_BAR_SHORTCODES_GENERATOR => 'unset',
126
  Toolset_Settings::RELEVANSSI_FIELDS_TO_INDEX => array(),
127
+ Toolset_Settings::BOOTSTRAP_VERSION => 3,
128
  );
129
 
130
 
142
  * @todo make this private
143
  */
144
  protected function __construct() {
145
+
146
+ add_action('ddl-before_init_layouts_plugin', array($this, 'check_is_this_first_layouts_activation') , 10);
147
+
148
  $this->load_settings();
149
+ $this->set_default_bootstrap_version_from_views();
150
+
151
+ add_filter( 'toolset-toolset_bootstrap_version_filter', array( $this, 'toolset_bootstrap_version_filter' ) );
152
+ add_filter( 'toolset-toolset_bootstrap_version_manually_selected', array( $this, 'toolset_bootstrap_version_manually_selected' ) );
153
+
154
+ }
155
+
156
+ function check_is_this_first_layouts_activation(){
157
+
158
+ $layouts = apply_filters( 'ddl-get_all_layouts_settings', array() );
159
+ $bs_value_from_db = $this->toolset_bootstrap_version_manually_selected();
160
+
161
+ if( false === $bs_value_from_db ){
162
+ $set_version_in_db = ( count( $layouts ) === 0 ) ? '99' : '98';
163
+ $set_version = ( count( $layouts ) === 0 ) ? '3.toolset' : '3';
164
+ $this->__set("toolset_bootstrap_version", $set_version_in_db );
165
+ $this->save();
166
+ $this->toolset_bootstrap_version = $set_version;
167
+ }
168
+ }
169
+
170
+
171
+ /*
172
+ * Get bootstrap version from Views and in case if option is not set from General tab
173
+ * as default set option from Views options.
174
+ */
175
+ protected function set_default_bootstrap_version_from_views(){
176
+ if(class_exists('WPV_Settings')){
177
+ $views_settings = WPV_Settings::get_instance();
178
+
179
+ $bootstrap_version_in_toolset_options = true;
180
+
181
+ $get_raw_options = get_option( Toolset_Settings::OPTION_NAME );
182
+ if( $get_raw_options && !isset( $get_raw_options['toolset_bootstrap_version'] ) ){
183
+ $bootstrap_version_in_toolset_options = false;
184
+ }
185
+
186
+ if( (int) $views_settings->wpv_bootstrap_version !== 1 && false === $bootstrap_version_in_toolset_options ){
187
+ $this->toolset_bootstrap_version = (int) $views_settings->wpv_bootstrap_version;
188
+ }
189
+ }
190
  }
191
 
192
 
206
  if ( ! is_array( $this->settings ) ) {
207
  $this->settings = array(); // Defaults will be used in this case.
208
  }
209
+
210
+
211
+ /*
212
+ * Botstrap version filter
213
+ */
214
+ $this->toolset_bootstrap_version = apply_filters( 'toolset_set_boostrap_option', $this->toolset_bootstrap_version );
215
+ $this->override_bootstrap_option_selection();
216
+ }
217
+
218
+ private function convert_to_real_bs_versions($bs_version){
219
+ $real_versions = array(
220
+ "99"=>"3.toolset",
221
+ "98"=>"3"
222
+ );
223
+
224
+ if(isset($real_versions[$bs_version])){
225
+ return $real_versions[$bs_version];
226
+ } else {
227
+ return $bs_version;
228
+ }
229
+ }
230
+
231
+ /**
232
+ * Comparing value from filter and value in database,
233
+ * we will force manually selected value (from db)
234
+ */
235
+ private function override_bootstrap_option_selection(){
236
+ if( has_filter( 'toolset_set_boostrap_option' ) ){
237
+ // set filter value as backup
238
+ $this->toolset_bootstrap_version_from_filter = $this->toolset_bootstrap_version;
239
+ // get raw selection from database
240
+ $selected_bs_version = $this->toolset_bootstrap_version_manually_selected();
241
+
242
+ if( false !== $selected_bs_version && in_array( $selected_bs_version, array("99","98") ) ){
243
+ // if user already selected something force that version
244
+ $this->toolset_bootstrap_version = $this->toolset_bootstrap_version_from_filter;
245
+ } else {
246
+ $this->toolset_bootstrap_version = $selected_bs_version;
247
+ }
248
+ } else {
249
+ $this->toolset_bootstrap_version = $this->convert_to_real_bs_versions($this->toolset_bootstrap_version);
250
+ }
251
+
252
+ }
253
+
254
+ /**
255
+ * @return string/false
256
+ * Get unfiltered option value directly from db
257
+ */
258
+ public function toolset_bootstrap_version_manually_selected(){
259
+ $get_raw_options = get_option( Toolset_Settings::OPTION_NAME );
260
+ if( $get_raw_options && isset( $get_raw_options['toolset_bootstrap_version'] ) ){
261
+ $bs_version_in_db = $get_raw_options['toolset_bootstrap_version'];
262
+ return $bs_version_in_db;
263
+ }
264
+ return false;
265
+ }
266
+ public function toolset_bootstrap_version_manually_selected_converted_value(){
267
+ $get_db_value = $this->toolset_bootstrap_version_manually_selected();
268
+ return $this->convert_to_real_bs_versions($get_db_value);
269
+ }
270
+
271
+ /**
272
+ * @return string/false
273
+ * Return value defined by filter
274
+ */
275
+ public function toolset_bootstrap_version_filter(){
276
+ if( isset( $this->toolset_bootstrap_version_from_filter ) ){
277
+ return $this->toolset_bootstrap_version_from_filter;
278
+ }
279
+ return false;
280
  }
281
 
282
 
library/toolset/toolset-common/inc/toolset.settings.screen.class.php CHANGED
@@ -12,7 +12,7 @@ if ( ! defined( 'WPT_SETTINGS_SCREEN' ) ) {
12
  * @since 1.9
13
  */
14
 
15
- if ( ! class_exists( 'Toolset_Settings_Screen' ) ) {
16
 
17
  class Toolset_Settings_Screen {
18
 
@@ -54,6 +54,10 @@ if ( ! class_exists( 'Toolset_Settings_Screen' ) ) {
54
  add_filter( 'toolset_filter_toolset_register_settings_general_section', array( $this, 'toolset_admin_bar_settings' ), 10, 2 );
55
  add_action( 'wp_ajax_toolset_update_toolset_admin_bar_options', array( $this, 'toolset_update_toolset_admin_bar_options' ) );
56
  add_filter( 'toolset_filter_force_unset_shortcode_generator_option', array( $this, 'force_unset_shortcode_generator_option_to_disable' ), 99 );
 
 
 
 
57
  }
58
 
59
 
@@ -118,10 +122,15 @@ if ( ! class_exists( 'Toolset_Settings_Screen' ) ) {
118
  </p>
119
  <?php echo $settings_content; ?>
120
  <div class="toolset-debug-info-helper">
 
 
 
 
 
121
  <p>
122
  <?php
123
  echo sprintf(
124
- __( 'Need help? Grab some %1$sdebug information%2$s.', 'wpv-views' ),
125
  '<a href="' . admin_url( 'admin.php?page=toolset-debug-information' ) . '">',
126
  '</a>'
127
  );
@@ -242,6 +251,124 @@ if ( ! class_exists( 'Toolset_Settings_Screen' ) ) {
242
  return $state;
243
  }
244
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
245
  }
246
 
247
  }
12
  * @since 1.9
13
  */
14
 
15
+ if ( ! class_exists( 'Toolset_Settings_Screen', false ) ) {
16
 
17
  class Toolset_Settings_Screen {
18
 
54
  add_filter( 'toolset_filter_toolset_register_settings_general_section', array( $this, 'toolset_admin_bar_settings' ), 10, 2 );
55
  add_action( 'wp_ajax_toolset_update_toolset_admin_bar_options', array( $this, 'toolset_update_toolset_admin_bar_options' ) );
56
  add_filter( 'toolset_filter_force_unset_shortcode_generator_option', array( $this, 'force_unset_shortcode_generator_option_to_disable' ), 99 );
57
+
58
+ add_filter( 'toolset_filter_toolset_register_settings_general_section', array( $this, 'toolset_bootstrap_options' ), 30 );
59
+ add_action( 'wp_ajax_toolset_update_bootstrap_version_status', array( $this, 'toolset_update_bootstrap_version_status' ) );
60
+
61
  }
62
 
63
 
122
  </p>
123
  <?php echo $settings_content; ?>
124
  <div class="toolset-debug-info-helper">
125
+ <p>
126
+ <?php
127
+ echo __( 'Sometimes, our Customer Support personnel ask you to provide debug information. This information helps them give you quicker and better support.', 'wpv-views' );
128
+ ?>
129
+ </p>
130
  <p>
131
  <?php
132
  echo sprintf(
133
+ __( 'To get this information, go to %1$sToolset Debug Information%2$s.', 'wpv-views' ),
134
  '<a href="' . admin_url( 'admin.php?page=toolset-debug-information' ) . '">',
135
  '</a>'
136
  );
251
  return $state;
252
  }
253
 
254
+
255
+
256
+ /**
257
+ * Bootstrap - settings and saving
258
+ */
259
+
260
+ function toolset_bootstrap_options( $sections ) {
261
+ $is_disabled = '';
262
+ $disabled_message = '';
263
+
264
+ $settings = Toolset_Settings::get_instance();
265
+ ob_start();
266
+ ?>
267
+ <ul class="js-bootstrap-version-form">
268
+ <?php
269
+
270
+ $version_options = array(
271
+
272
+
273
+ array(
274
+ 'label' => __( 'The theme or another plugin is already loading Bootstrap 2.0', 'wpv-views' ),
275
+ 'value' => 2
276
+ ),
277
+ array(
278
+ 'label' => __( 'The theme or another plugin is already loading Bootstrap 3.0', 'wpv-views' ),
279
+ 'value' => 3
280
+ ),
281
+ array(
282
+ 'label' => __( 'Toolset should load Bootstrap 3.0', 'wpv-views' ),
283
+ 'value' => '3.toolset'
284
+ ),
285
+ array(
286
+ 'label' => __( 'This site is not using Bootstrap CSS', 'wpv-views' ),
287
+ 'value' => -1
288
+ )
289
+ );
290
+
291
+ foreach( $version_options as $option ) {
292
+
293
+ printf(
294
+ '<li><label class="js-tolset-option-%s"><input type="radio" name="wpv-bootstrap-version" class="js-toolset-bootstrap-version" value="%s" %s %s autocomplete="off" />%s</label></li>',
295
+ str_replace(".","",$option['value']),
296
+ $option['value'],
297
+ checked( $option['value'], $settings->toolset_bootstrap_version, false ),
298
+ disabled( $is_disabled, true, false ),
299
+ $option['label']
300
+ );
301
+
302
+ }
303
+
304
+ ?>
305
+ </ul>
306
+
307
+ <?php echo $disabled_message; ?>
308
+ <p>
309
+ <?php
310
+ echo sprintf(
311
+ __( 'Get more details in the <a href="%1$s" title="%2$s">documentation page</a>.', 'wpv-views' ),
312
+ 'https://wp-types.com/documentation/user-guides/view-layouts-101/' ,
313
+ esc_attr( __( 'Documentation on the Bootstrap Layouts', 'wpv-views' ) )
314
+ );
315
+ ?>
316
+ </p>
317
+ <?php
318
+ wp_nonce_field( 'toolset_bootstrap_version_nonce', 'toolset_bootstrap_version_nonce' );
319
+ ?>
320
+ <?php
321
+ $section_content = ob_get_clean();
322
+
323
+ $sections['bootstrap-settings'] = array(
324
+ 'slug' => 'bootstrap-settings',
325
+ 'title' => __( 'Bootstrap Layouts', 'wpv-views' ),
326
+ 'content' => $section_content
327
+ );
328
+ return $sections;
329
+ }
330
+
331
+ /**
332
+ * Update the Views Bootrstap version
333
+ *
334
+ * $_POST:
335
+ * wpnonce: wpv_bootstrap_version_nonce
336
+ * status: 1|2|3|3.toolset|-1
337
+ */
338
+
339
+ function toolset_update_bootstrap_version_status() {
340
+ $settings = Toolset_Settings::get_instance();
341
+ if ( ! current_user_can( 'manage_options' ) ) {
342
+ $data = array(
343
+ 'type' => 'capability',
344
+ 'message' => __( 'You do not have permissions for that.', 'wpv-views' )
345
+ );
346
+ wp_send_json_error( $data );
347
+ }
348
+ if (
349
+ ! isset( $_POST["wpnonce"] )
350
+ || ! wp_verify_nonce( $_POST["wpnonce"], 'toolset_bootstrap_version_nonce' )
351
+ ) {
352
+ $data = array(
353
+ 'type' => 'nonce',
354
+ 'message' => __( 'Your security credentials have expired. Please reload the page to get new ones.', 'wpv-views' )
355
+ );
356
+ wp_send_json_error( $data );
357
+ }
358
+
359
+ $status = in_array($_POST['status'], array( 1, 2, 3, '3.toolset', -1 ));
360
+ if ( null != $status ) {
361
+ $settings->toolset_bootstrap_version = $_POST['status'];
362
+ $settings->save();
363
+ wp_send_json_success();
364
+ } else {
365
+ wp_send_json_error();
366
+ }
367
+ wp_send_json_success();
368
+ }
369
+
370
+
371
+
372
  }
373
 
374
  }
library/toolset/toolset-common/{visual-editor/shortcode_generator/shortcode-generator.class.php → inc/toolset.shortcode.generator.class.php} RENAMED
@@ -42,9 +42,31 @@ if ( ! class_exists( 'Toolset_Shortcode_Generator' ) ) {
42
  }
43
 
44
  public function register_shortcodes_admin_bar_items() {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
45
  $registered_items = self::$registered_admin_bar_items;
46
  $registered_items = apply_filters( 'toolset_shortcode_generator_register_item', $registered_items );
47
  self::$registered_admin_bar_items = $registered_items;
 
48
  }
49
 
50
  /*
@@ -80,6 +102,69 @@ if ( ! class_exists( 'Toolset_Shortcode_Generator' ) ) {
80
  $wp_admin_bar->add_node( $args );
81
  }
82
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
83
  /*
84
  * Dialog Template HTML code
85
  */
42
  }
43
 
44
  public function register_shortcodes_admin_bar_items() {
45
+
46
+ // Only register sections if the Admin Bar item is to be shown.
47
+ $toolset_settings = Toolset_Settings::get_instance();
48
+ $toolset_shortcodes_generator = ( isset( $toolset_settings['shortcodes_generator'] ) && in_array( $toolset_settings['shortcodes_generator'], array( 'unset', 'disable', 'editor', 'always' ) ) ) ? $toolset_settings['shortcodes_generator'] : 'unset';
49
+ if ( $toolset_shortcodes_generator == 'unset' ) {
50
+ $toolset_shortcodes_generator = apply_filters( 'toolset_filter_force_unset_shortcode_generator_option', $toolset_shortcodes_generator );
51
+ }
52
+ $register_section = false;
53
+ switch ( $toolset_shortcodes_generator ) {
54
+ case 'always':
55
+ $register_section = true;
56
+ break;
57
+ case 'editor':
58
+ $register_section = $this->is_admin_editor_page();
59
+ break;
60
+ }
61
+ if ( ! $register_section ) {
62
+ return;
63
+ }
64
+
65
+ // Now that we know that it will be shown, collect the registered items.
66
  $registered_items = self::$registered_admin_bar_items;
67
  $registered_items = apply_filters( 'toolset_shortcode_generator_register_item', $registered_items );
68
  self::$registered_admin_bar_items = $registered_items;
69
+
70
  }
71
 
72
  /*
102
  $wp_admin_bar->add_node( $args );
103
  }
104
 
105
+ /**
106
+ * is_admin_editor_page
107
+ *
108
+ * Helper method to check whether we are on an admin editor page.
109
+ * This covers edit pages for posts, terms and users,
110
+ * as well as Toolset object edit pages.
111
+ *
112
+ * @since 2.3.0
113
+ */
114
+
115
+ public function is_admin_editor_page() {
116
+ if ( ! is_admin() ) {
117
+ return false;
118
+ }
119
+ global $pagenow, $wp_version;
120
+ $allowed_pagenow_array = array( 'post.php', 'post-new.php', 'term.php', 'user-new.php', 'user-edit.php', 'profile.php' );
121
+ $allowed_page_array = array( 'views-editor', 'ct-editor', 'view-archives-editor', 'dd_layouts_edit' );
122
+ // @todo maybe add a filter here for future Toolset admin pages...
123
+ if (
124
+ in_array( $pagenow, $allowed_pagenow_array )
125
+ || (
126
+ $pagenow == 'admin.php'
127
+ && isset( $_GET['page'] )
128
+ && in_array( $_GET['page'], $allowed_page_array )
129
+ )
130
+ || (
131
+ // In WordPress < 4.5, the edit tag admin page is edit-tags.php?action=edit&taxonomy=category&tag_ID=X
132
+ version_compare( $wp_version, '4.5', '<' )
133
+ && $pagenow == 'edit-tags.php'
134
+ && isset( $_GET['action'] )
135
+ && $_GET['action'] == 'edit'
136
+ )
137
+ ) {
138
+ return true;
139
+ }
140
+ return false;
141
+ }
142
+
143
+ /**
144
+ * is_frontend_editor_page
145
+ *
146
+ * Helper method to check whether we are on an frontend editor page.
147
+ * This should cover as many frontend editors as possible.
148
+ *
149
+ * @since 2.3.0
150
+ */
151
+
152
+ public function is_frontend_editor_page() {
153
+ if ( is_admin() ) {
154
+ return false;
155
+ }
156
+ if (
157
+ // Layouts frontend editor
158
+ isset( $_GET['toolset_editor'] )
159
+ // Beaver Builder frontend editor
160
+ || isset( $_GET['fl_builder'] )
161
+ // CRED frontend editor pages, when discoverable
162
+ ) {
163
+ return true;
164
+ }
165
+ return false;
166
+ }
167
+
168
  /*
169
  * Dialog Template HTML code
170
  */
library/toolset/toolset-common/inc/toolset.wplogger.class.php CHANGED
@@ -60,7 +60,7 @@ if ( ! function_exists( 'toolset_wplog' ) ) {
60
 
61
  }
62
 
63
- if ( ! class_exists( 'Toolset_WPLogger' ) ) {
64
 
65
  class Toolset_WPLogger {
66
 
60
 
61
  }
62
 
63
+ if ( ! class_exists( 'Toolset_WPLogger', false ) ) {
64
 
65
  class Toolset_WPLogger {
66
 
library/toolset/toolset-common/inc/toolset.wpml.compatibility.class.php CHANGED
@@ -1,39 +1,157 @@
1
  <?php
2
 
3
- /**
4
- * ########################################
5
- * Common WPML compatibility
6
- * ########################################
7
- */
8
 
9
- if ( defined( 'WPT_WPML_COMPATIBILITY' ) ) {
10
- return;
11
- }
12
 
13
- define( 'WPT_WPML_COMPATIBILITY', true );
14
-
15
- if ( ! class_exists( 'Toolset_WPML_Compatibility' ) ) {
 
 
16
  class Toolset_WPML_Compatibility {
17
-
18
- function __construct() {
19
- add_action( 'init', array( $this, 'stub_wpml_add_shortcode' ), 100 );
20
- }
21
-
22
- // @todo check in another way, against a global is not our best option
23
- // Check with Andrea
24
- function stub_wpml_add_shortcode() {
25
- global $WPML_String_Translation;
26
- if ( ! isset( $WPML_String_Translation ) ) {
27
- // WPML string translation is not active
28
- // Add our own do nothing shortcode
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
29
  add_shortcode( 'wpml-string', array( $this, 'stub_wpml_string_shortcode' ) );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
30
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
31
  }
 
 
32
  }
33
-
34
- function stub_wpml_string_shortcode( $atts, $value ) {
35
- // return un-processed.
36
- return do_shortcode($value);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
37
  }
38
 
39
  }
1
  <?php
2
 
3
+ if ( ! class_exists( 'Toolset_WPML_Compatibility', false ) ) {
 
 
 
 
4
 
 
 
 
5
 
6
+ /**
7
+ * Handle the shared interoperability tasks between WPML and any/all Toolset plugins.
8
+ *
9
+ * @since unknown
10
+ */
11
  class Toolset_WPML_Compatibility {
12
+
13
+ private static $instance;
14
+
15
+
16
+ public static function get_instance() {
17
+ if ( null == self::$instance ) {
18
+ self::$instance = new self();
19
+ }
20
+
21
+ return self::$instance;
22
+ }
23
+
24
+
25
+ public static function initialize() {
26
+ self::get_instance();
27
+ }
28
+
29
+
30
+ private function __clone() { }
31
+
32
+
33
+ private function __construct() {
34
+
35
+ add_action( 'init', array( $this, 'maybe_add_wpml_string_stub_shortcode' ), 100 );
36
+
37
+ /**
38
+ * toolset_is_wpml_active_and_configured
39
+ *
40
+ * Check whether WPML core is active and configured properly.
41
+ *
42
+ * Note: Beware when calling this early, especially before 'init'. The behaviour depends
43
+ * on WPML and hasn't been tested.
44
+ *
45
+ * @since 2.3
46
+ */
47
+ add_filter( 'toolset_is_wpml_active_and_configured', array( $this, 'filter_is_wpml_active_and_configured' ) );
48
+
49
+ }
50
+
51
+
52
+ /**
53
+ * In case WPML ST isn't active, add a stub "wpml-string" shortcode that will only
54
+ * return its content.
55
+ *
56
+ * This is to avoid printing of the unprocessed shortcode.
57
+ *
58
+ * @since unknown
59
+ */
60
+ public function maybe_add_wpml_string_stub_shortcode() {
61
+ if ( ! $this->is_wpml_st_active() ) {
62
  add_shortcode( 'wpml-string', array( $this, 'stub_wpml_string_shortcode' ) );
63
+ }
64
+ }
65
+
66
+
67
+ /**
68
+ * Stub for the wpml-string shortcode.
69
+ *
70
+ * Make it as if the shortcode wasn't there.
71
+ *
72
+ * @param $atts
73
+ * @param string $value
74
+ *
75
+ * @return string
76
+ * @since unknown
77
+ */
78
+ public function stub_wpml_string_shortcode( /** @noinspection PhpUnusedParameterInspection */ $atts, $value ) {
79
+ return do_shortcode( $value );
80
+ }
81
+
82
+
83
+ /**
84
+ * Check whether WPML core is active and configured.
85
+ *
86
+ * The result is cached for better performance.
87
+ *
88
+ * @param bool $use_cache
89
+ *
90
+ * @return bool
91
+ * @since 2.3
92
+ */
93
+ public function is_wpml_active_and_configured( $use_cache = true ) {
94
 
95
+ static $result = null;
96
+
97
+ if( null === $result || ! $use_cache ) {
98
+ global $sitepress;
99
+ $is_wpml_active = (
100
+ defined( 'ICL_SITEPRESS_VERSION' )
101
+ && ! ICL_PLUGIN_INACTIVE
102
+ && ! is_null( $sitepress )
103
+ && class_exists( 'SitePress' )
104
+ );
105
+
106
+ $is_wpml_configured = apply_filters( 'wpml_setting', false, 'setup_complete' );
107
+
108
+ $result = ( $is_wpml_active && $is_wpml_configured );
109
  }
110
+
111
+ return $result;
112
  }
113
+
114
+
115
+ /**
116
+ * Callback for toolset_is_wpml_active_and_configured.
117
+ *
118
+ * Instead of calling this directly, use is_wpml_configured_and_active().
119
+ *
120
+ * @param mixed $default_value Ignored.
121
+ * @return bool
122
+ * @since 2.3
123
+ */
124
+ public function filter_is_wpml_active_and_configured( /** @noinspection PhpUnusedParameterInspection */ $default_value ) {
125
+ return $this->is_wpml_active_and_configured();
126
+ }
127
+
128
+
129
+ /**
130
+ * Check whether WPML ST is active.
131
+ *
132
+ * This will return false when WPML is not configured.
133
+ *
134
+ * @return bool
135
+ * @since 2.3
136
+ */
137
+ public function is_wpml_st_active() {
138
+
139
+ if ( ! $this->is_wpml_active_and_configured() ) {
140
+ return false;
141
+ }
142
+
143
+ return ( defined( 'WPML_ST_VERSION') );
144
+ }
145
+
146
+
147
+ /**
148
+ * Get the version of WPML core, if it's defined.
149
+ *
150
+ * @return null|string
151
+ * @since 2.3
152
+ */
153
+ public function get_wpml_version() {
154
+ return ( defined( 'ICL_SITEPRESS_VERSION' ) ? ICL_SITEPRESS_VERSION : null );
155
  }
156
 
157
  }
library/toolset/toolset-common/lib/cakephp.validation.class.php CHANGED
@@ -29,7 +29,7 @@
29
  * @since CakePHP v 1.2.0.3830
30
  */
31
  //class Validation extends Object {
32
- if ( ! class_exists( 'Toolset_CakePHP_Validation' ) ) {
33
 
34
  class Toolset_CakePHP_Validation {
35
 
29
  * @since CakePHP v 1.2.0.3830
30
  */
31
  //class Validation extends Object {
32
+ if ( ! class_exists( 'Toolset_CakePHP_Validation', false ) ) {
33
 
34
  class Toolset_CakePHP_Validation {
35
 
library/toolset/toolset-common/lib/enlimbo.forms.class.php CHANGED
@@ -4,7 +4,7 @@
4
  * Curently used by Views for rendering parametric search items and some backend elements
5
  */
6
 
7
- if ( ! class_exists('Toolset_Enlimbo_Forms' ) ) {
8
 
9
  class Toolset_Enlimbo_Forms
10
  {
@@ -974,7 +974,7 @@ if ( ! class_exists('Toolset_Enlimbo_Forms' ) ) {
974
  * Curently used by Views for rendering parametric search items and some backend elements
975
  */
976
 
977
- if ( ! class_exists('Toolset_Enlimbo_Forms_Control' ) ) {
978
 
979
  class Toolset_Enlimbo_Forms_Control extends Toolset_Enlimbo_Forms {
980
 
4
  * Curently used by Views for rendering parametric search items and some backend elements
5
  */
6
 
7
+ if ( ! class_exists('Toolset_Enlimbo_Forms', false ) ) {
8
 
9
  class Toolset_Enlimbo_Forms
10
  {
974
  * Curently used by Views for rendering parametric search items and some backend elements
975
  */
976
 
977
+ if ( ! class_exists( 'Toolset_Enlimbo_Forms_Control', false ) ) {
978
 
979
  class Toolset_Enlimbo_Forms_Control extends Toolset_Enlimbo_Forms {
980
 
library/toolset/toolset-common/lib/validate.class.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
 
3
- if ( ! class_exists( 'Toolset_Validate' ) ) {
4
  class Toolset_Validate
5
  {
6
 
1
  <?php
2
 
3
+ if ( ! class_exists( 'Toolset_Validate', false ) ) {
4
  class Toolset_Validate
5
  {
6
 
library/toolset/toolset-common/loader.php CHANGED
@@ -30,7 +30,7 @@
30
  * Now that we have a unique version for all plugins
31
  * we define the version here
32
  */
33
- $toolset_common_version = 229100;
34
 
35
 
36
  // ----------------------------------------------------------------------//
@@ -77,8 +77,8 @@ if ( ! function_exists( 'toolset_common_initialize' ) ) {
77
 
78
  $path = str_replace( '\\', '/', $path );
79
 
80
- $path = untrailingslashit( $path );
81
- $url = untrailingslashit( $url );
82
 
83
  // Save the url in the matching path
84
  foreach ( $toolset_common_paths as $key => $data ) {
@@ -88,5 +88,4 @@ if ( ! function_exists( 'toolset_common_initialize' ) ) {
88
  }
89
  }
90
  }
91
- }
92
-
30
  * Now that we have a unique version for all plugins
31
  * we define the version here
32
  */
33
+ $toolset_common_version = 230034;
34
 
35
 
36
  // ----------------------------------------------------------------------//
77
 
78
  $path = str_replace( '\\', '/', $path );
79
 
80
+ $path = untrailingslashit( $path );
81
+ $url = untrailingslashit( $url );
82
 
83
  // Save the url in the matching path
84
  foreach ( $toolset_common_paths as $key => $data ) {
88
  }
89
  }
90
  }
91
+ }
 
library/toolset/toolset-common/readme.md CHANGED
@@ -6,4 +6,143 @@ A collection of php, javascript and CSS libraries, utilities and models to be us
6
 
7
  Fetch the toolset-common library using composer:
8
 
9
- composer install --no-autoloader
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6
 
7
  Fetch the toolset-common library using composer:
8
 
9
+ composer install --no-autoloader
10
+
11
+
12
+ ## How To Use Toolset Admin Notices
13
+
14
+ #### Simple Admin Notice
15
+ We call Simple Admin Notice the temporary success / warning / error messages in WordPress. Like "Post saved.",
16
+ "Field XY is required" and so on... all these messages are temporary.
17
+
18
+ ##### Success Notice
19
+
20
+ Toolset_Admin_Notices_Manager::add_notice( 'types-post-saved', 'Your post was successfully saved!' );
21
+
22
+ The first parameter is the id of the notice, and the second the content of the notice. It is a short version of:
23
+
24
+ $n = new Toolset_Admin_Notice_Success( 'types-post-saved' );
25
+ $n->set_content( 'Your post was successfully saved!' );
26
+ Toolset_Admin_Notices_Manager::add_notice( $n );
27
+
28
+ You see we first initialise the success notice with the id `types-post-saved`. Than adding our content to the notice
29
+ and finally apply it to our `Toolset_Admin_Notices_Manager`.
30
+
31
+ Every notice has an id, this is used for making sure not displaying twice the same and for dismissable notices.
32
+
33
+ ##### Warning / Error notice
34
+ You can use the previous code also for adding Error and Warning messages.
35
+
36
+ $n = new Toolset_Admin_Notice_Error( 'error-on-save' );
37
+ ...
38
+ $n = new Toolset_Admin_Notice_Warning( 'warning-message' );
39
+ ...
40
+
41
+
42
+ #### Toolset Admin Notice
43
+ If you want to show a more advanced or permanent message, like running our installer, doing a database update or
44
+ something like that, you should create a toolset styled admin notice. Here an example of use:
45
+ ```
46
+ $notice = new Toolset_Admin_Notice_Required_Action( 'toolset-run-installer' );
47
+ Toolset_Admin_Notices_Manager::add_notice( $notice );
48
+ $notice->set_content( __DIR__ .'/templates/admin/notice/content/run-installer.phtml' );
49
+
50
+
51
+ // ON THE LAST STEP OF THE INSTALLER:
52
+ if( $installation_done ) {
53
+ Toolset_Admin_Notices_Manager::dismiss_notice_by_id( 'toolset-run-installer', true );
54
+ }
55
+ ```
56
+
57
+ This message uses a template for the content:
58
+ ```
59
+ <h3>
60
+ <?php _e( 'Do you want to prepare this site for quick editing with Toolset?', 'wpcf' ); ?>
61
+ </h3>
62
+
63
+ <p class="toolset-list-title">
64
+ <?php _e( 'We will:', 'wpcf' ); ?>
65
+ </p>
66
+
67
+ <ul class="toolset-list">
68
+ <li>
69
+ <?php printf( __( 'Automatically install the Toolset plugins that are needed for %s', 'wpcf' ), 'Toolset Starter' ); ?>
70
+ </li>
71
+ <li>
72
+ <?php printf( __( 'Set up layouts, template, archives and other site elements for %s', 'wpcf'), 'Toolset Starter' ); ?>
73
+ </li>
74
+ </ul>
75
+
76
+ <?php
77
+ echo Toolset_Admin_Notices_Manager::tpl_button_primary(
78
+ __( 'Run Installer', 'wpcf' ),
79
+ admin_url( 'index.php?page=toolset-site-installer' )
80
+ );
81
+ ```
82
+
83
+ By default `Toolset_Admin_Notice_Required_Action` does not show a dismiss button. The message will be dismissed once the
84
+ the required action is done. In this example it would be on the last step of the installer by calling:
85
+ ```
86
+ Toolset_Admin_Notices_Manager::dismiss_notice_by_id( 'toolset-run-installer', true );
87
+ ```
88
+ *Note: the second parameter is for $globally. If it would be false, only the current user won't see the message anymore.
89
+ With true no one will see the message about "Run Installer" anymore.*
90
+
91
+ #### Make a notice permanent dismissible
92
+ To create a notice, which should be dismissible by the user you can add the following:
93
+ ```
94
+ $notice->set_is_dismissible_permanent( true );
95
+ ```
96
+ This would add the usual (x) to the top right of the message. The dismiss is saved as usermeta.
97
+
98
+ #### Make a notice permanent dissmissible per installation
99
+ Same as above but once a user clicks on the (x) nobody will see the notice anymore.
100
+ ```
101
+ $notice->set_is_dismissible_globally( true );
102
+ ```
103
+
104
+ #### Conditions
105
+
106
+ Now my installer message is in place. But even subscribers can see the message. I want to limit it to admins:
107
+ ```
108
+ if( current_user_can( 'manage_options' ) ) {
109
+ // my previous notice init code
110
+ }
111
+ ```
112
+ ok, but better:
113
+ ```
114
+ // my previous notice init code
115
+ $notice->add_condition( new Toolset_Condition_User_Role_Admin() );
116
+ ```
117
+ Now only administrators will see the message.
118
+
119
+ You can add as many conditions as you want.
120
+ ```
121
+ // my previous notice init code
122
+ $notice->add_condition( new Toolset_Condition_User_Role_Admin() );
123
+ $notice->add_condition( new Toolset_Condition_Plugin_Layouts_Active() );
124
+ ```
125
+ #### Create a new Condition
126
+ Feel free to add new conditions. Your condition must implement the `Toolset_Condition_Interface`.
127
+ ```
128
+ interface Toolset_Condition_Interface {
129
+ /**
130
+ * @return bool
131
+ */
132
+ public function is_met();
133
+ }
134
+ ```
135
+ You see very simple, as example the `Toolset_Condition_Plugin_Layouts_Active` condition:
136
+ ```
137
+ class Toolset_Condition_Plugin_Layouts_Active implements Toolset_Condition_Interface {
138
+
139
+ public function is_met() {
140
+ if( defined( 'WPDDL_DEVELOPMENT' ) || defined( 'WPDDL_PRODUCTION' ) ) {
141
+ return true;
142
+ }
143
+
144
+ return false;
145
+ }
146
+
147
+ }
148
+ ```
library/toolset/toolset-common/res/css/toolset-admin-notices.css ADDED
@@ -0,0 +1,139 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .toolset-notice-wp {
2
+ position: relative;
3
+ }
4
+
5
+ .toolset-notice-custom-position {
6
+ clear: both;
7
+ background: #fff;
8
+ border-left: 4px solid #fff;
9
+ -webkit-box-shadow: 0 1px 1px 0 rgba( 0, 0, 0, 0.1 );
10
+ box-shadow: 0 1px 1px 0 rgba( 0, 0, 0, 0.1 );
11
+ padding: 1px 12px;
12
+ }
13
+
14
+ .toolset-notice {
15
+ border-left-color: #f05a29;
16
+ padding-top: 12px;
17
+ padding-bottom: 12px;
18
+ position: relative;
19
+ }
20
+
21
+ .toolset-notice h1,
22
+ .toolset-notice h2,
23
+ .toolset-notice h3,
24
+ .toolset-notice h4,
25
+ .toolset-notice h5,
26
+ .toolset-notice h6 {
27
+ color: #f05a29;
28
+ }
29
+
30
+ .toolset-notice > :first-child {
31
+ margin-top: 0 !important;
32
+ }
33
+
34
+ .toolset-notice > :nth-last-child(-n+2) {
35
+ margin-bottom: 0 !important;
36
+ }
37
+
38
+ .toolset-notice p {
39
+ margin-bottom: 13px;
40
+ }
41
+
42
+ .toolset-notice p.toolset-new-subject {
43
+ margin-top: 20px;
44
+ }
45
+
46
+ .toolset-button,
47
+ .toolset-button:hover,
48
+ .toolset-button:focus,
49
+ .toolset-button:visited {
50
+ border-radius: 3px;
51
+ border: 0;
52
+ background-color: #999;
53
+ box-sizing: border-box;
54
+ color: #fff;
55
+ cursor: pointer;
56
+ display: inline-block;
57
+ font-size: 13px;
58
+ height: 28px;
59
+ line-height: 26px;
60
+ margin-right: 5px;
61
+ outline-style: none;
62
+ padding: 0 10px 1px;
63
+ text-decoration: none;
64
+ transition-duration: 0.05s;
65
+ transition-property: border, background, color;
66
+ transition-timing-function: ease-in-out;
67
+ }
68
+
69
+ .toolset-button:hover {
70
+ background: #8c8c8c;
71
+ }
72
+
73
+ .toolset-button.toolset-button-primary {
74
+ background-color: #f05a29;
75
+ }
76
+
77
+ .toolset-button.toolset-button-primary:hover{
78
+ background-color: #e05628;
79
+ }
80
+
81
+ .toolset-button-external-link:after {
82
+ font-family: dashicons;
83
+ font-weight: normal;
84
+ font-style: normal;
85
+ content: "\f504";
86
+ display: inline-block;
87
+ width: 15px;
88
+ margin-right: -15px;
89
+ font-size: 15px;
90
+ line-height: 18px;
91
+ vertical-align: text-top;
92
+ margin-top: -1px;
93
+ padding-right: 10px;
94
+ padding-left: 3px;
95
+ text-decoration: none;
96
+ -webkit-font-smoothing: antialiased;
97
+ }
98
+
99
+ .toolset-list {
100
+ padding: 2px;
101
+ margin: 13px 0 13px 20px;
102
+ list-style: disc;
103
+ }
104
+
105
+ .toolset-list-title + .toolset-list {
106
+ margin-top: -5px;
107
+ }
108
+
109
+ .toolset-dismiss {
110
+ position: absolute;
111
+ top: 0;
112
+ right: 1px;
113
+ border: none;
114
+ margin: 0;
115
+ padding: 9px;
116
+ background: none;
117
+ color: #b4b9be;
118
+ cursor: pointer;
119
+ }
120
+
121
+ .toolset-dismiss:before {
122
+ background: none;
123
+ color: #b4b9be;
124
+ content: "\f153";
125
+ display: block;
126
+ font: normal 16px/20px dashicons;
127
+ speak: none;
128
+ height: 20px;
129
+ text-align: center;
130
+ width: 20px;
131
+ -webkit-font-smoothing: antialiased;
132
+ -moz-osx-font-smoothing: grayscale;
133
+ }
134
+
135
+ .toolset-dismiss:hover:before,
136
+ .toolset-dismiss:active:before,
137
+ .toolset-dismiss:focus:before {
138
+ color: #f05a29;
139
+ }
library/toolset/toolset-common/res/css/toolset-bs-component.css CHANGED
@@ -27,7 +27,7 @@
27
  overflow:hidden;
28
  }
29
 
30
- span.toolset_qt_btn_group_labels {
31
  display: block;
32
  clear: both;
33
  font-size: 11px;
@@ -45,13 +45,20 @@ span.toolset_qt_btn_group_labels {
45
  }
46
 
47
  .bs-quicktags-toolbar {
48
- padding: 3px;
49
- border-bottom: 1px solid #ddd;
 
 
50
  background: #f5f5f5 !important;
51
  min-height: 30px;
52
- border-left: 1px solid #ccc;
53
- border-right: 1px solid #ccc;
54
- border-top: 0px;
 
 
 
 
 
55
  }
56
 
57
  .bs-quicktags-toolbar>ul {
@@ -90,29 +97,29 @@ span.toolset_qt_btn_group_labels {
90
 
91
  /* Popover */
92
  .pop {
93
- background: #eee;
94
- border: 1px solid #ccc;
95
- padding: 10px;
96
- border-radius: 8px;
97
- box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
98
- position: absolute;
99
- right:0;
100
- margin-right: 10px;
101
  z-index: 99;
102
  }
103
 
104
  .pop_right_margin{
105
- margin-right: 20px;
106
  }
107
  .pop_right_margin_big{
108
- margin-right: 25px;
109
  }
110
  .pop_top_margin{
111
- margin-top: 20px;
112
  }
113
  .pop_close {
114
  display: block;
115
- text-align: right;
116
  }
117
  .pop_msg_p{
118
  margin: 0px;
@@ -132,4 +139,11 @@ span.toolset_qt_btn_group_labels {
132
  box-shadow: rgb(246, 146, 30) 0px 0px 5px 1px !important;
133
  }
134
  .css-components-toggle-icon{color:#555d66; position: relative; bottom:2px;right:2px;}
135
- .css-components-toggle-icon:before{}
 
 
 
 
 
 
 
27
  overflow:hidden;
28
  }
29
 
30
+ span.toolset_qt_btn_group_labels_style {
31
  display: block;
32
  clear: both;
33
  font-size: 11px;
45
  }
46
 
47
  .bs-quicktags-toolbar {
48
+ padding: 0px !important;
49
+ margin-top: 0px !important;
50
+ border: 1px solid #ddd !important;
51
+ border-top: 0px !important;
52
  background: #f5f5f5 !important;
53
  min-height: 30px;
54
+ border: 0px !important;
55
+ display: inline-block;
56
+ }
57
+ .bs-quicktags-toolbar>ul{
58
+ padding-left: 0px;
59
+ }
60
+ .bs-quicktags-toolbar>ul>li{
61
+ list-style-type: none;
62
  }
63
 
64
  .bs-quicktags-toolbar>ul {
97
 
98
  /* Popover */
99
  .pop {
100
+ background: #eee !important;
101
+ border: 1px solid #ccc !important;
102
+ padding: 10px !important;
103
+ border-radius: 8px;
104
+ box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
105
+ position: absolute !important;
106
+ right: 0;
107
+ margin-right: 10px !important;
108
  z-index: 99;
109
  }
110
 
111
  .pop_right_margin{
112
+ margin-right: 20px !important;
113
  }
114
  .pop_right_margin_big{
115
+ margin-right: 25px !important;
116
  }
117
  .pop_top_margin{
118
+ margin-top: 20px !important;
119
  }
120
  .pop_close {
121
  display: block;
122
+ text-align: right !important;
123
  }
124
  .pop_msg_p{
125
  margin: 0px;
139
  box-shadow: rgb(246, 146, 30) 0px 0px 5px 1px !important;
140
  }
141
  .css-components-toggle-icon{color:#555d66; position: relative; bottom:2px;right:2px;}
142
+ .css-components-toggle-icon:before{}
143
+
144
+ li.js-editor-bs-button-wrapper {
145
+ display: inline-block;
146
+ }
147
+ li.js-editor-addon-button-wrapper.js-editor-bs-button-wrapper {
148
+ margin: 0 2px 5px 2px;
149
+ }
library/toolset/toolset-common/res/css/toolset-common.css CHANGED
@@ -260,6 +260,7 @@ Helper styles
260
 
261
  .toolset-mightlong-list {
262
  overflow: hidden;
 
263
  }
264
 
265
  .toolset-mightlong-list li {
260
 
261
  .toolset-mightlong-list {
262
  overflow: hidden;
263
+ list-style: outside none none;
264
  }
265
 
266
  .toolset-mightlong-list li {
library/toolset/toolset-common/res/css/toolset-dialogs.css CHANGED
@@ -68,6 +68,9 @@
68
  .toolset-ui-dialog .ui-tabs-panel.ui-widget-content{
69
  border-left: 1px solid #ccc !important;
70
  }
 
 
 
71
  .toolset-ui-dialog.ui-widget input, .toolset-ui-dialog.ui-widget select, .toolset-ui-dialog.ui-widget textarea, .ui-widget button{
72
  font-size: 13px !important;
73
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", "Open Sans", sans-serif;
@@ -109,6 +112,7 @@
109
  border-top: 1px solid #ddd !important;
110
  }
111
  .toolset-ui-dialog .button-primary {
 
112
  background: #0085ba !important;
113
  border-color: #0073aa #006799 #006799 !important;
114
  -webkit-box-shadow: 0 1px 0 #006799 !important;
@@ -118,12 +122,17 @@
118
  text-shadow: 0 -1px 1px #006799,1px 0 1px #006799,0 1px 1px #006799,-1px 0 1px #006799 !important;
119
  font-weight: normal !important;
120
  line-height: 26px !important;
 
121
  border-radius: 3px !important;
122
  }
123
- .toolset-ui-dialog .button-primary:hover{
 
124
  border-color: #069dd4 !important;
 
 
125
  }
126
- .toolset-ui-dialog .button-secondary{
 
127
  color: #555 !important;
128
  border-color: #ccc !important;
129
  background: #f7f7f7 !important;
@@ -132,13 +141,28 @@
132
  vertical-align: top !important;
133
  font-weight: normal !important;
134
  line-height: 26px !important;
 
135
  border-radius: 3px !important;
136
  }
137
- .toolset-ui-dialog .button-secondary:hover{
 
138
  border-color: #999 !important;
 
 
139
  }
140
  .toolset-ui-dialog .button-secondary[disabled],
141
  .toolset-ui-dialog .button-secondary:disabled,
142
- .toolset-ui-dialog .button-secondary.disabled{
 
143
  border-color: #ddd !important;
 
 
 
 
 
 
 
 
 
 
144
  }
68
  .toolset-ui-dialog .ui-tabs-panel.ui-widget-content{
69
  border-left: 1px solid #ccc !important;
70
  }
71
+ .toolset-ui-dialog .ui-dialog-buttonpane {
72
+ padding: 8px;
73
+ }
74
  .toolset-ui-dialog.ui-widget input, .toolset-ui-dialog.ui-widget select, .toolset-ui-dialog.ui-widget textarea, .ui-widget button{
75
  font-size: 13px !important;
76
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", "Open Sans", sans-serif;
112
  border-top: 1px solid #ddd !important;
113
  }
114
  .toolset-ui-dialog .button-primary {
115
+ padding: 0 10px 1px !important;
116
  background: #0085ba !important;
117
  border-color: #0073aa #006799 #006799 !important;
118
  -webkit-box-shadow: 0 1px 0 #006799 !important;
122
  text-shadow: 0 -1px 1px #006799,1px 0 1px #006799,0 1px 1px #006799,-1px 0 1px #006799 !important;
123
  font-weight: normal !important;
124
  line-height: 26px !important;
125
+ letter-spacing: normal;
126
  border-radius: 3px !important;
127
  }
128
+ .toolset-ui-dialog .button-primary:hover {
129
+ padding: 0 10px 1px !important;
130
  border-color: #069dd4 !important;
131
+ line-height: 26px !important;
132
+ letter-spacing: normal;
133
  }
134
+ .toolset-ui-dialog .button-secondary {
135
+ padding: 0 10px 1px !important;
136
  color: #555 !important;
137
  border-color: #ccc !important;
138
  background: #f7f7f7 !important;
141
  vertical-align: top !important;
142
  font-weight: normal !important;
143
  line-height: 26px !important;
144
+ letter-spacing: normal;
145
  border-radius: 3px !important;
146
  }
147
+ .toolset-ui-dialog .button-secondary:hover {
148
+ padding: 0 10px 1px !important;
149
  border-color: #999 !important;
150
+ line-height: 26px !important;
151
+ letter-spacing: normal;
152
  }
153
  .toolset-ui-dialog .button-secondary[disabled],
154
  .toolset-ui-dialog .button-secondary:disabled,
155
+ .toolset-ui-dialog .button-secondary.disabled {
156
+ padding: 0 10px 1px !important;
157
  border-color: #ddd !important;
158
+ line-height: 26px !important;
159
+ letter-spacing: normal;
160
+ }
161
+ .toolset-ui-dialog .button-small,
162
+ .toolset-ui-dialog .button-small:hover {
163
+ height: 24px;
164
+ padding: 0 8px 1px;
165
+ line-height: 22px !important;
166
+ font-size: 11px !important;
167
+ letter-spacing: normal;
168
  }
library/toolset/toolset-common/res/js/toolset-admin-notices.js ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ;( function( $ ) {
2
+
3
+ $( document ).on( 'click', '[data-' + toolset_admin_notices.triggerNoticeDismissible + ']', function() {
4
+ var notice = $( this ).parent( '.toolset-notice-wp' );
5
+ var ajaxRequestData = {};
6
+ ajaxRequestData['action'] = toolset_admin_notices.action;
7
+ ajaxRequestData[toolset_admin_notices.varnameNonce] = toolset_admin_notices.nonce;
8
+ ajaxRequestData[toolset_admin_notices.varnameAction] = toolset_admin_notices.triggerNoticeDismissible;
9
+ ajaxRequestData[toolset_admin_notices.varnameNoticeId] = $( this ).data( toolset_admin_notices.triggerNoticeDismissible );
10
+
11
+ $.ajax( {
12
+ url: ajaxurl,
13
+ method: 'POST',
14
+ data: ajaxRequestData
15
+ } ).done( function( ajaxResponseData ) {
16
+ notice.fadeTo( 100, 0, function() {
17
+ notice.slideUp( 100, function() {
18
+ notice.remove();
19
+ });
20
+ });
21
+ } );
22
+ } );
23
+
24
+ } ( jQuery ) );
library/toolset/toolset-common/res/js/toolset-bs-component-buttons.js CHANGED
@@ -1,177 +1,6 @@
1
  var ToolsetCommon = ToolsetCommon || {};
2
 
3
 
4
- ToolsetCommon.BootstrapCssComponentsTinyMCE = function($){
5
-
6
- var self = this,
7
- $bootstrap_components = Toolset_CssComponent.DDL_CSS_JS.available_components,
8
- $bootstrap_css = Toolset_CssComponent.DDL_CSS_JS.available_css,
9
- $other = Toolset_CssComponent.DDL_CSS_JS.other;
10
-
11
- self.init = function(){
12
- Toolset.hooks.addAction( 'toolset_text_editor_TinyMCE_init', function( instance ) {
13
- self.add_toggle_visibility_button( instance );
14
- self.add_bootstrap_components_buttons(instance);
15
- self.add_bootstrap_css_buttons(instance);
16
- self.add_other_buttons(instance);
17
- Toolset.hooks.doAction( 'bs_components_tinyMCE_divider', instance );
18
- });
19
- };
20
-
21
- self.add_toggle_visibility_button = function(instance){
22
-
23
- if(typeof tinymce !== 'object'){
24
- return;
25
- }
26
-
27
- tinymce.PluginManager.add('css_components_toolbar_toggle', function(editor, url){
28
- editor.addButton( 'css_components_toolbar_toggle', {
29
- icon: ' icon-bootstrap-original-logo ont-icon-25 css-components-toggle-icon',
30
- tooltip: Toolset_CssComponent.DDL_CSS_JS.toggle_button_tooltip,
31
- onclick: function() {
32
- var $labels = jQuery('.toolset_qt_btn_group_labels'),
33
- $container = $labels.closest('div.mce-toolbar');
34
-
35
- $container.toggle();
36
- ToolsetCommon.BSComponentsEventsHandler.update_tinyMCE_toggle_status($container);
37
- }
38
- });
39
- });
40
-
41
- _.defer(function(){
42
- var $icon = jQuery('.css-components-toggle-icon'),
43
- $button = $icon.parent(),
44
- $widget = jQuery('.css-components-toggle-icon').closest('div.mce-widget');
45
-
46
- $widget.addClass('css-components-toggle-div');
47
-
48
- $widget.css({"position": "relative"});
49
- $button.css({"position": "relative", "width" : "26px", "height" : "24px"});
50
- });
51
-
52
- };
53
-
54
- self.add_bootstrap_components_buttons = function(instance){
55
-
56
- if(typeof $bootstrap_components !== 'object'){
57
- return;
58
- }
59
-
60
- if(typeof tinymce !== 'object'){
61
- return;
62
- }
63
-
64
- jQuery.each( $bootstrap_components, function( index, value ){
65
-
66
-
67
-
68
- tinymce.PluginManager.add('css_components_'+index+'_button', function( editor, url ) {
69
- editor.addButton( 'css_components_'+index+'_button', {
70
- icon: ' '+value.button_icon+' '+value.button_icon_size,
71
- tooltip: value.name,
72
- onclick: function() {
73
-
74
- Toolset.hooks.doAction( 'bs_components_open_dialog', {
75
- name: value.name,
76
- description: value.description,
77
- url: value.url,
78
- button_icon: value.button_icon,
79
- dialog_icon_size: value.dialog_icon_size,
80
- bs_category: 'available_components',
81
- bs_component_key: index,
82
- editor_instance: instance,
83
- buttons_type: 'tinymce'
84
- });
85
-
86
- },
87
- 'class' : "toolset-components-buttons"
88
- });
89
- });
90
-
91
-
92
- });
93
- };
94
-
95
- self.add_bootstrap_css_buttons = function(instance){
96
-
97
- if(typeof $bootstrap_css !== 'object'){
98
- return;
99
- }
100
- if(typeof tinymce !== 'object'){
101
- return;
102
- }
103
-
104
- jQuery.each( $bootstrap_css, function( index, value ){
105
-
106
- tinymce.PluginManager.add('css_'+index+'_button', function( editor, url ) {
107
- editor.addButton( 'css_'+index+'_button', {
108
- icon: ' '+value.button_icon+' '+value.button_icon_size,
109
- tooltip: value.name,
110
- onclick: function() {
111
-
112
- Toolset.hooks.doAction( 'bs_components_open_dialog', {
113
- name: value.name,
114
- description: value.description,
115
- url: value.url,
116
- button_icon: value.button_icon,
117
- dialog_icon_size: value.dialog_icon_size,
118
- bs_category: 'available_css',
119
- bs_component_key: index,
120
- editor_instance: instance,
121
- buttons_type: 'tinymce'
122
- });
123
-
124
- },
125
- 'class' : "toolset-components-buttons"
126
- });
127
- });
128
- });
129
- };
130
-
131
- self.add_other_buttons = function(instance){
132
-
133
- if(typeof $other !== 'object'){
134
- return;
135
- }
136
- if(typeof tinymce !== 'object'){
137
- return;
138
- }
139
-
140
-
141
-
142
- jQuery.each( $other, function( index, value ){
143
-
144
- tinymce.PluginManager.add('other_'+index+'_button', function( editor, url ) {
145
- editor.addButton( 'other_'+index+'_button', {
146
- icon: ' '+value.button_icon+' '+value.button_icon_size,
147
- tooltip: value.name,
148
- onclick: function() {
149
-
150
- Toolset.hooks.doAction( 'bs_components_open_dialog', {
151
- name: value.name,
152
- description: value.description,
153
- url: value.url,
154
- button_icon: value.button_icon,
155
- dialog_icon_size: value.dialog_icon_size,
156
- bs_category: 'other',
157
- bs_component_key: index,
158
- editor_instance: instance,
159
- buttons_type: 'tinymce'
160
- });
161
-
162
- },
163
- 'class' : "toolset-components-buttons"
164
- });
165
- });
166
- });
167
-
168
-
169
- };
170
-
171
- self.init();
172
- };
173
-
174
-
175
  ToolsetCommon.BootstrapCssComponentsQuickTags = function($){
176
 
177
  var self = this,
@@ -202,14 +31,22 @@ ToolsetCommon.BootstrapCssComponentsQuickTags = function($){
202
  self.add_bootstrap_components_buttons($instance);
203
  }
204
  });
205
-
206
 
207
  };
208
 
209
  self.wrap_codemirror_buttons = function($instance,$buttons){
210
-
211
-
212
- jQuery("#qt_"+$instance+"_toolbar").after('<div class="bs-quicktags-toolbar code-editor-toolbar" id="codemirror-buttons-for-'+$instance+'">'+$buttons+'</div>');
 
 
 
 
 
 
 
 
213
  jQuery("#"+$instance).before('<div id="pop_'+$instance+'" class="pop pop_top_margin pop_right_margin pop_hidden"><a href="#" class="pop_close" data-pop_id="pop_'+$instance+'"><i class="glyphicon glyphicon-remove"></i></a><p class="pop_msg_p">'+Toolset_CssComponent.DDL_CSS_JS.codemirror_pop_message+'<br><br><label><input type="checkbox" id="hide_pop_'+$instance+'" name="hide_tooltip" value="hide_pop"> Dont show this tip again</label></p></div>');
214
 
215
  _.defer(function(){
@@ -228,12 +65,12 @@ ToolsetCommon.BootstrapCssComponentsQuickTags = function($){
228
 
229
  var codemirror_buttons = '';
230
  // bs components
231
- codemirror_buttons += '<span class="toolset_qt_btn_group_labels">'+Toolset_CssComponent.DDL_CSS_JS.group_label_bs_components+'</span>';
232
  codemirror_buttons += '<ul class="js-wpv-filter-edit-toolbar" >';
233
 
234
  jQuery.each( $bootstrap_components, function( index, value ){
235
- codemirror_buttons +='<li class="js-editor-addon-button-wrapper">';
236
- codemirror_buttons +='<button class="button-secondary js-code-editor-toolbar-button js-codemirror-bs-component-button bs-'+index+'-button" data-bs_category="available_components" data-cm_instance="'+instance+'" data-bs_key="'+index+'" title="'+value.name+'" onclick="ToolsetCommon.BSComponentsEventsHandler.openBSDialog(this);">';
237
  codemirror_buttons +='<i class="'+value.button_icon+' bs-'+index+'-icon"></i>';
238
  codemirror_buttons +='</li>';
239
 
@@ -241,13 +78,13 @@ ToolsetCommon.BootstrapCssComponentsQuickTags = function($){
241
  codemirror_buttons +='</ul>';
242
 
243
  // bs css
244
- codemirror_buttons += '<span class="toolset_qt_btn_group_labels">'+Toolset_CssComponent.DDL_CSS_JS.group_label_bs_css+'</span>';
245
  codemirror_buttons += '<ul class="js-wpv-filter-edit-toolbar">';
246
 
247
  jQuery.each( $bootstrap_css, function( index, value ){
248
 
249
- codemirror_buttons +='<li class="js-editor-addon-button-wrapper">';
250
- codemirror_buttons +='<button class="button-secondary js-code-editor-toolbar-button js-codemirror-bs-component-button bs-'+index+'-button" data-bs_category="available_css" data-cm_instance="'+instance+'" data-bs_key="'+index+'" title="'+value.name+'" onclick="ToolsetCommon.BSComponentsEventsHandler.openBSDialog(this);">';
251
  codemirror_buttons +='<i class="'+value.button_icon+' bs-'+index+'-icon"></i>';
252
  codemirror_buttons +='</li>';
253
 
@@ -256,14 +93,14 @@ ToolsetCommon.BootstrapCssComponentsQuickTags = function($){
256
 
257
  // other buttons
258
  if(typeof $other === 'object' && _.keys($other).length > 0 ){
259
- codemirror_buttons += '<span class="toolset_qt_btn_group_labels">'+Toolset_CssComponent.DDL_CSS_JS.group_label_other+'</span>';
260
 
261
  codemirror_buttons += '<ul class="js-wpv-filter-edit-toolbar">';
262
 
263
  jQuery.each( $other, function( index, value ){
264
 
265
- codemirror_buttons +='<li class="js-editor-addon-button-wrapper">';
266
- codemirror_buttons +='<button class="button-secondary js-code-editor-toolbar-button js-codemirror-bs-component-button bs-'+index+'-button" data-bs_category="other" data-cm_instance="'+instance+'" data-bs_key="'+index+'" title="'+value.name+'" onclick="ToolsetCommon.BSComponentsEventsHandler.openBSDialog(this);">';
267
  codemirror_buttons +='<i class="'+value.button_icon+' bs-'+index+'-icon"></i>';
268
  codemirror_buttons +='</li>';
269
 
@@ -282,6 +119,10 @@ ToolsetCommon.BootstrapCssComponentsQuickTags = function($){
282
  if(typeof $bootstrap_components !== 'object'){
283
  return;
284
  }
 
 
 
 
285
  // button toogle button :)
286
  if(jQuery('#qt_'+instance+'_bs_component_show_hide_button').length === 0){
287
 
@@ -290,9 +131,18 @@ ToolsetCommon.BootstrapCssComponentsQuickTags = function($){
290
  } else {
291
  var button_value = Toolset_CssComponent.DDL_CSS_JS.button_toggle_hide;
292
  }
293
-
294
-
295
- jQuery("#qt_"+instance+"_toolbar").append('<input type="button" id="qt_'+instance+'_bs_component_show_hide_button" class="ed_button button button-small" value="'+button_value+'">');
 
 
 
 
 
 
 
 
 
296
  jQuery( '#qt_'+instance+'_bs_component_show_hide_button' ).click(function() {
297
  Toolset.hooks.doAction( 'bs_components_toggle_buttons', instance );
298
  });
1
  var ToolsetCommon = ToolsetCommon || {};
2
 
3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4
  ToolsetCommon.BootstrapCssComponentsQuickTags = function($){
5
 
6
  var self = this,
31
  self.add_bootstrap_components_buttons($instance);
32
  }
33
  });
34
+
35
 
36
  };
37
 
38
  self.wrap_codemirror_buttons = function($instance,$buttons){
39
+
40
+ var toolbar_div = jQuery("#wp-"+$instance+"-editor-container .quicktags-toolbar");
41
+ if(toolbar_div.length === 0){
42
+
43
+ var views_toolbar = jQuery("#qt_"+$instance+"_toolbar");
44
+ if(views_toolbar !== 0){
45
+ toolbar_div = views_toolbar;
46
+ }
47
+ }
48
+
49
+ toolbar_div.append('<div class="bs-quicktags-toolbar code-editor-toolbar" id="codemirror-buttons-for-'+$instance+'">'+$buttons+'</div>');
50
  jQuery("#"+$instance).before('<div id="pop_'+$instance+'" class="pop pop_top_margin pop_right_margin pop_hidden"><a href="#" class="pop_close" data-pop_id="pop_'+$instance+'"><i class="glyphicon glyphicon-remove"></i></a><p class="pop_msg_p">'+Toolset_CssComponent.DDL_CSS_JS.codemirror_pop_message+'<br><br><label><input type="checkbox" id="hide_pop_'+$instance+'" name="hide_tooltip" value="hide_pop"> Dont show this tip again</label></p></div>');
51
 
52
  _.defer(function(){
65
 
66
  var codemirror_buttons = '';
67
  // bs components
68
+ codemirror_buttons += '<span class="toolset_qt_btn_group_labels toolset_qt_btn_group_labels_style">'+Toolset_CssComponent.DDL_CSS_JS.group_label_bs_components+'</span>';
69
  codemirror_buttons += '<ul class="js-wpv-filter-edit-toolbar" >';
70
 
71
  jQuery.each( $bootstrap_components, function( index, value ){
72
+ codemirror_buttons +='<li class="js-editor-addon-button-wrapper js-editor-bs-button-wrapper">';
73
+ codemirror_buttons +='<button type="button" class="button-secondary js-code-editor-toolbar-button js-codemirror-bs-component-button bs-'+index+'-button" data-bs_category="available_components" data-cm_instance="'+instance+'" data-bs_key="'+index+'" title="'+value.name+'" onclick="ToolsetCommon.BSComponentsEventsHandler.openBSDialog(this);">';
74
  codemirror_buttons +='<i class="'+value.button_icon+' bs-'+index+'-icon"></i>';
75
  codemirror_buttons +='</li>';
76
 
78
  codemirror_buttons +='</ul>';
79
 
80
  // bs css
81
+ codemirror_buttons += '<span class="toolset_qt_btn_group_labels toolset_qt_btn_group_labels_style">'+Toolset_CssComponent.DDL_CSS_JS.group_label_bs_css+'</span>';
82
  codemirror_buttons += '<ul class="js-wpv-filter-edit-toolbar">';
83
 
84
  jQuery.each( $bootstrap_css, function( index, value ){
85
 
86
+ codemirror_buttons +='<li class="js-editor-addon-button-wrapper js-editor-bs-button-wrapper">';
87
+ codemirror_buttons +='<button type="button" class="button-secondary js-code-editor-toolbar-button js-codemirror-bs-component-button bs-'+index+'-button" data-bs_category="available_css" data-cm_instance="'+instance+'" data-bs_key="'+index+'" title="'+value.name+'" onclick="ToolsetCommon.BSComponentsEventsHandler.openBSDialog(this);">';
88
  codemirror_buttons +='<i class="'+value.button_icon+' bs-'+index+'-icon"></i>';
89
  codemirror_buttons +='</li>';
90
 
93
 
94
  // other buttons
95
  if(typeof $other === 'object' && _.keys($other).length > 0 ){
96
+ codemirror_buttons += '<span class="toolset_qt_btn_group_labels toolset_qt_btn_group_labels_style">'+Toolset_CssComponent.DDL_CSS_JS.group_label_other+'</span>';
97
 
98
  codemirror_buttons += '<ul class="js-wpv-filter-edit-toolbar">';
99
 
100
  jQuery.each( $other, function( index, value ){
101
 
102
+ codemirror_buttons +='<li class="js-editor-addon-button-wrapper js-editor-bs-button-wrapper">';
103
+ codemirror_buttons +='<button type="button" class="button-secondary js-code-editor-toolbar-button js-codemirror-bs-component-button bs-'+index+'-button" data-bs_category="other" data-cm_instance="'+instance+'" data-bs_key="'+index+'" title="'+value.name+'" onclick="ToolsetCommon.BSComponentsEventsHandler.openBSDialog(this);">';
104
  codemirror_buttons +='<i class="'+value.button_icon+' bs-'+index+'-icon"></i>';
105
  codemirror_buttons +='</li>';
106
 
119
  if(typeof $bootstrap_components !== 'object'){
120
  return;
121
  }
122
+
123
+ // toggle button div
124
+
125
+
126
  // button toogle button :)
127
  if(jQuery('#qt_'+instance+'_bs_component_show_hide_button').length === 0){
128
 
131
  } else {
132
  var button_value = Toolset_CssComponent.DDL_CSS_JS.button_toggle_hide;
133
  }
134
+
135
+ var toggle_toolbar_div = jQuery("#wp-"+$instance+"-editor-container .quicktags-toolbar");
136
+ if(toggle_toolbar_div.length === 0){
137
+
138
+ var views_toolbar = jQuery("#qt_"+$instance+"_toolbar");
139
+ if(views_toolbar !== 0){
140
+ toggle_toolbar_div = views_toolbar;
141
+ }
142
+ }
143
+
144
+ toggle_toolbar_div.append('<input type="button" id="qt_'+instance+'_bs_component_show_hide_button" class="ed_button button button-small" value="'+button_value+'">');
145
+
146
  jQuery( '#qt_'+instance+'_bs_component_show_hide_button' ).click(function() {
147
  Toolset.hooks.doAction( 'bs_components_toggle_buttons', instance );
148
  });
library/toolset/toolset-common/res/js/toolset-bs-component-events.js CHANGED
@@ -1,26 +1,26 @@
1
  var ToolsetCommon = ToolsetCommon || {};
2
 
3
  ToolsetCommon.BSComponentsEventsHandler = function($){
4
-
5
- var self = this;
6
-
7
  self.init = function(){
8
-
9
-
10
  Toolset.hooks.addAction( 'bs_components_toggle_buttons', function( instance ){
11
  self.toggle_codemirror_buttons(instance);
12
  });
13
-
14
  Toolset.hooks.addAction( 'bs_components_open_dialog', function( object ){
15
  self.bootstrap_info_dialog(object);
16
  });
17
-
18
  Toolset.hooks.addAction( 'bs_components_tinyMCE_divider', function( instance ){
19
  self.tinyMCE_divider(instance);
20
  });
21
-
22
  };
23
-
24
 
25
  self.bootstrap_info_dialog = function(object ){
26
 
@@ -50,42 +50,45 @@ ToolsetCommon.BSComponentsEventsHandler = function($){
50
  });
51
 
52
  dialog.dialog_open();
 
53
  };
54
-
55
-
56
  self.tinyMCE_divider = function($instance){
57
- _.defer(function(){
58
- if(jQuery('.toolset_bs_cm_labels').length === 0 ){
59
 
60
- jQuery('[aria-label="Glyphicons"]').before('<span class="toolset_qt_btn_group_labels toolset_bs_cm_labels">'+Toolset_CssComponent.DDL_CSS_JS.group_label_bs_components+'</span>');
61
- jQuery('[aria-label="Grid system"]').before('<span class="toolset_qt_btn_group_labels toolset_bs_cm_labels">'+Toolset_CssComponent.DDL_CSS_JS.group_label_bs_css+'</span>');
 
 
 
62
  if(typeof Toolset_CssComponent.DDL_CSS_JS['other'] === 'object' && _.keys(Toolset_CssComponent.DDL_CSS_JS['other']).length > 0 ){
63
- jQuery('[aria-label="Responsive utilities"]').after('<span class="toolset_qt_btn_group_labels toolset_bs_cm_labels">'+Toolset_CssComponent.DDL_CSS_JS.group_label_other+'</span>');
64
  }
65
-
66
- var $pop_location = jQuery('.toolset_qt_btn_group_labels').closest('div.mce-toolbar');
67
- $pop_location.after('<div id="pop_tinymce" class="pop pop_top_margin pop_right_margin_big pop_hidden"><a href="#" class="pop_close" data-pop_id="pop_tinymce"><i class="glyphicon glyphicon-remove"></i></a><p class="pop_msg_p">'+Toolset_CssComponent.DDL_CSS_JS.tinymce_pop_message+'<br><br><label><input type="checkbox" id="hide_pop_tinymce" name="hide_tooltip" value="hide_pop"> Dont show this tip again</label></p></div>');
68
-
69
  }
70
-
71
-
72
- var $labels = jQuery('.toolset_qt_btn_group_labels'), $container = $labels.closest('div.mce-toolbar');
73
  if(Toolset_CssComponent.DDL_CSS_JS.show_bs_buttons_tinymce_status === "yes"){
74
  $container.show();
75
  } else {
76
  $container.hide();
77
  }
78
-
79
  ToolsetCommon.BSComponentsEventsHandler.editor_notification_handler($instance);
80
-
81
- });
 
82
  };
83
-
84
-
85
  self.toggle_codemirror_buttons = function($instance, $other){
86
 
87
  jQuery('#codemirror-buttons-for-'+$instance).toggle();
88
-
89
  if(jQuery('#codemirror-buttons-for-'+$instance).is(":hidden") === true){
90
  jQuery("#qt_"+$instance+"_bs_component_show_hide_button").val(Toolset_CssComponent.DDL_CSS_JS.button_toggle_show);
91
  self.update_db_option('show_buttons_cm_status',false);
@@ -95,9 +98,9 @@ ToolsetCommon.BSComponentsEventsHandler = function($){
95
  self.update_db_option('show_buttons_cm_status',true);
96
  Toolset_CssComponent.DDL_CSS_JS.show_bs_buttons_cm_status = "yes";
97
  }
98
-
99
  };
100
-
101
  self.update_db_option = function(option, value){
102
  var data = {
103
  'action': 'toolset_bs_update_option',
@@ -106,63 +109,66 @@ ToolsetCommon.BSComponentsEventsHandler = function($){
106
  };
107
  jQuery.post(ajaxurl, data);
108
  };
109
-
110
-
111
  ToolsetCommon.BSComponentsEventsHandler.update_tinyMCE_toggle_status = function ($container){
112
  var hide_tinyMCE_buttons = jQuery($container).is(":hidden");
113
  var tinyMCE_status = (hide_tinyMCE_buttons) ? false : true;
114
  Toolset_CssComponent.DDL_CSS_JS.show_bs_buttons_tinymce_status = (tinyMCE_status) ? 'yes' : 'no';
115
  self.update_db_option('show_buttons_tinymce_status',tinyMCE_status);
116
  };
117
-
118
 
119
  ToolsetCommon.BSComponentsEventsHandler.openBSDialog = function(button_data){
120
  var bs_cat = jQuery(button_data).data('bs_category');
121
  var bs_key = jQuery(button_data).data('bs_key');
122
  var cm_instance = jQuery(button_data).data('cm_instance');
123
 
124
- Toolset.hooks.doAction( 'bs_components_open_dialog', {
125
- name: Toolset_CssComponent.DDL_CSS_JS[bs_cat][bs_key].name,
126
- description: Toolset_CssComponent.DDL_CSS_JS[bs_cat][bs_key].description,
127
- url: Toolset_CssComponent.DDL_CSS_JS[bs_cat][bs_key].url,
128
- button_icon: Toolset_CssComponent.DDL_CSS_JS[bs_cat][bs_key].button_icon,
129
- dialog_icon_size: Toolset_CssComponent.DDL_CSS_JS[bs_cat][bs_key].dialog_icon_size,
130
- bs_category: bs_cat,
131
- bs_component_key: bs_key,
132
- buttons_type: 'codemirror',
133
- editor_instance: cm_instance
134
- });
 
 
 
 
 
 
 
135
  };
136
-
137
  ToolsetCommon.BSComponentsEventsHandler.editor_notification = function (button_data){
138
-
139
  var bs_cat = jQuery(button_data).data('bs_category');
140
  var bs_key = jQuery(button_data).data('bs_key');
141
  var bs_editor_instance = jQuery(button_data).data('editor_instance');
142
  var bs_buttons_type = jQuery(button_data).data('buttons_type');
143
 
144
  dialog.remove();
145
-
146
  if(Toolset_CssComponent.DDL_CSS_JS['hide_editor_pop_msg'] === "no"){
147
 
148
  if(bs_buttons_type === 'tinymce'){
149
- jQuery('#pop_tinymce').show();
150
  jQuery(".bs_pop_element_name_tinymce").text(Toolset_CssComponent.DDL_CSS_JS[bs_cat][bs_key].name);
151
- jQuery('[data-editor="codemirror"]').addClass('bs_button_glow_effect');
152
  } else if(bs_buttons_type === 'codemirror'){
153
  jQuery('#pop_'+bs_editor_instance).show();
154
  jQuery(".bs_pop_element_name_codemirror").text(Toolset_CssComponent.DDL_CSS_JS[bs_cat][bs_key].name);
155
  }
156
-
157
  }
158
-
159
  };
160
-
161
  ToolsetCommon.BSComponentsEventsHandler.editor_notification_handler = function (instance){
162
-
163
- jQuery('[data-editor="tinymce"]').click(function(event) {
164
- Toolset.hooks.doAction( 'bs_components_tinyMCE_divider', instance );
165
- });
166
 
167
  jQuery( ".pop_close" ).click(function(event) {
168
  event.preventDefault();
@@ -173,8 +179,7 @@ ToolsetCommon.BSComponentsEventsHandler = function($){
173
  self.update_db_option('hide_pop_msg',true);
174
  Toolset_CssComponent.DDL_CSS_JS['hide_editor_pop_msg'] = "yes";
175
  }
176
- jQuery('[data-editor="codemirror"]').removeClass('bs_button_glow_effect');
177
- jQuery('#pop_tinymce').hide();
178
  } else {
179
  jQuery("#"+jQuery(this).data('pop_id')).hide();
180
  if(jQuery("#hide_pop_"+instance).prop('checked')){
@@ -182,24 +187,38 @@ ToolsetCommon.BSComponentsEventsHandler = function($){
182
  Toolset_CssComponent.DDL_CSS_JS['hide_editor_pop_msg'] = "yes";
183
  }
184
  }
185
-
186
  });
187
-
188
-
189
  };
190
-
191
  self.init();
192
  };
193
 
194
 
195
- (function($){
196
- $(function(){
197
- if (typeof QTags !== 'undefined') {
198
- new ToolsetCommon.BootstrapCssComponentsQuickTags($);
199
- }
200
- if (typeof tinymce === 'object') {
201
- new ToolsetCommon.BootstrapCssComponentsTinyMCE($);
202
- }
203
- new ToolsetCommon.BSComponentsEventsHandler($);
204
- });
205
- }(jQuery));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  var ToolsetCommon = ToolsetCommon || {};
2
 
3
  ToolsetCommon.BSComponentsEventsHandler = function($){
4
+
5
+ var self = this, dialog = null;
6
+
7
  self.init = function(){
8
+
9
+
10
  Toolset.hooks.addAction( 'bs_components_toggle_buttons', function( instance ){
11
  self.toggle_codemirror_buttons(instance);
12
  });
13
+
14
  Toolset.hooks.addAction( 'bs_components_open_dialog', function( object ){
15
  self.bootstrap_info_dialog(object);
16
  });
17
+
18
  Toolset.hooks.addAction( 'bs_components_tinyMCE_divider', function( instance ){
19
  self.tinyMCE_divider(instance);
20
  });
21
+
22
  };
23
+
24
 
25
  self.bootstrap_info_dialog = function(object ){
26
 
50
  });
51
 
52
  dialog.dialog_open();
53
+
54
  };
55
+
56
+
57
  self.tinyMCE_divider = function($instance){
 
 
58
 
59
+ //_.defer(function(){
60
+ if(jQuery(".toolset_bs_cm_labels_"+$instance).length === 0 ){
61
+ jQuery('#wp-'+$instance+'-editor-container [aria-label="Glyphicons"]').before('<span class="toolset_qt_btn_group_labels_style toolset_qt_btn_group_labels_'+$instance+' toolset_bs_cm_labels_'+$instance+'">'+Toolset_CssComponent.DDL_CSS_JS.group_label_bs_components+'</span>');
62
+ jQuery('#wp-'+$instance+'-editor-container [aria-label="Grid system"]').before('<span class="toolset_qt_btn_group_labels_style toolset_qt_btn_group_labels_'+$instance+' toolset_bs_cm_labels_'+$instance+'">'+Toolset_CssComponent.DDL_CSS_JS.group_label_bs_css+'</span>');
63
+
64
  if(typeof Toolset_CssComponent.DDL_CSS_JS['other'] === 'object' && _.keys(Toolset_CssComponent.DDL_CSS_JS['other']).length > 0 ){
65
+ jQuery('#wp-'+$instance+'-editor-container [aria-label="Responsive utilities"]').after('<span class="toolset_qt_btn_group_labels_style toolset_qt_btn_group_labels_'+$instance+' toolset_bs_cm_labels_'+$instance+'">'+Toolset_CssComponent.DDL_CSS_JS.group_label_other+'</span>');
66
  }
67
+
68
+ var $pop_location = jQuery('.toolset_qt_btn_group_labels_'+$instance).closest('div.mce-toolbar');
69
+ $pop_location.after('<div id="pop_'+$instance+'" class="pop pop_top_margin pop_right_margin_big pop_hidden"><a href="#" class="pop_close" data-instance="'+$instance+'" data-pop_id="pop_tinymce"><i class="glyphicon glyphicon-remove"></i></a><p class="pop_msg_p">'+Toolset_CssComponent.DDL_CSS_JS.tinymce_pop_message+'<br><br><label><input type="checkbox" id="hide_pop_tinymce" name="hide_tooltip" value="hide_pop"> Dont show this tip again</label></p></div>');
70
+
71
  }
72
+
73
+
74
+ var $labels = jQuery('.toolset_qt_btn_group_labels_'+$instance), $container = $labels.closest('div.mce-toolbar');
75
  if(Toolset_CssComponent.DDL_CSS_JS.show_bs_buttons_tinymce_status === "yes"){
76
  $container.show();
77
  } else {
78
  $container.hide();
79
  }
80
+
81
  ToolsetCommon.BSComponentsEventsHandler.editor_notification_handler($instance);
82
+
83
+ //});
84
+
85
  };
86
+
87
+
88
  self.toggle_codemirror_buttons = function($instance, $other){
89
 
90
  jQuery('#codemirror-buttons-for-'+$instance).toggle();
91
+
92
  if(jQuery('#codemirror-buttons-for-'+$instance).is(":hidden") === true){
93
  jQuery("#qt_"+$instance+"_bs_component_show_hide_button").val(Toolset_CssComponent.DDL_CSS_JS.button_toggle_show);
94
  self.update_db_option('show_buttons_cm_status',false);
98
  self.update_db_option('show_buttons_cm_status',true);
99
  Toolset_CssComponent.DDL_CSS_JS.show_bs_buttons_cm_status = "yes";
100
  }
101
+
102
  };
103
+
104
  self.update_db_option = function(option, value){
105
  var data = {
106
  'action': 'toolset_bs_update_option',
109
  };
110
  jQuery.post(ajaxurl, data);
111
  };
112
+
113
+
114
  ToolsetCommon.BSComponentsEventsHandler.update_tinyMCE_toggle_status = function ($container){
115
  var hide_tinyMCE_buttons = jQuery($container).is(":hidden");
116
  var tinyMCE_status = (hide_tinyMCE_buttons) ? false : true;
117
  Toolset_CssComponent.DDL_CSS_JS.show_bs_buttons_tinymce_status = (tinyMCE_status) ? 'yes' : 'no';
118
  self.update_db_option('show_buttons_tinymce_status',tinyMCE_status);
119
  };
120
+
121
 
122
  ToolsetCommon.BSComponentsEventsHandler.openBSDialog = function(button_data){
123
  var bs_cat = jQuery(button_data).data('bs_category');
124
  var bs_key = jQuery(button_data).data('bs_key');
125
  var cm_instance = jQuery(button_data).data('cm_instance');
126
 
127
+ if( Toolset_CssComponent && Toolset_CssComponent.DDL_CSS_JS ) {
128
+ try {
129
+ Toolset.hooks.doAction('bs_components_open_dialog', {
130
+ name: Toolset_CssComponent.DDL_CSS_JS[bs_cat][bs_key].name,
131
+ description: Toolset_CssComponent.DDL_CSS_JS[bs_cat][bs_key].description,
132
+ url: Toolset_CssComponent.DDL_CSS_JS[bs_cat][bs_key].url,
133
+ button_icon: Toolset_CssComponent.DDL_CSS_JS[bs_cat][bs_key].button_icon,
134
+ dialog_icon_size: Toolset_CssComponent.DDL_CSS_JS[bs_cat][bs_key].dialog_icon_size,
135
+ bs_category: bs_cat,
136
+ bs_component_key: bs_key,
137
+ buttons_type: 'codemirror',
138
+ editor_instance: cm_instance
139
+ });
140
+ } catch (e) {
141
+ console.log('A property is missing for: ', bs_cat, bs_key, e.message);
142
+ }
143
+ }
144
+
145
  };
146
+
147
  ToolsetCommon.BSComponentsEventsHandler.editor_notification = function (button_data){
148
+
149
  var bs_cat = jQuery(button_data).data('bs_category');
150
  var bs_key = jQuery(button_data).data('bs_key');
151
  var bs_editor_instance = jQuery(button_data).data('editor_instance');
152
  var bs_buttons_type = jQuery(button_data).data('buttons_type');
153
 
154
  dialog.remove();
155
+
156
  if(Toolset_CssComponent.DDL_CSS_JS['hide_editor_pop_msg'] === "no"){
157
 
158
  if(bs_buttons_type === 'tinymce'){
159
+ jQuery('#pop_'+bs_editor_instance).show();
160
  jQuery(".bs_pop_element_name_tinymce").text(Toolset_CssComponent.DDL_CSS_JS[bs_cat][bs_key].name);
 
161
  } else if(bs_buttons_type === 'codemirror'){
162
  jQuery('#pop_'+bs_editor_instance).show();
163
  jQuery(".bs_pop_element_name_codemirror").text(Toolset_CssComponent.DDL_CSS_JS[bs_cat][bs_key].name);
164
  }
165
+
166
  }
167
+
168
  };
169
+
170
  ToolsetCommon.BSComponentsEventsHandler.editor_notification_handler = function (instance){
171
+
 
 
 
172
 
173
  jQuery( ".pop_close" ).click(function(event) {
174
  event.preventDefault();
179
  self.update_db_option('hide_pop_msg',true);
180
  Toolset_CssComponent.DDL_CSS_JS['hide_editor_pop_msg'] = "yes";
181
  }
182
+ jQuery('#pop_'+jQuery(this).data('instance')).hide();
 
183
  } else {
184
  jQuery("#"+jQuery(this).data('pop_id')).hide();
185
  if(jQuery("#hide_pop_"+instance).prop('checked')){
187
  Toolset_CssComponent.DDL_CSS_JS['hide_editor_pop_msg'] = "yes";
188
  }
189
  }
190
+
191
  });
192
+
193
+
194
  };
195
+
196
  self.init();
197
  };
198
 
199
 
200
+ jQuery( document ).ready(function() {
201
+
202
+ if (typeof QTags !== 'undefined') {
203
+ new ToolsetCommon.BootstrapCssComponentsQuickTags($);
204
+
205
+ _.defer(function(){
206
+ if( Toolset_CssComponent.DDL_CSS_JS.current_screen ==='post' ){
207
+
208
+ if(jQuery(".quicktags-toolbar").parent('.wp-editor-container').length > 0){
209
+ jQuery.each( jQuery(".quicktags-toolbar").parent('.wp-editor-container'), function( key, value ) {
210
+ if(value.id !== 'undefined'){
211
+ var instance = value.id.replace("wp-", "");
212
+ instance = instance.replace("-editor-container","");
213
+ Toolset.hooks.doAction('toolset_text_editor_CodeMirror_init', instance);
214
+ }
215
+
216
+ });
217
+ }
218
+
219
+ }
220
+ })
221
+ }
222
+
223
+ new ToolsetCommon.BSComponentsEventsHandler($);
224
+ });
library/toolset/toolset-common/res/js/toolset-bs-component-tinymce.js ADDED
@@ -0,0 +1,132 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var ToolsetCommon = ToolsetCommon || {};
2
+
3
+
4
+ ToolsetCommon.BootstrapCssComponentsTinyMCE = function($){
5
+ self.init = function(){
6
+ self.generate_all_tinymce_buttons();
7
+
8
+ };
9
+
10
+ self.generate_all_tinymce_buttons = function(){
11
+ /* Register the buttons */
12
+ tinymce.create('tinymce.plugins.BSComponentButtons', {
13
+ init : function(ed, url) {
14
+
15
+ /**
16
+ * Inserts toogle button for Bootstrap buttons
17
+ */
18
+ ed.addButton( 'css_components_toolbar_toggle', {
19
+ icon: ' icon-bootstrap-original-logo ont-icon-25 css-components-toggle-icon',
20
+ tooltip: Toolset_CssComponent.DDL_CSS_JS.toggle_button_tooltip,
21
+ onclick: function() {
22
+
23
+ var $labels = jQuery('.toolset_qt_btn_group_labels_'+ed.id),
24
+ $container = $labels.closest('div.mce-toolbar');
25
+ $container.toggle();
26
+ ToolsetCommon.BSComponentsEventsHandler.update_tinyMCE_toggle_status($container);
27
+
28
+ }
29
+ });
30
+
31
+
32
+ /**
33
+ * Insert all other buttons
34
+ */
35
+ var $bootstrap_components = Toolset_CssComponent.DDL_CSS_JS.available_components;
36
+ var $bootstrap_css = Toolset_CssComponent.DDL_CSS_JS.available_css;
37
+ var $other = Toolset_CssComponent.DDL_CSS_JS.other;
38
+
39
+ jQuery.each( $bootstrap_components, function( index, value ){
40
+
41
+ ed.addButton( 'css_components_'+index+'_button', {
42
+ icon: ' '+value.button_icon+' '+value.button_icon_size,
43
+ tooltip: value.name,
44
+ onclick: function() {
45
+
46
+ Toolset.hooks.doAction( 'bs_components_open_dialog', {
47
+ name: value.name,
48
+ description: value.description,
49
+ url: value.url,
50
+ button_icon: value.button_icon,
51
+ dialog_icon_size: value.dialog_icon_size,
52
+ bs_category: 'available_components',
53
+ bs_component_key: index,
54
+ editor_instance: ed.id,
55
+ buttons_type: 'tinymce'
56
+ });
57
+
58
+ },
59
+ 'class' : "toolset-components-buttons"
60
+ });
61
+
62
+ });
63
+
64
+ jQuery.each( $bootstrap_css, function( index, value ){
65
+
66
+ ed.addButton( 'css_'+index+'_button', {
67
+ icon: ' '+value.button_icon+' '+value.button_icon_size,
68
+ tooltip: value.name,
69
+ onclick: function() {
70
+
71
+ Toolset.hooks.doAction( 'bs_components_open_dialog', {
72
+ name: value.name,
73
+ description: value.description,
74
+ url: value.url,
75
+ button_icon: value.button_icon,
76
+ dialog_icon_size: value.dialog_icon_size,
77
+ bs_category: 'available_css',
78
+ bs_component_key: index,
79
+ editor_instance: ed.id,
80
+ buttons_type: 'tinymce'
81
+ });
82
+
83
+ },
84
+ 'class' : "toolset-components-buttons"
85
+ });
86
+
87
+ });
88
+
89
+ jQuery.each( $other, function( index, value ){
90
+
91
+ ed.addButton( 'other_'+index+'_button', {
92
+ icon: ' '+value.button_icon+' '+value.button_icon_size,
93
+ tooltip: value.name,
94
+ onclick: function() {
95
+
96
+ Toolset.hooks.doAction( 'bs_components_open_dialog', {
97
+ name: value.name,
98
+ description: value.description,
99
+ url: value.url,
100
+ button_icon: value.button_icon,
101
+ dialog_icon_size: value.dialog_icon_size,
102
+ bs_category: 'other',
103
+ bs_component_key: index,
104
+ editor_instance: ed.id,
105
+ buttons_type: 'tinymce'
106
+ });
107
+
108
+ },
109
+ 'class' : "toolset-components-buttons"
110
+ });
111
+
112
+ });
113
+
114
+ _.defer(function(){
115
+ Toolset.hooks.doAction( 'bs_components_tinyMCE_divider', ed.id );
116
+ });
117
+
118
+ },
119
+ createControl : function(n, cm) {
120
+ return null;
121
+ },
122
+ });
123
+ /* Start the buttons */
124
+ tinymce.PluginManager.add( 'bs_component_buttons_script', tinymce.plugins.BSComponentButtons );
125
+ };
126
+
127
+ self.init();
128
+ }
129
+
130
+ (function() {
131
+ new ToolsetCommon.BootstrapCssComponentsTinyMCE($);
132
+ });
library/toolset/toolset-common/res/js/toolset-select2-compatibility.js CHANGED
@@ -149,6 +149,7 @@ ToolsetCommon.toolset_select2ExecMethods = function(el, method, param){
149
  jQuery(el).toolset_select2_original("close");
150
  }
151
  break;
 
152
  case "destory":
153
  jQuery(el).removeClass("toolset_select2_converted");
154
  jQuery(el).toolset_select2_original("destroy");
149
  jQuery(el).toolset_select2_original("close");
150
  }
151
  break;
152
+ case "destroy":
153
  case "destory":
154
  jQuery(el).removeClass("toolset_select2_converted");
155
  jQuery(el).toolset_select2_original("destroy");
library/toolset/toolset-common/res/js/toolset-settings.js CHANGED
@@ -7,25 +7,98 @@ ToolsetCommon.ToolsetSettings = function( $ ) {
7
  self.overlay_container = $("<div class='toolset-setting-overlay js-toolset-setting-overlay'><div class='toolset-transparency'></div><i class='icon-lock fa fa-lock'></i></div>");
8
 
9
  self.init = function() {
10
-
 
 
 
 
 
11
  };
12
-
13
- $( document ).on( 'click', '.js-toolset-nav-tab', function( e ) {
14
- e.preventDefault();
15
- var thiz = $( this ),
16
- target = thiz.data( 'target' ),
17
- current = $( '.js-toolset-nav-tab.nav-tab-active' ).data( 'target' );
18
- if ( ! thiz.hasClass( 'nav-tab-active' ) ) {
19
- $( '.js-toolset-nav-tab.nav-tab-active' ).removeClass( 'nav-tab-active' );
20
- $( '.js-toolset-tabbed-section-item-' + current ).fadeOut( 'fast', function() {
21
- $( '.js-toolset-tabbed-section-item' ).removeClass( 'toolset-tabbed-section-current-item js-toolset-tabbed-section-current-item' );
22
- thiz.addClass( 'nav-tab-active' );
23
- $( '.js-toolset-tabbed-section-item-' + target ).fadeIn( 'fast', function() {
24
- $( this ).addClass( 'toolset-tabbed-section-current-item js-toolset-tabbed-section-current-item' );
 
 
 
25
  });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
26
  });
27
  }
28
- });
 
 
 
29
 
30
  /**
31
  * --------------------
@@ -72,32 +145,39 @@ ToolsetCommon.ToolsetSettings = function( $ ) {
72
  };
73
 
74
  self.admin_bar_options_debounce_update = _.debounce( self.save_admin_bar_options, 1000 );
75
-
76
- $( document ).on( 'js-toolset-event-update-setting-section-triggered', function( event ) {
77
- $( '#js-toolset-ajax-saving-messages' )
78
- .html( toolset_settings_texts.autosave_saving )
79
- .show();
80
- });
81
-
82
- $( document ).on( 'js-toolset-event-update-setting-section-completed', function( event ) {
83
- $( '#js-toolset-ajax-saving-messages' )
84
- .html( toolset_settings_texts.autosave_saved )
85
- .addClass( 'toolset-ajax-saving-messages-success' )
86
- .show();
87
- setTimeout( function () {
88
- $( '#js-toolset-ajax-saving-messages' ).removeClass( 'toolset-ajax-saving-messages-success' );
89
- }, 1000 );
90
- });
91
-
92
- $( document ).on( 'js-toolset-event-update-setting-section-failed', function( event, data ) {
93
- var message = ( typeof data === 'undefined' || _.has( data, "message" ) ) ? toolset_settings_texts.autosave_failed : data.message;
94
- $( '#js-toolset-ajax-saving-messages' )
95
- .html( message )
96
- .addClass( 'toolset-ajax-saving-messages-fail' );
97
- $( '.js-toolset-tabbed-section-item' )
98
- .css( { 'position': 'relative' } )
99
- .prepend( self.overlay_container );
100
- });
 
 
 
 
 
 
 
101
 
102
  self.init();
103
 
7
  self.overlay_container = $("<div class='toolset-setting-overlay js-toolset-setting-overlay'><div class='toolset-transparency'></div><i class='icon-lock fa fa-lock'></i></div>");
8
 
9
  self.init = function() {
10
+ self.handle_options_changes();
11
+ self.bootstrap_version_change_handler();
12
+ self.update_event_triggered();
13
+ self.update_event_completed();
14
+ self.update_event_failed();
15
+ self.check_selected_bootstrap_version( toolset_settings_texts.toolset_bootstrap_version_filter, toolset_settings_texts.toolset_bootstrap_version_selected );
16
  };
17
+
18
+
19
+ self.handle_options_changes = function(){
20
+ $( document ).on( 'click', '.js-toolset-nav-tab', function( e ) {
21
+ e.preventDefault();
22
+ var thiz = $( this ),
23
+ target = thiz.data( 'target' ),
24
+ current = $( '.js-toolset-nav-tab.nav-tab-active' ).data( 'target' );
25
+ if ( ! thiz.hasClass( 'nav-tab-active' ) ) {
26
+ $( '.js-toolset-nav-tab.nav-tab-active' ).removeClass( 'nav-tab-active' );
27
+ $( '.js-toolset-tabbed-section-item-' + current ).fadeOut( 'fast', function() {
28
+ $( '.js-toolset-tabbed-section-item' ).removeClass( 'toolset-tabbed-section-current-item js-toolset-tabbed-section-current-item' );
29
+ thiz.addClass( 'nav-tab-active' );
30
+ $( '.js-toolset-tabbed-section-item-' + target ).fadeIn( 'fast', function() {
31
+ $( this ).addClass( 'toolset-tabbed-section-current-item js-toolset-tabbed-section-current-item' );
32
+ });
33
  });
34
+ }
35
+ });
36
+ };
37
+
38
+
39
+
40
+ /**
41
+ * --------------------
42
+ * Bootstrap
43
+ * --------------------
44
+ */
45
+
46
+ self.bootstrap_version_state = ( $('.js-toolset-bootstrap-version:checked').length > 0 ) ? $('.js-toolset-bootstrap-version:checked').val() : false;
47
+
48
+ self.bootstrap_version_change_handler = function(){
49
+ $( '.js-toolset-bootstrap-version' ).on( 'change', function( ) {
50
+ self.bootstrap_version_options_debounce_update();
51
+ self.check_selected_bootstrap_version( toolset_settings_texts.toolset_bootstrap_version_filter, $('.js-toolset-bootstrap-version:checked').val() )
52
+ });
53
+ };
54
+
55
+
56
+ self.check_selected_bootstrap_version = function( filter_version, db_version ){
57
+
58
+
59
+ $('.js-tolset-option-'+toolset_settings_texts.toolset_bootstrap_version_filter.replace('.','')).append('<div id="js-different-bs-versions" style="display:none;" class="notice inline notice-warning notice-alt"><p>'+toolset_settings_texts.toolset_theme_loads_own_bs+'</p></div>')
60
+
61
+ if( filter_version !== db_version && $.inArray(db_version,['','98','99']) === -1 ){
62
+ $('#js-different-bs-versions').show();
63
+ } else {
64
+ $('#js-different-bs-versions').hide();
65
+ }
66
+
67
+ };
68
+
69
+ self.save_bootstrap_version_options = function() {
70
+ if ( self.bootstrap_version_state != $( '.js-toolset-bootstrap-version:checked' ).val() ) {
71
+ var data = {
72
+ action: 'toolset_update_bootstrap_version_status',
73
+ status: $('.js-toolset-bootstrap-version:checked').val(),
74
+ wpnonce: $('#toolset_bootstrap_version_nonce').val()
75
+ };
76
+
77
+ $.ajax({
78
+ type: "POST",
79
+ dataType: "json",
80
+ url: ajaxurl,
81
+ data: data,
82
+ success: function( response ) {
83
+ if ( response.success ) {
84
+ self.bootstrap_version_state = $('.js-toolset-bootstrap-version:checked').val();
85
+ $( document ).trigger( 'js-toolset-event-update-setting-section-completed' );
86
+ } else {
87
+ $( document ).trigger( 'js-toolset-event-update-setting-section-failed', [ response.data ] );
88
+ }
89
+ },
90
+ error: function( ajaxContext ) {
91
+ $( document ).trigger( 'js-toolset-event-update-setting-section-failed' );
92
+ },
93
+ complete: function() {
94
+
95
+ }
96
  });
97
  }
98
+ };
99
+
100
+ self.bootstrap_version_options_debounce_update = _.debounce( self.save_bootstrap_version_options, 1000 );
101
+
102
 
103
  /**
104
  * --------------------
145
  };
146
 
147
  self.admin_bar_options_debounce_update = _.debounce( self.save_admin_bar_options, 1000 );
148
+
149
+ self.update_event_triggered = function(){
150
+ $( document ).on( 'js-toolset-event-update-setting-section-triggered', function( event ) {
151
+ $( '#js-toolset-ajax-saving-messages' )
152
+ .html( toolset_settings_texts.autosave_saving )
153
+ .show();
154
+ });
155
+ };
156
+
157
+ self.update_event_completed = function(){
158
+ $( document ).on( 'js-toolset-event-update-setting-section-completed', function( event ) {
159
+ $( '#js-toolset-ajax-saving-messages' )
160
+ .html( toolset_settings_texts.autosave_saved )
161
+ .addClass( 'toolset-ajax-saving-messages-success' )
162
+ .show();
163
+ setTimeout( function () {
164
+ $( '#js-toolset-ajax-saving-messages' ).removeClass( 'toolset-ajax-saving-messages-success' );
165
+ }, 1000 );
166
+ });
167
+ };
168
+
169
+ self.update_event_failed = function(){
170
+ $( document ).on( 'js-toolset-event-update-setting-section-failed', function( event, data ) {
171
+ var message = ( typeof data === 'undefined' || _.has( data, "message" ) ) ? toolset_settings_texts.autosave_failed : data.message;
172
+ $( '#js-toolset-ajax-saving-messages' )
173
+ .html( message )
174
+ .addClass( 'toolset-ajax-saving-messages-fail' );
175
+ $( '.js-toolset-tabbed-section-item' )
176
+ .css( { 'position': 'relative' } )
177
+ .prepend( self.overlay_container );
178
+ });
179
+ };
180
+
181
 
182
  self.init();
183
 
library/toolset/toolset-common/res/lib/bootstrap/config.json ADDED
@@ -0,0 +1,434 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "vars": {
3
+ "@gray-base": "#000",
4
+ "@gray-darker": "lighten(@gray-base, 13.5%)",
5
+ "@gray-dark": "lighten(@gray-base, 20%)",
6
+ "@gray": "lighten(@gray-base, 33.5%)",
7
+ "@gray-light": "lighten(@gray-base, 46.7%)",
8
+ "@gray-lighter": "lighten(@gray-base, 93.5%)",
9
+ "@brand-primary": "darken(#428bca, 6.5%)",
10
+ "@brand-success": "#5cb85c",
11
+ "@brand-info": "#5bc0de",
12
+ "@brand-warning": "#f0ad4e",
13
+ "@brand-danger": "#d9534f",
14
+ "@body-bg": "#fff",
15
+ "@text-color": "@gray-dark",
16
+ "@link-color": "@brand-primary",
17
+ "@link-hover-color": "darken(@link-color, 15%)",
18
+ "@link-hover-decoration": "underline",
19
+ "@font-family-sans-serif": "\"Helvetica Neue\", Helvetica, Arial, sans-serif",
20
+ "@font-family-serif": "Georgia, \"Times New Roman\", Times, serif",
21
+ "@font-family-monospace": "Menlo, Monaco, Consolas, \"Courier New\", monospace",
22
+ "@font-family-base": "@font-family-sans-serif",
23
+ "@font-size-base": "14px",
24
+ "@font-size-large": "ceil((@font-size-base * 1.25))",
25
+ "@font-size-small": "ceil((@font-size-base * 0.85))",
26
+ "@font-size-h1": "floor((@font-size-base * 2.6))",
27
+ "@font-size-h2": "floor((@font-size-base * 2.15))",
28
+ "@font-size-h3": "ceil((@font-size-base * 1.7))",
29
+ "@font-size-h4": "ceil((@font-size-base * 1.25))",
30
+ "@font-size-h5": "@font-size-base",
31
+ "@font-size-h6": "ceil((@font-size-base * 0.85))",
32
+ "@line-height-base": "1.428571429",
33
+ "@line-height-computed": "floor((@font-size-base * @line-height-base))",
34
+ "@headings-font-family": "inherit",
35
+ "@headings-font-weight": "500",
36
+ "@headings-line-height": "1.1",
37
+ "@headings-color": "inherit",
38
+ "@icon-font-path": "\"../fonts/\"",
39
+ "@icon-font-name": "\"glyphicons-halflings-regular\"",
40
+ "@icon-font-svg-id": "\"glyphicons_halflingsregular\"",
41
+ "@padding-base-vertical": "6px",
42
+ "@padding-base-horizontal": "12px",
43
+ "@padding-large-vertical": "10px",
44
+ "@padding-large-horizontal": "16px",
45
+ "@padding-small-vertical": "5px",
46
+ "@padding-small-horizontal": "10px",
47
+ "@padding-xs-vertical": "1px",
48
+ "@padding-xs-horizontal": "5px",
49
+ "@line-height-large": "1.3333333",
50
+ "@line-height-small": "1.5",
51
+ "@border-radius-base": "4px",
52
+ "@border-radius-large": "6px",
53
+ "@border-radius-small": "3px",
54
+ "@component-active-color": "#fff",
55
+ "@component-active-bg": "@brand-primary",
56
+ "@caret-width-base": "4px",
57
+ "@caret-width-large": "5px",
58
+ "@table-cell-padding": "8px",
59
+ "@table-condensed-cell-padding": "5px",
60
+ "@table-bg": "transparent",
61
+ "@table-bg-accent": "#f9f9f9",
62
+ "@table-bg-hover": "#f5f5f5",
63
+ "@table-bg-active": "@table-bg-hover",
64
+ "@table-border-color": "#ddd",
65
+ "@btn-font-weight": "normal",
66
+ "@btn-default-color": "#333",
67
+ "@btn-default-bg": "#fff",
68
+ "@btn-default-border": "#ccc",
69
+ "@btn-primary-color": "#fff",
70
+ "@btn-primary-bg": "@brand-primary",
71
+ "@btn-primary-border": "darken(@btn-primary-bg, 5%)",
72
+ "@btn-success-color": "#fff",
73
+ "@btn-success-bg": "@brand-success",
74
+ "@btn-success-border": "darken(@btn-success-bg, 5%)",
75
+ "@btn-info-color": "#fff",
76
+ "@btn-info-bg": "@brand-info",
77
+ "@btn-info-border": "darken(@btn-info-bg, 5%)",
78
+ "@btn-warning-color": "#fff",
79
+ "@btn-warning-bg": "@brand-warning",
80
+ "@btn-warning-border": "darken(@btn-warning-bg, 5%)",
81
+ "@btn-danger-color": "#fff",
82
+ "@btn-danger-bg": "@brand-danger",
83
+ "@btn-danger-border": "darken(@btn-danger-bg, 5%)",
84
+ "@btn-link-disabled-color": "@gray-light",
85
+ "@btn-border-radius-base": "@border-radius-base",
86
+ "@btn-border-radius-large": "@border-radius-large",
87
+ "@btn-border-radius-small": "@border-radius-small",
88
+ "@input-bg": "#fff",
89
+ "@input-bg-disabled": "@gray-lighter",
90
+ "@input-color": "@gray",
91
+ "@input-border": "#ccc",
92
+ "@input-border-radius": "@border-radius-base",
93
+ "@input-border-radius-large": "@border-radius-large",
94
+ "@input-border-radius-small": "@border-radius-small",
95
+ "@input-border-focus": "#66afe9",
96
+ "@input-color-placeholder": "#999",
97
+ "@input-height-base": "(@line-height-computed + (@padding-base-vertical * 2) + 2)",
98
+ "@input-height-large": "(ceil(@font-size-large * @line-height-large) + (@padding-large-vertical * 2) + 2)",
99
+ "@input-height-small": "(floor(@font-size-small * @line-height-small) + (@padding-small-vertical * 2) + 2)",
100
+ "@form-group-margin-bottom": "15px",
101
+ "@legend-color": "@gray-dark",
102
+ "@legend-border-color": "#e5e5e5",
103
+ "@input-group-addon-bg": "@gray-lighter",
104
+ "@input-group-addon-border-color": "@input-border",
105
+ "@cursor-disabled": "not-allowed",
106
+ "@dropdown-bg": "#fff",
107
+ "@dropdown-border": "rgba(0,0,0,.15)",
108
+ "@dropdown-fallback-border": "#ccc",
109
+ "@dropdown-divider-bg": "#e5e5e5",
110
+ "@dropdown-link-color": "@gray-dark",
111
+ "@dropdown-link-hover-color": "darken(@gray-dark, 5%)",
112
+ "@dropdown-link-hover-bg": "#f5f5f5",
113
+ "@dropdown-link-active-color": "@component-active-color",
114
+ "@dropdown-link-active-bg": "@component-active-bg",
115
+ "@dropdown-link-disabled-color": "@gray-light",
116
+ "@dropdown-header-color": "@gray-light",
117
+ "@dropdown-caret-color": "#000",
118
+ "@screen-xs": "480px",
119
+ "@screen-xs-min": "@screen-xs",
120
+ "@screen-phone": "@screen-xs-min",
121
+ "@screen-sm": "768px",
122
+ "@screen-sm-min": "@screen-sm",
123
+ "@screen-tablet": "@screen-sm-min",
124
+ "@screen-md": "992px",
125
+ "@screen-md-min": "@screen-md",
126
+ "@screen-desktop": "@screen-md-min",
127
+ "@screen-lg": "1200px",
128
+ "@screen-lg-min": "@screen-lg",
129
+ "@screen-lg-desktop": "@screen-lg-min",
130
+ "@screen-xs-max": "(@screen-sm-min - 1)",
131
+ "@screen-sm-max": "(@screen-md-min - 1)",
132
+ "@screen-md-max": "(@screen-lg-min - 1)",
133
+ "@grid-columns": "12",
134
+ "@grid-gutter-width": "30px",
135
+ "@grid-float-breakpoint": "@screen-sm-min",
136
+ "@grid-float-breakpoint-max": "(@grid-float-breakpoint - 1)",
137
+ "@container-tablet": "(720px + @grid-gutter-width)",
138
+ "@container-sm": "@container-tablet",
139
+ "@container-desktop": "(940px + @grid-gutter-width)",
140
+ "@container-md": "@container-desktop",
141
+ "@container-large-desktop": "(1140px + @grid-gutter-width)",
142
+ "@container-lg": "@container-large-desktop",
143
+ "@navbar-height": "50px",
144
+ "@navbar-margin-bottom": "@line-height-computed",
145
+ "@navbar-border-radius": "@border-radius-base",
146
+ "@navbar-padding-horizontal": "floor((@grid-gutter-width / 2))",
147
+ "@navbar-padding-vertical": "((@navbar-height - @line-height-computed) / 2)",
148
+ "@navbar-collapse-max-height": "340px",
149
+ "@navbar-default-color": "#777",
150
+ "@navbar-default-bg": "#f8f8f8",
151
+ "@navbar-default-border": "darken(@navbar-default-bg, 6.5%)",
152
+ "@navbar-default-link-color": "#777",
153
+ "@navbar-default-link-hover-color": "#333",
154
+ "@navbar-default-link-hover-bg": "transparent",
155
+ "@navbar-default-link-active-color": "#555",
156
+ "@navbar-default-link-active-bg": "darken(@navbar-default-bg, 6.5%)",
157
+ "@navbar-default-link-disabled-color": "#ccc",
158
+ "@navbar-default-link-disabled-bg": "transparent",
159
+ "@navbar-default-brand-color": "@navbar-default-link-color",
160
+ "@navbar-default-brand-hover-color": "darken(@navbar-default-brand-color, 10%)",
161
+ "@navbar-default-brand-hover-bg": "transparent",
162
+ "@navbar-default-toggle-hover-bg": "#ddd",
163
+ "@navbar-default-toggle-icon-bar-bg": "#888",
164
+ "@navbar-default-toggle-border-color": "#ddd",
165
+ "@navbar-inverse-color": "lighten(@gray-light, 15%)",
166
+ "@navbar-inverse-bg": "#222",
167
+ "@navbar-inverse-border": "darken(@navbar-inverse-bg, 10%)",
168
+ "@navbar-inverse-link-color": "lighten(@gray-light, 15%)",
169
+ "@navbar-inverse-link-hover-color": "#fff",
170
+ "@navbar-inverse-link-hover-bg": "transparent",
171
+ "@navbar-inverse-link-active-color": "@navbar-inverse-link-hover-color",
172
+ "@navbar-inverse-link-active-bg": "darken(@navbar-inverse-bg, 10%)",
173
+ "@navbar-inverse-link-disabled-color": "#444",
174
+ "@navbar-inverse-link-disabled-bg": "transparent",
175
+ "@navbar-inverse-brand-color": "@navbar-inverse-link-color",
176
+ "@navbar-inverse-brand-hover-color": "#fff",
177
+ "@navbar-inverse-brand-hover-bg": "transparent",
178
+ "@navbar-inverse-toggle-hover-bg": "#333",
179
+ "@navbar-inverse-toggle-icon-bar-bg": "#fff",
180
+ "@navbar-inverse-toggle-border-color": "#333",
181
+ "@nav-link-padding": "10px 15px",
182
+ "@nav-link-hover-bg": "@gray-lighter",
183
+ "@nav-disabled-link-color": "@gray-light",
184
+ "@nav-disabled-link-hover-color": "@gray-light",
185
+ "@nav-tabs-border-color": "#ddd",
186
+ "@nav-tabs-link-hover-border-color": "@gray-lighter",
187
+ "@nav-tabs-active-link-hover-bg": "@body-bg",
188
+ "@nav-tabs-active-link-hover-color": "@gray",
189
+ "@nav-tabs-active-link-hover-border-color": "#ddd",
190
+ "@nav-tabs-justified-link-border-color": "#ddd",
191
+ "@nav-tabs-justified-active-link-border-color": "@body-bg",
192
+ "@nav-pills-border-radius": "@border-radius-base",
193
+ "@nav-pills-active-link-hover-bg": "@component-active-bg",
194
+ "@nav-pills-active-link-hover-color": "@component-active-color",
195
+ "@pagination-color": "@link-color",
196
+ "@pagination-bg": "#fff",
197
+ "@pagination-border": "#ddd",
198
+ "@pagination-hover-color": "@link-hover-color",
199
+ "@pagination-hover-bg": "@gray-lighter",
200
+ "@pagination-hover-border": "#ddd",
201
+ "@pagination-active-color": "#fff",
202
+ "@pagination-active-bg": "@brand-primary",
203
+ "@pagination-active-border": "@brand-primary",
204
+ "@pagination-disabled-color": "@gray-light",
205
+ "@pagination-disabled-bg": "#fff",
206
+ "@pagination-disabled-border": "#ddd",
207
+ "@pager-bg": "@pagination-bg",
208
+ "@pager-border": "@pagination-border",
209
+ "@pager-border-radius": "15px",
210
+ "@pager-hover-bg": "@pagination-hover-bg",
211
+ "@pager-active-bg": "@pagination-active-bg",
212
+ "@pager-active-color": "@pagination-active-color",
213
+ "@pager-disabled-color": "@pagination-disabled-color",
214
+ "@jumbotron-padding": "30px",
215
+ "@jumbotron-color": "inherit",
216
+ "@jumbotron-bg": "@gray-lighter",
217
+ "@jumbotron-heading-color": "inherit",
218
+ "@jumbotron-font-size": "ceil((@font-size-base * 1.5))",
219
+ "@jumbotron-heading-font-size": "ceil((@font-size-base * 4.5))",
220
+ "@state-success-text": "#3c763d",
221
+ "@state-success-bg": "#dff0d8",
222
+ "@state-success-border": "darken(spin(@state-success-bg, -10), 5%)",
223
+ "@state-info-text": "#31708f",
224
+ "@state-info-bg": "#d9edf7",
225
+ "@state-info-border": "darken(spin(@state-info-bg, -10), 7%)",
226
+ "@state-warning-text": "#8a6d3b",
227
+ "@state-warning-bg": "#fcf8e3",
228
+ "@state-warning-border": "darken(spin(@state-warning-bg, -10), 5%)",
229
+ "@state-danger-text": "#a94442",
230
+ "@state-danger-bg": "#f2dede",
231
+ "@state-danger-border": "darken(spin(@state-danger-bg, -10), 5%)",
232
+ "@tooltip-max-width": "200px",
233
+ "@tooltip-color": "#fff",
234
+ "@tooltip-bg": "#000",
235
+ "@tooltip-opacity": ".9",
236
+ "@tooltip-arrow-width": "5px",
237
+ "@tooltip-arrow-color": "@tooltip-bg",
238
+ "@popover-bg": "#fff",
239
+ "@popover-max-width": "276px",
240
+ "@popover-border-color": "rgba(0,0,0,.2)",
241
+ "@popover-fallback-border-color": "#ccc",
242
+ "@popover-title-bg": "darken(@popover-bg, 3%)",
243
+ "@popover-arrow-width": "10px",
244
+ "@popover-arrow-color": "@popover-bg",
245
+ "@popover-arrow-outer-width": "(@popover-arrow-width + 1)",
246
+ "@popover-arrow-outer-color": "fadein(@popover-border-color, 5%)",
247
+ "@popover-arrow-outer-fallback-color": "darken(@popover-fallback-border-color, 20%)",
248
+ "@label-default-bg": "@gray-light",
249
+ "@label-primary-bg": "@brand-primary",
250
+ "@label-success-bg": "@brand-success",
251
+ "@label-info-bg": "@brand-info",
252
+ "@label-warning-bg": "@brand-warning",
253
+ "@label-danger-bg": "@brand-danger",
254
+ "@label-color": "#fff",
255
+ "@label-link-hover-color": "#fff",
256
+ "@modal-inner-padding": "15px",
257
+ "@modal-title-padding": "15px",
258
+ "@modal-title-line-height": "@line-height-base",
259
+ "@modal-content-bg": "#fff",
260
+ "@modal-content-border-color": "rgba(0,0,0,.2)",
261
+ "@modal-content-fallback-border-color": "#999",
262
+ "@modal-backdrop-bg": "#000",
263
+ "@modal-backdrop-opacity": ".5",
264
+ "@modal-header-border-color": "#e5e5e5",
265
+ "@modal-footer-border-color": "@modal-header-border-color",
266
+ "@modal-lg": "900px",
267
+ "@modal-md": "600px",
268
+ "@modal-sm": "300px",
269
+ "@alert-padding": "15px",
270
+ "@alert-border-radius": "@border-radius-base",
271
+ "@alert-link-font-weight": "bold",
272
+ "@alert-success-bg": "@state-success-bg",
273
+ "@alert-success-text": "@state-success-text",
274
+ "@alert-success-border": "@state-success-border",
275
+ "@alert-info-bg": "@state-info-bg",
276
+ "@alert-info-text": "@state-info-text",
277
+ "@alert-info-border": "@state-info-border",
278
+ "@alert-warning-bg": "@state-warning-bg",
279
+ "@alert-warning-text": "@state-warning-text",
280
+ "@alert-warning-border": "@state-warning-border",
281
+ "@alert-danger-bg": "@state-danger-bg",
282
+ "@alert-danger-text": "@state-danger-text",
283
+ "@alert-danger-border": "@state-danger-border",
284
+ "@progress-bg": "#f5f5f5",
285
+ "@progress-bar-color": "#fff",
286
+ "@progress-border-radius": "@border-radius-base",
287
+ "@progress-bar-bg": "@brand-primary",
288
+ "@progress-bar-success-bg": "@brand-success",
289
+ "@progress-bar-warning-bg": "@brand-warning",
290
+ "@progress-bar-danger-bg": "@brand-danger",
291
+ "@progress-bar-info-bg": "@brand-info",
292
+ "@list-group-bg": "#fff",
293
+ "@list-group-border": "#ddd",
294
+ "@list-group-border-radius": "@border-radius-base",
295
+ "@list-group-hover-bg": "#f5f5f5",
296
+ "@list-group-active-color": "@component-active-color",
297
+ "@list-group-active-bg": "@component-active-bg",
298
+ "@list-group-active-border": "@list-group-active-bg",
299
+ "@list-group-active-text-color": "lighten(@list-group-active-bg, 40%)",
300
+ "@list-group-disabled-color": "@gray-light",
301
+ "@list-group-disabled-bg": "@gray-lighter",
302
+ "@list-group-disabled-text-color": "@list-group-disabled-color",
303
+ "@list-group-link-color": "#555",
304
+ "@list-group-link-hover-color": "@list-group-link-color",
305
+ "@list-group-link-heading-color": "#333",
306
+ "@panel-bg": "#fff",
307
+ "@panel-body-padding": "15px",
308
+ "@panel-heading-padding": "10px 15px",
309
+ "@panel-footer-padding": "@panel-heading-padding",
310
+ "@panel-border-radius": "@border-radius-base",
311
+ "@panel-inner-border": "#ddd",
312
+ "@panel-footer-bg": "#f5f5f5",
313
+ "@panel-default-text": "@gray-dark",
314
+ "@panel-default-border": "#ddd",
315
+ "@panel-default-heading-bg": "#f5f5f5",
316
+ "@panel-primary-text": "#fff",
317
+ "@panel-primary-border": "@brand-primary",
318
+ "@panel-primary-heading-bg": "@brand-primary",
319
+ "@panel-success-text": "@state-success-text",
320
+ "@panel-success-border": "@state-success-border",
321
+ "@panel-success-heading-bg": "@state-success-bg",
322
+ "@panel-info-text": "@state-info-text",
323
+ "@panel-info-border": "@state-info-border",
324
+ "@panel-info-heading-bg": "@state-info-bg",
325
+ "@panel-warning-text": "@state-warning-text",
326
+ "@panel-warning-border": "@state-warning-border",
327
+ "@panel-warning-heading-bg": "@state-warning-bg",
328
+ "@panel-danger-text": "@state-danger-text",
329
+ "@panel-danger-border": "@state-danger-border",
330
+ "@panel-danger-heading-bg": "@state-danger-bg",
331
+ "@thumbnail-padding": "4px",
332
+ "@thumbnail-bg": "@body-bg",
333
+ "@thumbnail-border": "#ddd",
334
+ "@thumbnail-border-radius": "@border-radius-base",
335
+ "@thumbnail-caption-color": "@text-color",
336
+ "@thumbnail-caption-padding": "9px",
337
+ "@well-bg": "#f5f5f5",
338
+ "@well-border": "darken(@well-bg, 7%)",
339
+ "@badge-color": "#fff",
340
+ "@badge-link-hover-color": "#fff",
341
+ "@badge-bg": "@gray-light",
342
+ "@badge-active-color": "@link-color",
343
+ "@badge-active-bg": "#fff",
344
+ "@badge-font-weight": "bold",
345
+ "@badge-line-height": "1",
346
+ "@badge-border-radius": "10px",
347
+ "@breadcrumb-padding-vertical": "8px",
348
+ "@breadcrumb-padding-horizontal": "15px",
349
+ "@breadcrumb-bg": "#f5f5f5",
350
+ "@breadcrumb-color": "#ccc",
351
+ "@breadcrumb-active-color": "@gray-light",
352
+ "@breadcrumb-separator": "\"/\"",
353
+ "@carousel-text-shadow": "0 1px 2px rgba(0,0,0,.6)",
354
+ "@carousel-control-color": "#fff",
355
+ "@carousel-control-width": "15%",
356
+ "@carousel-control-opacity": ".5",
357
+ "@carousel-control-font-size": "20px",
358
+ "@carousel-indicator-active-bg": "#fff",
359
+ "@carousel-indicator-border-color": "#fff",
360
+ "@carousel-caption-color": "#fff",
361
+ "@close-font-weight": "bold",
362
+ "@close-color": "#000",
363
+ "@close-text-shadow": "0 1px 0 #fff",
364
+ "@code-color": "#c7254e",
365
+ "@code-bg": "#f9f2f4",
366
+ "@kbd-color": "#fff",
367
+ "@kbd-bg": "#333",
368
+ "@pre-bg": "#f5f5f5",
369
+ "@pre-color": "@gray-dark",
370
+ "@pre-border-color": "#ccc",
371
+ "@pre-scrollable-max-height": "340px",
372
+ "@component-offset-horizontal": "180px",
373
+ "@text-muted": "@gray-light",
374
+ "@abbr-border-color": "@gray-light",
375
+ "@headings-small-color": "@gray-light",
376
+ "@blockquote-small-color": "@gray-light",
377
+ "@blockquote-font-size": "(@font-size-base * 1.25)",
378
+ "@blockquote-border-color": "@gray-lighter",
379
+ "@page-header-border-color": "@gray-lighter",
380
+ "@dl-horizontal-offset": "@component-offset-horizontal",
381
+ "@dl-horizontal-breakpoint": "@grid-float-breakpoint",
382
+ "@hr-border": "@gray-lighter"
383
+ },
384
+ "css": [
385
+ "print.less",
386
+ "code.less",
387
+ "grid.less",
388
+ "tables.less",
389
+ "forms.less",
390
+ "buttons.less",
391
+ "responsive-utilities.less",
392
+ "glyphicons.less",
393
+ "button-groups.less",
394
+ "input-groups.less",
395
+ "navs.less",
396
+ "navbar.less",
397
+ "breadcrumbs.less",
398
+ "pagination.less",
399
+ "pager.less",
400
+ "labels.less",
401
+ "badges.less",
402
+ "jumbotron.less",
403
+ "thumbnails.less",
404
+ "alerts.less",
405
+ "progress-bars.less",
406
+ "media.less",
407
+ "list-group.less",
408
+ "panels.less",
409
+ "responsive-embed.less",
410
+ "wells.less",
411
+ "close.less",
412
+ "component-animations.less",
413
+ "dropdowns.less",
414
+ "tooltip.less",
415
+ "popovers.less",
416
+ "modals.less",
417
+ "carousel.less"
418
+ ],
419
+ "js": [
420
+ "alert.js",
421
+ "button.js",
422
+ "carousel.js",
423
+ "dropdown.js",
424
+ "modal.js",
425
+ "tooltip.js",
426
+ "popover.js",
427
+ "tab.js",
428
+ "affix.js",
429
+ "collapse.js",
430
+ "scrollspy.js",
431
+ "transition.js"
432
+ ],
433
+ "customizerUrl": "http://getbootstrap.com/customize/?id=39f56dbee4e4db91437f384b1dcd27f0"
434
+ }
library/toolset/toolset-common/res/lib/bootstrap/css/bootstrap-theme.css ADDED
@@ -0,0 +1,596 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*!
2
+ * Bootstrap v3.3.7 (http://getbootstrap.com)
3
+ * Copyright 2011-2016 Twitter, Inc.
4
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
5
+ */
6
+
7
+ /*!
8
+ * Generated using the Bootstrap Customizer (http://getbootstrap.com/customize/?id=39f56dbee4e4db91437f384b1dcd27f0)
9
+ * Config saved to config.json and https://gist.github.com/39f56dbee4e4db91437f384b1dcd27f0
10
+ */
11
+ /*!
12
+ * Bootstrap v3.3.7 (http://getbootstrap.com)
13
+ * Copyright 2011-2016 Twitter, Inc.
14
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
15
+ */
16
+ .btn-default,
17
+ .btn-primary,
18
+ .btn-success,
19
+ .btn-info,
20
+ .btn-warning,
21
+ .btn-danger {
22
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);
23
+ -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);
24
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);
25
+ }
26
+ .btn-default:active,
27
+ .btn-primary:active,
28
+ .btn-success:active,
29
+ .btn-info:active,
30
+ .btn-warning:active,
31
+ .btn-danger:active,
32
+ .btn-default.active,
33
+ .btn-primary.active,
34
+ .btn-success.active,
35
+ .btn-info.active,
36
+ .btn-warning.active,
37
+ .btn-danger.active {
38
+ -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
39
+ box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
40
+ }
41
+ .btn-default.disabled,
42
+ .btn-primary.disabled,
43
+ .btn-success.disabled,
44
+ .btn-info.disabled,
45
+ .btn-warning.disabled,
46
+ .btn-danger.disabled,
47
+ .btn-default[disabled],
48
+ .btn-primary[disabled],
49
+ .btn-success[disabled],
50
+ .btn-info[disabled],
51
+ .btn-warning[disabled],
52
+ .btn-danger[disabled],
53
+ fieldset[disabled] .btn-default,
54
+ fieldset[disabled] .btn-primary,
55
+ fieldset[disabled] .btn-success,
56
+ fieldset[disabled] .btn-info,
57
+ fieldset[disabled] .btn-warning,
58
+ fieldset[disabled] .btn-danger {
59
+ -webkit-box-shadow: none;
60
+ box-shadow: none;
61
+ }
62
+ .btn-default .badge,
63
+ .btn-primary .badge,
64
+ .btn-success .badge,
65
+ .btn-info .badge,
66
+ .btn-warning .badge,
67
+ .btn-danger .badge {
68
+ text-shadow: none;
69
+ }
70
+ .btn:active,
71
+ .btn.active {
72
+ background-image: none;
73
+ }
74
+ .btn-default {
75
+ background-image: -webkit-linear-gradient(top, #ffffff 0%, #e0e0e0 100%);
76
+ background-image: -o-linear-gradient(top, #ffffff 0%, #e0e0e0 100%);
77
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#ffffff), to(#e0e0e0));
78
+ background-image: linear-gradient(to bottom, #ffffff 0%, #e0e0e0 100%);
79
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);
80
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
81
+ background-repeat: repeat-x;
82
+ border-color: #dbdbdb;
83
+ text-shadow: 0 1px 0 #fff;
84
+ border-color: #ccc;
85
+ }
86
+ .btn-default:hover,
87
+ .btn-default:focus {
88
+ background-color: #e0e0e0;
89
+ background-position: 0 -15px;
90
+ }
91
+ .btn-default:active,
92
+ .btn-default.active {
93
+ background-color: #e0e0e0;
94
+ border-color: #dbdbdb;
95
+ }
96
+ .btn-default.disabled,
97
+ .btn-default[disabled],
98
+ fieldset[disabled] .btn-default,
99
+ .btn-default.disabled:hover,
100
+ .btn-default[disabled]:hover,
101
+ fieldset[disabled] .btn-default:hover,
102
+ .btn-default.disabled:focus,
103
+ .btn-default[disabled]:focus,
104
+ fieldset[disabled] .btn-default:focus,
105
+ .btn-default.disabled.focus,
106
+ .btn-default[disabled].focus,
107
+ fieldset[disabled] .btn-default.focus,
108
+ .btn-default.disabled:active,
109
+ .btn-default[disabled]:active,
110
+ fieldset[disabled] .btn-default:active,
111
+ .btn-default.disabled.active,
112
+ .btn-default[disabled].active,
113
+ fieldset[disabled] .btn-default.active {
114
+ background-color: #e0e0e0;
115
+ background-image: none;
116
+ }
117
+ .btn-primary {
118
+ background-image: -webkit-linear-gradient(top, #337ab7 0%, #265a88 100%);
119
+ background-image: -o-linear-gradient(top, #337ab7 0%, #265a88 100%);
120
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#265a88));
121
+ background-image: linear-gradient(to bottom, #337ab7 0%, #265a88 100%);
122
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);
123
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
124
+ background-repeat: repeat-x;
125
+ border-color: #245580;
126
+ }
127
+ .btn-primary:hover,
128
+ .btn-primary:focus {
129
+ background-color: #265a88;
130
+ background-position: 0 -15px;
131
+ }
132
+ .btn-primary:active,
133
+ .btn-primary.active {
134
+ background-color: #265a88;
135
+ border-color: #245580;
136
+ }
137
+ .btn-primary.disabled,
138
+ .btn-primary[disabled],
139
+ fieldset[disabled] .btn-primary,
140
+ .btn-primary.disabled:hover,
141
+ .btn-primary[disabled]:hover,
142
+ fieldset[disabled] .btn-primary:hover,
143
+ .btn-primary.disabled:focus,
144
+ .btn-primary[disabled]:focus,
145
+ fieldset[disabled] .btn-primary:focus,
146
+ .btn-primary.disabled.focus,
147
+ .btn-primary[disabled].focus,
148
+ fieldset[disabled] .btn-primary.focus,
149
+ .btn-primary.disabled:active,
150
+ .btn-primary[disabled]:active,
151
+ fieldset[disabled] .btn-primary:active,
152
+ .btn-primary.disabled.active,
153
+ .btn-primary[disabled].active,
154
+ fieldset[disabled] .btn-primary.active {
155
+ background-color: #265a88;
156
+ background-image: none;
157
+ }
158
+ .btn-success {
159
+ background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%);
160
+ background-image: -o-linear-gradient(top, #5cb85c 0%, #419641 100%);
161
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#419641));
162
+ background-image: linear-gradient(to bottom, #5cb85c 0%, #419641 100%);
163
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);
164
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
165
+ background-repeat: repeat-x;
166
+ border-color: #3e8f3e;
167
+ }
168
+ .btn-success:hover,
169
+ .btn-success:focus {
170
+ background-color: #419641;
171
+ background-position: 0 -15px;
172
+ }
173
+ .btn-success:active,
174
+ .btn-success.active {
175
+ background-color: #419641;
176
+ border-color: #3e8f3e;
177
+ }
178
+ .btn-success.disabled,
179
+ .btn-success[disabled],
180
+ fieldset[disabled] .btn-success,
181
+ .btn-success.disabled:hover,
182
+ .btn-success[disabled]:hover,
183
+ fieldset[disabled] .btn-success:hover,
184
+ .btn-success.disabled:focus,
185
+ .btn-success[disabled]:focus,
186
+ fieldset[disabled] .btn-success:focus,
187
+ .btn-success.disabled.focus,
188
+ .btn-success[disabled].focus,
189
+ fieldset[disabled] .btn-success.focus,
190
+ .btn-success.disabled:active,
191
+ .btn-success[disabled]:active,
192
+ fieldset[disabled] .btn-success:active,
193
+ .btn-success.disabled.active,
194
+ .btn-success[disabled].active,
195
+ fieldset[disabled] .btn-success.active {
196
+ background-color: #419641;
197
+ background-image: none;
198
+ }
199
+ .btn-info {
200
+ background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);
201
+ background-image: -o-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);
202
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#2aabd2));
203
+ background-image: linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%);
204
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);
205
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
206
+ background-repeat: repeat-x;
207
+ border-color: #28a4c9;
208
+ }
209
+ .btn-info:hover,
210
+ .btn-info:focus {
211
+ background-color: #2aabd2;
212
+ background-position: 0 -15px;
213
+ }
214
+ .btn-info:active,
215
+ .btn-info.active {
216
+ background-color: #2aabd2;
217
+ border-color: #28a4c9;
218
+ }
219
+ .btn-info.disabled,
220
+ .btn-info[disabled],
221
+ fieldset[disabled] .btn-info,
222
+ .btn-info.disabled:hover,
223
+ .btn-info[disabled]:hover,
224
+ fieldset[disabled] .btn-info:hover,
225
+ .btn-info.disabled:focus,
226
+ .btn-info[disabled]:focus,
227
+ fieldset[disabled] .btn-info:focus,
228
+ .btn-info.disabled.focus,
229
+ .btn-info[disabled].focus,
230
+ fieldset[disabled] .btn-info.focus,
231
+ .btn-info.disabled:active,
232
+ .btn-info[disabled]:active,
233
+ fieldset[disabled] .btn-info:active,
234
+ .btn-info.disabled.active,
235
+ .btn-info[disabled].active,
236
+ fieldset[disabled] .btn-info.active {
237
+ background-color: #2aabd2;
238
+ background-image: none;
239
+ }
240
+ .btn-warning {
241
+ background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);
242
+ background-image: -o-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);
243
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#eb9316));
244
+ background-image: linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%);
245
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);
246
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
247
+ background-repeat: repeat-x;
248
+ border-color: #e38d13;
249
+ }
250
+ .btn-warning:hover,
251
+ .btn-warning:focus {
252
+ background-color: #eb9316;
253
+ background-position: 0 -15px;
254
+ }
255
+ .btn-warning:active,
256
+ .btn-warning.active {
257
+ background-color: #eb9316;
258
+ border-color: #e38d13;
259
+ }
260
+ .btn-warning.disabled,
261
+ .btn-warning[disabled],
262
+ fieldset[disabled] .btn-warning,
263
+ .btn-warning.disabled:hover,
264
+ .btn-warning[disabled]:hover,
265
+ fieldset[disabled] .btn-warning:hover,
266
+ .btn-warning.disabled:focus,
267
+ .btn-warning[disabled]:focus,
268
+ fieldset[disabled] .btn-warning:focus,
269
+ .btn-warning.disabled.focus,
270
+ .btn-warning[disabled].focus,
271
+ fieldset[disabled] .btn-warning.focus,
272
+ .btn-warning.disabled:active,
273
+ .btn-warning[disabled]:active,
274
+ fieldset[disabled] .btn-warning:active,
275
+ .btn-warning.disabled.active,
276
+ .btn-warning[disabled].active,
277
+ fieldset[disabled] .btn-warning.active {
278
+ background-color: #eb9316;
279
+ background-image: none;
280
+ }
281
+ .btn-danger {
282
+ background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%);
283
+ background-image: -o-linear-gradient(top, #d9534f 0%, #c12e2a 100%);
284
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c12e2a));
285
+ background-image: linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%);
286
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);
287
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
288
+ background-repeat: repeat-x;
289
+ border-color: #b92c28;
290
+ }
291
+ .btn-danger:hover,
292
+ .btn-danger:focus {
293
+ background-color: #c12e2a;
294
+ background-position: 0 -15px;
295
+ }
296
+ .btn-danger:active,
297
+ .btn-danger.active {
298
+ background-color: #c12e2a;
299
+ border-color: #b92c28;
300
+ }
301
+ .btn-danger.disabled,
302
+ .btn-danger[disabled],
303
+ fieldset[disabled] .btn-danger,
304
+ .btn-danger.disabled:hover,
305
+ .btn-danger[disabled]:hover,
306
+ fieldset[disabled] .btn-danger:hover,
307
+ .btn-danger.disabled:focus,
308
+ .btn-danger[disabled]:focus,
309
+ fieldset[disabled] .btn-danger:focus,
310
+ .btn-danger.disabled.focus,
311
+ .btn-danger[disabled].focus,
312
+ fieldset[disabled] .btn-danger.focus,
313
+ .btn-danger.disabled:active,
314
+ .btn-danger[disabled]:active,
315
+ fieldset[disabled] .btn-danger:active,
316
+ .btn-danger.disabled.active,
317
+ .btn-danger[disabled].active,
318
+ fieldset[disabled] .btn-danger.active {
319
+ background-color: #c12e2a;
320
+ background-image: none;
321
+ }
322
+ .thumbnail,
323
+ .img-thumbnail {
324
+ -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);
325
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);
326
+ }
327
+ .dropdown-menu > li > a:hover,
328
+ .dropdown-menu > li > a:focus {
329
+ background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
330
+ background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
331
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8));
332
+ background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);
333
+ background-repeat: repeat-x;
334
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);
335
+ background-color: #e8e8e8;
336
+ }
337
+ .dropdown-menu > .active > a,
338
+ .dropdown-menu > .active > a:hover,
339
+ .dropdown-menu > .active > a:focus {
340
+ background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
341
+ background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
342
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));
343
+ background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);
344
+ background-repeat: repeat-x;
345
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);
346
+ background-color: #2e6da4;
347
+ }
348
+ .navbar-default {
349
+ background-image: -webkit-linear-gradient(top, #ffffff 0%, #f8f8f8 100%);
350
+ background-image: -o-linear-gradient(top, #ffffff 0%, #f8f8f8 100%);
351
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#ffffff), to(#f8f8f8));
352
+ background-image: linear-gradient(to bottom, #ffffff 0%, #f8f8f8 100%);
353
+ background-repeat: repeat-x;
354
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);
355
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
356
+ border-radius: 4px;
357
+ -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075);
358
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075);
359
+ }
360
+ .navbar-default .navbar-nav > .open > a,
361
+ .navbar-default .navbar-nav > .active > a {
362
+ background-image: -webkit-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);
363
+ background-image: -o-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);
364
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#dbdbdb), to(#e2e2e2));
365
+ background-image: linear-gradient(to bottom, #dbdbdb 0%, #e2e2e2 100%);
366
+ background-repeat: repeat-x;
367
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);
368
+ -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.075);
369
+ box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.075);
370
+ }
371
+ .navbar-brand,
372
+ .navbar-nav > li > a {
373
+ text-shadow: 0 1px 0 rgba(255, 255, 255, 0.25);
374
+ }
375
+ .navbar-inverse {
376
+ background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222222 100%);
377
+ background-image: -o-linear-gradient(top, #3c3c3c 0%, #222222 100%);
378
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#3c3c3c), to(#222222));
379
+ background-image: linear-gradient(to bottom, #3c3c3c 0%, #222222 100%);
380
+ background-repeat: repeat-x;
381
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);
382
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
383
+ border-radius: 4px;
384
+ }
385
+ .navbar-inverse .navbar-nav > .open > a,
386
+ .navbar-inverse .navbar-nav > .active > a {
387
+ background-image: -webkit-linear-gradient(top, #080808 0%, #0f0f0f 100%);
388
+ background-image: -o-linear-gradient(top, #080808 0%, #0f0f0f 100%);
389
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#080808), to(#0f0f0f));
390
+ background-image: linear-gradient(to bottom, #080808 0%, #0f0f0f 100%);
391
+ background-repeat: repeat-x;
392
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);
393
+ -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.25);
394
+ box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.25);
395
+ }
396
+ .navbar-inverse .navbar-brand,
397
+ .navbar-inverse .navbar-nav > li > a {
398
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
399
+ }
400
+ .navbar-static-top,
401
+ .navbar-fixed-top,
402
+ .navbar-fixed-bottom {
403
+ border-radius: 0;
404
+ }
405
+ @media (max-width: 767px) {
406
+ .navbar .navbar-nav .open .dropdown-menu > .active > a,
407
+ .navbar .navbar-nav .open .dropdown-menu > .active > a:hover,
408
+ .navbar .navbar-nav .open .dropdown-menu > .active > a:focus {
409
+ color: #fff;
410
+ background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
411
+ background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
412
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));
413
+ background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);
414
+ background-repeat: repeat-x;
415
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);
416
+ }
417
+ }
418
+ .alert {
419
+ text-shadow: 0 1px 0 rgba(255, 255, 255, 0.2);
420
+ -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);
421
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);
422
+ }
423
+ .alert-success {
424
+ background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);
425
+ background-image: -o-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);
426
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#c8e5bc));
427
+ background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%);
428
+ background-repeat: repeat-x;
429
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);
430
+ border-color: #b2dba1;
431
+ }
432
+ .alert-info {
433
+ background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%);
434
+ background-image: -o-linear-gradient(top, #d9edf7 0%, #b9def0 100%);
435
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#b9def0));
436
+ background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%);
437
+ background-repeat: repeat-x;
438
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);
439
+ border-color: #9acfea;
440
+ }
441
+ .alert-warning {
442
+ background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);
443
+ background-image: -o-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);
444
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#f8efc0));
445
+ background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%);
446
+ background-repeat: repeat-x;
447
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);
448
+ border-color: #f5e79e;
449
+ }
450
+ .alert-danger {
451
+ background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);
452
+ background-image: -o-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);
453
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#e7c3c3));
454
+ background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%);
455
+ background-repeat: repeat-x;
456
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);
457
+ border-color: #dca7a7;
458
+ }
459
+ .progress {
460
+ background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);
461
+ background-image: -o-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);
462
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#ebebeb), to(#f5f5f5));
463
+ background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%);
464
+ background-repeat: repeat-x;
465
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);
466
+ }
467
+ .progress-bar {
468
+ background-image: -webkit-linear-gradient(top, #337ab7 0%, #286090 100%);
469
+ background-image: -o-linear-gradient(top, #337ab7 0%, #286090 100%);
470
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#286090));
471
+ background-image: linear-gradient(to bottom, #337ab7 0%, #286090 100%);
472
+ background-repeat: repeat-x;
473
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);
474
+ }
475
+ .progress-bar-success {
476
+ background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%);
477
+ background-image: -o-linear-gradient(top, #5cb85c 0%, #449d44 100%);
478
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#449d44));
479
+ background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%);
480
+ background-repeat: repeat-x;
481
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);
482
+ }
483
+ .progress-bar-info {
484
+ background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);
485
+ background-image: -o-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);
486
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#31b0d5));
487
+ background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%);
488
+ background-repeat: repeat-x;
489
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);
490
+ }
491
+ .progress-bar-warning {
492
+ background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);
493
+ background-image: -o-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);
494
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#ec971f));
495
+ background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%);
496
+ background-repeat: repeat-x;
497
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);
498
+ }
499
+ .progress-bar-danger {
500
+ background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%);
501
+ background-image: -o-linear-gradient(top, #d9534f 0%, #c9302c 100%);
502
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c9302c));
503
+ background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%);
504
+ background-repeat: repeat-x;
505
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);
506
+ }
507
+ .progress-bar-striped {
508
+ 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);
509
+ background-image: -o-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);
510
+ 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);
511
+ }
512
+ .list-group {
513
+ border-radius: 4px;
514
+ -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);
515
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);
516
+ }
517
+ .list-group-item.active,
518
+ .list-group-item.active:hover,
519
+ .list-group-item.active:focus {
520
+ text-shadow: 0 -1px 0 #286090;
521
+ background-image: -webkit-linear-gradient(top, #337ab7 0%, #2b669a 100%);
522
+ background-image: -o-linear-gradient(top, #337ab7 0%, #2b669a 100%);
523
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2b669a));
524
+ background-image: linear-gradient(to bottom, #337ab7 0%, #2b669a 100%);
525
+ background-repeat: repeat-x;
526
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);
527
+ border-color: #2b669a;
528
+ }
529
+ .list-group-item.active .badge,
530
+ .list-group-item.active:hover .badge,
531
+ .list-group-item.active:focus .badge {
532
+ text-shadow: none;
533
+ }
534
+ .panel {
535
+ -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
536
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
537
+ }
538
+ .panel-default > .panel-heading {
539
+ background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
540
+ background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
541
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8));
542
+ background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);
543
+ background-repeat: repeat-x;
544
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);
545
+ }
546
+ .panel-primary > .panel-heading {
547
+ background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
548
+ background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
549
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));
550
+ background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);
551
+ background-repeat: repeat-x;
552
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);
553
+ }
554
+ .panel-success > .panel-heading {
555
+ background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);
556
+ background-image: -o-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);
557
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#d0e9c6));
558
+ background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%);
559
+ background-repeat: repeat-x;
560
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);
561
+ }
562
+ .panel-info > .panel-heading {
563
+ background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);
564
+ background-image: -o-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);
565
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#c4e3f3));
566
+ background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%);
567
+ background-repeat: repeat-x;
568
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);
569
+ }
570
+ .panel-warning > .panel-heading {
571
+ background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);
572
+ background-image: -o-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);
573
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#faf2cc));
574
+ background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%);
575
+ background-repeat: repeat-x;
576
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);
577
+ }
578
+ .panel-danger > .panel-heading {
579
+ background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%);
580
+ background-image: -o-linear-gradient(top, #f2dede 0%, #ebcccc 100%);
581
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#ebcccc));
582
+ background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%);
583
+ background-repeat: repeat-x;
584
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);
585
+ }
586
+ .well {
587
+ background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);
588
+ background-image: -o-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);
589
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#e8e8e8), to(#f5f5f5));
590
+ background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%);
591
+ background-repeat: repeat-x;
592
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);
593
+ border-color: #dcdcdc;
594
+ -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1);
595
+ box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1);
596
+ }
library/toolset/toolset-common/res/lib/bootstrap/css/bootstrap-theme.min.css ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*!
2
+ * Bootstrap v3.3.7 (http://getbootstrap.com)
3
+ * Copyright 2011-2016 Twitter, Inc.
4
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
5
+ */
6
+
7
+ /*!
8
+ * Generated using the Bootstrap Customizer (http://getbootstrap.com/customize/?id=39f56dbee4e4db91437f384b1dcd27f0)
9
+ * Config saved to config.json and https://gist.github.com/39f56dbee4e4db91437f384b1dcd27f0
10
+ *//*!
11
+ * Bootstrap v3.3.7 (http://getbootstrap.com)
12
+ * Copyright 2011-2016 Twitter, Inc.
13
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
14
+ */.btn-default,.btn-primary,.btn-success,.btn-info,.btn-warning,.btn-danger{text-shadow:0 -1px 0 rgba(0,0,0,0.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 1px rgba(0,0,0,0.075)}.btn-default:active,.btn-primary:active,.btn-success:active,.btn-info:active,.btn-warning:active,.btn-danger:active,.btn-default.active,.btn-primary.active,.btn-success.active,.btn-info.active,.btn-warning.active,.btn-danger.active{-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-default.disabled,.btn-primary.disabled,.btn-success.disabled,.btn-info.disabled,.btn-warning.disabled,.btn-danger.disabled,.btn-default[disabled],.btn-primary[disabled],.btn-success[disabled],.btn-info[disabled],.btn-warning[disabled],.btn-danger[disabled],fieldset[disabled] .btn-default,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-success,fieldset[disabled] .btn-info,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-danger{-webkit-box-shadow:none;box-shadow:none}.btn-default .badge,.btn-primary .badge,.btn-success .badge,.btn-info .badge,.btn-warning .badge,.btn-danger .badge{text-shadow:none}.btn:active,.btn.active{background-image:none}.btn-default{background-image:-webkit-linear-gradient(top, #fff 0, #e0e0e0 100%);background-image:-o-linear-gradient(top, #fff 0, #e0e0e0 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #fff), to(#e0e0e0));background-image:linear-gradient(to bottom, #fff 0, #e0e0e0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background-repeat:repeat-x;border-color:#dbdbdb;text-shadow:0 1px 0 #fff;border-color:#ccc}.btn-default:hover,.btn-default:focus{background-color:#e0e0e0;background-position:0 -15px}.btn-default:active,.btn-default.active{background-color:#e0e0e0;border-color:#dbdbdb}.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.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:#e0e0e0;background-image:none}.btn-primary{background-image:-webkit-linear-gradient(top, #337ab7 0, #265a88 100%);background-image:-o-linear-gradient(top, #337ab7 0, #265a88 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #337ab7), to(#265a88));background-image:linear-gradient(to bottom, #337ab7 0, #265a88 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background-repeat:repeat-x;border-color:#245580}.btn-primary:hover,.btn-primary:focus{background-color:#265a88;background-position:0 -15px}.btn-primary:active,.btn-primary.active{background-color:#265a88;border-color:#245580}.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.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:#265a88;background-image:none}.btn-success{background-image:-webkit-linear-gradient(top, #5cb85c 0, #419641 100%);background-image:-o-linear-gradient(top, #5cb85c 0, #419641 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #5cb85c), to(#419641));background-image:linear-gradient(to bottom, #5cb85c 0, #419641 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background-repeat:repeat-x;border-color:#3e8f3e}.btn-success:hover,.btn-success:focus{background-color:#419641;background-position:0 -15px}.btn-success:active,.btn-success.active{background-color:#419641;border-color:#3e8f3e}.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.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:#419641;background-image:none}.btn-info{background-image:-webkit-linear-gradient(top, #5bc0de 0, #2aabd2 100%);background-image:-o-linear-gradient(top, #5bc0de 0, #2aabd2 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #5bc0de), to(#2aabd2));background-image:linear-gradient(to bottom, #5bc0de 0, #2aabd2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background-repeat:repeat-x;border-color:#28a4c9}.btn-info:hover,.btn-info:focus{background-color:#2aabd2;background-position:0 -15px}.btn-info:active,.btn-info.active{background-color:#2aabd2;border-color:#28a4c9}.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.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:#2aabd2;background-image:none}.btn-warning{background-image:-webkit-linear-gradient(top, #f0ad4e 0, #eb9316 100%);background-image:-o-linear-gradient(top, #f0ad4e 0, #eb9316 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #f0ad4e), to(#eb9316));background-image:linear-gradient(to bottom, #f0ad4e 0, #eb9316 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background-repeat:repeat-x;border-color:#e38d13}.btn-warning:hover,.btn-warning:focus{background-color:#eb9316;background-position:0 -15px}.btn-warning:active,.btn-warning.active{background-color:#eb9316;border-color:#e38d13}.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.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:#eb9316;background-image:none}.btn-danger{background-image:-webkit-linear-gradient(top, #d9534f 0, #c12e2a 100%);background-image:-o-linear-gradient(top, #d9534f 0, #c12e2a 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #d9534f), to(#c12e2a));background-image:linear-gradient(to bottom, #d9534f 0, #c12e2a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background-repeat:repeat-x;border-color:#b92c28}.btn-danger:hover,.btn-danger:focus{background-color:#c12e2a;background-position:0 -15px}.btn-danger:active,.btn-danger.active{background-color:#c12e2a;border-color:#b92c28}.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.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:#c12e2a;background-image:none}.thumbnail,.img-thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.075);box-shadow:0 1px 2px rgba(0,0,0,0.075)}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{background-image:-webkit-linear-gradient(top, #f5f5f5 0, #e8e8e8 100%);background-image:-o-linear-gradient(top, #f5f5f5 0, #e8e8e8 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #f5f5f5), to(#e8e8e8));background-image:linear-gradient(to bottom, #f5f5f5 0, #e8e8e8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-color:#e8e8e8}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{background-image:-webkit-linear-gradient(top, #337ab7 0, #2e6da4 100%);background-image:-o-linear-gradient(top, #337ab7 0, #2e6da4 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #337ab7), to(#2e6da4));background-image:linear-gradient(to bottom, #337ab7 0, #2e6da4 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-color:#2e6da4}.navbar-default{background-image:-webkit-linear-gradient(top, #fff 0, #f8f8f8 100%);background-image:-o-linear-gradient(top, #fff 0, #f8f8f8 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #fff), to(#f8f8f8));background-image:linear-gradient(to bottom, #fff 0, #f8f8f8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 5px rgba(0,0,0,0.075);box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 5px rgba(0,0,0,0.075)}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.active>a{background-image:-webkit-linear-gradient(top, #dbdbdb 0, #e2e2e2 100%);background-image:-o-linear-gradient(top, #dbdbdb 0, #e2e2e2 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #dbdbdb), to(#e2e2e2));background-image:linear-gradient(to bottom, #dbdbdb 0, #e2e2e2 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,0.075);box-shadow:inset 0 3px 9px rgba(0,0,0,0.075)}.navbar-brand,.navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,0.25)}.navbar-inverse{background-image:-webkit-linear-gradient(top, #3c3c3c 0, #222 100%);background-image:-o-linear-gradient(top, #3c3c3c 0, #222 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #3c3c3c), to(#222));background-image:linear-gradient(to bottom, #3c3c3c 0, #222 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);border-radius:4px}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.active>a{background-image:-webkit-linear-gradient(top, #080808 0, #0f0f0f 100%);background-image:-o-linear-gradient(top, #080808 0, #0f0f0f 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #080808), to(#0f0f0f));background-image:linear-gradient(to bottom, #080808 0, #0f0f0f 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,0.25);box-shadow:inset 0 3px 9px rgba(0,0,0,0.25)}.navbar-inverse .navbar-brand,.navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.navbar-static-top,.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}@media (max-width:767px){.navbar .navbar-nav .open .dropdown-menu>.active>a,.navbar .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-image:-webkit-linear-gradient(top, #337ab7 0, #2e6da4 100%);background-image:-o-linear-gradient(top, #337ab7 0, #2e6da4 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #337ab7), to(#2e6da4));background-image:linear-gradient(to bottom, #337ab7 0, #2e6da4 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0)}}.alert{text-shadow:0 1px 0 rgba(255,255,255,0.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.25),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.25),0 1px 2px rgba(0,0,0,0.05)}.alert-success{background-image:-webkit-linear-gradient(top, #dff0d8 0, #c8e5bc 100%);background-image:-o-linear-gradient(top, #dff0d8 0, #c8e5bc 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #dff0d8), to(#c8e5bc));background-image:linear-gradient(to bottom, #dff0d8 0, #c8e5bc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);border-color:#b2dba1}.alert-info{background-image:-webkit-linear-gradient(top, #d9edf7 0, #b9def0 100%);background-image:-o-linear-gradient(top, #d9edf7 0, #b9def0 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #d9edf7), to(#b9def0));background-image:linear-gradient(to bottom, #d9edf7 0, #b9def0 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);border-color:#9acfea}.alert-warning{background-image:-webkit-linear-gradient(top, #fcf8e3 0, #f8efc0 100%);background-image:-o-linear-gradient(top, #fcf8e3 0, #f8efc0 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #fcf8e3), to(#f8efc0));background-image:linear-gradient(to bottom, #fcf8e3 0, #f8efc0 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);border-color:#f5e79e}.alert-danger{background-image:-webkit-linear-gradient(top, #f2dede 0, #e7c3c3 100%);background-image:-o-linear-gradient(top, #f2dede 0, #e7c3c3 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #f2dede), to(#e7c3c3));background-image:linear-gradient(to bottom, #f2dede 0, #e7c3c3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);border-color:#dca7a7}.progress{background-image:-webkit-linear-gradient(top, #ebebeb 0, #f5f5f5 100%);background-image:-o-linear-gradient(top, #ebebeb 0, #f5f5f5 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #ebebeb), to(#f5f5f5));background-image:linear-gradient(to bottom, #ebebeb 0, #f5f5f5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0)}.progress-bar{background-image:-webkit-linear-gradient(top, #337ab7 0, #286090 100%);background-image:-o-linear-gradient(top, #337ab7 0, #286090 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #337ab7), to(#286090));background-image:linear-gradient(to bottom, #337ab7 0, #286090 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0)}.progress-bar-success{background-image:-webkit-linear-gradient(top, #5cb85c 0, #449d44 100%);background-image:-o-linear-gradient(top, #5cb85c 0, #449d44 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #5cb85c), to(#449d44));background-image:linear-gradient(to bottom, #5cb85c 0, #449d44 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0)}.progress-bar-info{background-image:-webkit-linear-gradient(top, #5bc0de 0, #31b0d5 100%);background-image:-o-linear-gradient(top, #5bc0de 0, #31b0d5 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #5bc0de), to(#31b0d5));background-image:linear-gradient(to bottom, #5bc0de 0, #31b0d5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0)}.progress-bar-warning{background-image:-webkit-linear-gradient(top, #f0ad4e 0, #ec971f 100%);background-image:-o-linear-gradient(top, #f0ad4e 0, #ec971f 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #f0ad4e), to(#ec971f));background-image:linear-gradient(to bottom, #f0ad4e 0, #ec971f 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0)}.progress-bar-danger{background-image:-webkit-linear-gradient(top, #d9534f 0, #c9302c 100%);background-image:-o-linear-gradient(top, #d9534f 0, #c9302c 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #d9534f), to(#c9302c));background-image:linear-gradient(to bottom, #d9534f 0, #c9302c 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0)}.progress-bar-striped{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:-o-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)}.list-group{border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.075);box-shadow:0 1px 2px rgba(0,0,0,0.075)}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{text-shadow:0 -1px 0 #286090;background-image:-webkit-linear-gradient(top, #337ab7 0, #2b669a 100%);background-image:-o-linear-gradient(top, #337ab7 0, #2b669a 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #337ab7), to(#2b669a));background-image:linear-gradient(to bottom, #337ab7 0, #2b669a 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);border-color:#2b669a}.list-group-item.active .badge,.list-group-item.active:hover .badge,.list-group-item.active:focus .badge{text-shadow:none}.panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.05);box-shadow:0 1px 2px rgba(0,0,0,0.05)}.panel-default>.panel-heading{background-image:-webkit-linear-gradient(top, #f5f5f5 0, #e8e8e8 100%);background-image:-o-linear-gradient(top, #f5f5f5 0, #e8e8e8 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #f5f5f5), to(#e8e8e8));background-image:linear-gradient(to bottom, #f5f5f5 0, #e8e8e8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0)}.panel-primary>.panel-heading{background-image:-webkit-linear-gradient(top, #337ab7 0, #2e6da4 100%);background-image:-o-linear-gradient(top, #337ab7 0, #2e6da4 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #337ab7), to(#2e6da4));background-image:linear-gradient(to bottom, #337ab7 0, #2e6da4 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0)}.panel-success>.panel-heading{background-image:-webkit-linear-gradient(top, #dff0d8 0, #d0e9c6 100%);background-image:-o-linear-gradient(top, #dff0d8 0, #d0e9c6 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #dff0d8), to(#d0e9c6));background-image:linear-gradient(to bottom, #dff0d8 0, #d0e9c6 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0)}.panel-info>.panel-heading{background-image:-webkit-linear-gradient(top, #d9edf7 0, #c4e3f3 100%);background-image:-o-linear-gradient(top, #d9edf7 0, #c4e3f3 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #d9edf7), to(#c4e3f3));background-image:linear-gradient(to bottom, #d9edf7 0, #c4e3f3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0)}.panel-warning>.panel-heading{background-image:-webkit-linear-gradient(top, #fcf8e3 0, #faf2cc 100%);background-image:-o-linear-gradient(top, #fcf8e3 0, #faf2cc 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #fcf8e3), to(#faf2cc));background-image:linear-gradient(to bottom, #fcf8e3 0, #faf2cc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0)}.panel-danger>.panel-heading{background-image:-webkit-linear-gradient(top, #f2dede 0, #ebcccc 100%);background-image:-o-linear-gradient(top, #f2dede 0, #ebcccc 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #f2dede), to(#ebcccc));background-image:linear-gradient(to bottom, #f2dede 0, #ebcccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0)}.well{background-image:-webkit-linear-gradient(top, #e8e8e8 0, #f5f5f5 100%);background-image:-o-linear-gradient(top, #e8e8e8 0, #f5f5f5 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #e8e8e8), to(#f5f5f5));background-image:linear-gradient(to bottom, #e8e8e8 0, #f5f5f5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);border-color:#dcdcdc;-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,0.05),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 3px rgba(0,0,0,0.05),0 1px 0 rgba(255,255,255,0.1)}
library/toolset/toolset-common/res/lib/bootstrap/css/bootstrap.css ADDED
@@ -0,0 +1,6365 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*!
2
+ * Bootstrap v3.3.7 (http://getbootstrap.com)
3
+ * Copyright 2011-2016 Twitter, Inc.
4
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
5
+ */
6
+
7
+ /*!
8
+ * Generated using the Bootstrap Customizer (http://getbootstrap.com/customize/?id=39f56dbee4e4db91437f384b1dcd27f0)
9
+ * Config saved to config.json and https://gist.github.com/39f56dbee4e4db91437f384b1dcd27f0
10
+ */
11
+ /*!
12
+ * Bootstrap v3.3.7 (http://getbootstrap.com)
13
+ * Copyright 2011-2016 Twitter, Inc.
14
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
15
+ */
16
+ /*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */
17
+
18
+ article,
19
+ aside,
20
+ details,
21
+ figcaption,
22
+ figure,
23
+ footer,
24
+ header,
25
+ hgroup,
26
+ main,
27
+ menu,
28
+ nav,
29
+ section,
30
+ summary {
31
+ display: block;
32
+ }
33
+ audio,
34
+ canvas,
35
+ progress,
36
+ video {
37
+ display: inline-block;
38
+ vertical-align: baseline;
39
+ }
40
+ audio:not([controls]) {
41
+ display: none;
42
+ height: 0;
43
+ }
44
+ [hidden],
45
+ template {
46
+ display: none;
47
+ }
48
+
49
+ abbr[title] {
50
+ border-bottom: 1px dotted;
51
+ }
52
+ b,
53
+ strong {
54
+ font-weight: bold;
55
+ }
56
+ dfn {
57
+ font-style: italic;
58
+ }
59
+ h1 {
60
+ font-size: 2em;
61
+ margin: 0.67em 0;
62
+ }
63
+ mark {
64
+ background: #ff0;
65
+ color: #000;
66
+ }
67
+ small {
68
+ font-size: 80%;
69
+ }
70
+ sub,
71
+ sup {
72
+ font-size: 75%;
73
+ line-height: 0;
74
+ position: relative;
75
+ vertical-align: baseline;
76
+ }
77
+ sup {
78
+ top: -0.5em;
79
+ }
80
+ sub {
81
+ bottom: -0.25em;
82
+ }
83
+ img {
84
+ border: 0;
85
+ }
86
+ svg:not(:root) {
87
+ overflow: hidden;
88
+ }
89
+ figure {
90
+ margin: 1em 40px;
91
+ }
92
+ hr {
93
+ -webkit-box-sizing: content-box;
94
+ -moz-box-sizing: content-box;
95
+ box-sizing: content-box;
96
+ height: 0;
97
+ }
98
+ pre {
99
+ overflow: auto;
100
+ }
101
+ code,
102
+ kbd,
103
+ pre,
104
+ samp {
105
+ font-family: monospace, monospace;
106
+ font-size: 1em;
107
+ }
108
+ button,
109
+ input,
110
+ optgroup,
111
+ select,
112
+ textarea {
113
+ color: inherit;
114
+ font: inherit;
115
+ margin: 0;
116
+ }
117
+ button {
118
+ overflow: visible;
119
+ }
120
+ button,
121
+ select {
122
+ text-transform: none;
123
+ }
124
+ button,
125
+ html input[type="button"],
126
+ input[type="reset"],
127
+ input[type="submit"] {
128
+ -webkit-appearance: button;
129
+ cursor: pointer;
130
+ }
131
+ button[disabled],
132
+ html input[disabled] {
133
+ cursor: default;
134
+ }
135
+ button::-moz-focus-inner,
136
+ input::-moz-focus-inner {
137
+ border: 0;
138
+ padding: 0;
139
+ }
140
+ input {
141
+ line-height: normal;
142
+ }
143
+ input[type="checkbox"],
144
+ input[type="radio"] {
145
+ -webkit-box-sizing: border-box;
146
+ -moz-box-sizing: border-box;
147
+ box-sizing: border-box;
148
+ padding: 0;
149
+ }
150
+ input[type="number"]::-webkit-inner-spin-button,
151
+ input[type="number"]::-webkit-outer-spin-button {
152
+ height: auto;
153
+ }
154
+ input[type="search"] {
155
+ -webkit-appearance: textfield;
156
+ -webkit-box-sizing: content-box;
157
+ -moz-box-sizing: content-box;
158
+ box-sizing: content-box;
159
+ }
160
+ input[type="search"]::-webkit-search-cancel-button,
161
+ input[type="search"]::-webkit-search-decoration {
162
+ -webkit-appearance: none;
163
+ }
164
+ fieldset {
165
+ border: 1px solid #c0c0c0;
166
+ margin: 0 2px;
167
+ padding: 0.35em 0.625em 0.75em;
168
+ }
169
+ legend {
170
+ border: 0;
171
+ padding: 0;
172
+ }
173
+ textarea {
174
+ overflow: auto;
175
+ }
176
+ optgroup {
177
+ font-weight: bold;
178
+ }
179
+ table {
180
+ border-collapse: collapse;
181
+ border-spacing: 0;
182
+ }
183
+ td,
184
+ th {
185
+ padding: 0;
186
+ }
187
+ /*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */
188
+ @media print {
189
+ *,
190
+ *:before,
191
+ *:after {
192
+ background: transparent !important;
193
+ color: #000 !important;
194
+ -webkit-box-shadow: none !important;
195
+ box-shadow: none !important;
196
+ text-shadow: none !important;
197
+ }
198
+ a,
199
+ a:visited {
200
+ text-decoration: underline;
201
+ }
202
+ a[href]:after {
203
+ content: " (" attr(href) ")";
204
+ }
205
+ abbr[title]:after {
206
+ content: " (" attr(title) ")";
207
+ }
208
+ a[href^="#"]:after,
209
+ a[href^="javascript:"]:after {
210
+ content: "";
211
+ }
212
+ pre,
213
+ blockquote {
214
+ border: 1px solid #999;
215
+ page-break-inside: avoid;
216
+ }
217
+ thead {
218
+ display: table-header-group;
219
+ }
220
+ tr,
221
+ img {
222
+ page-break-inside: avoid;
223
+ }
224
+ img {
225
+ max-width: 100% !important;
226
+ }
227
+ p,
228
+ h2,
229
+ h3 {
230
+ orphans: 3;
231
+ widows: 3;
232
+ }
233
+ h2,
234
+ h3 {
235
+ page-break-after: avoid;
236
+ }
237
+ .navbar {
238
+ display: none;
239
+ }
240
+ .btn > .caret,
241
+ .dropup > .btn > .caret {
242
+ border-top-color: #000 !important;
243
+ }
244
+ .label {
245
+ border: 1px solid #000;
246
+ }
247
+ .table {
248
+ border-collapse: collapse !important;
249
+ }
250
+ .table td,
251
+ .table th {
252
+ background-color: #fff !important;
253
+ }
254
+ .table-bordered th,
255
+ .table-bordered td {
256
+ border: 1px solid #ddd !important;
257
+ }
258
+ }
259
+ @font-face {
260
+ font-family: 'Glyphicons Halflings';
261
+ src: url('../fonts/glyphicons-halflings-regular.eot');
262
+ src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'), 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');
263
+ }
264
+ .glyphicon {
265
+ position: relative;
266
+ top: 1px;
267
+ display: inline-block;
268
+ font-family: 'Glyphicons Halflings';
269
+ font-style: normal;
270
+ font-weight: normal;
271
+ line-height: 1;
272
+ -webkit-font-smoothing: antialiased;
273
+ -moz-osx-font-smoothing: grayscale;
274
+ }
275
+ .glyphicon-asterisk:before {
276
+ content: "\002a";
277
+ }
278
+ .glyphicon-plus:before {
279
+ content: "\002b";
280
+ }
281
+ .glyphicon-euro:before,
282
+ .glyphicon-eur:before {
283
+ content: "\20ac";
284
+ }
285
+ .glyphicon-minus:before {
286
+ content: "\2212";
287
+ }
288
+ .glyphicon-cloud:before {
289
+ content: "\2601";
290
+ }
291
+ .glyphicon-envelope:before {
292
+ content: "\2709";
293
+ }
294
+ .glyphicon-pencil:before {
295
+ content: "\270f";
296
+ }
297
+ .glyphicon-glass:before {
298
+ content: "\e001";
299
+ }
300
+ .glyphicon-music:before {
301
+ content: "\e002";
302
+ }
303
+ .glyphicon-search:before {
304
+ content: "\e003";
305
+ }
306
+ .glyphicon-heart:before {
307
+ content: "\e005";
308
+ }
309
+ .glyphicon-star:before {
310
+ content: "\e006";
311
+ }
312
+ .glyphicon-star-empty:before {
313
+ content: "\e007";
314
+ }
315
+ .glyphicon-user:before {
316
+ content: "\e008";
317
+ }
318
+ .glyphicon-film:before {
319
+ content: "\e009";
320
+ }
321
+ .glyphicon-th-large:before {
322
+ content: "\e010";
323
+ }
324
+ .glyphicon-th:before {
325
+ content: "\e011";
326
+ }
327
+ .glyphicon-th-list:before {
328
+ content: "\e012";
329
+ }
330
+ .glyphicon-ok:before {
331
+ content: "\e013";
332
+ }
333
+ .glyphicon-remove:before {
334
+ content: "\e014";
335
+ }
336
+ .glyphicon-zoom-in:before {
337
+ content: "\e015";
338
+ }
339
+ .glyphicon-zoom-out:before {
340
+ content: "\e016";
341
+ }
342
+ .glyphicon-off:before {
343
+ content: "\e017";
344
+ }
345
+ .glyphicon-signal:before {
346
+ content: "\e018";
347
+ }
348
+ .glyphicon-cog:before {
349
+ content: "\e019";
350
+ }
351
+ .glyphicon-trash:before {
352
+ content: "\e020";
353
+ }
354
+ .glyphicon-home:before {
355
+ content: "\e021";
356
+ }
357
+ .glyphicon-file:before {
358
+ content: "\e022";
359
+ }
360
+ .glyphicon-time:before {
361
+ content: "\e023";
362
+ }
363
+ .glyphicon-road:before {
364
+ content: "\e024";
365
+ }
366
+ .glyphicon-download-alt:before {
367
+ content: "\e025";
368
+ }
369
+ .glyphicon-download:before {
370
+ content: "\e026";
371
+ }
372
+ .glyphicon-upload:before {
373
+ content: "\e027";
374
+ }
375
+ .glyphicon-inbox:before {
376
+ content: "\e028";
377
+ }
378
+ .glyphicon-play-circle:before {
379
+ content: "\e029";
380
+ }
381
+ .glyphicon-repeat:before {
382
+ content: "\e030";
383
+ }
384
+ .glyphicon-refresh:before {
385
+ content: "\e031";
386
+ }
387
+ .glyphicon-list-alt:before {
388
+ content: "\e032";
389
+ }
390
+ .glyphicon-lock:before {
391
+ content: "\e033";
392
+ }
393
+ .glyphicon-flag:before {
394
+ content: "\e034";
395
+ }
396
+ .glyphicon-headphones:before {
397
+ content: "\e035";
398
+ }
399
+ .glyphicon-volume-off:before {
400
+ content: "\e036";
401
+ }
402
+ .glyphicon-volume-down:before {
403
+ content: "\e037";
404
+ }
405
+ .glyphicon-volume-up:before {
406
+ content: "\e038";
407
+ }
408
+ .glyphicon-qrcode:before {
409
+ content: "\e039";
410
+ }
411
+ .glyphicon-barcode:before {
412
+ content: "\e040";
413
+ }
414
+ .glyphicon-tag:before {
415
+ content: "\e041";
416
+ }
417
+ .glyphicon-tags:before {
418
+ content: "\e042";
419
+ }
420
+ .glyphicon-book:before {
421
+ content: "\e043";
422
+ }
423
+ .glyphicon-bookmark:before {
424
+ content: "\e044";
425
+ }
426
+ .glyphicon-print:before {
427
+ content: "\e045";
428
+ }
429
+ .glyphicon-camera:before {
430
+ content: "\e046";
431
+ }
432
+ .glyphicon-font:before {
433
+ content: "\e047";
434
+ }
435
+ .glyphicon-bold:before {
436
+ content: "\e048";
437
+ }
438
+ .glyphicon-italic:before {
439
+ content: "\e049";
440
+ }
441
+ .glyphicon-text-height:before {
442
+ content: "\e050";
443
+ }
444
+ .glyphicon-text-width:before {
445
+ content: "\e051";
446
+ }
447
+ .glyphicon-align-left:before {
448
+ content: "\e052";
449
+ }
450
+ .glyphicon-align-center:before {
451
+ content: "\e053";
452
+ }
453
+ .glyphicon-align-right:before {
454
+ content: "\e054";
455
+ }
456
+ .glyphicon-align-justify:before {
457
+ content: "\e055";
458
+ }
459
+ .glyphicon-list:before {
460
+ content: "\e056";
461
+ }
462
+ .glyphicon-indent-left:before {
463
+ content: "\e057";
464
+ }
465
+ .glyphicon-indent-right:before {
466
+ content: "\e058";
467
+ }
468
+ .glyphicon-facetime-video:before {
469
+ content: "\e059";
470
+ }
471
+ .glyphicon-picture:before {
472
+ content: "\e060";
473
+ }
474
+ .glyphicon-map-marker:before {
475
+ content: "\e062";
476
+ }
477
+ .glyphicon-adjust:before {
478
+ content: "\e063";
479
+ }
480
+ .glyphicon-tint:before {
481
+ content: "\e064";
482
+ }
483
+ .glyphicon-edit:before {
484
+ content: "\e065";
485
+ }
486
+ .glyphicon-share:before {
487
+ content: "\e066";
488
+ }
489
+ .glyphicon-check:before {
490
+ content: "\e067";
491
+ }
492
+ .glyphicon-move:before {
493
+ content: "\e068";
494
+ }
495
+ .glyphicon-step-backward:before {
496
+ content: "\e069";
497
+ }
498
+ .glyphicon-fast-backward:before {
499
+ content: "\e070";
500
+ }
501
+ .glyphicon-backward:before {
502
+ content: "\e071";
503
+ }
504
+ .glyphicon-play:before {
505
+ content: "\e072";
506
+ }
507
+ .glyphicon-pause:before {
508
+ content: "\e073";
509
+ }
510
+ .glyphicon-stop:before {
511
+ content: "\e074";
512
+ }
513
+ .glyphicon-forward:before {
514
+ content: "\e075";
515
+ }
516
+ .glyphicon-fast-forward:before {
517
+ content: "\e076";
518
+ }
519
+ .glyphicon-step-forward:before {
520
+ content: "\e077";
521
+ }
522
+ .glyphicon-eject:before {
523
+ content: "\e078";
524
+ }
525
+ .glyphicon-chevron-left:before {
526
+ content: "\e079";
527
+ }
528
+ .glyphicon-chevron-right:before {
529
+ content: "\e080";
530
+ }
531
+ .glyphicon-plus-sign:before {
532
+ content: "\e081";
533
+ }
534
+ .glyphicon-minus-sign:before {
535
+ content: "\e082";
536
+ }
537
+ .glyphicon-remove-sign:before {
538
+ content: "\e083";
539
+ }
540
+ .glyphicon-ok-sign:before {
541
+ content: "\e084";
542
+ }
543
+ .glyphicon-question-sign:before {
544
+ content: "\e085";
545
+ }
546
+ .glyphicon-info-sign:before {
547
+ content: "\e086";
548
+ }
549
+ .glyphicon-screenshot:before {
550
+ content: "\e087";
551
+ }
552
+ .glyphicon-remove-circle:before {
553
+ content: "\e088";
554
+ }
555
+ .glyphicon-ok-circle:before {
556
+ content: "\e089";
557
+ }
558
+ .glyphicon-ban-circle:before {
559
+ content: "\e090";
560
+ }
561
+ .glyphicon-arrow-left:before {
562
+ content: "\e091";
563
+ }
564
+ .glyphicon-arrow-right:before {
565
+ content: "\e092";
566
+ }
567
+ .glyphicon-arrow-up:before {
568
+ content: "\e093";
569
+ }
570
+ .glyphicon-arrow-down:before {
571
+ content: "\e094";
572
+ }
573
+ .glyphicon-share-alt:before {
574
+ content: "\e095";
575
+ }
576
+ .glyphicon-resize-full:before {
577
+ content: "\e096";
578
+ }
579
+ .glyphicon-resize-small:before {
580
+ content: "\e097";
581
+ }
582
+ .glyphicon-exclamation-sign:before {
583
+ content: "\e101";
584
+ }
585
+ .glyphicon-gift:before {
586
+ content: "\e102";
587
+ }
588
+ .glyphicon-leaf:before {
589
+ content: "\e103";
590
+ }
591
+ .glyphicon-fire:before {
592
+ content: "\e104";
593
+ }
594
+ .glyphicon-eye-open:before {
595
+ content: "\e105";
596
+ }
597
+ .glyphicon-eye-close:before {
598
+ content: "\e106";
599
+ }
600
+ .glyphicon-warning-sign:before {
601
+ content: "\e107";
602
+ }
603
+ .glyphicon-plane:before {
604
+ content: "\e108";
605
+ }
606
+ .glyphicon-calendar:before {
607
+ content: "\e109";
608
+ }
609
+ .glyphicon-random:before {
610
+ content: "\e110";
611
+ }
612
+ .glyphicon-comment:before {
613
+ content: "\e111";
614
+ }
615
+ .glyphicon-magnet:before {
616
+ content: "\e112";
617
+ }
618
+ .glyphicon-chevron-up:before {
619
+ content: "\e113";
620
+ }
621
+ .glyphicon-chevron-down:before {
622
+ content: "\e114";
623
+ }
624
+ .glyphicon-retweet:before {
625
+ content: "\e115";
626
+ }
627
+ .glyphicon-shopping-cart:before {
628
+ content: "\e116";
629
+ }
630
+ .glyphicon-folder-close:before {
631
+ content: "\e117";
632
+ }
633
+ .glyphicon-folder-open:before {
634
+ content: "\e118";
635
+ }
636
+ .glyphicon-resize-vertical:before {
637
+ content: "\e119";
638
+ }
639
+ .glyphicon-resize-horizontal:before {
640
+ content: "\e120";
641
+ }
642
+ .glyphicon-hdd:before {
643
+ content: "\e121";
644
+ }
645
+ .glyphicon-bullhorn:before {
646
+ content: "\e122";
647
+ }
648
+ .glyphicon-bell:before {
649
+ content: "\e123";
650
+ }
651
+ .glyphicon-certificate:before {
652
+ content: "\e124";
653
+ }
654
+ .glyphicon-thumbs-up:before {
655
+ content: "\e125";
656
+ }
657
+ .glyphicon-thumbs-down:before {
658
+ content: "\e126";
659
+ }
660
+ .glyphicon-hand-right:before {
661
+ content: "\e127";
662
+ }
663
+ .glyphicon-hand-left:before {
664
+ content: "\e128";
665
+ }
666
+ .glyphicon-hand-up:before {
667
+ content: "\e129";
668
+ }
669
+ .glyphicon-hand-down:before {
670
+ content: "\e130";
671
+ }
672
+ .glyphicon-circle-arrow-right:before {
673
+ content: "\e131";
674
+ }
675
+ .glyphicon-circle-arrow-left:before {
676
+ content: "\e132";
677
+ }
678
+ .glyphicon-circle-arrow-up:before {
679
+ content: "\e133";
680
+ }
681
+ .glyphicon-circle-arrow-down:before {
682
+ content: "\e134";
683
+ }
684
+ .glyphicon-globe:before {
685
+ content: "\e135";
686
+ }
687
+ .glyphicon-wrench:before {
688
+ content: "\e136";
689
+ }
690
+ .glyphicon-tasks:before {
691
+ content: "\e137";
692
+ }
693
+ .glyphicon-filter:before {
694
+ content: "\e138";
695
+ }
696
+ .glyphicon-briefcase:before {
697
+ content: "\e139";
698
+ }
699
+ .glyphicon-fullscreen:before {
700
+ content: "\e140";
701
+ }
702
+ .glyphicon-dashboard:before {
703
+ content: "\e141";
704
+ }
705
+ .glyphicon-paperclip:before {
706
+ content: "\e142";
707
+ }
708
+ .glyphicon-heart-empty:before {
709
+ content: "\e143";
710
+ }
711
+ .glyphicon-link:before {
712
+ content: "\e144";
713
+ }
714
+ .glyphicon-phone:before {
715
+ content: "\e145";
716
+ }
717
+ .glyphicon-pushpin:before {
718
+ content: "\e146";
719
+ }
720
+ .glyphicon-usd:before {
721
+ content: "\e148";
722
+ }
723
+ .glyphicon-gbp:before {
724
+ content: "\e149";
725
+ }
726
+ .glyphicon-sort:before {
727
+ content: "\e150";
728
+ }
729
+ .glyphicon-sort-by-alphabet:before {
730
+ content: "\e151";
731
+ }
732
+ .glyphicon-sort-by-alphabet-alt:before {
733
+ content: "\e152";
734
+ }
735
+ .glyphicon-sort-by-order:before {
736
+ content: "\e153";
737
+ }
738
+ .glyphicon-sort-by-order-alt:before {
739
+ content: "\e154";
740
+ }
741
+ .glyphicon-sort-by-attributes:before {
742
+ content: "\e155";
743
+ }
744
+ .glyphicon-sort-by-attributes-alt:before {
745
+ content: "\e156";
746
+ }
747
+ .glyphicon-unchecked:before {
748
+ content: "\e157";
749
+ }
750
+ .glyphicon-expand:before {
751
+ content: "\e158";
752
+ }
753
+ .glyphicon-collapse-down:before {
754
+ content: "\e159";
755
+ }
756
+ .glyphicon-collapse-up:before {
757
+ content: "\e160";
758
+ }
759
+ .glyphicon-log-in:before {
760
+ content: "\e161";
761
+ }
762
+ .glyphicon-flash:before {
763
+ content: "\e162";
764
+ }
765
+ .glyphicon-log-out:before {
766
+ content: "\e163";
767
+ }
768
+ .glyphicon-new-window:before {
769
+ content: "\e164";
770
+ }
771
+ .glyphicon-record:before {
772
+ content: "\e165";
773
+ }
774
+ .glyphicon-save:before {
775
+ content: "\e166";
776
+ }
777
+ .glyphicon-open:before {
778
+ content: "\e167";
779
+ }
780
+ .glyphicon-saved:before {
781
+ content: "\e168";
782
+ }
783
+ .glyphicon-import:before {
784
+ content: "\e169";
785
+ }
786
+ .glyphicon-export:before {
787
+ content: "\e170";
788
+ }
789
+ .glyphicon-send:before {
790
+ content: "\e171";
791
+ }
792
+ .glyphicon-floppy-disk:before {
793
+ content: "\e172";
794
+ }
795
+ .glyphicon-floppy-saved:before {
796
+ content: "\e173";
797
+ }
798
+ .glyphicon-floppy-remove:before {
799
+ content: "\e174";
800
+ }
801
+ .glyphicon-floppy-save:before {
802
+ content: "\e175";
803
+ }
804
+ .glyphicon-floppy-open:before {
805
+ content: "\e176";
806
+ }
807
+ .glyphicon-credit-card:before {
808
+ content: "\e177";
809
+ }
810
+ .glyphicon-transfer:before {
811
+ content: "\e178";
812
+ }
813
+ .glyphicon-cutlery:before {
814
+ content: "\e179";
815
+ }
816
+ .glyphicon-header:before {
817
+ content: "\e180";
818
+ }
819
+ .glyphicon-compressed:before {
820
+ content: "\e181";
821
+ }
822
+ .glyphicon-earphone:before {
823
+ content: "\e182";
824
+ }
825
+ .glyphicon-phone-alt:before {
826
+ content: "\e183";
827
+ }
828
+ .glyphicon-tower:before {
829
+ content: "\e184";
830
+ }
831
+ .glyphicon-stats:before {
832
+ content: "\e185";
833
+ }
834
+ .glyphicon-sd-video:before {
835
+ content: "\e186";
836
+ }
837
+ .glyphicon-hd-video:before {
838
+ content: "\e187";
839
+ }
840
+ .glyphicon-subtitles:before {
841
+ content: "\e188";
842
+ }
843
+ .glyphicon-sound-stereo:before {
844
+ content: "\e189";
845
+ }
846
+ .glyphicon-sound-dolby:before {
847
+ content: "\e190";
848
+ }
849
+ .glyphicon-sound-5-1:before {
850
+ content: "\e191";
851
+ }
852
+ .glyphicon-sound-6-1:before {
853
+ content: "\e192";
854
+ }
855
+ .glyphicon-sound-7-1:before {
856
+ content: "\e193";
857
+ }
858
+ .glyphicon-copyright-mark:before {
859
+ content: "\e194";
860
+ }
861
+ .glyphicon-registration-mark:before {
862
+ content: "\e195";
863
+ }
864
+ .glyphicon-cloud-download:before {
865
+ content: "\e197";
866
+ }
867
+ .glyphicon-cloud-upload:before {
868
+ content: "\e198";
869
+ }
870
+ .glyphicon-tree-conifer:before {
871
+ content: "\e199";
872
+ }
873
+ .glyphicon-tree-deciduous:before {
874
+ content: "\e200";
875
+ }
876
+ .glyphicon-cd:before {
877
+ content: "\e201";
878
+ }
879
+ .glyphicon-save-file:before {
880
+ content: "\e202";
881
+ }
882
+ .glyphicon-open-file:before {
883
+ content: "\e203";
884
+ }
885
+ .glyphicon-level-up:before {
886
+ content: "\e204";
887
+ }
888
+ .glyphicon-copy:before {
889
+ content: "\e205";
890
+ }
891
+ .glyphicon-paste:before {
892
+ content: "\e206";
893
+ }
894
+ .glyphicon-alert:before {
895
+ content: "\e209";
896
+ }
897
+ .glyphicon-equalizer:before {
898
+ content: "\e210";
899
+ }
900
+ .glyphicon-king:before {
901
+ content: "\e211";
902
+ }
903
+ .glyphicon-queen:before {
904
+ content: "\e212";
905
+ }
906
+ .glyphicon-pawn:before {
907
+ content: "\e213";
908
+ }
909
+ .glyphicon-bishop:before {
910
+ content: "\e214";
911
+ }
912
+ .glyphicon-knight:before {
913
+ content: "\e215";
914
+ }
915
+ .glyphicon-baby-formula:before {
916
+ content: "\e216";
917
+ }
918
+ .glyphicon-tent:before {
919
+ content: "\26fa";
920
+ }
921
+ .glyphicon-blackboard:before {
922
+ content: "\e218";
923
+ }
924
+ .glyphicon-bed:before {
925
+ content: "\e219";
926
+ }
927
+ .glyphicon-apple:before {
928
+ content: "\f8ff";
929
+ }
930
+ .glyphicon-erase:before {
931
+ content: "\e221";
932
+ }
933
+ .glyphicon-hourglass:before {
934
+ content: "\231b";
935
+ }
936
+ .glyphicon-lamp:before {
937
+ content: "\e223";
938
+ }
939
+ .glyphicon-duplicate:before {
940
+ content: "\e224";
941
+ }
942
+ .glyphicon-piggy-bank:before {
943
+ content: "\e225";
944
+ }
945
+ .glyphicon-scissors:before {
946
+ content: "\e226";
947
+ }
948
+ .glyphicon-bitcoin:before {
949
+ content: "\e227";
950
+ }
951
+ .glyphicon-btc:before {
952
+ content: "\e227";
953
+ }
954
+ .glyphicon-xbt:before {
955
+ content: "\e227";
956
+ }
957
+ .glyphicon-yen:before {
958
+ content: "\00a5";
959
+ }
960
+ .glyphicon-jpy:before {
961
+ content: "\00a5";
962
+ }
963
+ .glyphicon-ruble:before {
964
+ content: "\20bd";
965
+ }
966
+ .glyphicon-rub:before {
967
+ content: "\20bd";
968
+ }
969
+ .glyphicon-scale:before {
970
+ content: "\e230";
971
+ }
972
+ .glyphicon-ice-lolly:before {
973
+ content: "\e231";
974
+ }
975
+ .glyphicon-ice-lolly-tasted:before {
976
+ content: "\e232";
977
+ }
978
+ .glyphicon-education:before {
979
+ content: "\e233";
980
+ }
981
+ .glyphicon-option-horizontal:before {
982
+ content: "\e234";
983
+ }
984
+ .glyphicon-option-vertical:before {
985
+ content: "\e235";
986
+ }
987
+ .glyphicon-menu-hamburger:before {
988
+ content: "\e236";
989
+ }
990
+ .glyphicon-modal-window:before {
991
+ content: "\e237";
992
+ }
993
+ .glyphicon-oil:before {
994
+ content: "\e238";
995
+ }
996
+ .glyphicon-grain:before {
997
+ content: "\e239";
998
+ }
999
+ .glyphicon-sunglasses:before {
1000
+ content: "\e240";
1001
+ }
1002
+ .glyphicon-text-size:before {
1003
+ content: "\e241";
1004
+ }
1005
+ .glyphicon-text-color:before {
1006
+ content: "\e242";
1007
+ }
1008
+ .glyphicon-text-background:before {
1009
+ content: "\e243";
1010
+ }
1011
+ .glyphicon-object-align-top:before {
1012
+ content: "\e244";
1013
+ }
1014
+ .glyphicon-object-align-bottom:before {
1015
+ content: "\e245";
1016
+ }
1017
+ .glyphicon-object-align-horizontal:before {
1018
+ content: "\e246";
1019
+ }
1020
+ .glyphicon-object-align-left:before {
1021
+ content: "\e247";
1022
+ }
1023
+ .glyphicon-object-align-vertical:before {
1024
+ content: "\e248";
1025
+ }
1026
+ .glyphicon-object-align-right:before {
1027
+ content: "\e249";
1028
+ }
1029
+ .glyphicon-triangle-right:before {
1030
+ content: "\e250";
1031
+ }
1032
+ .glyphicon-triangle-left:before {
1033
+ content: "\e251";
1034
+ }
1035
+ .glyphicon-triangle-bottom:before {
1036
+ content: "\e252";
1037
+ }
1038
+ .glyphicon-triangle-top:before {
1039
+ content: "\e253";
1040
+ }
1041
+ .glyphicon-console:before {
1042
+ content: "\e254";
1043
+ }
1044
+ .glyphicon-superscript:before {
1045
+ content: "\e255";
1046
+ }
1047
+ .glyphicon-subscript:before {
1048
+ content: "\e256";
1049
+ }
1050
+ .glyphicon-menu-left:before {
1051
+ content: "\e257";
1052
+ }
1053
+ .glyphicon-menu-right:before {
1054
+ content: "\e258";
1055
+ }
1056
+ .glyphicon-menu-down:before {
1057
+ content: "\e259";
1058
+ }
1059
+ .glyphicon-menu-up:before {
1060
+ content: "\e260";
1061
+ }
1062
+ * {
1063
+ -webkit-box-sizing: border-box;
1064
+ -moz-box-sizing: border-box;
1065
+ box-sizing: border-box;
1066
+ }
1067
+ *:before,
1068
+ *:after {
1069
+ -webkit-box-sizing: border-box;
1070
+ -moz-box-sizing: border-box;
1071
+ box-sizing: border-box;
1072
+ }
1073
+
1074
+ input,
1075
+ button,
1076
+ select,
1077
+ textarea {
1078
+ font-family: inherit;
1079
+ font-size: inherit;
1080
+ line-height: inherit;
1081
+ }
1082
+
1083
+ figure {
1084
+ margin: 0;
1085
+ }
1086
+ img {
1087
+ vertical-align: middle;
1088
+ }
1089
+ .img-responsive,
1090
+ .thumbnail > img,
1091
+ .thumbnail a > img,
1092
+ .carousel-inner > .item > img,
1093
+ .carousel-inner > .item > a > img {
1094
+ display: block;
1095
+ max-width: 100%;
1096
+ height: auto;
1097
+ }
1098
+ .img-rounded {
1099
+ border-radius: 6px;
1100
+ }
1101
+ .img-thumbnail {
1102
+ padding: 4px;
1103
+ line-height: 1.42857143;
1104
+ background-color: #ffffff;
1105
+ border: 1px solid #dddddd;
1106
+ border-radius: 4px;
1107
+ -webkit-transition: all 0.2s ease-in-out;
1108
+ -o-transition: all 0.2s ease-in-out;
1109
+ transition: all 0.2s ease-in-out;
1110
+ display: inline-block;
1111
+ max-width: 100%;
1112
+ height: auto;
1113
+ }
1114
+ .img-circle {
1115
+ border-radius: 50%;
1116
+ }
1117
+ hr {
1118
+ margin-top: 20px;
1119
+ margin-bottom: 20px;
1120
+ border: 0;
1121
+ border-top: 1px solid #eeeeee;
1122
+ }
1123
+ .sr-only {
1124
+ position: absolute;
1125
+ width: 1px;
1126
+ height: 1px;
1127
+ margin: -1px;
1128
+ padding: 0;
1129
+ overflow: hidden;
1130
+ clip: rect(0, 0, 0, 0);
1131
+ border: 0;
1132
+ }
1133
+ .sr-only-focusable:active,
1134
+ .sr-only-focusable:focus {
1135
+ position: static;
1136
+ width: auto;
1137
+ height: auto;
1138
+ margin: 0;
1139
+ overflow: visible;
1140
+ clip: auto;
1141
+ }
1142
+ [role="button"] {
1143
+ cursor: pointer;
1144
+ }
1145
+ code,
1146
+ kbd,
1147
+ pre,
1148
+ samp {
1149
+ font-family: Menlo, Monaco, Consolas, "Courier New", monospace;
1150
+ }
1151
+ code {
1152
+ padding: 2px 4px;
1153
+ font-size: 90%;
1154
+ color: #c7254e;
1155
+ background-color: #f9f2f4;
1156
+ border-radius: 4px;
1157
+ }
1158
+ kbd {
1159
+ padding: 2px 4px;
1160
+ font-size: 90%;
1161
+ color: #ffffff;
1162
+ background-color: #333333;
1163
+ border-radius: 3px;
1164
+ -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);
1165
+ box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);
1166
+ }
1167
+ kbd kbd {
1168
+ padding: 0;
1169
+ font-size: 100%;
1170
+ font-weight: bold;
1171
+ -webkit-box-shadow: none;
1172
+ box-shadow: none;
1173
+ }
1174
+ pre {
1175
+ display: block;
1176
+ padding: 9.5px;
1177
+ margin: 0 0 10px;
1178
+ font-size: 13px;
1179
+ line-height: 1.42857143;
1180
+ word-break: break-all;
1181
+ word-wrap: break-word;
1182
+ color: #333333;
1183
+ background-color: #f5f5f5;
1184
+ border: 1px solid #cccccc;
1185
+ border-radius: 4px;
1186
+ }
1187
+ pre code {
1188
+ padding: 0;
1189
+ font-size: inherit;
1190
+ color: inherit;
1191
+ white-space: pre-wrap;
1192
+ background-color: transparent;
1193
+ border-radius: 0;
1194
+ }
1195
+ .pre-scrollable {
1196
+ max-height: 340px;
1197
+ overflow-y: scroll;
1198
+ }
1199
+ .container {
1200
+ margin-right: auto;
1201
+ margin-left: auto;
1202
+ padding-left: 15px;
1203
+ padding-right: 15px;
1204
+ }
1205
+ @media (min-width: 768px) {
1206
+ .container {
1207
+ width: 750px;
1208
+ }
1209
+ }
1210
+ @media (min-width: 992px) {
1211
+ .container {
1212
+ width: 970px;
1213
+ }
1214
+ }
1215
+ @media (min-width: 1200px) {
1216
+ .container {
1217
+ width: 1170px;
1218
+ }
1219
+ }
1220
+ .container-fluid {
1221
+ margin-right: auto;
1222
+ margin-left: auto;
1223
+ padding-left: 15px;
1224
+ padding-right: 15px;
1225
+ }
1226
+ .row {
1227
+ margin-left: -15px;
1228
+ margin-right: -15px;
1229
+ }
1230
+ .col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {
1231
+ position: relative;
1232
+ min-height: 1px;
1233
+ padding-left: 15px;
1234
+ padding-right: 15px;
1235
+ }
1236
+ .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 {
1237
+ float: left;
1238
+ }
1239
+ .col-xs-12 {
1240
+ width: 100%;
1241
+ }
1242
+ .col-xs-11 {
1243
+ width: 91.66666667%;
1244
+ }
1245
+ .col-xs-10 {
1246
+ width: 83.33333333%;
1247
+ }
1248
+ .col-xs-9 {
1249
+ width: 75%;
1250
+ }
1251
+ .col-xs-8 {
1252
+ width: 66.66666667%;
1253
+ }
1254
+ .col-xs-7 {
1255
+ width: 58.33333333%;
1256
+ }
1257
+ .col-xs-6 {
1258
+ width: 50%;
1259
+ }
1260
+ .col-xs-5 {
1261
+ width: 41.66666667%;
1262
+ }
1263
+ .col-xs-4 {
1264
+ width: 33.33333333%;
1265
+ }
1266
+ .col-xs-3 {
1267
+ width: 25%;
1268
+ }
1269
+ .col-xs-2 {
1270
+ width: 16.66666667%;
1271
+ }
1272
+ .col-xs-1 {
1273
+ width: 8.33333333%;
1274
+ }
1275
+ .col-xs-pull-12 {
1276
+ right: 100%;
1277
+ }
1278
+ .col-xs-pull-11 {
1279
+ right: 91.66666667%;
1280
+ }
1281
+ .col-xs-pull-10 {
1282
+ right: 83.33333333%;
1283
+ }
1284
+ .col-xs-pull-9 {
1285
+ right: 75%;
1286
+ }
1287
+ .col-xs-pull-8 {
1288
+ right: 66.66666667%;
1289
+ }
1290
+ .col-xs-pull-7 {
1291
+ right: 58.33333333%;
1292
+ }
1293
+ .col-xs-pull-6 {
1294
+ right: 50%;
1295
+ }
1296
+ .col-xs-pull-5 {
1297
+ right: 41.66666667%;
1298
+ }
1299
+ .col-xs-pull-4 {
1300
+ right: 33.33333333%;
1301
+ }
1302
+ .col-xs-pull-3 {
1303
+ right: 25%;
1304
+ }
1305
+ .col-xs-pull-2 {
1306
+ right: 16.66666667%;
1307
+ }
1308
+ .col-xs-pull-1 {
1309
+ right: 8.33333333%;
1310
+ }
1311
+ .col-xs-pull-0 {
1312
+ right: auto;
1313
+ }
1314
+ .col-xs-push-12 {
1315
+ left: 100%;
1316
+ }
1317
+ .col-xs-push-11 {
1318
+ left: 91.66666667%;
1319
+ }
1320
+ .col-xs-push-10 {
1321
+ left: 83.33333333%;
1322
+ }
1323
+ .col-xs-push-9 {
1324
+ left: 75%;
1325
+ }
1326
+ .col-xs-push-8 {
1327
+ left: 66.66666667%;
1328
+ }
1329
+ .col-xs-push-7 {
1330
+ left: 58.33333333%;
1331
+ }
1332
+ .col-xs-push-6 {
1333
+ left: 50%;
1334
+ }
1335
+ .col-xs-push-5 {
1336
+ left: 41.66666667%;
1337
+ }
1338
+ .col-xs-push-4 {
1339
+ left: 33.33333333%;
1340
+ }
1341
+ .col-xs-push-3 {
1342
+ left: 25%;
1343
+ }
1344
+ .col-xs-push-2 {
1345
+ left: 16.66666667%;
1346
+ }
1347
+ .col-xs-push-1 {
1348
+ left: 8.33333333%;
1349
+ }
1350
+ .col-xs-push-0 {
1351
+ left: auto;
1352
+ }
1353
+ .col-xs-offset-12 {
1354
+ margin-left: 100%;
1355
+ }
1356
+ .col-xs-offset-11 {
1357
+ margin-left: 91.66666667%;
1358
+ }
1359
+ .col-xs-offset-10 {
1360
+ margin-left: 83.33333333%;
1361
+ }
1362
+ .col-xs-offset-9 {
1363
+ margin-left: 75%;
1364
+ }
1365
+ .col-xs-offset-8 {
1366
+ margin-left: 66.66666667%;
1367
+ }
1368
+ .col-xs-offset-7 {
1369
+ margin-left: 58.33333333%;
1370
+ }
1371
+ .col-xs-offset-6 {
1372
+ margin-left: 50%;
1373
+ }
1374
+ .col-xs-offset-5 {
1375
+ margin-left: 41.66666667%;
1376
+ }
1377
+ .col-xs-offset-4 {
1378
+ margin-left: 33.33333333%;
1379
+ }
1380
+ .col-xs-offset-3 {
1381
+ margin-left: 25%;
1382
+ }
1383
+ .col-xs-offset-2 {
1384
+ margin-left: 16.66666667%;
1385
+ }
1386
+ .col-xs-offset-1 {
1387
+ margin-left: 8.33333333%;
1388
+ }
1389
+ .col-xs-offset-0 {
1390
+ margin-left: 0%;
1391
+ }
1392
+ @media (min-width: 768px) {
1393
+ .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 {
1394
+ float: left;
1395
+ }
1396
+ .col-sm-12 {
1397
+ width: 100%;
1398
+ }
1399
+ .col-sm-11 {
1400
+ width: 91.66666667%;
1401
+ }
1402
+ .col-sm-10 {
1403
+ width: 83.33333333%;
1404
+ }
1405
+ .col-sm-9 {
1406
+ width: 75%;
1407
+ }
1408
+ .col-sm-8 {
1409
+ width: 66.66666667%;
1410
+ }
1411
+ .col-sm-7 {
1412
+ width: 58.33333333%;
1413
+ }
1414
+ .col-sm-6 {
1415
+ width: 50%;
1416
+ }
1417
+ .col-sm-5 {
1418
+ width: 41.66666667%;
1419
+ }
1420
+ .col-sm-4 {
1421
+ width: 33.33333333%;
1422
+ }
1423
+ .col-sm-3 {
1424
+ width: 25%;
1425
+ }
1426
+ .col-sm-2 {
1427
+ width: 16.66666667%;
1428
+ }
1429
+ .col-sm-1 {
1430
+ width: 8.33333333%;
1431
+ }
1432
+ .col-sm-pull-12 {
1433
+ right: 100%;
1434
+ }
1435
+ .col-sm-pull-11 {
1436
+ right: 91.66666667%;
1437
+ }
1438
+ .col-sm-pull-10 {
1439
+ right: 83.33333333%;
1440
+ }
1441
+ .col-sm-pull-9 {
1442
+ right: 75%;
1443
+ }
1444
+ .col-sm-pull-8 {
1445
+ right: 66.66666667%;
1446
+ }
1447
+ .col-sm-pull-7 {
1448
+ right: 58.33333333%;
1449
+ }
1450
+ .col-sm-pull-6 {
1451
+ right: 50%;
1452
+ }
1453
+ .col-sm-pull-5 {
1454
+ right: 41.66666667%;
1455
+ }
1456
+ .col-sm-pull-4 {
1457
+ right: 33.33333333%;
1458
+ }
1459
+ .col-sm-pull-3 {
1460
+ right: 25%;
1461
+ }
1462
+ .col-sm-pull-2 {
1463
+ right: 16.66666667%;
1464
+ }
1465
+ .col-sm-pull-1 {
1466
+ right: 8.33333333%;
1467
+ }
1468
+ .col-sm-pull-0 {
1469
+ right: auto;
1470
+ }
1471
+ .col-sm-push-12 {
1472
+ left: 100%;
1473
+ }
1474
+ .col-sm-push-11 {
1475
+ left: 91.66666667%;
1476
+ }
1477
+ .col-sm-push-10 {
1478
+ left: 83.33333333%;
1479
+ }
1480
+ .col-sm-push-9 {
1481
+ left: 75%;
1482
+ }
1483
+ .col-sm-push-8 {
1484
+ left: 66.66666667%;
1485
+ }
1486
+ .col-sm-push-7 {
1487
+ left: 58.33333333%;
1488
+ }
1489
+ .col-sm-push-6 {
1490
+ left: 50%;
1491
+ }
1492
+ .col-sm-push-5 {
1493
+ left: 41.66666667%;
1494
+ }
1495
+ .col-sm-push-4 {
1496
+ left: 33.33333333%;
1497
+ }
1498
+ .col-sm-push-3 {
1499
+ left: 25%;
1500
+ }
1501
+ .col-sm-push-2 {
1502
+ left: 16.66666667%;
1503
+ }
1504
+ .col-sm-push-1 {
1505
+ left: 8.33333333%;
1506
+ }
1507
+ .col-sm-push-0 {
1508
+ left: auto;
1509
+ }
1510
+ .col-sm-offset-12 {
1511
+ margin-left: 100%;
1512
+ }
1513
+ .col-sm-offset-11 {
1514
+ margin-left: 91.66666667%;
1515
+ }
1516
+ .col-sm-offset-10 {
1517
+ margin-left: 83.33333333%;
1518
+ }
1519
+ .col-sm-offset-9 {
1520
+ margin-left: 75%;
1521
+ }
1522
+ .col-sm-offset-8 {
1523
+ margin-left: 66.66666667%;
1524
+ }
1525
+ .col-sm-offset-7 {
1526
+ margin-left: 58.33333333%;
1527
+ }
1528
+ .col-sm-offset-6 {
1529
+ margin-left: 50%;
1530
+ }
1531
+ .col-sm-offset-5 {
1532
+ margin-left: 41.66666667%;
1533
+ }
1534
+ .col-sm-offset-4 {
1535
+ margin-left: 33.33333333%;
1536
+ }
1537
+ .col-sm-offset-3 {
1538
+ margin-left: 25%;
1539
+ }
1540
+ .col-sm-offset-2 {
1541
+ margin-left: 16.66666667%;
1542
+ }
1543
+ .col-sm-offset-1 {
1544
+ margin-left: 8.33333333%;
1545
+ }
1546
+ .col-sm-offset-0 {
1547
+ margin-left: 0%;
1548
+ }
1549
+ }
1550
+ @media (min-width: 992px) {
1551
+ .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 {
1552
+ float: left;
1553
+ }
1554
+ .col-md-12 {
1555
+ width: 100%;
1556
+ }
1557
+ .col-md-11 {
1558
+ width: 91.66666667%;
1559
+ }
1560
+ .col-md-10 {
1561
+ width: 83.33333333%;
1562
+ }
1563
+ .col-md-9 {
1564
+ width: 75%;
1565
+ }
1566
+ .col-md-8 {
1567
+ width: 66.66666667%;
1568
+ }
1569
+ .col-md-7 {
1570
+ width: 58.33333333%;
1571
+ }
1572
+ .col-md-6 {
1573
+ width: 50%;
1574
+ }
1575
+ .col-md-5 {
1576
+ width: 41.66666667%;
1577
+ }
1578
+ .col-md-4 {
1579
+ width: 33.33333333%;
1580
+ }
1581
+ .col-md-3 {
1582
+ width: 25%;
1583
+ }
1584
+ .col-md-2 {
1585
+ width: 16.66666667%;
1586
+ }
1587
+ .col-md-1 {
1588
+ width: 8.33333333%;
1589
+ }
1590
+ .col-md-pull-12 {
1591
+ right: 100%;
1592
+ }
1593
+ .col-md-pull-11 {
1594
+ right: 91.66666667%;
1595
+ }
1596
+ .col-md-pull-10 {
1597
+ right: 83.33333333%;
1598
+ }
1599
+ .col-md-pull-9 {
1600
+ right: 75%;
1601
+ }
1602
+ .col-md-pull-8 {
1603
+ right: 66.66666667%;
1604
+ }
1605
+ .col-md-pull-7 {
1606
+ right: 58.33333333%;
1607
+ }
1608
+ .col-md-pull-6 {
1609
+ right: 50%;
1610
+ }
1611
+ .col-md-pull-5 {
1612
+ right: 41.66666667%;
1613
+ }
1614
+ .col-md-pull-4 {
1615
+ right: 33.33333333%;
1616
+ }
1617
+ .col-md-pull-3 {
1618
+ right: 25%;
1619
+ }
1620
+ .col-md-pull-2 {
1621
+ right: 16.66666667%;
1622
+ }
1623
+ .col-md-pull-1 {
1624
+ right: 8.33333333%;
1625
+ }
1626
+ .col-md-pull-0 {
1627
+ right: auto;
1628
+ }
1629
+ .col-md-push-12 {
1630
+ left: 100%;
1631
+ }
1632
+ .col-md-push-11 {
1633
+ left: 91.66666667%;
1634
+ }
1635
+ .col-md-push-10 {
1636
+ left: 83.33333333%;
1637
+ }
1638
+ .col-md-push-9 {
1639
+ left: 75%;
1640
+ }
1641
+ .col-md-push-8 {
1642
+ left: 66.66666667%;
1643
+ }
1644
+ .col-md-push-7 {
1645
+ left: 58.33333333%;
1646
+ }
1647
+ .col-md-push-6 {
1648
+ left: 50%;
1649
+ }
1650
+ .col-md-push-5 {
1651
+ left: 41.66666667%;
1652
+ }
1653
+ .col-md-push-4 {
1654
+ left: 33.33333333%;
1655
+ }
1656
+ .col-md-push-3 {
1657
+ left: 25%;
1658
+ }
1659
+ .col-md-push-2 {
1660
+ left: 16.66666667%;
1661
+ }
1662
+ .col-md-push-1 {
1663
+ left: 8.33333333%;
1664
+ }
1665
+ .col-md-push-0 {
1666
+ left: auto;
1667
+ }
1668
+ .col-md-offset-12 {
1669
+ margin-left: 100%;
1670
+ }
1671
+ .col-md-offset-11 {
1672
+ margin-left: 91.66666667%;
1673
+ }
1674
+ .col-md-offset-10 {
1675
+ margin-left: 83.33333333%;
1676
+ }
1677
+ .col-md-offset-9 {
1678
+ margin-left: 75%;
1679
+ }
1680
+ .col-md-offset-8 {
1681
+ margin-left: 66.66666667%;
1682
+ }
1683
+ .col-md-offset-7 {
1684
+ margin-left: 58.33333333%;
1685
+ }
1686
+ .col-md-offset-6 {
1687
+ margin-left: 50%;
1688
+ }
1689
+ .col-md-offset-5 {
1690
+ margin-left: 41.66666667%;
1691
+ }
1692
+ .col-md-offset-4 {
1693
+ margin-left: 33.33333333%;
1694
+ }
1695
+ .col-md-offset-3 {
1696
+ margin-left: 25%;
1697
+ }
1698
+ .col-md-offset-2 {
1699
+ margin-left: 16.66666667%;
1700
+ }
1701
+ .col-md-offset-1 {
1702
+ margin-left: 8.33333333%;
1703
+ }
1704
+ .col-md-offset-0 {
1705
+ margin-left: 0%;
1706
+ }
1707
+ }
1708
+ @media (min-width: 1200px) {
1709
+ .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 {
1710
+ float: left;
1711
+ }
1712
+ .col-lg-12 {
1713
+ width: 100%;
1714
+ }
1715
+ .col-lg-11 {
1716
+ width: 91.66666667%;
1717
+ }
1718
+ .col-lg-10 {
1719
+ width: 83.33333333%;
1720
+ }
1721
+ .col-lg-9 {
1722
+ width: 75%;
1723
+ }
1724
+ .col-lg-8 {
1725
+ width: 66.66666667%;
1726
+ }
1727
+ .col-lg-7 {
1728
+ width: 58.33333333%;
1729
+ }
1730
+ .col-lg-6 {
1731
+ width: 50%;
1732
+ }
1733
+ .col-lg-5 {
1734
+ width: 41.66666667%;
1735
+ }
1736
+ .col-lg-4 {
1737
+ width: 33.33333333%;
1738
+ }
1739
+ .col-lg-3 {
1740
+ width: 25%;
1741
+ }
1742
+ .col-lg-2 {
1743
+ width: 16.66666667%;
1744
+ }
1745
+ .col-lg-1 {
1746
+ width: 8.33333333%;
1747
+ }
1748
+ .col-lg-pull-12 {
1749
+ right: 100%;
1750
+ }
1751
+ .col-lg-pull-11 {
1752
+ right: 91.66666667%;
1753
+ }
1754
+ .col-lg-pull-10 {
1755
+ right: 83.33333333%;
1756
+ }
1757
+ .col-lg-pull-9 {
1758
+ right: 75%;
1759
+ }
1760
+ .col-lg-pull-8 {
1761
+ right: 66.66666667%;
1762
+ }
1763
+ .col-lg-pull-7 {
1764
+ right: 58.33333333%;
1765
+ }
1766
+ .col-lg-pull-6 {
1767
+ right: 50%;
1768
+ }
1769
+ .col-lg-pull-5 {
1770
+ right: 41.66666667%;
1771
+ }
1772
+ .col-lg-pull-4 {
1773
+ right: 33.33333333%;
1774
+ }
1775
+ .col-lg-pull-3 {
1776
+ right: 25%;
1777
+ }
1778
+ .col-lg-pull-2 {
1779
+ right: 16.66666667%;
1780
+ }
1781
+ .col-lg-pull-1 {
1782
+ right: 8.33333333%;
1783
+ }
1784
+ .col-lg-pull-0 {
1785
+ right: auto;
1786
+ }
1787
+ .col-lg-push-12 {
1788
+ left: 100%;
1789
+ }
1790
+ .col-lg-push-11 {
1791
+ left: 91.66666667%;
1792
+ }
1793
+ .col-lg-push-10 {
1794
+ left: 83.33333333%;
1795
+ }
1796
+ .col-lg-push-9 {
1797
+ left: 75%;
1798
+ }
1799
+ .col-lg-push-8 {
1800
+ left: 66.66666667%;
1801
+ }
1802
+ .col-lg-push-7 {
1803
+ left: 58.33333333%;
1804
+ }
1805
+ .col-lg-push-6 {
1806
+ left: 50%;
1807
+ }
1808
+ .col-lg-push-5 {
1809
+ left: 41.66666667%;
1810
+ }
1811
+ .col-lg-push-4 {
1812
+ left: 33.33333333%;
1813
+ }
1814
+ .col-lg-push-3 {
1815
+ left: 25%;
1816
+ }
1817
+ .col-lg-push-2 {
1818
+ left: 16.66666667%;
1819
+ }
1820
+ .col-lg-push-1 {
1821
+ left: 8.33333333%;
1822
+ }
1823
+ .col-lg-push-0 {
1824
+ left: auto;
1825
+ }
1826
+ .col-lg-offset-12 {
1827
+ margin-left: 100%;
1828
+ }
1829
+ .col-lg-offset-11 {
1830
+ margin-left: 91.66666667%;
1831
+ }
1832
+ .col-lg-offset-10 {
1833
+ margin-left: 83.33333333%;
1834
+ }
1835
+ .col-lg-offset-9 {
1836
+ margin-left: 75%;
1837
+ }
1838
+ .col-lg-offset-8 {
1839
+ margin-left: 66.66666667%;
1840
+ }
1841
+ .col-lg-offset-7 {
1842
+ margin-left: 58.33333333%;
1843
+ }
1844
+ .col-lg-offset-6 {
1845
+ margin-left: 50%;
1846
+ }
1847
+ .col-lg-offset-5 {
1848
+ margin-left: 41.66666667%;
1849
+ }
1850
+ .col-lg-offset-4 {
1851
+ margin-left: 33.33333333%;
1852
+ }
1853
+ .col-lg-offset-3 {
1854
+ margin-left: 25%;
1855
+ }
1856
+ .col-lg-offset-2 {
1857
+ margin-left: 16.66666667%;
1858
+ }
1859
+ .col-lg-offset-1 {
1860
+ margin-left: 8.33333333%;
1861
+ }
1862
+ .col-lg-offset-0 {
1863
+ margin-left: 0%;
1864
+ }
1865
+ }
1866
+ table {
1867
+ background-color: transparent;
1868
+ }
1869
+ caption {
1870
+ padding-top: 8px;
1871
+ padding-bottom: 8px;
1872
+ color: #777777;
1873
+ text-align: left;
1874
+ }
1875
+ th {
1876
+ text-align: left;
1877
+ }
1878
+ .table {
1879
+ width: 100%;
1880
+ max-width: 100%;
1881
+ margin-bottom: 20px;
1882
+ }
1883
+ .table > thead > tr > th,
1884
+ .table > tbody > tr > th,
1885
+ .table > tfoot > tr > th,
1886
+ .table > thead > tr > td,
1887
+ .table > tbody > tr > td,
1888
+ .table > tfoot > tr > td {
1889
+ padding: 8px;
1890
+ line-height: 1.42857143;
1891
+ vertical-align: top;
1892
+ border-top: 1px solid #dddddd;
1893
+ }
1894
+ .table > thead > tr > th {
1895
+ vertical-align: bottom;
1896
+ border-bottom: 2px solid #dddddd;
1897
+ }
1898
+ .table > caption + thead > tr:first-child > th,
1899
+ .table > colgroup + thead > tr:first-child > th,
1900
+ .table > thead:first-child > tr:first-child > th,
1901
+ .table > caption + thead > tr:first-child > td,
1902
+ .table > colgroup + thead > tr:first-child > td,
1903
+ .table > thead:first-child > tr:first-child > td {
1904
+ border-top: 0;
1905
+ }
1906
+ .table > tbody + tbody {
1907
+ border-top: 2px solid #dddddd;
1908
+ }
1909
+ .table .table {
1910
+ background-color: #ffffff;
1911
+ }
1912
+ .table-condensed > thead > tr > th,
1913
+ .table-condensed > tbody > tr > th,
1914
+ .table-condensed > tfoot > tr > th,
1915
+ .table-condensed > thead > tr > td,
1916
+ .table-condensed > tbody > tr > td,
1917
+ .table-condensed > tfoot > tr > td {
1918
+ padding: 5px;
1919
+ }
1920
+ .table-bordered {
1921
+ border: 1px solid #dddddd;
1922
+ }
1923
+ .table-bordered > thead > tr > th,
1924
+ .table-bordered > tbody > tr > th,
1925
+ .table-bordered > tfoot > tr > th,
1926
+ .table-bordered > thead > tr > td,
1927
+ .table-bordered > tbody > tr > td,
1928
+ .table-bordered > tfoot > tr > td {
1929
+ border: 1px solid #dddddd;
1930
+ }
1931
+ .table-bordered > thead > tr > th,
1932
+ .table-bordered > thead > tr > td {
1933
+ border-bottom-width: 2px;
1934
+ }
1935
+ .table-striped > tbody > tr:nth-of-type(odd) {
1936
+ background-color: #f9f9f9;
1937
+ }
1938
+ .table-hover > tbody > tr:hover {
1939
+ background-color: #f5f5f5;
1940
+ }
1941
+ table col[class*="col-"] {
1942
+ position: static;
1943
+ float: none;
1944
+ display: table-column;
1945
+ }
1946
+ table td[class*="col-"],
1947
+ table th[class*="col-"] {
1948
+ position: static;
1949
+ float: none;
1950
+ display: table-cell;
1951
+ }
1952
+ .table > thead > tr > td.active,
1953
+ .table > tbody > tr > td.active,
1954
+ .table > tfoot > tr > td.active,
1955
+ .table > thead > tr > th.active,
1956
+ .table > tbody > tr > th.active,
1957
+ .table > tfoot > tr > th.active,
1958
+ .table > thead > tr.active > td,
1959
+ .table > tbody > tr.active > td,
1960
+ .table > tfoot > tr.active > td,
1961
+ .table > thead > tr.active > th,
1962
+ .table > tbody > tr.active > th,
1963
+ .table > tfoot > tr.active > th {
1964
+ background-color: #f5f5f5;
1965
+ }
1966
+ .table-hover > tbody > tr > td.active:hover,
1967
+ .table-hover > tbody > tr > th.active:hover,
1968
+ .table-hover > tbody > tr.active:hover > td,
1969
+ .table-hover > tbody > tr:hover > .active,
1970
+ .table-hover > tbody > tr.active:hover > th {
1971
+ background-color: #e8e8e8;
1972
+ }
1973
+ .table > thead > tr > td.success,
1974
+ .table > tbody > tr > td.success,
1975
+ .table > tfoot > tr > td.success,
1976
+ .table > thead > tr > th.success,
1977
+ .table > tbody > tr > th.success,
1978
+ .table > tfoot > tr > th.success,
1979
+ .table > thead > tr.success > td,
1980
+ .table > tbody > tr.success > td,
1981
+ .table > tfoot > tr.success > td,
1982
+ .table > thead > tr.success > th,
1983
+ .table > tbody > tr.success > th,
1984
+ .table > tfoot > tr.success > th {
1985
+ background-color: #dff0d8;
1986
+ }
1987
+ .table-hover > tbody > tr > td.success:hover,
1988
+ .table-hover > tbody > tr > th.success:hover,
1989
+ .table-hover > tbody > tr.success:hover > td,
1990
+ .table-hover > tbody > tr:hover > .success,
1991
+ .table-hover > tbody > tr.success:hover > th {
1992
+ background-color: #d0e9c6;
1993
+ }
1994
+ .table > thead > tr > td.info,
1995
+ .table > tbody > tr > td.info,
1996
+ .table > tfoot > tr > td.info,
1997
+ .table > thead > tr > th.info,
1998
+ .table > tbody > tr > th.info,
1999
+ .table > tfoot > tr > th.info,
2000
+ .table > thead > tr.info > td,
2001
+ .table > tbody > tr.info > td,
2002
+ .table > tfoot > tr.info > td,
2003
+ .table > thead > tr.info > th,
2004
+ .table > tbody > tr.info > th,
2005
+ .table > tfoot > tr.info > th {
2006
+ background-color: #d9edf7;
2007
+ }
2008
+ .table-hover > tbody > tr > td.info:hover,
2009
+ .table-hover > tbody > tr > th.info:hover,
2010
+ .table-hover > tbody > tr.info:hover > td,
2011
+ .table-hover > tbody > tr:hover > .info,
2012
+ .table-hover > tbody > tr.info:hover > th {
2013
+ background-color: #c4e3f3;
2014
+ }
2015
+ .table > thead > tr > td.warning,
2016
+ .table > tbody > tr > td.warning,
2017
+ .table > tfoot > tr > td.warning,
2018
+ .table > thead > tr > th.warning,
2019
+ .table > tbody > tr > th.warning,
2020
+ .table > tfoot > tr > th.warning,
2021
+ .table > thead > tr.warning > td,
2022
+ .table > tbody > tr.warning > td,
2023
+ .table > tfoot > tr.warning > td,
2024
+ .table > thead > tr.warning > th,
2025
+ .table > tbody > tr.warning > th,
2026
+ .table > tfoot > tr.warning > th {
2027
+ background-color: #fcf8e3;
2028
+ }
2029
+ .table-hover > tbody > tr > td.warning:hover,
2030
+ .table-hover > tbody > tr > th.warning:hover,
2031
+ .table-hover > tbody > tr.warning:hover > td,
2032
+ .table-hover > tbody > tr:hover > .warning,
2033
+ .table-hover > tbody > tr.warning:hover > th {
2034
+ background-color: #faf2cc;
2035
+ }
2036
+ .table > thead > tr > td.danger,
2037
+ .table > tbody > tr > td.danger,
2038
+ .table > tfoot > tr > td.danger,
2039
+ .table > thead > tr > th.danger,
2040
+ .table > tbody > tr > th.danger,
2041
+ .table > tfoot > tr > th.danger,
2042
+ .table > thead > tr.danger > td,
2043
+ .table > tbody > tr.danger > td,
2044
+ .table > tfoot > tr.danger > td,
2045
+ .table > thead > tr.danger > th,
2046
+ .table > tbody > tr.danger > th,
2047
+ .table > tfoot > tr.danger > th {
2048
+ background-color: #f2dede;
2049
+ }
2050
+ .table-hover > tbody > tr > td.danger:hover,
2051
+ .table-hover > tbody > tr > th.danger:hover,
2052
+ .table-hover > tbody > tr.danger:hover > td,
2053
+ .table-hover > tbody > tr:hover > .danger,
2054
+ .table-hover > tbody > tr.danger:hover > th {
2055
+ background-color: #ebcccc;
2056
+ }
2057
+ .table-responsive {
2058
+ overflow-x: auto;
2059
+ min-height: 0.01%;
2060
+ }
2061
+ @media screen and (max-width: 767px) {
2062
+ .table-responsive {
2063
+ width: 100%;
2064
+ margin-bottom: 15px;
2065
+ overflow-y: hidden;
2066
+ -ms-overflow-style: -ms-autohiding-scrollbar;
2067
+ border: 1px solid #dddddd;
2068
+ }
2069
+ .table-responsive > .table {
2070
+ margin-bottom: 0;
2071
+ }
2072
+ .table-responsive > .table > thead > tr > th,
2073
+ .table-responsive > .table > tbody > tr > th,
2074
+ .table-responsive > .table > tfoot > tr > th,
2075
+ .table-responsive > .table > thead > tr > td,
2076
+ .table-responsive > .table > tbody > tr > td,
2077
+ .table-responsive > .table > tfoot > tr > td {
2078
+ white-space: nowrap;
2079
+ }
2080
+ .table-responsive > .table-bordered {
2081
+ border: 0;
2082
+ }
2083
+ .table-responsive > .table-bordered > thead > tr > th:first-child,
2084
+ .table-responsive > .table-bordered > tbody > tr > th:first-child,
2085
+ .table-responsive > .table-bordered > tfoot > tr > th:first-child,
2086
+ .table-responsive > .table-bordered > thead > tr > td:first-child,
2087
+ .table-responsive > .table-bordered > tbody > tr > td:first-child,
2088
+ .table-responsive > .table-bordered > tfoot > tr > td:first-child {
2089
+ border-left: 0;
2090
+ }
2091
+ .table-responsive > .table-bordered > thead > tr > th:last-child,
2092
+ .table-responsive > .table-bordered > tbody > tr > th:last-child,
2093
+ .table-responsive > .table-bordered > tfoot > tr > th:last-child,
2094
+ .table-responsive > .table-bordered > thead > tr > td:last-child,
2095
+ .table-responsive > .table-bordered > tbody > tr > td:last-child,
2096
+ .table-responsive > .table-bordered > tfoot > tr > td:last-child {
2097
+ border-right: 0;
2098
+ }
2099
+ .table-responsive > .table-bordered > tbody > tr:last-child > th,
2100
+ .table-responsive > .table-bordered > tfoot > tr:last-child > th,
2101
+ .table-responsive > .table-bordered > tbody > tr:last-child > td,
2102
+ .table-responsive > .table-bordered > tfoot > tr:last-child > td {
2103
+ border-bottom: 0;
2104
+ }
2105
+ }
2106
+ fieldset {
2107
+ padding: 0;
2108
+ margin: 0;
2109
+ border: 0;
2110
+ min-width: 0;
2111
+ }
2112
+ legend {
2113
+ display: block;
2114
+ width: 100%;
2115
+ padding: 0;
2116
+ margin-bottom: 20px;
2117
+ font-size: 21px;
2118
+ line-height: inherit;
2119
+ color: #333333;
2120
+ border: 0;
2121
+ border-bottom: 1px solid #e5e5e5;
2122
+ }
2123
+ label {
2124
+ display: inline-block;
2125
+ max-width: 100%;
2126
+ margin-bottom: 5px;
2127
+ font-weight: bold;
2128
+ }
2129
+ input[type="search"] {
2130
+ -webkit-box-sizing: border-box;
2131
+ -moz-box-sizing: border-box;
2132
+ box-sizing: border-box;
2133
+ }
2134
+ input[type="radio"],
2135
+ input[type="checkbox"] {
2136
+ margin: 4px 0 0;
2137
+ margin-top: 1px \9;
2138
+ line-height: normal;
2139
+ }
2140
+ input[type="file"] {
2141
+ display: block;
2142
+ }
2143
+ input[type="range"] {
2144
+ display: block;
2145
+ width: 100%;
2146
+ }
2147
+ select[multiple],
2148
+ select[size] {
2149
+ height: auto;
2150
+ }
2151
+ input[type="file"]:focus,
2152
+ input[type="radio"]:focus,
2153
+ input[type="checkbox"]:focus {
2154
+ outline: 5px auto -webkit-focus-ring-color;
2155
+ outline-offset: -2px;
2156
+ }
2157
+ output {
2158
+ display: block;
2159
+ padding-top: 7px;
2160
+ font-size: 14px;
2161
+ line-height: 1.42857143;
2162
+ color: #555555;
2163
+ }
2164
+ .form-control {
2165
+ display: block;
2166
+ width: 100%;
2167
+ height: 34px;
2168
+ padding: 6px 12px;
2169
+ font-size: 14px;
2170
+ line-height: 1.42857143;
2171
+ color: #555555;
2172
+ background-color: #ffffff;
2173
+ background-image: none;
2174
+ border: 1px solid #cccccc;
2175
+ border-radius: 4px;
2176
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
2177
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
2178
+ -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s;
2179
+ -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
2180
+ transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
2181
+ }
2182
+ .form-control:focus {
2183
+ border-color: #66afe9;
2184
+ outline: 0;
2185
+ -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
2186
+ box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
2187
+ }
2188
+ .form-control::-moz-placeholder {
2189
+ color: #999999;
2190
+ opacity: 1;
2191
+ }
2192
+ .form-control:-ms-input-placeholder {
2193
+ color: #999999;
2194
+ }
2195
+ .form-control::-webkit-input-placeholder {
2196
+ color: #999999;
2197
+ }
2198
+ .form-control::-ms-expand {
2199
+ border: 0;
2200
+ background-color: transparent;
2201
+ }
2202
+ .form-control[disabled],
2203
+ .form-control[readonly],
2204
+ fieldset[disabled] .form-control {
2205
+ background-color: #eeeeee;
2206
+ opacity: 1;
2207
+ }
2208
+ .form-control[disabled],
2209
+ fieldset[disabled] .form-control {
2210
+ cursor: not-allowed;
2211
+ }
2212
+ textarea.form-control {
2213
+ height: auto;
2214
+ }
2215
+ input[type="search"] {
2216
+ -webkit-appearance: none;
2217
+ }
2218
+ @media screen and (-webkit-min-device-pixel-ratio: 0) {
2219
+ input[type="date"].form-control,
2220
+ input[type="time"].form-control,
2221
+ input[type="datetime-local"].form-control,
2222
+ input[type="month"].form-control {
2223
+ line-height: 34px;
2224
+ }
2225
+ input[type="date"].input-sm,
2226
+ input[type="time"].input-sm,
2227
+ input[type="datetime-local"].input-sm,
2228
+ input[type="month"].input-sm,
2229
+ .input-group-sm input[type="date"],
2230
+ .input-group-sm input[type="time"],
2231
+ .input-group-sm input[type="datetime-local"],
2232
+ .input-group-sm input[type="month"] {
2233
+ line-height: 30px;
2234
+ }
2235
+ input[type="date"].input-lg,
2236
+ input[type="time"].input-lg,
2237
+ input[type="datetime-local"].input-lg,
2238
+ input[type="month"].input-lg,
2239
+ .input-group-lg input[type="date"],
2240
+ .input-group-lg input[type="time"],
2241
+ .input-group-lg input[type="datetime-local"],
2242
+ .input-group-lg input[type="month"] {
2243
+ line-height: 46px;
2244
+ }
2245
+ }
2246
+ .form-group {
2247
+ margin-bottom: 15px;
2248
+ }
2249
+ .radio,
2250
+ .checkbox {
2251
+ position: relative;
2252
+ display: block;
2253
+ margin-top: 10px;
2254
+ margin-bottom: 10px;
2255
+ }
2256
+ .radio label,
2257
+ .checkbox label {
2258
+ min-height: 20px;
2259
+ padding-left: 20px;
2260
+ margin-bottom: 0;
2261
+ font-weight: normal;
2262
+ cursor: pointer;
2263
+ }
2264
+ .radio input[type="radio"],
2265
+ .radio-inline input[type="radio"],
2266
+ .checkbox input[type="checkbox"],
2267
+ .checkbox-inline input[type="checkbox"] {
2268
+ position: absolute;
2269
+ margin-left: -20px;
2270
+ margin-top: 4px \9;
2271
+ }
2272
+ .radio + .radio,
2273
+ .checkbox + .checkbox {
2274
+ margin-top: -5px;
2275
+ }
2276
+ .radio-inline,
2277
+ .checkbox-inline {
2278
+ position: relative;
2279
+ display: inline-block;
2280
+ padding-left: 20px;
2281
+ margin-bottom: 0;
2282
+ vertical-align: middle;
2283
+ font-weight: normal;
2284
+ cursor: pointer;
2285
+ }
2286
+ .radio-inline + .radio-inline,
2287
+ .checkbox-inline + .checkbox-inline {
2288
+ margin-top: 0;
2289
+ margin-left: 10px;
2290
+ }
2291
+ input[type="radio"][disabled],
2292
+ input[type="checkbox"][disabled],
2293
+ input[type="radio"].disabled,
2294
+ input[type="checkbox"].disabled,
2295
+ fieldset[disabled] input[type="radio"],
2296
+ fieldset[disabled] input[type="checkbox"] {
2297
+ cursor: not-allowed;
2298
+ }
2299
+ .radio-inline.disabled,
2300
+ .checkbox-inline.disabled,
2301
+ fieldset[disabled] .radio-inline,
2302
+ fieldset[disabled] .checkbox-inline {
2303
+ cursor: not-allowed;
2304
+ }
2305
+ .radio.disabled label,
2306
+ .checkbox.disabled label,
2307
+ fieldset[disabled] .radio label,
2308
+ fieldset[disabled] .checkbox label {
2309
+ cursor: not-allowed;
2310
+ }
2311
+ .form-control-static {
2312
+ padding-top: 7px;
2313
+ padding-bottom: 7px;
2314
+ margin-bottom: 0;
2315
+ min-height: 34px;
2316
+ }
2317
+ .form-control-static.input-lg,
2318
+ .form-control-static.input-sm {
2319
+ padding-left: 0;
2320
+ padding-right: 0;
2321
+ }
2322
+ .input-sm {
2323
+ height: 30px;
2324
+ padding: 5px 10px;
2325
+ font-size: 12px;
2326
+ line-height: 1.5;
2327
+ border-radius: 3px;
2328
+ }
2329
+ select.input-sm {
2330
+ height: 30px;
2331
+ line-height: 30px;
2332
+ }
2333
+ textarea.input-sm,
2334
+ select[multiple].input-sm {
2335
+ height: auto;
2336
+ }
2337
+ .form-group-sm .form-control {
2338
+ height: 30px;
2339
+ padding: 5px 10px;
2340
+ font-size: 12px;
2341
+ line-height: 1.5;
2342
+ border-radius: 3px;
2343
+ }
2344
+ .form-group-sm select.form-control {
2345
+ height: 30px;
2346
+ line-height: 30px;
2347
+ }
2348
+ .form-group-sm textarea.form-control,
2349
+ .form-group-sm select[multiple].form-control {
2350
+ height: auto;
2351
+ }
2352
+ .form-group-sm .form-control-static {
2353
+ height: 30px;
2354
+ min-height: 32px;
2355
+ padding: 6px 10px;
2356
+ font-size: 12px;
2357
+ line-height: 1.5;
2358
+ }
2359
+ .input-lg {
2360
+ height: 46px;
2361
+ padding: 10px 16px;
2362
+ font-size: 18px;
2363
+ line-height: 1.3333333;
2364
+ border-radius: 6px;
2365
+ }
2366
+ select.input-lg {
2367
+ height: 46px;
2368
+ line-height: 46px;
2369
+ }
2370
+ textarea.input-lg,
2371
+ select[multiple].input-lg {
2372
+ height: auto;
2373
+ }
2374
+ .form-group-lg .form-control {
2375
+ height: 46px;
2376
+ padding: 10px 16px;
2377
+ font-size: 18px;
2378
+ line-height: 1.3333333;
2379
+ border-radius: 6px;
2380
+ }
2381
+ .form-group-lg select.form-control {
2382
+ height: 46px;
2383
+ line-height: 46px;
2384
+ }
2385
+ .form-group-lg textarea.form-control,
2386
+ .form-group-lg select[multiple].form-control {
2387
+ height: auto;
2388
+ }
2389
+ .form-group-lg .form-control-static {
2390
+ height: 46px;
2391
+ min-height: 38px;
2392
+ padding: 11px 16px;
2393
+ font-size: 18px;
2394
+ line-height: 1.3333333;
2395
+ }
2396
+ .has-feedback {
2397
+ position: relative;
2398
+ }
2399
+ .has-feedback .form-control {
2400
+ padding-right: 42.5px;
2401
+ }
2402
+ .form-control-feedback {
2403
+ position: absolute;
2404
+ top: 0;
2405
+ right: 0;
2406
+ z-index: 2;
2407
+ display: block;
2408
+ width: 34px;
2409
+ height: 34px;
2410
+ line-height: 34px;
2411
+ text-align: center;
2412
+ pointer-events: none;
2413
+ }
2414
+ .input-lg + .form-control-feedback,
2415
+ .input-group-lg + .form-control-feedback,
2416
+ .form-group-lg .form-control + .form-control-feedback {
2417
+ width: 46px;
2418
+ height: 46px;
2419
+ line-height: 46px;
2420
+ }
2421
+ .input-sm + .form-control-feedback,
2422
+ .input-group-sm + .form-control-feedback,
2423
+ .form-group-sm .form-control + .form-control-feedback {
2424
+ width: 30px;
2425
+ height: 30px;
2426
+ line-height: 30px;
2427
+ }
2428
+ .has-success .help-block,
2429
+ .has-success .control-label,
2430
+ .has-success .radio,
2431
+ .has-success .checkbox,
2432
+ .has-success .radio-inline,
2433
+ .has-success .checkbox-inline,
2434
+ .has-success.radio label,
2435
+ .has-success.checkbox label,
2436
+ .has-success.radio-inline label,
2437
+ .has-success.checkbox-inline label {
2438
+ color: #3c763d;
2439
+ }
2440
+ .has-success .form-control {
2441
+ border-color: #3c763d;
2442
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
2443
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
2444
+ }
2445
+ .has-success .form-control:focus {
2446
+ border-color: #2b542c;
2447
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
2448
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
2449
+ }
2450
+ .has-success .input-group-addon {
2451
+ color: #3c763d;
2452
+ border-color: #3c763d;
2453
+ background-color: #dff0d8;
2454
+ }
2455
+ .has-success .form-control-feedback {
2456
+ color: #3c763d;
2457
+ }
2458
+ .has-warning .help-block,
2459
+ .has-warning .control-label,
2460
+ .has-warning .radio,
2461
+ .has-warning .checkbox,
2462
+ .has-warning .radio-inline,
2463
+ .has-warning .checkbox-inline,
2464
+ .has-warning.radio label,
2465
+ .has-warning.checkbox label,
2466
+ .has-warning.radio-inline label,
2467
+ .has-warning.checkbox-inline label {
2468
+ color: #8a6d3b;
2469
+ }
2470
+ .has-warning .form-control {
2471
+ border-color: #8a6d3b;
2472
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
2473
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
2474
+ }
2475
+ .has-warning .form-control:focus {
2476
+ border-color: #66512c;
2477
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;
2478
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;
2479
+ }
2480
+ .has-warning .input-group-addon {
2481
+ color: #8a6d3b;
2482
+ border-color: #8a6d3b;
2483
+ background-color: #fcf8e3;
2484
+ }
2485
+ .has-warning .form-control-feedback {
2486
+ color: #8a6d3b;
2487
+ }
2488
+ .has-error .help-block,
2489
+ .has-error .control-label,
2490
+ .has-error .radio,
2491
+ .has-error .checkbox,
2492
+ .has-error .radio-inline,
2493
+ .has-error .checkbox-inline,
2494
+ .has-error.radio label,
2495
+ .has-error.checkbox label,
2496
+ .has-error.radio-inline label,
2497
+ .has-error.checkbox-inline label {
2498
+ color: #a94442;
2499
+ }
2500
+ .has-error .form-control {
2501
+ border-color: #a94442;
2502
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
2503
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
2504
+ }
2505
+ .has-error .form-control:focus {
2506
+ border-color: #843534;
2507
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
2508
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
2509
+ }
2510
+ .has-error .input-group-addon {
2511
+ color: #a94442;
2512
+ border-color: #a94442;
2513
+ background-color: #f2dede;
2514
+ }
2515
+ .has-error .form-control-feedback {
2516
+ color: #a94442;
2517
+ }
2518
+ .has-feedback label ~ .form-control-feedback {
2519
+ top: 25px;
2520
+ }
2521
+ .has-feedback label.sr-only ~ .form-control-feedback {
2522
+ top: 0;
2523
+ }
2524
+ .help-block {
2525
+ display: block;
2526
+ margin-top: 5px;
2527
+ margin-bottom: 10px;
2528
+ color: #737373;
2529
+ }
2530
+ @media (min-width: 768px) {
2531
+ .form-inline .form-group {
2532
+ display: inline-block;
2533
+ margin-bottom: 0;
2534
+ vertical-align: middle;
2535
+ }
2536
+ .form-inline .form-control {
2537
+ display: inline-block;
2538
+ width: auto;
2539
+ vertical-align: middle;
2540
+ }
2541
+ .form-inline .form-control-static {
2542
+ display: inline-block;
2543
+ }
2544
+ .form-inline .input-group {
2545
+ display: inline-table;
2546
+ vertical-align: middle;
2547
+ }
2548
+ .form-inline .input-group .input-group-addon,
2549
+ .form-inline .input-group .input-group-btn,
2550
+ .form-inline .input-group .form-control {
2551
+ width: auto;
2552
+ }
2553
+ .form-inline .input-group > .form-control {
2554
+ width: 100%;
2555
+ }
2556
+ .form-inline .control-label {
2557
+ margin-bottom: 0;
2558
+ vertical-align: middle;
2559
+ }
2560
+ .form-inline .radio,
2561
+ .form-inline .checkbox {
2562
+ display: inline-block;
2563
+ margin-top: 0;
2564
+ margin-bottom: 0;
2565
+ vertical-align: middle;
2566
+ }
2567
+ .form-inline .radio label,
2568
+ .form-inline .checkbox label {
2569
+ padding-left: 0;
2570
+ }
2571
+ .form-inline .radio input[type="radio"],
2572
+ .form-inline .checkbox input[type="checkbox"] {
2573
+ position: relative;
2574
+ margin-left: 0;
2575
+ }
2576
+ .form-inline .has-feedback .form-control-feedback {
2577
+ top: 0;
2578
+ }
2579
+ }
2580
+ .form-horizontal .radio,
2581
+ .form-horizontal .checkbox,
2582
+ .form-horizontal .radio-inline,
2583
+ .form-horizontal .checkbox-inline {
2584
+ margin-top: 0;
2585
+ margin-bottom: 0;
2586
+ padding-top: 7px;
2587
+ }
2588
+ .form-horizontal .radio,
2589
+ .form-horizontal .checkbox {
2590
+ min-height: 27px;
2591
+ }
2592
+ .form-horizontal .form-group {
2593
+ margin-left: -15px;
2594
+ margin-right: -15px;
2595
+ }
2596
+ @media (min-width: 768px) {
2597
+ .form-horizontal .control-label {
2598
+ text-align: right;
2599
+ margin-bottom: 0;
2600
+ padding-top: 7px;
2601
+ }
2602
+ }
2603
+ .form-horizontal .has-feedback .form-control-feedback {
2604
+ right: 15px;
2605
+ }
2606
+ @media (min-width: 768px) {
2607
+ .form-horizontal .form-group-lg .control-label {
2608
+ padding-top: 11px;
2609
+ font-size: 18px;
2610
+ }
2611
+ }
2612
+ @media (min-width: 768px) {
2613
+ .form-horizontal .form-group-sm .control-label {
2614
+ padding-top: 6px;
2615
+ font-size: 12px;
2616
+ }
2617
+ }
2618
+ .btn {
2619
+ display: inline-block;
2620
+ margin-bottom: 0;
2621
+ font-weight: normal;
2622
+ text-align: center;
2623
+ vertical-align: middle;
2624
+ -ms-touch-action: manipulation;
2625
+ touch-action: manipulation;
2626
+ cursor: pointer;
2627
+ background-image: none;
2628
+ border: 1px solid transparent;
2629
+ white-space: nowrap;
2630
+ padding: 6px 12px;
2631
+ font-size: 14px;
2632
+ line-height: 1.42857143;
2633
+ border-radius: 4px;
2634
+ -webkit-user-select: none;
2635
+ -moz-user-select: none;
2636
+ -ms-user-select: none;
2637
+ user-select: none;
2638
+ }
2639
+ .btn:focus,
2640
+ .btn:active:focus,
2641
+ .btn.active:focus,
2642
+ .btn.focus,
2643
+ .btn:active.focus,
2644
+ .btn.active.focus {
2645
+ outline: 5px auto -webkit-focus-ring-color;
2646
+ outline-offset: -2px;
2647
+ }
2648
+ .btn:hover,
2649
+ .btn:focus,
2650
+ .btn.focus {
2651
+ color: #333333;
2652
+ text-decoration: none;
2653
+ }
2654
+ .btn:active,
2655
+ .btn.active {
2656
+ outline: 0;
2657
+ background-image: none;
2658
+ -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
2659
+ box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
2660
+ }
2661
+ .btn.disabled,
2662
+ .btn[disabled],
2663
+ fieldset[disabled] .btn {
2664
+ cursor: not-allowed;
2665
+ opacity: 0.65;
2666
+ filter: alpha(opacity=65);
2667
+ -webkit-box-shadow: none;
2668
+ box-shadow: none;
2669
+ }
2670
+ a.btn.disabled,
2671
+ fieldset[disabled] a.btn {
2672
+ pointer-events: none;
2673
+ }
2674
+ .btn-default {
2675
+ color: #333333;
2676
+ background-color: #ffffff;
2677
+ border-color: #cccccc;
2678
+ }
2679
+ .btn-default:focus,
2680
+ .btn-default.focus {
2681
+ color: #333333;
2682
+ background-color: #e6e6e6;
2683
+ border-color: #8c8c8c;
2684
+ }
2685
+ .btn-default:hover {
2686
+ color: #333333;
2687
+ background-color: #e6e6e6;
2688
+ border-color: #adadad;
2689
+ }
2690
+ .btn-default:active,
2691
+ .btn-default.active,
2692
+ .open > .dropdown-toggle.btn-default {
2693
+ color: #333333;
2694
+ background-color: #e6e6e6;
2695
+ border-color: #adadad;
2696
+ }
2697
+ .btn-default:active:hover,
2698
+ .btn-default.active:hover,
2699
+ .open > .dropdown-toggle.btn-default:hover,
2700
+ .btn-default:active:focus,
2701
+ .btn-default.active:focus,
2702
+ .open > .dropdown-toggle.btn-default:focus,
2703
+ .btn-default:active.focus,
2704
+ .btn-default.active.focus,
2705
+ .open > .dropdown-toggle.btn-default.focus {
2706
+ color: #333333;
2707
+ background-color: #d4d4d4;
2708
+ border-color: #8c8c8c;
2709
+ }
2710
+ .btn-default:active,
2711
+ .btn-default.active,
2712
+ .open > .dropdown-toggle.btn-default {
2713
+ background-image: none;
2714
+ }
2715
+ .btn-default.disabled:hover,
2716
+ .btn-default[disabled]:hover,
2717
+ fieldset[disabled] .btn-default:hover,
2718
+ .btn-default.disabled:focus,
2719
+ .btn-default[disabled]:focus,
2720
+ fieldset[disabled] .btn-default:focus,
2721
+ .btn-default.disabled.focus,
2722
+ .btn-default[disabled].focus,
2723
+ fieldset[disabled] .btn-default.focus {
2724
+ background-color: #ffffff;
2725
+ border-color: #cccccc;
2726
+ }
2727
+ .btn-default .badge {
2728
+ color: #ffffff;
2729
+ background-color: #333333;
2730
+ }
2731
+ .btn-primary {
2732
+ color: #ffffff;
2733
+ background-color: #337ab7;
2734
+ border-color: #2e6da4;
2735
+ }
2736
+ .btn-primary:focus,
2737
+ .btn-primary.focus {
2738
+ color: #ffffff;
2739
+ background-color: #286090;
2740
+ border-color: #122b40;
2741
+ }
2742
+ .btn-primary:hover {
2743
+ color: #ffffff;
2744
+ background-color: #286090;
2745
+ border-color: #204d74;
2746
+ }
2747
+ .btn-primary:active,
2748
+ .btn-primary.active,
2749
+ .open > .dropdown-toggle.btn-primary {
2750
+ color: #ffffff;
2751
+ background-color: #286090;
2752
+ border-color: #204d74;
2753
+ }
2754
+ .btn-primary:active:hover,
2755
+ .btn-primary.active:hover,
2756
+ .open > .dropdown-toggle.btn-primary:hover,
2757
+ .btn-primary:active:focus,
2758
+ .btn-primary.active:focus,
2759
+ .open > .dropdown-toggle.btn-primary:focus,
2760
+ .btn-primary:active.focus,
2761
+ .btn-primary.active.focus,
2762
+ .open > .dropdown-toggle.btn-primary.focus {
2763
+ color: #ffffff;
2764
+ background-color: #204d74;
2765
+ border-color: #122b40;
2766
+ }
2767
+ .btn-primary:active,
2768
+ .btn-primary.active,
2769
+ .open > .dropdown-toggle.btn-primary {
2770
+ background-image: none;
2771
+ }
2772
+ .btn-primary.disabled:hover,
2773
+ .btn-primary[disabled]:hover,
2774
+ fieldset[disabled] .btn-primary:hover,
2775
+ .btn-primary.disabled:focus,
2776
+ .btn-primary[disabled]:focus,
2777
+ fieldset[disabled] .btn-primary:focus,
2778
+ .btn-primary.disabled.focus,
2779
+ .btn-primary[disabled].focus,
2780
+ fieldset[disabled] .btn-primary.focus {
2781
+ background-color: #337ab7;
2782
+ border-color: #2e6da4;
2783
+ }
2784
+ .btn-primary .badge {
2785
+ color: #337ab7;
2786
+ background-color: #ffffff;
2787
+ }
2788
+ .btn-success {
2789
+ color: #ffffff;
2790
+ background-color: #5cb85c;
2791
+ border-color: #4cae4c;
2792
+ }
2793
+ .btn-success:focus,
2794
+ .btn-success.focus {
2795
+ color: #ffffff;
2796
+ background-color: #449d44;
2797
+ border-color: #255625;
2798
+ }
2799
+ .btn-success:hover {
2800
+ color: #ffffff;
2801
+ background-color: #449d44;
2802
+ border-color: #398439;
2803
+ }
2804
+ .btn-success:active,
2805
+ .btn-success.active,
2806
+ .open > .dropdown-toggle.btn-success {
2807
+ color: #ffffff;
2808
+ background-color: #449d44;
2809
+ border-color: #398439;
2810
+ }
2811
+ .btn-success:active:hover,
2812
+ .btn-success.active:hover,
2813
+ .open > .dropdown-toggle.btn-success:hover,
2814
+ .btn-success:active:focus,
2815
+ .btn-success.active:focus,
2816
+ .open > .dropdown-toggle.btn-success:focus,
2817
+ .btn-success:active.focus,
2818
+ .btn-success.active.focus,
2819
+ .open > .dropdown-toggle.btn-success.focus {
2820
+ color: #ffffff;
2821
+ background-color: #398439;
2822
+ border-color: #255625;
2823
+ }
2824
+ .btn-success:active,
2825
+ .btn-success.active,
2826
+ .open > .dropdown-toggle.btn-success {
2827
+ background-image: none;
2828
+ }
2829
+ .btn-success.disabled:hover,
2830
+ .btn-success[disabled]:hover,
2831
+ fieldset[disabled] .btn-success:hover,
2832
+ .btn-success.disabled:focus,
2833
+ .btn-success[disabled]:focus,
2834
+ fieldset[disabled] .btn-success:focus,
2835
+ .btn-success.disabled.focus,
2836
+ .btn-success[disabled].focus,
2837
+ fieldset[disabled] .btn-success.focus {
2838
+ background-color: #5cb85c;
2839
+ border-color: #4cae4c;
2840
+ }
2841
+ .btn-success .badge {
2842
+ color: #5cb85c;
2843
+ background-color: #ffffff;
2844
+ }
2845
+ .btn-info {
2846
+ color: #ffffff;
2847
+ background-color: #5bc0de;
2848
+ border-color: #46b8da;
2849
+ }
2850
+ .btn-info:focus,
2851
+ .btn-info.focus {
2852
+ color: #ffffff;
2853
+ background-color: #31b0d5;
2854
+ border-color: #1b6d85;
2855
+ }
2856
+ .btn-info:hover {
2857
+ color: #ffffff;
2858
+ background-color: #31b0d5;
2859
+ border-color: #269abc;
2860
+ }
2861
+ .btn-info:active,
2862
+ .btn-info.active,
2863
+ .open > .dropdown-toggle.btn-info {
2864
+ color: #ffffff;
2865
+ background-color: #31b0d5;
2866
+ border-color: #269abc;
2867
+ }
2868
+ .btn-info:active:hover,
2869
+ .btn-info.active:hover,
2870
+ .open > .dropdown-toggle.btn-info:hover,
2871
+ .btn-info:active:focus,
2872
+ .btn-info.active:focus,
2873
+ .open > .dropdown-toggle.btn-info:focus,
2874
+ .btn-info:active.focus,
2875
+ .btn-info.active.focus,
2876
+ .open > .dropdown-toggle.btn-info.focus {
2877
+ color: #ffffff;
2878
+ background-color: #269abc;
2879
+ border-color: #1b6d85;
2880
+ }
2881
+ .btn-info:active,
2882
+ .btn-info.active,
2883
+ .open > .dropdown-toggle.btn-info {
2884
+ background-image: none;
2885
+ }
2886
+ .btn-info.disabled:hover,
2887
+ .btn-info[disabled]:hover,
2888
+ fieldset[disabled] .btn-info:hover,
2889
+ .btn-info.disabled:focus,
2890
+ .btn-info[disabled]:focus,
2891
+ fieldset[disabled] .btn-info:focus,
2892
+ .btn-info.disabled.focus,
2893
+ .btn-info[disabled].focus,
2894
+ fieldset[disabled] .btn-info.focus {
2895
+ background-color: #5bc0de;
2896
+ border-color: #46b8da;
2897
+ }
2898
+ .btn-info .badge {
2899
+ color: #5bc0de;
2900
+ background-color: #ffffff;
2901
+ }
2902
+ .btn-warning {
2903
+ color: #ffffff;
2904
+ background-color: #f0ad4e;
2905
+ border-color: #eea236;
2906
+ }
2907
+ .btn-warning:focus,
2908
+ .btn-warning.focus {
2909
+ color: #ffffff;
2910
+ background-color: #ec971f;
2911
+ border-color: #985f0d;
2912
+ }
2913
+ .btn-warning:hover {
2914
+ color: #ffffff;
2915
+ background-color: #ec971f;
2916
+ border-color: #d58512;
2917
+ }
2918
+ .btn-warning:active,
2919
+ .btn-warning.active,
2920
+ .open > .dropdown-toggle.btn-warning {
2921
+ color: #ffffff;
2922
+ background-color: #ec971f;
2923
+ border-color: #d58512;
2924
+ }
2925
+ .btn-warning:active:hover,
2926
+ .btn-warning.active:hover,
2927
+ .open > .dropdown-toggle.btn-warning:hover,
2928
+ .btn-warning:active:focus,
2929
+ .btn-warning.active:focus,
2930
+ .open > .dropdown-toggle.btn-warning:focus,
2931
+ .btn-warning:active.focus,
2932
+ .btn-warning.active.focus,
2933
+ .open > .dropdown-toggle.btn-warning.focus {
2934
+ color: #ffffff;
2935
+ background-color: #d58512;
2936
+ border-color: #985f0d;
2937
+ }
2938
+ .btn-warning:active,
2939
+ .btn-warning.active,
2940
+ .open > .dropdown-toggle.btn-warning {
2941
+ background-image: none;
2942
+ }
2943
+ .btn-warning.disabled:hover,
2944
+ .btn-warning[disabled]:hover,
2945
+ fieldset[disabled] .btn-warning:hover,
2946
+ .btn-warning.disabled:focus,
2947
+ .btn-warning[disabled]:focus,
2948
+ fieldset[disabled] .btn-warning:focus,
2949
+ .btn-warning.disabled.focus,
2950
+ .btn-warning[disabled].focus,
2951
+ fieldset[disabled] .btn-warning.focus {
2952
+ background-color: #f0ad4e;
2953
+ border-color: #eea236;
2954
+ }
2955
+ .btn-warning .badge {
2956
+ color: #f0ad4e;
2957
+ background-color: #ffffff;
2958
+ }
2959
+ .btn-danger {
2960
+ color: #ffffff;
2961
+ background-color: #d9534f;
2962
+ border-color: #d43f3a;
2963
+ }
2964
+ .btn-danger:focus,
2965
+ .btn-danger.focus {
2966
+ color: #ffffff;
2967
+ background-color: #c9302c;
2968
+ border-color: #761c19;
2969
+ }
2970
+ .btn-danger:hover {
2971
+ color: #ffffff;
2972
+ background-color: #c9302c;
2973
+ border-color: #ac2925;
2974
+ }
2975
+ .btn-danger:active,
2976
+ .btn-danger.active,
2977
+ .open > .dropdown-toggle.btn-danger {
2978
+ color: #ffffff;
2979
+ background-color: #c9302c;
2980
+ border-color: #ac2925;
2981
+ }
2982
+ .btn-danger:active:hover,
2983
+ .btn-danger.active:hover,
2984
+ .open > .dropdown-toggle.btn-danger:hover,
2985
+ .btn-danger:active:focus,
2986
+ .btn-danger.active:focus,
2987
+ .open > .dropdown-toggle.btn-danger:focus,
2988
+ .btn-danger:active.focus,
2989
+ .btn-danger.active.focus,
2990
+ .open > .dropdown-toggle.btn-danger.focus {
2991
+ color: #ffffff;
2992
+ background-color: #ac2925;
2993
+ border-color: #761c19;
2994
+ }
2995
+ .btn-danger:active,
2996
+ .btn-danger.active,
2997
+ .open > .dropdown-toggle.btn-danger {
2998
+ background-image: none;
2999
+ }
3000
+ .btn-danger.disabled:hover,
3001
+ .btn-danger[disabled]:hover,
3002
+ fieldset[disabled] .btn-danger:hover,
3003
+ .btn-danger.disabled:focus,
3004
+ .btn-danger[disabled]:focus,
3005
+ fieldset[disabled] .btn-danger:focus,
3006
+ .btn-danger.disabled.focus,
3007
+ .btn-danger[disabled].focus,
3008
+ fieldset[disabled] .btn-danger.focus {
3009
+ background-color: #d9534f;
3010
+ border-color: #d43f3a;
3011
+ }
3012
+ .btn-danger .badge {
3013
+ color: #d9534f;
3014
+ background-color: #ffffff;
3015
+ }
3016
+ .btn-link {
3017
+ color: #337ab7;
3018
+ font-weight: normal;
3019
+ border-radius: 0;
3020
+ }
3021
+ .btn-link,
3022
+ .btn-link:active,
3023
+ .btn-link.active,
3024
+ .btn-link[disabled],
3025
+ fieldset[disabled] .btn-link {
3026
+ background-color: transparent;
3027
+ -webkit-box-shadow: none;
3028
+ box-shadow: none;
3029
+ }
3030
+ .btn-link,
3031
+ .btn-link:hover,
3032
+ .btn-link:focus,
3033
+ .btn-link:active {
3034
+ border-color: transparent;
3035
+ }
3036
+ .btn-link:hover,
3037
+ .btn-link:focus {
3038
+ color: #23527c;
3039
+ text-decoration: underline;
3040
+ background-color: transparent;
3041
+ }
3042
+ .btn-link[disabled]:hover,
3043
+ fieldset[disabled] .btn-link:hover,
3044
+ .btn-link[disabled]:focus,
3045
+ fieldset[disabled] .btn-link:focus {
3046
+ color: #777777;
3047
+ text-decoration: none;
3048
+ }
3049
+ .btn-lg,
3050
+ .btn-group-lg > .btn {
3051
+ padding: 10px 16px;
3052
+ font-size: 18px;
3053
+ line-height: 1.3333333;
3054
+ border-radius: 6px;
3055
+ }
3056
+ .btn-sm,
3057
+ .btn-group-sm > .btn {
3058
+ padding: 5px 10px;
3059
+ font-size: 12px;
3060
+ line-height: 1.5;
3061
+ border-radius: 3px;
3062
+ }
3063
+ .btn-xs,
3064
+ .btn-group-xs > .btn {
3065
+ padding: 1px 5px;
3066
+ font-size: 12px;
3067
+ line-height: 1.5;
3068
+ border-radius: 3px;
3069
+ }
3070
+ .btn-block {
3071
+ display: block;
3072
+ width: 100%;
3073
+ }
3074
+ .btn-block + .btn-block {
3075
+ margin-top: 5px;
3076
+ }
3077
+ input[type="submit"].btn-block,
3078
+ input[type="reset"].btn-block,
3079
+ input[type="button"].btn-block {
3080
+ width: 100%;
3081
+ }
3082
+ .fade {
3083
+ opacity: 0;
3084
+ -webkit-transition: opacity 0.15s linear;
3085
+ -o-transition: opacity 0.15s linear;
3086
+ transition: opacity 0.15s linear;
3087
+ }
3088
+ .fade.in {
3089
+ opacity: 1;
3090
+ }
3091
+ .collapse {
3092
+ display: none;
3093
+ }
3094
+ .collapse.in {
3095
+ display: block;
3096
+ }
3097
+ tr.collapse.in {
3098
+ display: table-row;
3099
+ }
3100
+ tbody.collapse.in {
3101
+ display: table-row-group;
3102
+ }
3103
+ .collapsing {
3104
+ position: relative;
3105
+ height: 0;
3106
+ overflow: hidden;
3107
+ -webkit-transition-property: height, visibility;
3108
+ -o-transition-property: height, visibility;
3109
+ transition-property: height, visibility;
3110
+ -webkit-transition-duration: 0.35s;
3111
+ -o-transition-duration: 0.35s;
3112
+ transition-duration: 0.35s;
3113
+ -webkit-transition-timing-function: ease;
3114
+ -o-transition-timing-function: ease;
3115
+ transition-timing-function: ease;
3116
+ }
3117
+ .caret {
3118
+ display: inline-block;
3119
+ width: 0;
3120
+ height: 0;
3121
+ margin-left: 2px;
3122
+ vertical-align: middle;
3123
+ border-top: 4px dashed;
3124
+ border-top: 4px solid \9;
3125
+ border-right: 4px solid transparent;
3126
+ border-left: 4px solid transparent;
3127
+ }
3128
+ .dropup,
3129
+ .dropdown {
3130
+ position: relative;
3131
+ }
3132
+ .dropdown-toggle:focus {
3133
+ outline: 0;
3134
+ }
3135
+ .dropdown-menu {
3136
+ position: absolute;
3137
+ top: 100%;
3138
+ left: 0;
3139
+ z-index: 1000;
3140
+ display: none;
3141
+ float: left;
3142
+ min-width: 160px;
3143
+ padding: 5px 0;
3144
+ margin: 2px 0 0;
3145
+ list-style: none;
3146
+ font-size: 14px;
3147
+ text-align: left;
3148
+ background-color: #ffffff;
3149
+ border: 1px solid #cccccc;
3150
+ border: 1px solid rgba(0, 0, 0, 0.15);
3151
+ border-radius: 4px;
3152
+ -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
3153
+ box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
3154
+ -webkit-background-clip: padding-box;
3155
+ background-clip: padding-box;
3156
+ }
3157
+ .dropdown-menu.pull-right {
3158
+ right: 0;
3159
+ left: auto;
3160
+ }
3161
+ .dropdown-menu .divider {
3162
+ height: 1px;
3163
+ margin: 9px 0;
3164
+ overflow: hidden;
3165
+ background-color: #e5e5e5;
3166
+ }
3167
+ .dropdown-menu > li > a {
3168
+ display: block;
3169
+ padding: 3px 20px;
3170
+ clear: both;
3171
+ font-weight: normal;
3172
+ line-height: 1.42857143;
3173
+ color: #333333;
3174
+ white-space: nowrap;
3175
+ }
3176
+ .dropdown-menu > li > a:hover,
3177
+ .dropdown-menu > li > a:focus {
3178
+ text-decoration: none;
3179
+ color: #262626;
3180
+ background-color: #f5f5f5;
3181
+ }
3182
+ .dropdown-menu > .active > a,
3183
+ .dropdown-menu > .active > a:hover,
3184
+ .dropdown-menu > .active > a:focus {
3185
+ color: #ffffff;
3186
+ text-decoration: none;
3187
+ outline: 0;
3188
+ background-color: #337ab7;
3189
+ }
3190
+ .dropdown-menu > .disabled > a,
3191
+ .dropdown-menu > .disabled > a:hover,
3192
+ .dropdown-menu > .disabled > a:focus {
3193
+ color: #777777;
3194
+ }
3195
+ .dropdown-menu > .disabled > a:hover,
3196
+ .dropdown-menu > .disabled > a:focus {
3197
+ text-decoration: none;
3198
+ background-color: transparent;
3199
+ background-image: none;
3200
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
3201
+ cursor: not-allowed;
3202
+ }
3203
+ .open > .dropdown-menu {
3204
+ display: block;
3205
+ }
3206
+ .open > a {
3207
+ outline: 0;
3208
+ }
3209
+ .dropdown-menu-right {
3210
+ left: auto;
3211
+ right: 0;
3212
+ }
3213
+ .dropdown-menu-left {
3214
+ left: 0;
3215
+ right: auto;
3216
+ }
3217
+ .dropdown-header {
3218
+ display: block;
3219
+ padding: 3px 20px;
3220
+ font-size: 12px;
3221
+ line-height: 1.42857143;
3222
+ color: #777777;
3223
+ white-space: nowrap;
3224
+ }
3225
+ .dropdown-backdrop {
3226
+ position: fixed;
3227
+ left: 0;
3228
+ right: 0;
3229
+ bottom: 0;
3230
+ top: 0;
3231
+ z-index: 990;
3232
+ }
3233
+ .pull-right > .dropdown-menu {
3234
+ right: 0;
3235
+ left: auto;
3236
+ }
3237
+ .dropup .caret,
3238
+ .navbar-fixed-bottom .dropdown .caret {
3239
+ border-top: 0;
3240
+ border-bottom: 4px dashed;
3241
+ border-bottom: 4px solid \9;
3242
+ content: "";
3243
+ }
3244
+ .dropup .dropdown-menu,
3245
+ .navbar-fixed-bottom .dropdown .dropdown-menu {
3246
+ top: auto;
3247
+ bottom: 100%;
3248
+ margin-bottom: 2px;
3249
+ }
3250
+ @media (min-width: 768px) {
3251
+ .navbar-right .dropdown-menu {
3252
+ left: auto;
3253
+ right: 0;
3254
+ }
3255
+ .navbar-right .dropdown-menu-left {
3256
+ left: 0;
3257
+ right: auto;
3258
+ }
3259
+ }
3260
+ .btn-group,
3261
+ .btn-group-vertical {
3262
+ position: relative;
3263
+ display: inline-block;
3264
+ vertical-align: middle;
3265
+ }
3266
+ .btn-group > .btn,
3267
+ .btn-group-vertical > .btn {
3268
+ position: relative;
3269
+ float: left;
3270
+ }
3271
+ .btn-group > .btn:hover,
3272
+ .btn-group-vertical > .btn:hover,
3273
+ .btn-group > .btn:focus,
3274
+ .btn-group-vertical > .btn:focus,
3275
+ .btn-group > .btn:active,
3276
+ .btn-group-vertical > .btn:active,
3277
+ .btn-group > .btn.active,
3278
+ .btn-group-vertical > .btn.active {
3279
+ z-index: 2;
3280
+ }
3281
+ .btn-group .btn + .btn,
3282
+ .btn-group .btn + .btn-group,
3283
+ .btn-group .btn-group + .btn,
3284
+ .btn-group .btn-group + .btn-group {
3285
+ margin-left: -1px;
3286
+ }
3287
+ .btn-toolbar {
3288
+ margin-left: -5px;
3289
+ }
3290
+ .btn-toolbar .btn,
3291
+ .btn-toolbar .btn-group,
3292
+ .btn-toolbar .input-group {
3293
+ float: left;
3294
+ }
3295
+ .btn-toolbar > .btn,
3296
+ .btn-toolbar > .btn-group,
3297
+ .btn-toolbar > .input-group {
3298
+ margin-left: 5px;
3299
+ }
3300
+ .btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
3301
+ border-radius: 0;
3302
+ }
3303
+ .btn-group > .btn:first-child {
3304
+ margin-left: 0;
3305
+ }
3306
+ .btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {
3307
+ border-bottom-right-radius: 0;
3308
+ border-top-right-radius: 0;
3309
+ }
3310
+ .btn-group > .btn:last-child:not(:first-child),
3311
+ .btn-group > .dropdown-toggle:not(:first-child) {
3312
+ border-bottom-left-radius: 0;
3313
+ border-top-left-radius: 0;
3314
+ }
3315
+ .btn-group > .btn-group {
3316
+ float: left;
3317
+ }
3318
+ .btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
3319
+ border-radius: 0;
3320
+ }
3321
+ .btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,
3322
+ .btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
3323
+ border-bottom-right-radius: 0;
3324
+ border-top-right-radius: 0;
3325
+ }
3326
+ .btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {
3327
+ border-bottom-left-radius: 0;
3328
+ border-top-left-radius: 0;
3329
+ }
3330
+ .btn-group .dropdown-toggle:active,
3331
+ .btn-group.open .dropdown-toggle {
3332
+ outline: 0;
3333
+ }
3334
+ .btn-group > .btn + .dropdown-toggle {
3335
+ padding-left: 8px;
3336
+ padding-right: 8px;
3337
+ }
3338
+ .btn-group > .btn-lg + .dropdown-toggle {
3339
+ padding-left: 12px;
3340
+ padding-right: 12px;
3341
+ }
3342
+ .btn-group.open .dropdown-toggle {
3343
+ -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
3344
+ box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
3345
+ }
3346
+ .btn-group.open .dropdown-toggle.btn-link {
3347
+ -webkit-box-shadow: none;
3348
+ box-shadow: none;
3349
+ }
3350
+ .btn .caret {
3351
+ margin-left: 0;
3352
+ }
3353
+ .btn-lg .caret {
3354
+ border-width: 5px 5px 0;
3355
+ border-bottom-width: 0;
3356
+ }
3357
+ .dropup .btn-lg .caret {
3358
+ border-width: 0 5px 5px;
3359
+ }
3360
+ .btn-group-vertical > .btn,
3361
+ .btn-group-vertical > .btn-group,
3362
+ .btn-group-vertical > .btn-group > .btn {
3363
+ display: block;
3364
+ float: none;
3365
+ width: 100%;
3366
+ max-width: 100%;
3367
+ }
3368
+ .btn-group-vertical > .btn-group > .btn {
3369
+ float: none;
3370
+ }
3371
+ .btn-group-vertical > .btn + .btn,
3372
+ .btn-group-vertical > .btn + .btn-group,
3373
+ .btn-group-vertical > .btn-group + .btn,
3374
+ .btn-group-vertical > .btn-group + .btn-group {
3375
+ margin-top: -1px;
3376
+ margin-left: 0;
3377
+ }
3378
+ .btn-group-vertical > .btn:not(:first-child):not(:last-child) {
3379
+ border-radius: 0;
3380
+ }
3381
+ .btn-group-vertical > .btn:first-child:not(:last-child) {
3382
+ border-top-right-radius: 4px;
3383
+ border-top-left-radius: 4px;
3384
+ border-bottom-right-radius: 0;
3385
+ border-bottom-left-radius: 0;
3386
+ }
3387
+ .btn-group-vertical > .btn:last-child:not(:first-child) {
3388
+ border-top-right-radius: 0;
3389
+ border-top-left-radius: 0;
3390
+ border-bottom-right-radius: 4px;
3391
+ border-bottom-left-radius: 4px;
3392
+ }
3393
+ .btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {
3394
+ border-radius: 0;
3395
+ }
3396
+ .btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,
3397
+ .btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
3398
+ border-bottom-right-radius: 0;
3399
+ border-bottom-left-radius: 0;
3400
+ }
3401
+ .btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {
3402
+ border-top-right-radius: 0;
3403
+ border-top-left-radius: 0;
3404
+ }
3405
+ .btn-group-justified {
3406
+ display: table;
3407
+ width: 100%;
3408
+ table-layout: fixed;
3409
+ border-collapse: separate;
3410
+ }
3411
+ .btn-group-justified > .btn,
3412
+ .btn-group-justified > .btn-group {
3413
+ float: none;
3414
+ display: table-cell;
3415
+ width: 1%;
3416
+ }
3417
+ .btn-group-justified > .btn-group .btn {
3418
+ width: 100%;
3419
+ }
3420
+ .btn-group-justified > .btn-group .dropdown-menu {
3421
+ left: auto;
3422
+ }
3423
+ [data-toggle="buttons"] > .btn input[type="radio"],
3424
+ [data-toggle="buttons"] > .btn-group > .btn input[type="radio"],
3425
+ [data-toggle="buttons"] > .btn input[type="checkbox"],
3426
+ [data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] {
3427
+ position: absolute;
3428
+ clip: rect(0, 0, 0, 0);
3429
+ pointer-events: none;
3430
+ }
3431
+ .input-group {
3432
+ position: relative;
3433
+ display: table;
3434
+ border-collapse: separate;
3435
+ }
3436
+ .input-group[class*="col-"] {
3437
+ float: none;
3438
+ padding-left: 0;
3439
+ padding-right: 0;
3440
+ }
3441
+ .input-group .form-control {
3442
+ position: relative;
3443
+ z-index: 2;
3444
+ float: left;
3445
+ width: 100%;
3446
+ margin-bottom: 0;
3447
+ }
3448
+ .input-group .form-control:focus {
3449
+ z-index: 3;
3450
+ }
3451
+ .input-group-lg > .form-control,
3452
+ .input-group-lg > .input-group-addon,
3453
+ .input-group-lg > .input-group-btn > .btn {
3454
+ height: 46px;
3455
+ padding: 10px 16px;
3456
+ font-size: 18px;
3457
+ line-height: 1.3333333;
3458
+ border-radius: 6px;
3459
+ }
3460
+ select.input-group-lg > .form-control,
3461
+ select.input-group-lg > .input-group-addon,
3462
+ select.input-group-lg > .input-group-btn > .btn {
3463
+ height: 46px;
3464
+ line-height: 46px;
3465
+ }
3466
+ textarea.input-group-lg > .form-control,
3467
+ textarea.input-group-lg > .input-group-addon,
3468
+ textarea.input-group-lg > .input-group-btn > .btn,
3469
+ select[multiple].input-group-lg > .form-control,
3470
+ select[multiple].input-group-lg > .input-group-addon,
3471
+ select[multiple].input-group-lg > .input-group-btn > .btn {
3472
+ height: auto;
3473
+ }
3474
+ .input-group-sm > .form-control,
3475
+ .input-group-sm > .input-group-addon,
3476
+ .input-group-sm > .input-group-btn > .btn {
3477
+ height: 30px;
3478
+ padding: 5px 10px;
3479
+ font-size: 12px;
3480
+ line-height: 1.5;
3481
+ border-radius: 3px;
3482
+ }
3483
+ select.input-group-sm > .form-control,
3484
+ select.input-group-sm > .input-group-addon,
3485
+ select.input-group-sm > .input-group-btn > .btn {
3486
+ height: 30px;
3487
+ line-height: 30px;
3488
+ }
3489
+ textarea.input-group-sm > .form-control,
3490
+ textarea.input-group-sm > .input-group-addon,
3491
+ textarea.input-group-sm > .input-group-btn > .btn,
3492
+ select[multiple].input-group-sm > .form-control,
3493
+ select[multiple].input-group-sm > .input-group-addon,
3494
+ select[multiple].input-group-sm > .input-group-btn > .btn {
3495
+ height: auto;
3496
+ }
3497
+ .input-group-addon,
3498
+ .input-group-btn,
3499
+ .input-group .form-control {
3500
+ display: table-cell;
3501
+ }
3502
+ .input-group-addon:not(:first-child):not(:last-child),
3503
+ .input-group-btn:not(:first-child):not(:last-child),
3504
+ .input-group .form-control:not(:first-child):not(:last-child) {
3505
+ border-radius: 0;
3506
+ }
3507
+ .input-group-addon,
3508
+ .input-group-btn {
3509
+ width: 1%;
3510
+ white-space: nowrap;
3511
+ vertical-align: middle;
3512
+ }
3513
+ .input-group-addon {
3514
+ padding: 6px 12px;
3515
+ font-size: 14px;
3516
+ font-weight: normal;
3517
+ line-height: 1;
3518
+ color: #555555;
3519
+ text-align: center;
3520
+ background-color: #eeeeee;
3521
+ border: 1px solid #cccccc;
3522
+ border-radius: 4px;
3523
+ }
3524
+ .input-group-addon.input-sm {
3525
+ padding: 5px 10px;
3526
+ font-size: 12px;
3527
+ border-radius: 3px;
3528
+ }
3529
+ .input-group-addon.input-lg {
3530
+ padding: 10px 16px;
3531
+ font-size: 18px;
3532
+ border-radius: 6px;
3533
+ }
3534
+ .input-group-addon input[type="radio"],
3535
+ .input-group-addon input[type="checkbox"] {
3536
+ margin-top: 0;
3537
+ }
3538
+ .input-group .form-control:first-child,
3539
+ .input-group-addon:first-child,
3540
+ .input-group-btn:first-child > .btn,
3541
+ .input-group-btn:first-child > .btn-group > .btn,
3542
+ .input-group-btn:first-child > .dropdown-toggle,
3543
+ .input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),
3544
+ .input-group-btn:last-child > .btn-group:not(:last-child) > .btn {
3545
+ border-bottom-right-radius: 0;
3546
+ border-top-right-radius: 0;
3547
+ }
3548
+ .input-group-addon:first-child {
3549
+ border-right: 0;
3550
+ }
3551
+ .input-group .form-control:last-child,
3552
+ .input-group-addon:last-child,
3553
+ .input-group-btn:last-child > .btn,
3554
+ .input-group-btn:last-child > .btn-group > .btn,
3555
+ .input-group-btn:last-child > .dropdown-toggle,
3556
+ .input-group-btn:first-child > .btn:not(:first-child),
3557
+ .input-group-btn:first-child > .btn-group:not(:first-child) > .btn {
3558
+ border-bottom-left-radius: 0;
3559
+ border-top-left-radius: 0;
3560
+ }
3561
+ .input-group-addon:last-child {
3562
+ border-left: 0;
3563
+ }
3564
+ .input-group-btn {
3565
+ position: relative;
3566
+ font-size: 0;
3567
+ white-space: nowrap;
3568
+ }
3569
+ .input-group-btn > .btn {
3570
+ position: relative;
3571
+ }
3572
+ .input-group-btn > .btn + .btn {
3573
+ margin-left: -1px;
3574
+ }
3575
+ .input-group-btn > .btn:hover,
3576
+ .input-group-btn > .btn:focus,
3577
+ .input-group-btn > .btn:active {
3578
+ z-index: 2;
3579
+ }
3580
+ .input-group-btn:first-child > .btn,
3581
+ .input-group-btn:first-child > .btn-group {
3582
+ margin-right: -1px;
3583
+ }
3584
+ .input-group-btn:last-child > .btn,
3585
+ .input-group-btn:last-child > .btn-group {
3586
+ z-index: 2;
3587
+ margin-left: -1px;
3588
+ }
3589
+ .nav {
3590
+ margin-bottom: 0;
3591
+ padding-left: 0;
3592
+ list-style: none;
3593
+ }
3594
+ .nav > li {
3595
+ position: relative;
3596
+ display: block;
3597
+ }
3598
+ .nav > li > a {
3599
+ position: relative;
3600
+ display: block;
3601
+ padding: 10px 15px;
3602
+ }
3603
+ .nav > li > a:hover,
3604
+ .nav > li > a:focus {
3605
+ text-decoration: none;
3606
+ background-color: #eeeeee;
3607
+ }
3608
+ .nav > li.disabled > a {
3609
+ color: #777777;
3610
+ }
3611
+ .nav > li.disabled > a:hover,
3612
+ .nav > li.disabled > a:focus {
3613
+ color: #777777;
3614
+ text-decoration: none;
3615
+ background-color: transparent;
3616
+ cursor: not-allowed;
3617
+ }
3618
+ .nav .open > a,
3619
+ .nav .open > a:hover,
3620
+ .nav .open > a:focus {
3621
+ background-color: #eeeeee;
3622
+ border-color: #337ab7;
3623
+ }
3624
+ .nav .nav-divider {
3625
+ height: 1px;
3626
+ margin: 9px 0;
3627
+ overflow: hidden;
3628
+ background-color: #e5e5e5;
3629
+ }
3630
+ .nav > li > a > img {
3631
+ max-width: none;
3632
+ }
3633
+ .nav-tabs {
3634
+ border-bottom: 1px solid #dddddd;
3635
+ }
3636
+ .nav-tabs > li {
3637
+ float: left;
3638
+ margin-bottom: -1px;
3639
+ }
3640
+ .nav-tabs > li > a {
3641
+ margin-right: 2px;
3642
+ line-height: 1.42857143;
3643
+ border: 1px solid transparent;
3644
+ border-radius: 4px 4px 0 0;
3645
+ }
3646
+ .nav-tabs > li > a:hover {
3647
+ border-color: #eeeeee #eeeeee #dddddd;
3648
+ }
3649
+ .nav-tabs > li.active > a,
3650
+ .nav-tabs > li.active > a:hover,
3651
+ .nav-tabs > li.active > a:focus {
3652
+ color: #555555;
3653
+ background-color: #ffffff;
3654
+ border: 1px solid #dddddd;
3655
+ border-bottom-color: transparent;
3656
+ cursor: default;
3657
+ }
3658
+ .nav-tabs.nav-justified {
3659
+ width: 100%;
3660
+ border-bottom: 0;
3661
+ }
3662
+ .nav-tabs.nav-justified > li {
3663
+ float: none;
3664
+ }
3665
+ .nav-tabs.nav-justified > li > a {
3666
+ text-align: center;
3667
+ margin-bottom: 5px;
3668
+ }
3669
+ .nav-tabs.nav-justified > .dropdown .dropdown-menu {
3670
+ top: auto;
3671
+ left: auto;
3672
+ }
3673
+ @media (min-width: 768px) {
3674
+ .nav-tabs.nav-justified > li {
3675
+ display: table-cell;
3676
+ width: 1%;
3677
+ }
3678
+ .nav-tabs.nav-justified > li > a {
3679
+ margin-bottom: 0;
3680
+ }
3681
+ }
3682
+ .nav-tabs.nav-justified > li > a {
3683
+ margin-right: 0;
3684
+ border-radius: 4px;
3685
+ }
3686
+ .nav-tabs.nav-justified > .active > a,
3687
+ .nav-tabs.nav-justified > .active > a:hover,
3688
+ .nav-tabs.nav-justified > .active > a:focus {
3689
+ border: 1px solid #dddddd;
3690
+ }
3691
+ @media (min-width: 768px) {
3692
+ .nav-tabs.nav-justified > li > a {
3693
+ border-bottom: 1px solid #dddddd;
3694
+ border-radius: 4px 4px 0 0;
3695
+ }
3696
+ .nav-tabs.nav-justified > .active > a,
3697
+ .nav-tabs.nav-justified > .active > a:hover,
3698
+ .nav-tabs.nav-justified > .active > a:focus {
3699
+ border-bottom-color: #ffffff;
3700
+ }
3701
+ }
3702
+ .nav-pills > li {
3703
+ float: left;
3704
+ }
3705
+ .nav-pills > li > a {
3706
+ border-radius: 4px;
3707
+ }
3708
+ .nav-pills > li + li {
3709
+ margin-left: 2px;
3710
+ }
3711
+ .nav-pills > li.active > a,
3712
+ .nav-pills > li.active > a:hover,
3713
+ .nav-pills > li.active > a:focus {
3714
+ color: #ffffff;
3715
+ background-color: #337ab7;
3716
+ }
3717
+ .nav-stacked > li {
3718
+ float: none;
3719
+ }
3720
+ .nav-stacked > li + li {
3721
+ margin-top: 2px;
3722
+ margin-left: 0;
3723
+ }
3724
+ .nav-justified {
3725
+ width: 100%;
3726
+ }
3727
+ .nav-justified > li {
3728
+ float: none;
3729
+ }
3730
+ .nav-justified > li > a {
3731
+ text-align: center;
3732
+ margin-bottom: 5px;
3733
+ }
3734
+ .nav-justified > .dropdown .dropdown-menu {
3735
+ top: auto;
3736
+ left: auto;
3737
+ }
3738
+ @media (min-width: 768px) {
3739
+ .nav-justified > li {
3740
+ display: table-cell;
3741
+ width: 1%;
3742
+ }
3743
+ .nav-justified > li > a {
3744
+ margin-bottom: 0;
3745
+ }
3746
+ }
3747
+ .nav-tabs-justified {
3748
+ border-bottom: 0;
3749
+ }
3750
+ .nav-tabs-justified > li > a {
3751
+ margin-right: 0;
3752
+ border-radius: 4px;
3753
+ }
3754
+ .nav-tabs-justified > .active > a,
3755
+ .nav-tabs-justified > .active > a:hover,
3756
+ .nav-tabs-justified > .active > a:focus {
3757
+ border: 1px solid #dddddd;
3758
+ }
3759
+ @media (min-width: 768px) {
3760
+ .nav-tabs-justified > li > a {
3761
+ border-bottom: 1px solid #dddddd;
3762
+ border-radius: 4px 4px 0 0;
3763
+ }
3764
+ .nav-tabs-justified > .active > a,
3765
+ .nav-tabs-justified > .active > a:hover,
3766
+ .nav-tabs-justified > .active > a:focus {
3767
+ border-bottom-color: #ffffff;
3768
+ }
3769
+ }
3770
+ .tab-content > .tab-pane {
3771
+ display: none;
3772
+ }
3773
+ .tab-content > .active {
3774
+ display: block;
3775
+ }
3776
+ .nav-tabs .dropdown-menu {
3777
+ margin-top: -1px;
3778
+ border-top-right-radius: 0;
3779
+ border-top-left-radius: 0;
3780
+ }
3781
+ .navbar {
3782
+ position: relative;
3783
+ min-height: 50px;
3784
+ margin-bottom: 20px;
3785
+ border: 1px solid transparent;
3786
+ }
3787
+ @media (min-width: 768px) {
3788
+ .navbar {
3789
+ border-radius: 4px;
3790
+ }
3791
+ }
3792
+ @media (min-width: 768px) {
3793
+ .navbar-header {
3794
+ float: left;
3795
+ }
3796
+ }
3797
+ .navbar-collapse {
3798
+ overflow-x: visible;
3799
+ padding-right: 15px;
3800
+ padding-left: 15px;
3801
+ border-top: 1px solid transparent;
3802
+ -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);
3803
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);
3804
+ -webkit-overflow-scrolling: touch;
3805
+ }
3806
+ .navbar-collapse.in {
3807
+ overflow-y: auto;
3808
+ }
3809
+ @media (min-width: 768px) {
3810
+ .navbar-collapse {
3811
+ width: auto;
3812
+ border-top: 0;
3813
+ -webkit-box-shadow: none;
3814
+ box-shadow: none;
3815
+ }
3816
+ .navbar-collapse.collapse {
3817
+ display: block !important;
3818
+ height: auto !important;
3819
+ padding-bottom: 0;
3820
+ overflow: visible !important;
3821
+ }
3822
+ .navbar-collapse.in {
3823
+ overflow-y: visible;
3824
+ }
3825
+ .navbar-fixed-top .navbar-collapse,
3826
+ .navbar-static-top .navbar-collapse,
3827
+ .navbar-fixed-bottom .navbar-collapse {
3828
+ padding-left: 0;
3829
+ padding-right: 0;
3830
+ }
3831
+ }
3832
+ .navbar-fixed-top .navbar-collapse,
3833
+ .navbar-fixed-bottom .navbar-collapse {
3834
+ max-height: 340px;
3835
+ }
3836
+ @media (max-device-width: 480px) and (orientation: landscape) {
3837
+ .navbar-fixed-top .navbar-collapse,
3838
+ .navbar-fixed-bottom .navbar-collapse {
3839
+ max-height: 200px;
3840
+ }
3841
+ }
3842
+ .container > .navbar-header,
3843
+ .container-fluid > .navbar-header,
3844
+ .container > .navbar-collapse,
3845
+ .container-fluid > .navbar-collapse {
3846
+ margin-right: -15px;
3847
+ margin-left: -15px;
3848
+ }
3849
+ @media (min-width: 768px) {
3850
+ .container > .navbar-header,
3851
+ .container-fluid > .navbar-header,
3852
+ .container > .navbar-collapse,
3853
+ .container-fluid > .navbar-collapse {
3854
+ margin-right: 0;
3855
+ margin-left: 0;
3856
+ }
3857
+ }
3858
+ .navbar-static-top {
3859
+ z-index: 1000;
3860
+ border-width: 0 0 1px;
3861
+ }
3862
+ @media (min-width: 768px) {
3863
+ .navbar-static-top {
3864
+ border-radius: 0;
3865
+ }
3866
+ }
3867
+ .navbar-fixed-top,
3868
+ .navbar-fixed-bottom {
3869
+ position: fixed;
3870
+ right: 0;
3871
+ left: 0;
3872
+ z-index: 1030;
3873
+ }
3874
+ @media (min-width: 768px) {
3875
+ .navbar-fixed-top,
3876
+ .navbar-fixed-bottom {
3877
+ border-radius: 0;
3878
+ }
3879
+ }
3880
+ .navbar-fixed-top {
3881
+ top: 0;
3882
+ border-width: 0 0 1px;
3883
+ }
3884
+ .navbar-fixed-bottom {
3885
+ bottom: 0;
3886
+ margin-bottom: 0;
3887
+ border-width: 1px 0 0;
3888
+ }
3889
+ .navbar-brand {
3890
+ float: left;
3891
+ padding: 15px 15px;
3892
+ font-size: 18px;
3893
+ line-height: 20px;
3894
+ height: 50px;
3895
+ }
3896
+ .navbar-brand:hover,
3897
+ .navbar-brand:focus {
3898
+ text-decoration: none;
3899
+ }
3900
+ .navbar-brand > img {
3901
+ display: block;
3902
+ }
3903
+ @media (min-width: 768px) {
3904
+ .navbar > .container .navbar-brand,
3905
+ .navbar > .container-fluid .navbar-brand {
3906
+ margin-left: -15px;
3907
+ }
3908
+ }
3909
+ .navbar-toggle {
3910
+ position: relative;
3911
+ float: right;
3912
+ margin-right: 15px;
3913
+ padding: 9px 10px;
3914
+ margin-top: 8px;
3915
+ margin-bottom: 8px;
3916
+ background-color: transparent;
3917
+ background-image: none;
3918
+ border: 1px solid transparent;
3919
+ border-radius: 4px;
3920
+ }
3921
+ .navbar-toggle:focus {
3922
+ outline: 0;
3923
+ }
3924
+ .navbar-toggle .icon-bar {
3925
+ display: block;
3926
+ width: 22px;
3927
+ height: 2px;
3928
+ border-radius: 1px;
3929
+ }
3930
+ .navbar-toggle .icon-bar + .icon-bar {
3931
+ margin-top: 4px;
3932
+ }
3933
+ @media (min-width: 768px) {
3934
+ .navbar-toggle {
3935
+ display: none;
3936
+ }
3937
+ }
3938
+ .navbar-nav {
3939
+ margin: 7.5px -15px;
3940
+ }
3941
+ .navbar-nav > li > a {
3942
+ padding-top: 10px;
3943
+ padding-bottom: 10px;
3944
+ line-height: 20px;
3945
+ }
3946
+ @media (max-width: 767px) {
3947
+ .navbar-nav .open .dropdown-menu {
3948
+ position: static;
3949
+ float: none;
3950
+ width: auto;
3951
+ margin-top: 0;
3952
+ background-color: transparent;
3953
+ border: 0;
3954
+ -webkit-box-shadow: none;
3955
+ box-shadow: none;
3956
+ }
3957
+ .navbar-nav .open .dropdown-menu > li > a,
3958
+ .navbar-nav .open .dropdown-menu .dropdown-header {
3959
+ padding: 5px 15px 5px 25px;
3960
+ }
3961
+ .navbar-nav .open .dropdown-menu > li > a {
3962
+ line-height: 20px;
3963
+ }
3964
+ .navbar-nav .open .dropdown-menu > li > a:hover,
3965
+ .navbar-nav .open .dropdown-menu > li > a:focus {
3966
+ background-image: none;
3967
+ }
3968
+ }
3969
+ @media (min-width: 768px) {
3970
+ .navbar-nav {
3971
+ float: left;
3972
+ margin: 0;
3973
+ }
3974
+ .navbar-nav > li {
3975
+ float: left;
3976
+ }
3977
+ .navbar-nav > li > a {
3978
+ padding-top: 15px;
3979
+ padding-bottom: 15px;
3980
+ }
3981
+ }
3982
+ .navbar-form {
3983
+ margin-left: -15px;
3984
+ margin-right: -15px;
3985
+ padding: 10px 15px;
3986
+ border-top: 1px solid transparent;
3987
+ border-bottom: 1px solid transparent;
3988
+ -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
3989
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
3990
+ margin-top: 8px;
3991
+ margin-bottom: 8px;
3992
+ }
3993
+ @media (min-width: 768px) {
3994
+ .navbar-form .form-group {
3995
+ display: inline-block;
3996
+ margin-bottom: 0;
3997
+ vertical-align: middle;
3998
+ }
3999
+ .navbar-form .form-control {
4000
+ display: inline-block;
4001
+ width: auto;
4002
+ vertical-align: middle;
4003
+ }
4004
+ .navbar-form .form-control-static {
4005
+ display: inline-block;
4006
+ }
4007
+ .navbar-form .input-group {
4008
+ display: inline-table;
4009
+ vertical-align: middle;
4010
+ }
4011
+ .navbar-form .input-group .input-group-addon,
4012
+ .navbar-form .input-group .input-group-btn,
4013
+ .navbar-form .input-group .form-control {
4014
+ width: auto;
4015
+ }
4016
+ .navbar-form .input-group > .form-control {
4017
+ width: 100%;
4018
+ }
4019
+ .navbar-form .control-label {
4020
+ margin-bottom: 0;
4021
+ vertical-align: middle;
4022
+ }
4023
+ .navbar-form .radio,
4024
+ .navbar-form .checkbox {
4025
+ display: inline-block;
4026
+ margin-top: 0;
4027
+ margin-bottom: 0;
4028
+ vertical-align: middle;
4029
+ }
4030
+ .navbar-form .radio label,
4031
+ .navbar-form .checkbox label {
4032
+ padding-left: 0;
4033
+ }
4034
+ .navbar-form .radio input[type="radio"],
4035
+ .navbar-form .checkbox input[type="checkbox"] {
4036
+ position: relative;
4037
+ margin-left: 0;
4038
+ }
4039
+ .navbar-form .has-feedback .form-control-feedback {
4040
+ top: 0;
4041
+ }
4042
+ }
4043
+ @media (max-width: 767px) {
4044
+ .navbar-form .form-group {
4045
+ margin-bottom: 5px;
4046
+ }
4047
+ .navbar-form .form-group:last-child {
4048
+ margin-bottom: 0;
4049
+ }
4050
+ }
4051
+ @media (min-width: 768px) {
4052
+ .navbar-form {
4053
+ width: auto;
4054
+ border: 0;
4055
+ margin-left: 0;
4056
+ margin-right: 0;
4057
+ padding-top: 0;
4058
+ padding-bottom: 0;
4059
+ -webkit-box-shadow: none;
4060
+ box-shadow: none;
4061
+ }
4062
+ }
4063
+ .navbar-nav > li > .dropdown-menu {
4064
+ margin-top: 0;
4065
+ border-top-right-radius: 0;
4066
+ border-top-left-radius: 0;
4067
+ }
4068
+ .navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {
4069
+ margin-bottom: 0;
4070
+ border-top-right-radius: 4px;
4071
+ border-top-left-radius: 4px;
4072
+ border-bottom-right-radius: 0;
4073
+ border-bottom-left-radius: 0;
4074
+ }
4075
+ .navbar-btn {
4076
+ margin-top: 8px;
4077
+ margin-bottom: 8px;
4078
+ }
4079
+ .navbar-btn.btn-sm {
4080
+ margin-top: 10px;
4081
+ margin-bottom: 10px;
4082
+ }
4083
+ .navbar-btn.btn-xs {
4084
+ margin-top: 14px;
4085
+ margin-bottom: 14px;
4086
+ }
4087
+ .navbar-text {
4088
+ margin-top: 15px;
4089
+ margin-bottom: 15px;
4090
+ }
4091
+ @media (min-width: 768px) {
4092
+ .navbar-text {
4093
+ float: left;
4094
+ margin-left: 15px;
4095
+ margin-right: 15px;
4096
+ }
4097
+ }
4098
+ @media (min-width: 768px) {
4099
+ .navbar-left {
4100
+ float: left !important;
4101
+ }
4102
+ .navbar-right {
4103
+ float: right !important;
4104
+ margin-right: -15px;
4105
+ }
4106
+ .navbar-right ~ .navbar-right {
4107
+ margin-right: 0;
4108
+ }
4109
+ }
4110
+ .navbar-default {
4111
+ background-color: #f8f8f8;
4112
+ border-color: #e7e7e7;
4113
+ }
4114
+ .navbar-default .navbar-brand {
4115
+ color: #777777;
4116
+ }
4117
+ .navbar-default .navbar-brand:hover,
4118
+ .navbar-default .navbar-brand:focus {
4119
+ color: #5e5e5e;
4120
+ background-color: transparent;
4121
+ }
4122
+ .navbar-default .navbar-text {
4123
+ color: #777777;
4124
+ }
4125
+ .navbar-default .navbar-nav > li > a {
4126
+ color: #777777;
4127
+ }
4128
+ .navbar-default .navbar-nav > li > a:hover,
4129
+ .navbar-default .navbar-nav > li > a:focus {
4130
+ color: #333333;
4131
+ background-color: transparent;
4132
+ }
4133
+ .navbar-default .navbar-nav > .active > a,
4134
+ .navbar-default .navbar-nav > .active > a:hover,
4135
+ .navbar-default .navbar-nav > .active > a:focus {
4136
+ color: #555555;
4137
+ background-color: #e7e7e7;
4138
+ }
4139
+ .navbar-default .navbar-nav > .disabled > a,
4140
+ .navbar-default .navbar-nav > .disabled > a:hover,
4141
+ .navbar-default .navbar-nav > .disabled > a:focus {
4142
+ color: #cccccc;
4143
+ background-color: transparent;
4144
+ }
4145
+ .navbar-default .navbar-toggle {
4146
+ border-color: #dddddd;
4147
+ }
4148
+ .navbar-default .navbar-toggle:hover,
4149
+ .navbar-default .navbar-toggle:focus {
4150
+ background-color: #dddddd;
4151
+ }
4152
+ .navbar-default .navbar-toggle .icon-bar {
4153
+ background-color: #888888;
4154
+ }
4155
+ .navbar-default .navbar-collapse,
4156
+ .navbar-default .navbar-form {
4157
+ border-color: #e7e7e7;
4158
+ }
4159
+ .navbar-default .navbar-nav > .open > a,
4160
+ .navbar-default .navbar-nav > .open > a:hover,
4161
+ .navbar-default .navbar-nav > .open > a:focus {
4162
+ background-color: #e7e7e7;
4163
+ color: #555555;
4164
+ }
4165
+ @media (max-width: 767px) {
4166
+ .navbar-default .navbar-nav .open .dropdown-menu > li > a {
4167
+ color: #777777;
4168
+ }
4169
+ .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,
4170
+ .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {
4171
+ color: #333333;
4172
+ background-color: transparent;
4173
+ }
4174
+ .navbar-default .navbar-nav .open .dropdown-menu > .active > a,
4175
+ .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,
4176
+ .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {
4177
+ color: #555555;
4178
+ background-color: #e7e7e7;
4179
+ }
4180
+ .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,
4181
+ .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,
4182
+ .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {
4183
+ color: #cccccc;
4184
+ background-color: transparent;
4185
+ }
4186
+ }
4187
+ .navbar-default .navbar-link {
4188
+ color: #777777;
4189
+ }
4190
+ .navbar-default .navbar-link:hover {
4191
+ color: #333333;
4192
+ }
4193
+ .navbar-default .btn-link {
4194
+ color: #777777;
4195
+ }
4196
+ .navbar-default .btn-link:hover,
4197
+ .navbar-default .btn-link:focus {
4198
+ color: #333333;
4199
+ }
4200
+ .navbar-default .btn-link[disabled]:hover,
4201
+ fieldset[disabled] .navbar-default .btn-link:hover,
4202
+ .navbar-default .btn-link[disabled]:focus,
4203
+ fieldset[disabled] .navbar-default .btn-link:focus {
4204
+ color: #cccccc;
4205
+ }
4206
+ .navbar-inverse {
4207
+ background-color: #222222;
4208
+ border-color: #080808;
4209
+ }
4210
+ .navbar-inverse .navbar-brand {
4211
+ color: #9d9d9d;
4212
+ }
4213
+ .navbar-inverse .navbar-brand:hover,
4214
+ .navbar-inverse .navbar-brand:focus {
4215
+ color: #ffffff;
4216
+ background-color: transparent;
4217
+ }
4218
+ .navbar-inverse .navbar-text {
4219
+ color: #9d9d9d;
4220
+ }
4221
+ .navbar-inverse .navbar-nav > li > a {
4222
+ color: #9d9d9d;
4223
+ }
4224
+ .navbar-inverse .navbar-nav > li > a:hover,
4225
+ .navbar-inverse .navbar-nav > li > a:focus {
4226
+ color: #ffffff;
4227
+ background-color: transparent;
4228
+ }
4229
+ .navbar-inverse .navbar-nav > .active > a,
4230
+ .navbar-inverse .navbar-nav > .active > a:hover,
4231
+ .navbar-inverse .navbar-nav > .active > a:focus {
4232
+ color: #ffffff;
4233
+ background-color: #080808;
4234
+ }
4235
+ .navbar-inverse .navbar-nav > .disabled > a,
4236
+ .navbar-inverse .navbar-nav > .disabled > a:hover,
4237
+ .navbar-inverse .navbar-nav > .disabled > a:focus {
4238
+ color: #444444;
4239
+ background-color: transparent;
4240
+ }
4241
+ .navbar-inverse .navbar-toggle {
4242
+ border-color: #333333;
4243
+ }
4244
+ .navbar-inverse .navbar-toggle:hover,
4245
+ .navbar-inverse .navbar-toggle:focus {
4246
+ background-color: #333333;
4247
+ }
4248
+ .navbar-inverse .navbar-toggle .icon-bar {
4249
+ background-color: #ffffff;
4250
+ }
4251
+ .navbar-inverse .navbar-collapse,
4252
+ .navbar-inverse .navbar-form {
4253
+ border-color: #101010;
4254
+ }
4255
+ .navbar-inverse .navbar-nav > .open > a,
4256
+ .navbar-inverse .navbar-nav > .open > a:hover,
4257
+ .navbar-inverse .navbar-nav > .open > a:focus {
4258
+ background-color: #080808;
4259
+ color: #ffffff;
4260
+ }
4261
+ @media (max-width: 767px) {
4262
+ .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {
4263
+ border-color: #080808;
4264
+ }
4265
+ .navbar-inverse .navbar-nav .open .dropdown-menu .divider {
4266
+ background-color: #080808;
4267
+ }
4268
+ .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {
4269
+ color: #9d9d9d;
4270
+ }
4271
+ .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,
4272
+ .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {
4273
+ color: #ffffff;
4274
+ background-color: transparent;
4275
+ }
4276
+ .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,
4277
+ .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,
4278
+ .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {
4279
+ color: #ffffff;
4280
+ background-color: #080808;
4281
+ }
4282
+ .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,
4283
+ .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,
4284
+ .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {
4285
+ color: #444444;
4286
+ background-color: transparent;
4287
+ }
4288
+ }
4289
+ .navbar-inverse .navbar-link {
4290
+ color: #9d9d9d;
4291
+ }
4292
+ .navbar-inverse .navbar-link:hover {
4293
+ color: #ffffff;
4294
+ }
4295
+ .navbar-inverse .btn-link {
4296
+ color: #9d9d9d;
4297
+ }
4298
+ .navbar-inverse .btn-link:hover,
4299
+ .navbar-inverse .btn-link:focus {
4300
+ color: #ffffff;
4301
+ }
4302
+ .navbar-inverse .btn-link[disabled]:hover,
4303
+ fieldset[disabled] .navbar-inverse .btn-link:hover,
4304
+ .navbar-inverse .btn-link[disabled]:focus,
4305
+ fieldset[disabled] .navbar-inverse .btn-link:focus {
4306
+ color: #444444;
4307
+ }
4308
+ .breadcrumb {
4309
+ padding: 8px 15px;
4310
+ margin-bottom: 20px;
4311
+ list-style: none;
4312
+ background-color: #f5f5f5;
4313
+ border-radius: 4px;
4314
+ }
4315
+ .breadcrumb > li {
4316
+ display: inline-block;
4317
+ }
4318
+ .breadcrumb > li + li:before {
4319
+ content: "/\00a0";
4320
+ padding: 0 5px;
4321
+ color: #cccccc;
4322
+ }
4323
+ .breadcrumb > .active {
4324
+ color: #777777;
4325
+ }
4326
+ .pagination {
4327
+ display: inline-block;
4328
+ padding-left: 0;
4329
+ margin: 20px 0;
4330
+ border-radius: 4px;
4331
+ }
4332
+ .pagination > li {
4333
+ display: inline;
4334
+ }
4335
+ .pagination > li > a,
4336
+ .pagination > li > span {
4337
+ position: relative;
4338
+ float: left;
4339
+ padding: 6px 12px;
4340
+ line-height: 1.42857143;
4341
+ text-decoration: none;
4342
+ color: #337ab7;
4343
+ background-color: #ffffff;
4344
+ border: 1px solid #dddddd;
4345
+ margin-left: -1px;
4346
+ }
4347
+ .pagination > li:first-child > a,
4348
+ .pagination > li:first-child > span {
4349
+ margin-left: 0;
4350
+ border-bottom-left-radius: 4px;
4351
+ border-top-left-radius: 4px;
4352
+ }
4353
+ .pagination > li:last-child > a,
4354
+ .pagination > li:last-child > span {
4355
+ border-bottom-right-radius: 4px;
4356
+ border-top-right-radius: 4px;
4357
+ }
4358
+ .pagination > li > a:hover,
4359
+ .pagination > li > span:hover,
4360
+ .pagination > li > a:focus,
4361
+ .pagination > li > span:focus {
4362
+ z-index: 2;
4363
+ color: #23527c;
4364
+ background-color: #eeeeee;
4365
+ border-color: #dddddd;
4366
+ }
4367
+ .pagination > .active > a,
4368
+ .pagination > .active > span,
4369
+ .pagination > .active > a:hover,
4370
+ .pagination > .active > span:hover,
4371
+ .pagination > .active > a:focus,
4372
+ .pagination > .active > span:focus {
4373
+ z-index: 3;
4374
+ color: #ffffff;
4375
+ background-color: #337ab7;
4376
+ border-color: #337ab7;
4377
+ cursor: default;
4378
+ }
4379
+ .pagination > .disabled > span,
4380
+ .pagination > .disabled > span:hover,
4381
+ .pagination > .disabled > span:focus,
4382
+ .pagination > .disabled > a,
4383
+ .pagination > .disabled > a:hover,
4384
+ .pagination > .disabled > a:focus {
4385
+ color: #777777;
4386
+ background-color: #ffffff;
4387
+ border-color: #dddddd;
4388
+ cursor: not-allowed;
4389
+ }
4390
+ .pagination-lg > li > a,
4391
+ .pagination-lg > li > span {
4392
+ padding: 10px 16px;
4393
+ font-size: 18px;
4394
+ line-height: 1.3333333;
4395
+ }
4396
+ .pagination-lg > li:first-child > a,
4397
+ .pagination-lg > li:first-child > span {
4398
+ border-bottom-left-radius: 6px;
4399
+ border-top-left-radius: 6px;
4400
+ }
4401
+ .pagination-lg > li:last-child > a,
4402
+ .pagination-lg > li:last-child > span {
4403
+ border-bottom-right-radius: 6px;
4404
+ border-top-right-radius: 6px;
4405
+ }
4406
+ .pagination-sm > li > a,
4407
+ .pagination-sm > li > span {
4408
+ padding: 5px 10px;
4409
+ font-size: 12px;
4410
+ line-height: 1.5;
4411
+ }
4412
+ .pagination-sm > li:first-child > a,
4413
+ .pagination-sm > li:first-child > span {
4414
+ border-bottom-left-radius: 3px;
4415
+ border-top-left-radius: 3px;
4416
+ }
4417
+ .pagination-sm > li:last-child > a,
4418
+ .pagination-sm > li:last-child > span {
4419
+ border-bottom-right-radius: 3px;
4420
+ border-top-right-radius: 3px;
4421
+ }
4422
+ .pager {
4423
+ padding-left: 0;
4424
+ margin: 20px 0;
4425
+ list-style: none;
4426
+ text-align: center;
4427
+ }
4428
+ .pager li {
4429
+ display: inline;
4430
+ }
4431
+ .pager li > a,
4432
+ .pager li > span {
4433
+ display: inline-block;
4434
+ padding: 5px 14px;
4435
+ background-color: #ffffff;
4436
+ border: 1px solid #dddddd;
4437
+ border-radius: 15px;
4438
+ }
4439
+ .pager li > a:hover,
4440
+ .pager li > a:focus {
4441
+ text-decoration: none;
4442
+ background-color: #eeeeee;
4443
+ }
4444
+ .pager .next > a,
4445
+ .pager .next > span {
4446
+ float: right;
4447
+ }
4448
+ .pager .previous > a,
4449
+ .pager .previous > span {
4450
+ float: left;
4451
+ }
4452
+ .pager .disabled > a,
4453
+ .pager .disabled > a:hover,
4454
+ .pager .disabled > a:focus,
4455
+ .pager .disabled > span {
4456
+ color: #777777;
4457
+ background-color: #ffffff;
4458
+ cursor: not-allowed;
4459
+ }
4460
+ .label {
4461
+ display: inline;
4462
+ padding: .2em .6em .3em;
4463
+ font-size: 75%;
4464
+ font-weight: bold;
4465
+ line-height: 1;
4466
+ color: #ffffff;
4467
+ text-align: center;
4468
+ white-space: nowrap;
4469
+ vertical-align: baseline;
4470
+ border-radius: .25em;
4471
+ }
4472
+ a.label:hover,
4473
+ a.label:focus {
4474
+ color: #ffffff;
4475
+ text-decoration: none;
4476
+ cursor: pointer;
4477
+ }
4478
+ .label:empty {
4479
+ display: none;
4480
+ }
4481
+ .btn .label {
4482
+ position: relative;
4483
+ top: -1px;
4484
+ }
4485
+ .label-default {
4486
+ background-color: #777777;
4487
+ }
4488
+ .label-default[href]:hover,
4489
+ .label-default[href]:focus {
4490
+ background-color: #5e5e5e;
4491
+ }
4492
+ .label-primary {
4493
+ background-color: #337ab7;
4494
+ }
4495
+ .label-primary[href]:hover,
4496
+ .label-primary[href]:focus {
4497
+ background-color: #286090;
4498
+ }
4499
+ .label-success {
4500
+ background-color: #5cb85c;
4501
+ }
4502
+ .label-success[href]:hover,
4503
+ .label-success[href]:focus {
4504
+ background-color: #449d44;
4505
+ }
4506
+ .label-info {
4507
+ background-color: #5bc0de;
4508
+ }
4509
+ .label-info[href]:hover,
4510
+ .label-info[href]:focus {
4511
+ background-color: #31b0d5;
4512
+ }
4513
+ .label-warning {
4514
+ background-color: #f0ad4e;
4515
+ }
4516
+ .label-warning[href]:hover,
4517
+ .label-warning[href]:focus {
4518
+ background-color: #ec971f;
4519
+ }
4520
+ .label-danger {
4521
+ background-color: #d9534f;
4522
+ }
4523
+ .label-danger[href]:hover,
4524
+ .label-danger[href]:focus {
4525
+ background-color: #c9302c;
4526
+ }
4527
+ .badge {
4528
+ display: inline-block;
4529
+ min-width: 10px;
4530
+ padding: 3px 7px;
4531
+ font-size: 12px;
4532
+ font-weight: bold;
4533
+ color: #ffffff;
4534
+ line-height: 1;
4535
+ vertical-align: middle;
4536
+ white-space: nowrap;
4537
+ text-align: center;
4538
+ background-color: #777777;
4539
+ border-radius: 10px;
4540
+ }
4541
+ .badge:empty {
4542
+ display: none;
4543
+ }
4544
+ .btn .badge {
4545
+ position: relative;
4546
+ top: -1px;
4547
+ }
4548
+ .btn-xs .badge,
4549
+ .btn-group-xs > .btn .badge {
4550
+ top: 0;
4551
+ padding: 1px 5px;
4552
+ }
4553
+ a.badge:hover,
4554
+ a.badge:focus {
4555
+ color: #ffffff;
4556
+ text-decoration: none;
4557
+ cursor: pointer;
4558
+ }
4559
+ .list-group-item.active > .badge,
4560
+ .nav-pills > .active > a > .badge {
4561
+ color: #337ab7;
4562
+ background-color: #ffffff;
4563
+ }
4564
+ .list-group-item > .badge {
4565
+ float: right;
4566
+ }
4567
+ .list-group-item > .badge + .badge {
4568
+ margin-right: 5px;
4569
+ }
4570
+ .nav-pills > li > a > .badge {
4571
+ margin-left: 3px;
4572
+ }
4573
+ .jumbotron {
4574
+ padding-top: 30px;
4575
+ padding-bottom: 30px;
4576
+ margin-bottom: 30px;
4577
+ color: inherit;
4578
+ background-color: #eeeeee;
4579
+ }
4580
+ .jumbotron h1,
4581
+ .jumbotron .h1 {
4582
+ color: inherit;
4583
+ }
4584
+ .jumbotron p {
4585
+ margin-bottom: 15px;
4586
+ font-size: 21px;
4587
+ font-weight: 200;
4588
+ }
4589
+ .jumbotron > hr {
4590
+ border-top-color: #d5d5d5;
4591
+ }
4592
+ .container .jumbotron,
4593
+ .container-fluid .jumbotron {
4594
+ border-radius: 6px;
4595
+ padding-left: 15px;
4596
+ padding-right: 15px;
4597
+ }
4598
+ .jumbotron .container {
4599
+ max-width: 100%;
4600
+ }
4601
+ @media screen and (min-width: 768px) {
4602
+ .jumbotron {
4603
+ padding-top: 48px;
4604
+ padding-bottom: 48px;
4605
+ }
4606
+ .container .jumbotron,
4607
+ .container-fluid .jumbotron {
4608
+ padding-left: 60px;
4609
+ padding-right: 60px;
4610
+ }
4611
+ .jumbotron h1,
4612
+ .jumbotron .h1 {
4613
+ font-size: 63px;
4614
+ }
4615
+ }
4616
+ .thumbnail {
4617
+ display: block;
4618
+ padding: 4px;
4619
+ margin-bottom: 20px;
4620
+ line-height: 1.42857143;
4621
+ background-color: #ffffff;
4622
+ border: 1px solid #dddddd;
4623
+ border-radius: 4px;
4624
+ -webkit-transition: border 0.2s ease-in-out;
4625
+ -o-transition: border 0.2s ease-in-out;
4626
+ transition: border 0.2s ease-in-out;
4627
+ }
4628
+ .thumbnail > img,
4629
+ .thumbnail a > img {
4630
+ margin-left: auto;
4631
+ margin-right: auto;
4632
+ }
4633
+ a.thumbnail:hover,
4634
+ a.thumbnail:focus,
4635
+ a.thumbnail.active {
4636
+ border-color: #337ab7;
4637
+ }
4638
+ .thumbnail .caption {
4639
+ padding: 9px;
4640
+ color: #333333;
4641
+ }
4642
+ .alert {
4643
+ padding: 15px;
4644
+ margin-bottom: 20px;
4645
+ border: 1px solid transparent;
4646
+ border-radius: 4px;
4647
+ }
4648
+ .alert h4 {
4649
+ margin-top: 0;
4650
+ color: inherit;
4651
+ }
4652
+ .alert .alert-link {
4653
+ font-weight: bold;
4654
+ }
4655
+ .alert > p,
4656
+ .alert > ul {
4657
+ margin-bottom: 0;
4658
+ }
4659
+ .alert > p + p {
4660
+ margin-top: 5px;
4661
+ }
4662
+ .alert-dismissable,
4663
+ .alert-dismissible {
4664
+ padding-right: 35px;
4665
+ }
4666
+ .alert-dismissable .close,
4667
+ .alert-dismissible .close {
4668
+ position: relative;
4669
+ top: -2px;
4670
+ right: -21px;
4671
+ color: inherit;
4672
+ }
4673
+ .alert-success {
4674
+ background-color: #dff0d8;
4675
+ border-color: #d6e9c6;
4676
+ color: #3c763d;
4677
+ }
4678
+ .alert-success hr {
4679
+ border-top-color: #c9e2b3;
4680
+ }
4681
+ .alert-success .alert-link {
4682
+ color: #2b542c;
4683
+ }
4684
+ .alert-info {
4685
+ background-color: #d9edf7;
4686
+ border-color: #bce8f1;
4687
+ color: #31708f;
4688
+ }
4689
+ .alert-info hr {
4690
+ border-top-color: #a6e1ec;
4691
+ }
4692
+ .alert-info .alert-link {
4693
+ color: #245269;
4694
+ }
4695
+ .alert-warning {
4696
+ background-color: #fcf8e3;
4697
+ border-color: #faebcc;
4698
+ color: #8a6d3b;
4699
+ }
4700
+ .alert-warning hr {
4701
+ border-top-color: #f7e1b5;
4702
+ }
4703
+ .alert-warning .alert-link {
4704
+ color: #66512c;
4705
+ }
4706
+ .alert-danger {
4707
+ background-color: #f2dede;
4708
+ border-color: #ebccd1;
4709
+ color: #a94442;
4710
+ }
4711
+ .alert-danger hr {
4712
+ border-top-color: #e4b9c0;
4713
+ }
4714
+ .alert-danger .alert-link {
4715
+ color: #843534;
4716
+ }
4717
+ @-webkit-keyframes progress-bar-stripes {
4718
+ from {
4719
+ background-position: 40px 0;
4720
+ }
4721
+ to {
4722
+ background-position: 0 0;
4723
+ }
4724
+ }
4725
+ @-o-keyframes progress-bar-stripes {
4726
+ from {
4727
+ background-position: 40px 0;
4728
+ }
4729
+ to {
4730
+ background-position: 0 0;
4731
+ }
4732
+ }
4733
+ @keyframes progress-bar-stripes {
4734
+ from {
4735
+ background-position: 40px 0;
4736
+ }
4737
+ to {
4738
+ background-position: 0 0;
4739
+ }
4740
+ }
4741
+ .progress {
4742
+ overflow: hidden;
4743
+ height: 20px;
4744
+ margin-bottom: 20px;
4745
+ background-color: #f5f5f5;
4746
+ border-radius: 4px;
4747
+ -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
4748
+ box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
4749
+ }
4750
+ .progress-bar {
4751
+ float: left;
4752
+ width: 0%;
4753
+ height: 100%;
4754
+ font-size: 12px;
4755
+ line-height: 20px;
4756
+ color: #ffffff;
4757
+ text-align: center;
4758
+ background-color: #337ab7;
4759
+ -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
4760
+ box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
4761
+ -webkit-transition: width 0.6s ease;
4762
+ -o-transition: width 0.6s ease;
4763
+ transition: width 0.6s ease;
4764
+ }
4765
+ .progress-striped .progress-bar,
4766
+ .progress-bar-striped {
4767
+ 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);
4768
+ background-image: -o-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);
4769
+ 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);
4770
+ -webkit-background-size: 40px 40px;
4771
+ background-size: 40px 40px;
4772
+ }
4773
+ .progress.active .progress-bar,
4774
+ .progress-bar.active {
4775
+ -webkit-animation: progress-bar-stripes 2s linear infinite;
4776
+ -o-animation: progress-bar-stripes 2s linear infinite;
4777
+ animation: progress-bar-stripes 2s linear infinite;
4778
+ }
4779
+ .progress-bar-success {
4780
+ background-color: #5cb85c;
4781
+ }
4782
+ .progress-striped .progress-bar-success {
4783
+ 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);
4784
+ background-image: -o-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);
4785
+ 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);
4786
+ }
4787
+ .progress-bar-info {
4788
+ background-color: #5bc0de;
4789
+ }
4790
+ .progress-striped .progress-bar-info {
4791
+ 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);
4792
+ background-image: -o-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);
4793
+ 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);
4794
+ }
4795
+ .progress-bar-warning {
4796
+ background-color: #f0ad4e;
4797
+ }
4798
+ .progress-striped .progress-bar-warning {
4799
+ 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);
4800
+ background-image: -o-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);
4801
+ 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);
4802
+ }
4803
+ .progress-bar-danger {
4804
+ background-color: #d9534f;
4805
+ }
4806
+ .progress-striped .progress-bar-danger {
4807
+ 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);
4808
+ background-image: -o-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);
4809
+ 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);
4810
+ }
4811
+ .media {
4812
+ margin-top: 15px;
4813
+ }
4814
+ .media:first-child {
4815
+ margin-top: 0;
4816
+ }
4817
+ .media,
4818
+ .media-body {
4819
+ zoom: 1;
4820
+ overflow: hidden;
4821
+ }
4822
+ .media-body {
4823
+ width: 10000px;
4824
+ }
4825
+ .media-object {
4826
+ display: block;
4827
+ }
4828
+ .media-object.img-thumbnail {
4829
+ max-width: none;
4830
+ }
4831
+ .media-right,
4832
+ .media > .pull-right {
4833
+ padding-left: 10px;
4834
+ }
4835
+ .media-left,
4836
+ .media > .pull-left {
4837
+ padding-right: 10px;
4838
+ }
4839
+ .media-left,
4840
+ .media-right,
4841
+ .media-body {
4842
+ display: table-cell;
4843
+ vertical-align: top;
4844
+ }
4845
+ .media-middle {
4846
+ vertical-align: middle;
4847
+ }
4848
+ .media-bottom {
4849
+ vertical-align: bottom;
4850
+ }
4851
+ .media-heading {
4852
+ margin-top: 0;
4853
+ margin-bottom: 5px;
4854
+ }
4855
+ .media-list {
4856
+ padding-left: 0;
4857
+ list-style: none;
4858
+ }
4859
+ .list-group {
4860
+ margin-bottom: 20px;
4861
+ padding-left: 0;
4862
+ }
4863
+ .list-group-item {
4864
+ position: relative;
4865
+ display: block;
4866
+ padding: 10px 15px;
4867
+ margin-bottom: -1px;
4868
+ background-color: #ffffff;
4869
+ border: 1px solid #dddddd;
4870
+ }
4871
+ .list-group-item:first-child {
4872
+ border-top-right-radius: 4px;
4873
+ border-top-left-radius: 4px;
4874
+ }
4875
+ .list-group-item:last-child {
4876
+ margin-bottom: 0;
4877
+ border-bottom-right-radius: 4px;
4878
+ border-bottom-left-radius: 4px;
4879
+ }
4880
+ a.list-group-item,
4881
+ button.list-group-item {
4882
+ color: #555555;
4883
+ }
4884
+ a.list-group-item .list-group-item-heading,
4885
+ button.list-group-item .list-group-item-heading {
4886
+ color: #333333;
4887
+ }
4888
+ a.list-group-item:hover,
4889
+ button.list-group-item:hover,
4890
+ a.list-group-item:focus,
4891
+ button.list-group-item:focus {
4892
+ text-decoration: none;
4893
+ color: #555555;
4894
+ background-color: #f5f5f5;
4895
+ }
4896
+ button.list-group-item {
4897
+ width: 100%;
4898
+ text-align: left;
4899
+ }
4900
+ .list-group-item.disabled,
4901
+ .list-group-item.disabled:hover,
4902
+ .list-group-item.disabled:focus {
4903
+ background-color: #eeeeee;
4904
+ color: #777777;
4905
+ cursor: not-allowed;
4906
+ }
4907
+ .list-group-item.disabled .list-group-item-heading,
4908
+ .list-group-item.disabled:hover .list-group-item-heading,
4909
+ .list-group-item.disabled:focus .list-group-item-heading {
4910
+ color: inherit;
4911
+ }
4912
+ .list-group-item.disabled .list-group-item-text,
4913
+ .list-group-item.disabled:hover .list-group-item-text,
4914
+ .list-group-item.disabled:focus .list-group-item-text {
4915
+ color: #777777;
4916
+ }
4917
+ .list-group-item.active,
4918
+ .list-group-item.active:hover,
4919
+ .list-group-item.active:focus {
4920
+ z-index: 2;
4921
+ color: #ffffff;
4922
+ background-color: #337ab7;
4923
+ border-color: #337ab7;
4924
+ }
4925
+ .list-group-item.active .list-group-item-heading,
4926
+ .list-group-item.active:hover .list-group-item-heading,
4927
+ .list-group-item.active:focus .list-group-item-heading,
4928
+ .list-group-item.active .list-group-item-heading > small,
4929
+ .list-group-item.active:hover .list-group-item-heading > small,
4930
+ .list-group-item.active:focus .list-group-item-heading > small,
4931
+ .list-group-item.active .list-group-item-heading > .small,
4932
+ .list-group-item.active:hover .list-group-item-heading > .small,
4933
+ .list-group-item.active:focus .list-group-item-heading > .small {
4934
+ color: inherit;
4935
+ }
4936
+ .list-group-item.active .list-group-item-text,
4937
+ .list-group-item.active:hover .list-group-item-text,
4938
+ .list-group-item.active:focus .list-group-item-text {
4939
+ color: #c7ddef;
4940
+ }
4941
+ .list-group-item-success {
4942
+ color: #3c763d;
4943
+ background-color: #dff0d8;
4944
+ }
4945
+ a.list-group-item-success,
4946
+ button.list-group-item-success {
4947
+ color: #3c763d;
4948
+ }
4949
+ a.list-group-item-success .list-group-item-heading,
4950
+ button.list-group-item-success .list-group-item-heading {
4951
+ color: inherit;
4952
+ }
4953
+ a.list-group-item-success:hover,
4954
+ button.list-group-item-success:hover,
4955
+ a.list-group-item-success:focus,
4956
+ button.list-group-item-success:focus {
4957
+ color: #3c763d;
4958
+ background-color: #d0e9c6;
4959
+ }
4960
+ a.list-group-item-success.active,
4961
+ button.list-group-item-success.active,
4962
+ a.list-group-item-success.active:hover,
4963
+ button.list-group-item-success.active:hover,
4964
+ a.list-group-item-success.active:focus,
4965
+ button.list-group-item-success.active:focus {
4966
+ color: #fff;
4967
+ background-color: #3c763d;
4968
+ border-color: #3c763d;
4969
+ }
4970
+ .list-group-item-info {
4971
+ color: #31708f;
4972
+ background-color: #d9edf7;
4973
+ }
4974
+ a.list-group-item-info,
4975
+ button.list-group-item-info {
4976
+ color: #31708f;
4977
+ }
4978
+ a.list-group-item-info .list-group-item-heading,
4979
+ button.list-group-item-info .list-group-item-heading {
4980
+ color: inherit;
4981
+ }
4982
+ a.list-group-item-info:hover,
4983
+ button.list-group-item-info:hover,
4984
+ a.list-group-item-info:focus,
4985
+ button.list-group-item-info:focus {
4986
+ color: #31708f;
4987
+ background-color: #c4e3f3;
4988
+ }
4989
+ a.list-group-item-info.active,
4990
+ button.list-group-item-info.active,
4991
+ a.list-group-item-info.active:hover,
4992
+ button.list-group-item-info.active:hover,
4993
+ a.list-group-item-info.active:focus,
4994
+ button.list-group-item-info.active:focus {
4995
+ color: #fff;
4996
+ background-color: #31708f;
4997
+ border-color: #31708f;
4998
+ }
4999
+ .list-group-item-warning {
5000
+ color: #8a6d3b;
5001
+ background-color: #fcf8e3;
5002
+ }
5003
+ a.list-group-item-warning,
5004
+ button.list-group-item-warning {
5005
+ color: #8a6d3b;
5006
+ }
5007
+ a.list-group-item-warning .list-group-item-heading,
5008
+ button.list-group-item-warning .list-group-item-heading {
5009
+ color: inherit;
5010
+ }
5011
+ a.list-group-item-warning:hover,
5012
+ button.list-group-item-warning:hover,
5013
+ a.list-group-item-warning:focus,
5014
+ button.list-group-item-warning:focus {
5015
+ color: #8a6d3b;
5016
+ background-color: #faf2cc;
5017
+ }
5018
+ a.list-group-item-warning.active,
5019
+ button.list-group-item-warning.active,
5020
+ a.list-group-item-warning.active:hover,
5021
+ button.list-group-item-warning.active:hover,
5022
+ a.list-group-item-warning.active:focus,
5023
+ button.list-group-item-warning.active:focus {
5024
+ color: #fff;
5025
+ background-color: #8a6d3b;
5026
+ border-color: #8a6d3b;
5027
+ }
5028
+ .list-group-item-danger {
5029
+ color: #a94442;
5030
+ background-color: #f2dede;
5031
+ }
5032
+ a.list-group-item-danger,
5033
+ button.list-group-item-danger {
5034
+ color: #a94442;
5035
+ }
5036
+ a.list-group-item-danger .list-group-item-heading,
5037
+ button.list-group-item-danger .list-group-item-heading {
5038
+ color: inherit;
5039
+ }
5040
+ a.list-group-item-danger:hover,
5041
+ button.list-group-item-danger:hover,
5042
+ a.list-group-item-danger:focus,
5043
+ button.list-group-item-danger:focus {
5044
+ color: #a94442;
5045
+ background-color: #ebcccc;
5046
+ }
5047
+ a.list-group-item-danger.active,
5048
+ button.list-group-item-danger.active,
5049
+ a.list-group-item-danger.active:hover,
5050
+ button.list-group-item-danger.active:hover,
5051
+ a.list-group-item-danger.active:focus,
5052
+ button.list-group-item-danger.active:focus {
5053
+ color: #fff;
5054
+ background-color: #a94442;
5055
+ border-color: #a94442;
5056
+ }
5057
+ .list-group-item-heading {
5058
+ margin-top: 0;
5059
+ margin-bottom: 5px;
5060
+ }
5061
+ .list-group-item-text {
5062
+ margin-bottom: 0;
5063
+ line-height: 1.3;
5064
+ }
5065
+ .panel {
5066
+ margin-bottom: 20px;
5067
+ background-color: #ffffff;
5068
+ border: 1px solid transparent;
5069
+ border-radius: 4px;
5070
+ -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
5071
+ box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
5072
+ }
5073
+ .panel-body {
5074
+ padding: 15px;
5075
+ }
5076
+ .panel-heading {
5077
+ padding: 10px 15px;
5078
+ border-bottom: 1px solid transparent;
5079
+ border-top-right-radius: 3px;
5080
+ border-top-left-radius: 3px;
5081
+ }
5082
+ .panel-heading > .dropdown .dropdown-toggle {
5083
+ color: inherit;
5084
+ }
5085
+ .panel-title {
5086
+ margin-top: 0;
5087
+ margin-bottom: 0;
5088
+ font-size: 16px;
5089
+ color: inherit;
5090
+ }
5091
+ .panel-title > a,
5092
+ .panel-title > small,
5093
+ .panel-title > .small,
5094
+ .panel-title > small > a,
5095
+ .panel-title > .small > a {
5096
+ color: inherit;
5097
+ }
5098
+ .panel-footer {
5099
+ padding: 10px 15px;
5100
+ background-color: #f5f5f5;
5101
+ border-top: 1px solid #dddddd;
5102
+ border-bottom-right-radius: 3px;
5103
+ border-bottom-left-radius: 3px;
5104
+ }
5105
+ .panel > .list-group,
5106
+ .panel > .panel-collapse > .list-group {
5107
+ margin-bottom: 0;
5108
+ }
5109
+ .panel > .list-group .list-group-item,
5110
+ .panel > .panel-collapse > .list-group .list-group-item {
5111
+ border-width: 1px 0;
5112
+ border-radius: 0;
5113
+ }
5114
+ .panel > .list-group:first-child .list-group-item:first-child,
5115
+ .panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {
5116
+ border-top: 0;
5117
+ border-top-right-radius: 3px;
5118
+ border-top-left-radius: 3px;
5119
+ }
5120
+ .panel > .list-group:last-child .list-group-item:last-child,
5121
+ .panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {
5122
+ border-bottom: 0;
5123
+ border-bottom-right-radius: 3px;
5124
+ border-bottom-left-radius: 3px;
5125
+ }
5126
+ .panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child {
5127
+ border-top-right-radius: 0;
5128
+ border-top-left-radius: 0;
5129
+ }
5130
+ .panel-heading + .list-group .list-group-item:first-child {
5131
+ border-top-width: 0;
5132
+ }
5133
+ .list-group + .panel-footer {
5134
+ border-top-width: 0;
5135
+ }
5136
+ .panel > .table,
5137
+ .panel > .table-responsive > .table,
5138
+ .panel > .panel-collapse > .table {
5139
+ margin-bottom: 0;
5140
+ }
5141
+ .panel > .table caption,
5142
+ .panel > .table-responsive > .table caption,
5143
+ .panel > .panel-collapse > .table caption {
5144
+ padding-left: 15px;
5145
+ padding-right: 15px;
5146
+ }
5147
+ .panel > .table:first-child,
5148
+ .panel > .table-responsive:first-child > .table:first-child {
5149
+ border-top-right-radius: 3px;
5150
+ border-top-left-radius: 3px;
5151
+ }
5152
+ .panel > .table:first-child > thead:first-child > tr:first-child,
5153
+ .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,
5154
+ .panel > .table:first-child > tbody:first-child > tr:first-child,
5155
+ .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {
5156
+ border-top-left-radius: 3px;
5157
+ border-top-right-radius: 3px;
5158
+ }
5159
+ .panel > .table:first-child > thead:first-child > tr:first-child td:first-child,
5160
+ .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,
5161
+ .panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,
5162
+ .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,
5163
+ .panel > .table:first-child > thead:first-child > tr:first-child th:first-child,
5164
+ .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,
5165
+ .panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,
5166
+ .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {
5167
+ border-top-left-radius: 3px;
5168
+ }
5169
+ .panel > .table:first-child > thead:first-child > tr:first-child td:last-child,
5170
+ .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,
5171
+ .panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,
5172
+ .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,
5173
+ .panel > .table:first-child > thead:first-child > tr:first-child th:last-child,
5174
+ .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,
5175
+ .panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,
5176
+ .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {
5177
+ border-top-right-radius: 3px;
5178
+ }
5179
+ .panel > .table:last-child,
5180
+ .panel > .table-responsive:last-child > .table:last-child {
5181
+ border-bottom-right-radius: 3px;
5182
+ border-bottom-left-radius: 3px;
5183
+ }
5184
+ .panel > .table:last-child > tbody:last-child > tr:last-child,
5185
+ .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,
5186
+ .panel > .table:last-child > tfoot:last-child > tr:last-child,
5187
+ .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {
5188
+ border-bottom-left-radius: 3px;
5189
+ border-bottom-right-radius: 3px;
5190
+ }
5191
+ .panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,
5192
+ .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,
5193
+ .panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
5194
+ .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
5195
+ .panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,
5196
+ .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,
5197
+ .panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,
5198
+ .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {
5199
+ border-bottom-left-radius: 3px;
5200
+ }
5201
+ .panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,
5202
+ .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,
5203
+ .panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
5204
+ .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
5205
+ .panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,
5206
+ .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,
5207
+ .panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,
5208
+ .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {
5209
+ border-bottom-right-radius: 3px;
5210
+ }
5211
+ .panel > .panel-body + .table,
5212
+ .panel > .panel-body + .table-responsive,
5213
+ .panel > .table + .panel-body,
5214
+ .panel > .table-responsive + .panel-body {
5215
+ border-top: 1px solid #dddddd;
5216
+ }
5217
+ .panel > .table > tbody:first-child > tr:first-child th,
5218
+ .panel > .table > tbody:first-child > tr:first-child td {
5219
+ border-top: 0;
5220
+ }
5221
+ .panel > .table-bordered,
5222
+ .panel > .table-responsive > .table-bordered {
5223
+ border: 0;
5224
+ }
5225
+ .panel > .table-bordered > thead > tr > th:first-child,
5226
+ .panel > .table-responsive > .table-bordered > thead > tr > th:first-child,
5227
+ .panel > .table-bordered > tbody > tr > th:first-child,
5228
+ .panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,
5229
+ .panel > .table-bordered > tfoot > tr > th:first-child,
5230
+ .panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,
5231
+ .panel > .table-bordered > thead > tr > td:first-child,
5232
+ .panel > .table-responsive > .table-bordered > thead > tr > td:first-child,
5233
+ .panel > .table-bordered > tbody > tr > td:first-child,
5234
+ .panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,
5235
+ .panel > .table-bordered > tfoot > tr > td:first-child,
5236
+ .panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {
5237
+ border-left: 0;
5238
+ }
5239
+ .panel > .table-bordered > thead > tr > th:last-child,
5240
+ .panel > .table-responsive > .table-bordered > thead > tr > th:last-child,
5241
+ .panel > .table-bordered > tbody > tr > th:last-child,
5242
+ .panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,
5243
+ .panel > .table-bordered > tfoot > tr > th:last-child,
5244
+ .panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,
5245
+ .panel > .table-bordered > thead > tr > td:last-child,
5246
+ .panel > .table-responsive > .table-bordered > thead > tr > td:last-child,
5247
+ .panel > .table-bordered > tbody > tr > td:last-child,
5248
+ .panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,
5249
+ .panel > .table-bordered > tfoot > tr > td:last-child,
5250
+ .panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {
5251
+ border-right: 0;
5252
+ }
5253
+ .panel > .table-bordered > thead > tr:first-child > td,
5254
+ .panel > .table-responsive > .table-bordered > thead > tr:first-child > td,
5255
+ .panel > .table-bordered > tbody > tr:first-child > td,
5256
+ .panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,
5257
+ .panel > .table-bordered > thead > tr:first-child > th,
5258
+ .panel > .table-responsive > .table-bordered > thead > tr:first-child > th,
5259
+ .panel > .table-bordered > tbody > tr:first-child > th,
5260
+ .panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {
5261
+ border-bottom: 0;
5262
+ }
5263
+ .panel > .table-bordered > tbody > tr:last-child > td,
5264
+ .panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,
5265
+ .panel > .table-bordered > tfoot > tr:last-child > td,
5266
+ .panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,
5267
+ .panel > .table-bordered > tbody > tr:last-child > th,
5268
+ .panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,
5269
+ .panel > .table-bordered > tfoot > tr:last-child > th,
5270
+ .panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {
5271
+ border-bottom: 0;
5272
+ }
5273
+ .panel > .table-responsive {
5274
+ border: 0;
5275
+ margin-bottom: 0;
5276
+ }
5277
+ .panel-group {
5278
+ margin-bottom: 20px;
5279
+ }
5280
+ .panel-group .panel {
5281
+ margin-bottom: 0;
5282
+ border-radius: 4px;
5283
+ }
5284
+ .panel-group .panel + .panel {
5285
+ margin-top: 5px;
5286
+ }
5287
+ .panel-group .panel-heading {
5288
+ border-bottom: 0;
5289
+ }
5290
+ .panel-group .panel-heading + .panel-collapse > .panel-body,
5291
+ .panel-group .panel-heading + .panel-collapse > .list-group {
5292
+ border-top: 1px solid #dddddd;
5293
+ }
5294
+ .panel-group .panel-footer {
5295
+ border-top: 0;
5296
+ }
5297
+ .panel-group .panel-footer + .panel-collapse .panel-body {
5298
+ border-bottom: 1px solid #dddddd;
5299
+ }
5300
+ .panel-default {
5301
+ border-color: #dddddd;
5302
+ }
5303
+ .panel-default > .panel-heading {
5304
+ color: #333333;
5305
+ background-color: #f5f5f5;
5306
+ border-color: #dddddd;
5307
+ }
5308
+ .panel-default > .panel-heading + .panel-collapse > .panel-body {
5309
+ border-top-color: #dddddd;
5310
+ }
5311
+ .panel-default > .panel-heading .badge {
5312
+ color: #f5f5f5;
5313
+ background-color: #333333;
5314
+ }
5315
+ .panel-default > .panel-footer + .panel-collapse > .panel-body {
5316
+ border-bottom-color: #dddddd;
5317
+ }
5318
+ .panel-primary {
5319
+ border-color: #337ab7;
5320
+ }
5321
+ .panel-primary > .panel-heading {
5322
+ color: #ffffff;
5323
+ background-color: #337ab7;
5324
+ border-color: #337ab7;
5325
+ }
5326
+ .panel-primary > .panel-heading + .panel-collapse > .panel-body {
5327
+ border-top-color: #337ab7;
5328
+ }
5329
+ .panel-primary > .panel-heading .badge {
5330
+ color: #337ab7;
5331
+ background-color: #ffffff;
5332
+ }
5333
+ .panel-primary > .panel-footer + .panel-collapse > .panel-body {
5334
+ border-bottom-color: #337ab7;
5335
+ }
5336
+ .panel-success {
5337
+ border-color: #d6e9c6;
5338
+ }
5339
+ .panel-success > .panel-heading {
5340
+ color: #3c763d;
5341
+ background-color: #dff0d8;
5342
+ border-color: #d6e9c6;
5343
+ }
5344
+ .panel-success > .panel-heading + .panel-collapse > .panel-body {
5345
+ border-top-color: #d6e9c6;
5346
+ }
5347
+ .panel-success > .panel-heading .badge {
5348
+ color: #dff0d8;
5349
+ background-color: #3c763d;
5350
+ }
5351
+ .panel-success > .panel-footer + .panel-collapse > .panel-body {
5352
+ border-bottom-color: #d6e9c6;
5353
+ }
5354
+ .panel-info {
5355
+ border-color: #bce8f1;
5356
+ }
5357
+ .panel-info > .panel-heading {
5358
+ color: #31708f;
5359
+ background-color: #d9edf7;
5360
+ border-color: #bce8f1;
5361
+ }
5362
+ .panel-info > .panel-heading + .panel-collapse > .panel-body {
5363
+ border-top-color: #bce8f1;
5364
+ }
5365
+ .panel-info > .panel-heading .badge {
5366
+ color: #d9edf7;
5367
+ background-color: #31708f;
5368
+ }
5369
+ .panel-info > .panel-footer + .panel-collapse > .panel-body {
5370
+ border-bottom-color: #bce8f1;
5371
+ }
5372
+ .panel-warning {
5373
+ border-color: #faebcc;
5374
+ }
5375
+ .panel-warning > .panel-heading {
5376
+ color: #8a6d3b;
5377
+ background-color: #fcf8e3;
5378
+ border-color: #faebcc;
5379
+ }
5380
+ .panel-warning > .panel-heading + .panel-collapse > .panel-body {
5381
+ border-top-color: #faebcc;
5382
+ }
5383
+ .panel-warning > .panel-heading .badge {
5384
+ color: #fcf8e3;
5385
+ background-color: #8a6d3b;
5386
+ }
5387
+ .panel-warning > .panel-footer + .panel-collapse > .panel-body {
5388
+ border-bottom-color: #faebcc;
5389
+ }
5390
+ .panel-danger {
5391
+ border-color: #ebccd1;
5392
+ }
5393
+ .panel-danger > .panel-heading {
5394
+ color: #a94442;
5395
+ background-color: #f2dede;
5396
+ border-color: #ebccd1;
5397
+ }
5398
+ .panel-danger > .panel-heading + .panel-collapse > .panel-body {
5399
+ border-top-color: #ebccd1;
5400
+ }
5401
+ .panel-danger > .panel-heading .badge {
5402
+ color: #f2dede;
5403
+ background-color: #a94442;
5404
+ }
5405
+ .panel-danger > .panel-footer + .panel-collapse > .panel-body {
5406
+ border-bottom-color: #ebccd1;
5407
+ }
5408
+ .embed-responsive {
5409
+ position: relative;
5410
+ display: block;
5411
+ height: 0;
5412
+ padding: 0;
5413
+ overflow: hidden;
5414
+ }
5415
+ .embed-responsive .embed-responsive-item,
5416
+ .embed-responsive iframe,
5417
+ .embed-responsive embed,
5418
+ .embed-responsive object,
5419
+ .embed-responsive video {
5420
+ position: absolute;
5421
+ top: 0;
5422
+ left: 0;
5423
+ bottom: 0;
5424
+ height: 100%;
5425
+ width: 100%;
5426
+ border: 0;
5427
+ }
5428
+ .embed-responsive-16by9 {
5429
+ padding-bottom: 56.25%;
5430
+ }
5431
+ .embed-responsive-4by3 {
5432
+ padding-bottom: 75%;
5433
+ }
5434
+ .well {
5435
+ min-height: 20px;
5436
+ padding: 19px;
5437
+ margin-bottom: 20px;
5438
+ background-color: #f5f5f5;
5439
+ border: 1px solid #e3e3e3;
5440
+ border-radius: 4px;
5441
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
5442
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
5443
+ }
5444
+ .well blockquote {
5445
+ border-color: #ddd;
5446
+ border-color: rgba(0, 0, 0, 0.15);
5447
+ }
5448
+ .well-lg {
5449
+ padding: 24px;
5450
+ border-radius: 6px;
5451
+ }
5452
+ .well-sm {
5453
+ padding: 9px;
5454
+ border-radius: 3px;
5455
+ }
5456
+ .close {
5457
+ float: right;
5458
+ font-size: 21px;
5459
+ font-weight: bold;
5460
+ line-height: 1;
5461
+ color: #000000;
5462
+ text-shadow: 0 1px 0 #ffffff;
5463
+ opacity: 0.2;
5464
+ filter: alpha(opacity=20);
5465
+ }
5466
+ .close:hover,
5467
+ .close:focus {
5468
+ color: #000000;
5469
+ text-decoration: none;
5470
+ cursor: pointer;
5471
+ opacity: 0.5;
5472
+ filter: alpha(opacity=50);
5473
+ }
5474
+ button.close {
5475
+ padding: 0;
5476
+ cursor: pointer;
5477
+ background: transparent;
5478
+ border: 0;
5479
+ -webkit-appearance: none;
5480
+ }
5481
+ .modal-open {
5482
+ overflow: hidden;
5483
+ }
5484
+ .modal {
5485
+ display: none;
5486
+ overflow: hidden;
5487
+ position: fixed;
5488
+ top: 0;
5489
+ right: 0;
5490
+ bottom: 0;
5491
+ left: 0;
5492
+ z-index: 1050;
5493
+ -webkit-overflow-scrolling: touch;
5494
+ outline: 0;
5495
+ }
5496
+ .modal.fade .modal-dialog {
5497
+ -webkit-transform: translate(0, -25%);
5498
+ -ms-transform: translate(0, -25%);
5499
+ -o-transform: translate(0, -25%);
5500
+ transform: translate(0, -25%);
5501
+ -webkit-transition: -webkit-transform 0.3s ease-out;
5502
+ -o-transition: -o-transform 0.3s ease-out;
5503
+ transition: transform 0.3s ease-out;
5504
+ }
5505
+ .modal.in .modal-dialog {
5506
+ -webkit-transform: translate(0, 0);
5507
+ -ms-transform: translate(0, 0);
5508
+ -o-transform: translate(0, 0);
5509
+ transform: translate(0, 0);
5510
+ }
5511
+ .modal-open .modal {
5512
+ overflow-x: hidden;
5513
+ overflow-y: auto;
5514
+ }
5515
+ .modal-dialog {
5516
+ position: relative;
5517
+ width: auto;
5518
+ margin: 10px;
5519
+ }
5520
+ .modal-content {
5521
+ position: relative;
5522
+ background-color: #ffffff;
5523
+ border: 1px solid #999999;
5524
+ border: 1px solid rgba(0, 0, 0, 0.2);
5525
+ border-radius: 6px;
5526
+ -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
5527
+ box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
5528
+ -webkit-background-clip: padding-box;
5529
+ background-clip: padding-box;
5530
+ outline: 0;
5531
+ }
5532
+ .modal-backdrop {
5533
+ position: fixed;
5534
+ top: 0;
5535
+ right: 0;
5536
+ bottom: 0;
5537
+ left: 0;
5538
+ z-index: 1040;
5539
+ background-color: #000000;
5540
+ }
5541
+ .modal-backdrop.fade {
5542
+ opacity: 0;
5543
+ filter: alpha(opacity=0);
5544
+ }
5545
+ .modal-backdrop.in {
5546
+ opacity: 0.5;
5547
+ filter: alpha(opacity=50);
5548
+ }
5549
+ .modal-header {
5550
+ padding: 15px;
5551
+ border-bottom: 1px solid #e5e5e5;
5552
+ }
5553
+ .modal-header .close {
5554
+ margin-top: -2px;
5555
+ }
5556
+ .modal-title {
5557
+ margin: 0;
5558
+ line-height: 1.42857143;
5559
+ }
5560
+ .modal-body {
5561
+ position: relative;
5562
+ padding: 15px;
5563
+ }
5564
+ .modal-footer {
5565
+ padding: 15px;
5566
+ text-align: right;
5567
+ border-top: 1px solid #e5e5e5;
5568
+ }
5569
+ .modal-footer .btn + .btn {
5570
+ margin-left: 5px;
5571
+ margin-bottom: 0;
5572
+ }
5573
+ .modal-footer .btn-group .btn + .btn {
5574
+ margin-left: -1px;
5575
+ }
5576
+ .modal-footer .btn-block + .btn-block {
5577
+ margin-left: 0;
5578
+ }
5579
+ .modal-scrollbar-measure {
5580
+ position: absolute;
5581
+ top: -9999px;
5582
+ width: 50px;
5583
+ height: 50px;
5584
+ overflow: scroll;
5585
+ }
5586
+ @media (min-width: 768px) {
5587
+ .modal-dialog {
5588
+ width: 600px;
5589
+ margin: 30px auto;
5590
+ }
5591
+ .modal-content {
5592
+ -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
5593
+ box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
5594
+ }
5595
+ .modal-sm {
5596
+ width: 300px;
5597
+ }
5598
+ }
5599
+ @media (min-width: 992px) {
5600
+ .modal-lg {
5601
+ width: 900px;
5602
+ }
5603
+ }
5604
+ .tooltip {
5605
+ position: absolute;
5606
+ z-index: 1070;
5607
+ display: block;
5608
+ font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
5609
+ font-style: normal;
5610
+ font-weight: normal;
5611
+ letter-spacing: normal;
5612
+ line-break: auto;
5613
+ line-height: 1.42857143;
5614
+ text-align: left;
5615
+ text-align: start;
5616
+ text-decoration: none;
5617
+ text-shadow: none;
5618
+ text-transform: none;
5619
+ white-space: normal;
5620
+ word-break: normal;
5621
+ word-spacing: normal;
5622
+ word-wrap: normal;
5623
+ font-size: 12px;
5624
+ opacity: 0;
5625
+ filter: alpha(opacity=0);
5626
+ }
5627
+ .tooltip.in {
5628
+ opacity: 0.9;
5629
+ filter: alpha(opacity=90);
5630
+ }
5631
+ .tooltip.top {
5632
+ margin-top: -3px;
5633
+ padding: 5px 0;
5634
+ }
5635
+ .tooltip.right {
5636
+ margin-left: 3px;
5637
+ padding: 0 5px;
5638
+ }
5639
+ .tooltip.bottom {
5640
+ margin-top: 3px;
5641
+ padding: 5px 0;
5642
+ }
5643
+ .tooltip.left {
5644
+ margin-left: -3px;
5645
+ padding: 0 5px;
5646
+ }
5647
+ .tooltip-inner {
5648
+ max-width: 200px;
5649
+ padding: 3px 8px;
5650
+ color: #ffffff;
5651
+ text-align: center;
5652
+ background-color: #000000;
5653
+ border-radius: 4px;
5654
+ }
5655
+ .tooltip-arrow {
5656
+ position: absolute;
5657
+ width: 0;
5658
+ height: 0;
5659
+ border-color: transparent;
5660
+ border-style: solid;
5661
+ }
5662
+ .tooltip.top .tooltip-arrow {
5663
+ bottom: 0;
5664
+ left: 50%;
5665
+ margin-left: -5px;
5666
+ border-width: 5px 5px 0;
5667
+ border-top-color: #000000;
5668
+ }
5669
+ .tooltip.top-left .tooltip-arrow {
5670
+ bottom: 0;
5671
+ right: 5px;
5672
+ margin-bottom: -5px;
5673
+ border-width: 5px 5px 0;
5674
+ border-top-color: #000000;
5675
+ }
5676
+ .tooltip.top-right .tooltip-arrow {
5677
+ bottom: 0;
5678
+ left: 5px;
5679
+ margin-bottom: -5px;
5680
+ border-width: 5px 5px 0;
5681
+ border-top-color: #000000;
5682
+ }
5683
+ .tooltip.right .tooltip-arrow {
5684
+ top: 50%;
5685
+ left: 0;
5686
+ margin-top: -5px;
5687
+ border-width: 5px 5px 5px 0;
5688
+ border-right-color: #000000;
5689
+ }
5690
+ .tooltip.left .tooltip-arrow {
5691
+ top: 50%;
5692
+ right: 0;
5693
+ margin-top: -5px;
5694
+ border-width: 5px 0 5px 5px;
5695
+ border-left-color: #000000;
5696
+ }
5697
+ .tooltip.bottom .tooltip-arrow {
5698
+ top: 0;
5699
+ left: 50%;
5700
+ margin-left: -5px;
5701
+ border-width: 0 5px 5px;
5702
+ border-bottom-color: #000000;
5703
+ }
5704
+ .tooltip.bottom-left .tooltip-arrow {
5705
+ top: 0;
5706
+ right: 5px;
5707
+ margin-top: -5px;
5708
+ border-width: 0 5px 5px;
5709
+ border-bottom-color: #000000;
5710
+ }
5711
+ .tooltip.bottom-right .tooltip-arrow {
5712
+ top: 0;
5713
+ left: 5px;
5714
+ margin-top: -5px;
5715
+ border-width: 0 5px 5px;
5716
+ border-bottom-color: #000000;
5717
+ }
5718
+ .popover {
5719
+ position: absolute;
5720
+ top: 0;
5721
+ left: 0;
5722
+ z-index: 1060;
5723
+ display: none;
5724
+ max-width: 276px;
5725
+ padding: 1px;
5726
+ font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
5727
+ font-style: normal;
5728
+ font-weight: normal;
5729
+ letter-spacing: normal;
5730
+ line-break: auto;
5731
+ line-height: 1.42857143;
5732
+ text-align: left;
5733
+ text-align: start;
5734
+ text-decoration: none;
5735
+ text-shadow: none;
5736
+ text-transform: none;
5737
+ white-space: normal;
5738
+ word-break: normal;
5739
+ word-spacing: normal;
5740
+ word-wrap: normal;
5741
+ font-size: 14px;
5742
+ background-color: #ffffff;
5743
+ -webkit-background-clip: padding-box;
5744
+ background-clip: padding-box;
5745
+ border: 1px solid #cccccc;
5746
+ border: 1px solid rgba(0, 0, 0, 0.2);
5747
+ border-radius: 6px;
5748
+ -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
5749
+ box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
5750
+ }
5751
+ .popover.top {
5752
+ margin-top: -10px;
5753
+ }
5754
+ .popover.right {
5755
+ margin-left: 10px;
5756
+ }
5757
+ .popover.bottom {
5758
+ margin-top: 10px;
5759
+ }
5760
+ .popover.left {
5761
+ margin-left: -10px;
5762
+ }
5763
+ .popover-title {
5764
+ margin: 0;
5765
+ padding: 8px 14px;
5766
+ font-size: 14px;
5767
+ background-color: #f7f7f7;
5768
+ border-bottom: 1px solid #ebebeb;
5769
+ border-radius: 5px 5px 0 0;
5770
+ }
5771
+ .popover-content {
5772
+ padding: 9px 14px;
5773
+ }
5774
+ .popover > .arrow,
5775
+ .popover > .arrow:after {
5776
+ position: absolute;
5777
+ display: block;
5778
+ width: 0;
5779
+ height: 0;
5780
+ border-color: transparent;
5781
+ border-style: solid;
5782
+ }
5783
+ .popover > .arrow {
5784
+ border-width: 11px;
5785
+ }
5786
+ .popover > .arrow:after {
5787
+ border-width: 10px;
5788
+ content: "";
5789
+ }
5790
+ .popover.top > .arrow {
5791
+ left: 50%;
5792
+ margin-left: -11px;
5793
+ border-bottom-width: 0;
5794
+ border-top-color: #999999;
5795
+ border-top-color: rgba(0, 0, 0, 0.25);
5796
+ bottom: -11px;
5797
+ }
5798
+ .popover.top > .arrow:after {
5799
+ content: " ";
5800
+ bottom: 1px;
5801
+ margin-left: -10px;
5802
+ border-bottom-width: 0;
5803
+ border-top-color: #ffffff;
5804
+ }
5805
+ .popover.right > .arrow {
5806
+ top: 50%;
5807
+ left: -11px;
5808
+ margin-top: -11px;
5809
+ border-left-width: 0;
5810
+ border-right-color: #999999;
5811
+ border-right-color: rgba(0, 0, 0, 0.25);
5812
+ }
5813
+ .popover.right > .arrow:after {
5814
+ content: " ";
5815
+ left: 1px;
5816
+ bottom: -10px;
5817
+ border-left-width: 0;
5818
+ border-right-color: #ffffff;
5819
+ }
5820
+ .popover.bottom > .arrow {
5821
+ left: 50%;
5822
+ margin-left: -11px;
5823
+ border-top-width: 0;
5824
+ border-bottom-color: #999999;
5825
+ border-bottom-color: rgba(0, 0, 0, 0.25);
5826
+ top: -11px;
5827
+ }
5828
+ .popover.bottom > .arrow:after {
5829
+ content: " ";
5830
+ top: 1px;
5831
+ margin-left: -10px;
5832
+ border-top-width: 0;
5833
+ border-bottom-color: #ffffff;
5834
+ }
5835
+ .popover.left > .arrow {
5836
+ top: 50%;
5837
+ right: -11px;
5838
+ margin-top: -11px;
5839
+ border-right-width: 0;
5840
+ border-left-color: #999999;
5841
+ border-left-color: rgba(0, 0, 0, 0.25);
5842
+ }
5843
+ .popover.left > .arrow:after {
5844
+ content: " ";
5845
+ right: 1px;
5846
+ border-right-width: 0;
5847
+ border-left-color: #ffffff;
5848
+ bottom: -10px;
5849
+ }
5850
+ .carousel {
5851
+ position: relative;
5852
+ }
5853
+ .carousel-inner {
5854
+ position: relative;
5855
+ overflow: hidden;
5856
+ width: 100%;
5857
+ }
5858
+ .carousel-inner > .item {
5859
+ display: none;
5860
+ position: relative;
5861
+ -webkit-transition: 0.6s ease-in-out left;
5862
+ -o-transition: 0.6s ease-in-out left;
5863
+ transition: 0.6s ease-in-out left;
5864
+ }
5865
+ .carousel-inner > .item > img,
5866
+ .carousel-inner > .item > a > img {
5867
+ line-height: 1;
5868
+ }
5869
+ @media all and (transform-3d), (-webkit-transform-3d) {
5870
+ .carousel-inner > .item {
5871
+ -webkit-transition: -webkit-transform 0.6s ease-in-out;
5872
+ -o-transition: -o-transform 0.6s ease-in-out;
5873
+ transition: transform 0.6s ease-in-out;
5874
+ -webkit-backface-visibility: hidden;
5875
+ backface-visibility: hidden;
5876
+ -webkit-perspective: 1000px;
5877
+ perspective: 1000px;
5878
+ }
5879
+ .carousel-inner > .item.next,
5880
+ .carousel-inner > .item.active.right {
5881
+ -webkit-transform: translate3d(100%, 0, 0);
5882
+ transform: translate3d(100%, 0, 0);
5883
+ left: 0;
5884
+ }
5885
+ .carousel-inner > .item.prev,
5886
+ .carousel-inner > .item.active.left {
5887
+ -webkit-transform: translate3d(-100%, 0, 0);
5888
+ transform: translate3d(-100%, 0, 0);
5889
+ left: 0;
5890
+ }
5891
+ .carousel-inner > .item.next.left,
5892
+ .carousel-inner > .item.prev.right,
5893
+ .carousel-inner > .item.active {
5894
+ -webkit-transform: translate3d(0, 0, 0);
5895
+ transform: translate3d(0, 0, 0);
5896
+ left: 0;
5897
+ }
5898
+ }
5899
+ .carousel-inner > .active,
5900
+ .carousel-inner > .next,
5901
+ .carousel-inner > .prev {
5902
+ display: block;
5903
+ }
5904
+ .carousel-inner > .active {
5905
+ left: 0;
5906
+ }
5907
+ .carousel-inner > .next,
5908
+ .carousel-inner > .prev {
5909
+ position: absolute;
5910
+ top: 0;
5911
+ width: 100%;
5912
+ }
5913
+ .carousel-inner > .next {
5914
+ left: 100%;
5915
+ }
5916
+ .carousel-inner > .prev {
5917
+ left: -100%;
5918
+ }
5919
+ .carousel-inner > .next.left,
5920
+ .carousel-inner > .prev.right {
5921
+ left: 0;
5922
+ }
5923
+ .carousel-inner > .active.left {
5924
+ left: -100%;
5925
+ }
5926
+ .carousel-inner > .active.right {
5927
+ left: 100%;
5928
+ }
5929
+ .carousel-control {
5930
+ position: absolute;
5931
+ top: 0;
5932
+ left: 0;
5933
+ bottom: 0;
5934
+ width: 15%;
5935
+ opacity: 0.5;
5936
+ filter: alpha(opacity=50);
5937
+ font-size: 20px;
5938
+ color: #ffffff;
5939
+ text-align: center;
5940
+ text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
5941
+ background-color: rgba(0, 0, 0, 0);
5942
+ }
5943
+ .carousel-control.left {
5944
+ background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
5945
+ background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
5946
+ background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, 0.5)), to(rgba(0, 0, 0, 0.0001)));
5947
+ background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
5948
+ background-repeat: repeat-x;
5949
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);
5950
+ }
5951
+ .carousel-control.right {
5952
+ left: auto;
5953
+ right: 0;
5954
+ background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
5955
+ background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
5956
+ background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, 0.0001)), to(rgba(0, 0, 0, 0.5)));
5957
+ background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
5958
+ background-repeat: repeat-x;
5959
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);
5960
+ }
5961
+ .carousel-control:hover,
5962
+ .carousel-control:focus {
5963
+ outline: 0;
5964
+ color: #ffffff;
5965
+ text-decoration: none;
5966
+ opacity: 0.9;
5967
+ filter: alpha(opacity=90);
5968
+ }
5969
+ .carousel-control .icon-prev,
5970
+ .carousel-control .icon-next,
5971
+ .carousel-control .glyphicon-chevron-left,
5972
+ .carousel-control .glyphicon-chevron-right {
5973
+ position: absolute;
5974
+ top: 50%;
5975
+ margin-top: -10px;
5976
+ z-index: 5;
5977
+ display: inline-block;
5978
+ }
5979
+ .carousel-control .icon-prev,
5980
+ .carousel-control .glyphicon-chevron-left {
5981
+ left: 50%;
5982
+ margin-left: -10px;
5983
+ }
5984
+ .carousel-control .icon-next,
5985
+ .carousel-control .glyphicon-chevron-right {
5986
+ right: 50%;
5987
+ margin-right: -10px;
5988
+ }
5989
+ .carousel-control .icon-prev,
5990
+ .carousel-control .icon-next {
5991
+ width: 20px;
5992
+ height: 20px;
5993
+ line-height: 1;
5994
+ font-family: serif;
5995
+ }
5996
+ .carousel-control .icon-prev:before {
5997
+ content: '\2039';
5998
+ }
5999
+ .carousel-control .icon-next:before {
6000
+ content: '\203a';
6001
+ }
6002
+ .carousel-indicators {
6003
+ position: absolute;
6004
+ bottom: 10px;
6005
+ left: 50%;
6006
+ z-index: 15;
6007
+ width: 60%;
6008
+ margin-left: -30%;
6009
+ padding-left: 0;
6010
+ list-style: none;
6011
+ text-align: center;
6012
+ }
6013
+ .carousel-indicators li {
6014
+ display: inline-block;
6015
+ width: 10px;
6016
+ height: 10px;
6017
+ margin: 1px;
6018
+ text-indent: -999px;
6019
+ border: 1px solid #ffffff;
6020
+ border-radius: 10px;
6021
+ cursor: pointer;
6022
+ background-color: #000 \9;
6023
+ background-color: rgba(0, 0, 0, 0);
6024
+ }
6025
+ .carousel-indicators .active {
6026
+ margin: 0;
6027
+ width: 12px;
6028
+ height: 12px;
6029
+ background-color: #ffffff;
6030
+ }
6031
+ .carousel-caption {
6032
+ position: absolute;
6033
+ left: 15%;
6034
+ right: 15%;
6035
+ bottom: 20px;
6036
+ z-index: 10;
6037
+ padding-top: 20px;
6038
+ padding-bottom: 20px;
6039
+ color: #ffffff;
6040
+ text-align: center;
6041
+ text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
6042
+ }
6043
+ .carousel-caption .btn {
6044
+ text-shadow: none;
6045
+ }
6046
+ @media screen and (min-width: 768px) {
6047
+ .carousel-control .glyphicon-chevron-left,
6048
+ .carousel-control .glyphicon-chevron-right,
6049
+ .carousel-control .icon-prev,
6050
+ .carousel-control .icon-next {
6051
+ width: 30px;
6052
+ height: 30px;
6053
+ margin-top: -10px;
6054
+ font-size: 30px;
6055
+ }
6056
+ .carousel-control .glyphicon-chevron-left,
6057
+ .carousel-control .icon-prev {
6058
+ margin-left: -10px;
6059
+ }
6060
+ .carousel-control .glyphicon-chevron-right,
6061
+ .carousel-control .icon-next {
6062
+ margin-right: -10px;
6063
+ }
6064
+ .carousel-caption {
6065
+ left: 20%;
6066
+ right: 20%;
6067
+ padding-bottom: 30px;
6068
+ }
6069
+ .carousel-indicators {
6070
+ bottom: 20px;
6071
+ }
6072
+ }
6073
+ .clearfix:before,
6074
+ .clearfix:after,
6075
+ .container:before,
6076
+ .container:after,
6077
+ .container-fluid:before,
6078
+ .container-fluid:after,
6079
+ .row:before,
6080
+ .row:after,
6081
+ .form-horizontal .form-group:before,
6082
+ .form-horizontal .form-group:after,
6083
+ .btn-toolbar:before,
6084
+ .btn-toolbar:after,
6085
+ .btn-group-vertical > .btn-group:before,
6086
+ .btn-group-vertical > .btn-group:after,
6087
+ .nav:before,
6088
+ .nav:after,
6089
+ .navbar:before,
6090
+ .navbar:after,
6091
+ .navbar-header:before,
6092
+ .navbar-header:after,
6093
+ .navbar-collapse:before,
6094
+ .navbar-collapse:after,
6095
+ .pager:before,
6096
+ .pager:after,
6097
+ .panel-body:before,
6098
+ .panel-body:after,
6099
+ .modal-header:before,
6100
+ .modal-header:after,
6101
+ .modal-footer:before,
6102
+ .modal-footer:after {
6103
+ content: " ";
6104
+ display: table;
6105
+ }
6106
+ .clearfix:after,
6107
+ .container:after,
6108
+ .container-fluid:after,
6109
+ .row:after,
6110
+ .form-horizontal .form-group:after,
6111
+ .btn-toolbar:after,
6112
+ .btn-group-vertical > .btn-group:after,
6113
+ .nav:after,
6114
+ .navbar:after,
6115
+ .navbar-header:after,
6116
+ .navbar-collapse:after,
6117
+ .pager:after,
6118
+ .panel-body:after,
6119
+ .modal-header:after,
6120
+ .modal-footer:after {
6121
+ clear: both;
6122
+ }
6123
+ .center-block {
6124
+ display: block;
6125
+ margin-left: auto;
6126
+ margin-right: auto;
6127
+ }
6128
+ .pull-right {
6129
+ float: right !important;
6130
+ }
6131
+ .pull-left {
6132
+ float: left !important;
6133
+ }
6134
+ .hide {
6135
+ display: none !important;
6136
+ }
6137
+ .show {
6138
+ display: block !important;
6139
+ }
6140
+ .invisible {
6141
+ visibility: hidden;
6142
+ }
6143
+ .text-hide {
6144
+ font: 0/0 a;
6145
+ color: transparent;
6146
+ text-shadow: none;
6147
+ background-color: transparent;
6148
+ border: 0;
6149
+ }
6150
+ .hidden {
6151
+ display: none !important;
6152
+ }
6153
+ .affix {
6154
+ position: fixed;
6155
+ }
6156
+ @-ms-viewport {
6157
+ width: device-width;
6158
+ }
6159
+ .visible-xs,
6160
+ .visible-sm,
6161
+ .visible-md,
6162
+ .visible-lg {
6163
+ display: none !important;
6164
+ }
6165
+ .visible-xs-block,
6166
+ .visible-xs-inline,
6167
+ .visible-xs-inline-block,
6168
+ .visible-sm-block,
6169
+ .visible-sm-inline,
6170
+ .visible-sm-inline-block,
6171
+ .visible-md-block,
6172
+ .visible-md-inline,
6173
+ .visible-md-inline-block,
6174
+ .visible-lg-block,
6175
+ .visible-lg-inline,
6176
+ .visible-lg-inline-block {
6177
+ display: none !important;
6178
+ }
6179
+ @media (max-width: 767px) {
6180
+ .visible-xs {
6181
+ display: block !important;
6182
+ }
6183
+ table.visible-xs {
6184
+ display: table !important;
6185
+ }
6186
+ tr.visible-xs {
6187
+ display: table-row !important;
6188
+ }
6189
+ th.visible-xs,
6190
+ td.visible-xs {
6191
+ display: table-cell !important;
6192
+ }
6193
+ }
6194
+ @media (max-width: 767px) {
6195
+ .visible-xs-block {
6196
+ display: block !important;
6197
+ }
6198
+ }
6199
+ @media (max-width: 767px) {
6200
+ .visible-xs-inline {
6201
+ display: inline !important;
6202
+ }
6203
+ }
6204
+ @media (max-width: 767px) {
6205
+ .visible-xs-inline-block {
6206
+ display: inline-block !important;
6207
+ }
6208
+ }
6209
+ @media (min-width: 768px) and (max-width: 991px) {
6210
+ .visible-sm {
6211
+ display: block !important;
6212
+ }
6213
+ table.visible-sm {
6214
+ display: table !important;
6215
+ }
6216
+ tr.visible-sm {
6217
+ display: table-row !important;
6218
+ }
6219
+ th.visible-sm,
6220
+ td.visible-sm {
6221
+ display: table-cell !important;
6222
+ }
6223
+ }
6224
+ @media (min-width: 768px) and (max-width: 991px) {
6225
+ .visible-sm-block {
6226
+ display: block !important;
6227
+ }
6228
+ }
6229
+ @media (min-width: 768px) and (max-width: 991px) {
6230
+ .visible-sm-inline {
6231
+ display: inline !important;
6232
+ }
6233
+ }
6234
+ @media (min-width: 768px) and (max-width: 991px) {
6235
+ .visible-sm-inline-block {
6236
+ display: inline-block !important;
6237
+ }
6238
+ }
6239
+ @media (min-width: 992px) and (max-width: 1199px) {
6240
+ .visible-md {
6241
+ display: block !important;
6242
+ }
6243
+ table.visible-md {
6244
+ display: table !important;
6245
+ }
6246
+ tr.visible-md {
6247
+ display: table-row !important;
6248
+ }
6249
+ th.visible-md,
6250
+ td.visible-md {
6251
+ display: table-cell !important;
6252
+ }
6253
+ }
6254
+ @media (min-width: 992px) and (max-width: 1199px) {
6255
+ .visible-md-block {
6256
+ display: block !important;
6257
+ }
6258
+ }
6259
+ @media (min-width: 992px) and (max-width: 1199px) {
6260
+ .visible-md-inline {
6261
+ display: inline !important;
6262
+ }
6263
+ }
6264
+ @media (min-width: 992px) and (max-width: 1199px) {
6265
+ .visible-md-inline-block {
6266
+ display: inline-block !important;
6267
+ }
6268
+ }
6269
+ @media (min-width: 1200px) {
6270
+ .visible-lg {
6271
+ display: block !important;
6272
+ }
6273
+ table.visible-lg {
6274
+ display: table !important;
6275
+ }
6276
+ tr.visible-lg {
6277
+ display: table-row !important;
6278
+ }
6279
+ th.visible-lg,
6280
+ td.visible-lg {
6281
+ display: table-cell !important;
6282
+ }
6283
+ }
6284
+ @media (min-width: 1200px) {
6285
+ .visible-lg-block {
6286
+ display: block !important;
6287
+ }
6288
+ }
6289
+ @media (min-width: 1200px) {
6290
+ .visible-lg-inline {
6291
+ display: inline !important;
6292
+ }
6293
+ }
6294
+ @media (min-width: 1200px) {
6295
+ .visible-lg-inline-block {
6296
+ display: inline-block !important;
6297
+ }
6298
+ }
6299
+ @media (max-width: 767px) {
6300
+ .hidden-xs {
6301
+ display: none !important;
6302
+ }
6303
+ }
6304
+ @media (min-width: 768px) and (max-width: 991px) {
6305
+ .hidden-sm {
6306
+ display: none !important;
6307
+ }
6308
+ }
6309
+ @media (min-width: 992px) and (max-width: 1199px) {
6310
+ .hidden-md {
6311
+ display: none !important;
6312
+ }
6313
+ }
6314
+ @media (min-width: 1200px) {
6315
+ .hidden-lg {
6316
+ display: none !important;
6317
+ }
6318
+ }
6319
+ .visible-print {
6320
+ display: none !important;
6321
+ }
6322
+ @media print {
6323
+ .visible-print {
6324
+ display: block !important;
6325
+ }
6326
+ table.visible-print {
6327
+ display: table !important;
6328
+ }
6329
+ tr.visible-print {
6330
+ display: table-row !important;
6331
+ }
6332
+ th.visible-print,
6333
+ td.visible-print {
6334
+ display: table-cell !important;
6335
+ }
6336
+ }
6337
+ .visible-print-block {
6338
+ display: none !important;
6339
+ }
6340
+ @media print {
6341
+ .visible-print-block {
6342
+ display: block !important;
6343
+ }
6344
+ }
6345
+ .visible-print-inline {
6346
+ display: none !important;
6347
+ }
6348
+ @media print {
6349
+ .visible-print-inline {
6350
+ display: inline !important;
6351
+ }
6352
+ }
6353
+ .visible-print-inline-block {
6354
+ display: none !important;
6355
+ }
6356
+ @media print {
6357
+ .visible-print-inline-block {
6358
+ display: inline-block !important;
6359
+ }
6360
+ }
6361
+ @media print {
6362
+ .hidden-print {
6363
+ display: none !important;
6364
+ }
6365
+ }
library/toolset/toolset-common/res/lib/bootstrap/css/bootstrap.min.css ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*!
2
+ * Bootstrap v3.3.7 (http://getbootstrap.com)
3
+ * Copyright 2011-2016 Twitter, Inc.
4
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
5
+ */
6
+
7
+ /*!
8
+ * Generated using the Bootstrap Customizer (http://getbootstrap.com/customize/?id=39f56dbee4e4db91437f384b1dcd27f0)
9
+ * Config saved to config.json and https://gist.github.com/39f56dbee4e4db91437f384b1dcd27f0
10
+ *//*!
11
+ * Bootstrap v3.3.7 (http://getbootstrap.com)
12
+ * Copyright 2011-2016 Twitter, Inc.
13
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
14
+ *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,*:before,*:after{background:transparent !important;color:#000 !important;-webkit-box-shadow:none !important;box-shadow:none !important;text-shadow:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]: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}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000 !important}.label{border:1px solid #000}.table{border-collapse:collapse !important}.table td,.table th{background-color:#fff !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}@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.woff2') format('woff2'),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';font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-euro:before,.glyphicon-eur: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-lock:before{content:"\e033"}.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-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.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-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.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-bell:before{content:"\e123"}.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-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.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-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:hover,a:focus{color:#23527c;text-decoration:underline}a:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.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;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role="button"]{cursor:pointer}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25)}kbd kbd{padding:0;font-size:100%;font-weight:bold;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;word-break:break-all;word-wrap:break-word;color:#333;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.row{margin-left:-15px;margin-right:-15px}.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right: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, .col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.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{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.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{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.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{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-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.42857143;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-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*="col-"]{position:static;float:none;display:table-column}table td[class*="col-"],table th[class*="col-"]{position:static;float:none;display:table-cell}.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-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.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}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.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}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.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}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}.table-responsive{overflow-x:auto;min-height:0.01%}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.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>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.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;min-width: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;max-width:100%;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}input[type="range"]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;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, -webkit-box-shadow ease-in-out .15s;-o-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,.075), 0 0 8px rgba(102, 175, 233, 0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control::-ms-expand{border:0;background-color:transparent}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type="search"]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type="date"].form-control,input[type="time"].form-control,input[type="datetime-local"].form-control,input[type="month"].form-control{line-height:34px}input[type="date"].input-sm,input[type="time"].input-sm,input[type="datetime-local"].input-sm,input[type="month"].input-sm,.input-group-sm input[type="date"],.input-group-sm input[type="time"],.input-group-sm input[type="datetime-local"],.input-group-sm input[type="month"]{line-height:30px}input[type="date"].input-lg,input[type="time"].input-lg,input[type="datetime-local"].input-lg,input[type="month"].input-lg,.input-group-lg input[type="date"],.input-group-lg input[type="time"],.input-group-lg input[type="datetime-local"],.input-group-lg input[type="month"]{line-height:46px}}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{min-height:20px;padding-left:20px;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"]{position:absolute;margin-left:-20px;margin-top:4px \9}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"].disabled,input[type="checkbox"].disabled,fieldset[disabled] input[type="radio"],fieldset[disabled] input[type="checkbox"]{cursor:not-allowed}.radio-inline.disabled,.checkbox-inline.disabled,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,.checkbox.disabled label,fieldset[disabled] .radio label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:7px;padding-bottom:7px;margin-bottom:0;min-height:34px}.form-control-static.input-lg,.form-control-static.input-sm{padding-left:0;padding-right:0}.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,select[multiple].input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm textarea.form-control,.form-group-sm select[multiple].form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:46px;line-height:46px}textarea.input-lg,select[multiple].input-lg{height:auto}.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg textarea.form-control,.form-group-lg select[multiple].form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.input-lg+.form-control-feedback,.input-group-lg+.form-control-feedback,.form-group-lg .form-control+.form-control-feedback{width:46px;height:46px;line-height:46px}.input-sm+.form-control-feedback,.input-group-sm+.form-control-feedback,.form-group-sm .form-control+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-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:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;border-color:#3c763d;background-color:#dff0d8}.has-success .form-control-feedback{color:#3c763d}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-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:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;border-color:#8a6d3b;background-color:#fcf8e3}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-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:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;border-color:#a94442;background-color:#f2dede}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top: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;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:7px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:27px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}@media (min-width:768px){.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:7px}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:18px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.42857143;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn:active:focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn.active.focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus,.btn.focus{color:#333;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none;-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{cursor:not-allowed;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:focus,.btn-default.focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c}.btn-default:hover{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default:active:hover,.btn-default.active:hover,.open>.dropdown-toggle.btn-default:hover,.btn-default:active:focus,.btn-default.active:focus,.open>.dropdown-toggle.btn-default:focus,.btn-default:active.focus,.btn-default.active.focus,.open>.dropdown-toggle.btn-default.focus{color:#333;background-color:#d4d4d4;border-color:#8c8c8c}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{background-image:none}.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.focus,.btn-default[disabled].focus,fieldset[disabled] .btn-default.focus{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary:focus,.btn-primary.focus{color:#fff;background-color:#286090;border-color:#122b40}.btn-primary:hover{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary:active:hover,.btn-primary.active:hover,.open>.dropdown-toggle.btn-primary:hover,.btn-primary:active:focus,.btn-primary.active:focus,.open>.dropdown-toggle.btn-primary:focus,.btn-primary:active.focus,.btn-primary.active.focus,.open>.dropdown-toggle.btn-primary.focus{color:#fff;background-color:#204d74;border-color:#122b40}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{background-image:none}.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.focus,.btn-primary[disabled].focus,fieldset[disabled] .btn-primary.focus{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:focus,.btn-success.focus{color:#fff;background-color:#449d44;border-color:#255625}.btn-success:hover{color:#fff;background-color:#449d44;border-color:#398439}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success:active:hover,.btn-success.active:hover,.open>.dropdown-toggle.btn-success:hover,.btn-success:active:focus,.btn-success.active:focus,.open>.dropdown-toggle.btn-success:focus,.btn-success:active.focus,.btn-success.active.focus,.open>.dropdown-toggle.btn-success.focus{color:#fff;background-color:#398439;border-color:#255625}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{background-image:none}.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.focus,.btn-success[disabled].focus,fieldset[disabled] .btn-success.focus{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info:focus,.btn-info.focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info:active:hover,.btn-info.active:hover,.open>.dropdown-toggle.btn-info:hover,.btn-info:active:focus,.btn-info.active:focus,.open>.dropdown-toggle.btn-info:focus,.btn-info:active.focus,.btn-info.active.focus,.open>.dropdown-toggle.btn-info.focus{color:#fff;background-color:#269abc;border-color:#1b6d85}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{background-image:none}.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.focus,.btn-info[disabled].focus,fieldset[disabled] .btn-info.focus{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:focus,.btn-warning.focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning:active:hover,.btn-warning.active:hover,.open>.dropdown-toggle.btn-warning:hover,.btn-warning:active:focus,.btn-warning.active:focus,.open>.dropdown-toggle.btn-warning:focus,.btn-warning:active.focus,.btn-warning.active.focus,.open>.dropdown-toggle.btn-warning.focus{color:#fff;background-color:#d58512;border-color:#985f0d}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{background-image:none}.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.focus,.btn-warning[disabled].focus,fieldset[disabled] .btn-warning.focus{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:focus,.btn-danger.focus{color:#fff;background-color:#c9302c;border-color:#761c19}.btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger:active:hover,.btn-danger.active:hover,.open>.dropdown-toggle.btn-danger:hover,.btn-danger:active:focus,.btn-danger.active:focus,.open>.dropdown-toggle.btn-danger:focus,.btn-danger:active.focus,.btn-danger.active.focus,.open>.dropdown-toggle.btn-danger.focus{color:#fff;background-color:#ac2925;border-color:#761c19}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{background-image:none}.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.focus,.btn-danger[disabled].focus,fieldset[disabled] .btn-danger.focus{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{color:#337ab7;font-weight:normal;border-radius:0}.btn-link,.btn-link:active,.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:#23527c;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:#777;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.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;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height, visibility;-o-transition-property:height, visibility;transition-property:height, visibility;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid \9;border-right:4px solid transparent;border-left:4px solid transparent}.dropup,.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;list-style:none;font-size:14px;text-align:left;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);-webkit-background-clip:padding-box;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.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{text-decoration:none;color:#262626;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;outline:0;background-color:#337ab7}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#777}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px dashed;border-bottom:4px solid \9;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.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+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-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-bottom-right-radius:0;border-top-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:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child:not(:first-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>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right: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-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.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,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.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-top-left-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-top-left-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle="buttons"]>.btn input[type="radio"],[data-toggle="buttons"]>.btn-group>.btn input[type="radio"],[data-toggle="buttons"]>.btn input[type="checkbox"],[data-toggle="buttons"]>.btn-group>.btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*="col-"]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;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:46px;line-height:46px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].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,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].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;color:#555;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>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-top-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>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.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:#777}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#777;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#337ab7}.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.42857143;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;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.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;margin-bottom:5px}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.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:#337ab7}.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;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;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-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;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;z-index:1030}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:15px 15px;font-size:18px;line-height:20px;height:50px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.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;-webkit-box-shadow:none;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}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 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);margin-top:8px;margin-bottom:8px}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom: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{margin-bottom:0;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}}@media (min-width:768px){.navbar-left{float:left !important}.navbar-right{float:right !important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.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:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{background-color:#e7e7e7;color:#555}@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-default .btn-link{color:#777}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#333}.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:focus{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.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{background-color:#080808;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 .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.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:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#fff}.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#444}.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{content:"/\00a0";padding:0 5px;color:#ccc}.breadcrumb>.active{color:#777}.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;line-height:1.42857143;text-decoration:none;color:#337ab7;background-color:#fff;border:1px solid #ddd;margin-left:-1px}.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-bottom-right-radius:4px;border-top-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{z-index:2;color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:3;color:#fff;background-color:#337ab7;border-color:#337ab7;cursor:default}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#777;background-color:#fff;border-color:#ddd;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333}.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-bottom-right-radius:6px;border-top-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.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-bottom-right-radius:3px;border-top-right-radius:3px}.pager{padding-left:0;margin:20px 0;list-style:none;text-align:center}.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:#777;background-color:#fff;cursor:not-allowed}.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}a.label:hover,a.label:focus{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:hover,.label-default[href]:focus{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#286090}.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;color:#fff;line-height:1;vertical-align:middle;white-space:nowrap;text-align:center;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge,.btn-group-xs>.btn .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{border-radius:6px;padding-left:15px;padding-right:15px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-left:60px;padding-right:60px}.jumbotron h1,.jumbotron .h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-left:auto;margin-right:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#337ab7}.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,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#3c763d}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#31708f}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{background-color:#fcf8e3;border-color:#faebcc;color:#8a6d3b}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{background-color:#f2dede;border-color:#ebccd1;color:#a94442}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:20px;margin-bottom:20px;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;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-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;-o-transition:width .6s ease;transition:width .6s ease}.progress-striped .progress-bar,.progress-bar-striped{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:-o-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);-webkit-background-size:40px 40px;background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-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-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:-o-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-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:-o-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-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:-o-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-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:-o-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{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{zoom:1;overflow:hidden}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-left,.media-right,.media-body{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.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}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:hover,button.list-group-item:hover,a.list-group-item:focus,button.list-group-item:focus{text-decoration:none;color:#555;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{background-color:#eee;color:#777;cursor:not-allowed}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.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,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>.small{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:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,button.list-group-item-success:hover,a.list-group-item-success:focus,button.list-group-item-success:focus{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,button.list-group-item-success.active,a.list-group-item-success.active:hover,button.list-group-item-success.active:hover,a.list-group-item-success.active:focus,button.list-group-item-success.active:focus{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,button.list-group-item-info:hover,a.list-group-item-info:focus,button.list-group-item-info:focus{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,button.list-group-item-info.active,a.list-group-item-info.active:hover,button.list-group-item-info.active:hover,a.list-group-item-info.active:focus,button.list-group-item-info.active:focus{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,button.list-group-item-warning:hover,a.list-group-item-warning:focus,button.list-group-item-warning:focus{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,button.list-group-item-warning.active,a.list-group-item-warning.active:hover,button.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus,button.list-group-item-warning.active:focus{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,button.list-group-item-danger:hover,a.list-group-item-danger:focus,button.list-group-item-danger:focus{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,button.list-group-item-danger.active,a.list-group-item-danger.active:hover,button.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus,button.list-group-item-danger.active:focus{color:#fff;background-color:#a94442;border-color:#a94442}.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-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>a,.panel-title>small,.panel-title>.small,.panel-title>small>a,.panel-title>.small>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>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:3px;border-top-left-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table{margin-bottom:0}.panel>.table caption,.panel>.table-responsive>.table caption,.panel>.panel-collapse>.table caption{padding-left:15px;padding-right:15px}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-left-radius:3px;border-bottom-right-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;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,.panel-group .panel-heading+.panel-collapse>.list-group{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-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.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}.modal{display:none;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0, -25%);-ms-transform:translate(0, -25%);-o-transform:translate(0, -25%);transform:translate(0, -25%);-webkit-transition:-webkit-transform 0.3s ease-out;-o-transition:-o-transform 0.3s ease-out;transition:transform 0.3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);-webkit-background-clip:padding-box;background-clip:padding-box;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.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)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:12px;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;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-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{bottom:0;right:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:14px;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;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)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;font-size:14px;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{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999;border-top-color:rgba(0,0,0,0.25);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#fff}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999;border-right-color:rgba(0,0,0,0.25)}.popover.right>.arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#fff}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,0.25);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,0.25)}.popover.left>.arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#fff;bottom:-10px}.carousel{position:relative}.carousel-inner{position:relative;overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform 0.6s ease-in-out;-o-transition:-o-transform 0.6s ease-in-out;transition:transform 0.6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.next,.carousel-inner>.item.active.right{-webkit-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0);left:0}.carousel-inner>.item.prev,.carousel-inner>.item.active.left{-webkit-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0);left:0}.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right,.carousel-inner>.item.active{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);left:0}}.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;left:0;bottom:0;width:15%;opacity:.5;filter:alpha(opacity=50);font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6);background-color:rgba(0,0,0,0)}.carousel-control.left{background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-image:-webkit-gradient(linear, left top, right top, color-stop(0, rgba(0,0,0,0.5)), to(rgba(0,0,0,0.0001)));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{left:auto;right:0;background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-image:-webkit-gradient(linear, left top, right top, color-stop(0, rgba(0,0,0,0.0001)), to(rgba(0,0,0,0.5)));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{outline:0;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%;margin-top:-10px;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;line-height:1;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%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #fff;border-radius:10px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0)}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#fff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;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 .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-10px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-header:before,.modal-header:after,.modal-footer:before,.modal-footer:after{content:" ";display:table}.clearfix:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-header:after,.modal-footer:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.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}.hidden{display:none !important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none !important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none !important}@media (max-width:767px){.visible-xs{display:block !important}table.visible-xs{display:table !important}tr.visible-xs{display:table-row !important}th.visible-xs,td.visible-xs{display:table-cell !important}}@media (max-width:767px){.visible-xs-block{display:block !important}}@media (max-width:767px){.visible-xs-inline{display:inline !important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block !important}table.visible-sm{display:table !important}tr.visible-sm{display:table-row !important}th.visible-sm,td.visible-sm{display:table-cell !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block !important}table.visible-md{display:table !important}tr.visible-md{display:table-row !important}th.visible-md,td.visible-md{display:table-cell !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block !important}}@media (min-width:1200px){.visible-lg{display:block !important}table.visible-lg{display:table !important}tr.visible-lg{display:table-row !important}th.visible-lg,td.visible-lg{display:table-cell !important}}@media (min-width:1200px){.visible-lg-block{display:block !important}}@media (min-width:1200px){.visible-lg-inline{display:inline !important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block !important}}@media (max-width:767px){.hidden-xs{display:none !important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none !important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none !important}}@media (min-width:1200px){.hidden-lg{display:none !important}}.visible-print{display:none !important}@media print{.visible-print{display:block !important}table.visible-print{display:table !important}tr.visible-print{display:table-row !important}th.visible-print,td.visible-print{display:table-cell !important}}.visible-print-block{display:none !important}@media print{.visible-print-block{display:block !important}}.visible-print-inline{display:none !important}@media print{.visible-print-inline{display:inline !important}}.visible-print-inline-block{display:none !important}@media print{.visible-print-inline-block{display:inline-block !important}}@media print{.hidden-print{display:none !important}}
library/toolset/toolset-common/res/lib/bootstrap/fonts/glyphicons-halflings-regular.eot ADDED
Binary file
library/toolset/toolset-common/res/lib/bootstrap/fonts/glyphicons-halflings-regular.svg ADDED
@@ -0,0 +1,288 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" standalone="no"?>
2
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
3
+ <svg xmlns="http://www.w3.org/2000/svg">
4
+ <metadata></metadata>
5
+ <defs>
6
+ <font id="glyphicons_halflingsregular" horiz-adv-x="1200" >
7
+ <font-face units-per-em="1200" ascent="960" descent="-240" />
8
+ <missing-glyph horiz-adv-x="500" />
9
+ <glyph horiz-adv-x="0" />
10
+ <glyph horiz-adv-x="400" />
11
+ <glyph unicode=" " />
12
+ <glyph unicode="*" d="M600 1100q15 0 34 -1.5t30 -3.5l11 -1q10 -2 17.5 -10.5t7.5 -18.5v-224l158 158q7 7 18 8t19 -6l106 -106q7 -8 6 -19t-8 -18l-158 -158h224q10 0 18.5 -7.5t10.5 -17.5q6 -41 6 -75q0 -15 -1.5 -34t-3.5 -30l-1 -11q-2 -10 -10.5 -17.5t-18.5 -7.5h-224l158 -158 q7 -7 8 -18t-6 -19l-106 -106q-8 -7 -19 -6t-18 8l-158 158v-224q0 -10 -7.5 -18.5t-17.5 -10.5q-41 -6 -75 -6q-15 0 -34 1.5t-30 3.5l-11 1q-10 2 -17.5 10.5t-7.5 18.5v224l-158 -158q-7 -7 -18 -8t-19 6l-106 106q-7 8 -6 19t8 18l158 158h-224q-10 0 -18.5 7.5 t-10.5 17.5q-6 41 -6 75q0 15 1.5 34t3.5 30l1 11q2 10 10.5 17.5t18.5 7.5h224l-158 158q-7 7 -8 18t6 19l106 106q8 7 19 6t18 -8l158 -158v224q0 10 7.5 18.5t17.5 10.5q41 6 75 6z" />
13
+ <glyph unicode="+" d="M450 1100h200q21 0 35.5 -14.5t14.5 -35.5v-350h350q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-350v-350q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v350h-350q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5 h350v350q0 21 14.5 35.5t35.5 14.5z" />
14
+ <glyph unicode="&#xa0;" />
15
+ <glyph unicode="&#xa5;" d="M825 1100h250q10 0 12.5 -5t-5.5 -13l-364 -364q-6 -6 -11 -18h268q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-125v-100h275q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-125v-174q0 -11 -7.5 -18.5t-18.5 -7.5h-148q-11 0 -18.5 7.5t-7.5 18.5v174 h-275q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h125v100h-275q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h118q-5 12 -11 18l-364 364q-8 8 -5.5 13t12.5 5h250q25 0 43 -18l164 -164q8 -8 18 -8t18 8l164 164q18 18 43 18z" />
16
+ <glyph unicode="&#x2000;" horiz-adv-x="650" />
17
+ <glyph unicode="&#x2001;" horiz-adv-x="1300" />
18
+ <glyph unicode="&#x2002;" horiz-adv-x="650" />
19
+ <glyph unicode="&#x2003;" horiz-adv-x="1300" />
20
+ <glyph unicode="&#x2004;" horiz-adv-x="433" />
21
+ <glyph unicode="&#x2005;" horiz-adv-x="325" />
22
+ <glyph unicode="&#x2006;" horiz-adv-x="216" />
23
+ <glyph unicode="&#x2007;" horiz-adv-x="216" />
24
+ <glyph unicode="&#x2008;" horiz-adv-x="162" />
25
+ <glyph unicode="&#x2009;" horiz-adv-x="260" />
26
+ <glyph unicode="&#x200a;" horiz-adv-x="72" />
27
+ <glyph unicode="&#x202f;" horiz-adv-x="260" />
28
+ <glyph unicode="&#x205f;" horiz-adv-x="325" />
29
+ <glyph unicode="&#x20ac;" d="M744 1198q242 0 354 -189q60 -104 66 -209h-181q0 45 -17.5 82.5t-43.5 61.5t-58 40.5t-60.5 24t-51.5 7.5q-19 0 -40.5 -5.5t-49.5 -20.5t-53 -38t-49 -62.5t-39 -89.5h379l-100 -100h-300q-6 -50 -6 -100h406l-100 -100h-300q9 -74 33 -132t52.5 -91t61.5 -54.5t59 -29 t47 -7.5q22 0 50.5 7.5t60.5 24.5t58 41t43.5 61t17.5 80h174q-30 -171 -128 -278q-107 -117 -274 -117q-206 0 -324 158q-36 48 -69 133t-45 204h-217l100 100h112q1 47 6 100h-218l100 100h134q20 87 51 153.5t62 103.5q117 141 297 141z" />
30
+ <glyph unicode="&#x20bd;" d="M428 1200h350q67 0 120 -13t86 -31t57 -49.5t35 -56.5t17 -64.5t6.5 -60.5t0.5 -57v-16.5v-16.5q0 -36 -0.5 -57t-6.5 -61t-17 -65t-35 -57t-57 -50.5t-86 -31.5t-120 -13h-178l-2 -100h288q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-138v-175q0 -11 -5.5 -18 t-15.5 -7h-149q-10 0 -17.5 7.5t-7.5 17.5v175h-267q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h117v100h-267q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h117v475q0 10 7.5 17.5t17.5 7.5zM600 1000v-300h203q64 0 86.5 33t22.5 119q0 84 -22.5 116t-86.5 32h-203z" />
31
+ <glyph unicode="&#x2212;" d="M250 700h800q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5z" />
32
+ <glyph unicode="&#x231b;" d="M1000 1200v-150q0 -21 -14.5 -35.5t-35.5 -14.5h-50v-100q0 -91 -49.5 -165.5t-130.5 -109.5q81 -35 130.5 -109.5t49.5 -165.5v-150h50q21 0 35.5 -14.5t14.5 -35.5v-150h-800v150q0 21 14.5 35.5t35.5 14.5h50v150q0 91 49.5 165.5t130.5 109.5q-81 35 -130.5 109.5 t-49.5 165.5v100h-50q-21 0 -35.5 14.5t-14.5 35.5v150h800zM400 1000v-100q0 -60 32.5 -109.5t87.5 -73.5q28 -12 44 -37t16 -55t-16 -55t-44 -37q-55 -24 -87.5 -73.5t-32.5 -109.5v-150h400v150q0 60 -32.5 109.5t-87.5 73.5q-28 12 -44 37t-16 55t16 55t44 37 q55 24 87.5 73.5t32.5 109.5v100h-400z" />
33
+ <glyph unicode="&#x25fc;" horiz-adv-x="500" d="M0 0z" />
34
+ <glyph unicode="&#x2601;" d="M503 1089q110 0 200.5 -59.5t134.5 -156.5q44 14 90 14q120 0 205 -86.5t85 -206.5q0 -121 -85 -207.5t-205 -86.5h-750q-79 0 -135.5 57t-56.5 137q0 69 42.5 122.5t108.5 67.5q-2 12 -2 37q0 153 108 260.5t260 107.5z" />
35
+ <glyph unicode="&#x26fa;" d="M774 1193.5q16 -9.5 20.5 -27t-5.5 -33.5l-136 -187l467 -746h30q20 0 35 -18.5t15 -39.5v-42h-1200v42q0 21 15 39.5t35 18.5h30l468 746l-135 183q-10 16 -5.5 34t20.5 28t34 5.5t28 -20.5l111 -148l112 150q9 16 27 20.5t34 -5zM600 200h377l-182 112l-195 534v-646z " />
36
+ <glyph unicode="&#x2709;" d="M25 1100h1150q10 0 12.5 -5t-5.5 -13l-564 -567q-8 -8 -18 -8t-18 8l-564 567q-8 8 -5.5 13t12.5 5zM18 882l264 -264q8 -8 8 -18t-8 -18l-264 -264q-8 -8 -13 -5.5t-5 12.5v550q0 10 5 12.5t13 -5.5zM918 618l264 264q8 8 13 5.5t5 -12.5v-550q0 -10 -5 -12.5t-13 5.5 l-264 264q-8 8 -8 18t8 18zM818 482l364 -364q8 -8 5.5 -13t-12.5 -5h-1150q-10 0 -12.5 5t5.5 13l364 364q8 8 18 8t18 -8l164 -164q8 -8 18 -8t18 8l164 164q8 8 18 8t18 -8z" />
37
+ <glyph unicode="&#x270f;" d="M1011 1210q19 0 33 -13l153 -153q13 -14 13 -33t-13 -33l-99 -92l-214 214l95 96q13 14 32 14zM1013 800l-615 -614l-214 214l614 614zM317 96l-333 -112l110 335z" />
38
+ <glyph unicode="&#xe001;" d="M700 650v-550h250q21 0 35.5 -14.5t14.5 -35.5v-50h-800v50q0 21 14.5 35.5t35.5 14.5h250v550l-500 550h1200z" />
39
+ <glyph unicode="&#xe002;" d="M368 1017l645 163q39 15 63 0t24 -49v-831q0 -55 -41.5 -95.5t-111.5 -63.5q-79 -25 -147 -4.5t-86 75t25.5 111.5t122.5 82q72 24 138 8v521l-600 -155v-606q0 -42 -44 -90t-109 -69q-79 -26 -147 -5.5t-86 75.5t25.5 111.5t122.5 82.5q72 24 138 7v639q0 38 14.5 59 t53.5 34z" />
40
+ <glyph unicode="&#xe003;" d="M500 1191q100 0 191 -39t156.5 -104.5t104.5 -156.5t39 -191l-1 -2l1 -5q0 -141 -78 -262l275 -274q23 -26 22.5 -44.5t-22.5 -42.5l-59 -58q-26 -20 -46.5 -20t-39.5 20l-275 274q-119 -77 -261 -77l-5 1l-2 -1q-100 0 -191 39t-156.5 104.5t-104.5 156.5t-39 191 t39 191t104.5 156.5t156.5 104.5t191 39zM500 1022q-88 0 -162 -43t-117 -117t-43 -162t43 -162t117 -117t162 -43t162 43t117 117t43 162t-43 162t-117 117t-162 43z" />
41
+ <glyph unicode="&#xe005;" d="M649 949q48 68 109.5 104t121.5 38.5t118.5 -20t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-150 152.5t-126.5 127.5t-93.5 124.5t-33.5 117.5q0 64 28 123t73 100.5t104 64t119 20 t120.5 -38.5t104.5 -104z" />
42
+ <glyph unicode="&#xe006;" d="M407 800l131 353q7 19 17.5 19t17.5 -19l129 -353h421q21 0 24 -8.5t-14 -20.5l-342 -249l130 -401q7 -20 -0.5 -25.5t-24.5 6.5l-343 246l-342 -247q-17 -12 -24.5 -6.5t-0.5 25.5l130 400l-347 251q-17 12 -14 20.5t23 8.5h429z" />
43
+ <glyph unicode="&#xe007;" d="M407 800l131 353q7 19 17.5 19t17.5 -19l129 -353h421q21 0 24 -8.5t-14 -20.5l-342 -249l130 -401q7 -20 -0.5 -25.5t-24.5 6.5l-343 246l-342 -247q-17 -12 -24.5 -6.5t-0.5 25.5l130 400l-347 251q-17 12 -14 20.5t23 8.5h429zM477 700h-240l197 -142l-74 -226 l193 139l195 -140l-74 229l192 140h-234l-78 211z" />
44
+ <glyph unicode="&#xe008;" d="M600 1200q124 0 212 -88t88 -212v-250q0 -46 -31 -98t-69 -52v-75q0 -10 6 -21.5t15 -17.5l358 -230q9 -5 15 -16.5t6 -21.5v-93q0 -10 -7.5 -17.5t-17.5 -7.5h-1150q-10 0 -17.5 7.5t-7.5 17.5v93q0 10 6 21.5t15 16.5l358 230q9 6 15 17.5t6 21.5v75q-38 0 -69 52 t-31 98v250q0 124 88 212t212 88z" />
45
+ <glyph unicode="&#xe009;" d="M25 1100h1150q10 0 17.5 -7.5t7.5 -17.5v-1050q0 -10 -7.5 -17.5t-17.5 -7.5h-1150q-10 0 -17.5 7.5t-7.5 17.5v1050q0 10 7.5 17.5t17.5 7.5zM100 1000v-100h100v100h-100zM875 1000h-550q-10 0 -17.5 -7.5t-7.5 -17.5v-350q0 -10 7.5 -17.5t17.5 -7.5h550 q10 0 17.5 7.5t7.5 17.5v350q0 10 -7.5 17.5t-17.5 7.5zM1000 1000v-100h100v100h-100zM100 800v-100h100v100h-100zM1000 800v-100h100v100h-100zM100 600v-100h100v100h-100zM1000 600v-100h100v100h-100zM875 500h-550q-10 0 -17.5 -7.5t-7.5 -17.5v-350q0 -10 7.5 -17.5 t17.5 -7.5h550q10 0 17.5 7.5t7.5 17.5v350q0 10 -7.5 17.5t-17.5 7.5zM100 400v-100h100v100h-100zM1000 400v-100h100v100h-100zM100 200v-100h100v100h-100zM1000 200v-100h100v100h-100z" />
46
+ <glyph unicode="&#xe010;" d="M50 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM650 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400 q0 21 14.5 35.5t35.5 14.5zM50 500h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM650 500h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
47
+ <glyph unicode="&#xe011;" d="M50 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200 q0 21 14.5 35.5t35.5 14.5zM850 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200 q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM850 700h200q21 0 35.5 -14.5t14.5 -35.5v-200 q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 300h200 q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM850 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5 t35.5 14.5z" />
48
+ <glyph unicode="&#xe012;" d="M50 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 1100h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v200 q0 21 14.5 35.5t35.5 14.5zM50 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 700h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700 q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 300h700q21 0 35.5 -14.5t14.5 -35.5v-200 q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5z" />
49
+ <glyph unicode="&#xe013;" d="M465 477l571 571q8 8 18 8t17 -8l177 -177q8 -7 8 -17t-8 -18l-783 -784q-7 -8 -17.5 -8t-17.5 8l-384 384q-8 8 -8 18t8 17l177 177q7 8 17 8t18 -8l171 -171q7 -7 18 -7t18 7z" />
50
+ <glyph unicode="&#xe014;" d="M904 1083l178 -179q8 -8 8 -18.5t-8 -17.5l-267 -268l267 -268q8 -7 8 -17.5t-8 -18.5l-178 -178q-8 -8 -18.5 -8t-17.5 8l-268 267l-268 -267q-7 -8 -17.5 -8t-18.5 8l-178 178q-8 8 -8 18.5t8 17.5l267 268l-267 268q-8 7 -8 17.5t8 18.5l178 178q8 8 18.5 8t17.5 -8 l268 -267l268 268q7 7 17.5 7t18.5 -7z" />
51
+ <glyph unicode="&#xe015;" d="M507 1177q98 0 187.5 -38.5t154.5 -103.5t103.5 -154.5t38.5 -187.5q0 -141 -78 -262l300 -299q8 -8 8 -18.5t-8 -18.5l-109 -108q-7 -8 -17.5 -8t-18.5 8l-300 299q-119 -77 -261 -77q-98 0 -188 38.5t-154.5 103t-103 154.5t-38.5 188t38.5 187.5t103 154.5 t154.5 103.5t188 38.5zM506.5 1023q-89.5 0 -165.5 -44t-120 -120.5t-44 -166t44 -165.5t120 -120t165.5 -44t166 44t120.5 120t44 165.5t-44 166t-120.5 120.5t-166 44zM425 900h150q10 0 17.5 -7.5t7.5 -17.5v-75h75q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5 t-17.5 -7.5h-75v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-75q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h75v75q0 10 7.5 17.5t17.5 7.5z" />
52
+ <glyph unicode="&#xe016;" d="M507 1177q98 0 187.5 -38.5t154.5 -103.5t103.5 -154.5t38.5 -187.5q0 -141 -78 -262l300 -299q8 -8 8 -18.5t-8 -18.5l-109 -108q-7 -8 -17.5 -8t-18.5 8l-300 299q-119 -77 -261 -77q-98 0 -188 38.5t-154.5 103t-103 154.5t-38.5 188t38.5 187.5t103 154.5 t154.5 103.5t188 38.5zM506.5 1023q-89.5 0 -165.5 -44t-120 -120.5t-44 -166t44 -165.5t120 -120t165.5 -44t166 44t120.5 120t44 165.5t-44 166t-120.5 120.5t-166 44zM325 800h350q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-350q-10 0 -17.5 7.5 t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
53
+ <glyph unicode="&#xe017;" d="M550 1200h100q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM800 975v166q167 -62 272 -209.5t105 -331.5q0 -117 -45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5 t-184.5 123t-123 184.5t-45.5 224q0 184 105 331.5t272 209.5v-166q-103 -55 -165 -155t-62 -220q0 -116 57 -214.5t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5q0 120 -62 220t-165 155z" />
54
+ <glyph unicode="&#xe018;" d="M1025 1200h150q10 0 17.5 -7.5t7.5 -17.5v-1150q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v1150q0 10 7.5 17.5t17.5 7.5zM725 800h150q10 0 17.5 -7.5t7.5 -17.5v-750q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v750 q0 10 7.5 17.5t17.5 7.5zM425 500h150q10 0 17.5 -7.5t7.5 -17.5v-450q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v450q0 10 7.5 17.5t17.5 7.5zM125 300h150q10 0 17.5 -7.5t7.5 -17.5v-250q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5 v250q0 10 7.5 17.5t17.5 7.5z" />
55
+ <glyph unicode="&#xe019;" d="M600 1174q33 0 74 -5l38 -152l5 -1q49 -14 94 -39l5 -2l134 80q61 -48 104 -105l-80 -134l3 -5q25 -44 39 -93l1 -6l152 -38q5 -43 5 -73q0 -34 -5 -74l-152 -38l-1 -6q-15 -49 -39 -93l-3 -5l80 -134q-48 -61 -104 -105l-134 81l-5 -3q-44 -25 -94 -39l-5 -2l-38 -151 q-43 -5 -74 -5q-33 0 -74 5l-38 151l-5 2q-49 14 -94 39l-5 3l-134 -81q-60 48 -104 105l80 134l-3 5q-25 45 -38 93l-2 6l-151 38q-6 42 -6 74q0 33 6 73l151 38l2 6q13 48 38 93l3 5l-80 134q47 61 105 105l133 -80l5 2q45 25 94 39l5 1l38 152q43 5 74 5zM600 815 q-89 0 -152 -63t-63 -151.5t63 -151.5t152 -63t152 63t63 151.5t-63 151.5t-152 63z" />
56
+ <glyph unicode="&#xe020;" d="M500 1300h300q41 0 70.5 -29.5t29.5 -70.5v-100h275q10 0 17.5 -7.5t7.5 -17.5v-75h-1100v75q0 10 7.5 17.5t17.5 7.5h275v100q0 41 29.5 70.5t70.5 29.5zM500 1200v-100h300v100h-300zM1100 900v-800q0 -41 -29.5 -70.5t-70.5 -29.5h-700q-41 0 -70.5 29.5t-29.5 70.5 v800h900zM300 800v-700h100v700h-100zM500 800v-700h100v700h-100zM700 800v-700h100v700h-100zM900 800v-700h100v700h-100z" />
57
+ <glyph unicode="&#xe021;" d="M18 618l620 608q8 7 18.5 7t17.5 -7l608 -608q8 -8 5.5 -13t-12.5 -5h-175v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v375h-300v-375q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v575h-175q-10 0 -12.5 5t5.5 13z" />
58
+ <glyph unicode="&#xe022;" d="M600 1200v-400q0 -41 29.5 -70.5t70.5 -29.5h300v-650q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v1100q0 21 14.5 35.5t35.5 14.5h450zM1000 800h-250q-21 0 -35.5 14.5t-14.5 35.5v250z" />
59
+ <glyph unicode="&#xe023;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM525 900h50q10 0 17.5 -7.5t7.5 -17.5v-275h175q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5z" />
60
+ <glyph unicode="&#xe024;" d="M1300 0h-538l-41 400h-242l-41 -400h-538l431 1200h209l-21 -300h162l-20 300h208zM515 800l-27 -300h224l-27 300h-170z" />
61
+ <glyph unicode="&#xe025;" d="M550 1200h200q21 0 35.5 -14.5t14.5 -35.5v-450h191q20 0 25.5 -11.5t-7.5 -27.5l-327 -400q-13 -16 -32 -16t-32 16l-327 400q-13 16 -7.5 27.5t25.5 11.5h191v450q0 21 14.5 35.5t35.5 14.5zM1125 400h50q10 0 17.5 -7.5t7.5 -17.5v-350q0 -10 -7.5 -17.5t-17.5 -7.5 h-1050q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h50q10 0 17.5 -7.5t7.5 -17.5v-175h900v175q0 10 7.5 17.5t17.5 7.5z" />
62
+ <glyph unicode="&#xe026;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM525 900h150q10 0 17.5 -7.5t7.5 -17.5v-275h137q21 0 26 -11.5t-8 -27.5l-223 -275q-13 -16 -32 -16t-32 16l-223 275q-13 16 -8 27.5t26 11.5h137v275q0 10 7.5 17.5t17.5 7.5z " />
63
+ <glyph unicode="&#xe027;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM632 914l223 -275q13 -16 8 -27.5t-26 -11.5h-137v-275q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v275h-137q-21 0 -26 11.5t8 27.5l223 275q13 16 32 16 t32 -16z" />
64
+ <glyph unicode="&#xe028;" d="M225 1200h750q10 0 19.5 -7t12.5 -17l186 -652q7 -24 7 -49v-425q0 -12 -4 -27t-9 -17q-12 -6 -37 -6h-1100q-12 0 -27 4t-17 8q-6 13 -6 38l1 425q0 25 7 49l185 652q3 10 12.5 17t19.5 7zM878 1000h-556q-10 0 -19 -7t-11 -18l-87 -450q-2 -11 4 -18t16 -7h150 q10 0 19.5 -7t11.5 -17l38 -152q2 -10 11.5 -17t19.5 -7h250q10 0 19.5 7t11.5 17l38 152q2 10 11.5 17t19.5 7h150q10 0 16 7t4 18l-87 450q-2 11 -11 18t-19 7z" />
65
+ <glyph unicode="&#xe029;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM540 820l253 -190q17 -12 17 -30t-17 -30l-253 -190q-16 -12 -28 -6.5t-12 26.5v400q0 21 12 26.5t28 -6.5z" />
66
+ <glyph unicode="&#xe030;" d="M947 1060l135 135q7 7 12.5 5t5.5 -13v-362q0 -10 -7.5 -17.5t-17.5 -7.5h-362q-11 0 -13 5.5t5 12.5l133 133q-109 76 -238 76q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5h150q0 -117 -45.5 -224 t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5q192 0 347 -117z" />
67
+ <glyph unicode="&#xe031;" d="M947 1060l135 135q7 7 12.5 5t5.5 -13v-361q0 -11 -7.5 -18.5t-18.5 -7.5h-361q-11 0 -13 5.5t5 12.5l134 134q-110 75 -239 75q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5h-150q0 117 45.5 224t123 184.5t184.5 123t224 45.5q192 0 347 -117zM1027 600h150 q0 -117 -45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5q-192 0 -348 118l-134 -134q-7 -8 -12.5 -5.5t-5.5 12.5v360q0 11 7.5 18.5t18.5 7.5h360q10 0 12.5 -5.5t-5.5 -12.5l-133 -133q110 -76 240 -76q116 0 214.5 57t155.5 155.5t57 214.5z" />
68
+ <glyph unicode="&#xe032;" d="M125 1200h1050q10 0 17.5 -7.5t7.5 -17.5v-1150q0 -10 -7.5 -17.5t-17.5 -7.5h-1050q-10 0 -17.5 7.5t-7.5 17.5v1150q0 10 7.5 17.5t17.5 7.5zM1075 1000h-850q-10 0 -17.5 -7.5t-7.5 -17.5v-850q0 -10 7.5 -17.5t17.5 -7.5h850q10 0 17.5 7.5t7.5 17.5v850 q0 10 -7.5 17.5t-17.5 7.5zM325 900h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 900h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 700h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 700h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 500h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 500h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 300h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 300h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5z" />
69
+ <glyph unicode="&#xe033;" d="M900 800v200q0 83 -58.5 141.5t-141.5 58.5h-300q-82 0 -141 -59t-59 -141v-200h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-600q0 -41 29.5 -70.5t70.5 -29.5h900q41 0 70.5 29.5t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5h-100zM400 800v150q0 21 15 35.5t35 14.5h200 q20 0 35 -14.5t15 -35.5v-150h-300z" />
70
+ <glyph unicode="&#xe034;" d="M125 1100h50q10 0 17.5 -7.5t7.5 -17.5v-1075h-100v1075q0 10 7.5 17.5t17.5 7.5zM1075 1052q4 0 9 -2q16 -6 16 -23v-421q0 -6 -3 -12q-33 -59 -66.5 -99t-65.5 -58t-56.5 -24.5t-52.5 -6.5q-26 0 -57.5 6.5t-52.5 13.5t-60 21q-41 15 -63 22.5t-57.5 15t-65.5 7.5 q-85 0 -160 -57q-7 -5 -15 -5q-6 0 -11 3q-14 7 -14 22v438q22 55 82 98.5t119 46.5q23 2 43 0.5t43 -7t32.5 -8.5t38 -13t32.5 -11q41 -14 63.5 -21t57 -14t63.5 -7q103 0 183 87q7 8 18 8z" />
71
+ <glyph unicode="&#xe035;" d="M600 1175q116 0 227 -49.5t192.5 -131t131 -192.5t49.5 -227v-300q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v300q0 127 -70.5 231.5t-184.5 161.5t-245 57t-245 -57t-184.5 -161.5t-70.5 -231.5v-300q0 -10 -7.5 -17.5t-17.5 -7.5h-50 q-10 0 -17.5 7.5t-7.5 17.5v300q0 116 49.5 227t131 192.5t192.5 131t227 49.5zM220 500h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14v460q0 8 6 14t14 6zM820 500h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14v460 q0 8 6 14t14 6z" />
72
+ <glyph unicode="&#xe036;" d="M321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM900 668l120 120q7 7 17 7t17 -7l34 -34q7 -7 7 -17t-7 -17l-120 -120l120 -120q7 -7 7 -17 t-7 -17l-34 -34q-7 -7 -17 -7t-17 7l-120 119l-120 -119q-7 -7 -17 -7t-17 7l-34 34q-7 7 -7 17t7 17l119 120l-119 120q-7 7 -7 17t7 17l34 34q7 8 17 8t17 -8z" />
73
+ <glyph unicode="&#xe037;" d="M321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM766 900h4q10 -1 16 -10q96 -129 96 -290q0 -154 -90 -281q-6 -9 -17 -10l-3 -1q-9 0 -16 6 l-29 23q-7 7 -8.5 16.5t4.5 17.5q72 103 72 229q0 132 -78 238q-6 8 -4.5 18t9.5 17l29 22q7 5 15 5z" />
74
+ <glyph unicode="&#xe038;" d="M967 1004h3q11 -1 17 -10q135 -179 135 -396q0 -105 -34 -206.5t-98 -185.5q-7 -9 -17 -10h-3q-9 0 -16 6l-42 34q-8 6 -9 16t5 18q111 150 111 328q0 90 -29.5 176t-84.5 157q-6 9 -5 19t10 16l42 33q7 5 15 5zM321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5 t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM766 900h4q10 -1 16 -10q96 -129 96 -290q0 -154 -90 -281q-6 -9 -17 -10l-3 -1q-9 0 -16 6l-29 23q-7 7 -8.5 16.5t4.5 17.5q72 103 72 229q0 132 -78 238 q-6 8 -4.5 18.5t9.5 16.5l29 22q7 5 15 5z" />
75
+ <glyph unicode="&#xe039;" d="M500 900h100v-100h-100v-100h-400v-100h-100v600h500v-300zM1200 700h-200v-100h200v-200h-300v300h-200v300h-100v200h600v-500zM100 1100v-300h300v300h-300zM800 1100v-300h300v300h-300zM300 900h-100v100h100v-100zM1000 900h-100v100h100v-100zM300 500h200v-500 h-500v500h200v100h100v-100zM800 300h200v-100h-100v-100h-200v100h-100v100h100v200h-200v100h300v-300zM100 400v-300h300v300h-300zM300 200h-100v100h100v-100zM1200 200h-100v100h100v-100zM700 0h-100v100h100v-100zM1200 0h-300v100h300v-100z" />
76
+ <glyph unicode="&#xe040;" d="M100 200h-100v1000h100v-1000zM300 200h-100v1000h100v-1000zM700 200h-200v1000h200v-1000zM900 200h-100v1000h100v-1000zM1200 200h-200v1000h200v-1000zM400 0h-300v100h300v-100zM600 0h-100v91h100v-91zM800 0h-100v91h100v-91zM1100 0h-200v91h200v-91z" />
77
+ <glyph unicode="&#xe041;" d="M500 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-682 682l1 475q0 10 7.5 17.5t17.5 7.5h474zM319.5 1024.5q-29.5 29.5 -71 29.5t-71 -29.5t-29.5 -71.5t29.5 -71.5t71 -29.5t71 29.5t29.5 71.5t-29.5 71.5z" />
78
+ <glyph unicode="&#xe042;" d="M500 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-682 682l1 475q0 10 7.5 17.5t17.5 7.5h474zM800 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-56 56l424 426l-700 700h150zM319.5 1024.5q-29.5 29.5 -71 29.5t-71 -29.5 t-29.5 -71.5t29.5 -71.5t71 -29.5t71 29.5t29.5 71.5t-29.5 71.5z" />
79
+ <glyph unicode="&#xe043;" d="M300 1200h825q75 0 75 -75v-900q0 -25 -18 -43l-64 -64q-8 -8 -13 -5.5t-5 12.5v950q0 10 -7.5 17.5t-17.5 7.5h-700q-25 0 -43 -18l-64 -64q-8 -8 -5.5 -13t12.5 -5h700q10 0 17.5 -7.5t7.5 -17.5v-950q0 -10 -7.5 -17.5t-17.5 -7.5h-850q-10 0 -17.5 7.5t-7.5 17.5v975 q0 25 18 43l139 139q18 18 43 18z" />
80
+ <glyph unicode="&#xe044;" d="M250 1200h800q21 0 35.5 -14.5t14.5 -35.5v-1150l-450 444l-450 -445v1151q0 21 14.5 35.5t35.5 14.5z" />
81
+ <glyph unicode="&#xe045;" d="M822 1200h-444q-11 0 -19 -7.5t-9 -17.5l-78 -301q-7 -24 7 -45l57 -108q6 -9 17.5 -15t21.5 -6h450q10 0 21.5 6t17.5 15l62 108q14 21 7 45l-83 301q-1 10 -9 17.5t-19 7.5zM1175 800h-150q-10 0 -21 -6.5t-15 -15.5l-78 -156q-4 -9 -15 -15.5t-21 -6.5h-550 q-10 0 -21 6.5t-15 15.5l-78 156q-4 9 -15 15.5t-21 6.5h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-650q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h750q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5 t7.5 17.5v650q0 10 -7.5 17.5t-17.5 7.5zM850 200h-500q-10 0 -19.5 -7t-11.5 -17l-38 -152q-2 -10 3.5 -17t15.5 -7h600q10 0 15.5 7t3.5 17l-38 152q-2 10 -11.5 17t-19.5 7z" />
82
+ <glyph unicode="&#xe046;" d="M500 1100h200q56 0 102.5 -20.5t72.5 -50t44 -59t25 -50.5l6 -20h150q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v600q0 41 29.5 70.5t70.5 29.5h150q2 8 6.5 21.5t24 48t45 61t72 48t102.5 21.5zM900 800v-100 h100v100h-100zM600 730q-95 0 -162.5 -67.5t-67.5 -162.5t67.5 -162.5t162.5 -67.5t162.5 67.5t67.5 162.5t-67.5 162.5t-162.5 67.5zM600 603q43 0 73 -30t30 -73t-30 -73t-73 -30t-73 30t-30 73t30 73t73 30z" />
83
+ <glyph unicode="&#xe047;" d="M681 1199l385 -998q20 -50 60 -92q18 -19 36.5 -29.5t27.5 -11.5l10 -2v-66h-417v66q53 0 75 43.5t5 88.5l-82 222h-391q-58 -145 -92 -234q-11 -34 -6.5 -57t25.5 -37t46 -20t55 -6v-66h-365v66q56 24 84 52q12 12 25 30.5t20 31.5l7 13l399 1006h93zM416 521h340 l-162 457z" />
84
+ <glyph unicode="&#xe048;" d="M753 641q5 -1 14.5 -4.5t36 -15.5t50.5 -26.5t53.5 -40t50.5 -54.5t35.5 -70t14.5 -87q0 -67 -27.5 -125.5t-71.5 -97.5t-98.5 -66.5t-108.5 -40.5t-102 -13h-500v89q41 7 70.5 32.5t29.5 65.5v827q0 24 -0.5 34t-3.5 24t-8.5 19.5t-17 13.5t-28 12.5t-42.5 11.5v71 l471 -1q57 0 115.5 -20.5t108 -57t80.5 -94t31 -124.5q0 -51 -15.5 -96.5t-38 -74.5t-45 -50.5t-38.5 -30.5zM400 700h139q78 0 130.5 48.5t52.5 122.5q0 41 -8.5 70.5t-29.5 55.5t-62.5 39.5t-103.5 13.5h-118v-350zM400 200h216q80 0 121 50.5t41 130.5q0 90 -62.5 154.5 t-156.5 64.5h-159v-400z" />
85
+ <glyph unicode="&#xe049;" d="M877 1200l2 -57q-83 -19 -116 -45.5t-40 -66.5l-132 -839q-9 -49 13 -69t96 -26v-97h-500v97q186 16 200 98l173 832q3 17 3 30t-1.5 22.5t-9 17.5t-13.5 12.5t-21.5 10t-26 8.5t-33.5 10q-13 3 -19 5v57h425z" />
86
+ <glyph unicode="&#xe050;" d="M1300 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-850q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v850h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM175 1000h-75v-800h75l-125 -167l-125 167h75v800h-75l125 167z" />
87
+ <glyph unicode="&#xe051;" d="M1100 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-650q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v650h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM1167 50l-167 -125v75h-800v-75l-167 125l167 125v-75h800v75z" />
88
+ <glyph unicode="&#xe052;" d="M50 1100h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 500h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
89
+ <glyph unicode="&#xe053;" d="M250 1100h700q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM250 500h700q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
90
+ <glyph unicode="&#xe054;" d="M500 950v100q0 21 14.5 35.5t35.5 14.5h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5zM100 650v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000 q-21 0 -35.5 14.5t-14.5 35.5zM300 350v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5zM0 50v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100 q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5z" />
91
+ <glyph unicode="&#xe055;" d="M50 1100h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 500h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
92
+ <glyph unicode="&#xe056;" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 1100h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 800h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 500h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 500h800q21 0 35.5 -14.5t14.5 -35.5v-100 q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 200h800 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
93
+ <glyph unicode="&#xe057;" d="M400 0h-100v1100h100v-1100zM550 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM550 800h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM267 550l-167 -125v75h-200v100h200v75zM550 500h300q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM550 200h600 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
94
+ <glyph unicode="&#xe058;" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM900 0h-100v1100h100v-1100zM50 800h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM1100 600h200v-100h-200v-75l-167 125l167 125v-75zM50 500h300q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h600 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
95
+ <glyph unicode="&#xe059;" d="M75 1000h750q31 0 53 -22t22 -53v-650q0 -31 -22 -53t-53 -22h-750q-31 0 -53 22t-22 53v650q0 31 22 53t53 22zM1200 300l-300 300l300 300v-600z" />
96
+ <glyph unicode="&#xe060;" d="M44 1100h1112q18 0 31 -13t13 -31v-1012q0 -18 -13 -31t-31 -13h-1112q-18 0 -31 13t-13 31v1012q0 18 13 31t31 13zM100 1000v-737l247 182l298 -131l-74 156l293 318l236 -288v500h-1000zM342 884q56 0 95 -39t39 -94.5t-39 -95t-95 -39.5t-95 39.5t-39 95t39 94.5 t95 39z" />
97
+ <glyph unicode="&#xe062;" d="M648 1169q117 0 216 -60t156.5 -161t57.5 -218q0 -115 -70 -258q-69 -109 -158 -225.5t-143 -179.5l-54 -62q-9 8 -25.5 24.5t-63.5 67.5t-91 103t-98.5 128t-95.5 148q-60 132 -60 249q0 88 34 169.5t91.5 142t137 96.5t166.5 36zM652.5 974q-91.5 0 -156.5 -65 t-65 -157t65 -156.5t156.5 -64.5t156.5 64.5t65 156.5t-65 157t-156.5 65z" />
98
+ <glyph unicode="&#xe063;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 173v854q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57z" />
99
+ <glyph unicode="&#xe064;" d="M554 1295q21 -72 57.5 -143.5t76 -130t83 -118t82.5 -117t70 -116t49.5 -126t18.5 -136.5q0 -71 -25.5 -135t-68.5 -111t-99 -82t-118.5 -54t-125.5 -23q-84 5 -161.5 34t-139.5 78.5t-99 125t-37 164.5q0 69 18 136.5t49.5 126.5t69.5 116.5t81.5 117.5t83.5 119 t76.5 131t58.5 143zM344 710q-23 -33 -43.5 -70.5t-40.5 -102.5t-17 -123q1 -37 14.5 -69.5t30 -52t41 -37t38.5 -24.5t33 -15q21 -7 32 -1t13 22l6 34q2 10 -2.5 22t-13.5 19q-5 4 -14 12t-29.5 40.5t-32.5 73.5q-26 89 6 271q2 11 -6 11q-8 1 -15 -10z" />
100
+ <glyph unicode="&#xe065;" d="M1000 1013l108 115q2 1 5 2t13 2t20.5 -1t25 -9.5t28.5 -21.5q22 -22 27 -43t0 -32l-6 -10l-108 -115zM350 1100h400q50 0 105 -13l-187 -187h-368q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v182l200 200v-332 q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5zM1009 803l-362 -362l-161 -50l55 170l355 355z" />
101
+ <glyph unicode="&#xe066;" d="M350 1100h361q-164 -146 -216 -200h-195q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5l200 153v-103q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5z M824 1073l339 -301q8 -7 8 -17.5t-8 -17.5l-340 -306q-7 -6 -12.5 -4t-6.5 11v203q-26 1 -54.5 0t-78.5 -7.5t-92 -17.5t-86 -35t-70 -57q10 59 33 108t51.5 81.5t65 58.5t68.5 40.5t67 24.5t56 13.5t40 4.5v210q1 10 6.5 12.5t13.5 -4.5z" />
102
+ <glyph unicode="&#xe067;" d="M350 1100h350q60 0 127 -23l-178 -177h-349q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v69l200 200v-219q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5z M643 639l395 395q7 7 17.5 7t17.5 -7l101 -101q7 -7 7 -17.5t-7 -17.5l-531 -532q-7 -7 -17.5 -7t-17.5 7l-248 248q-7 7 -7 17.5t7 17.5l101 101q7 7 17.5 7t17.5 -7l111 -111q8 -7 18 -7t18 7z" />
103
+ <glyph unicode="&#xe068;" d="M318 918l264 264q8 8 18 8t18 -8l260 -264q7 -8 4.5 -13t-12.5 -5h-170v-200h200v173q0 10 5 12t13 -5l264 -260q8 -7 8 -17.5t-8 -17.5l-264 -265q-8 -7 -13 -5t-5 12v173h-200v-200h170q10 0 12.5 -5t-4.5 -13l-260 -264q-8 -8 -18 -8t-18 8l-264 264q-8 8 -5.5 13 t12.5 5h175v200h-200v-173q0 -10 -5 -12t-13 5l-264 265q-8 7 -8 17.5t8 17.5l264 260q8 7 13 5t5 -12v-173h200v200h-175q-10 0 -12.5 5t5.5 13z" />
104
+ <glyph unicode="&#xe069;" d="M250 1100h100q21 0 35.5 -14.5t14.5 -35.5v-438l464 453q15 14 25.5 10t10.5 -25v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v1000q0 21 14.5 35.5t35.5 14.5z" />
105
+ <glyph unicode="&#xe070;" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-438l464 453q15 14 25.5 10t10.5 -25v-438l464 453q15 14 25.5 10t10.5 -25v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5 t-14.5 35.5v1000q0 21 14.5 35.5t35.5 14.5z" />
106
+ <glyph unicode="&#xe071;" d="M1200 1050v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -10.5 -25t-25.5 10l-492 480q-15 14 -15 35t15 35l492 480q15 14 25.5 10t10.5 -25v-438l464 453q15 14 25.5 10t10.5 -25z" />
107
+ <glyph unicode="&#xe072;" d="M243 1074l814 -498q18 -11 18 -26t-18 -26l-814 -498q-18 -11 -30.5 -4t-12.5 28v1000q0 21 12.5 28t30.5 -4z" />
108
+ <glyph unicode="&#xe073;" d="M250 1000h200q21 0 35.5 -14.5t14.5 -35.5v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5zM650 1000h200q21 0 35.5 -14.5t14.5 -35.5v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v800 q0 21 14.5 35.5t35.5 14.5z" />
109
+ <glyph unicode="&#xe074;" d="M1100 950v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5z" />
110
+ <glyph unicode="&#xe075;" d="M500 612v438q0 21 10.5 25t25.5 -10l492 -480q15 -14 15 -35t-15 -35l-492 -480q-15 -14 -25.5 -10t-10.5 25v438l-464 -453q-15 -14 -25.5 -10t-10.5 25v1000q0 21 10.5 25t25.5 -10z" />
111
+ <glyph unicode="&#xe076;" d="M1048 1102l100 1q20 0 35 -14.5t15 -35.5l5 -1000q0 -21 -14.5 -35.5t-35.5 -14.5l-100 -1q-21 0 -35.5 14.5t-14.5 35.5l-2 437l-463 -454q-14 -15 -24.5 -10.5t-10.5 25.5l-2 437l-462 -455q-15 -14 -25.5 -9.5t-10.5 24.5l-5 1000q0 21 10.5 25.5t25.5 -10.5l466 -450 l-2 438q0 20 10.5 24.5t25.5 -9.5l466 -451l-2 438q0 21 14.5 35.5t35.5 14.5z" />
112
+ <glyph unicode="&#xe077;" d="M850 1100h100q21 0 35.5 -14.5t14.5 -35.5v-1000q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v438l-464 -453q-15 -14 -25.5 -10t-10.5 25v1000q0 21 10.5 25t25.5 -10l464 -453v438q0 21 14.5 35.5t35.5 14.5z" />
113
+ <glyph unicode="&#xe078;" d="M686 1081l501 -540q15 -15 10.5 -26t-26.5 -11h-1042q-22 0 -26.5 11t10.5 26l501 540q15 15 36 15t36 -15zM150 400h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
114
+ <glyph unicode="&#xe079;" d="M885 900l-352 -353l352 -353l-197 -198l-552 552l552 550z" />
115
+ <glyph unicode="&#xe080;" d="M1064 547l-551 -551l-198 198l353 353l-353 353l198 198z" />
116
+ <glyph unicode="&#xe081;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM650 900h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-150h-150 q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5t35.5 -14.5h150v-150q0 -21 14.5 -35.5t35.5 -14.5h100q21 0 35.5 14.5t14.5 35.5v150h150q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5h-150v150q0 21 -14.5 35.5t-35.5 14.5z" />
117
+ <glyph unicode="&#xe082;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM850 700h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5 t35.5 -14.5h500q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5z" />
118
+ <glyph unicode="&#xe083;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM741.5 913q-12.5 0 -21.5 -9l-120 -120l-120 120q-9 9 -21.5 9 t-21.5 -9l-141 -141q-9 -9 -9 -21.5t9 -21.5l120 -120l-120 -120q-9 -9 -9 -21.5t9 -21.5l141 -141q9 -9 21.5 -9t21.5 9l120 120l120 -120q9 -9 21.5 -9t21.5 9l141 141q9 9 9 21.5t-9 21.5l-120 120l120 120q9 9 9 21.5t-9 21.5l-141 141q-9 9 -21.5 9z" />
119
+ <glyph unicode="&#xe084;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM546 623l-84 85q-7 7 -17.5 7t-18.5 -7l-139 -139q-7 -8 -7 -18t7 -18 l242 -241q7 -8 17.5 -8t17.5 8l375 375q7 7 7 17.5t-7 18.5l-139 139q-7 7 -17.5 7t-17.5 -7z" />
120
+ <glyph unicode="&#xe085;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM588 941q-29 0 -59 -5.5t-63 -20.5t-58 -38.5t-41.5 -63t-16.5 -89.5 q0 -25 20 -25h131q30 -5 35 11q6 20 20.5 28t45.5 8q20 0 31.5 -10.5t11.5 -28.5q0 -23 -7 -34t-26 -18q-1 0 -13.5 -4t-19.5 -7.5t-20 -10.5t-22 -17t-18.5 -24t-15.5 -35t-8 -46q-1 -8 5.5 -16.5t20.5 -8.5h173q7 0 22 8t35 28t37.5 48t29.5 74t12 100q0 47 -17 83 t-42.5 57t-59.5 34.5t-64 18t-59 4.5zM675 400h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5z" />
121
+ <glyph unicode="&#xe086;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM675 1000h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5 t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5zM675 700h-250q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h75v-200h-75q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h350q10 0 17.5 7.5t7.5 17.5v50q0 10 -7.5 17.5 t-17.5 7.5h-75v275q0 10 -7.5 17.5t-17.5 7.5z" />
122
+ <glyph unicode="&#xe087;" d="M525 1200h150q10 0 17.5 -7.5t7.5 -17.5v-194q103 -27 178.5 -102.5t102.5 -178.5h194q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-194q-27 -103 -102.5 -178.5t-178.5 -102.5v-194q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v194 q-103 27 -178.5 102.5t-102.5 178.5h-194q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h194q27 103 102.5 178.5t178.5 102.5v194q0 10 7.5 17.5t17.5 7.5zM700 893v-168q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v168q-68 -23 -119 -74 t-74 -119h168q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-168q23 -68 74 -119t119 -74v168q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-168q68 23 119 74t74 119h-168q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h168 q-23 68 -74 119t-119 74z" />
123
+ <glyph unicode="&#xe088;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM759 823l64 -64q7 -7 7 -17.5t-7 -17.5l-124 -124l124 -124q7 -7 7 -17.5t-7 -17.5l-64 -64q-7 -7 -17.5 -7t-17.5 7l-124 124l-124 -124q-7 -7 -17.5 -7t-17.5 7l-64 64 q-7 7 -7 17.5t7 17.5l124 124l-124 124q-7 7 -7 17.5t7 17.5l64 64q7 7 17.5 7t17.5 -7l124 -124l124 124q7 7 17.5 7t17.5 -7z" />
124
+ <glyph unicode="&#xe089;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM782 788l106 -106q7 -7 7 -17.5t-7 -17.5l-320 -321q-8 -7 -18 -7t-18 7l-202 203q-8 7 -8 17.5t8 17.5l106 106q7 8 17.5 8t17.5 -8l79 -79l197 197q7 7 17.5 7t17.5 -7z" />
125
+ <glyph unicode="&#xe090;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5q0 -120 65 -225 l587 587q-105 65 -225 65zM965 819l-584 -584q104 -62 219 -62q116 0 214.5 57t155.5 155.5t57 214.5q0 115 -62 219z" />
126
+ <glyph unicode="&#xe091;" d="M39 582l522 427q16 13 27.5 8t11.5 -26v-291h550q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-550v-291q0 -21 -11.5 -26t-27.5 8l-522 427q-16 13 -16 32t16 32z" />
127
+ <glyph unicode="&#xe092;" d="M639 1009l522 -427q16 -13 16 -32t-16 -32l-522 -427q-16 -13 -27.5 -8t-11.5 26v291h-550q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h550v291q0 21 11.5 26t27.5 -8z" />
128
+ <glyph unicode="&#xe093;" d="M682 1161l427 -522q13 -16 8 -27.5t-26 -11.5h-291v-550q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v550h-291q-21 0 -26 11.5t8 27.5l427 522q13 16 32 16t32 -16z" />
129
+ <glyph unicode="&#xe094;" d="M550 1200h200q21 0 35.5 -14.5t14.5 -35.5v-550h291q21 0 26 -11.5t-8 -27.5l-427 -522q-13 -16 -32 -16t-32 16l-427 522q-13 16 -8 27.5t26 11.5h291v550q0 21 14.5 35.5t35.5 14.5z" />
130
+ <glyph unicode="&#xe095;" d="M639 1109l522 -427q16 -13 16 -32t-16 -32l-522 -427q-16 -13 -27.5 -8t-11.5 26v291q-94 -2 -182 -20t-170.5 -52t-147 -92.5t-100.5 -135.5q5 105 27 193.5t67.5 167t113 135t167 91.5t225.5 42v262q0 21 11.5 26t27.5 -8z" />
131
+ <glyph unicode="&#xe096;" d="M850 1200h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94l-249 -249q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l249 249l-94 94q-14 14 -10 24.5t25 10.5zM350 0h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l249 249 q8 7 18 7t18 -7l106 -106q7 -8 7 -18t-7 -18l-249 -249l94 -94q14 -14 10 -24.5t-25 -10.5z" />
132
+ <glyph unicode="&#xe097;" d="M1014 1120l106 -106q7 -8 7 -18t-7 -18l-249 -249l94 -94q14 -14 10 -24.5t-25 -10.5h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l249 249q8 7 18 7t18 -7zM250 600h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94 l-249 -249q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l249 249l-94 94q-14 14 -10 24.5t25 10.5z" />
133
+ <glyph unicode="&#xe101;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM704 900h-208q-20 0 -32 -14.5t-8 -34.5l58 -302q4 -20 21.5 -34.5 t37.5 -14.5h54q20 0 37.5 14.5t21.5 34.5l58 302q4 20 -8 34.5t-32 14.5zM675 400h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5z" />
134
+ <glyph unicode="&#xe102;" d="M260 1200q9 0 19 -2t15 -4l5 -2q22 -10 44 -23l196 -118q21 -13 36 -24q29 -21 37 -12q11 13 49 35l196 118q22 13 45 23q17 7 38 7q23 0 47 -16.5t37 -33.5l13 -16q14 -21 18 -45l25 -123l8 -44q1 -9 8.5 -14.5t17.5 -5.5h61q10 0 17.5 -7.5t7.5 -17.5v-50 q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 -7.5t-7.5 -17.5v-175h-400v300h-200v-300h-400v175q0 10 -7.5 17.5t-17.5 7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5h61q11 0 18 3t7 8q0 4 9 52l25 128q5 25 19 45q2 3 5 7t13.5 15t21.5 19.5t26.5 15.5 t29.5 7zM915 1079l-166 -162q-7 -7 -5 -12t12 -5h219q10 0 15 7t2 17l-51 149q-3 10 -11 12t-15 -6zM463 917l-177 157q-8 7 -16 5t-11 -12l-51 -143q-3 -10 2 -17t15 -7h231q11 0 12.5 5t-5.5 12zM500 0h-375q-10 0 -17.5 7.5t-7.5 17.5v375h400v-400zM1100 400v-375 q0 -10 -7.5 -17.5t-17.5 -7.5h-375v400h400z" />
135
+ <glyph unicode="&#xe103;" d="M1165 1190q8 3 21 -6.5t13 -17.5q-2 -178 -24.5 -323.5t-55.5 -245.5t-87 -174.5t-102.5 -118.5t-118 -68.5t-118.5 -33t-120 -4.5t-105 9.5t-90 16.5q-61 12 -78 11q-4 1 -12.5 0t-34 -14.5t-52.5 -40.5l-153 -153q-26 -24 -37 -14.5t-11 43.5q0 64 42 102q8 8 50.5 45 t66.5 58q19 17 35 47t13 61q-9 55 -10 102.5t7 111t37 130t78 129.5q39 51 80 88t89.5 63.5t94.5 45t113.5 36t129 31t157.5 37t182 47.5zM1116 1098q-8 9 -22.5 -3t-45.5 -50q-38 -47 -119 -103.5t-142 -89.5l-62 -33q-56 -30 -102 -57t-104 -68t-102.5 -80.5t-85.5 -91 t-64 -104.5q-24 -56 -31 -86t2 -32t31.5 17.5t55.5 59.5q25 30 94 75.5t125.5 77.5t147.5 81q70 37 118.5 69t102 79.5t99 111t86.5 148.5q22 50 24 60t-6 19z" />
136
+ <glyph unicode="&#xe104;" d="M653 1231q-39 -67 -54.5 -131t-10.5 -114.5t24.5 -96.5t47.5 -80t63.5 -62.5t68.5 -46.5t65 -30q-4 7 -17.5 35t-18.5 39.5t-17 39.5t-17 43t-13 42t-9.5 44.5t-2 42t4 43t13.5 39t23 38.5q96 -42 165 -107.5t105 -138t52 -156t13 -159t-19 -149.5q-13 -55 -44 -106.5 t-68 -87t-78.5 -64.5t-72.5 -45t-53 -22q-72 -22 -127 -11q-31 6 -13 19q6 3 17 7q13 5 32.5 21t41 44t38.5 63.5t21.5 81.5t-6.5 94.5t-50 107t-104 115.5q10 -104 -0.5 -189t-37 -140.5t-65 -93t-84 -52t-93.5 -11t-95 24.5q-80 36 -131.5 114t-53.5 171q-2 23 0 49.5 t4.5 52.5t13.5 56t27.5 60t46 64.5t69.5 68.5q-8 -53 -5 -102.5t17.5 -90t34 -68.5t44.5 -39t49 -2q31 13 38.5 36t-4.5 55t-29 64.5t-36 75t-26 75.5q-15 85 2 161.5t53.5 128.5t85.5 92.5t93.5 61t81.5 25.5z" />
137
+ <glyph unicode="&#xe105;" d="M600 1094q82 0 160.5 -22.5t140 -59t116.5 -82.5t94.5 -95t68 -95t42.5 -82.5t14 -57.5t-14 -57.5t-43 -82.5t-68.5 -95t-94.5 -95t-116.5 -82.5t-140 -59t-159.5 -22.5t-159.5 22.5t-140 59t-116.5 82.5t-94.5 95t-68.5 95t-43 82.5t-14 57.5t14 57.5t42.5 82.5t68 95 t94.5 95t116.5 82.5t140 59t160.5 22.5zM888 829q-15 15 -18 12t5 -22q25 -57 25 -119q0 -124 -88 -212t-212 -88t-212 88t-88 212q0 59 23 114q8 19 4.5 22t-17.5 -12q-70 -69 -160 -184q-13 -16 -15 -40.5t9 -42.5q22 -36 47 -71t70 -82t92.5 -81t113 -58.5t133.5 -24.5 t133.5 24t113 58.5t92.5 81.5t70 81.5t47 70.5q11 18 9 42.5t-14 41.5q-90 117 -163 189zM448 727l-35 -36q-15 -15 -19.5 -38.5t4.5 -41.5q37 -68 93 -116q16 -13 38.5 -11t36.5 17l35 34q14 15 12.5 33.5t-16.5 33.5q-44 44 -89 117q-11 18 -28 20t-32 -12z" />
138
+ <glyph unicode="&#xe106;" d="M592 0h-148l31 120q-91 20 -175.5 68.5t-143.5 106.5t-103.5 119t-66.5 110t-22 76q0 21 14 57.5t42.5 82.5t68 95t94.5 95t116.5 82.5t140 59t160.5 22.5q61 0 126 -15l32 121h148zM944 770l47 181q108 -85 176.5 -192t68.5 -159q0 -26 -19.5 -71t-59.5 -102t-93 -112 t-129 -104.5t-158 -75.5l46 173q77 49 136 117t97 131q11 18 9 42.5t-14 41.5q-54 70 -107 130zM310 824q-70 -69 -160 -184q-13 -16 -15 -40.5t9 -42.5q18 -30 39 -60t57 -70.5t74 -73t90 -61t105 -41.5l41 154q-107 18 -178.5 101.5t-71.5 193.5q0 59 23 114q8 19 4.5 22 t-17.5 -12zM448 727l-35 -36q-15 -15 -19.5 -38.5t4.5 -41.5q37 -68 93 -116q16 -13 38.5 -11t36.5 17l12 11l22 86l-3 4q-44 44 -89 117q-11 18 -28 20t-32 -12z" />
139
+ <glyph unicode="&#xe107;" d="M-90 100l642 1066q20 31 48 28.5t48 -35.5l642 -1056q21 -32 7.5 -67.5t-50.5 -35.5h-1294q-37 0 -50.5 34t7.5 66zM155 200h345v75q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-75h345l-445 723zM496 700h208q20 0 32 -14.5t8 -34.5l-58 -252 q-4 -20 -21.5 -34.5t-37.5 -14.5h-54q-20 0 -37.5 14.5t-21.5 34.5l-58 252q-4 20 8 34.5t32 14.5z" />
140
+ <glyph unicode="&#xe108;" d="M650 1200q62 0 106 -44t44 -106v-339l363 -325q15 -14 26 -38.5t11 -44.5v-41q0 -20 -12 -26.5t-29 5.5l-359 249v-263q100 -93 100 -113v-64q0 -21 -13 -29t-32 1l-205 128l-205 -128q-19 -9 -32 -1t-13 29v64q0 20 100 113v263l-359 -249q-17 -12 -29 -5.5t-12 26.5v41 q0 20 11 44.5t26 38.5l363 325v339q0 62 44 106t106 44z" />
141
+ <glyph unicode="&#xe109;" d="M850 1200h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-150h-1100v150q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-50h500v50q0 21 14.5 35.5t35.5 14.5zM1100 800v-750q0 -21 -14.5 -35.5 t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v750h1100zM100 600v-100h100v100h-100zM300 600v-100h100v100h-100zM500 600v-100h100v100h-100zM700 600v-100h100v100h-100zM900 600v-100h100v100h-100zM100 400v-100h100v100h-100zM300 400v-100h100v100h-100zM500 400 v-100h100v100h-100zM700 400v-100h100v100h-100zM900 400v-100h100v100h-100zM100 200v-100h100v100h-100zM300 200v-100h100v100h-100zM500 200v-100h100v100h-100zM700 200v-100h100v100h-100zM900 200v-100h100v100h-100z" />
142
+ <glyph unicode="&#xe110;" d="M1135 1165l249 -230q15 -14 15 -35t-15 -35l-249 -230q-14 -14 -24.5 -10t-10.5 25v150h-159l-600 -600h-291q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h209l600 600h241v150q0 21 10.5 25t24.5 -10zM522 819l-141 -141l-122 122h-209q-21 0 -35.5 14.5 t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h291zM1135 565l249 -230q15 -14 15 -35t-15 -35l-249 -230q-14 -14 -24.5 -10t-10.5 25v150h-241l-181 181l141 141l122 -122h159v150q0 21 10.5 25t24.5 -10z" />
143
+ <glyph unicode="&#xe111;" d="M100 1100h1000q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-596l-304 -300v300h-100q-41 0 -70.5 29.5t-29.5 70.5v600q0 41 29.5 70.5t70.5 29.5z" />
144
+ <glyph unicode="&#xe112;" d="M150 1200h200q21 0 35.5 -14.5t14.5 -35.5v-250h-300v250q0 21 14.5 35.5t35.5 14.5zM850 1200h200q21 0 35.5 -14.5t14.5 -35.5v-250h-300v250q0 21 14.5 35.5t35.5 14.5zM1100 800v-300q0 -41 -3 -77.5t-15 -89.5t-32 -96t-58 -89t-89 -77t-129 -51t-174 -20t-174 20 t-129 51t-89 77t-58 89t-32 96t-15 89.5t-3 77.5v300h300v-250v-27v-42.5t1.5 -41t5 -38t10 -35t16.5 -30t25.5 -24.5t35 -19t46.5 -12t60 -4t60 4.5t46.5 12.5t35 19.5t25 25.5t17 30.5t10 35t5 38t2 40.5t-0.5 42v25v250h300z" />
145
+ <glyph unicode="&#xe113;" d="M1100 411l-198 -199l-353 353l-353 -353l-197 199l551 551z" />
146
+ <glyph unicode="&#xe114;" d="M1101 789l-550 -551l-551 551l198 199l353 -353l353 353z" />
147
+ <glyph unicode="&#xe115;" d="M404 1000h746q21 0 35.5 -14.5t14.5 -35.5v-551h150q21 0 25 -10.5t-10 -24.5l-230 -249q-14 -15 -35 -15t-35 15l-230 249q-14 14 -10 24.5t25 10.5h150v401h-381zM135 984l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-400h385l215 -200h-750q-21 0 -35.5 14.5 t-14.5 35.5v550h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
148
+ <glyph unicode="&#xe116;" d="M56 1200h94q17 0 31 -11t18 -27l38 -162h896q24 0 39 -18.5t10 -42.5l-100 -475q-5 -21 -27 -42.5t-55 -21.5h-633l48 -200h535q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-50q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v50h-300v-50 q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v50h-31q-18 0 -32.5 10t-20.5 19l-5 10l-201 961h-54q-20 0 -35 14.5t-15 35.5t15 35.5t35 14.5z" />
149
+ <glyph unicode="&#xe117;" d="M1200 1000v-100h-1200v100h200q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5h500zM0 800h1200v-800h-1200v800z" />
150
+ <glyph unicode="&#xe118;" d="M200 800l-200 -400v600h200q0 41 29.5 70.5t70.5 29.5h300q42 0 71 -29.5t29 -70.5h500v-200h-1000zM1500 700l-300 -700h-1200l300 700h1200z" />
151
+ <glyph unicode="&#xe119;" d="M635 1184l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-601h150q21 0 25 -10.5t-10 -24.5l-230 -249q-14 -15 -35 -15t-35 15l-230 249q-14 14 -10 24.5t25 10.5h150v601h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
152
+ <glyph unicode="&#xe120;" d="M936 864l249 -229q14 -15 14 -35.5t-14 -35.5l-249 -229q-15 -15 -25.5 -10.5t-10.5 24.5v151h-600v-151q0 -20 -10.5 -24.5t-25.5 10.5l-249 229q-14 15 -14 35.5t14 35.5l249 229q15 15 25.5 10.5t10.5 -25.5v-149h600v149q0 21 10.5 25.5t25.5 -10.5z" />
153
+ <glyph unicode="&#xe121;" d="M1169 400l-172 732q-5 23 -23 45.5t-38 22.5h-672q-20 0 -38 -20t-23 -41l-172 -739h1138zM1100 300h-1000q-41 0 -70.5 -29.5t-29.5 -70.5v-100q0 -41 29.5 -70.5t70.5 -29.5h1000q41 0 70.5 29.5t29.5 70.5v100q0 41 -29.5 70.5t-70.5 29.5zM800 100v100h100v-100h-100 zM1000 100v100h100v-100h-100z" />
154
+ <glyph unicode="&#xe122;" d="M1150 1100q21 0 35.5 -14.5t14.5 -35.5v-850q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v850q0 21 14.5 35.5t35.5 14.5zM1000 200l-675 200h-38l47 -276q3 -16 -5.5 -20t-29.5 -4h-7h-84q-20 0 -34.5 14t-18.5 35q-55 337 -55 351v250v6q0 16 1 23.5t6.5 14 t17.5 6.5h200l675 250v-850zM0 750v-250q-4 0 -11 0.5t-24 6t-30 15t-24 30t-11 48.5v50q0 26 10.5 46t25 30t29 16t25.5 7z" />
155
+ <glyph unicode="&#xe123;" d="M553 1200h94q20 0 29 -10.5t3 -29.5l-18 -37q83 -19 144 -82.5t76 -140.5l63 -327l118 -173h17q19 0 33 -14.5t14 -35t-13 -40.5t-31 -27q-8 -4 -23 -9.5t-65 -19.5t-103 -25t-132.5 -20t-158.5 -9q-57 0 -115 5t-104 12t-88.5 15.5t-73.5 17.5t-54.5 16t-35.5 12l-11 4 q-18 8 -31 28t-13 40.5t14 35t33 14.5h17l118 173l63 327q15 77 76 140t144 83l-18 32q-6 19 3.5 32t28.5 13zM498 110q50 -6 102 -6q53 0 102 6q-12 -49 -39.5 -79.5t-62.5 -30.5t-63 30.5t-39 79.5z" />
156
+ <glyph unicode="&#xe124;" d="M800 946l224 78l-78 -224l234 -45l-180 -155l180 -155l-234 -45l78 -224l-224 78l-45 -234l-155 180l-155 -180l-45 234l-224 -78l78 224l-234 45l180 155l-180 155l234 45l-78 224l224 -78l45 234l155 -180l155 180z" />
157
+ <glyph unicode="&#xe125;" d="M650 1200h50q40 0 70 -40.5t30 -84.5v-150l-28 -125h328q40 0 70 -40.5t30 -84.5v-100q0 -45 -29 -74l-238 -344q-16 -24 -38 -40.5t-45 -16.5h-250q-7 0 -42 25t-66 50l-31 25h-61q-45 0 -72.5 18t-27.5 57v400q0 36 20 63l145 196l96 198q13 28 37.5 48t51.5 20z M650 1100l-100 -212l-150 -213v-375h100l136 -100h214l250 375v125h-450l50 225v175h-50zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5z" />
158
+ <glyph unicode="&#xe126;" d="M600 1100h250q23 0 45 -16.5t38 -40.5l238 -344q29 -29 29 -74v-100q0 -44 -30 -84.5t-70 -40.5h-328q28 -118 28 -125v-150q0 -44 -30 -84.5t-70 -40.5h-50q-27 0 -51.5 20t-37.5 48l-96 198l-145 196q-20 27 -20 63v400q0 39 27.5 57t72.5 18h61q124 100 139 100z M50 1000h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5zM636 1000l-136 -100h-100v-375l150 -213l100 -212h50v175l-50 225h450v125l-250 375h-214z" />
159
+ <glyph unicode="&#xe127;" d="M356 873l363 230q31 16 53 -6l110 -112q13 -13 13.5 -32t-11.5 -34l-84 -121h302q84 0 138 -38t54 -110t-55 -111t-139 -39h-106l-131 -339q-6 -21 -19.5 -41t-28.5 -20h-342q-7 0 -90 81t-83 94v525q0 17 14 35.5t28 28.5zM400 792v-503l100 -89h293l131 339 q6 21 19.5 41t28.5 20h203q21 0 30.5 25t0.5 50t-31 25h-456h-7h-6h-5.5t-6 0.5t-5 1.5t-5 2t-4 2.5t-4 4t-2.5 4.5q-12 25 5 47l146 183l-86 83zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500 q0 21 14.5 35.5t35.5 14.5z" />
160
+ <glyph unicode="&#xe128;" d="M475 1103l366 -230q2 -1 6 -3.5t14 -10.5t18 -16.5t14.5 -20t6.5 -22.5v-525q0 -13 -86 -94t-93 -81h-342q-15 0 -28.5 20t-19.5 41l-131 339h-106q-85 0 -139.5 39t-54.5 111t54 110t138 38h302l-85 121q-11 15 -10.5 34t13.5 32l110 112q22 22 53 6zM370 945l146 -183 q17 -22 5 -47q-2 -2 -3.5 -4.5t-4 -4t-4 -2.5t-5 -2t-5 -1.5t-6 -0.5h-6h-6.5h-6h-475v-100h221q15 0 29 -20t20 -41l130 -339h294l106 89v503l-342 236zM1050 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5 v500q0 21 14.5 35.5t35.5 14.5z" />
161
+ <glyph unicode="&#xe129;" d="M550 1294q72 0 111 -55t39 -139v-106l339 -131q21 -6 41 -19.5t20 -28.5v-342q0 -7 -81 -90t-94 -83h-525q-17 0 -35.5 14t-28.5 28l-9 14l-230 363q-16 31 6 53l112 110q13 13 32 13.5t34 -11.5l121 -84v302q0 84 38 138t110 54zM600 972v203q0 21 -25 30.5t-50 0.5 t-25 -31v-456v-7v-6v-5.5t-0.5 -6t-1.5 -5t-2 -5t-2.5 -4t-4 -4t-4.5 -2.5q-25 -12 -47 5l-183 146l-83 -86l236 -339h503l89 100v293l-339 131q-21 6 -41 19.5t-20 28.5zM450 200h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
162
+ <glyph unicode="&#xe130;" d="M350 1100h500q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5t35.5 -14.5zM600 306v-106q0 -84 -39 -139t-111 -55t-110 54t-38 138v302l-121 -84q-15 -12 -34 -11.5t-32 13.5l-112 110 q-22 22 -6 53l230 363q1 2 3.5 6t10.5 13.5t16.5 17t20 13.5t22.5 6h525q13 0 94 -83t81 -90v-342q0 -15 -20 -28.5t-41 -19.5zM308 900l-236 -339l83 -86l183 146q22 17 47 5q2 -1 4.5 -2.5t4 -4t2.5 -4t2 -5t1.5 -5t0.5 -6v-5.5v-6v-7v-456q0 -22 25 -31t50 0.5t25 30.5 v203q0 15 20 28.5t41 19.5l339 131v293l-89 100h-503z" />
163
+ <glyph unicode="&#xe131;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM914 632l-275 223q-16 13 -27.5 8t-11.5 -26v-137h-275 q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h275v-137q0 -21 11.5 -26t27.5 8l275 223q16 13 16 32t-16 32z" />
164
+ <glyph unicode="&#xe132;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM561 855l-275 -223q-16 -13 -16 -32t16 -32l275 -223q16 -13 27.5 -8 t11.5 26v137h275q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5h-275v137q0 21 -11.5 26t-27.5 -8z" />
165
+ <glyph unicode="&#xe133;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM855 639l-223 275q-13 16 -32 16t-32 -16l-223 -275q-13 -16 -8 -27.5 t26 -11.5h137v-275q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v275h137q21 0 26 11.5t-8 27.5z" />
166
+ <glyph unicode="&#xe134;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM675 900h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-275h-137q-21 0 -26 -11.5 t8 -27.5l223 -275q13 -16 32 -16t32 16l223 275q13 16 8 27.5t-26 11.5h-137v275q0 10 -7.5 17.5t-17.5 7.5z" />
167
+ <glyph unicode="&#xe135;" d="M600 1176q116 0 222.5 -46t184 -123.5t123.5 -184t46 -222.5t-46 -222.5t-123.5 -184t-184 -123.5t-222.5 -46t-222.5 46t-184 123.5t-123.5 184t-46 222.5t46 222.5t123.5 184t184 123.5t222.5 46zM627 1101q-15 -12 -36.5 -20.5t-35.5 -12t-43 -8t-39 -6.5 q-15 -3 -45.5 0t-45.5 -2q-20 -7 -51.5 -26.5t-34.5 -34.5q-3 -11 6.5 -22.5t8.5 -18.5q-3 -34 -27.5 -91t-29.5 -79q-9 -34 5 -93t8 -87q0 -9 17 -44.5t16 -59.5q12 0 23 -5t23.5 -15t19.5 -14q16 -8 33 -15t40.5 -15t34.5 -12q21 -9 52.5 -32t60 -38t57.5 -11 q7 -15 -3 -34t-22.5 -40t-9.5 -38q13 -21 23 -34.5t27.5 -27.5t36.5 -18q0 -7 -3.5 -16t-3.5 -14t5 -17q104 -2 221 112q30 29 46.5 47t34.5 49t21 63q-13 8 -37 8.5t-36 7.5q-15 7 -49.5 15t-51.5 19q-18 0 -41 -0.5t-43 -1.5t-42 -6.5t-38 -16.5q-51 -35 -66 -12 q-4 1 -3.5 25.5t0.5 25.5q-6 13 -26.5 17.5t-24.5 6.5q1 15 -0.5 30.5t-7 28t-18.5 11.5t-31 -21q-23 -25 -42 4q-19 28 -8 58q6 16 22 22q6 -1 26 -1.5t33.5 -4t19.5 -13.5q7 -12 18 -24t21.5 -20.5t20 -15t15.5 -10.5l5 -3q2 12 7.5 30.5t8 34.5t-0.5 32q-3 18 3.5 29 t18 22.5t15.5 24.5q6 14 10.5 35t8 31t15.5 22.5t34 22.5q-6 18 10 36q8 0 24 -1.5t24.5 -1.5t20 4.5t20.5 15.5q-10 23 -31 42.5t-37.5 29.5t-49 27t-43.5 23q0 1 2 8t3 11.5t1.5 10.5t-1 9.5t-4.5 4.5q31 -13 58.5 -14.5t38.5 2.5l12 5q5 28 -9.5 46t-36.5 24t-50 15 t-41 20q-18 -4 -37 0zM613 994q0 -17 8 -42t17 -45t9 -23q-8 1 -39.5 5.5t-52.5 10t-37 16.5q3 11 16 29.5t16 25.5q10 -10 19 -10t14 6t13.5 14.5t16.5 12.5z" />
168
+ <glyph unicode="&#xe136;" d="M756 1157q164 92 306 -9l-259 -138l145 -232l251 126q6 -89 -34 -156.5t-117 -110.5q-60 -34 -127 -39.5t-126 16.5l-596 -596q-15 -16 -36.5 -16t-36.5 16l-111 110q-15 15 -15 36.5t15 37.5l600 599q-34 101 5.5 201.5t135.5 154.5z" />
169
+ <glyph unicode="&#xe137;" horiz-adv-x="1220" d="M100 1196h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 1096h-200v-100h200v100zM100 796h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 696h-500v-100h500v100zM100 396h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 296h-300v-100h300v100z " />
170
+ <glyph unicode="&#xe138;" d="M150 1200h900q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM700 500v-300l-200 -200v500l-350 500h900z" />
171
+ <glyph unicode="&#xe139;" d="M500 1200h200q41 0 70.5 -29.5t29.5 -70.5v-100h300q41 0 70.5 -29.5t29.5 -70.5v-400h-500v100h-200v-100h-500v400q0 41 29.5 70.5t70.5 29.5h300v100q0 41 29.5 70.5t70.5 29.5zM500 1100v-100h200v100h-200zM1200 400v-200q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5v200h1200z" />
172
+ <glyph unicode="&#xe140;" d="M50 1200h300q21 0 25 -10.5t-10 -24.5l-94 -94l199 -199q7 -8 7 -18t-7 -18l-106 -106q-8 -7 -18 -7t-18 7l-199 199l-94 -94q-14 -14 -24.5 -10t-10.5 25v300q0 21 14.5 35.5t35.5 14.5zM850 1200h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94 l-199 -199q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l199 199l-94 94q-14 14 -10 24.5t25 10.5zM364 470l106 -106q7 -8 7 -18t-7 -18l-199 -199l94 -94q14 -14 10 -24.5t-25 -10.5h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l199 199 q8 7 18 7t18 -7zM1071 271l94 94q14 14 24.5 10t10.5 -25v-300q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -25 10.5t10 24.5l94 94l-199 199q-7 8 -7 18t7 18l106 106q8 7 18 7t18 -7z" />
173
+ <glyph unicode="&#xe141;" d="M596 1192q121 0 231.5 -47.5t190 -127t127 -190t47.5 -231.5t-47.5 -231.5t-127 -190.5t-190 -127t-231.5 -47t-231.5 47t-190.5 127t-127 190.5t-47 231.5t47 231.5t127 190t190.5 127t231.5 47.5zM596 1010q-112 0 -207.5 -55.5t-151 -151t-55.5 -207.5t55.5 -207.5 t151 -151t207.5 -55.5t207.5 55.5t151 151t55.5 207.5t-55.5 207.5t-151 151t-207.5 55.5zM454.5 905q22.5 0 38.5 -16t16 -38.5t-16 -39t-38.5 -16.5t-38.5 16.5t-16 39t16 38.5t38.5 16zM754.5 905q22.5 0 38.5 -16t16 -38.5t-16 -39t-38 -16.5q-14 0 -29 10l-55 -145 q17 -23 17 -51q0 -36 -25.5 -61.5t-61.5 -25.5t-61.5 25.5t-25.5 61.5q0 32 20.5 56.5t51.5 29.5l122 126l1 1q-9 14 -9 28q0 23 16 39t38.5 16zM345.5 709q22.5 0 38.5 -16t16 -38.5t-16 -38.5t-38.5 -16t-38.5 16t-16 38.5t16 38.5t38.5 16zM854.5 709q22.5 0 38.5 -16 t16 -38.5t-16 -38.5t-38.5 -16t-38.5 16t-16 38.5t16 38.5t38.5 16z" />
174
+ <glyph unicode="&#xe142;" d="M546 173l469 470q91 91 99 192q7 98 -52 175.5t-154 94.5q-22 4 -47 4q-34 0 -66.5 -10t-56.5 -23t-55.5 -38t-48 -41.5t-48.5 -47.5q-376 -375 -391 -390q-30 -27 -45 -41.5t-37.5 -41t-32 -46.5t-16 -47.5t-1.5 -56.5q9 -62 53.5 -95t99.5 -33q74 0 125 51l548 548 q36 36 20 75q-7 16 -21.5 26t-32.5 10q-26 0 -50 -23q-13 -12 -39 -38l-341 -338q-15 -15 -35.5 -15.5t-34.5 13.5t-14 34.5t14 34.5q327 333 361 367q35 35 67.5 51.5t78.5 16.5q14 0 29 -1q44 -8 74.5 -35.5t43.5 -68.5q14 -47 2 -96.5t-47 -84.5q-12 -11 -32 -32 t-79.5 -81t-114.5 -115t-124.5 -123.5t-123 -119.5t-96.5 -89t-57 -45q-56 -27 -120 -27q-70 0 -129 32t-93 89q-48 78 -35 173t81 163l511 511q71 72 111 96q91 55 198 55q80 0 152 -33q78 -36 129.5 -103t66.5 -154q17 -93 -11 -183.5t-94 -156.5l-482 -476 q-15 -15 -36 -16t-37 14t-17.5 34t14.5 35z" />
175
+ <glyph unicode="&#xe143;" d="M649 949q48 68 109.5 104t121.5 38.5t118.5 -20t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-150 152.5t-126.5 127.5t-93.5 124.5t-33.5 117.5q0 64 28 123t73 100.5t104 64t119 20 t120.5 -38.5t104.5 -104zM896 972q-33 0 -64.5 -19t-56.5 -46t-47.5 -53.5t-43.5 -45.5t-37.5 -19t-36 19t-40 45.5t-43 53.5t-54 46t-65.5 19q-67 0 -122.5 -55.5t-55.5 -132.5q0 -23 13.5 -51t46 -65t57.5 -63t76 -75l22 -22q15 -14 44 -44t50.5 -51t46 -44t41 -35t23 -12 t23.5 12t42.5 36t46 44t52.5 52t44 43q4 4 12 13q43 41 63.5 62t52 55t46 55t26 46t11.5 44q0 79 -53 133.5t-120 54.5z" />
176
+ <glyph unicode="&#xe144;" d="M776.5 1214q93.5 0 159.5 -66l141 -141q66 -66 66 -160q0 -42 -28 -95.5t-62 -87.5l-29 -29q-31 53 -77 99l-18 18l95 95l-247 248l-389 -389l212 -212l-105 -106l-19 18l-141 141q-66 66 -66 159t66 159l283 283q65 66 158.5 66zM600 706l105 105q10 -8 19 -17l141 -141 q66 -66 66 -159t-66 -159l-283 -283q-66 -66 -159 -66t-159 66l-141 141q-66 66 -66 159.5t66 159.5l55 55q29 -55 75 -102l18 -17l-95 -95l247 -248l389 389z" />
177
+ <glyph unicode="&#xe145;" d="M603 1200q85 0 162 -15t127 -38t79 -48t29 -46v-953q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-41 0 -70.5 29.5t-29.5 70.5v953q0 21 30 46.5t81 48t129 37.5t163 15zM300 1000v-700h600v700h-600zM600 254q-43 0 -73.5 -30.5t-30.5 -73.5t30.5 -73.5t73.5 -30.5t73.5 30.5 t30.5 73.5t-30.5 73.5t-73.5 30.5z" />
178
+ <glyph unicode="&#xe146;" d="M902 1185l283 -282q15 -15 15 -36t-14.5 -35.5t-35.5 -14.5t-35 15l-36 35l-279 -267v-300l-212 210l-308 -307l-280 -203l203 280l307 308l-210 212h300l267 279l-35 36q-15 14 -15 35t14.5 35.5t35.5 14.5t35 -15z" />
179
+ <glyph unicode="&#xe148;" d="M700 1248v-78q38 -5 72.5 -14.5t75.5 -31.5t71 -53.5t52 -84t24 -118.5h-159q-4 36 -10.5 59t-21 45t-40 35.5t-64.5 20.5v-307l64 -13q34 -7 64 -16.5t70 -32t67.5 -52.5t47.5 -80t20 -112q0 -139 -89 -224t-244 -97v-77h-100v79q-150 16 -237 103q-40 40 -52.5 93.5 t-15.5 139.5h139q5 -77 48.5 -126t117.5 -65v335l-27 8q-46 14 -79 26.5t-72 36t-63 52t-40 72.5t-16 98q0 70 25 126t67.5 92t94.5 57t110 27v77h100zM600 754v274q-29 -4 -50 -11t-42 -21.5t-31.5 -41.5t-10.5 -65q0 -29 7 -50.5t16.5 -34t28.5 -22.5t31.5 -14t37.5 -10 q9 -3 13 -4zM700 547v-310q22 2 42.5 6.5t45 15.5t41.5 27t29 42t12 59.5t-12.5 59.5t-38 44.5t-53 31t-66.5 24.5z" />
180
+ <glyph unicode="&#xe149;" d="M561 1197q84 0 160.5 -40t123.5 -109.5t47 -147.5h-153q0 40 -19.5 71.5t-49.5 48.5t-59.5 26t-55.5 9q-37 0 -79 -14.5t-62 -35.5q-41 -44 -41 -101q0 -26 13.5 -63t26.5 -61t37 -66q6 -9 9 -14h241v-100h-197q8 -50 -2.5 -115t-31.5 -95q-45 -62 -99 -112 q34 10 83 17.5t71 7.5q32 1 102 -16t104 -17q83 0 136 30l50 -147q-31 -19 -58 -30.5t-55 -15.5t-42 -4.5t-46 -0.5q-23 0 -76 17t-111 32.5t-96 11.5q-39 -3 -82 -16t-67 -25l-23 -11l-55 145q4 3 16 11t15.5 10.5t13 9t15.5 12t14.5 14t17.5 18.5q48 55 54 126.5 t-30 142.5h-221v100h166q-23 47 -44 104q-7 20 -12 41.5t-6 55.5t6 66.5t29.5 70.5t58.5 71q97 88 263 88z" />
181
+ <glyph unicode="&#xe150;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM935 1184l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-900h-200v900h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
182
+ <glyph unicode="&#xe151;" d="M1000 700h-100v100h-100v-100h-100v500h300v-500zM400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM801 1100v-200h100v200h-100zM1000 350l-200 -250h200v-100h-300v150l200 250h-200v100h300v-150z " />
183
+ <glyph unicode="&#xe152;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1000 1050l-200 -250h200v-100h-300v150l200 250h-200v100h300v-150zM1000 0h-100v100h-100v-100h-100v500h300v-500zM801 400v-200h100v200h-100z " />
184
+ <glyph unicode="&#xe153;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1000 700h-100v400h-100v100h200v-500zM1100 0h-100v100h-200v400h300v-500zM901 400v-200h100v200h-100z" />
185
+ <glyph unicode="&#xe154;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1100 700h-100v100h-200v400h300v-500zM901 1100v-200h100v200h-100zM1000 0h-100v400h-100v100h200v-500z" />
186
+ <glyph unicode="&#xe155;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM900 1000h-200v200h200v-200zM1000 700h-300v200h300v-200zM1100 400h-400v200h400v-200zM1200 100h-500v200h500v-200z" />
187
+ <glyph unicode="&#xe156;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1200 1000h-500v200h500v-200zM1100 700h-400v200h400v-200zM1000 400h-300v200h300v-200zM900 100h-200v200h200v-200z" />
188
+ <glyph unicode="&#xe157;" d="M350 1100h400q162 0 256 -93.5t94 -256.5v-400q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5z" />
189
+ <glyph unicode="&#xe158;" d="M350 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-163 0 -256.5 92.5t-93.5 257.5v400q0 163 94 256.5t256 93.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM440 770l253 -190q17 -12 17 -30t-17 -30l-253 -190q-16 -12 -28 -6.5t-12 26.5v400q0 21 12 26.5t28 -6.5z" />
190
+ <glyph unicode="&#xe159;" d="M350 1100h400q163 0 256.5 -94t93.5 -256v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 163 92.5 256.5t257.5 93.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM350 700h400q21 0 26.5 -12t-6.5 -28l-190 -253q-12 -17 -30 -17t-30 17l-190 253q-12 16 -6.5 28t26.5 12z" />
191
+ <glyph unicode="&#xe160;" d="M350 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -163 -92.5 -256.5t-257.5 -93.5h-400q-163 0 -256.5 94t-93.5 256v400q0 165 92.5 257.5t257.5 92.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM580 693l190 -253q12 -16 6.5 -28t-26.5 -12h-400q-21 0 -26.5 12t6.5 28l190 253q12 17 30 17t30 -17z" />
192
+ <glyph unicode="&#xe161;" d="M550 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h450q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5h-450q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM338 867l324 -284q16 -14 16 -33t-16 -33l-324 -284q-16 -14 -27 -9t-11 26v150h-250q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h250v150q0 21 11 26t27 -9z" />
193
+ <glyph unicode="&#xe162;" d="M793 1182l9 -9q8 -10 5 -27q-3 -11 -79 -225.5t-78 -221.5l300 1q24 0 32.5 -17.5t-5.5 -35.5q-1 0 -133.5 -155t-267 -312.5t-138.5 -162.5q-12 -15 -26 -15h-9l-9 8q-9 11 -4 32q2 9 42 123.5t79 224.5l39 110h-302q-23 0 -31 19q-10 21 6 41q75 86 209.5 237.5 t228 257t98.5 111.5q9 16 25 16h9z" />
194
+ <glyph unicode="&#xe163;" d="M350 1100h400q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-450q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h450q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400 q0 165 92.5 257.5t257.5 92.5zM938 867l324 -284q16 -14 16 -33t-16 -33l-324 -284q-16 -14 -27 -9t-11 26v150h-250q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h250v150q0 21 11 26t27 -9z" />
195
+ <glyph unicode="&#xe164;" d="M750 1200h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -10.5 -25t-24.5 10l-109 109l-312 -312q-15 -15 -35.5 -15t-35.5 15l-141 141q-15 15 -15 35.5t15 35.5l312 312l-109 109q-14 14 -10 24.5t25 10.5zM456 900h-156q-41 0 -70.5 -29.5t-29.5 -70.5v-500 q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v148l200 200v-298q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5h300z" />
196
+ <glyph unicode="&#xe165;" d="M600 1186q119 0 227.5 -46.5t187 -125t125 -187t46.5 -227.5t-46.5 -227.5t-125 -187t-187 -125t-227.5 -46.5t-227.5 46.5t-187 125t-125 187t-46.5 227.5t46.5 227.5t125 187t187 125t227.5 46.5zM600 1022q-115 0 -212 -56.5t-153.5 -153.5t-56.5 -212t56.5 -212 t153.5 -153.5t212 -56.5t212 56.5t153.5 153.5t56.5 212t-56.5 212t-153.5 153.5t-212 56.5zM600 794q80 0 137 -57t57 -137t-57 -137t-137 -57t-137 57t-57 137t57 137t137 57z" />
197
+ <glyph unicode="&#xe166;" d="M450 1200h200q21 0 35.5 -14.5t14.5 -35.5v-350h245q20 0 25 -11t-9 -26l-383 -426q-14 -15 -33.5 -15t-32.5 15l-379 426q-13 15 -8.5 26t25.5 11h250v350q0 21 14.5 35.5t35.5 14.5zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5z M900 200v-50h100v50h-100z" />
198
+ <glyph unicode="&#xe167;" d="M583 1182l378 -435q14 -15 9 -31t-26 -16h-244v-250q0 -20 -17 -35t-39 -15h-200q-20 0 -32 14.5t-12 35.5v250h-250q-20 0 -25.5 16.5t8.5 31.5l383 431q14 16 33.5 17t33.5 -14zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5z M900 200v-50h100v50h-100z" />
199
+ <glyph unicode="&#xe168;" d="M396 723l369 369q7 7 17.5 7t17.5 -7l139 -139q7 -8 7 -18.5t-7 -17.5l-525 -525q-7 -8 -17.5 -8t-17.5 8l-292 291q-7 8 -7 18t7 18l139 139q8 7 18.5 7t17.5 -7zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50 h-100z" />
200
+ <glyph unicode="&#xe169;" d="M135 1023l142 142q14 14 35 14t35 -14l77 -77l-212 -212l-77 76q-14 15 -14 36t14 35zM655 855l210 210q14 14 24.5 10t10.5 -25l-2 -599q-1 -20 -15.5 -35t-35.5 -15l-597 -1q-21 0 -25 10.5t10 24.5l208 208l-154 155l212 212zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5 v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50h-100z" />
201
+ <glyph unicode="&#xe170;" d="M350 1200l599 -2q20 -1 35 -15.5t15 -35.5l1 -597q0 -21 -10.5 -25t-24.5 10l-208 208l-155 -154l-212 212l155 154l-210 210q-14 14 -10 24.5t25 10.5zM524 512l-76 -77q-15 -14 -36 -14t-35 14l-142 142q-14 14 -14 35t14 35l77 77zM50 300h1000q21 0 35.5 -14.5 t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50h-100z" />
202
+ <glyph unicode="&#xe171;" d="M1200 103l-483 276l-314 -399v423h-399l1196 796v-1096zM483 424v-230l683 953z" />
203
+ <glyph unicode="&#xe172;" d="M1100 1000v-850q0 -21 -14.5 -35.5t-35.5 -14.5h-150v400h-700v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200z" />
204
+ <glyph unicode="&#xe173;" d="M1100 1000l-2 -149l-299 -299l-95 95q-9 9 -21.5 9t-21.5 -9l-149 -147h-312v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM1132 638l106 -106q7 -7 7 -17.5t-7 -17.5l-420 -421q-8 -7 -18 -7 t-18 7l-202 203q-8 7 -8 17.5t8 17.5l106 106q7 8 17.5 8t17.5 -8l79 -79l297 297q7 7 17.5 7t17.5 -7z" />
205
+ <glyph unicode="&#xe174;" d="M1100 1000v-269l-103 -103l-134 134q-15 15 -33.5 16.5t-34.5 -12.5l-266 -266h-329v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM1202 572l70 -70q15 -15 15 -35.5t-15 -35.5l-131 -131 l131 -131q15 -15 15 -35.5t-15 -35.5l-70 -70q-15 -15 -35.5 -15t-35.5 15l-131 131l-131 -131q-15 -15 -35.5 -15t-35.5 15l-70 70q-15 15 -15 35.5t15 35.5l131 131l-131 131q-15 15 -15 35.5t15 35.5l70 70q15 15 35.5 15t35.5 -15l131 -131l131 131q15 15 35.5 15 t35.5 -15z" />
206
+ <glyph unicode="&#xe175;" d="M1100 1000v-300h-350q-21 0 -35.5 -14.5t-14.5 -35.5v-150h-500v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM850 600h100q21 0 35.5 -14.5t14.5 -35.5v-250h150q21 0 25 -10.5t-10 -24.5 l-230 -230q-14 -14 -35 -14t-35 14l-230 230q-14 14 -10 24.5t25 10.5h150v250q0 21 14.5 35.5t35.5 14.5z" />
207
+ <glyph unicode="&#xe176;" d="M1100 1000v-400l-165 165q-14 15 -35 15t-35 -15l-263 -265h-402v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM935 565l230 -229q14 -15 10 -25.5t-25 -10.5h-150v-250q0 -20 -14.5 -35 t-35.5 -15h-100q-21 0 -35.5 15t-14.5 35v250h-150q-21 0 -25 10.5t10 25.5l230 229q14 15 35 15t35 -15z" />
208
+ <glyph unicode="&#xe177;" d="M50 1100h1100q21 0 35.5 -14.5t14.5 -35.5v-150h-1200v150q0 21 14.5 35.5t35.5 14.5zM1200 800v-550q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v550h1200zM100 500v-200h400v200h-400z" />
209
+ <glyph unicode="&#xe178;" d="M935 1165l248 -230q14 -14 14 -35t-14 -35l-248 -230q-14 -14 -24.5 -10t-10.5 25v150h-400v200h400v150q0 21 10.5 25t24.5 -10zM200 800h-50q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v-200zM400 800h-100v200h100v-200zM18 435l247 230 q14 14 24.5 10t10.5 -25v-150h400v-200h-400v-150q0 -21 -10.5 -25t-24.5 10l-247 230q-15 14 -15 35t15 35zM900 300h-100v200h100v-200zM1000 500h51q20 0 34.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-34.5 -14.5h-51v200z" />
210
+ <glyph unicode="&#xe179;" d="M862 1073l276 116q25 18 43.5 8t18.5 -41v-1106q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v397q-4 1 -11 5t-24 17.5t-30 29t-24 42t-11 56.5v359q0 31 18.5 65t43.5 52zM550 1200q22 0 34.5 -12.5t14.5 -24.5l1 -13v-450q0 -28 -10.5 -59.5 t-25 -56t-29 -45t-25.5 -31.5l-10 -11v-447q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v447q-4 4 -11 11.5t-24 30.5t-30 46t-24 55t-11 60v450q0 2 0.5 5.5t4 12t8.5 15t14.5 12t22.5 5.5q20 0 32.5 -12.5t14.5 -24.5l3 -13v-350h100v350v5.5t2.5 12 t7 15t15 12t25.5 5.5q23 0 35.5 -12.5t13.5 -24.5l1 -13v-350h100v350q0 2 0.5 5.5t3 12t7 15t15 12t24.5 5.5z" />
211
+ <glyph unicode="&#xe180;" d="M1200 1100v-56q-4 0 -11 -0.5t-24 -3t-30 -7.5t-24 -15t-11 -24v-888q0 -22 25 -34.5t50 -13.5l25 -2v-56h-400v56q75 0 87.5 6.5t12.5 43.5v394h-500v-394q0 -37 12.5 -43.5t87.5 -6.5v-56h-400v56q4 0 11 0.5t24 3t30 7.5t24 15t11 24v888q0 22 -25 34.5t-50 13.5 l-25 2v56h400v-56q-75 0 -87.5 -6.5t-12.5 -43.5v-394h500v394q0 37 -12.5 43.5t-87.5 6.5v56h400z" />
212
+ <glyph unicode="&#xe181;" d="M675 1000h375q21 0 35.5 -14.5t14.5 -35.5v-150h-105l-295 -98v98l-200 200h-400l100 100h375zM100 900h300q41 0 70.5 -29.5t29.5 -70.5v-500q0 -41 -29.5 -70.5t-70.5 -29.5h-300q-41 0 -70.5 29.5t-29.5 70.5v500q0 41 29.5 70.5t70.5 29.5zM100 800v-200h300v200 h-300zM1100 535l-400 -133v163l400 133v-163zM100 500v-200h300v200h-300zM1100 398v-248q0 -21 -14.5 -35.5t-35.5 -14.5h-375l-100 -100h-375l-100 100h400l200 200h105z" />
213
+ <glyph unicode="&#xe182;" d="M17 1007l162 162q17 17 40 14t37 -22l139 -194q14 -20 11 -44.5t-20 -41.5l-119 -118q102 -142 228 -268t267 -227l119 118q17 17 42.5 19t44.5 -12l192 -136q19 -14 22.5 -37.5t-13.5 -40.5l-163 -162q-3 -1 -9.5 -1t-29.5 2t-47.5 6t-62.5 14.5t-77.5 26.5t-90 42.5 t-101.5 60t-111 83t-119 108.5q-74 74 -133.5 150.5t-94.5 138.5t-60 119.5t-34.5 100t-15 74.5t-4.5 48z" />
214
+ <glyph unicode="&#xe183;" d="M600 1100q92 0 175 -10.5t141.5 -27t108.5 -36.5t81.5 -40t53.5 -37t31 -27l9 -10v-200q0 -21 -14.5 -33t-34.5 -9l-202 34q-20 3 -34.5 20t-14.5 38v146q-141 24 -300 24t-300 -24v-146q0 -21 -14.5 -38t-34.5 -20l-202 -34q-20 -3 -34.5 9t-14.5 33v200q3 4 9.5 10.5 t31 26t54 37.5t80.5 39.5t109 37.5t141 26.5t175 10.5zM600 795q56 0 97 -9.5t60 -23.5t30 -28t12 -24l1 -10v-50l365 -303q14 -15 24.5 -40t10.5 -45v-212q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v212q0 20 10.5 45t24.5 40l365 303v50 q0 4 1 10.5t12 23t30 29t60 22.5t97 10z" />
215
+ <glyph unicode="&#xe184;" d="M1100 700l-200 -200h-600l-200 200v500h200v-200h200v200h200v-200h200v200h200v-500zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-12l137 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5 t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
216
+ <glyph unicode="&#xe185;" d="M700 1100h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-1000h300v1000q0 41 -29.5 70.5t-70.5 29.5zM1100 800h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-700h300v700q0 41 -29.5 70.5t-70.5 29.5zM400 0h-300v400q0 41 29.5 70.5t70.5 29.5h100q41 0 70.5 -29.5t29.5 -70.5v-400z " />
217
+ <glyph unicode="&#xe186;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-100h200v-300h-300v100h200v100h-200v300h300v-100zM900 700v-300l-100 -100h-200v500h200z M700 700v-300h100v300h-100z" />
218
+ <glyph unicode="&#xe187;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 300h-100v200h-100v-200h-100v500h100v-200h100v200h100v-500zM900 700v-300l-100 -100h-200v500h200z M700 700v-300h100v300h-100z" />
219
+ <glyph unicode="&#xe188;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-300h200v-100h-300v500h300v-100zM900 700h-200v-300h200v-100h-300v500h300v-100z" />
220
+ <glyph unicode="&#xe189;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 400l-300 150l300 150v-300zM900 550l-300 -150v300z" />
221
+ <glyph unicode="&#xe190;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM900 300h-700v500h700v-500zM800 700h-130q-38 0 -66.5 -43t-28.5 -108t27 -107t68 -42h130v300zM300 700v-300 h130q41 0 68 42t27 107t-28.5 108t-66.5 43h-130z" />
222
+ <glyph unicode="&#xe191;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-100h200v-300h-300v100h200v100h-200v300h300v-100zM900 300h-100v400h-100v100h200v-500z M700 300h-100v100h100v-100z" />
223
+ <glyph unicode="&#xe192;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM300 700h200v-400h-300v500h100v-100zM900 300h-100v400h-100v100h200v-500zM300 600v-200h100v200h-100z M700 300h-100v100h100v-100z" />
224
+ <glyph unicode="&#xe193;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 500l-199 -200h-100v50l199 200v150h-200v100h300v-300zM900 300h-100v400h-100v100h200v-500zM701 300h-100 v100h100v-100z" />
225
+ <glyph unicode="&#xe194;" d="M600 1191q120 0 229.5 -47t188.5 -126t126 -188.5t47 -229.5t-47 -229.5t-126 -188.5t-188.5 -126t-229.5 -47t-229.5 47t-188.5 126t-126 188.5t-47 229.5t47 229.5t126 188.5t188.5 126t229.5 47zM600 1021q-114 0 -211 -56.5t-153.5 -153.5t-56.5 -211t56.5 -211 t153.5 -153.5t211 -56.5t211 56.5t153.5 153.5t56.5 211t-56.5 211t-153.5 153.5t-211 56.5zM800 700h-300v-200h300v-100h-300l-100 100v200l100 100h300v-100z" />
226
+ <glyph unicode="&#xe195;" d="M600 1191q120 0 229.5 -47t188.5 -126t126 -188.5t47 -229.5t-47 -229.5t-126 -188.5t-188.5 -126t-229.5 -47t-229.5 47t-188.5 126t-126 188.5t-47 229.5t47 229.5t126 188.5t188.5 126t229.5 47zM600 1021q-114 0 -211 -56.5t-153.5 -153.5t-56.5 -211t56.5 -211 t153.5 -153.5t211 -56.5t211 56.5t153.5 153.5t56.5 211t-56.5 211t-153.5 153.5t-211 56.5zM800 700v-100l-50 -50l100 -100v-50h-100l-100 100h-150v-100h-100v400h300zM500 700v-100h200v100h-200z" />
227
+ <glyph unicode="&#xe197;" d="M503 1089q110 0 200.5 -59.5t134.5 -156.5q44 14 90 14q120 0 205 -86.5t85 -207t-85 -207t-205 -86.5h-128v250q0 21 -14.5 35.5t-35.5 14.5h-300q-21 0 -35.5 -14.5t-14.5 -35.5v-250h-222q-80 0 -136 57.5t-56 136.5q0 69 43 122.5t108 67.5q-2 19 -2 37q0 100 49 185 t134 134t185 49zM525 500h150q10 0 17.5 -7.5t7.5 -17.5v-275h137q21 0 26 -11.5t-8 -27.5l-223 -244q-13 -16 -32 -16t-32 16l-223 244q-13 16 -8 27.5t26 11.5h137v275q0 10 7.5 17.5t17.5 7.5z" />
228
+ <glyph unicode="&#xe198;" d="M502 1089q110 0 201 -59.5t135 -156.5q43 15 89 15q121 0 206 -86.5t86 -206.5q0 -99 -60 -181t-150 -110l-378 360q-13 16 -31.5 16t-31.5 -16l-381 -365h-9q-79 0 -135.5 57.5t-56.5 136.5q0 69 43 122.5t108 67.5q-2 19 -2 38q0 100 49 184.5t133.5 134t184.5 49.5z M632 467l223 -228q13 -16 8 -27.5t-26 -11.5h-137v-275q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v275h-137q-21 0 -26 11.5t8 27.5q199 204 223 228q19 19 31.5 19t32.5 -19z" />
229
+ <glyph unicode="&#xe199;" d="M700 100v100h400l-270 300h170l-270 300h170l-300 333l-300 -333h170l-270 -300h170l-270 -300h400v-100h-50q-21 0 -35.5 -14.5t-14.5 -35.5v-50h400v50q0 21 -14.5 35.5t-35.5 14.5h-50z" />
230
+ <glyph unicode="&#xe200;" d="M600 1179q94 0 167.5 -56.5t99.5 -145.5q89 -6 150.5 -71.5t61.5 -155.5q0 -61 -29.5 -112.5t-79.5 -82.5q9 -29 9 -55q0 -74 -52.5 -126.5t-126.5 -52.5q-55 0 -100 30v-251q21 0 35.5 -14.5t14.5 -35.5v-50h-300v50q0 21 14.5 35.5t35.5 14.5v251q-45 -30 -100 -30 q-74 0 -126.5 52.5t-52.5 126.5q0 18 4 38q-47 21 -75.5 65t-28.5 97q0 74 52.5 126.5t126.5 52.5q5 0 23 -2q0 2 -1 10t-1 13q0 116 81.5 197.5t197.5 81.5z" />
231
+ <glyph unicode="&#xe201;" d="M1010 1010q111 -111 150.5 -260.5t0 -299t-150.5 -260.5q-83 -83 -191.5 -126.5t-218.5 -43.5t-218.5 43.5t-191.5 126.5q-111 111 -150.5 260.5t0 299t150.5 260.5q83 83 191.5 126.5t218.5 43.5t218.5 -43.5t191.5 -126.5zM476 1065q-4 0 -8 -1q-121 -34 -209.5 -122.5 t-122.5 -209.5q-4 -12 2.5 -23t18.5 -14l36 -9q3 -1 7 -1q23 0 29 22q27 96 98 166q70 71 166 98q11 3 17.5 13.5t3.5 22.5l-9 35q-3 13 -14 19q-7 4 -15 4zM512 920q-4 0 -9 -2q-80 -24 -138.5 -82.5t-82.5 -138.5q-4 -13 2 -24t19 -14l34 -9q4 -1 8 -1q22 0 28 21 q18 58 58.5 98.5t97.5 58.5q12 3 18 13.5t3 21.5l-9 35q-3 12 -14 19q-7 4 -15 4zM719.5 719.5q-49.5 49.5 -119.5 49.5t-119.5 -49.5t-49.5 -119.5t49.5 -119.5t119.5 -49.5t119.5 49.5t49.5 119.5t-49.5 119.5zM855 551q-22 0 -28 -21q-18 -58 -58.5 -98.5t-98.5 -57.5 q-11 -4 -17 -14.5t-3 -21.5l9 -35q3 -12 14 -19q7 -4 15 -4q4 0 9 2q80 24 138.5 82.5t82.5 138.5q4 13 -2.5 24t-18.5 14l-34 9q-4 1 -8 1zM1000 515q-23 0 -29 -22q-27 -96 -98 -166q-70 -71 -166 -98q-11 -3 -17.5 -13.5t-3.5 -22.5l9 -35q3 -13 14 -19q7 -4 15 -4 q4 0 8 1q121 34 209.5 122.5t122.5 209.5q4 12 -2.5 23t-18.5 14l-36 9q-3 1 -7 1z" />
232
+ <glyph unicode="&#xe202;" d="M700 800h300v-380h-180v200h-340v-200h-380v755q0 10 7.5 17.5t17.5 7.5h575v-400zM1000 900h-200v200zM700 300h162l-212 -212l-212 212h162v200h100v-200zM520 0h-395q-10 0 -17.5 7.5t-7.5 17.5v395zM1000 220v-195q0 -10 -7.5 -17.5t-17.5 -7.5h-195z" />
233
+ <glyph unicode="&#xe203;" d="M700 800h300v-520l-350 350l-550 -550v1095q0 10 7.5 17.5t17.5 7.5h575v-400zM1000 900h-200v200zM862 200h-162v-200h-100v200h-162l212 212zM480 0h-355q-10 0 -17.5 7.5t-7.5 17.5v55h380v-80zM1000 80v-55q0 -10 -7.5 -17.5t-17.5 -7.5h-155v80h180z" />
234
+ <glyph unicode="&#xe204;" d="M1162 800h-162v-200h100l100 -100h-300v300h-162l212 212zM200 800h200q27 0 40 -2t29.5 -10.5t23.5 -30t7 -57.5h300v-100h-600l-200 -350v450h100q0 36 7 57.5t23.5 30t29.5 10.5t40 2zM800 400h240l-240 -400h-800l300 500h500v-100z" />
235
+ <glyph unicode="&#xe205;" d="M650 1100h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5zM1000 850v150q41 0 70.5 -29.5t29.5 -70.5v-800 q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-1 0 -20 4l246 246l-326 326v324q0 41 29.5 70.5t70.5 29.5v-150q0 -62 44 -106t106 -44h300q62 0 106 44t44 106zM412 250l-212 -212v162h-200v100h200v162z" />
236
+ <glyph unicode="&#xe206;" d="M450 1100h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5zM800 850v150q41 0 70.5 -29.5t29.5 -70.5v-500 h-200v-300h200q0 -36 -7 -57.5t-23.5 -30t-29.5 -10.5t-40 -2h-600q-41 0 -70.5 29.5t-29.5 70.5v800q0 41 29.5 70.5t70.5 29.5v-150q0 -62 44 -106t106 -44h300q62 0 106 44t44 106zM1212 250l-212 -212v162h-200v100h200v162z" />
237
+ <glyph unicode="&#xe209;" d="M658 1197l637 -1104q23 -38 7 -65.5t-60 -27.5h-1276q-44 0 -60 27.5t7 65.5l637 1104q22 39 54 39t54 -39zM704 800h-208q-20 0 -32 -14.5t-8 -34.5l58 -302q4 -20 21.5 -34.5t37.5 -14.5h54q20 0 37.5 14.5t21.5 34.5l58 302q4 20 -8 34.5t-32 14.5zM500 300v-100h200 v100h-200z" />
238
+ <glyph unicode="&#xe210;" d="M425 1100h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM425 800h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5 t17.5 7.5zM825 800h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM25 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150 q0 10 7.5 17.5t17.5 7.5zM425 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM825 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5 v150q0 10 7.5 17.5t17.5 7.5zM25 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM425 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5 t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM825 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
239
+ <glyph unicode="&#xe211;" d="M700 1200h100v-200h-100v-100h350q62 0 86.5 -39.5t-3.5 -94.5l-66 -132q-41 -83 -81 -134h-772q-40 51 -81 134l-66 132q-28 55 -3.5 94.5t86.5 39.5h350v100h-100v200h100v100h200v-100zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-12l137 -100 h-950l138 100h-13q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
240
+ <glyph unicode="&#xe212;" d="M600 1300q40 0 68.5 -29.5t28.5 -70.5h-194q0 41 28.5 70.5t68.5 29.5zM443 1100h314q18 -37 18 -75q0 -8 -3 -25h328q41 0 44.5 -16.5t-30.5 -38.5l-175 -145h-678l-178 145q-34 22 -29 38.5t46 16.5h328q-3 17 -3 25q0 38 18 75zM250 700h700q21 0 35.5 -14.5 t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-150v-200l275 -200h-950l275 200v200h-150q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
241
+ <glyph unicode="&#xe213;" d="M600 1181q75 0 128 -53t53 -128t-53 -128t-128 -53t-128 53t-53 128t53 128t128 53zM602 798h46q34 0 55.5 -28.5t21.5 -86.5q0 -76 39 -183h-324q39 107 39 183q0 58 21.5 86.5t56.5 28.5h45zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13 l138 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
242
+ <glyph unicode="&#xe214;" d="M600 1300q47 0 92.5 -53.5t71 -123t25.5 -123.5q0 -78 -55.5 -133.5t-133.5 -55.5t-133.5 55.5t-55.5 133.5q0 62 34 143l144 -143l111 111l-163 163q34 26 63 26zM602 798h46q34 0 55.5 -28.5t21.5 -86.5q0 -76 39 -183h-324q39 107 39 183q0 58 21.5 86.5t56.5 28.5h45 zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13l138 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
243
+ <glyph unicode="&#xe215;" d="M600 1200l300 -161v-139h-300q0 -57 18.5 -108t50 -91.5t63 -72t70 -67.5t57.5 -61h-530q-60 83 -90.5 177.5t-30.5 178.5t33 164.5t87.5 139.5t126 96.5t145.5 41.5v-98zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13l138 -100h-950l137 100 h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
244
+ <glyph unicode="&#xe216;" d="M600 1300q41 0 70.5 -29.5t29.5 -70.5v-78q46 -26 73 -72t27 -100v-50h-400v50q0 54 27 100t73 72v78q0 41 29.5 70.5t70.5 29.5zM400 800h400q54 0 100 -27t72 -73h-172v-100h200v-100h-200v-100h200v-100h-200v-100h200q0 -83 -58.5 -141.5t-141.5 -58.5h-400 q-83 0 -141.5 58.5t-58.5 141.5v400q0 83 58.5 141.5t141.5 58.5z" />
245
+ <glyph unicode="&#xe218;" d="M150 1100h900q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5zM125 400h950q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-283l224 -224q13 -13 13 -31.5t-13 -32 t-31.5 -13.5t-31.5 13l-88 88h-524l-87 -88q-13 -13 -32 -13t-32 13.5t-13 32t13 31.5l224 224h-289q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM541 300l-100 -100h324l-100 100h-124z" />
246
+ <glyph unicode="&#xe219;" d="M200 1100h800q83 0 141.5 -58.5t58.5 -141.5v-200h-100q0 41 -29.5 70.5t-70.5 29.5h-250q-41 0 -70.5 -29.5t-29.5 -70.5h-100q0 41 -29.5 70.5t-70.5 29.5h-250q-41 0 -70.5 -29.5t-29.5 -70.5h-100v200q0 83 58.5 141.5t141.5 58.5zM100 600h1000q41 0 70.5 -29.5 t29.5 -70.5v-300h-1200v300q0 41 29.5 70.5t70.5 29.5zM300 100v-50q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v50h200zM1100 100v-50q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v50h200z" />
247
+ <glyph unicode="&#xe221;" d="M480 1165l682 -683q31 -31 31 -75.5t-31 -75.5l-131 -131h-481l-517 518q-32 31 -32 75.5t32 75.5l295 296q31 31 75.5 31t76.5 -31zM108 794l342 -342l303 304l-341 341zM250 100h800q21 0 35.5 -14.5t14.5 -35.5v-50h-900v50q0 21 14.5 35.5t35.5 14.5z" />
248
+ <glyph unicode="&#xe223;" d="M1057 647l-189 506q-8 19 -27.5 33t-40.5 14h-400q-21 0 -40.5 -14t-27.5 -33l-189 -506q-8 -19 1.5 -33t30.5 -14h625v-150q0 -21 14.5 -35.5t35.5 -14.5t35.5 14.5t14.5 35.5v150h125q21 0 30.5 14t1.5 33zM897 0h-595v50q0 21 14.5 35.5t35.5 14.5h50v50 q0 21 14.5 35.5t35.5 14.5h48v300h200v-300h47q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-50z" />
249
+ <glyph unicode="&#xe224;" d="M900 800h300v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-375v591l-300 300v84q0 10 7.5 17.5t17.5 7.5h375v-400zM1200 900h-200v200zM400 600h300v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-650q-10 0 -17.5 7.5t-7.5 17.5v950q0 10 7.5 17.5t17.5 7.5h375v-400zM700 700h-200v200z " />
250
+ <glyph unicode="&#xe225;" d="M484 1095h195q75 0 146 -32.5t124 -86t89.5 -122.5t48.5 -142q18 -14 35 -20q31 -10 64.5 6.5t43.5 48.5q10 34 -15 71q-19 27 -9 43q5 8 12.5 11t19 -1t23.5 -16q41 -44 39 -105q-3 -63 -46 -106.5t-104 -43.5h-62q-7 -55 -35 -117t-56 -100l-39 -234q-3 -20 -20 -34.5 t-38 -14.5h-100q-21 0 -33 14.5t-9 34.5l12 70q-49 -14 -91 -14h-195q-24 0 -65 8l-11 -64q-3 -20 -20 -34.5t-38 -14.5h-100q-21 0 -33 14.5t-9 34.5l26 157q-84 74 -128 175l-159 53q-19 7 -33 26t-14 40v50q0 21 14.5 35.5t35.5 14.5h124q11 87 56 166l-111 95 q-16 14 -12.5 23.5t24.5 9.5h203q116 101 250 101zM675 1000h-250q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h250q10 0 17.5 7.5t7.5 17.5v50q0 10 -7.5 17.5t-17.5 7.5z" />
251
+ <glyph unicode="&#xe226;" d="M641 900l423 247q19 8 42 2.5t37 -21.5l32 -38q14 -15 12.5 -36t-17.5 -34l-139 -120h-390zM50 1100h106q67 0 103 -17t66 -71l102 -212h823q21 0 35.5 -14.5t14.5 -35.5v-50q0 -21 -14 -40t-33 -26l-737 -132q-23 -4 -40 6t-26 25q-42 67 -100 67h-300q-62 0 -106 44 t-44 106v200q0 62 44 106t106 44zM173 928h-80q-19 0 -28 -14t-9 -35v-56q0 -51 42 -51h134q16 0 21.5 8t5.5 24q0 11 -16 45t-27 51q-18 28 -43 28zM550 727q-32 0 -54.5 -22.5t-22.5 -54.5t22.5 -54.5t54.5 -22.5t54.5 22.5t22.5 54.5t-22.5 54.5t-54.5 22.5zM130 389 l152 130q18 19 34 24t31 -3.5t24.5 -17.5t25.5 -28q28 -35 50.5 -51t48.5 -13l63 5l48 -179q13 -61 -3.5 -97.5t-67.5 -79.5l-80 -69q-47 -40 -109 -35.5t-103 51.5l-130 151q-40 47 -35.5 109.5t51.5 102.5zM380 377l-102 -88q-31 -27 2 -65l37 -43q13 -15 27.5 -19.5 t31.5 6.5l61 53q19 16 14 49q-2 20 -12 56t-17 45q-11 12 -19 14t-23 -8z" />
252
+ <glyph unicode="&#xe227;" d="M625 1200h150q10 0 17.5 -7.5t7.5 -17.5v-109q79 -33 131 -87.5t53 -128.5q1 -46 -15 -84.5t-39 -61t-46 -38t-39 -21.5l-17 -6q6 0 15 -1.5t35 -9t50 -17.5t53 -30t50 -45t35.5 -64t14.5 -84q0 -59 -11.5 -105.5t-28.5 -76.5t-44 -51t-49.5 -31.5t-54.5 -16t-49.5 -6.5 t-43.5 -1v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-100v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-175q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h75v600h-75q-10 0 -17.5 7.5t-7.5 17.5v150 q0 10 7.5 17.5t17.5 7.5h175v75q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-75h100v75q0 10 7.5 17.5t17.5 7.5zM400 900v-200h263q28 0 48.5 10.5t30 25t15 29t5.5 25.5l1 10q0 4 -0.5 11t-6 24t-15 30t-30 24t-48.5 11h-263zM400 500v-200h363q28 0 48.5 10.5 t30 25t15 29t5.5 25.5l1 10q0 4 -0.5 11t-6 24t-15 30t-30 24t-48.5 11h-363z" />
253
+ <glyph unicode="&#xe230;" d="M212 1198h780q86 0 147 -61t61 -147v-416q0 -51 -18 -142.5t-36 -157.5l-18 -66q-29 -87 -93.5 -146.5t-146.5 -59.5h-572q-82 0 -147 59t-93 147q-8 28 -20 73t-32 143.5t-20 149.5v416q0 86 61 147t147 61zM600 1045q-70 0 -132.5 -11.5t-105.5 -30.5t-78.5 -41.5 t-57 -45t-36 -41t-20.5 -30.5l-6 -12l156 -243h560l156 243q-2 5 -6 12.5t-20 29.5t-36.5 42t-57 44.5t-79 42t-105 29.5t-132.5 12zM762 703h-157l195 261z" />
254
+ <glyph unicode="&#xe231;" d="M475 1300h150q103 0 189 -86t86 -189v-500q0 -41 -42 -83t-83 -42h-450q-41 0 -83 42t-42 83v500q0 103 86 189t189 86zM700 300v-225q0 -21 -27 -48t-48 -27h-150q-21 0 -48 27t-27 48v225h300z" />
255
+ <glyph unicode="&#xe232;" d="M475 1300h96q0 -150 89.5 -239.5t239.5 -89.5v-446q0 -41 -42 -83t-83 -42h-450q-41 0 -83 42t-42 83v500q0 103 86 189t189 86zM700 300v-225q0 -21 -27 -48t-48 -27h-150q-21 0 -48 27t-27 48v225h300z" />
256
+ <glyph unicode="&#xe233;" d="M1294 767l-638 -283l-378 170l-78 -60v-224l100 -150v-199l-150 148l-150 -149v200l100 150v250q0 4 -0.5 10.5t0 9.5t1 8t3 8t6.5 6l47 40l-147 65l642 283zM1000 380l-350 -166l-350 166v147l350 -165l350 165v-147z" />
257
+ <glyph unicode="&#xe234;" d="M250 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM650 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM1050 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44z" />
258
+ <glyph unicode="&#xe235;" d="M550 1100q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM550 700q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM550 300q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44z" />
259
+ <glyph unicode="&#xe236;" d="M125 1100h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM125 700h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5 t17.5 7.5zM125 300h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
260
+ <glyph unicode="&#xe237;" d="M350 1200h500q162 0 256 -93.5t94 -256.5v-500q0 -165 -93.5 -257.5t-256.5 -92.5h-500q-165 0 -257.5 92.5t-92.5 257.5v500q0 165 92.5 257.5t257.5 92.5zM900 1000h-600q-41 0 -70.5 -29.5t-29.5 -70.5v-600q0 -41 29.5 -70.5t70.5 -29.5h600q41 0 70.5 29.5 t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5zM350 900h500q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -14.5 -35.5t-35.5 -14.5h-500q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 14.5 35.5t35.5 14.5zM400 800v-200h400v200h-400z" />
261
+ <glyph unicode="&#xe238;" d="M150 1100h1000q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5 t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5z" />
262
+ <glyph unicode="&#xe239;" d="M650 1187q87 -67 118.5 -156t0 -178t-118.5 -155q-87 66 -118.5 155t0 178t118.5 156zM300 800q124 0 212 -88t88 -212q-124 0 -212 88t-88 212zM1000 800q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM300 500q124 0 212 -88t88 -212q-124 0 -212 88t-88 212z M1000 500q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM700 199v-144q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v142q40 -4 43 -4q17 0 57 6z" />
263
+ <glyph unicode="&#xe240;" d="M745 878l69 19q25 6 45 -12l298 -295q11 -11 15 -26.5t-2 -30.5q-5 -14 -18 -23.5t-28 -9.5h-8q1 0 1 -13q0 -29 -2 -56t-8.5 -62t-20 -63t-33 -53t-51 -39t-72.5 -14h-146q-184 0 -184 288q0 24 10 47q-20 4 -62 4t-63 -4q11 -24 11 -47q0 -288 -184 -288h-142 q-48 0 -84.5 21t-56 51t-32 71.5t-16 75t-3.5 68.5q0 13 2 13h-7q-15 0 -27.5 9.5t-18.5 23.5q-6 15 -2 30.5t15 25.5l298 296q20 18 46 11l76 -19q20 -5 30.5 -22.5t5.5 -37.5t-22.5 -31t-37.5 -5l-51 12l-182 -193h891l-182 193l-44 -12q-20 -5 -37.5 6t-22.5 31t6 37.5 t31 22.5z" />
264
+ <glyph unicode="&#xe241;" d="M1200 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-850q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v850h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM500 450h-25q0 15 -4 24.5t-9 14.5t-17 7.5t-20 3t-25 0.5h-100v-425q0 -11 12.5 -17.5t25.5 -7.5h12v-50h-200v50q50 0 50 25v425h-100q-17 0 -25 -0.5t-20 -3t-17 -7.5t-9 -14.5t-4 -24.5h-25v150h500v-150z" />
265
+ <glyph unicode="&#xe242;" d="M1000 300v50q-25 0 -55 32q-14 14 -25 31t-16 27l-4 11l-289 747h-69l-300 -754q-18 -35 -39 -56q-9 -9 -24.5 -18.5t-26.5 -14.5l-11 -5v-50h273v50q-49 0 -78.5 21.5t-11.5 67.5l69 176h293l61 -166q13 -34 -3.5 -66.5t-55.5 -32.5v-50h312zM412 691l134 342l121 -342 h-255zM1100 150v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5z" />
266
+ <glyph unicode="&#xe243;" d="M50 1200h1100q21 0 35.5 -14.5t14.5 -35.5v-1100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v1100q0 21 14.5 35.5t35.5 14.5zM611 1118h-70q-13 0 -18 -12l-299 -753q-17 -32 -35 -51q-18 -18 -56 -34q-12 -5 -12 -18v-50q0 -8 5.5 -14t14.5 -6 h273q8 0 14 6t6 14v50q0 8 -6 14t-14 6q-55 0 -71 23q-10 14 0 39l63 163h266l57 -153q11 -31 -6 -55q-12 -17 -36 -17q-8 0 -14 -6t-6 -14v-50q0 -8 6 -14t14 -6h313q8 0 14 6t6 14v50q0 7 -5.5 13t-13.5 7q-17 0 -42 25q-25 27 -40 63h-1l-288 748q-5 12 -19 12zM639 611 h-197l103 264z" />
267
+ <glyph unicode="&#xe244;" d="M1200 1100h-1200v100h1200v-100zM50 1000h400q21 0 35.5 -14.5t14.5 -35.5v-900q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v900q0 21 14.5 35.5t35.5 14.5zM650 1000h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM700 900v-300h300v300h-300z" />
268
+ <glyph unicode="&#xe245;" d="M50 1200h400q21 0 35.5 -14.5t14.5 -35.5v-900q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v900q0 21 14.5 35.5t35.5 14.5zM650 700h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400 q0 21 14.5 35.5t35.5 14.5zM700 600v-300h300v300h-300zM1200 0h-1200v100h1200v-100z" />
269
+ <glyph unicode="&#xe246;" d="M50 1000h400q21 0 35.5 -14.5t14.5 -35.5v-350h100v150q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5v-150h100v-100h-100v-150q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v150h-100v-350q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5zM700 700v-300h300v300h-300z" />
270
+ <glyph unicode="&#xe247;" d="M100 0h-100v1200h100v-1200zM250 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM300 1000v-300h300v300h-300zM250 500h900q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
271
+ <glyph unicode="&#xe248;" d="M600 1100h150q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-100h450q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h350v100h-150q-21 0 -35.5 14.5 t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h150v100h100v-100zM400 1000v-300h300v300h-300z" />
272
+ <glyph unicode="&#xe249;" d="M1200 0h-100v1200h100v-1200zM550 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM600 1000v-300h300v300h-300zM50 500h900q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
273
+ <glyph unicode="&#xe250;" d="M865 565l-494 -494q-23 -23 -41 -23q-14 0 -22 13.5t-8 38.5v1000q0 25 8 38.5t22 13.5q18 0 41 -23l494 -494q14 -14 14 -35t-14 -35z" />
274
+ <glyph unicode="&#xe251;" d="M335 635l494 494q29 29 50 20.5t21 -49.5v-1000q0 -41 -21 -49.5t-50 20.5l-494 494q-14 14 -14 35t14 35z" />
275
+ <glyph unicode="&#xe252;" d="M100 900h1000q41 0 49.5 -21t-20.5 -50l-494 -494q-14 -14 -35 -14t-35 14l-494 494q-29 29 -20.5 50t49.5 21z" />
276
+ <glyph unicode="&#xe253;" d="M635 865l494 -494q29 -29 20.5 -50t-49.5 -21h-1000q-41 0 -49.5 21t20.5 50l494 494q14 14 35 14t35 -14z" />
277
+ <glyph unicode="&#xe254;" d="M700 741v-182l-692 -323v221l413 193l-413 193v221zM1200 0h-800v200h800v-200z" />
278
+ <glyph unicode="&#xe255;" d="M1200 900h-200v-100h200v-100h-300v300h200v100h-200v100h300v-300zM0 700h50q0 21 4 37t9.5 26.5t18 17.5t22 11t28.5 5.5t31 2t37 0.5h100v-550q0 -22 -25 -34.5t-50 -13.5l-25 -2v-100h400v100q-4 0 -11 0.5t-24 3t-30 7t-24 15t-11 24.5v550h100q25 0 37 -0.5t31 -2 t28.5 -5.5t22 -11t18 -17.5t9.5 -26.5t4 -37h50v300h-800v-300z" />
279
+ <glyph unicode="&#xe256;" d="M800 700h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-100v-550q0 -22 25 -34.5t50 -14.5l25 -1v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v550h-100q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h800v-300zM1100 200h-200v-100h200v-100h-300v300h200v100h-200v100h300v-300z" />
280
+ <glyph unicode="&#xe257;" d="M701 1098h160q16 0 21 -11t-7 -23l-464 -464l464 -464q12 -12 7 -23t-21 -11h-160q-13 0 -23 9l-471 471q-7 8 -7 18t7 18l471 471q10 9 23 9z" />
281
+ <glyph unicode="&#xe258;" d="M339 1098h160q13 0 23 -9l471 -471q7 -8 7 -18t-7 -18l-471 -471q-10 -9 -23 -9h-160q-16 0 -21 11t7 23l464 464l-464 464q-12 12 -7 23t21 11z" />
282
+ <glyph unicode="&#xe259;" d="M1087 882q11 -5 11 -21v-160q0 -13 -9 -23l-471 -471q-8 -7 -18 -7t-18 7l-471 471q-9 10 -9 23v160q0 16 11 21t23 -7l464 -464l464 464q12 12 23 7z" />
283
+ <glyph unicode="&#xe260;" d="M618 993l471 -471q9 -10 9 -23v-160q0 -16 -11 -21t-23 7l-464 464l-464 -464q-12 -12 -23 -7t-11 21v160q0 13 9 23l471 471q8 7 18 7t18 -7z" />
284
+ <glyph unicode="&#xf8ff;" d="M1000 1200q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM450 1000h100q21 0 40 -14t26 -33l79 -194q5 1 16 3q34 6 54 9.5t60 7t65.5 1t61 -10t56.5 -23t42.5 -42t29 -64t5 -92t-19.5 -121.5q-1 -7 -3 -19.5t-11 -50t-20.5 -73t-32.5 -81.5t-46.5 -83t-64 -70 t-82.5 -50q-13 -5 -42 -5t-65.5 2.5t-47.5 2.5q-14 0 -49.5 -3.5t-63 -3.5t-43.5 7q-57 25 -104.5 78.5t-75 111.5t-46.5 112t-26 90l-7 35q-15 63 -18 115t4.5 88.5t26 64t39.5 43.5t52 25.5t58.5 13t62.5 2t59.5 -4.5t55.5 -8l-147 192q-12 18 -5.5 30t27.5 12z" />
285
+ <glyph unicode="&#x1f511;" d="M250 1200h600q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-500l-255 -178q-19 -9 -32 -1t-13 29v650h-150q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM400 1100v-100h300v100h-300z" />
286
+ <glyph unicode="&#x1f6aa;" d="M250 1200h750q39 0 69.5 -40.5t30.5 -84.5v-933l-700 -117v950l600 125h-700v-1000h-100v1025q0 23 15.5 49t34.5 26zM500 525v-100l100 20v100z" />
287
+ </font>
288
+ </defs></svg>
library/toolset/toolset-common/res/lib/bootstrap/fonts/glyphicons-halflings-regular.ttf ADDED
Binary file
library/toolset/toolset-common/res/lib/bootstrap/fonts/glyphicons-halflings-regular.woff ADDED
Binary file
library/toolset/toolset-common/res/lib/bootstrap/fonts/glyphicons-halflings-regular.woff2 ADDED
Binary file
library/toolset/toolset-common/res/lib/bootstrap/js/bootstrap.js ADDED
@@ -0,0 +1,2380 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*!
2
+ * Bootstrap v3.3.7 (http://getbootstrap.com)
3
+ * Copyright 2011-2016 Twitter, Inc.
4
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
5
+ */
6
+
7
+ /*!
8
+ * Generated using the Bootstrap Customizer (http://getbootstrap.com/customize/?id=39f56dbee4e4db91437f384b1dcd27f0)
9
+ * Config saved to config.json and https://gist.github.com/39f56dbee4e4db91437f384b1dcd27f0
10
+ */
11
+ if (typeof jQuery === 'undefined') {
12
+ throw new Error('Bootstrap\'s JavaScript requires jQuery')
13
+ }
14
+ +function ($) {
15
+ 'use strict';
16
+ var version = $.fn.jquery.split(' ')[0].split('.')
17
+ if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1) || (version[0] > 3)) {
18
+ throw new Error('Bootstrap\'s JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4')
19
+ }
20
+ }(jQuery);
21
+
22
+ /* ========================================================================
23
+ * Bootstrap: alert.js v3.3.7
24
+ * http://getbootstrap.com/javascript/#alerts
25
+ * ========================================================================
26
+ * Copyright 2011-2016 Twitter, Inc.
27
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
28
+ * ======================================================================== */
29
+
30
+
31
+ +function ($) {
32
+ 'use strict';
33
+
34
+ // ALERT CLASS DEFINITION
35
+ // ======================
36
+
37
+ var dismiss = '[data-dismiss="alert"]'
38
+ var Alert = function (el) {
39
+ $(el).on('click', dismiss, this.close)
40
+ }
41
+
42
+ Alert.VERSION = '3.3.7'
43
+
44
+ Alert.TRANSITION_DURATION = 150
45
+
46
+ Alert.prototype.close = function (e) {
47
+ var $this = $(this)
48
+ var selector = $this.attr('data-target')
49
+
50
+ if (!selector) {
51
+ selector = $this.attr('href')
52
+ selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
53
+ }
54
+
55
+ var $parent = $(selector === '#' ? [] : selector)
56
+
57
+ if (e) e.preventDefault()
58
+
59
+ if (!$parent.length) {
60
+ $parent = $this.closest('.alert')
61
+ }
62
+
63
+ $parent.trigger(e = $.Event('close.bs.alert'))
64
+
65
+ if (e.isDefaultPrevented()) return
66
+
67
+ $parent.removeClass('in')
68
+
69
+ function removeElement() {
70
+ // detach from parent, fire event then clean up data
71
+ $parent.detach().trigger('closed.bs.alert').remove()
72
+ }
73
+
74
+ $.support.transition && $parent.hasClass('fade') ?
75
+ $parent
76
+ .one('bsTransitionEnd', removeElement)
77
+ .emulateTransitionEnd(Alert.TRANSITION_DURATION) :
78
+ removeElement()
79
+ }
80
+
81
+
82
+ // ALERT PLUGIN DEFINITION
83
+ // =======================
84
+
85
+ function Plugin(option) {
86
+ return this.each(function () {
87
+ var $this = $(this)
88
+ var data = $this.data('bs.alert')
89
+
90
+ if (!data) $this.data('bs.alert', (data = new Alert(this)))
91
+ if (typeof option == 'string') data[option].call($this)
92
+ })
93
+ }
94
+
95
+ var old = $.fn.alert
96
+
97
+ $.fn.alert = Plugin
98
+ $.fn.alert.Constructor = Alert
99
+
100
+
101
+ // ALERT NO CONFLICT
102
+ // =================
103
+
104
+ $.fn.alert.noConflict = function () {
105
+ $.fn.alert = old
106
+ return this
107
+ }
108
+
109
+
110
+ // ALERT DATA-API
111
+ // ==============
112
+
113
+ $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)
114
+
115
+ }(jQuery);
116
+
117
+ /* ========================================================================
118
+ * Bootstrap: button.js v3.3.7
119
+ * http://getbootstrap.com/javascript/#buttons
120
+ * ========================================================================
121
+ * Copyright 2011-2016 Twitter, Inc.
122
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
123
+ * ======================================================================== */
124
+
125
+
126
+ +function ($) {
127
+ 'use strict';
128
+
129
+ // BUTTON PUBLIC CLASS DEFINITION
130
+ // ==============================
131
+
132
+ var Button = function (element, options) {
133
+ this.$element = $(element)
134
+ this.options = $.extend({}, Button.DEFAULTS, options)
135
+ this.isLoading = false
136
+ }
137
+
138
+ Button.VERSION = '3.3.7'
139
+
140
+ Button.DEFAULTS = {
141
+ loadingText: 'loading...'
142
+ }
143
+
144
+ Button.prototype.setState = function (state) {
145
+ var d = 'disabled'
146
+ var $el = this.$element
147
+ var val = $el.is('input') ? 'val' : 'html'
148
+ var data = $el.data()
149
+
150
+ state += 'Text'
151
+
152
+ if (data.resetText == null) $el.data('resetText', $el[val]())
153
+
154
+ // push to event loop to allow forms to submit
155
+ setTimeout($.proxy(function () {
156
+ $el[val](data[state] == null ? this.options[state] : data[state])
157
+
158
+ if (state == 'loadingText') {
159
+ this.isLoading = true
160
+ $el.addClass(d).attr(d, d).prop(d, true)
161
+ } else if (this.isLoading) {
162
+ this.isLoading = false
163
+ $el.removeClass(d).removeAttr(d).prop(d, false)
164
+ }
165
+ }, this), 0)
166
+ }
167
+
168
+ Button.prototype.toggle = function () {
169
+ var changed = true
170
+ var $parent = this.$element.closest('[data-toggle="buttons"]')
171
+
172
+ if ($parent.length) {
173
+ var $input = this.$element.find('input')
174
+ if ($input.prop('type') == 'radio') {
175
+ if ($input.prop('checked')) changed = false
176
+ $parent.find('.active').removeClass('active')
177
+ this.$element.addClass('active')
178
+ } else if ($input.prop('type') == 'checkbox') {
179
+ if (($input.prop('checked')) !== this.$element.hasClass('active')) changed = false
180
+ this.$element.toggleClass('active')
181
+ }
182
+ $input.prop('checked', this.$element.hasClass('active'))
183
+ if (changed) $input.trigger('change')
184
+ } else {
185
+ this.$element.attr('aria-pressed', !this.$element.hasClass('active'))
186
+ this.$element.toggleClass('active')
187
+ }
188
+ }
189
+
190
+
191
+ // BUTTON PLUGIN DEFINITION
192
+ // ========================
193
+
194
+ function Plugin(option) {
195
+ return this.each(function () {
196
+ var $this = $(this)
197
+ var data = $this.data('bs.button')
198
+ var options = typeof option == 'object' && option
199
+
200
+ if (!data) $this.data('bs.button', (data = new Button(this, options)))
201
+
202
+ if (option == 'toggle') data.toggle()
203
+ else if (option) data.setState(option)
204
+ })
205
+ }
206
+
207
+ var old = $.fn.button
208
+
209
+ $.fn.button = Plugin
210
+ $.fn.button.Constructor = Button
211
+
212
+
213
+ // BUTTON NO CONFLICT
214
+ // ==================
215
+
216
+ $.fn.button.noConflict = function () {
217
+ $.fn.button = old
218
+ return this
219
+ }
220
+
221
+
222
+ // BUTTON DATA-API
223
+ // ===============
224
+
225
+ $(document)
226
+ .on('click.bs.button.data-api', '[data-toggle^="button"]', function (e) {
227
+ var $btn = $(e.target).closest('.btn')
228
+ Plugin.call($btn, 'toggle')
229
+ if (!($(e.target).is('input[type="radio"], input[type="checkbox"]'))) {
230
+ // Prevent double click on radios, and the double selections (so cancellation) on checkboxes
231
+ e.preventDefault()
232
+ // The target component still receive the focus
233
+ if ($btn.is('input,button')) $btn.trigger('focus')
234
+ else $btn.find('input:visible,button:visible').first().trigger('focus')
235
+ }
236
+ })
237
+ .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^="button"]', function (e) {
238
+ $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type))
239
+ })
240
+
241
+ }(jQuery);
242
+
243
+ /* ========================================================================
244
+ * Bootstrap: carousel.js v3.3.7
245
+ * http://getbootstrap.com/javascript/#carousel
246
+ * ========================================================================
247
+ * Copyright 2011-2016 Twitter, Inc.
248
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
249
+ * ======================================================================== */
250
+
251
+
252
+ +function ($) {
253
+ 'use strict';
254
+
255
+ // CAROUSEL CLASS DEFINITION
256
+ // =========================
257
+
258
+ var Carousel = function (element, options) {
259
+ this.$element = $(element)
260
+ this.$indicators = this.$element.find('.carousel-indicators')
261
+ this.options = options
262
+ this.paused = null
263
+ this.sliding = null
264
+ this.interval = null
265
+ this.$active = null
266
+ this.$items = null
267
+
268
+ this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this))
269
+
270
+ this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element
271
+ .on('mouseenter.bs.carousel', $.proxy(this.pause, this))
272
+ .on('mouseleave.bs.carousel', $.proxy(this.cycle, this))
273
+ }
274
+
275
+ Carousel.VERSION = '3.3.7'
276
+
277
+ Carousel.TRANSITION_DURATION = 600
278
+
279
+ Carousel.DEFAULTS = {
280
+ interval: 5000,
281
+ pause: 'hover',
282
+ wrap: true,
283
+ keyboard: true
284
+ }
285
+
286
+ Carousel.prototype.keydown = function (e) {
287
+ if (/input|textarea/i.test(e.target.tagName)) return
288
+ switch (e.which) {
289
+ case 37: this.prev(); break
290
+ case 39: this.next(); break
291
+ default: return
292
+ }
293
+
294
+ e.preventDefault()
295
+ }
296
+
297
+ Carousel.prototype.cycle = function (e) {
298
+ e || (this.paused = false)
299
+
300
+ this.interval && clearInterval(this.interval)
301
+
302
+ this.options.interval
303
+ && !this.paused
304
+ && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))
305
+
306
+ return this
307
+ }
308
+
309
+ Carousel.prototype.getItemIndex = function (item) {
310
+ this.$items = item.parent().children('.item')
311
+ return this.$items.index(item || this.$active)
312
+ }
313
+
314
+ Carousel.prototype.getItemForDirection = function (direction, active) {
315
+ var activeIndex = this.getItemIndex(active)
316
+ var willWrap = (direction == 'prev' && activeIndex === 0)
317
+ || (direction == 'next' && activeIndex == (this.$items.length - 1))
318
+ if (willWrap && !this.options.wrap) return active
319
+ var delta = direction == 'prev' ? -1 : 1
320
+ var itemIndex = (activeIndex + delta) % this.$items.length
321
+ return this.$items.eq(itemIndex)
322
+ }
323
+
324
+ Carousel.prototype.to = function (pos) {
325
+ var that = this
326
+ var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active'))
327
+
328
+ if (pos > (this.$items.length - 1) || pos < 0) return
329
+
330
+ if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, "slid"
331
+ if (activeIndex == pos) return this.pause().cycle()
332
+
333
+ return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos))
334
+ }
335
+
336
+ Carousel.prototype.pause = function (e) {
337
+ e || (this.paused = true)
338
+
339
+ if (this.$element.find('.next, .prev').length && $.support.transition) {
340
+ this.$element.trigger($.support.transition.end)
341
+ this.cycle(true)
342
+ }
343
+
344
+ this.interval = clearInterval(this.interval)
345
+
346
+ return this
347
+ }
348
+
349
+ Carousel.prototype.next = function () {
350
+ if (this.sliding) return
351
+ return this.slide('next')
352
+ }
353
+
354
+ Carousel.prototype.prev = function () {
355
+ if (this.sliding) return
356
+ return this.slide('prev')
357
+ }
358
+
359
+ Carousel.prototype.slide = function (type, next) {
360
+ var $active = this.$element.find('.item.active')
361
+ var $next = next || this.getItemForDirection(type, $active)
362
+ var isCycling = this.interval
363
+ var direction = type == 'next' ? 'left' : 'right'
364
+ var that = this
365
+
366
+ if ($next.hasClass('active')) return (this.sliding = false)
367
+
368
+ var relatedTarget = $next[0]
369
+ var slideEvent = $.Event('slide.bs.carousel', {
370
+ relatedTarget: relatedTarget,
371
+ direction: direction
372
+ })
373
+ this.$element.trigger(slideEvent)
374
+ if (slideEvent.isDefaultPrevented()) return
375
+
376
+ this.sliding = true
377
+
378
+ isCycling && this.pause()
379
+
380
+ if (this.$indicators.length) {
381
+ this.$indicators.find('.active').removeClass('active')
382
+ var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)])
383
+ $nextIndicator && $nextIndicator.addClass('active')
384
+ }
385
+
386
+ var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, "slid"
387
+ if ($.support.transition && this.$element.hasClass('slide')) {
388
+ $next.addClass(type)
389
+ $next[0].offsetWidth // force reflow
390
+ $active.addClass(direction)
391
+ $next.addClass(direction)
392
+ $active
393
+ .one('bsTransitionEnd', function () {
394
+ $next.removeClass([type, direction].join(' ')).addClass('active')
395
+ $active.removeClass(['active', direction].join(' '))
396
+ that.sliding = false
397
+ setTimeout(function () {
398
+ that.$element.trigger(slidEvent)
399
+ }, 0)
400
+ })
401
+ .emulateTransitionEnd(Carousel.TRANSITION_DURATION)
402
+ } else {
403
+ $active.removeClass('active')
404
+ $next.addClass('active')
405
+ this.sliding = false
406
+ this.$element.trigger(slidEvent)
407
+ }
408
+
409
+ isCycling && this.cycle()
410
+
411
+ return this
412
+ }
413
+
414
+
415
+ // CAROUSEL PLUGIN DEFINITION
416
+ // ==========================
417
+
418
+ function Plugin(option) {
419
+ return this.each(function () {
420
+ var $this = $(this)
421
+ var data = $this.data('bs.carousel')
422
+ var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option)
423
+ var action = typeof option == 'string' ? option : options.slide
424
+
425
+ if (!data) $this.data('bs.carousel', (data = new Carousel(this, options)))
426
+ if (typeof option == 'number') data.to(option)
427
+ else if (action) data[action]()
428
+ else if (options.interval) data.pause().cycle()
429
+ })
430
+ }
431
+
432
+ var old = $.fn.carousel
433
+
434
+ $.fn.carousel = Plugin
435
+ $.fn.carousel.Constructor = Carousel
436
+
437
+
438
+ // CAROUSEL NO CONFLICT
439
+ // ====================
440
+
441
+ $.fn.carousel.noConflict = function () {
442
+ $.fn.carousel = old
443
+ return this
444
+ }
445
+
446
+
447
+ // CAROUSEL DATA-API
448
+ // =================
449
+
450
+ var clickHandler = function (e) {
451
+ var href
452
+ var $this = $(this)
453
+ var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7
454
+ if (!$target.hasClass('carousel')) return
455
+ var options = $.extend({}, $target.data(), $this.data())
456
+ var slideIndex = $this.attr('data-slide-to')
457
+ if (slideIndex) options.interval = false
458
+
459
+ Plugin.call($target, options)
460
+
461
+ if (slideIndex) {
462
+ $target.data('bs.carousel').to(slideIndex)
463
+ }
464
+
465
+ e.preventDefault()
466
+ }
467
+
468
+ $(document)
469
+ .on('click.bs.carousel.data-api', '[data-slide]', clickHandler)
470
+ .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler)
471
+
472
+ $(window).on('load', function () {
473
+ $('[data-ride="carousel"]').each(function () {
474
+ var $carousel = $(this)
475
+ Plugin.call($carousel, $carousel.data())
476
+ })
477
+ })
478
+
479
+ }(jQuery);
480
+
481
+ /* ========================================================================
482
+ * Bootstrap: dropdown.js v3.3.7
483
+ * http://getbootstrap.com/javascript/#dropdowns
484
+ * ========================================================================
485
+ * Copyright 2011-2016 Twitter, Inc.
486
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
487
+ * ======================================================================== */
488
+
489
+
490
+ +function ($) {
491
+ 'use strict';
492
+
493
+ // DROPDOWN CLASS DEFINITION
494
+ // =========================
495
+
496
+ var backdrop = '.dropdown-backdrop'
497
+ var toggle = '[data-toggle="dropdown"]'
498
+ var Dropdown = function (element) {
499
+ $(element).on('click.bs.dropdown', this.toggle)
500
+ }
501
+
502
+ Dropdown.VERSION = '3.3.7'
503
+
504
+ function getParent($this) {
505
+ var selector = $this.attr('data-target')
506
+
507
+ if (!selector) {
508
+ selector = $this.attr('href')
509
+ selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
510
+ }
511
+
512
+ var $parent = selector && $(selector)
513
+
514
+ return $parent && $parent.length ? $parent : $this.parent()
515
+ }
516
+
517
+ function clearMenus(e) {
518
+ if (e && e.which === 3) return
519
+ $(backdrop).remove()
520
+ $(toggle).each(function () {
521
+ var $this = $(this)
522
+ var $parent = getParent($this)
523
+ var relatedTarget = { relatedTarget: this }
524
+
525
+ if (!$parent.hasClass('open')) return
526
+
527
+ if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return
528
+
529
+ $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))
530
+
531
+ if (e.isDefaultPrevented()) return
532
+
533
+ $this.attr('aria-expanded', 'false')
534
+ $parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget))
535
+ })
536
+ }
537
+
538
+ Dropdown.prototype.toggle = function (e) {
539
+ var $this = $(this)
540
+
541
+ if ($this.is('.disabled, :disabled')) return
542
+
543
+ var $parent = getParent($this)
544
+ var isActive = $parent.hasClass('open')
545
+
546
+ clearMenus()
547
+
548
+ if (!isActive) {
549
+ if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {
550
+ // if mobile we use a backdrop because click events don't delegate
551
+ $(document.createElement('div'))
552
+ .addClass('dropdown-backdrop')
553
+ .insertAfter($(this))
554
+ .on('click', clearMenus)
555
+ }
556
+
557
+ var relatedTarget = { relatedTarget: this }
558
+ $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))
559
+
560
+ if (e.isDefaultPrevented()) return
561
+
562
+ $this
563
+ .trigger('focus')
564
+ .attr('aria-expanded', 'true')
565
+
566
+ $parent
567
+ .toggleClass('open')
568
+ .trigger($.Event('shown.bs.dropdown', relatedTarget))
569
+ }
570
+
571
+ return false
572
+ }
573
+
574
+ Dropdown.prototype.keydown = function (e) {
575
+ if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return
576
+
577
+ var $this = $(this)
578
+
579
+ e.preventDefault()
580
+ e.stopPropagation()
581
+
582
+ if ($this.is('.disabled, :disabled')) return
583
+
584
+ var $parent = getParent($this)
585
+ var isActive = $parent.hasClass('open')
586
+
587
+ if (!isActive && e.which != 27 || isActive && e.which == 27) {
588
+ if (e.which == 27) $parent.find(toggle).trigger('focus')
589
+ return $this.trigger('click')
590
+ }
591
+
592
+ var desc = ' li:not(.disabled):visible a'
593
+ var $items = $parent.find('.dropdown-menu' + desc)
594
+
595
+ if (!$items.length) return
596
+
597
+ var index = $items.index(e.target)
598
+
599
+ if (e.which == 38 && index > 0) index-- // up
600
+ if (e.which == 40 && index < $items.length - 1) index++ // down
601
+ if (!~index) index = 0
602
+
603
+ $items.eq(index).trigger('focus')
604
+ }
605
+
606
+
607
+ // DROPDOWN PLUGIN DEFINITION
608
+ // ==========================
609
+
610
+ function Plugin(option) {
611
+ return this.each(function () {
612
+ var $this = $(this)
613
+ var data = $this.data('bs.dropdown')
614
+
615
+ if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))
616
+ if (typeof option == 'string') data[option].call($this)
617
+ })
618
+ }
619
+
620
+ var old = $.fn.dropdown
621
+
622
+ $.fn.dropdown = Plugin
623
+ $.fn.dropdown.Constructor = Dropdown
624
+
625
+
626
+ // DROPDOWN NO CONFLICT
627
+ // ====================
628
+
629
+ $.fn.dropdown.noConflict = function () {
630
+ $.fn.dropdown = old
631
+ return this
632
+ }
633
+
634
+
635
+ // APPLY TO STANDARD DROPDOWN ELEMENTS
636
+ // ===================================
637
+
638
+ $(document)
639
+ .on('click.bs.dropdown.data-api', clearMenus)
640
+ .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
641
+ .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)
642
+ .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)
643
+ .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown)
644
+
645
+ }(jQuery);
646
+
647
+ /* ========================================================================
648
+ * Bootstrap: modal.js v3.3.7
649
+ * http://getbootstrap.com/javascript/#modals
650
+ * ========================================================================
651
+ * Copyright 2011-2016 Twitter, Inc.
652
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
653
+ * ======================================================================== */
654
+
655
+
656
+ +function ($) {
657
+ 'use strict';
658
+
659
+ // MODAL CLASS DEFINITION
660
+ // ======================
661
+
662
+ var Modal = function (element, options) {
663
+ this.options = options
664
+ this.$body = $(document.body)
665
+ this.$element = $(element)
666
+ this.$dialog = this.$element.find('.modal-dialog')
667
+ this.$backdrop = null
668
+ this.isShown = null
669
+ this.originalBodyPad = null
670
+ this.scrollbarWidth = 0
671
+ this.ignoreBackdropClick = false
672
+
673
+ if (this.options.remote) {
674
+ this.$element
675
+ .find('.modal-content')
676
+ .load(this.options.remote, $.proxy(function () {
677
+ this.$element.trigger('loaded.bs.modal')
678
+ }, this))
679
+ }
680
+ }
681
+
682
+ Modal.VERSION = '3.3.7'
683
+
684
+ Modal.TRANSITION_DURATION = 300
685
+ Modal.BACKDROP_TRANSITION_DURATION = 150
686
+
687
+ Modal.DEFAULTS = {
688
+ backdrop: true,
689
+ keyboard: true,
690
+ show: true
691
+ }
692
+
693
+ Modal.prototype.toggle = function (_relatedTarget) {
694
+ return this.isShown ? this.hide() : this.show(_relatedTarget)
695
+ }
696
+
697
+ Modal.prototype.show = function (_relatedTarget) {
698
+ var that = this
699
+ var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })
700
+
701
+ this.$element.trigger(e)
702
+
703
+ if (this.isShown || e.isDefaultPrevented()) return
704
+
705
+ this.isShown = true
706
+
707
+ this.checkScrollbar()
708
+ this.setScrollbar()
709
+ this.$body.addClass('modal-open')
710
+
711
+ this.escape()
712
+ this.resize()
713
+
714
+ this.$element.on('click.dismiss.bs.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this))
715
+
716
+ this.$dialog.on('mousedown.dismiss.bs.modal', function () {
717
+ that.$element.one('mouseup.dismiss.bs.modal', function (e) {
718
+ if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true
719
+ })
720
+ })
721
+
722
+ this.backdrop(function () {
723
+ var transition = $.support.transition && that.$element.hasClass('fade')
724
+
725
+ if (!that.$element.parent().length) {
726
+ that.$element.appendTo(that.$body) // don't move modals dom position
727
+ }
728
+
729
+ that.$element
730
+ .show()
731
+ .scrollTop(0)
732
+
733
+ that.adjustDialog()
734
+
735
+ if (transition) {
736
+ that.$element[0].offsetWidth // force reflow
737
+ }
738
+
739
+ that.$element.addClass('in')
740
+
741
+ that.enforceFocus()
742
+
743
+ var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })
744
+
745
+ transition ?
746
+ that.$dialog // wait for modal to slide in
747
+ .one('bsTransitionEnd', function () {
748
+ that.$element.trigger('focus').trigger(e)
749
+ })
750
+ .emulateTransitionEnd(Modal.TRANSITION_DURATION) :
751
+ that.$element.trigger('focus').trigger(e)
752
+ })
753
+ }
754
+
755
+ Modal.prototype.hide = function (e) {
756
+ if (e) e.preventDefault()
757
+
758
+ e = $.Event('hide.bs.modal')
759
+
760
+ this.$element.trigger(e)
761
+
762
+ if (!this.isShown || e.isDefaultPrevented()) return
763
+
764
+ this.isShown = false
765
+
766
+ this.escape()
767
+ this.resize()
768
+
769
+ $(document).off('focusin.bs.modal')
770
+
771
+ this.$element
772
+ .removeClass('in')
773
+ .off('click.dismiss.bs.modal')
774
+ .off('mouseup.dismiss.bs.modal')
775
+
776
+ this.$dialog.off('mousedown.dismiss.bs.modal')
777
+
778
+ $.support.transition && this.$element.hasClass('fade') ?
779
+ this.$element
780
+ .one('bsTransitionEnd', $.proxy(this.hideModal, this))
781
+ .emulateTransitionEnd(Modal.TRANSITION_DURATION) :
782
+ this.hideModal()
783
+ }
784
+
785
+ Modal.prototype.enforceFocus = function () {
786
+ $(document)
787
+ .off('focusin.bs.modal') // guard against infinite focus loop
788
+ .on('focusin.bs.modal', $.proxy(function (e) {
789
+ if (document !== e.target &&
790
+ this.$element[0] !== e.target &&
791
+ !this.$element.has(e.target).length) {
792
+ this.$element.trigger('focus')
793
+ }
794
+ }, this))
795
+ }
796
+
797
+ Modal.prototype.escape = function () {
798
+ if (this.isShown && this.options.keyboard) {
799
+ this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) {
800
+ e.which == 27 && this.hide()
801
+ }, this))
802
+ } else if (!this.isShown) {
803
+ this.$element.off('keydown.dismiss.bs.modal')
804
+ }
805
+ }
806
+
807
+ Modal.prototype.resize = function () {
808
+ if (this.isShown) {
809
+ $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this))
810
+ } else {
811
+ $(window).off('resize.bs.modal')
812
+ }
813
+ }
814
+
815
+ Modal.prototype.hideModal = function () {
816
+ var that = this
817
+ this.$element.hide()
818
+ this.backdrop(function () {
819
+ that.$body.removeClass('modal-open')
820
+ that.resetAdjustments()
821
+ that.resetScrollbar()
822
+ that.$element.trigger('hidden.bs.modal')
823
+ })
824
+ }
825
+
826
+ Modal.prototype.removeBackdrop = function () {
827
+ this.$backdrop && this.$backdrop.remove()
828
+ this.$backdrop = null
829
+ }
830
+
831
+ Modal.prototype.backdrop = function (callback) {
832
+ var that = this
833
+ var animate = this.$element.hasClass('fade') ? 'fade' : ''
834
+
835
+ if (this.isShown && this.options.backdrop) {
836
+ var doAnimate = $.support.transition && animate
837
+
838
+ this.$backdrop = $(document.createElement('div'))
839
+ .addClass('modal-backdrop ' + animate)
840
+ .appendTo(this.$body)
841
+
842
+ this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {
843
+ if (this.ignoreBackdropClick) {
844
+ this.ignoreBackdropClick = false
845
+ return
846
+ }
847
+ if (e.target !== e.currentTarget) return
848
+ this.options.backdrop == 'static'
849
+ ? this.$element[0].focus()
850
+ : this.hide()
851
+ }, this))
852
+
853
+ if (doAnimate) this.$backdrop[0].offsetWidth // force reflow
854
+
855
+ this.$backdrop.addClass('in')
856
+
857
+ if (!callback) return
858
+
859
+ doAnimate ?
860
+ this.$backdrop
861
+ .one('bsTransitionEnd', callback)
862
+ .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :
863
+ callback()
864
+
865
+ } else if (!this.isShown && this.$backdrop) {
866
+ this.$backdrop.removeClass('in')
867
+
868
+ var callbackRemove = function () {
869
+ that.removeBackdrop()
870
+ callback && callback()
871
+ }
872
+ $.support.transition && this.$element.hasClass('fade') ?
873
+ this.$backdrop
874
+ .one('bsTransitionEnd', callbackRemove)
875
+ .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :
876
+ callbackRemove()
877
+
878
+ } else if (callback) {
879
+ callback()
880
+ }
881
+ }
882
+
883
+ // these following methods are used to handle overflowing modals
884
+
885
+ Modal.prototype.handleUpdate = function () {
886
+ this.adjustDialog()
887
+ }
888
+
889
+ Modal.prototype.adjustDialog = function () {
890
+ var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight
891
+
892
+ this.$element.css({
893
+ paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '',
894
+ paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : ''
895
+ })
896
+ }
897
+
898
+ Modal.prototype.resetAdjustments = function () {
899
+ this.$element.css({
900
+ paddingLeft: '',
901
+ paddingRight: ''
902
+ })
903
+ }
904
+
905
+ Modal.prototype.checkScrollbar = function () {
906
+ var fullWindowWidth = window.innerWidth
907
+ if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8
908
+ var documentElementRect = document.documentElement.getBoundingClientRect()
909
+ fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left)
910
+ }
911
+ this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth
912
+ this.scrollbarWidth = this.measureScrollbar()
913
+ }
914
+
915
+ Modal.prototype.setScrollbar = function () {
916
+ var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)
917
+ this.originalBodyPad = document.body.style.paddingRight || ''
918
+ if (this.bodyIsOverflowing) this.$body.css('padding-right', bodyPad + this.scrollbarWidth)
919
+ }
920
+
921
+ Modal.prototype.resetScrollbar = function () {
922
+ this.$body.css('padding-right', this.originalBodyPad)
923
+ }
924
+
925
+ Modal.prototype.measureScrollbar = function () { // thx walsh
926
+ var scrollDiv = document.createElement('div')
927
+ scrollDiv.className = 'modal-scrollbar-measure'
928
+ this.$body.append(scrollDiv)
929
+ var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth
930
+ this.$body[0].removeChild(scrollDiv)
931
+ return scrollbarWidth
932
+ }
933
+
934
+
935
+ // MODAL PLUGIN DEFINITION
936
+ // =======================
937
+
938
+ function Plugin(option, _relatedTarget) {
939
+ return this.each(function () {
940
+ var $this = $(this)
941
+ var data = $this.data('bs.modal')
942
+ var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)
943
+
944
+ if (!data) $this.data('bs.modal', (data = new Modal(this, options)))
945
+ if (typeof option == 'string') data[option](_relatedTarget)
946
+ else if (options.show) data.show(_relatedTarget)
947
+ })
948
+ }
949
+
950
+ var old = $.fn.modal
951
+
952
+ $.fn.modal = Plugin
953
+ $.fn.modal.Constructor = Modal
954
+
955
+
956
+ // MODAL NO CONFLICT
957
+ // =================
958
+
959
+ $.fn.modal.noConflict = function () {
960
+ $.fn.modal = old
961
+ return this
962
+ }
963
+
964
+
965
+ // MODAL DATA-API
966
+ // ==============
967
+
968
+ $(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function (e) {
969
+ var $this = $(this)
970
+ var href = $this.attr('href')
971
+ var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) // strip for ie7
972
+ var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())
973
+
974
+ if ($this.is('a')) e.preventDefault()
975
+
976
+ $target.one('show.bs.modal', function (showEvent) {
977
+ if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown
978
+ $target.one('hidden.bs.modal', function () {
979
+ $this.is(':visible') && $this.trigger('focus')
980
+ })
981
+ })
982
+ Plugin.call($target, option, this)
983
+ })
984
+
985
+ }(jQuery);
986
+
987
+ /* ========================================================================
988
+ * Bootstrap: tooltip.js v3.3.7
989
+ * http://getbootstrap.com/javascript/#tooltip
990
+ * Inspired by the original jQuery.tipsy by Jason Frame
991
+ * ========================================================================
992
+ * Copyright 2011-2016 Twitter, Inc.
993
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
994
+ * ======================================================================== */
995
+
996
+
997
+ +function ($) {
998
+ 'use strict';
999
+
1000
+ // TOOLTIP PUBLIC CLASS DEFINITION
1001
+ // ===============================
1002
+
1003
+ var Tooltip = function (element, options) {
1004
+ this.type = null
1005
+ this.options = null
1006
+ this.enabled = null
1007
+ this.timeout = null
1008
+ this.hoverState = null
1009
+ this.$element = null
1010
+ this.inState = null
1011
+
1012
+ this.init('tooltip', element, options)
1013
+ }
1014
+
1015
+ Tooltip.VERSION = '3.3.7'
1016
+
1017
+ Tooltip.TRANSITION_DURATION = 150
1018
+
1019
+ Tooltip.DEFAULTS = {
1020
+ animation: true,
1021
+ placement: 'top',
1022
+ selector: false,
1023
+ template: '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',
1024
+ trigger: 'hover focus',
1025
+ title: '',
1026
+ delay: 0,
1027
+ html: false,
1028
+ container: false,
1029
+ viewport: {
1030
+ selector: 'body',
1031
+ padding: 0
1032
+ }
1033
+ }
1034
+
1035
+ Tooltip.prototype.init = function (type, element, options) {
1036
+ this.enabled = true
1037
+ this.type = type
1038
+ this.$element = $(element)
1039
+ this.options = this.getOptions(options)
1040
+ this.$viewport = this.options.viewport && $($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport))
1041
+ this.inState = { click: false, hover: false, focus: false }
1042
+
1043
+ if (this.$element[0] instanceof document.constructor && !this.options.selector) {
1044
+ throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!')
1045
+ }
1046
+
1047
+ var triggers = this.options.trigger.split(' ')
1048
+
1049
+ for (var i = triggers.length; i--;) {
1050
+ var trigger = triggers[i]
1051
+
1052
+ if (trigger == 'click') {
1053
+ this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))
1054
+ } else if (trigger != 'manual') {
1055
+ var eventIn = trigger == 'hover' ? 'mouseenter' : 'focusin'
1056
+ var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout'
1057
+
1058
+ this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this))
1059
+ this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))
1060
+ }
1061
+ }
1062
+
1063
+ this.options.selector ?
1064
+ (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :
1065
+ this.fixTitle()
1066
+ }
1067
+
1068
+ Tooltip.prototype.getDefaults = function () {
1069
+ return Tooltip.DEFAULTS
1070
+ }
1071
+
1072
+ Tooltip.prototype.getOptions = function (options) {
1073
+ options = $.extend({}, this.getDefaults(), this.$element.data(), options)
1074
+
1075
+ if (options.delay && typeof options.delay == 'number') {
1076
+ options.delay = {
1077
+ show: options.delay,
1078
+ hide: options.delay
1079
+ }
1080
+ }
1081
+
1082
+ return options
1083
+ }
1084
+
1085
+ Tooltip.prototype.getDelegateOptions = function () {
1086
+ var options = {}
1087
+ var defaults = this.getDefaults()
1088
+
1089
+ this._options && $.each(this._options, function (key, value) {
1090
+ if (defaults[key] != value) options[key] = value
1091
+ })
1092
+
1093
+ return options
1094
+ }
1095
+
1096
+ Tooltip.prototype.enter = function (obj) {
1097
+ var self = obj instanceof this.constructor ?
1098
+ obj : $(obj.currentTarget).data('bs.' + this.type)
1099
+
1100
+ if (!self) {
1101
+ self = new this.constructor(obj.currentTarget, this.getDelegateOptions())
1102
+ $(obj.currentTarget).data('bs.' + this.type, self)
1103
+ }
1104
+
1105
+ if (obj instanceof $.Event) {
1106
+ self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true
1107
+ }
1108
+
1109
+ if (self.tip().hasClass('in') || self.hoverState == 'in') {
1110
+ self.hoverState = 'in'
1111
+ return
1112
+ }
1113
+
1114
+ clearTimeout(self.timeout)
1115
+
1116
+ self.hoverState = 'in'
1117
+
1118
+ if (!self.options.delay || !self.options.delay.show) return self.show()
1119
+
1120
+ self.timeout = setTimeout(function () {
1121
+ if (self.hoverState == 'in') self.show()
1122
+ }, self.options.delay.show)
1123
+ }
1124
+
1125
+ Tooltip.prototype.isInStateTrue = function () {
1126
+ for (var key in this.inState) {
1127
+ if (this.inState[key]) return true
1128
+ }
1129
+
1130
+ return false
1131
+ }
1132
+
1133
+ Tooltip.prototype.leave = function (obj) {
1134
+ var self = obj instanceof this.constructor ?
1135
+ obj : $(obj.currentTarget).data('bs.' + this.type)
1136
+
1137
+ if (!self) {
1138
+ self = new this.constructor(obj.currentTarget, this.getDelegateOptions())
1139
+ $(obj.currentTarget).data('bs.' + this.type, self)
1140
+ }
1141
+
1142
+ if (obj instanceof $.Event) {
1143
+ self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false
1144
+ }
1145
+
1146
+ if (self.isInStateTrue()) return
1147
+
1148
+ clearTimeout(self.timeout)
1149
+
1150
+ self.hoverState = 'out'
1151
+
1152
+ if (!self.options.delay || !self.options.delay.hide) return self.hide()
1153
+
1154
+ self.timeout = setTimeout(function () {
1155
+ if (self.hoverState == 'out') self.hide()
1156
+ }, self.options.delay.hide)
1157
+ }
1158
+
1159
+ Tooltip.prototype.show = function () {
1160
+ var e = $.Event('show.bs.' + this.type)
1161
+
1162
+ if (this.hasContent() && this.enabled) {
1163
+ this.$element.trigger(e)
1164
+
1165
+ var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0])
1166
+ if (e.isDefaultPrevented() || !inDom) return
1167
+ var that = this
1168
+
1169
+ var $tip = this.tip()
1170
+
1171
+ var tipId = this.getUID(this.type)
1172
+
1173
+ this.setContent()
1174
+ $tip.attr('id', tipId)
1175
+ this.$element.attr('aria-describedby', tipId)
1176
+
1177
+ if (this.options.animation) $tip.addClass('fade')
1178
+
1179
+ var placement = typeof this.options.placement == 'function' ?
1180
+ this.options.placement.call(this, $tip[0], this.$element[0]) :
1181
+ this.options.placement
1182
+
1183
+ var autoToken = /\s?auto?\s?/i
1184
+ var autoPlace = autoToken.test(placement)
1185
+ if (autoPlace) placement = placement.replace(autoToken, '') || 'top'
1186
+
1187
+ $tip
1188
+ .detach()
1189
+ .css({ top: 0, left: 0, display: 'block' })
1190
+ .addClass(placement)
1191
+ .data('bs.' + this.type, this)
1192
+
1193
+ this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element)
1194
+ this.$element.trigger('inserted.bs.' + this.type)
1195
+
1196
+ var pos = this.getPosition()
1197
+ var actualWidth = $tip[0].offsetWidth
1198
+ var actualHeight = $tip[0].offsetHeight
1199
+
1200
+ if (autoPlace) {
1201
+ var orgPlacement = placement
1202
+ var viewportDim = this.getPosition(this.$viewport)
1203
+
1204
+ placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top' :
1205
+ placement == 'top' && pos.top - actualHeight < viewportDim.top ? 'bottom' :
1206
+ placement == 'right' && pos.right + actualWidth > viewportDim.width ? 'left' :
1207
+ placement == 'left' && pos.left - actualWidth < viewportDim.left ? 'right' :
1208
+ placement
1209
+
1210
+ $tip
1211
+ .removeClass(orgPlacement)
1212
+ .addClass(placement)
1213
+ }
1214
+
1215
+ var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight)
1216
+
1217
+ this.applyPlacement(calculatedOffset, placement)
1218
+
1219
+ var complete = function () {
1220
+ var prevHoverState = that.hoverState
1221
+ that.$element.trigger('shown.bs.' + that.type)
1222
+ that.hoverState = null
1223
+
1224
+ if (prevHoverState == 'out') that.leave(that)
1225
+ }
1226
+
1227
+ $.support.transition && this.$tip.hasClass('fade') ?
1228
+ $tip
1229
+ .one('bsTransitionEnd', complete)
1230
+ .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :
1231
+ complete()
1232
+ }
1233
+ }
1234
+
1235
+ Tooltip.prototype.applyPlacement = function (offset, placement) {
1236
+ var $tip = this.tip()
1237
+ var width = $tip[0].offsetWidth
1238
+ var height = $tip[0].offsetHeight
1239
+
1240
+ // manually read margins because getBoundingClientRect includes difference
1241
+ var marginTop = parseInt($tip.css('margin-top'), 10)
1242
+ var marginLeft = parseInt($tip.css('margin-left'), 10)
1243
+
1244
+ // we must check for NaN for ie 8/9
1245
+ if (isNaN(marginTop)) marginTop = 0
1246
+ if (isNaN(marginLeft)) marginLeft = 0
1247
+
1248
+ offset.top += marginTop
1249
+ offset.left += marginLeft
1250
+
1251
+ // $.fn.offset doesn't round pixel values
1252
+ // so we use setOffset directly with our own function B-0
1253
+ $.offset.setOffset($tip[0], $.extend({
1254
+ using: function (props) {
1255
+ $tip.css({
1256
+ top: Math.round(props.top),
1257
+ left: Math.round(props.left)
1258
+ })
1259
+ }
1260
+ }, offset), 0)
1261
+
1262
+ $tip.addClass('in')
1263
+
1264
+ // check to see if placing tip in new offset caused the tip to resize itself
1265
+ var actualWidth = $tip[0].offsetWidth
1266
+ var actualHeight = $tip[0].offsetHeight
1267
+
1268
+ if (placement == 'top' && actualHeight != height) {
1269
+ offset.top = offset.top + height - actualHeight
1270
+ }
1271
+
1272
+ var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight)
1273
+
1274
+ if (delta.left) offset.left += delta.left
1275
+ else offset.top += delta.top
1276
+
1277
+ var isVertical = /top|bottom/.test(placement)
1278
+ var arrowDelta = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight
1279
+ var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight'
1280
+
1281
+ $tip.offset(offset)
1282
+ this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical)
1283
+ }
1284
+
1285
+ Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) {
1286
+ this.arrow()
1287
+ .css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%')
1288
+ .css(isVertical ? 'top' : 'left', '')
1289
+ }
1290
+
1291
+ Tooltip.prototype.setContent = function () {
1292
+ var $tip = this.tip()
1293
+ var title = this.getTitle()
1294
+
1295
+ $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title)
1296
+ $tip.removeClass('fade in top bottom left right')
1297
+ }
1298
+
1299
+ Tooltip.prototype.hide = function (callback) {
1300
+ var that = this
1301
+ var $tip = $(this.$tip)
1302
+ var e = $.Event('hide.bs.' + this.type)
1303
+
1304
+ function complete() {
1305
+ if (that.hoverState != 'in') $tip.detach()
1306
+ if (that.$element) { // TODO: Check whether guarding this code with this `if` is really necessary.
1307
+ that.$element
1308
+ .removeAttr('aria-describedby')
1309
+ .trigger('hidden.bs.' + that.type)
1310
+ }
1311
+ callback && callback()
1312
+ }
1313
+
1314
+ this.$element.trigger(e)
1315
+
1316
+ if (e.isDefaultPrevented()) return
1317
+
1318
+ $tip.removeClass('in')
1319
+
1320
+ $.support.transition && $tip.hasClass('fade') ?
1321
+ $tip
1322
+ .one('bsTransitionEnd', complete)
1323
+ .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :
1324
+ complete()
1325
+
1326
+ this.hoverState = null
1327
+
1328
+ return this
1329
+ }
1330
+
1331
+ Tooltip.prototype.fixTitle = function () {
1332
+ var $e = this.$element
1333
+ if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') {
1334
+ $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')
1335
+ }
1336
+ }
1337
+
1338
+ Tooltip.prototype.hasContent = function () {
1339
+ return this.getTitle()
1340
+ }
1341
+
1342
+ Tooltip.prototype.getPosition = function ($element) {
1343
+ $element = $element || this.$element
1344
+
1345
+ var el = $element[0]
1346
+ var isBody = el.tagName == 'BODY'
1347
+
1348
+ var elRect = el.getBoundingClientRect()
1349
+ if (elRect.width == null) {
1350
+ // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093
1351
+ elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top })
1352
+ }
1353
+ var isSvg = window.SVGElement && el instanceof window.SVGElement
1354
+ // Avoid using $.offset() on SVGs since it gives incorrect results in jQuery 3.
1355
+ // See https://github.com/twbs/bootstrap/issues/20280
1356
+ var elOffset = isBody ? { top: 0, left: 0 } : (isSvg ? null : $element.offset())
1357
+ var scroll = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() }
1358
+ var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null
1359
+
1360
+ return $.extend({}, elRect, scroll, outerDims, elOffset)
1361
+ }
1362
+
1363
+ Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {
1364
+ return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 } :
1365
+ placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } :
1366
+ placement == 'left' ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :
1367
+ /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width }
1368
+
1369
+ }
1370
+
1371
+ Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) {
1372
+ var delta = { top: 0, left: 0 }
1373
+ if (!this.$viewport) return delta
1374
+
1375
+ var viewportPadding = this.options.viewport && this.options.viewport.padding || 0
1376
+ var viewportDimensions = this.getPosition(this.$viewport)
1377
+
1378
+ if (/right|left/.test(placement)) {
1379
+ var topEdgeOffset = pos.top - viewportPadding - viewportDimensions.scroll
1380
+ var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight
1381
+ if (topEdgeOffset < viewportDimensions.top) { // top overflow
1382
+ delta.top = viewportDimensions.top - topEdgeOffset
1383
+ } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow
1384
+ delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset
1385
+ }
1386
+ } else {
1387
+ var leftEdgeOffset = pos.left - viewportPadding
1388
+ var rightEdgeOffset = pos.left + viewportPadding + actualWidth
1389
+ if (leftEdgeOffset < viewportDimensions.left) { // left overflow
1390
+ delta.left = viewportDimensions.left - leftEdgeOffset
1391
+ } else if (rightEdgeOffset > viewportDimensions.right) { // right overflow
1392
+ delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset
1393
+ }
1394
+ }
1395
+
1396
+ return delta
1397
+ }
1398
+
1399
+ Tooltip.prototype.getTitle = function () {
1400
+ var title
1401
+ var $e = this.$element
1402
+ var o = this.options
1403
+
1404
+ title = $e.attr('data-original-title')
1405
+ || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title)
1406
+
1407
+ return title
1408
+ }
1409
+
1410
+ Tooltip.prototype.getUID = function (prefix) {
1411
+ do prefix += ~~(Math.random() * 1000000)
1412
+ while (document.getElementById(prefix))
1413
+ return prefix
1414
+ }
1415
+
1416
+ Tooltip.prototype.tip = function () {
1417
+ if (!this.$tip) {
1418
+ this.$tip = $(this.options.template)
1419
+ if (this.$tip.length != 1) {
1420
+ throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!')
1421
+ }
1422
+ }
1423
+ return this.$tip
1424
+ }
1425
+
1426
+ Tooltip.prototype.arrow = function () {
1427
+ return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow'))
1428
+ }
1429
+
1430
+ Tooltip.prototype.enable = function () {
1431
+ this.enabled = true
1432
+ }
1433
+
1434
+ Tooltip.prototype.disable = function () {
1435
+ this.enabled = false
1436
+ }
1437
+
1438
+ Tooltip.prototype.toggleEnabled = function () {
1439
+ this.enabled = !this.enabled
1440
+ }
1441
+
1442
+ Tooltip.prototype.toggle = function (e) {
1443
+ var self = this
1444
+ if (e) {
1445
+ self = $(e.currentTarget).data('bs.' + this.type)
1446
+ if (!self) {
1447
+ self = new this.constructor(e.currentTarget, this.getDelegateOptions())
1448
+ $(e.currentTarget).data('bs.' + this.type, self)
1449
+ }
1450
+ }
1451
+
1452
+ if (e) {
1453
+ self.inState.click = !self.inState.click
1454
+ if (self.isInStateTrue()) self.enter(self)
1455
+ else self.leave(self)
1456
+ } else {
1457
+ self.tip().hasClass('in') ? self.leave(self) : self.enter(self)
1458
+ }
1459
+ }
1460
+
1461
+ Tooltip.prototype.destroy = function () {
1462
+ var that = this
1463
+ clearTimeout(this.timeout)
1464
+ this.hide(function () {
1465
+ that.$element.off('.' + that.type).removeData('bs.' + that.type)
1466
+ if (that.$tip) {
1467
+ that.$tip.detach()
1468
+ }
1469
+ that.$tip = null
1470
+ that.$arrow = null
1471
+ that.$viewport = null
1472
+ that.$element = null
1473
+ })
1474
+ }
1475
+
1476
+
1477
+ // TOOLTIP PLUGIN DEFINITION
1478
+ // =========================
1479
+
1480
+ function Plugin(option) {
1481
+ return this.each(function () {
1482
+ var $this = $(this)
1483
+ var data = $this.data('bs.tooltip')
1484
+ var options = typeof option == 'object' && option
1485
+
1486
+ if (!data && /destroy|hide/.test(option)) return
1487
+ if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))
1488
+ if (typeof option == 'string') data[option]()
1489
+ })
1490
+ }
1491
+
1492
+ var old = $.fn.tooltip
1493
+
1494
+ $.fn.tooltip = Plugin
1495
+ $.fn.tooltip.Constructor = Tooltip
1496
+
1497
+
1498
+ // TOOLTIP NO CONFLICT
1499
+ // ===================
1500
+
1501
+ $.fn.tooltip.noConflict = function () {
1502
+ $.fn.tooltip = old
1503
+ return this
1504
+ }
1505
+
1506
+ }(jQuery);
1507
+
1508
+ /* ========================================================================
1509
+ * Bootstrap: popover.js v3.3.7
1510
+ * http://getbootstrap.com/javascript/#popovers
1511
+ * ========================================================================
1512
+ * Copyright 2011-2016 Twitter, Inc.
1513
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
1514
+ * ======================================================================== */
1515
+
1516
+
1517
+ +function ($) {
1518
+ 'use strict';
1519
+
1520
+ // POPOVER PUBLIC CLASS DEFINITION
1521
+ // ===============================
1522
+
1523
+ var Popover = function (element, options) {
1524
+ this.init('popover', element, options)
1525
+ }
1526
+
1527
+ if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')
1528
+
1529
+ Popover.VERSION = '3.3.7'
1530
+
1531
+ Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {
1532
+ placement: 'right',
1533
+ trigger: 'click',
1534
+ content: '',
1535
+ template: '<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'
1536
+ })
1537
+
1538
+
1539
+ // NOTE: POPOVER EXTENDS tooltip.js
1540
+ // ================================
1541
+
1542
+ Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype)
1543
+
1544
+ Popover.prototype.constructor = Popover
1545
+
1546
+ Popover.prototype.getDefaults = function () {
1547
+ return Popover.DEFAULTS
1548
+ }
1549
+
1550
+ Popover.prototype.setContent = function () {
1551
+ var $tip = this.tip()
1552
+ var title = this.getTitle()
1553
+ var content = this.getContent()
1554
+
1555
+ $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title)
1556
+ $tip.find('.popover-content').children().detach().end()[ // we use append for html objects to maintain js events
1557
+ this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text'
1558
+ ](content)
1559
+
1560
+ $tip.removeClass('fade top bottom left right in')
1561
+
1562
+ // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do
1563
+ // this manually by checking the contents.
1564
+ if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide()
1565
+ }
1566
+
1567
+ Popover.prototype.hasContent = function () {
1568
+ return this.getTitle() || this.getContent()
1569
+ }
1570
+
1571
+ Popover.prototype.getContent = function () {
1572
+ var $e = this.$element
1573
+ var o = this.options
1574
+
1575
+ return $e.attr('data-content')
1576
+ || (typeof o.content == 'function' ?
1577
+ o.content.call($e[0]) :
1578
+ o.content)
1579
+ }
1580
+
1581
+ Popover.prototype.arrow = function () {
1582
+ return (this.$arrow = this.$arrow || this.tip().find('.arrow'))
1583
+ }
1584
+
1585
+
1586
+ // POPOVER PLUGIN DEFINITION
1587
+ // =========================
1588
+
1589
+ function Plugin(option) {
1590
+ return this.each(function () {
1591
+ var $this = $(this)
1592
+ var data = $this.data('bs.popover')
1593
+ var options = typeof option == 'object' && option
1594
+
1595
+ if (!data && /destroy|hide/.test(option)) return
1596
+ if (!data) $this.data('bs.popover', (data = new Popover(this, options)))
1597
+ if (typeof option == 'string') data[option]()
1598
+ })
1599
+ }
1600
+
1601
+ var old = $.fn.popover
1602
+
1603
+ $.fn.popover = Plugin
1604
+ $.fn.popover.Constructor = Popover
1605
+
1606
+
1607
+ // POPOVER NO CONFLICT
1608
+ // ===================
1609
+
1610
+ $.fn.popover.noConflict = function () {
1611
+ $.fn.popover = old
1612
+ return this
1613
+ }
1614
+
1615
+ }(jQuery);
1616
+
1617
+ /* ========================================================================
1618
+ * Bootstrap: tab.js v3.3.7
1619
+ * http://getbootstrap.com/javascript/#tabs
1620
+ * ========================================================================
1621
+ * Copyright 2011-2016 Twitter, Inc.
1622
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
1623
+ * ======================================================================== */
1624
+
1625
+
1626
+ +function ($) {
1627
+ 'use strict';
1628
+
1629
+ // TAB CLASS DEFINITION
1630
+ // ====================
1631
+
1632
+ var Tab = function (element) {
1633
+ // jscs:disable requireDollarBeforejQueryAssignment
1634
+ this.element = $(element)
1635
+ // jscs:enable requireDollarBeforejQueryAssignment
1636
+ }
1637
+
1638
+ Tab.VERSION = '3.3.7'
1639
+
1640
+ Tab.TRANSITION_DURATION = 150
1641
+
1642
+ Tab.prototype.show = function () {
1643
+ var $this = this.element
1644
+ var $ul = $this.closest('ul:not(.dropdown-menu)')
1645
+ var selector = $this.data('target')
1646
+
1647
+ if (!selector) {
1648
+ selector = $this.attr('href')
1649
+ selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
1650
+ }
1651
+
1652
+ if ($this.parent('li').hasClass('active')) return
1653
+
1654
+ var $previous = $ul.find('.active:last a')
1655
+ var hideEvent = $.Event('hide.bs.tab', {
1656
+ relatedTarget: $this[0]
1657
+ })
1658
+ var showEvent = $.Event('show.bs.tab', {
1659
+ relatedTarget: $previous[0]
1660
+ })
1661
+
1662
+ $previous.trigger(hideEvent)
1663
+ $this.trigger(showEvent)
1664
+
1665
+ if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return
1666
+
1667
+ var $target = $(selector)
1668
+
1669
+ this.activate($this.closest('li'), $ul)
1670
+ this.activate($target, $target.parent(), function () {
1671
+ $previous.trigger({
1672
+ type: 'hidden.bs.tab',
1673
+ relatedTarget: $this[0]
1674
+ })
1675
+ $this.trigger({
1676
+ type: 'shown.bs.tab',
1677
+ relatedTarget: $previous[0]
1678
+ })
1679
+ })
1680
+ }
1681
+
1682
+ Tab.prototype.activate = function (element, container, callback) {
1683
+ var $active = container.find('> .active')
1684
+ var transition = callback
1685
+ && $.support.transition
1686
+ && ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length)
1687
+
1688
+ function next() {
1689
+ $active
1690
+ .removeClass('active')
1691
+ .find('> .dropdown-menu > .active')
1692
+ .removeClass('active')
1693
+ .end()
1694
+ .find('[data-toggle="tab"]')
1695
+ .attr('aria-expanded', false)
1696
+
1697
+ element
1698
+ .addClass('active')
1699
+ .find('[data-toggle="tab"]')
1700
+ .attr('aria-expanded', true)
1701
+
1702
+ if (transition) {
1703
+ element[0].offsetWidth // reflow for transition
1704
+ element.addClass('in')
1705
+ } else {
1706
+ element.removeClass('fade')
1707
+ }
1708
+
1709
+ if (element.parent('.dropdown-menu').length) {
1710
+ element
1711
+ .closest('li.dropdown')
1712
+ .addClass('active')
1713
+ .end()
1714
+ .find('[data-toggle="tab"]')
1715
+ .attr('aria-expanded', true)
1716
+ }
1717
+
1718
+ callback && callback()
1719
+ }
1720
+
1721
+ $active.length && transition ?
1722
+ $active
1723
+ .one('bsTransitionEnd', next)
1724
+ .emulateTransitionEnd(Tab.TRANSITION_DURATION) :
1725
+ next()
1726
+
1727
+ $active.removeClass('in')
1728
+ }
1729
+
1730
+
1731
+ // TAB PLUGIN DEFINITION
1732
+ // =====================
1733
+
1734
+ function Plugin(option) {
1735
+ return this.each(function () {
1736
+ var $this = $(this)
1737
+ var data = $this.data('bs.tab')
1738
+
1739
+ if (!data) $this.data('bs.tab', (data = new Tab(this)))
1740
+ if (typeof option == 'string') data[option]()
1741
+ })
1742
+ }
1743
+
1744
+ var old = $.fn.tab
1745
+
1746
+ $.fn.tab = Plugin
1747
+ $.fn.tab.Constructor = Tab
1748
+
1749
+
1750
+ // TAB NO CONFLICT
1751
+ // ===============
1752
+
1753
+ $.fn.tab.noConflict = function () {
1754
+ $.fn.tab = old
1755
+ return this
1756
+ }
1757
+
1758
+
1759
+ // TAB DATA-API
1760
+ // ============
1761
+
1762
+ var clickHandler = function (e) {
1763
+ e.preventDefault()
1764
+ Plugin.call($(this), 'show')
1765
+ }
1766
+
1767
+ $(document)
1768
+ .on('click.bs.tab.data-api', '[data-toggle="tab"]', clickHandler)
1769
+ .on('click.bs.tab.data-api', '[data-toggle="pill"]', clickHandler)
1770
+
1771
+ }(jQuery);
1772
+
1773
+ /* ========================================================================
1774
+ * Bootstrap: affix.js v3.3.7
1775
+ * http://getbootstrap.com/javascript/#affix
1776
+ * ========================================================================
1777
+ * Copyright 2011-2016 Twitter, Inc.
1778
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
1779
+ * ======================================================================== */
1780
+
1781
+
1782
+ +function ($) {
1783
+ 'use strict';
1784
+
1785
+ // AFFIX CLASS DEFINITION
1786
+ // ======================
1787
+
1788
+ var Affix = function (element, options) {
1789
+ this.options = $.extend({}, Affix.DEFAULTS, options)
1790
+
1791
+ this.$target = $(this.options.target)
1792
+ .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))
1793
+ .on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this))
1794
+
1795
+ this.$element = $(element)
1796
+ this.affixed = null
1797
+ this.unpin = null
1798
+ this.pinnedOffset = null
1799
+
1800
+ this.checkPosition()
1801
+ }
1802
+
1803
+ Affix.VERSION = '3.3.7'
1804
+
1805
+ Affix.RESET = 'affix affix-top affix-bottom'
1806
+
1807
+ Affix.DEFAULTS = {
1808
+ offset: 0,
1809
+ target: window
1810
+ }
1811
+
1812
+ Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) {
1813
+ var scrollTop = this.$target.scrollTop()
1814
+ var position = this.$element.offset()
1815
+ var targetHeight = this.$target.height()
1816
+
1817
+ if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false
1818
+
1819
+ if (this.affixed == 'bottom') {
1820
+ if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom'
1821
+ return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom'
1822
+ }
1823
+
1824
+ var initializing = this.affixed == null
1825
+ var colliderTop = initializing ? scrollTop : position.top
1826
+ var colliderHeight = initializing ? targetHeight : height
1827
+
1828
+ if (offsetTop != null && scrollTop <= offsetTop) return 'top'
1829
+ if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom'
1830
+
1831
+ return false
1832
+ }
1833
+
1834
+ Affix.prototype.getPinnedOffset = function () {
1835
+ if (this.pinnedOffset) return this.pinnedOffset
1836
+ this.$element.removeClass(Affix.RESET).addClass('affix')
1837
+ var scrollTop = this.$target.scrollTop()
1838
+ var position = this.$element.offset()
1839
+ return (this.pinnedOffset = position.top - scrollTop)
1840
+ }
1841
+
1842
+ Affix.prototype.checkPositionWithEventLoop = function () {
1843
+ setTimeout($.proxy(this.checkPosition, this), 1)
1844
+ }
1845
+
1846
+ Affix.prototype.checkPosition = function () {
1847
+ if (!this.$element.is(':visible')) return
1848
+
1849
+ var height = this.$element.height()
1850
+ var offset = this.options.offset
1851
+ var offsetTop = offset.top
1852
+ var offsetBottom = offset.bottom
1853
+ var scrollHeight = Math.max($(document).height(), $(document.body).height())
1854
+
1855
+ if (typeof offset != 'object') offsetBottom = offsetTop = offset
1856
+ if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element)
1857
+ if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element)
1858
+
1859
+ var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom)
1860
+
1861
+ if (this.affixed != affix) {
1862
+ if (this.unpin != null) this.$element.css('top', '')
1863
+
1864
+ var affixType = 'affix' + (affix ? '-' + affix : '')
1865
+ var e = $.Event(affixType + '.bs.affix')
1866
+
1867
+ this.$element.trigger(e)
1868
+
1869
+ if (e.isDefaultPrevented()) return
1870
+
1871
+ this.affixed = affix
1872
+ this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null
1873
+
1874
+ this.$element
1875
+ .removeClass(Affix.RESET)
1876
+ .addClass(affixType)
1877
+ .trigger(affixType.replace('affix', 'affixed') + '.bs.affix')
1878
+ }
1879
+
1880
+ if (affix == 'bottom') {
1881
+ this.$element.offset({
1882
+ top: scrollHeight - height - offsetBottom
1883
+ })
1884
+ }
1885
+ }
1886
+
1887
+
1888
+ // AFFIX PLUGIN DEFINITION
1889
+ // =======================
1890
+
1891
+ function Plugin(option) {
1892
+ return this.each(function () {
1893
+ var $this = $(this)
1894
+ var data = $this.data('bs.affix')
1895
+ var options = typeof option == 'object' && option
1896
+
1897
+ if (!data) $this.data('bs.affix', (data = new Affix(this, options)))
1898
+ if (typeof option == 'string') data[option]()
1899
+ })
1900
+ }
1901
+
1902
+ var old = $.fn.affix
1903
+
1904
+ $.fn.affix = Plugin
1905
+ $.fn.affix.Constructor = Affix
1906
+
1907
+
1908
+ // AFFIX NO CONFLICT
1909
+ // =================
1910
+
1911
+ $.fn.affix.noConflict = function () {
1912
+ $.fn.affix = old
1913
+ return this
1914
+ }
1915
+
1916
+
1917
+ // AFFIX DATA-API
1918
+ // ==============
1919
+
1920
+ $(window).on('load', function () {
1921
+ $('[data-spy="affix"]').each(function () {
1922
+ var $spy = $(this)
1923
+ var data = $spy.data()
1924
+
1925
+ data.offset = data.offset || {}
1926
+
1927
+ if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom
1928
+ if (data.offsetTop != null) data.offset.top = data.offsetTop
1929
+
1930
+ Plugin.call($spy, data)
1931
+ })
1932
+ })
1933
+
1934
+ }(jQuery);
1935
+
1936
+ /* ========================================================================
1937
+ * Bootstrap: collapse.js v3.3.7
1938
+ * http://getbootstrap.com/javascript/#collapse
1939
+ * ========================================================================
1940
+ * Copyright 2011-2016 Twitter, Inc.
1941
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
1942
+ * ======================================================================== */
1943
+
1944
+ /* jshint latedef: false */
1945
+
1946
+ +function ($) {
1947
+ 'use strict';
1948
+
1949
+ // COLLAPSE PUBLIC CLASS DEFINITION
1950
+ // ================================
1951
+
1952
+ var Collapse = function (element, options) {
1953
+ this.$element = $(element)
1954
+ this.options = $.extend({}, Collapse.DEFAULTS, options)
1955
+ this.$trigger = $('[data-toggle="collapse"][href="#' + element.id + '"],' +
1956
+ '[data-toggle="collapse"][data-target="#' + element.id + '"]')
1957
+ this.transitioning = null
1958
+
1959
+ if (this.options.parent) {
1960
+ this.$parent = this.getParent()
1961
+ } else {
1962
+ this.addAriaAndCollapsedClass(this.$element, this.$trigger)
1963
+ }
1964
+
1965
+ if (this.options.toggle) this.toggle()
1966
+ }
1967
+
1968
+ Collapse.VERSION = '3.3.7'
1969
+
1970
+ Collapse.TRANSITION_DURATION = 350
1971
+
1972
+ Collapse.DEFAULTS = {
1973
+ toggle: true
1974
+ }
1975
+
1976
+ Collapse.prototype.dimension = function () {
1977
+ var hasWidth = this.$element.hasClass('width')
1978
+ return hasWidth ? 'width' : 'height'
1979
+ }
1980
+
1981
+ Collapse.prototype.show = function () {
1982
+ if (this.transitioning || this.$element.hasClass('in')) return
1983
+
1984
+ var activesData
1985
+ var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing')
1986
+
1987
+ if (actives && actives.length) {
1988
+ activesData = actives.data('bs.collapse')
1989
+ if (activesData && activesData.transitioning) return
1990
+ }
1991
+
1992
+ var startEvent = $.Event('show.bs.collapse')
1993
+ this.$element.trigger(startEvent)
1994
+ if (startEvent.isDefaultPrevented()) return
1995
+
1996
+ if (actives && actives.length) {
1997
+ Plugin.call(actives, 'hide')
1998
+ activesData || actives.data('bs.collapse', null)
1999
+ }
2000
+
2001
+ var dimension = this.dimension()
2002
+
2003
+ this.$element
2004
+ .removeClass('collapse')
2005
+ .addClass('collapsing')[dimension](0)
2006
+ .attr('aria-expanded', true)
2007
+
2008
+ this.$trigger
2009
+ .removeClass('collapsed')
2010
+ .attr('aria-expanded', true)
2011
+
2012
+ this.transitioning = 1
2013
+
2014
+ var complete = function () {
2015
+ this.$element
2016
+ .removeClass('collapsing')
2017
+ .addClass('collapse in')[dimension]('')
2018
+ this.transitioning = 0
2019
+ this.$element
2020
+ .trigger('shown.bs.collapse')
2021
+ }
2022
+
2023
+ if (!$.support.transition) return complete.call(this)
2024
+
2025
+ var scrollSize = $.camelCase(['scroll', dimension].join('-'))
2026
+
2027
+ this.$element
2028
+ .one('bsTransitionEnd', $.proxy(complete, this))
2029
+ .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize])
2030
+ }
2031
+
2032
+ Collapse.prototype.hide = function () {
2033
+ if (this.transitioning || !this.$element.hasClass('in')) return
2034
+
2035
+ var startEvent = $.Event('hide.bs.collapse')
2036
+ this.$element.trigger(startEvent)
2037
+ if (startEvent.isDefaultPrevented()) return
2038
+
2039
+ var dimension = this.dimension()
2040
+
2041
+ this.$element[dimension](this.$element[dimension]())[0].offsetHeight
2042
+
2043
+ this.$element
2044
+ .addClass('collapsing')
2045
+ .removeClass('collapse in')
2046
+ .attr('aria-expanded', false)
2047
+
2048
+ this.$trigger
2049
+ .addClass('collapsed')
2050
+ .attr('aria-expanded', false)
2051
+
2052
+ this.transitioning = 1
2053
+
2054
+ var complete = function () {
2055
+ this.transitioning = 0
2056
+ this.$element
2057
+ .removeClass('collapsing')
2058
+ .addClass('collapse')
2059
+ .trigger('hidden.bs.collapse')
2060
+ }
2061
+
2062
+ if (!$.support.transition) return complete.call(this)
2063
+
2064
+ this.$element
2065
+ [dimension](0)
2066
+ .one('bsTransitionEnd', $.proxy(complete, this))
2067
+ .emulateTransitionEnd(Collapse.TRANSITION_DURATION)
2068
+ }
2069
+
2070
+ Collapse.prototype.toggle = function () {
2071
+ this[this.$element.hasClass('in') ? 'hide' : 'show']()
2072
+ }
2073
+
2074
+ Collapse.prototype.getParent = function () {
2075
+ return $(this.options.parent)
2076
+ .find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]')
2077
+ .each($.proxy(function (i, element) {
2078
+ var $element = $(element)
2079
+ this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element)
2080
+ }, this))
2081
+ .end()
2082
+ }
2083
+
2084
+ Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) {
2085
+ var isOpen = $element.hasClass('in')
2086
+
2087
+ $element.attr('aria-expanded', isOpen)
2088
+ $trigger
2089
+ .toggleClass('collapsed', !isOpen)
2090
+ .attr('aria-expanded', isOpen)
2091
+ }
2092
+
2093
+ function getTargetFromTrigger($trigger) {
2094
+ var href
2095
+ var target = $trigger.attr('data-target')
2096
+ || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7
2097
+
2098
+ return $(target)
2099
+ }
2100
+
2101
+
2102
+ // COLLAPSE PLUGIN DEFINITION
2103
+ // ==========================
2104
+
2105
+ function Plugin(option) {
2106
+ return this.each(function () {
2107
+ var $this = $(this)
2108
+ var data = $this.data('bs.collapse')
2109
+ var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)
2110
+
2111
+ if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false
2112
+ if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))
2113
+ if (typeof option == 'string') data[option]()
2114
+ })
2115
+ }
2116
+
2117
+ var old = $.fn.collapse
2118
+
2119
+ $.fn.collapse = Plugin
2120
+ $.fn.collapse.Constructor = Collapse
2121
+
2122
+
2123
+ // COLLAPSE NO CONFLICT
2124
+ // ====================
2125
+
2126
+ $.fn.collapse.noConflict = function () {
2127
+ $.fn.collapse = old
2128
+ return this
2129
+ }
2130
+
2131
+
2132
+ // COLLAPSE DATA-API
2133
+ // =================
2134
+
2135
+ $(document).on('click.bs.collapse.data-api', '[data-toggle="collapse"]', function (e) {
2136
+ var $this = $(this)
2137
+
2138
+ if (!$this.attr('data-target')) e.preventDefault()
2139
+
2140
+ var $target = getTargetFromTrigger($this)
2141
+ var data = $target.data('bs.collapse')
2142
+ var option = data ? 'toggle' : $this.data()
2143
+
2144
+ Plugin.call($target, option)
2145
+ })
2146
+
2147
+ }(jQuery);
2148
+
2149
+ /* ========================================================================
2150
+ * Bootstrap: scrollspy.js v3.3.7
2151
+ * http://getbootstrap.com/javascript/#scrollspy
2152
+ * ========================================================================
2153
+ * Copyright 2011-2016 Twitter, Inc.
2154
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
2155
+ * ======================================================================== */
2156
+
2157
+
2158
+ +function ($) {
2159
+ 'use strict';
2160
+
2161
+ // SCROLLSPY CLASS DEFINITION
2162
+ // ==========================
2163
+
2164
+ function ScrollSpy(element, options) {
2165
+ this.$body = $(document.body)
2166
+ this.$scrollElement = $(element).is(document.body) ? $(window) : $(element)
2167
+ this.options = $.extend({}, ScrollSpy.DEFAULTS, options)
2168
+ this.selector = (this.options.target || '') + ' .nav li > a'
2169
+ this.offsets = []
2170
+ this.targets = []
2171
+ this.activeTarget = null
2172
+ this.scrollHeight = 0
2173
+
2174
+ this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this))
2175
+ this.refresh()
2176
+ this.process()
2177
+ }
2178
+
2179
+ ScrollSpy.VERSION = '3.3.7'
2180
+
2181
+ ScrollSpy.DEFAULTS = {
2182
+ offset: 10
2183
+ }
2184
+
2185
+ ScrollSpy.prototype.getScrollHeight = function () {
2186
+ return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight)
2187
+ }
2188
+
2189
+ ScrollSpy.prototype.refresh = function () {
2190
+ var that = this
2191
+ var offsetMethod = 'offset'
2192
+ var offsetBase = 0
2193
+
2194
+ this.offsets = []
2195
+ this.targets = []
2196
+ this.scrollHeight = this.getScrollHeight()
2197
+
2198
+ if (!$.isWindow(this.$scrollElement[0])) {
2199
+ offsetMethod = 'position'
2200
+ offsetBase = this.$scrollElement.scrollTop()
2201
+ }
2202
+
2203
+ this.$body
2204
+ .find(this.selector)
2205
+ .map(function () {
2206
+ var $el = $(this)
2207
+ var href = $el.data('target') || $el.attr('href')
2208
+ var $href = /^#./.test(href) && $(href)
2209
+
2210
+ return ($href
2211
+ && $href.length
2212
+ && $href.is(':visible')
2213
+ && [[$href[offsetMethod]().top + offsetBase, href]]) || null
2214
+ })
2215
+ .sort(function (a, b) { return a[0] - b[0] })
2216
+ .each(function () {
2217
+ that.offsets.push(this[0])
2218
+ that.targets.push(this[1])
2219
+ })
2220
+ }
2221
+
2222
+ ScrollSpy.prototype.process = function () {
2223
+ var scrollTop = this.$scrollElement.scrollTop() + this.options.offset
2224
+ var scrollHeight = this.getScrollHeight()
2225
+ var maxScroll = this.options.offset + scrollHeight - this.$scrollElement.height()
2226
+ var offsets = this.offsets
2227
+ var targets = this.targets
2228
+ var activeTarget = this.activeTarget
2229
+ var i
2230
+
2231
+ if (this.scrollHeight != scrollHeight) {
2232
+ this.refresh()
2233
+ }
2234
+
2235
+ if (scrollTop >= maxScroll) {
2236
+ return activeTarget != (i = targets[targets.length - 1]) && this.activate(i)
2237
+ }
2238
+
2239
+ if (activeTarget && scrollTop < offsets[0]) {
2240
+ this.activeTarget = null
2241
+ return this.clear()
2242
+ }
2243
+
2244
+ for (i = offsets.length; i--;) {
2245
+ activeTarget != targets[i]
2246
+ && scrollTop >= offsets[i]
2247
+ && (offsets[i + 1] === undefined || scrollTop < offsets[i + 1])
2248
+ && this.activate(targets[i])
2249
+ }
2250
+ }
2251
+
2252
+ ScrollSpy.prototype.activate = function (target) {
2253
+ this.activeTarget = target
2254
+
2255
+ this.clear()
2256
+
2257
+ var selector = this.selector +
2258
+ '[data-target="' + target + '"],' +
2259
+ this.selector + '[href="' + target + '"]'
2260
+
2261
+ var active = $(selector)
2262
+ .parents('li')
2263
+ .addClass('active')
2264
+
2265
+ if (active.parent('.dropdown-menu').length) {
2266
+ active = active
2267
+ .closest('li.dropdown')
2268
+ .addClass('active')
2269
+ }
2270
+
2271
+ active.trigger('activate.bs.scrollspy')
2272
+ }
2273
+
2274
+ ScrollSpy.prototype.clear = function () {
2275
+ $(this.selector)
2276
+ .parentsUntil(this.options.target, '.active')
2277
+ .removeClass('active')
2278
+ }
2279
+
2280
+
2281
+ // SCROLLSPY PLUGIN DEFINITION
2282
+ // ===========================
2283
+
2284
+ function Plugin(option) {
2285
+ return this.each(function () {
2286
+ var $this = $(this)
2287
+ var data = $this.data('bs.scrollspy')
2288
+ var options = typeof option == 'object' && option
2289
+
2290
+ if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options)))
2291
+ if (typeof option == 'string') data[option]()
2292
+ })
2293
+ }
2294
+
2295
+ var old = $.fn.scrollspy
2296
+
2297
+ $.fn.scrollspy = Plugin
2298
+ $.fn.scrollspy.Constructor = ScrollSpy
2299
+
2300
+
2301
+ // SCROLLSPY NO CONFLICT
2302
+ // =====================
2303
+
2304
+ $.fn.scrollspy.noConflict = function () {
2305
+ $.fn.scrollspy = old
2306
+ return this
2307
+ }
2308
+
2309
+
2310
+ // SCROLLSPY DATA-API
2311
+ // ==================
2312
+
2313
+ $(window).on('load.bs.scrollspy.data-api', function () {
2314
+ $('[data-spy="scroll"]').each(function () {
2315
+ var $spy = $(this)
2316
+ Plugin.call($spy, $spy.data())
2317
+ })
2318
+ })
2319
+
2320
+ }(jQuery);
2321
+
2322
+ /* ========================================================================
2323
+ * Bootstrap: transition.js v3.3.7
2324
+ * http://getbootstrap.com/javascript/#transitions
2325
+ * ========================================================================
2326
+ * Copyright 2011-2016 Twitter, Inc.
2327
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
2328
+ * ======================================================================== */
2329
+
2330
+
2331
+ +function ($) {
2332
+ 'use strict';
2333
+
2334
+ // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/)
2335
+ // ============================================================
2336
+
2337
+ function transitionEnd() {
2338
+ var el = document.createElement('bootstrap')
2339
+
2340
+ var transEndEventNames = {
2341
+ WebkitTransition : 'webkitTransitionEnd',
2342
+ MozTransition : 'transitionend',
2343
+ OTransition : 'oTransitionEnd otransitionend',
2344
+ transition : 'transitionend'
2345
+ }
2346
+
2347
+ for (var name in transEndEventNames) {
2348
+ if (el.style[name] !== undefined) {
2349
+ return { end: transEndEventNames[name] }
2350
+ }
2351
+ }
2352
+
2353
+ return false // explicit for ie8 ( ._.)
2354
+ }
2355
+
2356
+ // http://blog.alexmaccaw.com/css-transitions
2357
+ $.fn.emulateTransitionEnd = function (duration) {
2358
+ var called = false
2359
+ var $el = this
2360
+ $(this).one('bsTransitionEnd', function () { called = true })
2361
+ var callback = function () { if (!called) $($el).trigger($.support.transition.end) }
2362
+ setTimeout(callback, duration)
2363
+ return this
2364
+ }
2365
+
2366
+ $(function () {
2367
+ $.support.transition = transitionEnd()
2368
+
2369
+ if (!$.support.transition) return
2370
+
2371
+ $.event.special.bsTransitionEnd = {
2372
+ bindType: $.support.transition.end,
2373
+ delegateType: $.support.transition.end,
2374
+ handle: function (e) {
2375
+ if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)
2376
+ }
2377
+ }
2378
+ })
2379
+
2380
+ }(jQuery);
library/toolset/toolset-common/res/lib/bootstrap/js/bootstrap.min.js ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*!
2
+ * Bootstrap v3.3.7 (http://getbootstrap.com)
3
+ * Copyright 2011-2016 Twitter, Inc.
4
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
5
+ */
6
+
7
+ /*!
8
+ * Generated using the Bootstrap Customizer (http://getbootstrap.com/customize/?id=39f56dbee4e4db91437f384b1dcd27f0)
9
+ * Config saved to config.json and https://gist.github.com/39f56dbee4e4db91437f384b1dcd27f0
10
+ */
11
+ if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(t){"use strict";var e=t.fn.jquery.split(" ")[0].split(".");if(e[0]<2&&e[1]<9||1==e[0]&&9==e[1]&&e[2]<1||e[0]>3)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4")}(jQuery),+function(t){"use strict";function e(e){return this.each(function(){var i=t(this),n=i.data("bs.alert");n||i.data("bs.alert",n=new o(this)),"string"==typeof e&&n[e].call(i)})}var i='[data-dismiss="alert"]',o=function(e){t(e).on("click",i,this.close)};o.VERSION="3.3.7",o.TRANSITION_DURATION=150,o.prototype.close=function(e){function i(){a.detach().trigger("closed.bs.alert").remove()}var n=t(this),s=n.attr("data-target");s||(s=n.attr("href"),s=s&&s.replace(/.*(?=#[^\s]*$)/,""));var a=t("#"===s?[]:s);e&&e.preventDefault(),a.length||(a=n.closest(".alert")),a.trigger(e=t.Event("close.bs.alert")),e.isDefaultPrevented()||(a.removeClass("in"),t.support.transition&&a.hasClass("fade")?a.one("bsTransitionEnd",i).emulateTransitionEnd(o.TRANSITION_DURATION):i())};var n=t.fn.alert;t.fn.alert=e,t.fn.alert.Constructor=o,t.fn.alert.noConflict=function(){return t.fn.alert=n,this},t(document).on("click.bs.alert.data-api",i,o.prototype.close)}(jQuery),+function(t){"use strict";function e(e){return this.each(function(){var o=t(this),n=o.data("bs.button"),s="object"==typeof e&&e;n||o.data("bs.button",n=new i(this,s)),"toggle"==e?n.toggle():e&&n.setState(e)})}var i=function(e,o){this.$element=t(e),this.options=t.extend({},i.DEFAULTS,o),this.isLoading=!1};i.VERSION="3.3.7",i.DEFAULTS={loadingText:"loading..."},i.prototype.setState=function(e){var i="disabled",o=this.$element,n=o.is("input")?"val":"html",s=o.data();e+="Text",null==s.resetText&&o.data("resetText",o[n]()),setTimeout(t.proxy(function(){o[n](null==s[e]?this.options[e]:s[e]),"loadingText"==e?(this.isLoading=!0,o.addClass(i).attr(i,i).prop(i,!0)):this.isLoading&&(this.isLoading=!1,o.removeClass(i).removeAttr(i).prop(i,!1))},this),0)},i.prototype.toggle=function(){var t=!0,e=this.$element.closest('[data-toggle="buttons"]');if(e.length){var i=this.$element.find("input");"radio"==i.prop("type")?(i.prop("checked")&&(t=!1),e.find(".active").removeClass("active"),this.$element.addClass("active")):"checkbox"==i.prop("type")&&(i.prop("checked")!==this.$element.hasClass("active")&&(t=!1),this.$element.toggleClass("active")),i.prop("checked",this.$element.hasClass("active")),t&&i.trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active")),this.$element.toggleClass("active")};var o=t.fn.button;t.fn.button=e,t.fn.button.Constructor=i,t.fn.button.noConflict=function(){return t.fn.button=o,this},t(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(i){var o=t(i.target).closest(".btn");e.call(o,"toggle"),t(i.target).is('input[type="radio"], input[type="checkbox"]')||(i.preventDefault(),o.is("input,button")?o.trigger("focus"):o.find("input:visible,button:visible").first().trigger("focus"))}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(e){t(e.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(e.type))})}(jQuery),+function(t){"use strict";function e(e){return this.each(function(){var o=t(this),n=o.data("bs.carousel"),s=t.extend({},i.DEFAULTS,o.data(),"object"==typeof e&&e),a="string"==typeof e?e:s.slide;n||o.data("bs.carousel",n=new i(this,s)),"number"==typeof e?n.to(e):a?n[a]():s.interval&&n.pause().cycle()})}var i=function(e,i){this.$element=t(e),this.$indicators=this.$element.find(".carousel-indicators"),this.options=i,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",t.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",t.proxy(this.pause,this)).on("mouseleave.bs.carousel",t.proxy(this.cycle,this))};i.VERSION="3.3.7",i.TRANSITION_DURATION=600,i.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},i.prototype.keydown=function(t){if(!/input|textarea/i.test(t.target.tagName)){switch(t.which){case 37:this.prev();break;case 39:this.next();break;default:return}t.preventDefault()}},i.prototype.cycle=function(e){return e||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(t.proxy(this.next,this),this.options.interval)),this},i.prototype.getItemIndex=function(t){return this.$items=t.parent().children(".item"),this.$items.index(t||this.$active)},i.prototype.getItemForDirection=function(t,e){var i=this.getItemIndex(e),o="prev"==t&&0===i||"next"==t&&i==this.$items.length-1;if(o&&!this.options.wrap)return e;var n="prev"==t?-1:1,s=(i+n)%this.$items.length;return this.$items.eq(s)},i.prototype.to=function(t){var e=this,i=this.getItemIndex(this.$active=this.$element.find(".item.active"));return t>this.$items.length-1||0>t?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){e.to(t)}):i==t?this.pause().cycle():this.slide(t>i?"next":"prev",this.$items.eq(t))},i.prototype.pause=function(e){return e||(this.paused=!0),this.$element.find(".next, .prev").length&&t.support.transition&&(this.$element.trigger(t.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},i.prototype.next=function(){return this.sliding?void 0:this.slide("next")},i.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},i.prototype.slide=function(e,o){var n=this.$element.find(".item.active"),s=o||this.getItemForDirection(e,n),a=this.interval,r="next"==e?"left":"right",l=this;if(s.hasClass("active"))return this.sliding=!1;var h=s[0],d=t.Event("slide.bs.carousel",{relatedTarget:h,direction:r});if(this.$element.trigger(d),!d.isDefaultPrevented()){if(this.sliding=!0,a&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var p=t(this.$indicators.children()[this.getItemIndex(s)]);p&&p.addClass("active")}var c=t.Event("slid.bs.carousel",{relatedTarget:h,direction:r});return t.support.transition&&this.$element.hasClass("slide")?(s.addClass(e),s[0].offsetWidth,n.addClass(r),s.addClass(r),n.one("bsTransitionEnd",function(){s.removeClass([e,r].join(" ")).addClass("active"),n.removeClass(["active",r].join(" ")),l.sliding=!1,setTimeout(function(){l.$element.trigger(c)},0)}).emulateTransitionEnd(i.TRANSITION_DURATION)):(n.removeClass("active"),s.addClass("active"),this.sliding=!1,this.$element.trigger(c)),a&&this.cycle(),this}};var o=t.fn.carousel;t.fn.carousel=e,t.fn.carousel.Constructor=i,t.fn.carousel.noConflict=function(){return t.fn.carousel=o,this};var n=function(i){var o,n=t(this),s=t(n.attr("data-target")||(o=n.attr("href"))&&o.replace(/.*(?=#[^\s]+$)/,""));if(s.hasClass("carousel")){var a=t.extend({},s.data(),n.data()),r=n.attr("data-slide-to");r&&(a.interval=!1),e.call(s,a),r&&s.data("bs.carousel").to(r),i.preventDefault()}};t(document).on("click.bs.carousel.data-api","[data-slide]",n).on("click.bs.carousel.data-api","[data-slide-to]",n),t(window).on("load",function(){t('[data-ride="carousel"]').each(function(){var i=t(this);e.call(i,i.data())})})}(jQuery),+function(t){"use strict";function e(e){var i=e.attr("data-target");i||(i=e.attr("href"),i=i&&/#[A-Za-z]/.test(i)&&i.replace(/.*(?=#[^\s]*$)/,""));var o=i&&t(i);return o&&o.length?o:e.parent()}function i(i){i&&3===i.which||(t(n).remove(),t(s).each(function(){var o=t(this),n=e(o),s={relatedTarget:this};n.hasClass("open")&&(i&&"click"==i.type&&/input|textarea/i.test(i.target.tagName)&&t.contains(n[0],i.target)||(n.trigger(i=t.Event("hide.bs.dropdown",s)),i.isDefaultPrevented()||(o.attr("aria-expanded","false"),n.removeClass("open").trigger(t.Event("hidden.bs.dropdown",s)))))}))}function o(e){return this.each(function(){var i=t(this),o=i.data("bs.dropdown");o||i.data("bs.dropdown",o=new a(this)),"string"==typeof e&&o[e].call(i)})}var n=".dropdown-backdrop",s='[data-toggle="dropdown"]',a=function(e){t(e).on("click.bs.dropdown",this.toggle)};a.VERSION="3.3.7",a.prototype.toggle=function(o){var n=t(this);if(!n.is(".disabled, :disabled")){var s=e(n),a=s.hasClass("open");if(i(),!a){"ontouchstart"in document.documentElement&&!s.closest(".navbar-nav").length&&t(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(t(this)).on("click",i);var r={relatedTarget:this};if(s.trigger(o=t.Event("show.bs.dropdown",r)),o.isDefaultPrevented())return;n.trigger("focus").attr("aria-expanded","true"),s.toggleClass("open").trigger(t.Event("shown.bs.dropdown",r))}return!1}},a.prototype.keydown=function(i){if(/(38|40|27|32)/.test(i.which)&&!/input|textarea/i.test(i.target.tagName)){var o=t(this);if(i.preventDefault(),i.stopPropagation(),!o.is(".disabled, :disabled")){var n=e(o),a=n.hasClass("open");if(!a&&27!=i.which||a&&27==i.which)return 27==i.which&&n.find(s).trigger("focus"),o.trigger("click");var r=" li:not(.disabled):visible a",l=n.find(".dropdown-menu"+r);if(l.length){var h=l.index(i.target);38==i.which&&h>0&&h--,40==i.which&&h<l.length-1&&h++,~h||(h=0),l.eq(h).trigger("focus")}}}};var r=t.fn.dropdown;t.fn.dropdown=o,t.fn.dropdown.Constructor=a,t.fn.dropdown.noConflict=function(){return t.fn.dropdown=r,this},t(document).on("click.bs.dropdown.data-api",i).on("click.bs.dropdown.data-api",".dropdown form",function(t){t.stopPropagation()}).on("click.bs.dropdown.data-api",s,a.prototype.toggle).on("keydown.bs.dropdown.data-api",s,a.prototype.keydown).on("keydown.bs.dropdown.data-api",".dropdown-menu",a.prototype.keydown)}(jQuery),+function(t){"use strict";function e(e,o){return this.each(function(){var n=t(this),s=n.data("bs.modal"),a=t.extend({},i.DEFAULTS,n.data(),"object"==typeof e&&e);s||n.data("bs.modal",s=new i(this,a)),"string"==typeof e?s[e](o):a.show&&s.show(o)})}var i=function(e,i){this.options=i,this.$body=t(document.body),this.$element=t(e),this.$dialog=this.$element.find(".modal-dialog"),this.$backdrop=null,this.isShown=null,this.originalBodyPad=null,this.scrollbarWidth=0,this.ignoreBackdropClick=!1,this.options.remote&&this.$element.find(".modal-content").load(this.options.remote,t.proxy(function(){this.$element.trigger("loaded.bs.modal")},this))};i.VERSION="3.3.7",i.TRANSITION_DURATION=300,i.BACKDROP_TRANSITION_DURATION=150,i.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},i.prototype.toggle=function(t){return this.isShown?this.hide():this.show(t)},i.prototype.show=function(e){var o=this,n=t.Event("show.bs.modal",{relatedTarget:e});this.$element.trigger(n),this.isShown||n.isDefaultPrevented()||(this.isShown=!0,this.checkScrollbar(),this.setScrollbar(),this.$body.addClass("modal-open"),this.escape(),this.resize(),this.$element.on("click.dismiss.bs.modal",'[data-dismiss="modal"]',t.proxy(this.hide,this)),this.$dialog.on("mousedown.dismiss.bs.modal",function(){o.$element.one("mouseup.dismiss.bs.modal",function(e){t(e.target).is(o.$element)&&(o.ignoreBackdropClick=!0)})}),this.backdrop(function(){var n=t.support.transition&&o.$element.hasClass("fade");o.$element.parent().length||o.$element.appendTo(o.$body),o.$element.show().scrollTop(0),o.adjustDialog(),n&&o.$element[0].offsetWidth,o.$element.addClass("in"),o.enforceFocus();var s=t.Event("shown.bs.modal",{relatedTarget:e});n?o.$dialog.one("bsTransitionEnd",function(){o.$element.trigger("focus").trigger(s)}).emulateTransitionEnd(i.TRANSITION_DURATION):o.$element.trigger("focus").trigger(s)}))},i.prototype.hide=function(e){e&&e.preventDefault(),e=t.Event("hide.bs.modal"),this.$element.trigger(e),this.isShown&&!e.isDefaultPrevented()&&(this.isShown=!1,this.escape(),this.resize(),t(document).off("focusin.bs.modal"),this.$element.removeClass("in").off("click.dismiss.bs.modal").off("mouseup.dismiss.bs.modal"),this.$dialog.off("mousedown.dismiss.bs.modal"),t.support.transition&&this.$element.hasClass("fade")?this.$element.one("bsTransitionEnd",t.proxy(this.hideModal,this)).emulateTransitionEnd(i.TRANSITION_DURATION):this.hideModal())},i.prototype.enforceFocus=function(){t(document).off("focusin.bs.modal").on("focusin.bs.modal",t.proxy(function(t){document===t.target||this.$element[0]===t.target||this.$element.has(t.target).length||this.$element.trigger("focus")},this))},i.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keydown.dismiss.bs.modal",t.proxy(function(t){27==t.which&&this.hide()},this)):this.isShown||this.$element.off("keydown.dismiss.bs.modal")},i.prototype.resize=function(){this.isShown?t(window).on("resize.bs.modal",t.proxy(this.handleUpdate,this)):t(window).off("resize.bs.modal")},i.prototype.hideModal=function(){var t=this;this.$element.hide(),this.backdrop(function(){t.$body.removeClass("modal-open"),t.resetAdjustments(),t.resetScrollbar(),t.$element.trigger("hidden.bs.modal")})},i.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},i.prototype.backdrop=function(e){var o=this,n=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var s=t.support.transition&&n;if(this.$backdrop=t(document.createElement("div")).addClass("modal-backdrop "+n).appendTo(this.$body),this.$element.on("click.dismiss.bs.modal",t.proxy(function(t){return this.ignoreBackdropClick?void(this.ignoreBackdropClick=!1):void(t.target===t.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus():this.hide()))},this)),s&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!e)return;s?this.$backdrop.one("bsTransitionEnd",e).emulateTransitionEnd(i.BACKDROP_TRANSITION_DURATION):e()}else if(!this.isShown&&this.$backdrop){this.$backdrop.removeClass("in");var a=function(){o.removeBackdrop(),e&&e()};t.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one("bsTransitionEnd",a).emulateTransitionEnd(i.BACKDROP_TRANSITION_DURATION):a()}else e&&e()},i.prototype.handleUpdate=function(){this.adjustDialog()},i.prototype.adjustDialog=function(){var t=this.$element[0].scrollHeight>document.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&t?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!t?this.scrollbarWidth:""})},i.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},i.prototype.checkScrollbar=function(){var t=window.innerWidth;if(!t){var e=document.documentElement.getBoundingClientRect();t=e.right-Math.abs(e.left)}this.bodyIsOverflowing=document.body.clientWidth<t,this.scrollbarWidth=this.measureScrollbar()},i.prototype.setScrollbar=function(){var t=parseInt(this.$body.css("padding-right")||0,10);this.originalBodyPad=document.body.style.paddingRight||"",this.bodyIsOverflowing&&this.$body.css("padding-right",t+this.scrollbarWidth)},i.prototype.resetScrollbar=function(){this.$body.css("padding-right",this.originalBodyPad)},i.prototype.measureScrollbar=function(){var t=document.createElement("div");t.className="modal-scrollbar-measure",this.$body.append(t);var e=t.offsetWidth-t.clientWidth;return this.$body[0].removeChild(t),e};var o=t.fn.modal;t.fn.modal=e,t.fn.modal.Constructor=i,t.fn.modal.noConflict=function(){return t.fn.modal=o,this},t(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(i){var o=t(this),n=o.attr("href"),s=t(o.attr("data-target")||n&&n.replace(/.*(?=#[^\s]+$)/,"")),a=s.data("bs.modal")?"toggle":t.extend({remote:!/#/.test(n)&&n},s.data(),o.data());o.is("a")&&i.preventDefault(),s.one("show.bs.modal",function(t){t.isDefaultPrevented()||s.one("hidden.bs.modal",function(){o.is(":visible")&&o.trigger("focus")})}),e.call(s,a,this)})}(jQuery),+function(t){"use strict";function e(e){return this.each(function(){var o=t(this),n=o.data("bs.tooltip"),s="object"==typeof e&&e;!n&&/destroy|hide/.test(e)||(n||o.data("bs.tooltip",n=new i(this,s)),"string"==typeof e&&n[e]())})}var i=function(t,e){this.type=null,this.options=null,this.enabled=null,this.timeout=null,this.hoverState=null,this.$element=null,this.inState=null,this.init("tooltip",t,e)};i.VERSION="3.3.7",i.TRANSITION_DURATION=150,i.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},i.prototype.init=function(e,i,o){if(this.enabled=!0,this.type=e,this.$element=t(i),this.options=this.getOptions(o),this.$viewport=this.options.viewport&&t(t.isFunction(this.options.viewport)?this.options.viewport.call(this,this.$element):this.options.viewport.selector||this.options.viewport),this.inState={click:!1,hover:!1,focus:!1},this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var n=this.options.trigger.split(" "),s=n.length;s--;){var a=n[s];if("click"==a)this.$element.on("click."+this.type,this.options.selector,t.proxy(this.toggle,this));else if("manual"!=a){var r="hover"==a?"mouseenter":"focusin",l="hover"==a?"mouseleave":"focusout";this.$element.on(r+"."+this.type,this.options.selector,t.proxy(this.enter,this)),this.$element.on(l+"."+this.type,this.options.selector,t.proxy(this.leave,this))}}this.options.selector?this._options=t.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},i.prototype.getDefaults=function(){return i.DEFAULTS},i.prototype.getOptions=function(e){return e=t.extend({},this.getDefaults(),this.$element.data(),e),e.delay&&"number"==typeof e.delay&&(e.delay={show:e.delay,hide:e.delay}),e},i.prototype.getDelegateOptions=function(){var e={},i=this.getDefaults();return this._options&&t.each(this._options,function(t,o){i[t]!=o&&(e[t]=o)}),e},i.prototype.enter=function(e){var i=e instanceof this.constructor?e:t(e.currentTarget).data("bs."+this.type);return i||(i=new this.constructor(e.currentTarget,this.getDelegateOptions()),t(e.currentTarget).data("bs."+this.type,i)),e instanceof t.Event&&(i.inState["focusin"==e.type?"focus":"hover"]=!0),i.tip().hasClass("in")||"in"==i.hoverState?void(i.hoverState="in"):(clearTimeout(i.timeout),i.hoverState="in",i.options.delay&&i.options.delay.show?void(i.timeout=setTimeout(function(){"in"==i.hoverState&&i.show()},i.options.delay.show)):i.show())},i.prototype.isInStateTrue=function(){for(var t in this.inState)if(this.inState[t])return!0;return!1},i.prototype.leave=function(e){var i=e instanceof this.constructor?e:t(e.currentTarget).data("bs."+this.type);return i||(i=new this.constructor(e.currentTarget,this.getDelegateOptions()),t(e.currentTarget).data("bs."+this.type,i)),e instanceof t.Event&&(i.inState["focusout"==e.type?"focus":"hover"]=!1),i.isInStateTrue()?void 0:(clearTimeout(i.timeout),i.hoverState="out",i.options.delay&&i.options.delay.hide?void(i.timeout=setTimeout(function(){"out"==i.hoverState&&i.hide()},i.options.delay.hide)):i.hide())},i.prototype.show=function(){var e=t.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(e);var o=t.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(e.isDefaultPrevented()||!o)return;var n=this,s=this.tip(),a=this.getUID(this.type);this.setContent(),s.attr("id",a),this.$element.attr("aria-describedby",a),this.options.animation&&s.addClass("fade");var r="function"==typeof this.options.placement?this.options.placement.call(this,s[0],this.$element[0]):this.options.placement,l=/\s?auto?\s?/i,h=l.test(r);h&&(r=r.replace(l,"")||"top"),s.detach().css({top:0,left:0,display:"block"}).addClass(r).data("bs."+this.type,this),this.options.container?s.appendTo(this.options.container):s.insertAfter(this.$element),this.$element.trigger("inserted.bs."+this.type);var d=this.getPosition(),p=s[0].offsetWidth,c=s[0].offsetHeight;if(h){var f=r,u=this.getPosition(this.$viewport);r="bottom"==r&&d.bottom+c>u.bottom?"top":"top"==r&&d.top-c<u.top?"bottom":"right"==r&&d.right+p>u.width?"left":"left"==r&&d.left-p<u.left?"right":r,s.removeClass(f).addClass(r)}var g=this.getCalculatedOffset(r,d,p,c);this.applyPlacement(g,r);var v=function(){var t=n.hoverState;n.$element.trigger("shown.bs."+n.type),n.hoverState=null,"out"==t&&n.leave(n)};t.support.transition&&this.$tip.hasClass("fade")?s.one("bsTransitionEnd",v).emulateTransitionEnd(i.TRANSITION_DURATION):v()}},i.prototype.applyPlacement=function(e,i){var o=this.tip(),n=o[0].offsetWidth,s=o[0].offsetHeight,a=parseInt(o.css("margin-top"),10),r=parseInt(o.css("margin-left"),10);isNaN(a)&&(a=0),isNaN(r)&&(r=0),e.top+=a,e.left+=r,t.offset.setOffset(o[0],t.extend({using:function(t){o.css({top:Math.round(t.top),left:Math.round(t.left)})}},e),0),o.addClass("in");var l=o[0].offsetWidth,h=o[0].offsetHeight;"top"==i&&h!=s&&(e.top=e.top+s-h);var d=this.getViewportAdjustedDelta(i,e,l,h);d.left?e.left+=d.left:e.top+=d.top;var p=/top|bottom/.test(i),c=p?2*d.left-n+l:2*d.top-s+h,f=p?"offsetWidth":"offsetHeight";o.offset(e),this.replaceArrow(c,o[0][f],p)},i.prototype.replaceArrow=function(t,e,i){this.arrow().css(i?"left":"top",50*(1-t/e)+"%").css(i?"top":"left","")},i.prototype.setContent=function(){var t=this.tip(),e=this.getTitle();t.find(".tooltip-inner")[this.options.html?"html":"text"](e),t.removeClass("fade in top bottom left right")},i.prototype.hide=function(e){function o(){"in"!=n.hoverState&&s.detach(),n.$element&&n.$element.removeAttr("aria-describedby").trigger("hidden.bs."+n.type),e&&e()}var n=this,s=t(this.$tip),a=t.Event("hide.bs."+this.type);return this.$element.trigger(a),a.isDefaultPrevented()?void 0:(s.removeClass("in"),t.support.transition&&s.hasClass("fade")?s.one("bsTransitionEnd",o).emulateTransitionEnd(i.TRANSITION_DURATION):o(),this.hoverState=null,this)},i.prototype.fixTitle=function(){var t=this.$element;(t.attr("title")||"string"!=typeof t.attr("data-original-title"))&&t.attr("data-original-title",t.attr("title")||"").attr("title","")},i.prototype.hasContent=function(){return this.getTitle()},i.prototype.getPosition=function(e){e=e||this.$element;var i=e[0],o="BODY"==i.tagName,n=i.getBoundingClientRect();null==n.width&&(n=t.extend({},n,{width:n.right-n.left,height:n.bottom-n.top}));var s=window.SVGElement&&i instanceof window.SVGElement,a=o?{top:0,left:0}:s?null:e.offset(),r={scroll:o?document.documentElement.scrollTop||document.body.scrollTop:e.scrollTop()},l=o?{width:t(window).width(),height:t(window).height()}:null;return t.extend({},n,r,l,a)},i.prototype.getCalculatedOffset=function(t,e,i,o){return"bottom"==t?{top:e.top+e.height,left:e.left+e.width/2-i/2}:"top"==t?{top:e.top-o,left:e.left+e.width/2-i/2}:"left"==t?{top:e.top+e.height/2-o/2,left:e.left-i}:{top:e.top+e.height/2-o/2,left:e.left+e.width}},i.prototype.getViewportAdjustedDelta=function(t,e,i,o){var n={top:0,left:0};if(!this.$viewport)return n;var s=this.options.viewport&&this.options.viewport.padding||0,a=this.getPosition(this.$viewport);if(/right|left/.test(t)){var r=e.top-s-a.scroll,l=e.top+s-a.scroll+o;r<a.top?n.top=a.top-r:l>a.top+a.height&&(n.top=a.top+a.height-l)}else{var h=e.left-s,d=e.left+s+i;h<a.left?n.left=a.left-h:d>a.right&&(n.left=a.left+a.width-d)}return n},i.prototype.getTitle=function(){var t,e=this.$element,i=this.options;return t=e.attr("data-original-title")||("function"==typeof i.title?i.title.call(e[0]):i.title)},i.prototype.getUID=function(t){do t+=~~(1e6*Math.random());while(document.getElementById(t));return t},i.prototype.tip=function(){if(!this.$tip&&(this.$tip=t(this.options.template),1!=this.$tip.length))throw new Error(this.type+" `template` option must consist of exactly 1 top-level element!");return this.$tip},i.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},i.prototype.enable=function(){this.enabled=!0},i.prototype.disable=function(){this.enabled=!1},i.prototype.toggleEnabled=function(){this.enabled=!this.enabled},i.prototype.toggle=function(e){var i=this;e&&(i=t(e.currentTarget).data("bs."+this.type),i||(i=new this.constructor(e.currentTarget,this.getDelegateOptions()),t(e.currentTarget).data("bs."+this.type,i))),e?(i.inState.click=!i.inState.click,i.isInStateTrue()?i.enter(i):i.leave(i)):i.tip().hasClass("in")?i.leave(i):i.enter(i)},i.prototype.destroy=function(){var t=this;clearTimeout(this.timeout),this.hide(function(){t.$element.off("."+t.type).removeData("bs."+t.type),t.$tip&&t.$tip.detach(),t.$tip=null,t.$arrow=null,t.$viewport=null,t.$element=null})};var o=t.fn.tooltip;t.fn.tooltip=e,t.fn.tooltip.Constructor=i,t.fn.tooltip.noConflict=function(){return t.fn.tooltip=o,this}}(jQuery),+function(t){"use strict";function e(e){return this.each(function(){var o=t(this),n=o.data("bs.popover"),s="object"==typeof e&&e;!n&&/destroy|hide/.test(e)||(n||o.data("bs.popover",n=new i(this,s)),"string"==typeof e&&n[e]())})}var i=function(t,e){this.init("popover",t,e)};if(!t.fn.tooltip)throw new Error("Popover requires tooltip.js");i.VERSION="3.3.7",i.DEFAULTS=t.extend({},t.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),i.prototype=t.extend({},t.fn.tooltip.Constructor.prototype),i.prototype.constructor=i,i.prototype.getDefaults=function(){return i.DEFAULTS},i.prototype.setContent=function(){var t=this.tip(),e=this.getTitle(),i=this.getContent();t.find(".popover-title")[this.options.html?"html":"text"](e),t.find(".popover-content").children().detach().end()[this.options.html?"string"==typeof i?"html":"append":"text"](i),t.removeClass("fade top bottom left right in"),t.find(".popover-title").html()||t.find(".popover-title").hide()},i.prototype.hasContent=function(){return this.getTitle()||this.getContent()},i.prototype.getContent=function(){var t=this.$element,e=this.options;return t.attr("data-content")||("function"==typeof e.content?e.content.call(t[0]):e.content)},i.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};var o=t.fn.popover;t.fn.popover=e,t.fn.popover.Constructor=i,t.fn.popover.noConflict=function(){return t.fn.popover=o,this}}(jQuery),+function(t){"use strict";function e(e){return this.each(function(){var o=t(this),n=o.data("bs.tab");n||o.data("bs.tab",n=new i(this)),"string"==typeof e&&n[e]()})}var i=function(e){this.element=t(e)};i.VERSION="3.3.7",i.TRANSITION_DURATION=150,i.prototype.show=function(){var e=this.element,i=e.closest("ul:not(.dropdown-menu)"),o=e.data("target");if(o||(o=e.attr("href"),o=o&&o.replace(/.*(?=#[^\s]*$)/,"")),!e.parent("li").hasClass("active")){var n=i.find(".active:last a"),s=t.Event("hide.bs.tab",{relatedTarget:e[0]}),a=t.Event("show.bs.tab",{relatedTarget:n[0]});if(n.trigger(s),e.trigger(a),!a.isDefaultPrevented()&&!s.isDefaultPrevented()){var r=t(o);this.activate(e.closest("li"),i),this.activate(r,r.parent(),function(){n.trigger({type:"hidden.bs.tab",relatedTarget:e[0]}),e.trigger({type:"shown.bs.tab",relatedTarget:n[0]})})}}},i.prototype.activate=function(e,o,n){function s(){a.removeClass("active").find("> .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),e.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),r?(e[0].offsetWidth,e.addClass("in")):e.removeClass("fade"),e.parent(".dropdown-menu").length&&e.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),n&&n()}var a=o.find("> .active"),r=n&&t.support.transition&&(a.length&&a.hasClass("fade")||!!o.find("> .fade").length);a.length&&r?a.one("bsTransitionEnd",s).emulateTransitionEnd(i.TRANSITION_DURATION):s(),a.removeClass("in")};var o=t.fn.tab;t.fn.tab=e,t.fn.tab.Constructor=i,t.fn.tab.noConflict=function(){return t.fn.tab=o,this};var n=function(i){i.preventDefault(),e.call(t(this),"show")};t(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',n).on("click.bs.tab.data-api",'[data-toggle="pill"]',n)}(jQuery),+function(t){"use strict";function e(e){return this.each(function(){var o=t(this),n=o.data("bs.affix"),s="object"==typeof e&&e;n||o.data("bs.affix",n=new i(this,s)),"string"==typeof e&&n[e]()})}var i=function(e,o){this.options=t.extend({},i.DEFAULTS,o),this.$target=t(this.options.target).on("scroll.bs.affix.data-api",t.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",t.proxy(this.checkPositionWithEventLoop,this)),this.$element=t(e),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};i.VERSION="3.3.7",i.RESET="affix affix-top affix-bottom",i.DEFAULTS={offset:0,target:window},i.prototype.getState=function(t,e,i,o){var n=this.$target.scrollTop(),s=this.$element.offset(),a=this.$target.height();if(null!=i&&"top"==this.affixed)return i>n?"top":!1;if("bottom"==this.affixed)return null!=i?n+this.unpin<=s.top?!1:"bottom":t-o>=n+a?!1:"bottom";var r=null==this.affixed,l=r?n:s.top,h=r?a:e;return null!=i&&i>=n?"top":null!=o&&l+h>=t-o?"bottom":!1},i.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(i.RESET).addClass("affix");var t=this.$target.scrollTop(),e=this.$element.offset();return this.pinnedOffset=e.top-t},i.prototype.checkPositionWithEventLoop=function(){setTimeout(t.proxy(this.checkPosition,this),1)},i.prototype.checkPosition=function(){if(this.$element.is(":visible")){var e=this.$element.height(),o=this.options.offset,n=o.top,s=o.bottom,a=Math.max(t(document).height(),t(document.body).height());"object"!=typeof o&&(s=n=o),"function"==typeof n&&(n=o.top(this.$element)),"function"==typeof s&&(s=o.bottom(this.$element));var r=this.getState(a,e,n,s);if(this.affixed!=r){null!=this.unpin&&this.$element.css("top","");var l="affix"+(r?"-"+r:""),h=t.Event(l+".bs.affix");if(this.$element.trigger(h),h.isDefaultPrevented())return;this.affixed=r,this.unpin="bottom"==r?this.getPinnedOffset():null,this.$element.removeClass(i.RESET).addClass(l).trigger(l.replace("affix","affixed")+".bs.affix")}"bottom"==r&&this.$element.offset({top:a-e-s})}};var o=t.fn.affix;t.fn.affix=e,t.fn.affix.Constructor=i,t.fn.affix.noConflict=function(){return t.fn.affix=o,this},t(window).on("load",function(){t('[data-spy="affix"]').each(function(){var i=t(this),o=i.data();o.offset=o.offset||{},null!=o.offsetBottom&&(o.offset.bottom=o.offsetBottom),null!=o.offsetTop&&(o.offset.top=o.offsetTop),e.call(i,o)})})}(jQuery),+function(t){"use strict";function e(e){var i,o=e.attr("data-target")||(i=e.attr("href"))&&i.replace(/.*(?=#[^\s]+$)/,"");return t(o)}function i(e){return this.each(function(){var i=t(this),n=i.data("bs.collapse"),s=t.extend({},o.DEFAULTS,i.data(),"object"==typeof e&&e);!n&&s.toggle&&/show|hide/.test(e)&&(s.toggle=!1),n||i.data("bs.collapse",n=new o(this,s)),"string"==typeof e&&n[e]()})}var o=function(e,i){this.$element=t(e),this.options=t.extend({},o.DEFAULTS,i),this.$trigger=t('[data-toggle="collapse"][href="#'+e.id+'"],[data-toggle="collapse"][data-target="#'+e.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};o.VERSION="3.3.7",o.TRANSITION_DURATION=350,o.DEFAULTS={toggle:!0},o.prototype.dimension=function(){var t=this.$element.hasClass("width");return t?"width":"height"},o.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var e,n=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(n&&n.length&&(e=n.data("bs.collapse"),e&&e.transitioning))){var s=t.Event("show.bs.collapse");if(this.$element.trigger(s),!s.isDefaultPrevented()){n&&n.length&&(i.call(n,"hide"),e||n.data("bs.collapse",null));var a=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[a](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var r=function(){this.$element.removeClass("collapsing").addClass("collapse in")[a](""),this.transitioning=0,
12
+ this.$element.trigger("shown.bs.collapse")};if(!t.support.transition)return r.call(this);var l=t.camelCase(["scroll",a].join("-"));this.$element.one("bsTransitionEnd",t.proxy(r,this)).emulateTransitionEnd(o.TRANSITION_DURATION)[a](this.$element[0][l])}}}},o.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var e=t.Event("hide.bs.collapse");if(this.$element.trigger(e),!e.isDefaultPrevented()){var i=this.dimension();this.$element[i](this.$element[i]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var n=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return t.support.transition?void this.$element[i](0).one("bsTransitionEnd",t.proxy(n,this)).emulateTransitionEnd(o.TRANSITION_DURATION):n.call(this)}}},o.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},o.prototype.getParent=function(){return t(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(t.proxy(function(i,o){var n=t(o);this.addAriaAndCollapsedClass(e(n),n)},this)).end()},o.prototype.addAriaAndCollapsedClass=function(t,e){var i=t.hasClass("in");t.attr("aria-expanded",i),e.toggleClass("collapsed",!i).attr("aria-expanded",i)};var n=t.fn.collapse;t.fn.collapse=i,t.fn.collapse.Constructor=o,t.fn.collapse.noConflict=function(){return t.fn.collapse=n,this},t(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(o){var n=t(this);n.attr("data-target")||o.preventDefault();var s=e(n),a=s.data("bs.collapse"),r=a?"toggle":n.data();i.call(s,r)})}(jQuery),+function(t){"use strict";function e(i,o){this.$body=t(document.body),this.$scrollElement=t(t(i).is(document.body)?window:i),this.options=t.extend({},e.DEFAULTS,o),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",t.proxy(this.process,this)),this.refresh(),this.process()}function i(i){return this.each(function(){var o=t(this),n=o.data("bs.scrollspy"),s="object"==typeof i&&i;n||o.data("bs.scrollspy",n=new e(this,s)),"string"==typeof i&&n[i]()})}e.VERSION="3.3.7",e.DEFAULTS={offset:10},e.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},e.prototype.refresh=function(){var e=this,i="offset",o=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),t.isWindow(this.$scrollElement[0])||(i="position",o=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var e=t(this),n=e.data("target")||e.attr("href"),s=/^#./.test(n)&&t(n);return s&&s.length&&s.is(":visible")&&[[s[i]().top+o,n]]||null}).sort(function(t,e){return t[0]-e[0]}).each(function(){e.offsets.push(this[0]),e.targets.push(this[1])})},e.prototype.process=function(){var t,e=this.$scrollElement.scrollTop()+this.options.offset,i=this.getScrollHeight(),o=this.options.offset+i-this.$scrollElement.height(),n=this.offsets,s=this.targets,a=this.activeTarget;if(this.scrollHeight!=i&&this.refresh(),e>=o)return a!=(t=s[s.length-1])&&this.activate(t);if(a&&e<n[0])return this.activeTarget=null,this.clear();for(t=n.length;t--;)a!=s[t]&&e>=n[t]&&(void 0===n[t+1]||e<n[t+1])&&this.activate(s[t])},e.prototype.activate=function(e){this.activeTarget=e,this.clear();var i=this.selector+'[data-target="'+e+'"],'+this.selector+'[href="'+e+'"]',o=t(i).parents("li").addClass("active");o.parent(".dropdown-menu").length&&(o=o.closest("li.dropdown").addClass("active")),o.trigger("activate.bs.scrollspy")},e.prototype.clear=function(){t(this.selector).parentsUntil(this.options.target,".active").removeClass("active")};var o=t.fn.scrollspy;t.fn.scrollspy=i,t.fn.scrollspy.Constructor=e,t.fn.scrollspy.noConflict=function(){return t.fn.scrollspy=o,this},t(window).on("load.bs.scrollspy.data-api",function(){t('[data-spy="scroll"]').each(function(){var e=t(this);i.call(e,e.data())})})}(jQuery),+function(t){"use strict";function e(){var t=document.createElement("bootstrap"),e={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var i in e)if(void 0!==t.style[i])return{end:e[i]};return!1}t.fn.emulateTransitionEnd=function(e){var i=!1,o=this;t(this).one("bsTransitionEnd",function(){i=!0});var n=function(){i||t(o).trigger(t.support.transition.end)};return setTimeout(n,e),this},t(function(){t.support.transition=e(),t.support.transition&&(t.event.special.bsTransitionEnd={bindType:t.support.transition.end,delegateType:t.support.transition.end,handle:function(e){return t(e.target).is(this)?e.handleObj.handler.apply(this,arguments):void 0}})})}(jQuery);
library/toolset/toolset-common/res/lib/colorbox/jquery.colorbox-min.js CHANGED
@@ -4,4 +4,4 @@
4
  (c) 2013 Jack Moore - http://www.jacklmoore.com/colorbox
5
  license: http://www.opensource.org/licenses/mit-license.php
6
  */
7
- (function(e,t,i){function o(i,o,n){var r=t.createElement(i);return o&&(r.id=Z+o),n&&(r.style.cssText=n),e(r)}function n(){return i.innerHeight?i.innerHeight:e(i).height()}function r(e){var t=k.length,i=(z+e)%t;return 0>i?t+i:i}function h(e,t){return Math.round((/%/.test(e)?("x"===t?E.width():n())/100:1)*parseInt(e,10))}function s(e,t){return e.photo||e.photoRegex.test(t)}function l(e,t){return e.retinaUrl&&i.devicePixelRatio>1?t.replace(e.photoRegex,e.retinaSuffix):t}function a(e){"contains"in g[0]&&!g[0].contains(e.target)&&(e.stopPropagation(),g.focus())}function d(){var t,i=e.data(N,Y);null==i?(B=e.extend({},X),console&&console.log&&console.log("Error: cboxElement missing settings object")):B=e.extend({},i);for(t in B)e.isFunction(B[t])&&"on"!==t.slice(0,2)&&(B[t]=B[t].call(N));B.rel=B.rel||N.rel||e(N).data("rel")||"nofollow",B.href=B.href||e(N).attr("href"),B.title=B.title||N.title,"string"==typeof B.href&&(B.href=e.trim(B.href))}function c(i,o){e(t).trigger(i),st.trigger(i),e.isFunction(o)&&o.call(N)}function u(i){q||(N=i,d(),k=e(N),z=0,"nofollow"!==B.rel&&(k=e("."+et).filter(function(){var t,i=e.data(this,Y);return i&&(t=e(this).data("rel")||i.rel||this.rel),t===B.rel}),z=k.index(N),-1===z&&(k=k.add(N),z=k.length-1)),w.css({opacity:parseFloat(B.opacity),cursor:B.overlayClose?"pointer":"auto",visibility:"visible"}).show(),J&&g.add(w).removeClass(J),B.className&&g.add(w).addClass(B.className),J=B.className,B.closeButton?K.html(B.close).appendTo(y):K.appendTo("<div/>"),U||(U=$=!0,g.css({visibility:"hidden",display:"block"}),H=o(lt,"LoadedContent","width:0; height:0; overflow:hidden"),y.css({width:"",height:""}).append(H),O=x.height()+C.height()+y.outerHeight(!0)-y.height(),_=b.width()+T.width()+y.outerWidth(!0)-y.width(),D=H.outerHeight(!0),A=H.outerWidth(!0),B.w=h(B.initialWidth,"x"),B.h=h(B.initialHeight,"y"),H.css({width:"",height:B.h}),Q.position(),c(tt,B.onOpen),P.add(L).hide(),g.focus(),B.trapFocus&&t.addEventListener&&(t.addEventListener("focus",a,!0),st.one(rt,function(){t.removeEventListener("focus",a,!0)})),B.returnFocus&&st.one(rt,function(){e(N).focus()})),m())}function f(){!g&&t.body&&(V=!1,E=e(i),g=o(lt).attr({id:Y,"class":e.support.opacity===!1?Z+"IE":"",role:"dialog",tabindex:"-1"}).hide(),w=o(lt,"Overlay").hide(),F=e([o(lt,"LoadingOverlay")[0],o(lt,"LoadingGraphic")[0]]),v=o(lt,"Wrapper"),y=o(lt,"Content").append(L=o(lt,"Title"),S=o(lt,"Current"),I=e('<button type="button"/>').attr({id:Z+"Previous"}),R=e('<button type="button"/>').attr({id:Z+"Next"}),M=o("button","Slideshow"),F),K=e('<button type="button"/>').attr({id:Z+"Close"}),v.append(o(lt).append(o(lt,"TopLeft"),x=o(lt,"TopCenter"),o(lt,"TopRight")),o(lt,!1,"clear:left").append(b=o(lt,"MiddleLeft"),y,T=o(lt,"MiddleRight")),o(lt,!1,"clear:left").append(o(lt,"BottomLeft"),C=o(lt,"BottomCenter"),o(lt,"BottomRight"))).find("div div").css({"float":"left"}),W=o(lt,!1,"position:absolute; width:9999px; visibility:hidden; display:none"),P=R.add(I).add(S).add(M),e(t.body).append(w,g.append(v,W)))}function p(){function i(e){e.which>1||e.shiftKey||e.altKey||e.metaKey||e.ctrlKey||(e.preventDefault(),u(this))}return g?(V||(V=!0,R.click(function(){Q.next()}),I.click(function(){Q.prev()}),K.click(function(){Q.close()}),w.click(function(){B.overlayClose&&Q.close()}),e(t).bind("keydown."+Z,function(e){var t=e.keyCode;U&&B.escKey&&27===t&&(e.preventDefault(),Q.close()),U&&B.arrowKey&&k[1]&&!e.altKey&&(37===t?(e.preventDefault(),I.click()):39===t&&(e.preventDefault(),R.click()))}),e.isFunction(e.fn.on)?e(t).on("click."+Z,"."+et,i):e("."+et).live("click."+Z,i)),!0):!1}function m(){var n,r,a,u=Q.prep,f=++at;$=!0,j=!1,N=k[z],d(),c(ht),c(it,B.onLoad),B.h=B.height?h(B.height,"y")-D-O:B.innerHeight&&h(B.innerHeight,"y"),B.w=B.width?h(B.width,"x")-A-_:B.innerWidth&&h(B.innerWidth,"x"),B.mw=B.w,B.mh=B.h,B.maxWidth&&(B.mw=h(B.maxWidth,"x")-A-_,B.mw=B.w&&B.w<B.mw?B.w:B.mw),B.maxHeight&&(B.mh=h(B.maxHeight,"y")-D-O,B.mh=B.h&&B.h<B.mh?B.h:B.mh),n=B.href,G=setTimeout(function(){F.show()},100),B.inline?(a=o(lt).hide().insertBefore(e(n)[0]),st.one(ht,function(){a.replaceWith(H.children())}),u(e(n))):B.iframe?u(" "):B.html?u(B.html):s(B,n)?(n=l(B,n),j=t.createElement("img"),e(j).addClass(Z+"Photo").bind("error",function(){B.title=!1,u(o(lt,"Error").html(B.imgError))}).one("load",function(){var t;f===at&&(e.each(["alt","longdesc","aria-describedby"],function(t,i){var o=e(N).attr(i)||e(N).attr("data-"+i);o&&j.setAttribute(i,o)}),B.retinaImage&&i.devicePixelRatio>1&&(j.height=j.height/i.devicePixelRatio,j.width=j.width/i.devicePixelRatio),B.scalePhotos&&(r=function(){j.height-=j.height*t,j.width-=j.width*t},B.mw&&j.width>B.mw&&(t=(j.width-B.mw)/j.width,r()),B.mh&&j.height>B.mh&&(t=(j.height-B.mh)/j.height,r())),B.h&&(j.style.marginTop=Math.max(B.mh-j.height,0)/2+"px"),k[1]&&(B.loop||k[z+1])&&(j.style.cursor="pointer",j.onclick=function(){Q.next()}),j.style.width=j.width+"px",j.style.height=j.height+"px",setTimeout(function(){u(j)},1))}),setTimeout(function(){j.src=n},1)):n&&W.load(n,B.data,function(t,i){f===at&&u("error"===i?o(lt,"Error").html(B.xhrError):e(this).contents())})}var w,g,v,y,x,b,T,C,k,E,H,W,F,L,S,M,R,I,K,P,B,O,_,D,A,N,z,j,U,$,q,G,Q,J,V,X={html:!1,photo:!1,iframe:!1,inline:!1,transition:"elastic",speed:300,fadeOut:300,width:!1,initialWidth:"600",innerWidth:!1,maxWidth:!1,height:!1,initialHeight:"450",innerHeight:!1,maxHeight:!1,scalePhotos:!0,scrolling:!0,href:!1,title:!1,rel:!1,opacity:.9,preloading:!0,className:!1,overlayClose:!0,escKey:!0,arrowKey:!0,top:!1,bottom:!1,left:!1,right:!1,fixed:!1,data:void 0,closeButton:!0,fastIframe:!0,open:!1,reposition:!0,loop:!0,slideshow:!1,slideshowAuto:!0,slideshowSpeed:2500,slideshowStart:"start slideshow",slideshowStop:"stop slideshow",photoRegex:/\.(gif|png|jp(e|g|eg)|bmp|ico|webp)((#|\?).*)?$/i,retinaImage:!1,retinaUrl:!1,retinaSuffix:"@2x.$1",current:"image {current} of {total}",previous:"previous",next:"next",close:"close",xhrError:"This content failed to load.",imgError:"This image failed to load.",returnFocus:!0,trapFocus:!0,onOpen:!1,onLoad:!1,onComplete:!1,onCleanup:!1,onClosed:!1},Y="colorbox",Z="cbox",et=Z+"Element",tt=Z+"_open",it=Z+"_load",ot=Z+"_complete",nt=Z+"_cleanup",rt=Z+"_closed",ht=Z+"_purge",st=e("<a/>"),lt="div",at=0,dt={},ct=function(){function e(){clearTimeout(h)}function t(){(B.loop||k[z+1])&&(e(),h=setTimeout(Q.next,B.slideshowSpeed))}function i(){M.html(B.slideshowStop).unbind(l).one(l,o),st.bind(ot,t).bind(it,e),g.removeClass(s+"off").addClass(s+"on")}function o(){e(),st.unbind(ot,t).unbind(it,e),M.html(B.slideshowStart).unbind(l).one(l,function(){Q.next(),i()}),g.removeClass(s+"on").addClass(s+"off")}function n(){r=!1,M.hide(),e(),st.unbind(ot,t).unbind(it,e),g.removeClass(s+"off "+s+"on")}var r,h,s=Z+"Slideshow_",l="click."+Z;return function(){r?B.slideshow||(st.unbind(nt,n),n()):B.slideshow&&k[1]&&(r=!0,st.one(nt,n),B.slideshowAuto?i():o(),M.show())}}();e.colorbox||(e(f),Q=e.fn[Y]=e[Y]=function(t,i){var o=this;if(t=t||{},f(),p()){if(e.isFunction(o))o=e("<a/>"),t.open=!0;else if(!o[0])return o;i&&(t.onComplete=i),o.each(function(){e.data(this,Y,e.extend({},e.data(this,Y)||X,t))}).addClass(et),(e.isFunction(t.open)&&t.open.call(o)||t.open)&&u(o[0])}return o},Q.position=function(t,i){function o(){x[0].style.width=C[0].style.width=y[0].style.width=parseInt(g[0].style.width,10)-_+"px",y[0].style.height=b[0].style.height=T[0].style.height=parseInt(g[0].style.height,10)-O+"px"}var r,s,l,a=0,d=0,c=g.offset();if(E.unbind("resize."+Z),g.css({top:-9e4,left:-9e4}),s=E.scrollTop(),l=E.scrollLeft(),B.fixed?(c.top-=s,c.left-=l,g.css({position:"fixed"})):(a=s,d=l,g.css({position:"absolute"})),d+=B.right!==!1?Math.max(E.width()-B.w-A-_-h(B.right,"x"),0):B.left!==!1?h(B.left,"x"):Math.round(Math.max(E.width()-B.w-A-_,0)/2),a+=B.bottom!==!1?Math.max(n()-B.h-D-O-h(B.bottom,"y"),0):B.top!==!1?h(B.top,"y"):Math.round(Math.max(n()-B.h-D-O,0)/2),g.css({top:c.top,left:c.left,visibility:"visible"}),v[0].style.width=v[0].style.height="9999px",r={width:B.w+A+_,height:B.h+D+O,top:a,left:d},t){var u=0;e.each(r,function(e){return r[e]!==dt[e]?(u=t,void 0):void 0}),t=u}dt=r,t||g.css(r),g.dequeue().animate(r,{duration:t||0,complete:function(){o(),$=!1,v[0].style.width=B.w+A+_+"px",v[0].style.height=B.h+D+O+"px",B.reposition&&setTimeout(function(){E.bind("resize."+Z,Q.position)},1),i&&i()},step:o})},Q.resize=function(e){var t;U&&(e=e||{},e.width&&(B.w=h(e.width,"x")-A-_),e.innerWidth&&(B.w=h(e.innerWidth,"x")),H.css({width:B.w}),e.height&&(B.h=h(e.height,"y")-D-O),e.innerHeight&&(B.h=h(e.innerHeight,"y")),e.innerHeight||e.height||(t=H.scrollTop(),H.css({height:"auto"}),B.h=H.height()),H.css({height:B.h}),t&&H.scrollTop(t),Q.position("none"===B.transition?0:B.speed))},Q.prep=function(i){function n(){return B.w=B.w||H.width(),B.w=B.mw&&B.mw<B.w?B.mw:B.w,B.w}function h(){return B.h=B.h||H.height(),B.h=B.mh&&B.mh<B.h?B.mh:B.h,B.h}if(U){var a,d="none"===B.transition?0:B.speed;H.empty().remove(),H=o(lt,"LoadedContent").append(i),H.hide().appendTo(W.show()).css({width:n(),overflow:B.scrolling?"auto":"hidden"}).css({height:h()}).prependTo(y),W.hide(),e(j).css({"float":"none"}),a=function(){function i(){e.support.opacity===!1&&g[0].style.removeAttribute("filter")}var n,h,a=k.length,u="frameBorder",f="allowTransparency";U&&(h=function(){clearTimeout(G),F.hide(),c(ot,B.onComplete)},L.html(B.title).add(H).show(),a>1?("string"==typeof B.current&&S.html(B.current.replace("{current}",z+1).replace("{total}",a)).show(),R[B.loop||a-1>z?"show":"hide"]().html(B.next),I[B.loop||z?"show":"hide"]().html(B.previous),ct(),B.preloading&&e.each([r(-1),r(1)],function(){var i,o,n=k[this],r=e.data(n,Y);r&&r.href?(i=r.href,e.isFunction(i)&&(i=i.call(n))):i=e(n).attr("href"),i&&s(r,i)&&(i=l(r,i),o=t.createElement("img"),o.src=i)})):P.hide(),B.iframe?(n=o("iframe")[0],u in n&&(n[u]=0),f in n&&(n[f]="true"),B.scrolling||(n.scrolling="no"),e(n).attr({src:B.href,name:(new Date).getTime(),"class":Z+"Iframe",allowFullScreen:!0,webkitAllowFullScreen:!0,mozallowfullscreen:!0}).one("load",h).appendTo(H),st.one(ht,function(){n.src="//about:blank"}),B.fastIframe&&e(n).trigger("load")):h(),"fade"===B.transition?g.fadeTo(d,1,i):i())},"fade"===B.transition?g.fadeTo(d,0,function(){Q.position(0,a)}):Q.position(d,a)}},Q.next=function(){!$&&k[1]&&(B.loop||k[z+1])&&(z=r(1),u(k[z]))},Q.prev=function(){!$&&k[1]&&(B.loop||z)&&(z=r(-1),u(k[z]))},Q.close=function(){U&&!q&&(q=!0,U=!1,c(nt,B.onCleanup),E.unbind("."+Z),w.fadeTo(B.fadeOut||0,0),g.stop().fadeTo(B.fadeOut||0,0,function(){g.add(w).css({opacity:1,cursor:"auto"}).hide(),c(ht),H.empty().remove(),setTimeout(function(){q=!1,c(rt,B.onClosed)},1)}))},Q.remove=function(){g&&(g.stop(),e.colorbox.close(),g.stop().remove(),w.remove(),q=!1,g=null,e("."+et).removeData(Y).removeClass(et),e(t).unbind("click."+Z))},Q.element=function(){return e(N)},Q.settings=X)})(jQuery,document,window);
4
  (c) 2013 Jack Moore - http://www.jacklmoore.com/colorbox
5
  license: http://www.opensource.org/licenses/mit-license.php
6
  */
7
+ (function(e,t,i){function o(i,o,n){var r=t.createElement(i);return o&&(r.id=Z+o),n&&(r.style.cssText=n),e(r)}function n(){return i.innerHeight?i.innerHeight:e(i).height()}function r(e){var t=k.length,i=(z+e)%t;return 0>i?t+i:i}function h(e,t){return Math.round((/%/.test(e)?("x"===t?E.width():n())/100:1)*parseInt(e,10))}function s(e,t){return e.photo||e.photoRegex.test(t)}function l(e,t){return e.retinaUrl&&i.devicePixelRatio>1?t.replace(e.photoRegex,e.retinaSuffix):t}function a(e){"contains"in g[0]&&!g[0].contains(e.target)&&(e.stopPropagation(),g.focus())}function d(){var t,i=e.data(N,Y);null==i?(B=e.extend({},X),console&&console.log&&console.log("Error: cboxElement missing settings object")):B=e.extend({},i);for(t in B)e.isFunction(B[t])&&"on"!==t.slice(0,2)&&(B[t]=B[t].call(N));B.rel=B.rel||N.rel||e(N).data("rel")||"nofollow",B.href=B.href||e(N).attr("href"),B.title=B.title||N.title,"string"==typeof B.href&&(B.href=e.trim(B.href))}function c(i,o){e(t).trigger(i),st.trigger(i),e.isFunction(o)&&o.call(N)}function u(i){q||(N=i,d(),k=e(N),z=0,"nofollow"!==B.rel&&(k=e("."+et).filter(function(){var t,i=e.data(this,Y);return i&&(t=e(this).data("rel")||i.rel||this.rel),t===B.rel}),z=k.index(N),-1===z&&(k=k.add(N),z=k.length-1)),w.css({opacity:parseFloat(B.opacity),cursor:B.overlayClose?"pointer":"auto",visibility:"visible"}).show(),J&&g.add(w).removeClass(J),B.className&&g.add(w).addClass(B.className),J=B.className,B.closeButton?K.html(B.close).appendTo(y):K.appendTo("<div/>"),U||(U=$=!0,g.css({visibility:"hidden",display:"block"}),H=o(lt,"LoadedContent","width:0; height:0; overflow:hidden"),y.css({width:"",height:""}).append(H),O=x.height()+C.height()+y.outerHeight(!0)-y.height(),_=b.width()+T.width()+y.outerWidth(!0)-y.width(),D=H.outerHeight(!0),A=H.outerWidth(!0),B.w=h(B.initialWidth,"x"),B.h=h(B.initialHeight,"y"),H.css({width:"",height:B.h}),Q.position(),c(tt,B.onOpen),P.add(L).hide(),g.focus(),B.trapFocus&&t.addEventListener&&(t.addEventListener("focus",a,!0),st.one(rt,function(){t.removeEventListener("focus",a,!0)})),B.returnFocus&&st.one(rt,function(){e(N).focus()})),m())}function f(){!g&&t.body&&(V=!1,E=e(i),g=o(lt).attr({id:Y,"class":e.support.opacity===!1?Z+"IE":"",role:"dialog",tabindex:"-1"}).hide(),w=o(lt,"Overlay").hide(),F=e([o(lt,"LoadingOverlay")[0],o(lt,"LoadingGraphic")[0]]),v=o(lt,"Wrapper"),y=o(lt,"Content").append(L=o(lt,"Title"),S=o(lt,"Current"),I=e('<button type="button"/>').attr({id:Z+"Previous"}),R=e('<button type="button"/>').attr({id:Z+"Next"}),M=o("button","Slideshow"),F),K=e('<button type="button"/>').attr({id:Z+"Close"}),v.append(o(lt).append(o(lt,"TopLeft"),x=o(lt,"TopCenter"),o(lt,"TopRight")),o(lt,!1,"clear:left").append(b=o(lt,"MiddleLeft"),y,T=o(lt,"MiddleRight")),o(lt,!1,"clear:left").append(o(lt,"BottomLeft"),C=o(lt,"BottomCenter"),o(lt,"BottomRight"))).find("div div").css({"float":"left"}),W=o(lt,!1,"position:absolute; width:9999px; visibility:hidden; display:none"),P=R.add(I).add(S).add(M),e(t.body).append(w,g.append(v,W)))}function p(){function i(e){e.which>1||e.shiftKey||e.altKey||e.metaKey||e.ctrlKey||(e.preventDefault(),u(this))}return g?(V||(V=!0,R.click(function(){Q.next()}),I.click(function(){Q.prev()}),K.click(function(){Q.close()}),w.click(function(){B.overlayClose&&Q.close()}),e(t).bind("keydown."+Z,function(e){var t=e.keyCode;U&&B.escKey&&27===t&&(e.preventDefault(),Q.close()),U&&B.arrowKey&&k[1]&&!e.altKey&&(37===t?(e.preventDefault(),I.click()):39===t&&(e.preventDefault(),R.click()))}),e.isFunction(e.fn.on)?e(t).on("click."+Z,"."+et,i):e("."+et).live("click."+Z,i)),!0):!1}function m(){var n,r,a,u=Q.prep,f=++at;$=!0,j=!1,N=k[z],d(),c(ht),c(it,B.onLoad),B.h=B.height?h(B.height,"y")-D-O:B.innerHeight&&h(B.innerHeight,"y"),B.w=B.width?h(B.width,"x")-A-_:B.innerWidth&&h(B.innerWidth,"x"),B.mw=B.w,B.mh=B.h,B.maxWidth&&(B.mw=h(B.maxWidth,"x")-A-_,B.mw=B.w&&B.w<B.mw?B.w:B.mw),B.maxHeight&&(B.mh=h(B.maxHeight,"y")-D-O,B.mh=B.h&&B.h<B.mh?B.h:B.mh),n=B.href,G=setTimeout(function(){F.show()},100),B.inline?(a=o(lt).hide().insertBefore(e(n)[0]),st.one(ht,function(){a.replaceWith(H.children())}),u(e(n))):B.iframe?u(" "):B.html?u(B.html):s(B,n)?(n=l(B,n),j=t.createElement("img"),e(j).addClass(Z+"Photo").bind("error",function(){B.title=!1,u(o(lt,"Error").html(B.imgError))}).one("load",function(){var t;f===at&&(e.each(["alt","longdesc","aria-describedby"],function(t,i){var o=e(N).attr(i)||e(N).attr("data-"+i);o&&j.setAttribute(i,o)}),B.retinaImage&&i.devicePixelRatio>1&&(j.height=j.height/i.devicePixelRatio,j.width=j.width/i.devicePixelRatio),B.scalePhotos&&(r=function(){j.height-=j.height*t,j.width-=j.width*t},B.mw&&j.width>B.mw&&(t=(j.width-B.mw)/j.width,r()),B.mh&&j.height>B.mh&&(t=(j.height-B.mh)/j.height,r())),B.h&&(j.style.marginTop=Math.max(B.mh-j.height,0)/2+"px"),k[1]&&(B.loop||k[z+1])&&(j.style.cursor="pointer",j.onclick=function(){Q.next()}),j.style.width=j.width+"px",j.style.height=j.height+"px",setTimeout(function(){u(j)},1))}),setTimeout(function(){j.src=n},1)):n&&W.load(n,B.data,function(t,i){f===at&&u("error"===i?o(lt,"Error").html(B.xhrError):e(this).contents())})}var w,g,v,y,x,b,T,C,k,E,H,W,F,L,S,M,R,I,K,P,B,O,_,D,A,N,z,j,U,$,q,G,Q,J,V,X={html:!1,photo:!1,iframe:!1,inline:!1,transition:"elastic",speed:300,fadeOut:300,width:!1,initialWidth:"600",innerWidth:!1,maxWidth:!1,height:!1,initialHeight:"450",innerHeight:!1,maxHeight:!1,scalePhotos:!0,scrolling:!0,href:!1,title:!1,rel:!1,opacity:.9,preloading:!0,className:!1,overlayClose:!0,escKey:!0,arrowKey:!0,top:!1,bottom:!1,left:!1,right:!1,fixed:!1,data:void 0,closeButton:!0,fastIframe:!0,open:!1,reposition:!0,loop:!0,slideshow:!1,slideshowAuto:!0,slideshowSpeed:2500,slideshowStart:"start slideshow",slideshowStop:"stop slideshow",photoRegex:/\.(gif|png|jp(e|g|eg)|bmp|ico|webp)((#|\?).*)?$/i,retinaImage:!1,retinaUrl:!1,retinaSuffix:"@2x.$1",current:"image {current} of {total}",previous:"previous",next:"next",close:"close",xhrError:"This content failed to load.",imgError:"This image failed to load.",returnFocus:!0,trapFocus:!0,onOpen:!1,onLoad:!1,onComplete:!1,onCleanup:!1,onClosed:!1},Y="colorbox",Z="cbox",et=Z+"Element",tt=Z+"_open",it=Z+"_load",ot=Z+"_complete",nt=Z+"_cleanup",rt=Z+"_closed",ht=Z+"_purge",st=e("<a/>"),lt="div",at=0,dt={},ct=function(){function e(){clearTimeout(h)}function t(){(B.loop||k[z+1])&&(e(),h=setTimeout(Q.next,B.slideshowSpeed))}function i(){M.html(B.slideshowStop).unbind(l).one(l,o),st.bind(ot,t).bind(it,e),g.removeClass(s+"off").addClass(s+"on")}function o(){e(),st.unbind(ot,t).unbind(it,e),M.html(B.slideshowStart).unbind(l).one(l,function(){Q.next(),i()}),g.removeClass(s+"on").addClass(s+"off")}function n(){r=!1,M.hide(),e(),st.unbind(ot,t).unbind(it,e),g.removeClass(s+"off "+s+"on")}var r,h,s=Z+"Slideshow_",l="click."+Z;return function(){r?B.slideshow||(st.unbind(nt,n),n()):B.slideshow&&k[1]&&(r=!0,st.one(nt,n),B.slideshowAuto?i():o(),M.show())}}();e.colorbox||(e(f),Q=e.fn[Y]=e[Y]=function(t,i){var o=this;if(t=t||{},f(),p()){if(e.isFunction(o))o=e("<a/>"),t.open=!0;else if(!o[0])return o;i&&(t.onComplete=i),o.each(function(){e.data(this,Y,e.extend({},e.data(this,Y)||X,t))}).addClass(et),(e.isFunction(t.open)&&t.open.call(o)||t.open)&&u(o[0])}return o},Q.position=function(t,i){function o(){x[0].style.width=C[0].style.width=y[0].style.width=parseInt(g[0].style.width,10)-_+"px",y[0].style.height=b[0].style.height=T[0].style.height=parseInt(g[0].style.height,10)-O+"px"}var r,s,l,a=0,d=0,c=g.offset();if(E.unbind("resize."+Z),g.css({top:-9e4,left:-9e4}),s=E.scrollTop(),l=E.scrollLeft(),B.fixed?(c.top-=s,c.left-=l,g.css({position:"fixed"})):(a=s,d=l,g.css({position:"absolute"})),d+=B.right!==!1?Math.max(E.width()-B.w-A-_-h(B.right,"x"),0):B.left!==!1?h(B.left,"x"):Math.round(Math.max(E.width()-B.w-A-_,0)/2),a+=B.bottom!==!1?Math.max(n()-B.h-D-O-h(B.bottom,"y"),0):B.top!==!1?h(B.top,"y"):Math.round(Math.max(n()-B.h-D-O,0)/2),g.css({top:c.top,left:c.left,visibility:"visible"}),v[0].style.width=v[0].style.height="9999px",r={width:B.w+A+_,height:B.h+D+O,top:a,left:d},t){var u=0;e.each(r,function(e){return r[e]!==dt[e]?(u=t,void 0):void 0}),t=u}dt=r,t||g.css(r),g.dequeue().animate(r,{duration:t||0,complete:function(){o(),$=!1,v[0].style.width=B.w+A+_+"px",v[0].style.height=B.h+D+O+"px",B.reposition&&setTimeout(function(){E.bind("resize."+Z,Q.position)},1),e.isFunction(i)&&i()},step:o})},Q.resize=function(e){var t;U&&(e=e||{},e.width&&(B.w=h(e.width,"x")-A-_),e.innerWidth&&(B.w=h(e.innerWidth,"x")),H.css({width:B.w}),e.height&&(B.h=h(e.height,"y")-D-O),e.innerHeight&&(B.h=h(e.innerHeight,"y")),e.innerHeight||e.height||(t=H.scrollTop(),H.css({height:"auto"}),B.h=H.height()),H.css({height:B.h}),t&&H.scrollTop(t),Q.position("none"===B.transition?0:B.speed))},Q.prep=function(i){function n(){return B.w=B.w||H.width(),B.w=B.mw&&B.mw<B.w?B.mw:B.w,B.w}function h(){return B.h=B.h||H.height(),B.h=B.mh&&B.mh<B.h?B.mh:B.h,B.h}if(U){var a,d="none"===B.transition?0:B.speed;H.empty().remove(),H=o(lt,"LoadedContent").append(i),H.hide().appendTo(W.show()).css({width:n(),overflow:B.scrolling?"auto":"hidden"}).css({height:h()}).prependTo(y),W.hide(),e(j).css({"float":"none"}),a=function(){function i(){e.support.opacity===!1&&g[0].style.removeAttribute("filter")}var n,h,a=k.length,u="frameBorder",f="allowTransparency";U&&(h=function(){clearTimeout(G),F.hide(),c(ot,B.onComplete)},L.html(B.title).add(H).show(),a>1?("string"==typeof B.current&&S.html(B.current.replace("{current}",z+1).replace("{total}",a)).show(),R[B.loop||a-1>z?"show":"hide"]().html(B.next),I[B.loop||z?"show":"hide"]().html(B.previous),ct(),B.preloading&&e.each([r(-1),r(1)],function(){var i,o,n=k[this],r=e.data(n,Y);r&&r.href?(i=r.href,e.isFunction(i)&&(i=i.call(n))):i=e(n).attr("href"),i&&s(r,i)&&(i=l(r,i),o=t.createElement("img"),o.src=i)})):P.hide(),B.iframe?(n=o("iframe")[0],u in n&&(n[u]=0),f in n&&(n[f]="true"),B.scrolling||(n.scrolling="no"),e(n).attr({src:B.href,name:(new Date).getTime(),"class":Z+"Iframe",allowFullScreen:!0,webkitAllowFullScreen:!0,mozallowfullscreen:!0}).one("load",h).appendTo(H),st.one(ht,function(){n.src="//about:blank"}),B.fastIframe&&e(n).trigger("load")):h(),"fade"===B.transition?g.fadeTo(d,1,i):i())},"fade"===B.transition?g.fadeTo(d,0,function(){Q.position(0,a)}):Q.position(d,a)}},Q.next=function(){!$&&k[1]&&(B.loop||k[z+1])&&(z=r(1),u(k[z]))},Q.prev=function(){!$&&k[1]&&(B.loop||z)&&(z=r(-1),u(k[z]))},Q.close=function(){U&&!q&&(q=!0,U=!1,c(nt,B.onCleanup),E.unbind("."+Z),w.fadeTo(B.fadeOut||0,0),g.stop().fadeTo(B.fadeOut||0,0,function(){g.add(w).css({opacity:1,cursor:"auto"}).hide(),c(ht),H.empty().remove(),setTimeout(function(){q=!1,c(rt,B.onClosed)},1)}))},Q.remove=function(){g&&(g.stop(),e.colorbox.close(),g.stop().remove(),w.remove(),q=!1,g=null,e("."+et).removeData(Y).removeClass(et),e(t).unbind("click."+Z))},Q.element=function(){return e(N)},Q.settings=X)})(jQuery,document,window);
library/toolset/toolset-common/res/lib/knockout/knockout-3.4.0.debug.js ADDED
@@ -0,0 +1,5871 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*!
2
+ * Knockout JavaScript library v3.4.0
3
+ * (c) Steven Sanderson - http://knockoutjs.com/
4
+ * License: MIT (http://www.opensource.org/licenses/mit-license.php)
5
+ */
6
+
7
+ (function(){
8
+ var DEBUG=true;
9
+ (function(undefined){
10
+ // (0, eval)('this') is a robust way of getting a reference to the global object
11
+ // For details, see http://stackoverflow.com/questions/14119988/return-this-0-evalthis/14120023#14120023
12
+ var window = this || (0, eval)('this'),
13
+ document = window['document'],
14
+ navigator = window['navigator'],
15
+ jQueryInstance = window["jQuery"],
16
+ JSON = window["JSON"];
17
+ (function(factory) {
18
+ // Support three module loading scenarios
19
+ if (typeof define === 'function' && define['amd']) {
20
+ // [1] AMD anonymous module
21
+ define(['exports', 'require'], factory);
22
+ } else if (typeof exports === 'object' && typeof module === 'object') {
23
+ // [2] CommonJS/Node.js
24
+ factory(module['exports'] || exports); // module.exports is for Node.js
25
+ } else {
26
+ // [3] No module loader (plain <script> tag) - put directly in global namespace
27
+ factory(window['ko'] = {});
28
+ }
29
+ }(function(koExports, amdRequire){
30
+ // Internally, all KO objects are attached to koExports (even the non-exported ones whose names will be minified by the closure compiler).
31
+ // In the future, the following "ko" variable may be made distinct from "koExports" so that private objects are not externally reachable.
32
+ var ko = typeof koExports !== 'undefined' ? koExports : {};
33
+ // Google Closure Compiler helpers (used only to make the minified file smaller)
34
+ ko.exportSymbol = function(koPath, object) {
35
+ var tokens = koPath.split(".");
36
+
37
+ // In the future, "ko" may become distinct from "koExports" (so that non-exported objects are not reachable)
38
+ // At that point, "target" would be set to: (typeof koExports !== "undefined" ? koExports : ko)
39
+ var target = ko;
40
+
41
+ for (var i = 0; i < tokens.length - 1; i++)
42
+ target = target[tokens[i]];
43
+ target[tokens[tokens.length - 1]] = object;
44
+ };
45
+ ko.exportProperty = function(owner, publicName, object) {
46
+ owner[publicName] = object;
47
+ };
48
+ ko.version = "3.4.0";
49
+
50
+ ko.exportSymbol('version', ko.version);
51
+ // For any options that may affect various areas of Knockout and aren't directly associated with data binding.
52
+ ko.options = {
53
+ 'deferUpdates': false,
54
+ 'useOnlyNativeEvents': false
55
+ };
56
+
57
+ //ko.exportSymbol('options', ko.options); // 'options' isn't minified
58
+ ko.utils = (function () {
59
+ function objectForEach(obj, action) {
60
+ for (var prop in obj) {
61
+ if (obj.hasOwnProperty(prop)) {
62
+ action(prop, obj[prop]);
63
+ }
64
+ }
65
+ }
66
+
67
+ function extend(target, source) {
68
+ if (source) {
69
+ for(var prop in source) {
70
+ if(source.hasOwnProperty(prop)) {
71
+ target[prop] = source[prop];
72
+ }
73
+ }
74
+ }
75
+ return target;
76
+ }
77
+
78
+ function setPrototypeOf(obj, proto) {
79
+ obj.__proto__ = proto;
80
+ return obj;
81
+ }
82
+
83
+ var canSetPrototype = ({ __proto__: [] } instanceof Array);
84
+ var canUseSymbols = !DEBUG && typeof Symbol === 'function';
85
+
86
+ // Represent the known event types in a compact way, then at runtime transform it into a hash with event name as key (for fast lookup)
87
+ var knownEvents = {}, knownEventTypesByEventName = {};
88
+ var keyEventTypeName = (navigator && /Firefox\/2/i.test(navigator.userAgent)) ? 'KeyboardEvent' : 'UIEvents';
89
+ knownEvents[keyEventTypeName] = ['keyup', 'keydown', 'keypress'];
90
+ knownEvents['MouseEvents'] = ['click', 'dblclick', 'mousedown', 'mouseup', 'mousemove', 'mouseover', 'mouseout', 'mouseenter', 'mouseleave'];
91
+ objectForEach(knownEvents, function(eventType, knownEventsForType) {
92
+ if (knownEventsForType.length) {
93
+ for (var i = 0, j = knownEventsForType.length; i < j; i++)
94
+ knownEventTypesByEventName[knownEventsForType[i]] = eventType;
95
+ }
96
+ });
97
+ var eventsThatMustBeRegisteredUsingAttachEvent = { 'propertychange': true }; // Workaround for an IE9 issue - https://github.com/SteveSanderson/knockout/issues/406
98
+
99
+ // Detect IE versions for bug workarounds (uses IE conditionals, not UA string, for robustness)
100
+ // Note that, since IE 10 does not support conditional comments, the following logic only detects IE < 10.
101
+ // Currently this is by design, since IE 10+ behaves correctly when treated as a standard browser.
102
+ // If there is a future need to detect specific versions of IE10+, we will amend this.
103
+ var ieVersion = document && (function() {
104
+ var version = 3, div = document.createElement('div'), iElems = div.getElementsByTagName('i');
105
+
106
+ // Keep constructing conditional HTML blocks until we hit one that resolves to an empty fragment
107
+ while (
108
+ div.innerHTML = '<!--[if gt IE ' + (++version) + ']><i></i><![endif]-->',
109
+ iElems[0]
110
+ ) {}
111
+ return version > 4 ? version : undefined;
112
+ }());
113
+ var isIe6 = ieVersion === 6,
114
+ isIe7 = ieVersion === 7;
115
+
116
+ function isClickOnCheckableElement(element, eventType) {
117
+ if ((ko.utils.tagNameLower(element) !== "input") || !element.type) return false;
118
+ if (eventType.toLowerCase() != "click") return false;
119
+ var inputType = element.type;
120
+ return (inputType == "checkbox") || (inputType == "radio");
121
+ }
122
+
123
+ // For details on the pattern for changing node classes
124
+ // see: https://github.com/knockout/knockout/issues/1597
125
+ var cssClassNameRegex = /\S+/g;
126
+
127
+ function toggleDomNodeCssClass(node, classNames, shouldHaveClass) {
128
+ var addOrRemoveFn;
129
+ if (classNames) {
130
+ if (typeof node.classList === 'object') {
131
+ addOrRemoveFn = node.classList[shouldHaveClass ? 'add' : 'remove'];
132
+ ko.utils.arrayForEach(classNames.match(cssClassNameRegex), function(className) {
133
+ addOrRemoveFn.call(node.classList, className);
134
+ });
135
+ } else if (typeof node.className['baseVal'] === 'string') {
136
+ // SVG tag .classNames is an SVGAnimatedString instance
137
+ toggleObjectClassPropertyString(node.className, 'baseVal', classNames, shouldHaveClass);
138
+ } else {
139
+ // node.className ought to be a string.
140
+ toggleObjectClassPropertyString(node, 'className', classNames, shouldHaveClass);
141
+ }
142
+ }
143
+ }
144
+
145
+ function toggleObjectClassPropertyString(obj, prop, classNames, shouldHaveClass) {
146
+ // obj/prop is either a node/'className' or a SVGAnimatedString/'baseVal'.
147
+ var currentClassNames = obj[prop].match(cssClassNameRegex) || [];
148
+ ko.utils.arrayForEach(classNames.match(cssClassNameRegex), function(className) {
149
+ ko.utils.addOrRemoveItem(currentClassNames, className, shouldHaveClass);
150
+ });
151
+ obj[prop] = currentClassNames.join(" ");
152
+ }
153
+
154
+ return {
155
+ fieldsIncludedWithJsonPost: ['authenticity_token', /^__RequestVerificationToken(_.*)?$/],
156
+
157
+ arrayForEach: function (array, action) {
158
+ for (var i = 0, j = array.length; i < j; i++)
159
+ action(array[i], i);
160
+ },
161
+
162
+ arrayIndexOf: function (array, item) {
163
+ if (typeof Array.prototype.indexOf == "function")
164
+ return Array.prototype.indexOf.call(array, item);
165
+ for (var i = 0, j = array.length; i < j; i++)
166
+ if (array[i] === item)
167
+ return i;
168
+ return -1;
169
+ },
170
+
171
+ arrayFirst: function (array, predicate, predicateOwner) {
172
+ for (var i = 0, j = array.length; i < j; i++)
173
+ if (predicate.call(predicateOwner, array[i], i))
174
+ return array[i];
175
+ return null;
176
+ },
177
+
178
+ arrayRemoveItem: function (array, itemToRemove) {
179
+ var index = ko.utils.arrayIndexOf(array, itemToRemove);
180
+ if (index > 0) {
181
+ array.splice(index, 1);
182
+ }
183
+ else if (index === 0) {
184
+ array.shift();
185
+ }
186
+ },
187
+
188
+ arrayGetDistinctValues: function (array) {
189
+ array = array || [];
190
+ var result = [];
191
+ for (var i = 0, j = array.length; i < j; i++) {
192
+ if (ko.utils.arrayIndexOf(result, array[i]) < 0)
193
+ result.push(array[i]);
194
+ }
195
+ return result;
196
+ },
197
+
198
+ arrayMap: function (array, mapping) {
199
+ array = array || [];
200
+ var result = [];
201
+ for (var i = 0, j = array.length; i < j; i++)
202
+ result.push(mapping(array[i], i));
203
+ return result;
204
+ },
205
+
206
+ arrayFilter: function (array, predicate) {
207
+ array = array || [];
208
+ var result = [];
209
+ for (var i = 0, j = array.length; i < j; i++)
210
+ if (predicate(array[i], i))
211
+ result.push(array[i]);
212
+ return result;
213
+ },
214
+
215
+ arrayPushAll: function (array, valuesToPush) {
216
+ if (valuesToPush instanceof Array)
217
+ array.push.apply(array, valuesToPush);
218
+ else
219
+ for (var i = 0, j = valuesToPush.length; i < j; i++)
220
+ array.push(valuesToPush[i]);
221
+ return array;
222
+ },
223
+
224
+ addOrRemoveItem: function(array, value, included) {
225
+ var existingEntryIndex = ko.utils.arrayIndexOf(ko.utils.peekObservable(array), value);
226
+ if (existingEntryIndex < 0) {
227
+ if (included)
228
+ array.push(value);
229
+ } else {
230
+ if (!included)
231
+ array.splice(existingEntryIndex, 1);
232
+ }
233
+ },
234
+
235
+ canSetPrototype: canSetPrototype,
236
+
237
+ extend: extend,
238
+
239
+ setPrototypeOf: setPrototypeOf,
240
+
241
+ setPrototypeOfOrExtend: canSetPrototype ? setPrototypeOf : extend,
242
+
243
+ objectForEach: objectForEach,
244
+
245
+ objectMap: function(source, mapping) {
246
+ if (!source)
247
+ return source;
248
+ var target = {};
249
+ for (var prop in source) {
250
+ if (source.hasOwnProperty(prop)) {
251
+ target[prop] = mapping(source[prop], prop, source);
252
+ }
253
+ }
254
+ return target;
255
+ },
256
+
257
+ emptyDomNode: function (domNode) {
258
+ while (domNode.firstChild) {
259
+ ko.removeNode(domNode.firstChild);
260
+ }
261
+ },
262
+
263
+ moveCleanedNodesToContainerElement: function(nodes) {
264
+ // Ensure it's a real array, as we're about to reparent the nodes and
265
+ // we don't want the underlying collection to change while we're doing that.
266
+ var nodesArray = ko.utils.makeArray(nodes);
267
+ var templateDocument = (nodesArray[0] && nodesArray[0].ownerDocument) || document;
268
+
269
+ var container = templateDocument.createElement('div');
270
+ for (var i = 0, j = nodesArray.length; i < j; i++) {
271
+ container.appendChild(ko.cleanNode(nodesArray[i]));
272
+ }
273
+ return container;
274
+ },
275
+
276
+ cloneNodes: function (nodesArray, shouldCleanNodes) {
277
+ for (var i = 0, j = nodesArray.length, newNodesArray = []; i < j; i++) {
278
+ var clonedNode = nodesArray[i].cloneNode(true);
279
+ newNodesArray.push(shouldCleanNodes ? ko.cleanNode(clonedNode) : clonedNode);
280
+ }
281
+ return newNodesArray;
282
+ },
283
+
284
+ setDomNodeChildren: function (domNode, childNodes) {
285
+ ko.utils.emptyDomNode(domNode);
286
+ if (childNodes) {
287
+ for (var i = 0, j = childNodes.length; i < j; i++)
288
+ domNode.appendChild(childNodes[i]);
289
+ }
290
+ },
291
+
292
+ replaceDomNodes: function (nodeToReplaceOrNodeArray, newNodesArray) {
293
+ var nodesToReplaceArray = nodeToReplaceOrNodeArray.nodeType ? [nodeToReplaceOrNodeArray] : nodeToReplaceOrNodeArray;
294
+ if (nodesToReplaceArray.length > 0) {
295
+ var insertionPoint = nodesToReplaceArray[0];
296
+ var parent = insertionPoint.parentNode;
297
+ for (var i = 0, j = newNodesArray.length; i < j; i++)
298
+ parent.insertBefore(newNodesArray[i], insertionPoint);
299
+ for (var i = 0, j = nodesToReplaceArray.length; i < j; i++) {
300
+ ko.removeNode(nodesToReplaceArray[i]);
301
+ }
302
+ }
303
+ },
304
+
305
+ fixUpContinuousNodeArray: function(continuousNodeArray, parentNode) {
306
+ // Before acting on a set of nodes that were previously outputted by a template function, we have to reconcile
307
+ // them against what is in the DOM right now. It may be that some of the nodes have already been removed, or that
308
+ // new nodes might have been inserted in the middle, for example by a binding. Also, there may previously have been
309
+ // leading comment nodes (created by rewritten string-based templates) that have since been removed during binding.
310
+ // So, this function translates the old "map" output array into its best guess of the set of current DOM nodes.
311
+ //
312
+ // Rules:
313
+ // [A] Any leading nodes that have been removed should be ignored
314
+ // These most likely correspond to memoization nodes that were already removed during binding
315
+ // See https://github.com/knockout/knockout/pull/440
316
+ // [B] Any trailing nodes that have been remove should be ignored
317
+ // This prevents the code here from adding unrelated nodes to the array while processing rule [C]
318
+ // See https://github.com/knockout/knockout/pull/1903
319
+ // [C] We want to output a continuous series of nodes. So, ignore any nodes that have already been removed,
320
+ // and include any nodes that have been inserted among the previous collection
321
+
322
+ if (continuousNodeArray.length) {
323
+ // The parent node can be a virtual element; so get the real parent node
324
+ parentNode = (parentNode.nodeType === 8 && parentNode.parentNode) || parentNode;
325
+
326
+ // Rule [A]
327
+ while (continuousNodeArray.length && continuousNodeArray[0].parentNode !== parentNode)
328
+ continuousNodeArray.splice(0, 1);
329
+
330
+ // Rule [B]
331
+ while (continuousNodeArray.length > 1 && continuousNodeArray[continuousNodeArray.length - 1].parentNode !== parentNode)
332
+ continuousNodeArray.length--;
333
+
334
+ // Rule [C]
335
+ if (continuousNodeArray.length > 1) {
336
+ var current = continuousNodeArray[0], last = continuousNodeArray[continuousNodeArray.length - 1];
337
+ // Replace with the actual new continuous node set
338
+ continuousNodeArray.length = 0;
339
+ while (current !== last) {
340
+ continuousNodeArray.push(current);
341
+ current = current.nextSibling;
342
+ }
343
+ continuousNodeArray.push(last);
344
+ }
345
+ }
346
+ return continuousNodeArray;
347
+ },
348
+
349
+ setOptionNodeSelectionState: function (optionNode, isSelected) {
350
+ // IE6 sometimes throws "unknown error" if you try to write to .selected directly, whereas Firefox struggles with setAttribute. Pick one based on browser.
351
+ if (ieVersion < 7)
352
+ optionNode.setAttribute("selected", isSelected);
353
+ else
354
+ optionNode.selected = isSelected;
355
+ },
356
+
357
+ stringTrim: function (string) {
358
+ return string === null || string === undefined ? '' :
359
+ string.trim ?
360
+ string.trim() :
361
+ string.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g, '');
362
+ },
363
+
364
+ stringStartsWith: function (string, startsWith) {
365
+ string = string || "";
366
+ if (startsWith.length > string.length)
367
+ return false;
368
+ return string.substring(0, startsWith.length) === startsWith;
369
+ },
370
+
371
+ domNodeIsContainedBy: function (node, containedByNode) {
372
+ if (node === containedByNode)
373
+ return true;
374
+ if (node.nodeType === 11)
375
+ return false; // Fixes issue #1162 - can't use node.contains for document fragments on IE8
376
+ if (containedByNode.contains)
377
+ return containedByNode.contains(node.nodeType === 3 ? node.parentNode : node);
378
+ if (containedByNode.compareDocumentPosition)
379
+ return (containedByNode.compareDocumentPosition(node) & 16) == 16;
380
+ while (node && node != containedByNode) {
381
+ node = node.parentNode;
382
+ }
383
+ return !!node;
384
+ },
385
+
386
+ domNodeIsAttachedToDocument: function (node) {
387
+ return ko.utils.domNodeIsContainedBy(node, node.ownerDocument.documentElement);
388
+ },
389
+
390
+ anyDomNodeIsAttachedToDocument: function(nodes) {
391
+ return !!ko.utils.arrayFirst(nodes, ko.utils.domNodeIsAttachedToDocument);
392
+ },
393
+
394
+ tagNameLower: function(element) {
395
+ // For HTML elements, tagName will always be upper case; for XHTML elements, it'll be lower case.
396
+ // Possible future optimization: If we know it's an element from an XHTML document (not HTML),
397
+ // we don't need to do the .toLowerCase() as it will always be lower case anyway.
398
+ return element && element.tagName && element.tagName.toLowerCase();
399
+ },
400
+
401
+ catchFunctionErrors: function (delegate) {
402
+ return ko['onError'] ? function () {
403
+ try {
404
+ return delegate.apply(this, arguments);
405
+ } catch (e) {
406
+ ko['onError'] && ko['onError'](e);
407
+ throw e;
408
+ }
409
+ } : delegate;
410
+ },
411
+
412
+ setTimeout: function (handler, timeout) {
413
+ return setTimeout(ko.utils.catchFunctionErrors(handler), timeout);
414
+ },
415
+
416
+ deferError: function (error) {
417
+ setTimeout(function () {
418
+ ko['onError'] && ko['onError'](error);
419
+ throw error;
420
+ }, 0);
421
+ },
422
+
423
+ registerEventHandler: function (element, eventType, handler) {
424
+ var wrappedHandler = ko.utils.catchFunctionErrors(handler);
425
+
426
+ var mustUseAttachEvent = ieVersion && eventsThatMustBeRegisteredUsingAttachEvent[eventType];
427
+ if (!ko.options['useOnlyNativeEvents'] && !mustUseAttachEvent && jQueryInstance) {
428
+ jQueryInstance(element)['bind'](eventType, wrappedHandler);
429
+ } else if (!mustUseAttachEvent && typeof element.addEventListener == "function")
430
+ element.addEventListener(eventType, wrappedHandler, false);
431
+ else if (typeof element.attachEvent != "undefined") {
432
+ var attachEventHandler = function (event) { wrappedHandler.call(element, event); },
433
+ attachEventName = "on" + eventType;
434
+ element.attachEvent(attachEventName, attachEventHandler);
435
+
436
+ // IE does not dispose attachEvent handlers automatically (unlike with addEventListener)
437
+ // so to avoid leaks, we have to remove them manually. See bug #856
438
+ ko.utils.domNodeDisposal.addDisposeCallback(element, function() {
439
+ element.detachEvent(attachEventName, attachEventHandler);
440
+ });
441
+ } else
442
+ throw new Error("Browser doesn't support addEventListener or attachEvent");
443
+ },
444
+
445
+ triggerEvent: function (element, eventType) {
446
+ if (!(element && element.nodeType))
447
+ throw new Error("element must be a DOM node when calling triggerEvent");
448
+
449
+ // For click events on checkboxes and radio buttons, jQuery toggles the element checked state *after* the
450
+ // event handler runs instead of *before*. (This was fixed in 1.9 for checkboxes but not for radio buttons.)
451
+ // IE doesn't change the checked state when you trigger the click event using "fireEvent".
452
+ // In both cases, we'll use the click method instead.
453
+ var useClickWorkaround = isClickOnCheckableElement(element, eventType);
454
+
455
+ if (!ko.options['useOnlyNativeEvents'] && jQueryInstance && !useClickWorkaround) {
456
+ jQueryInstance(element)['trigger'](eventType);
457
+ } else if (typeof document.createEvent == "function") {
458
+ if (typeof element.dispatchEvent == "function") {
459
+ var eventCategory = knownEventTypesByEventName[eventType] || "HTMLEvents";
460
+ var event = document.createEvent(eventCategory);
461
+ event.initEvent(eventType, true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, element);
462
+ element.dispatchEvent(event);
463
+ }
464
+ else
465
+ throw new Error("The supplied element doesn't support dispatchEvent");
466
+ } else if (useClickWorkaround && element.click) {
467
+ element.click();
468
+ } else if (typeof element.fireEvent != "undefined") {
469
+ element.fireEvent("on" + eventType);
470
+ } else {
471
+ throw new Error("Browser doesn't support triggering events");
472
+ }
473
+ },
474
+
475
+ unwrapObservable: function (value) {
476
+ return ko.isObservable(value) ? value() : value;
477
+ },
478
+
479
+ peekObservable: function (value) {
480
+ return ko.isObservable(value) ? value.peek() : value;
481
+ },
482
+
483
+ toggleDomNodeCssClass: toggleDomNodeCssClass,
484
+
485
+ setTextContent: function(element, textContent) {
486
+ var value = ko.utils.unwrapObservable(textContent);
487
+ if ((value === null) || (value === undefined))
488
+ value = "";
489
+
490
+ // We need there to be exactly one child: a text node.
491
+ // If there are no children, more than one, or if it's not a text node,
492
+ // we'll clear everything and create a single text node.
493
+ var innerTextNode = ko.virtualElements.firstChild(element);
494
+ if (!innerTextNode || innerTextNode.nodeType != 3 || ko.virtualElements.nextSibling(innerTextNode)) {
495
+ ko.virtualElements.setDomNodeChildren(element, [element.ownerDocument.createTextNode(value)]);
496
+ } else {
497
+ innerTextNode.data = value;
498
+ }
499
+
500
+ ko.utils.forceRefresh(element);
501
+ },
502
+
503
+ setElementName: function(element, name) {
504
+ element.name = name;
505
+
506
+ // Workaround IE 6/7 issue
507
+ // - https://github.com/SteveSanderson/knockout/issues/197
508
+ // - http://www.matts411.com/post/setting_the_name_attribute_in_ie_dom/
509
+ if (ieVersion <= 7) {
510
+ try {
511
+ element.mergeAttributes(document.createElement("<input name='" + element.name + "'/>"), false);
512
+ }
513
+ catch(e) {} // For IE9 with doc mode "IE9 Standards" and browser mode "IE9 Compatibility View"
514
+ }
515
+ },
516
+
517
+ forceRefresh: function(node) {
518
+ // Workaround for an IE9 rendering bug - https://github.com/SteveSanderson/knockout/issues/209
519
+ if (ieVersion >= 9) {
520
+ // For text nodes and comment nodes (most likely virtual elements), we will have to refresh the container
521
+ var elem = node.nodeType == 1 ? node : node.parentNode;
522
+ if (elem.style)
523
+ elem.style.zoom = elem.style.zoom;
524
+ }
525
+ },
526
+
527
+ ensureSelectElementIsRenderedCorrectly: function(selectElement) {
528
+ // Workaround for IE9 rendering bug - it doesn't reliably display all the text in dynamically-added select boxes unless you force it to re-render by updating the width.
529
+ // (See https://github.com/SteveSanderson/knockout/issues/312, http://stackoverflow.com/questions/5908494/select-only-shows-first-char-of-selected-option)
530
+ // Also fixes IE7 and IE8 bug that causes selects to be zero width if enclosed by 'if' or 'with'. (See issue #839)
531
+ if (ieVersion) {
532
+ var originalWidth = selectElement.style.width;
533
+ selectElement.style.width = 0;
534
+ selectElement.style.width = originalWidth;
535
+ }
536
+ },
537
+
538
+ range: function (min, max) {
539
+ min = ko.utils.unwrapObservable(min);
540
+ max = ko.utils.unwrapObservable(max);
541
+ var result = [];
542
+ for (var i = min; i <= max; i++)
543
+ result.push(i);
544
+ return result;
545
+ },
546
+
547
+ makeArray: function(arrayLikeObject) {
548
+ var result = [];
549
+ for (var i = 0, j = arrayLikeObject.length; i < j; i++) {
550
+ result.push(arrayLikeObject[i]);
551
+ };
552
+ return result;
553
+ },
554
+
555
+ createSymbolOrString: function(identifier) {
556
+ return canUseSymbols ? Symbol(identifier) : identifier;
557
+ },
558
+
559
+ isIe6 : isIe6,
560
+ isIe7 : isIe7,
561
+ ieVersion : ieVersion,
562
+
563
+ getFormFields: function(form, fieldName) {
564
+ var fields = ko.utils.makeArray(form.getElementsByTagName("input")).concat(ko.utils.makeArray(form.getElementsByTagName("textarea")));
565
+ var isMatchingField = (typeof fieldName == 'string')
566
+ ? function(field) { return field.name === fieldName }
567
+ : function(field) { return fieldName.test(field.name) }; // Treat fieldName as regex or object containing predicate
568
+ var matches = [];
569
+ for (var i = fields.length - 1; i >= 0; i--) {
570
+ if (isMatchingField(fields[i]))
571
+ matches.push(fields[i]);
572
+ };
573
+ return matches;
574
+ },
575
+
576
+ parseJson: function (jsonString) {
577
+ if (typeof jsonString == "string") {
578
+ jsonString = ko.utils.stringTrim(jsonString);
579
+ if (jsonString) {
580
+ if (JSON && JSON.parse) // Use native parsing where available
581
+ return JSON.parse(jsonString);
582
+ return (new Function("return " + jsonString))(); // Fallback on less safe parsing for older browsers
583
+ }
584
+ }
585
+ return null;
586
+ },
587
+
588
+ stringifyJson: function (data, replacer, space) { // replacer and space are optional
589
+ if (!JSON || !JSON.stringify)
590
+ throw new Error("Cannot find JSON.stringify(). Some browsers (e.g., IE < 8) don't support it natively, but you can overcome this by adding a script reference to json2.js, downloadable from http://www.json.org/json2.js");
591
+ return JSON.stringify(ko.utils.unwrapObservable(data), replacer, space);
592
+ },
593
+
594
+ postJson: function (urlOrForm, data, options) {
595
+ options = options || {};
596
+ var params = options['params'] || {};
597
+ var includeFields = options['includeFields'] || this.fieldsIncludedWithJsonPost;
598
+ var url = urlOrForm;
599
+
600
+ // If we were given a form, use its 'action' URL and pick out any requested field values
601
+ if((typeof urlOrForm == 'object') && (ko.utils.tagNameLower(urlOrForm) === "form")) {
602
+ var originalForm = urlOrForm;
603
+ url = originalForm.action;
604
+ for (var i = includeFields.length - 1; i >= 0; i--) {
605
+ var fields = ko.utils.getFormFields(originalForm, includeFields[i]);
606
+ for (var j = fields.length - 1; j >= 0; j--)
607
+ params[fields[j].name] = fields[j].value;
608
+ }
609
+ }
610
+
611
+ data = ko.utils.unwrapObservable(data);
612
+ var form = document.createElement("form");
613
+ form.style.display = "none";
614
+ form.action = url;
615
+ form.method = "post";
616
+ for (var key in data) {
617
+ // Since 'data' this is a model object, we include all properties including those inherited from its prototype
618
+ var input = document.createElement("input");
619
+ input.type = "hidden";
620
+ input.name = key;
621
+ input.value = ko.utils.stringifyJson(ko.utils.unwrapObservable(data[key]));
622
+ form.appendChild(input);
623
+ }
624
+ objectForEach(params, function(key, value) {
625
+ var input = document.createElement("input");
626
+ input.type = "hidden";
627
+ input.name = key;
628
+ input.value = value;
629
+ form.appendChild(input);
630
+ });
631
+ document.body.appendChild(form);
632
+ options['submitter'] ? options['submitter'](form) : form.submit();
633
+ setTimeout(function () { form.parentNode.removeChild(form); }, 0);
634
+ }
635
+ }
636
+ }());
637
+
638
+ ko.exportSymbol('utils', ko.utils);
639
+ ko.exportSymbol('utils.arrayForEach', ko.utils.arrayForEach);
640
+ ko.exportSymbol('utils.arrayFirst', ko.utils.arrayFirst);
641
+ ko.exportSymbol('utils.arrayFilter', ko.utils.arrayFilter);
642
+ ko.exportSymbol('utils.arrayGetDistinctValues', ko.utils.arrayGetDistinctValues);
643
+ ko.exportSymbol('utils.arrayIndexOf', ko.utils.arrayIndexOf);
644
+ ko.exportSymbol('utils.arrayMap', ko.utils.arrayMap);
645
+ ko.exportSymbol('utils.arrayPushAll', ko.utils.arrayPushAll);
646
+ ko.exportSymbol('utils.arrayRemoveItem', ko.utils.arrayRemoveItem);
647
+ ko.exportSymbol('utils.extend', ko.utils.extend);
648
+ ko.exportSymbol('utils.fieldsIncludedWithJsonPost', ko.utils.fieldsIncludedWithJsonPost);
649
+ ko.exportSymbol('utils.getFormFields', ko.utils.getFormFields);
650
+ ko.exportSymbol('utils.peekObservable', ko.utils.peekObservable);
651
+ ko.exportSymbol('utils.postJson', ko.utils.postJson);
652
+ ko.exportSymbol('utils.parseJson', ko.utils.parseJson);
653
+ ko.exportSymbol('utils.registerEventHandler', ko.utils.registerEventHandler);
654
+ ko.exportSymbol('utils.stringifyJson', ko.utils.stringifyJson);
655
+ ko.exportSymbol('utils.range', ko.utils.range);
656
+ ko.exportSymbol('utils.toggleDomNodeCssClass', ko.utils.toggleDomNodeCssClass);
657
+ ko.exportSymbol('utils.triggerEvent', ko.utils.triggerEvent);
658
+ ko.exportSymbol('utils.unwrapObservable', ko.utils.unwrapObservable);
659
+ ko.exportSymbol('utils.objectForEach', ko.utils.objectForEach);
660
+ ko.exportSymbol('utils.addOrRemoveItem', ko.utils.addOrRemoveItem);
661
+ ko.exportSymbol('utils.setTextContent', ko.utils.setTextContent);
662
+ ko.exportSymbol('unwrap', ko.utils.unwrapObservable); // Convenient shorthand, because this is used so commonly
663
+
664
+ if (!Function.prototype['bind']) {
665
+ // Function.prototype.bind is a standard part of ECMAScript 5th Edition (December 2009, http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf)
666
+ // In case the browser doesn't implement it natively, provide a JavaScript implementation. This implementation is based on the one in prototype.js
667
+ Function.prototype['bind'] = function (object) {
668
+ var originalFunction = this;
669
+ if (arguments.length === 1) {
670
+ return function () {
671
+ return originalFunction.apply(object, arguments);
672
+ };
673
+ } else {
674
+ var partialArgs = Array.prototype.slice.call(arguments, 1);
675
+ return function () {
676
+ var args = partialArgs.slice(0);
677
+ args.push.apply(args, arguments);
678
+ return originalFunction.apply(object, args);
679
+ };
680
+ }
681
+ };
682
+ }
683
+
684
+ ko.utils.domData = new (function () {
685
+ var uniqueId = 0;
686
+ var dataStoreKeyExpandoPropertyName = "__ko__" + (new Date).getTime();
687
+ var dataStore = {};
688
+
689
+ function getAll(node, createIfNotFound) {
690
+ var dataStoreKey = node[dataStoreKeyExpandoPropertyName];
691
+ var hasExistingDataStore = dataStoreKey && (dataStoreKey !== "null") && dataStore[dataStoreKey];
692
+ if (!hasExistingDataStore) {
693
+ if (!createIfNotFound)
694
+ return undefined;
695
+ dataStoreKey = node[dataStoreKeyExpandoPropertyName] = "ko" + uniqueId++;
696
+ dataStore[dataStoreKey] = {};
697
+ }
698
+ return dataStore[dataStoreKey];
699
+ }
700
+
701
+ return {
702
+ get: function (node, key) {
703
+ var allDataForNode = getAll(node, false);
704
+ return allDataForNode === undefined ? undefined : allDataForNode[key];
705
+ },
706
+ set: function (node, key, value) {
707
+ if (value === undefined) {
708
+ // Make sure we don't actually create a new domData key if we are actually deleting a value
709
+ if (getAll(node, false) === undefined)
710
+ return;
711
+ }
712
+ var allDataForNode = getAll(node, true);
713
+ allDataForNode[key] = value;
714
+ },
715
+ clear: function (node) {
716
+ var dataStoreKey = node[dataStoreKeyExpandoPropertyName];
717
+ if (dataStoreKey) {
718
+ delete dataStore[dataStoreKey];
719
+ node[dataStoreKeyExpandoPropertyName] = null;
720
+ return true; // Exposing "did clean" flag purely so specs can infer whether things have been cleaned up as intended
721
+ }
722
+ return false;
723
+ },
724
+
725
+ nextKey: function () {
726
+ return (uniqueId++) + dataStoreKeyExpandoPropertyName;
727
+ }
728
+ };
729
+ })();
730
+
731
+ ko.exportSymbol('utils.domData', ko.utils.domData);
732
+ ko.exportSymbol('utils.domData.clear', ko.utils.domData.clear); // Exporting only so specs can clear up after themselves fully
733
+
734
+ ko.utils.domNodeDisposal = new (function () {
735
+ var domDataKey = ko.utils.domData.nextKey();
736
+ var cleanableNodeTypes = { 1: true, 8: true, 9: true }; // Element, Comment, Document
737
+ var cleanableNodeTypesWithDescendants = { 1: true, 9: true }; // Element, Document
738
+
739
+ function getDisposeCallbacksCollection(node, createIfNotFound) {
740
+ var allDisposeCallbacks = ko.utils.domData.get(node, domDataKey);
741
+ if ((allDisposeCallbacks === undefined) && createIfNotFound) {
742
+ allDisposeCallbacks = [];
743
+ ko.utils.domData.set(node, domDataKey, allDisposeCallbacks);
744
+ }
745
+ return allDisposeCallbacks;
746
+ }
747
+ function destroyCallbacksCollection(node) {
748
+ ko.utils.domData.set(node, domDataKey, undefined);
749
+ }
750
+
751
+ function cleanSingleNode(node) {
752
+ // Run all the dispose callbacks
753
+ var callbacks = getDisposeCallbacksCollection(node, false);
754
+ if (callbacks) {
755
+ callbacks = callbacks.slice(0); // Clone, as the array may be modified during iteration (typically, callbacks will remove themselves)
756
+ for (var i = 0; i < callbacks.length; i++)
757
+ callbacks[i](node);
758
+ }
759
+
760
+ // Erase the DOM data
761
+ ko.utils.domData.clear(node);
762
+
763
+ // Perform cleanup needed by external libraries (currently only jQuery, but can be extended)
764
+ ko.utils.domNodeDisposal["cleanExternalData"](node);
765
+
766
+ // Clear any immediate-child comment nodes, as these wouldn't have been found by
767
+ // node.getElementsByTagName("*") in cleanNode() (comment nodes aren't elements)
768
+ if (cleanableNodeTypesWithDescendants[node.nodeType])
769
+ cleanImmediateCommentTypeChildren(node);
770
+ }
771
+
772
+ function cleanImmediateCommentTypeChildren(nodeWithChildren) {
773
+ var child, nextChild = nodeWithChildren.firstChild;
774
+ while (child = nextChild) {
775
+ nextChild = child.nextSibling;
776
+ if (child.nodeType === 8)
777
+ cleanSingleNode(child);
778
+ }
779
+ }
780
+
781
+ return {
782
+ addDisposeCallback : function(node, callback) {
783
+ if (typeof callback != "function")
784
+ throw new Error("Callback must be a function");
785
+ getDisposeCallbacksCollection(node, true).push(callback);
786
+ },
787
+
788
+ removeDisposeCallback : function(node, callback) {
789
+ var callbacksCollection = getDisposeCallbacksCollection(node, false);
790
+ if (callba